def test_glob_dir(tmpdir): path = ArchivePath( archive_path=sdist_path, cache_path=Path(str(tmpdir)), ) paths = list(path.glob('dephell-*/')) assert len(paths) == 1
def test_glob_dir(tmpdir): path = ArchivePath( archive_path=Path('tests', 'requirements', 'sdist.tar.gz'), cache_path=Path(str(tmpdir)), ) paths = list(path.glob('dephell-*/')) assert len(paths) == 1
def test_glob_zip(tmpdir): path = ArchivePath( archive_path=wheel_path, cache_path=Path(str(tmpdir)), ) paths = list(path.glob('*/__init__.py')) assert len(paths) == 1 assert paths[0].member_path.as_posix() == 'dephell/__init__.py'
def test_glob(tmpdir): path = ArchivePath( archive_path=sdist_path, cache_path=Path(str(tmpdir)), ) paths = list(path.glob('*/setup.py')) assert len(paths) == 1 assert paths[0].member_path.as_posix() == 'dephell-0.2.0/setup.py'
def test_glob_tar(tmpdir): path = ArchivePath( archive_path=Path('tests', 'requirements', 'sdist.tar.gz'), cache_path=Path(str(tmpdir)), ) paths = list(path.glob('*/setup.py')) assert len(paths) == 1 assert paths[0].as_posix() == 'dephell-0.2.0/setup.py'
def test_glob_zip(tmpdir): path = ArchivePath( archive_path=Path('tests', 'requirements', 'wheel.whl'), cache_path=Path(str(tmpdir)), ) paths = list(path.glob('*/__init__.py')) assert len(paths) == 1 assert paths[0].as_posix() == 'dephell/__init__.py'
def load(self, path) -> RootDependency: path = Path(str(path)) if path.suffix not in ('.zip', '.gz', '.tar', '.tgz', '.bz2'): raise ValueError('invalid file extension: ' + path.suffix) root = None converter = EggInfoConverter() with TemporaryDirectory() as cache: archive = ArchivePath(archive_path=path, cache_path=Path(cache)) # read *.egg-info paths = chain( archive.glob('*.egg-info'), archive.glob('*/*.egg-info'), archive.glob('src/*.egg-info'), archive.glob('src/*/*.egg-info'), ) paths = [ path for path in paths if 'tests' not in path.member_path.parts ] if paths: root = converter.load_dir(*paths) root.readme = Readme.discover(path=archive) return root # read metainfo from PKG-INFO paths = archive.glob('**/PKG-INFO') paths = [path for path in paths if 'tests' not in path.parts] if paths: with paths[0].open('r') as stream: root = converter.parse_info(content=stream.read()) # read dependencies from requires.txt if root is None or not root.dependencies: paths = list(archive.glob('**/requires.txt')) paths = [path for path in paths if 'tests' not in path.parts] if paths: with paths[0].open('r') as stream: root = converter.parse_requires(content=stream.read(), root=root) if root is None: msg = 'cannot find any metainfo in the archive: ' raise FileNotFoundError(msg + str(archive.archive_path)) return root