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_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 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