PY-6801 Remove pypi repository

Remove repository from UI
This commit is contained in:
Ekaterina Tuzova
2016-01-27 12:14:44 +03:00
parent 27094718fe
commit 538356df0a
5 changed files with 111 additions and 13 deletions
+50
View File
@@ -51,6 +51,52 @@ def do_list():
sys.stdout.flush()
def do_get_versions(urls, req):
if req is not None:
for version in VersionsFinder(urls).get_versions(req):
if len(version) > 2:
sys.stdout.write(version[2] + chr(10))
sys.stdout.flush()
def do_get_latest_version(urls, req):
try:
from pip.index import PackageFinder, Link
except ImportError:
error_no_pip()
class VersionsFinder(PackageFinder):
def __init__(self, index_urls, *args, **kwargs):
super(VersionsFinder, self).__init__([], index_urls, *args, **kwargs)
def get_versions(self, req):
class Req:
def __init__(self, name):
self.name = name
def mkurl_pypi_url(url):
loc = os.path.join(url, req)
if not loc.endswith('/'):
loc += '/'
return loc
locations = [mkurl_pypi_url(url) for url in self.index_urls] + self.find_links
locations = [Link(url, trusted=True) for url in locations]
versions = []
for page in self._get_pages(locations, Req(req)):
versions.extend(self._package_versions(page.links, req.lower()))
return sorted(list(versions), reverse=True)
if req is not None:
for version in VersionsFinder(urls).get_versions(req):
if len(version) > 2:
sys.stdout.write(version[2] + chr(10))
sys.stdout.flush()
return
return ""
def do_install(pkgs):
try:
import pip
@@ -115,6 +161,10 @@ def main():
if len(sys.argv) != 2:
usage()
do_list()
elif cmd == 'latestVersion':
if len(sys.argv) < 4:
usage()
do_get_latest_version(sys.argv[3:], sys.argv[2])
elif cmd == 'install':
if len(sys.argv) < 2:
usage()
@@ -54,8 +54,9 @@ import java.util.regex.Pattern;
@SuppressWarnings("UseOfObsoleteCollectionType")
public class PyPIPackageUtil {
public static final Logger LOG = Logger.getInstance(PyPIPackageUtil.class.getName());
@NonNls public static final String PYPI_URL = "https://pypi.python.org/pypi";
@NonNls public static final String PYPI_LIST_URL = "https://pypi.python.org/pypi?%3Aaction=index";
public static final String PYPI_HOST = "https://pypi.python.org";
@NonNls public static final String PYPI_URL = PYPI_HOST + "/pypi";
@NonNls public static final String PYPI_LIST_URL = PYPI_HOST + "/pypi?%3Aaction=index";
public static Map<String, String> PACKAGES_TOPLEVEL = new HashMap<String, String>();
@@ -288,6 +288,13 @@ public class PyPackageManagerImpl extends PyPackageManager {
}
}
//@NotNull
//public String fetchLatestVersion(InstalledPackage pkg) throws ExecutionException {
// final ArrayList<String> arguments = Lists.newArrayList("latestVersion", pkg.getName());
// arguments.addAll(PyPackageService.getInstance().additionalRepositories);
// return getHelperResult(PACKAGING_TOOL, arguments, false, false, null);
//}
@NotNull
protected List<PyPackage> getPackages() throws ExecutionException {
final String output;
@@ -589,4 +596,4 @@ public class PyPackageManagerImpl extends PyPackageManager {
}
}
}
}
}
@@ -38,6 +38,7 @@ public class PyPackageService implements
public List<String> additionalRepositories = new ArrayList<String>();
public Map<String, String> PY_PACKAGES = ContainerUtil.newConcurrentMap();
public String virtualEnvBasePath;
public Boolean PYPI_REMOVED = false;
public long LAST_TIME_CHECKED = 0;
@@ -55,13 +56,22 @@ public class PyPackageService implements
sdkToUsersite.put(sdk, useUsersite);
}
public void addRepository(String repository) {
additionalRepositories.add(repository);
public void addRepository(final String repository) {
if (repository == null) return;
if (repository.startsWith(PyPIPackageUtil.PYPI_HOST)) {
PYPI_REMOVED = false;
}
else {
additionalRepositories.add(repository);
}
}
public void removeRepository(String repository) {
public void removeRepository(final String repository) {
if (additionalRepositories.contains(repository))
additionalRepositories.remove(repository);
else if (repository.startsWith(PyPIPackageUtil.PYPI_HOST)) {
PYPI_REMOVED = true;
}
}
public boolean useUserSite(String sdk) {
@@ -43,6 +43,7 @@ import java.util.regex.Pattern;
/**
* @author yole
*/
@SuppressWarnings("UseOfObsoleteCollectionType")
public class PyPackageManagementService extends PackageManagementService {
@NotNull private static final Pattern PATTERN_ERROR_LINE = Pattern.compile(".*error:.*", Pattern.CASE_INSENSITIVE);
@@ -61,19 +62,20 @@ public class PyPackageManagementService extends PackageManagementService {
@Override
public List<String> getAllRepositories() {
final PyPackageService packageService = PyPackageService.getInstance();
List<String> result = new ArrayList<String>();
result.add(PyPIPackageUtil.PYPI_URL);
result.addAll(PyPackageService.getInstance().additionalRepositories);
if (!packageService.PYPI_REMOVED) result.add(PyPIPackageUtil.PYPI_URL);
result.addAll(packageService.additionalRepositories);
return result;
}
@Override
public void addRepository(String repositoryUrl) {
public void addRepository(final String repositoryUrl) {
PyPackageService.getInstance().addRepository(repositoryUrl);
}
@Override
public void removeRepository(String repositoryUrl) {
public void removeRepository(final String repositoryUrl) {
PyPackageService.getInstance().removeRepository(repositoryUrl);
}
@@ -236,9 +238,12 @@ public class PyPackageManagementService extends PackageManagementService {
PyPIPackageUtil.INSTANCE.usePackageReleases(packageName, new AsyncCallback() {
@Override
public void handleResult(Object result, URL url, String method) {
//noinspection unchecked
final List<String> releases = (List<String>)result;
PyPIPackageUtil.INSTANCE.addPackageReleases(packageName, releases);
consumer.consume(releases);
if (releases != null) {
PyPIPackageUtil.INSTANCE.addPackageReleases(packageName, releases);
consumer.consume(releases);
}
}
@Override
@@ -371,4 +376,29 @@ public class PyPackageManagementService extends PackageManagementService {
}
return null;
}
}
/*@Override
public void updatePackage(@NotNull InstalledPackage installedPackage,
@Nullable String version,
@NotNull Listener listener) {
installPackage(new RepoPackage(installedPackage.getName(), null *//* TODO? *//*), null, true, null, listener, false);
}
@Override
public boolean shouldFetchLatestVersionsForOnlyInstalledPackages() {
final List<String> repositories = PyPackageService.getInstance().additionalRepositories;
return repositories.size() > 1 || (repositories.size() == 1 && !repositories.get(0).equals(PyPIPackageUtil.PYPI_LIST_URL));
}
@Override
public void fetchLatestVersion(@NotNull InstalledPackage pkg, @NotNull CatchingConsumer<String, Exception> consumer) {
final String version;
try {
version = PyPackageManager.getInstance(mySdk).fetchLatestVersion(pkg);
consumer.consume(version);
}
catch (ExecutionException ignored) {
}
}*/
}