API for loading requirements only from requirements.txt

This commit is contained in:
Dmitry Jemerov
2012-08-17 10:07:34 +02:00
parent 4588a0676b
commit 2d018f991d
3 changed files with 34 additions and 3 deletions
@@ -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<PyRequirement> 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<PyRequirement> getRequirementsFromTxt(Module module);
}
@@ -436,9 +436,9 @@ public class PyPackageManagerImpl extends PyPackageManager {
@Nullable
public static List<PyRequirement> 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<PyRequirement> requirements = getRequirementsFromTxt(module);
if (requirements != null) {
return requirements;
}
final List<String> lines = new ArrayList<String>();
for (String name : PyPackageUtil.SETUP_PY_REQUIRES_KWARGS_NAMES) {
@@ -460,6 +460,15 @@ public class PyPackageManagerImpl extends PyPackageManager {
return null;
}
@Nullable
public static List<PyRequirement> 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;
@@ -30,4 +30,11 @@ public class PyPackageManagersImpl extends PyPackageManagers {
public List<PyRequirement> getRequirements(Module module) {
return PyPackageManagerImpl.getRequirements(module);
}
@Nullable
@Override
public List<PyRequirement> getRequirementsFromTxt(Module module) {
return PyPackageManagerImpl.getRequirementsFromTxt(module);
}
}