diff --git a/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java b/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java index 6748bcb35cf7..d3113aa4708b 100644 --- a/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java +++ b/python/openapi/src/com/jetbrains/python/packaging/PyPackageManagers.java @@ -32,6 +32,21 @@ public abstract class PyPackageManagers { public abstract PyPackageManager forSdk(Sdk sdk); + /** + * Returns the list of requirements from 'requirements.txt' or 'setup.py' files in the specified module. + * + * @param module the module to check for requirements + * @return the list of requirements, or null if the module contains neither requirements.txt nor setup.py. + */ @Nullable public abstract List getRequirements(Module module); + + /** + * Returns the list of requirements from 'requirements.txt' file in the specified module. + * + * @param module the module to check for requirements + * @return the list of requirements, or null if the module does not contain a requirements.txt + */ + @Nullable + public abstract List getRequirementsFromTxt(Module module); } diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java index dfbe39eac9f8..c58e51fbb468 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java @@ -436,9 +436,9 @@ public class PyPackageManagerImpl extends PyPackageManager { @Nullable public static List getRequirements(@NotNull Module module) { // TODO: Cache requirements, clear cache on requirements.txt or setup.py updates - final VirtualFile requirementsTxt = PyPackageUtil.findRequirementsTxt(module); - if (requirementsTxt != null) { - return PyRequirement.parse(requirementsTxt); + List requirements = getRequirementsFromTxt(module); + if (requirements != null) { + return requirements; } final List lines = new ArrayList(); for (String name : PyPackageUtil.SETUP_PY_REQUIRES_KWARGS_NAMES) { @@ -460,6 +460,15 @@ public class PyPackageManagerImpl extends PyPackageManager { return null; } + @Nullable + public static List getRequirementsFromTxt(Module module) { + final VirtualFile requirementsTxt = PyPackageUtil.findRequirementsTxt(module); + if (requirementsTxt != null) { + return PyRequirement.parse(requirementsTxt); + } + return null; + } + public void clearCaches() { myPackagesCache = null; myExceptionCache = null; diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java b/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java index ac99aa4a393a..00d4724a9c3b 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManagersImpl.java @@ -30,4 +30,11 @@ public class PyPackageManagersImpl extends PyPackageManagers { public List getRequirements(Module module) { return PyPackageManagerImpl.getRequirements(module); } + + + @Nullable + @Override + public List getRequirementsFromTxt(Module module) { + return PyPackageManagerImpl.getRequirementsFromTxt(module); + } }