Codebase list dh-python / 970129c
Ignore environment markers for Python 2.7, our logic is specific to 3.x. Stefano Rivera 2 years ago
3 changed file(s) with 56 addition(s) and 4 deletion(s). Raw diff Collapse all Expand all
0 dh-python (5.20211217) UNRELEASED; urgency=medium
1
2 * Ignore environment markers for Python 2.7, our logic is specific to 3.x.
3
4 -- Stefano Rivera <stefanor@debian.org> Fri, 17 Dec 2021 11:40:23 -0400
5
06 dh-python (5.20211216) unstable; urgency=medium
17
28 * Use a consistent distribution name regexp to handle dashed names
214214 req,
215215 req_d['environment_marker'],
216216 req_d['environment_marker_op'],
217 req_d['environment_marker_value'])
217 req_d['environment_marker_value'],
218 impl)
218219 if action is False:
219220 return
220221 elif action is True:
308309 # return pname
309310
310311
311 def check_environment_marker_restrictions(req, marker, op, value):
312 def check_environment_marker_restrictions(req, marker, op, value, impl):
312313 """Check wither we should include or skip a dependency based on its
313314 environment markers.
314315
316317 False - to skip it
317318 str - to append "| foo" to generated dependencies
318319 """
320 if impl != 'cpython3':
321 log.info('Ignoring environment markers for non-Python 3.x: %s', req)
322 return False
323
319324 # TODO: Replace with an AST that can handle complex logic
320325 if ' or ' in value or ' and ' in value:
321326 log.info('Ignoring complex environment marker: %s', req)
476481 line,
477482 m.group('environment_marker'),
478483 m.group('environment_marker_op'),
479 m.group('environment_marker_value'))
484 m.group('environment_marker_value'),
485 impl)
480486 processed.append(line)
481487 continue
482488 if section:
55 from tempfile import TemporaryDirectory
66
77 from dhpython.depends import Dependencies
8 from dhpython.version import Version
89
910
1011 def pep386(d):
12 """Mark all pydist entries as being PEP386"""
1113 for k, v in d.items():
1214 if isinstance(v, str):
13 d[k] = {'dependency': v, 'standard': 'PEP386'}
15 d[k] = {'dependency': v}
16 d[k].setdefault('standard', 'PEP386')
17 return d
18
19
20 def py27(d):
21 """Mark all pydist entries as being for Python 2.7"""
22 for k, v in d.items():
23 if isinstance(v, str):
24 d[k] = {'dependency': v}
25 d[k].setdefault('versions', {Version('2.7')})
1426 return d
1527
1628
584596
585597 def test_depends_on_un_marked_dependency_after_extra(self):
586598 raise unittest.SkipTest('Not possible in requires.txt')
599
600
601 class TestEnvironmentMarkers27EggInfo(DependenciesTestCase):
602 options = FakeOptions(guess_deps=True)
603 impl = 'cpython2'
604 requires = {
605 'debian/foo/usr/lib/python2.7/dist-packages/foo.egg-info/requires.txt': (
606 "no_markers",
607 "[:os_name == 'posix']",
608 "os_posix",
609 "[:python_version >= '2.6']",
610 "python_version_ge26",
611 )
612 }
613 pydist = py27({
614 'no_markers': 'python-no-markers',
615 'os_posix': 'python-os-posix',
616 'python_version_ge26': 'python-python-version-ge26',
617 })
618
619 def test_depends_on_unmarked_packages(self):
620 self.assertIn('python-no-markers', self.d.depends)
621
622 def test_ignores_posix_packages(self):
623 self.assertNotInDepends('python-os-posix')
624
625 def test_ignores_pyversion_packages(self):
626 self.assertNotInDepends('python-python-version-ge26')