from distutils.errors import DistutilsArgError import inspect import glob import warnings import platform import distutils.command.install as orig import setuptools # Prior to numpy 1.9, NumPy relies on the '_install' name, so provide it for # now. See https://github.com/pypa/setuptools/issues/199/ _install = orig.install class install(orig.install): """Use easy_install to install the package, w/dependencies""" user_options = orig.install.user_options + [ ('old-and-unmanageable', None, "Try not to use this!"), ('single-version-externally-managed', None, "used by system package builders to create 'flat' eggs"), ] boolean_options = orig.install.boolean_options + [ 'old-and-unmanageable', 'single-version-externally-managed', ] new_commands = [ ('install_egg_info', lambda self: True), ('install_scripts', lambda self: True), ] _nc = dict(new_commands) def initialize_options(self): orig.install.initialize_options(self) self.old_and_unmanageable = None self.single_version_externally_managed = None def finalize_options(self): orig.install.finalize_options(self) if self.root: self.single_version_externally_managed = True elif self.single_version_externally_managed: if not self.root and not self.record: raise DistutilsArgError( "You must specify --record or --root when building system" " packages" ) def handle_extra_path(self): if self.root or self.single_version_externally_managed: # explicit backward-compatibility mode, allow extra_path to work return orig.install.handle_extra_path(self) # Ignore extra_path when installing an egg (or being run by another # command without --root or --single-version-externally-managed self.path_file = None self.extra_dirs = '' def run(self): # Explicit request for old-style install? Just do it if self.old_and_unmanageable or self.single_version_externally_managed: return orig.install.run(self) if not self._called_from_setup(inspect.currentframe()): # Run in backward-compatibility mode to support bdist_* commands. orig.install.run(self) else: self.do_egg_install() @staticmethod def _called_from_setup(run_frame): """ Attempt to detect whether run() was called from setup() or by another command. If called by setup(), the parent caller will be the 'run_command' method in 'distutils.dist', and *its* caller will be the 'run_commands' method. If called any other way, the immediate caller *might* be 'run_command', but it won't have been called by 'run_commands'. Return True in that case or if a call stack is unavailable. Return False otherwise. """ if run_frame is None: msg = "Call stack not available. bdist_* commands may fail." warnings.warn(msg) if platform.python_implementation() == 'IronPython': msg = "For best results, pass -X:Frames to enable call stack." warnings.warn(msg) return True res = inspect.getouterframes(run_frame)[2] caller, = res[:1] info = inspect.getframeinfo(caller) caller_module = caller.f_globals.get('__name__', '') return ( caller_module == 'distutils.dist' and info.function == 'run_commands' ) def do_egg_install(self): easy_install = self.distribution.get_command_class('easy_install') cmd = easy_install( self.distribution, args="x", root=self.root, record=self.record, ) cmd.ensure_finalized() # finalize before bdist_egg munges install cmd cmd.always_copy_from = '.' # make sure local-dir eggs get installed # pick up setup-dir .egg files only: no .egg-info cmd.package_index.scan(glob.glob('*.egg')) self.run_command('bdist_egg') args = [self.distribution.get_command_obj('bdist_egg').egg_output] if setuptools.bootstrap_install_from: # Bootstrap self-installation of setuptools args.insert(0, setuptools.bootstrap_install_from) cmd.args = args cmd.run() setuptools.bootstrap_install_from = None # XXX Python 3.1 doesn't see _nc if this is inside the class install.sub_commands = ( [cmd for cmd in orig.install.sub_commands if cmd[0] not in install._nc] + install.new_commands )
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__init__.py | File | 594 B | 0644 |
|
__init__.pyc | File | 882 B | 0644 |
|
__init__.pyo | File | 882 B | 0644 |
|
alias.py | File | 2.37 KB | 0644 |
|
alias.pyc | File | 3.03 KB | 0644 |
|
alias.pyo | File | 3.03 KB | 0644 |
|
bdist_egg.py | File | 17.76 KB | 0644 |
|
bdist_egg.pyc | File | 17.96 KB | 0644 |
|
bdist_egg.pyo | File | 17.96 KB | 0644 |
|
bdist_rpm.py | File | 1.47 KB | 0644 |
|
bdist_rpm.pyc | File | 1.87 KB | 0644 |
|
bdist_rpm.pyo | File | 1.87 KB | 0644 |
|
bdist_wininst.py | File | 637 B | 0644 |
|
bdist_wininst.pyc | File | 1.16 KB | 0644 |
|
bdist_wininst.pyo | File | 1.16 KB | 0644 |
|
build_clib.py | File | 4.38 KB | 0644 |
|
build_clib.pyc | File | 2.78 KB | 0644 |
|
build_clib.pyo | File | 2.78 KB | 0644 |
|
build_ext.py | File | 12.86 KB | 0644 |
|
build_ext.pyc | File | 12.28 KB | 0644 |
|
build_ext.pyo | File | 12.23 KB | 0644 |
|
build_py.py | File | 9.37 KB | 0644 |
|
build_py.pyc | File | 10.42 KB | 0644 |
|
build_py.pyo | File | 10.42 KB | 0644 |
|
develop.py | File | 7.86 KB | 0644 |
|
develop.pyc | File | 7.71 KB | 0644 |
|
develop.pyo | File | 7.71 KB | 0644 |
|
dist_info.py | File | 960 B | 0644 |
|
dist_info.pyc | File | 1.76 KB | 0644 |
|
dist_info.pyo | File | 1.76 KB | 0644 |
|
easy_install.py | File | 84.99 KB | 0644 |
|
easy_install.pyc | File | 78.5 KB | 0644 |
|
easy_install.pyo | File | 78.44 KB | 0644 |
|
egg_info.py | File | 24.22 KB | 0644 |
|
egg_info.pyc | File | 25.29 KB | 0644 |
|
egg_info.pyo | File | 25.29 KB | 0644 |
|
install.py | File | 4.57 KB | 0644 |
|
install.pyc | File | 4.84 KB | 0644 |
|
install.pyo | File | 4.84 KB | 0644 |
|
install_egg_info.py | File | 2.15 KB | 0644 |
|
install_egg_info.pyc | File | 3.11 KB | 0644 |
|
install_egg_info.pyo | File | 3.11 KB | 0644 |
|
install_lib.py | File | 3.75 KB | 0644 |
|
install_lib.pyc | File | 4.76 KB | 0644 |
|
install_lib.pyo | File | 4.71 KB | 0644 |
|
install_scripts.py | File | 2.38 KB | 0644 |
|
install_scripts.pyc | File | 2.82 KB | 0644 |
|
install_scripts.pyo | File | 2.82 KB | 0644 |
|
launcher manifest.xml | File | 628 B | 0644 |
|
py36compat.py | File | 4.87 KB | 0644 |
|
py36compat.pyc | File | 5.42 KB | 0644 |
|
py36compat.pyo | File | 5.42 KB | 0644 |
|
register.py | File | 270 B | 0644 |
|
register.pyc | File | 710 B | 0644 |
|
register.pyo | File | 710 B | 0644 |
|
rotate.py | File | 2.11 KB | 0644 |
|
rotate.pyc | File | 2.96 KB | 0644 |
|
rotate.pyo | File | 2.96 KB | 0644 |
|
saveopts.py | File | 658 B | 0644 |
|
saveopts.pyc | File | 1.1 KB | 0644 |
|
saveopts.pyo | File | 1.1 KB | 0644 |
|
sdist.py | File | 6.55 KB | 0644 |
|
sdist.pyc | File | 7.64 KB | 0644 |
|
sdist.pyo | File | 7.64 KB | 0644 |
|
setopt.py | File | 4.97 KB | 0644 |
|
setopt.pyc | File | 5.91 KB | 0644 |
|
setopt.pyo | File | 5.91 KB | 0644 |
|
test.py | File | 9 KB | 0644 |
|
test.pyc | File | 10.22 KB | 0644 |
|
test.pyo | File | 10.22 KB | 0644 |
|
upload.py | File | 1.14 KB | 0644 |
|
upload.pyc | File | 1.6 KB | 0644 |
|
upload.pyo | File | 1.6 KB | 0644 |
|
upload_docs.py | File | 7.14 KB | 0644 |
|
upload_docs.pyc | File | 7.66 KB | 0644 |
|
upload_docs.pyo | File | 7.63 KB | 0644 |
|