From cb67c6ba852e402f9cab556cfb523dfa69dafc1d Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Thu, 16 Nov 2017 17:41:23 +0300 Subject: [PATCH] PY-27028 Fix several issues with PyPI package cache when PyPI is disabled - Don't clear the cache of packages regardless of whether "pypi.python.org" is enabled or not (achieved along with fixes for PY-24412) - Properly hide PyPI packages in "Available Packages" if PyPI is disabled - Don't update PyPI cache on startup if it's disabled and don't touch the respective timestamp --- .../jetbrains/python/packaging/PyPIPackageUtil.java | 2 +- .../jetbrains/python/packaging/PyPackagesUpdater.java | 1 + .../packaging/ui/PyPackageManagementService.java | 11 ++++++----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/python/src/com/jetbrains/python/packaging/PyPIPackageUtil.java b/python/src/com/jetbrains/python/packaging/PyPIPackageUtil.java index 7888ca5aa6f5..3dcd70126362 100644 --- a/python/src/com/jetbrains/python/packaging/PyPIPackageUtil.java +++ b/python/src/com/jetbrains/python/packaging/PyPIPackageUtil.java @@ -340,10 +340,10 @@ public class PyPIPackageUtil { public void updatePyPICache() throws IOException { final PyPackageService service = PyPackageService.getInstance(); - service.LAST_TIME_CHECKED = System.currentTimeMillis(); if (service.PYPI_REMOVED) return; final List decodedNames = parsePyPIList(parsePyPIListFromWeb(PYPI_LIST_URL, true)); PyPIPackageCache.reload(decodedNames); + service.LAST_TIME_CHECKED = System.currentTimeMillis(); } @NotNull diff --git a/python/src/com/jetbrains/python/packaging/PyPackagesUpdater.java b/python/src/com/jetbrains/python/packaging/PyPackagesUpdater.java index c44be4e1752f..57dce76cd81b 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackagesUpdater.java +++ b/python/src/com/jetbrains/python/packaging/PyPackagesUpdater.java @@ -79,6 +79,7 @@ public class PyPackagesUpdater implements StartupActivity { private static boolean checkNeeded(Project project) { if (!hasPython(project)) return false; final PyPackageService service = PyPackageService.getInstance(); + if (service.PYPI_REMOVED) return false; final long timeDelta = System.currentTimeMillis() - service.LAST_TIME_CHECKED; if (Math.abs(timeDelta) < EXPIRATION_TIMEOUT) return false; LOG.debug("Updating outdated PyPI package cache"); diff --git a/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java b/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java index 68e82d5de4b9..6144ed019636 100644 --- a/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java +++ b/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java @@ -110,11 +110,12 @@ public class PyPackageManagementService extends PackageManagementServiceEx { @NotNull @Override public List getAllPackagesCached() { - final List pypiPackages = getCachedPyPIPackages(); - final List additionalPackages = PyPIPackageUtil.INSTANCE.getAdditionalPackages(); - // Make a copy, since ManagePackagesDialog attempts to change the passed collection directly - final List result = new ArrayList<>(pypiPackages); - result.addAll(additionalPackages); + // Make a copy, since ManagePackagesDialog attempts to change the passed in collection directly + final List result = new ArrayList<>(); + if (!PyPackageService.getInstance().PYPI_REMOVED) { + result.addAll(getCachedPyPIPackages()); + } + result.addAll(PyPIPackageUtil.INSTANCE.getAdditionalPackages()); return result; }