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:
|
if self.result is None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
for require in self.result.get_requires():
|
for require in self.result.get_requires():
|
||||||
yield "build", PythonPackageRequirement(require)
|
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
||||||
# Not present for distutils-only packages
|
# Not present for distutils-only packages
|
||||||
if getattr(self.result, 'install_requires', []):
|
if getattr(self.result, 'install_requires', []):
|
||||||
for require in 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
|
# Not present for distutils-only packages
|
||||||
if getattr(self.result, 'tests_require', []):
|
if getattr(self.result, 'tests_require', []):
|
||||||
for require in 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):
|
def get_declared_outputs(self):
|
||||||
if self.result is None:
|
if self.result is None:
|
||||||
|
|
|
@ -26,19 +26,32 @@ class PythonPackageRequirement(Requirement):
|
||||||
|
|
||||||
package: str
|
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')
|
super(PythonPackageRequirement, self).__init__('python-package')
|
||||||
self.package = package
|
self.package = package
|
||||||
self.python_version = python_version
|
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):
|
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,
|
type(self).__name__, self.package, self.python_version,
|
||||||
self.minimum_version)
|
self.specs)
|
||||||
|
|
||||||
def __str__(self):
|
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):
|
class BinaryRequirement(Requirement):
|
||||||
|
|
1
setup.py
1
setup.py
|
@ -30,6 +30,7 @@ setup(name="ognibuild",
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'breezy',
|
'breezy',
|
||||||
'buildlog-consultant',
|
'buildlog-consultant',
|
||||||
|
'requirements-parser',
|
||||||
],
|
],
|
||||||
extras_require={
|
extras_require={
|
||||||
'debian': ['debmutate', 'python_debian', 'python_apt'],
|
'debian': ['debmutate', 'python_debian', 'python_apt'],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue