diff --git a/python/openapi/src/com/jetbrains/python/packaging/PyRequirement.java b/python/openapi/src/com/jetbrains/python/packaging/PyRequirement.java index 0e101234b6b4..1d027e8ce64e 100644 --- a/python/openapi/src/com/jetbrains/python/packaging/PyRequirement.java +++ b/python/openapi/src/com/jetbrains/python/packaging/PyRequirement.java @@ -333,7 +333,7 @@ public class PyRequirement { } @NotNull - private static PyRequirementVersionSpec calculateVersionSpec(@NotNull String version, @NotNull PyRequirementRelation expectedRelation) { + public static PyRequirementVersionSpec calculateVersionSpec(@NotNull String version, @NotNull PyRequirementRelation expectedRelation) { final String normalizedVersion = PyRequirementVersionNormalizer.normalize(version); return normalizedVersion == null ? diff --git a/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java b/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java index 64a686eec688..21f1ac4590a7 100644 --- a/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java +++ b/python/src/com/jetbrains/python/packaging/ui/PyPackageManagementService.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.intellij.webcore.packaging.PackageManagementServiceEx; import com.intellij.webcore.packaging.RepoPackage; import com.jetbrains.python.packaging.*; import com.jetbrains.python.packaging.PyPIPackageUtil.PackageDetails; +import com.jetbrains.python.packaging.requirement.PyRequirementRelation; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.sdk.PySdkUtil; import com.jetbrains.python.sdk.PythonSdkType; @@ -386,4 +387,14 @@ public class PyPackageManagementService extends PackageManagementServiceEx { } }); } + + @Override + public int compareVersions(@NotNull String version1, @NotNull String version2) { + if (PyRequirement.calculateVersionSpec(version2, PyRequirementRelation.EQ).matches(version1)) { + // Here we're catching the case described in PY-20939. + // The order of 'version1' and 'version2' is important: version2 is an available version which version1 tries to match + return 0; + } + return super.compareVersions(version1, version2); + } } \ No newline at end of file