/usr/lib/python2.7/site-packages/setuptools
NameSizeModeActions
command/-0755rm
extern/-0755rm
_vendor/-0755rm
archive_util.py65920644editdlrm
archive_util.pyc61420644editdlrm
archive_util.pyo61420644editdlrm
build_meta.py56710644editdlrm
build_meta.pyc66390644editdlrm
build_meta.pyo65220644editdlrm
config.py163810644editdlrm
config.pyc168880644editdlrm
config.pyo168880644editdlrm
depends.py58370644editdlrm
depends.pyc64830644editdlrm
depends.pyo64830644editdlrm
dep_util.py9350644editdlrm
dep_util.pyc9650644editdlrm
dep_util.pyo9650644editdlrm
dist.py425140644editdlrm
dist.pyc415020644editdlrm
dist.pyo414440644editdlrm
extension.py17290644editdlrm
extension.pyc24180644editdlrm
extension.pyo24180644editdlrm
glibc.py31460644editdlrm
glibc.pyc19600644editdlrm
glibc.pyo19600644editdlrm
glob.py52070644editdlrm
glob.pyc48180644editdlrm
glob.pyo47560644editdlrm
launch.py7870644editdlrm
launch.pyc10000644editdlrm
launch.pyo10000644editdlrm
lib2to3_ex.py20130644editdlrm
lib2to3_ex.pyc30040644editdlrm
lib2to3_ex.pyo30040644editdlrm
monkey.py57890644editdlrm
monkey.pyc63430644editdlrm
monkey.pyo63430644editdlrm
msvc.py408770644editdlrm
msvc.pyc403520644editdlrm
msvc.pyo403520644editdlrm
namespaces.py31990644editdlrm
namespaces.pyc50330644editdlrm
namespaces.pyo50330644editdlrm
package_index.py401530644editdlrm
package_index.pyc397430644editdlrm
package_index.pyo397430644editdlrm
pep425tags.py108820644editdlrm
pep425tags.pyc93340644editdlrm
pep425tags.pyo93340644editdlrm
py27compat.py5360644editdlrm
py27compat.pyc10450644editdlrm
py27compat.pyo10450644editdlrm
py31compat.py11920644editdlrm
py31compat.pyc18980644editdlrm
py31compat.pyo18980644editdlrm
py33compat.py11820644editdlrm
py33compat.pyc17200644editdlrm
py33compat.pyo17200644editdlrm
py36compat.py28910644editdlrm
py36compat.pyc28620644editdlrm
py36compat.pyo28620644editdlrm
sandbox.py142760644editdlrm
sandbox.pyc189000644editdlrm
sandbox.pyo189000644editdlrm
script (dev).tmpl2010644editdlrm
script.tmpl1380644editdlrm
site-patch.py23070644editdlrm
site-patch.pyc17390644editdlrm
site-patch.pyo17390644editdlrm
ssl_support.py84920644editdlrm
ssl_support.pyc85160644editdlrm
ssl_support.pyo85160644editdlrm
unicode_utils.py9960644editdlrm
unicode_utils.pyc14720644editdlrm
unicode_utils.pyo14720644editdlrm
version.py1440644editdlrm
version.pyc3220644editdlrm
version.pyo3220644editdlrm
wheel.py72300644editdlrm
wheel.pyc73430644editdlrm
wheel.pyo73090644editdlrm
windows_support.py7140644editdlrm
windows_support.pyc12740644editdlrm
windows_support.pyo12740644editdlrm
__init__.py57000644editdlrm
__init__.pyc76250644editdlrm
__init__.pyo76250644editdlrm
Edit: /usr/lib/python2.7/site-packages/setuptools/wheel.py (7230B)
'''Wheels support.''' from distutils.util import get_platform import email import itertools import os import re import zipfile from pkg_resources import Distribution, PathMetadata, parse_version from setuptools.extern.six import PY3 from setuptools import Distribution as SetuptoolsDistribution from setuptools import pep425tags from setuptools.command.egg_info import write_requirements WHEEL_NAME = re.compile( r"""^(?P.+?)-(?P\d.*?) ((-(?P\d.*?))?-(?P.+?)-(?P.+?)-(?P.+?) )\.whl$""", re.VERBOSE).match NAMESPACE_PACKAGE_INIT = '''\ try: __import__('pkg_resources').declare_namespace(__name__) except ImportError: __path__ = __import__('pkgutil').extend_path(__path__, __name__) ''' def unpack(src_dir, dst_dir): '''Move everything under `src_dir` to `dst_dir`, and delete the former.''' for dirpath, dirnames, filenames in os.walk(src_dir): subdir = os.path.relpath(dirpath, src_dir) for f in filenames: src = os.path.join(dirpath, f) dst = os.path.join(dst_dir, subdir, f) os.renames(src, dst) for n, d in reversed(list(enumerate(dirnames))): src = os.path.join(dirpath, d) dst = os.path.join(dst_dir, subdir, d) if not os.path.exists(dst): # Directory does not exist in destination, # rename it and prune it from os.walk list. os.renames(src, dst) del dirnames[n] # Cleanup. for dirpath, dirnames, filenames in os.walk(src_dir, topdown=True): assert not filenames os.rmdir(dirpath) class Wheel(object): def __init__(self, filename): match = WHEEL_NAME(os.path.basename(filename)) if match is None: raise ValueError('invalid wheel name: %r' % filename) self.filename = filename for k, v in match.groupdict().items(): setattr(self, k, v) def tags(self): '''List tags (py_version, abi, platform) supported by this wheel.''' return itertools.product(self.py_version.split('.'), self.abi.split('.'), self.platform.split('.')) def is_compatible(self): '''Is the wheel is compatible with the current platform?''' supported_tags = pep425tags.get_supported() return next((True for t in self.tags() if t in supported_tags), False) def egg_name(self): return Distribution( project_name=self.project_name, version=self.version, platform=(None if self.platform == 'any' else get_platform()), ).egg_name() + '.egg' def install_as_egg(self, destination_eggdir): '''Install wheel as an egg directory.''' with zipfile.ZipFile(self.filename) as zf: dist_basename = '%s-%s' % (self.project_name, self.version) dist_info = '%s.dist-info' % dist_basename dist_data = '%s.data' % dist_basename def get_metadata(name): with zf.open('%s/%s' % (dist_info, name)) as fp: value = fp.read().decode('utf-8') if PY3 else fp.read() return email.parser.Parser().parsestr(value) wheel_metadata = get_metadata('WHEEL') dist_metadata = get_metadata('METADATA') # Check wheel format version is supported. wheel_version = parse_version(wheel_metadata.get('Wheel-Version')) if not parse_version('1.0') <= wheel_version < parse_version('2.0dev0'): raise ValueError('unsupported wheel format version: %s' % wheel_version) # Extract to target directory. os.mkdir(destination_eggdir) zf.extractall(destination_eggdir) # Convert metadata. dist_info = os.path.join(destination_eggdir, dist_info) dist = Distribution.from_location( destination_eggdir, dist_info, metadata=PathMetadata(destination_eggdir, dist_info) ) # Note: we need to evaluate and strip markers now, # as we can't easily convert back from the syntax: # foobar; "linux" in sys_platform and extra == 'test' def raw_req(req): req.marker = None return str(req) install_requires = list(sorted(map(raw_req, dist.requires()))) extras_require = { extra: list(sorted( req for req in map(raw_req, dist.requires((extra,))) if req not in install_requires )) for extra in dist.extras } egg_info = os.path.join(destination_eggdir, 'EGG-INFO') os.rename(dist_info, egg_info) os.rename(os.path.join(egg_info, 'METADATA'), os.path.join(egg_info, 'PKG-INFO')) setup_dist = SetuptoolsDistribution(attrs=dict( install_requires=install_requires, extras_require=extras_require, )) write_requirements(setup_dist.get_command_obj('egg_info'), None, os.path.join(egg_info, 'requires.txt')) # Move data entries to their correct location. dist_data = os.path.join(destination_eggdir, dist_data) dist_data_scripts = os.path.join(dist_data, 'scripts') if os.path.exists(dist_data_scripts): egg_info_scripts = os.path.join(destination_eggdir, 'EGG-INFO', 'scripts') os.mkdir(egg_info_scripts) for entry in os.listdir(dist_data_scripts): # Remove bytecode, as it's not properly handled # during easy_install scripts install phase. if entry.endswith('.pyc'): os.unlink(os.path.join(dist_data_scripts, entry)) else: os.rename(os.path.join(dist_data_scripts, entry), os.path.join(egg_info_scripts, entry)) os.rmdir(dist_data_scripts) for subdir in filter(os.path.exists, ( os.path.join(dist_data, d) for d in ('data', 'headers', 'purelib', 'platlib') )): unpack(subdir, destination_eggdir) if os.path.exists(dist_data): os.rmdir(dist_data) # Fix namespace packages. namespace_packages = os.path.join(egg_info, 'namespace_packages.txt') if os.path.exists(namespace_packages): with open(namespace_packages) as fp: namespace_packages = fp.read().split() for mod in namespace_packages: mod_dir = os.path.join(destination_eggdir, *mod.split('.')) mod_init = os.path.join(mod_dir, '__init__.py') if os.path.exists(mod_dir) and not os.path.exists(mod_init): with open(mod_init, 'w') as fp: fp.write(NAMESPACE_PACKAGE_INIT)