Skip to content

Commit 48feccb

Browse files
committed
allow skipping extras_requires from (Build)Requires
sometimes one wants to generate a "minimal" RPM, with no extra dependencies, which this should help with.
1 parent eab5036 commit 48feccb

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

pyp2rpm/bin.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ def get_scl_help_record(self, ctx):
127127
help='Enable / disable metadata extraction from virtualenv '
128128
'(default: enabled).',
129129
default=True)
130+
@click.option('--include-extras / --no-include-extras',
131+
help='Enable / disable including extras_require as dependencies '
132+
'(default: enabled).',
133+
default=True)
130134
@click.option('--autonc/ --no-autonc',
131135
help='Enable / disable using automatic provides with '
132136
'a standardized name in dependencies declaration ('
@@ -167,7 +171,7 @@ def get_scl_help_record(self, ctx):
167171
default=None,
168172
metavar='FILE_NAME')
169173
@click.argument('package', nargs=1)
170-
def main(package, v, d, s, r, proxy, srpm, p, b, o, t, venv, autonc, sclize,
174+
def main(package, v, d, s, r, proxy, srpm, p, b, o, t, venv, include_extras, autonc, sclize,
171175
**scl_kwargs):
172176
"""Convert PyPI package to RPM specfile or SRPM.
173177
@@ -203,7 +207,8 @@ def main(package, v, d, s, r, proxy, srpm, p, b, o, t, venv, autonc, sclize,
203207
rpm_name=r,
204208
proxy=proxy,
205209
venv=venv,
206-
autonc=autonc)
210+
autonc=autonc,
211+
include_extras=include_extras)
207212

208213
logger.debug(
209214
'Convertor: {0} created. Trying to convert.'.format(convertor))

pyp2rpm/command/extract_dist.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ def __init__(self, *args, **kwargs):
2525
self.metadata[attr] = to_list(getattr(self.distribution, attr, []))
2626

2727
try:
28+
self.metadata['setup_requires_extras'] = []
29+
self.metadata['install_requires_extras'] = []
2830
for k, v in getattr(
2931
self.distribution, 'extras_require', {}).items():
3032
if k in ['test, docs', 'doc', 'dev']:
31-
attr = 'setup_requires'
33+
attr = 'setup_requires_extras'
3234
else:
33-
attr = 'install_requires'
35+
attr = 'install_requires_extras'
3436
self.metadata[attr] += to_list(v)
3537
except (AttributeError, ValueError):
3638
# extras require are skipped in case of wrong data format

pyp2rpm/convertor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ def __init__(self, package=None, version=None,
4545
distro=settings.DEFAULT_DISTRO,
4646
base_python_version=settings.DEFAULT_PYTHON_VERSION,
4747
python_versions=[],
48-
rpm_name=None, proxy=None, venv=True, autonc=False):
48+
rpm_name=None, proxy=None, venv=True, autonc=False,
49+
include_extras=True):
4950
self.package = package
5051
self.version = version
5152
self.save_dir = save_dir
@@ -59,6 +60,7 @@ def __init__(self, package=None, version=None,
5960
self.proxy = proxy
6061
self.venv = venv
6162
self.autonc = autonc
63+
self.include_extras = include_extras
6264
self.pypi = True
6365
suffix = os.path.splitext(self.package)[1]
6466
if (os.path.exists(self.package)
@@ -272,6 +274,7 @@ def metadata_extractor(self):
272274
self.version,
273275
self.rpm_name,
274276
self.venv,
277+
self.include_extras,
275278
base_python_version)
276279

277280
return self._metadata_extractor

pyp2rpm/metadata_extractors.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ class LocalMetadataExtractor(object):
178178

179179
def __init__(self, local_file, name, name_convertor, version,
180180
rpm_name=None, venv=True,
181+
include_extras_require=True,
181182
base_python_version=None,
182183
metadata_extension=False):
183184
self.local_file = local_file
@@ -187,6 +188,7 @@ def __init__(self, local_file, name, name_convertor, version,
187188
self.version = version
188189
self.rpm_name = rpm_name
189190
self.venv = venv
191+
self.include_extras_require = include_extras_require
190192
self.base_python_version = base_python_version
191193
self.metadata_extension = metadata_extension
192194
self.unsupported_version = None
@@ -382,6 +384,10 @@ def runtime_deps(self): # install_requires
382384
list of runtime dependencies of the package
383385
"""
384386
install_requires = self.metadata['install_requires']
387+
388+
if self.include_extras_require:
389+
install_requires += self.metadata['install_requires_extras']
390+
385391
if self.metadata[
386392
'entry_points'] and 'setuptools' not in install_requires:
387393
install_requires.append('setuptools') # entrypoints
@@ -406,6 +412,10 @@ def build_deps(self): # setup_requires [tests_require, install_requires]
406412

407413
if 'setuptools' not in build_requires:
408414
build_requires.append('setuptools')
415+
416+
if self.include_extras_require:
417+
build_requires += self.metadata['setup_requires_extras']
418+
409419
return sorted(self.name_convert_deps_list(deps_from_pyp_format(
410420
build_requires, runtime=False)))
411421

0 commit comments

Comments
 (0)