def test_accepts_fails_with_python_versions_mismatch(): dependency = Dependency("A", "^1.0") dependency.python_versions = "^3.6" package = Package("B", "1.4") package.python_versions = "~3.5" assert not dependency.accepts(package)
def test_accepts_fails_with_python_versions_mismatch(): dependency = Dependency('A', '^1.0') dependency.python_versions = '^3.6' package = Package('B', '1.4') package.python_versions = '~3.5' assert not dependency.accepts(package)
def test_accepts_python_versions(): dependency = Dependency("A", "^1.0") dependency.python_versions = "^3.6" package = Package("A", "1.4") package.python_versions = "~3.6" assert dependency.accepts(package)
def test_accepts_python_versions(): dependency = Dependency('A', '^1.0') dependency.python_versions = '^3.6' package = Package('A', '1.4') package.python_versions = '~3.6' assert dependency.accepts(package)
def test_to_pep_508_with_patch_python_version(python_versions, marker): dependency = Dependency("Django", "^1.23") dependency.python_versions = python_versions expected = "Django (>=1.23,<2.0); {}".format(marker) assert expected == dependency.to_pep_508() assert marker == str(dependency.marker)
def _non_empty_term(self, constraint, is_positive): if constraint.is_empty(): return dep = Dependency(self.dependency.name, constraint) dep.python_versions = str(self.dependency.python_versions) return Term(dep, is_positive)
def test_to_pep_508_with_platform(): dependency = Dependency("Django", "^1.23") dependency.python_versions = "~2.7 || ^3.6" dependency.platform = "linux || linux2" result = dependency.to_pep_508() assert result == ( "Django (>=1.23,<2.0); " '((python_version >= "2.7" and python_version < "2.8") ' 'or (python_version >= "3.6" and python_version < "4.0"))' ' and (sys_platform == "linux" or sys_platform == "linux2")')
def test_to_pep_508_with_platform(): dependency = Dependency('Django', '^1.23') dependency.python_versions = '~2.7 || ^3.6' dependency.platform = 'linux || linux2' result = dependency.to_pep_508() assert result == ( 'Django (>=1.23,<2.0); ' '((python_version >= "2.7" and python_version < "2.8") ' 'or (python_version >= "3.6" and python_version < "4.0"))' ' and (sys_platform == "linux" or sys_platform == "linux2")' )
def test_to_pep_508(): dependency = Dependency('Django', '^1.23') result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0)' dependency = Dependency('Django', '^1.23') dependency.python_versions = '~2.7 || ^3.6' result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0); ' \ '(python_version >= "2.7" and python_version < "2.8") ' \ 'or (python_version >= "3.6" and python_version < "4.0")'
def test_to_pep_508(): dependency = Dependency("Django", "^1.23") result = dependency.to_pep_508() assert result == "Django (>=1.23,<2.0)" dependency = Dependency("Django", "^1.23") dependency.python_versions = "~2.7 || ^3.6" result = dependency.to_pep_508() assert (result == "Django (>=1.23,<2.0); " 'python_version >= "2.7" and python_version < "2.8" ' 'or python_version >= "3.6" and python_version < "4.0"')
def test_to_pep_508_with_platform(): dependency = Dependency("Django", "^1.23") dependency.python_versions = "~2.7 || ^3.6" dependency.platform = "linux || linux2" result = dependency.to_pep_508() assert result == ( "Django (>=1.23,<2.0); " '((python_version >= "2.7" and python_version < "2.8") ' 'or (python_version >= "3.6" and python_version < "4.0"))' ' and (sys_platform == "linux" or sys_platform == "linux2")' )
def test_to_pep_508(): dependency = Dependency("Django", "^1.23") result = dependency.to_pep_508() assert result == "Django (>=1.23,<2.0)" dependency = Dependency("Django", "^1.23") dependency.python_versions = "~2.7 || ^3.6" result = dependency.to_pep_508() assert ( result == "Django (>=1.23,<2.0); " '(python_version >= "2.7" and python_version < "2.8") ' 'or (python_version >= "3.6" and python_version < "4.0")' )
def test_to_pep_508_in_extras(): dependency = Dependency("Django", "^1.23") dependency.in_extras.append("foo") result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0); extra == "foo"' dependency.in_extras.append("bar") result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0); extra == "foo" or extra == "bar"' dependency.python_versions = "~2.7 || ^3.6" result = dependency.to_pep_508() assert result == ("Django (>=1.23,<2.0); " "(" 'python_version >= "2.7" and python_version < "2.8" ' 'or python_version >= "3.6" and python_version < "4.0"' ") " 'and (extra == "foo" or extra == "bar")')
def test_to_pep_508_in_extras(): dependency = Dependency('Django', '^1.23') dependency.in_extras.append('foo') result = dependency.to_pep_508() assert result == 'Django (>=1.23.0.0,<2.0.0.0); extra == "foo"' dependency.in_extras.append('bar') result = dependency.to_pep_508() assert result == 'Django (>=1.23.0.0,<2.0.0.0); extra == "foo" or extra == "bar"' dependency.python_versions = '~2.7 || ^3.6' result = dependency.to_pep_508() assert result == ( 'Django (>=1.23.0.0,<2.0.0.0); ' '(' '(python_version >= "2.7.0.0" and python_version < "2.8.0.0") ' 'or (python_version >= "3.6.0.0" and python_version < "4.0.0.0")' ') ' 'and (extra == "foo" or extra == "bar")')
def test_to_pep_508_in_extras(): dependency = Dependency("Django", "^1.23") dependency.in_extras.append("foo") result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0); extra == "foo"' dependency.in_extras.append("bar") result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0); extra == "foo" or extra == "bar"' dependency.python_versions = "~2.7 || ^3.6" result = dependency.to_pep_508() assert result == ( "Django (>=1.23,<2.0); " "(" '(python_version >= "2.7" and python_version < "2.8") ' 'or (python_version >= "3.6" and python_version < "4.0")' ") " 'and (extra == "foo" or extra == "bar")' )
def package(self, name: str, version: str, extras: Union[list, None] = None) -> Package: try: index = self._packages.index(Package(name, version, version)) return self._packages[index] except ValueError: if extras is None: extras = [] release_info = self.get_release_info(name, version) package = Package(name, version, version) for req in release_info['requires_dist']: req = InstallRequirement.from_line(req) name = req.name version = str(req.req.specifier) dependency = Dependency(name, version, optional=req.markers) is_extra = False if req.markers: # Setting extra dependencies and requirements requirements = self._convert_markers(req.markers._markers) if 'python_version' in requirements: ors = [] for or_ in requirements['python_version']: ands = [] for op, version in or_: ands.append(f'{op}{version}') ors.append(' '.join(ands)) dependency.python_versions = ' || '.join(ors) if 'sys_platform' in requirements: ors = [] for or_ in requirements['sys_platform']: ands = [] for op, platform in or_: ands.append(f'{op}{platform}') ors.append(' '.join(ands)) dependency.platform = ' || '.join(ors) if 'extra' in requirements: is_extra = True for _extras in requirements['extra']: for _, extra in _extras: if extra not in package.extras: package.extras[extra] = [] package.extras[extra].append(dependency) if not is_extra: package.requires.append(dependency) # Adding description package.description = release_info.get('summary', '') # Adding hashes information package.hashes = release_info['digests'] # Activate extra dependencies for extra in extras: if extra in package.extras: for dep in package.extras[extra]: dep.activate() package.requires += package.extras[extra] self._packages.append(package) return package