def inspect_pypi_package_egg(filename, fileobj): tf = zipfile.ZipFile(fileobj) data = extract_first(tf, 'EGG-INFO/PKG-INFO') if data is None: raise errors.NoMetadataError("Could not find EGG-INFO/PKG-INFO file in pypi sdist") attrs = dict(Parser().parsestr(data.encode("UTF-8", "replace")).items()) package_data = {'name': pop_key(attrs, 'Name'), 'summary': pop_key(attrs, 'Summary', None), 'license': pop_key(attrs, 'License', None)} release_data = {'version': pop_key(attrs, 'Version'), 'description': pop_key(attrs, 'Description', None), 'home_page': pop_key(attrs, 'Home-page', None)} if len(filename.split('-')) == 4: _, _, python_version, platform = filename[:-4].split('-') else: python_version = 'source' platform = None file_data = {'basename': path.basename(filename), 'attrs': {'packagetype': 'bdist_egg', 'python_version': python_version}, 'platform': platform} requires_txt = extract_first(tf, 'EGG-INFO/requires.txt') if requires_txt: file_data.update(dependencies=parse_requires_txt(requires_txt)) return package_data, release_data, file_data
def inspect_pypi_package_zip(filename, fileobj): filename, fileobj tf = zipfile.ZipFile(fileobj) data = extract_first(tf, '*/PKG-INFO') if data is None: raise errors.NoMetadataError("Could not find EGG-INFO/PKG-INFO file in pypi sdist") attrs = dict(Parser().parsestr(data.encode("UTF-8", "replace")).items()) package_data = {'name': pop_key(attrs, 'Name'), 'summary': pop_key(attrs, 'Summary', None), 'license': pop_key(attrs, 'License', None)} release_data = {'version': pop_key(attrs, 'Version'), 'description': pop_key(attrs, 'Description', None), 'home_page': pop_key(attrs, 'Home-page', None)} file_data = {'basename': path.basename(filename), 'attrs': { 'packagetype': 'bdist_egg', 'python_version': 'source'} } return package_data, release_data, file_data
def inspect_pypi_package_sdist(filename, fileobj): tf = tarfile.open(filename, fileobj=fileobj) data = extract_first(tf, '*.egg-info/PKG-INFO') distrubite = False if data is None: data = extract_first(tf, '*/PKG-INFO') distrubite = True if data is None: raise errors.NoMetadataError( "Could not find *.egg-info/PKG-INFO file in pypi sdist") config_items = python_version_check(data) attrs = dict(config_items) name = pop_key(attrs, 'Name', None) if name is None: basename = path.basename(filename) name = basename.split('-')[0] package_data = { 'name': name, 'summary': pop_key(attrs, 'Summary', None), 'license': pop_key(attrs, 'License', None) } release_data = { 'version': pop_key(attrs, 'Version'), 'description': pop_key(attrs, 'Description', None), 'home_page': pop_key(attrs, 'Home-page', None) } file_data = { 'basename': path.basename(filename), 'attrs': { 'packagetype': 'sdist', 'python_version': 'source', } } if distrubite: # Distrubite does not create dep files file_data.update(dependencies=disutils_dependencies(config_items)) requires_txt = extract_first(tf, '*.egg-info/requires.txt') if requires_txt: file_data.update(dependencies=parse_requires_txt(requires_txt)) return package_data, release_data, file_data
def inspect_pypi_package(filename, fileobj): if filename.endswith('.tar.gz') or filename.endswith('.tar.bz2'): return inspect_pypi_package_sdist(filename, fileobj) if filename.endswith('.whl'): return inspect_pypi_package_whl(filename, fileobj) if filename.endswith('.egg'): return inspect_pypi_package_egg(filename, fileobj) if filename.endswith('.zip'): return inspect_pypi_package_zip(filename, fileobj) if filename.endswith('.exe'): return inspect_pypi_package_exe(filename, fileobj) if filename.endswith('.rpm'): return inspect_pypi_package_rpm(filename, fileobj) _, etx = path.splitext(filename) raise errors.NoMetadataError("Can not inspect pypi package with file extension %s" % etx)