Some support for setup.cfg files.
This commit is contained in:
parent
e5182a4bc9
commit
514f57435a
1 changed files with 43 additions and 20 deletions
|
@ -215,6 +215,11 @@ class SetupPy(BuildSystem):
|
||||||
else:
|
else:
|
||||||
self.has_setup_py = False
|
self.has_setup_py = False
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.config = self.load_setup_cfg()
|
||||||
|
except FileNotFoundError:
|
||||||
|
self.config = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.pyproject = self.load_toml()
|
self.pyproject = self.load_toml()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
@ -229,6 +234,10 @@ class SetupPy(BuildSystem):
|
||||||
with open(os.path.join(self.path, "pyproject.toml"), "r") as pf:
|
with open(os.path.join(self.path, "pyproject.toml"), "r") as pf:
|
||||||
return toml.load(pf)
|
return toml.load(pf)
|
||||||
|
|
||||||
|
def load_setup_cfg(self):
|
||||||
|
from setuptools.config import read_configuration
|
||||||
|
return read_configuration(os.path.join(self.path, 'setup.cfg'))
|
||||||
|
|
||||||
def _extract_setup(self, session=None, fixers=None):
|
def _extract_setup(self, session=None, fixers=None):
|
||||||
if session is None:
|
if session is None:
|
||||||
return self._extract_setup_direct()
|
return self._extract_setup_direct()
|
||||||
|
@ -353,34 +362,48 @@ class SetupPy(BuildSystem):
|
||||||
|
|
||||||
def get_declared_dependencies(self, session, fixers=None):
|
def get_declared_dependencies(self, session, fixers=None):
|
||||||
distribution = self._extract_setup(session, fixers)
|
distribution = self._extract_setup(session, fixers)
|
||||||
if distribution is None:
|
if distribution is not None:
|
||||||
raise NotImplementedError
|
for require in distribution['requires']:
|
||||||
for require in distribution['requires']:
|
yield "core", PythonPackageRequirement.from_requirement_str(require)
|
||||||
yield "core", PythonPackageRequirement.from_requirement_str(require)
|
# Not present for distutils-only packages
|
||||||
# Not present for distutils-only packages
|
for require in distribution['setup_requires']:
|
||||||
for require in distribution['setup_requires']:
|
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
||||||
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
# Not present for distutils-only packages
|
||||||
# Not present for distutils-only packages
|
for require in distribution['install_requires']:
|
||||||
for require in distribution['install_requires']:
|
yield "core", PythonPackageRequirement.from_requirement_str(require)
|
||||||
yield "core", PythonPackageRequirement.from_requirement_str(require)
|
# Not present for distutils-only packages
|
||||||
# Not present for distutils-only packages
|
for require in distribution['tests_require']:
|
||||||
for require in distribution['tests_require']:
|
yield "test", PythonPackageRequirement.from_requirement_str(require)
|
||||||
yield "test", PythonPackageRequirement.from_requirement_str(require)
|
|
||||||
if self.pyproject:
|
if self.pyproject:
|
||||||
if "build-system" in self.pyproject:
|
if "build-system" in self.pyproject:
|
||||||
for require in self.pyproject['build-system'].get("requires", []):
|
for require in self.pyproject['build-system'].get("requires", []):
|
||||||
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
||||||
|
if self.config:
|
||||||
|
options = self.config.get('options', {})
|
||||||
|
for require in options.get('setup_requires', []):
|
||||||
|
yield "build", PythonPackageRequirement.from_requirement_str(require)
|
||||||
|
for require in options.get('install_requires', []):
|
||||||
|
yield "core", PythonPackageRequirement.from_requirement_str(require)
|
||||||
|
|
||||||
def get_declared_outputs(self, session, fixers=None):
|
def get_declared_outputs(self, session, fixers=None):
|
||||||
distribution = self._extract_setup(session, fixers)
|
distribution = self._extract_setup(session, fixers)
|
||||||
if distribution is None:
|
all_packages = set()
|
||||||
raise NotImplementedError
|
if distribution is not None:
|
||||||
for script in distribution['scripts']:
|
for script in distribution['scripts']:
|
||||||
yield BinaryOutput(os.path.basename(script))
|
yield BinaryOutput(os.path.basename(script))
|
||||||
for script in distribution["entry_points"].get("console_scripts", []):
|
for script in distribution["entry_points"].get("console_scripts", []):
|
||||||
yield BinaryOutput(script.split("=")[0])
|
yield BinaryOutput(script.split("=")[0])
|
||||||
|
all_packages.update(distribution['packages'])
|
||||||
|
if self.config:
|
||||||
|
options = self.config.get('options', {})
|
||||||
|
all_packages.update(options.get('packages', []))
|
||||||
|
for script in options.get('scripts', []):
|
||||||
|
yield BinaryOutput(os.path.basename(script))
|
||||||
|
for script in options.get("entry_points", {}).get("console_scripts", []):
|
||||||
|
yield BinaryOutput(script.split("=")[0])
|
||||||
|
|
||||||
packages = set()
|
packages = set()
|
||||||
for package in sorted(distribution['packages']):
|
for package in sorted(all_packages):
|
||||||
pts = package.split('.')
|
pts = package.split('.')
|
||||||
b = []
|
b = []
|
||||||
for e in pts:
|
for e in pts:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue