More complex python requirement parsing.
This commit is contained in:
parent
78b59759c9
commit
a8663e0eaa
3 changed files with 22 additions and 8 deletions
|
@ -194,15 +194,15 @@ class SetupPy(BuildSystem):
|
|||
if self.result is None:
|
||||
raise NotImplementedError
|
||||
for require in self.result.get_requires():
|
||||
yield "build", PythonPackageRequirement(require)
|
||||
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
||||
# Not present for distutils-only packages
|
||||
if getattr(self.result, 'install_requires', []):
|
||||
for require in self.result.install_requires:
|
||||
yield "install", PythonPackageRequirement(require)
|
||||
yield "install", PythonPackageRequirement.from_requirement_str(require)
|
||||
# Not present for distutils-only packages
|
||||
if getattr(self.result, 'tests_require', []):
|
||||
for require in self.result.tests_require:
|
||||
yield "test", PythonPackageRequirement(require)
|
||||
yield "test", PythonPackageRequirement.from_requirement_str(require)
|
||||
|
||||
def get_declared_outputs(self):
|
||||
if self.result is None:
|
||||
|
|
|
@ -26,19 +26,32 @@ class PythonPackageRequirement(Requirement):
|
|||
|
||||
package: str
|
||||
|
||||
def __init__(self, package, python_version=None, minimum_version=None):
|
||||
def __init__(self, package, python_version=None, specs=None,
|
||||
minimum_version=None):
|
||||
super(PythonPackageRequirement, self).__init__('python-package')
|
||||
self.package = package
|
||||
self.python_version = python_version
|
||||
self.minimum_version = minimum_version
|
||||
if minimum_version is not None:
|
||||
specs = [('>=', minimum_version)]
|
||||
self.specs = specs
|
||||
|
||||
def __repr__(self):
|
||||
return "%s(%r, python_version=%r, minimum_version=%r)" % (
|
||||
return "%s(%r, python_version=%r, specs=%r)" % (
|
||||
type(self).__name__, self.package, self.python_version,
|
||||
self.minimum_version)
|
||||
self.specs)
|
||||
|
||||
def __str__(self):
|
||||
return "python package: %s" % self.package
|
||||
if self.specs:
|
||||
return "python package: %s (%r)" % (self.package, self.specs)
|
||||
else:
|
||||
return "python package: %s" % (self.package, )
|
||||
|
||||
|
||||
@classmethod
|
||||
def from_requirement_str(cls, text):
|
||||
from requirements.requirement import Requirement
|
||||
req = Requirement.parse(text)
|
||||
return cls(package=req.name, specs=req.specs)
|
||||
|
||||
|
||||
class BinaryRequirement(Requirement):
|
||||
|
|
1
setup.py
1
setup.py
|
@ -30,6 +30,7 @@ setup(name="ognibuild",
|
|||
install_requires=[
|
||||
'breezy',
|
||||
'buildlog-consultant',
|
||||
'requirements-parser',
|
||||
],
|
||||
extras_require={
|
||||
'debian': ['debmutate', 'python_debian', 'python_apt'],
|
||||
|
|
Loading…
Add table
Reference in a new issue