Mercurial > repos > bcclaywell > argo_navis
comparison venv/lib/python2.7/site-packages/pip/commands/wheel.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
| author | bcclaywell |
|---|---|
| date | Mon, 12 Oct 2015 17:43:33 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d67268158946 |
|---|---|
| 1 # -*- coding: utf-8 -*- | |
| 2 from __future__ import absolute_import | |
| 3 | |
| 4 import logging | |
| 5 import os | |
| 6 import warnings | |
| 7 | |
| 8 from pip.basecommand import Command | |
| 9 from pip.index import PackageFinder | |
| 10 from pip.exceptions import CommandError, PreviousBuildDirError | |
| 11 from pip.req import InstallRequirement, RequirementSet, parse_requirements | |
| 12 from pip.utils import import_or_raise, normalize_path | |
| 13 from pip.utils.build import BuildDirectory | |
| 14 from pip.utils.deprecation import RemovedInPip7Warning, RemovedInPip8Warning | |
| 15 from pip.wheel import WheelBuilder | |
| 16 from pip import cmdoptions | |
| 17 | |
| 18 DEFAULT_WHEEL_DIR = os.path.join(normalize_path(os.curdir), 'wheelhouse') | |
| 19 | |
| 20 | |
| 21 logger = logging.getLogger(__name__) | |
| 22 | |
| 23 | |
| 24 class WheelCommand(Command): | |
| 25 """ | |
| 26 Build Wheel archives for your requirements and dependencies. | |
| 27 | |
| 28 Wheel is a built-package format, and offers the advantage of not | |
| 29 recompiling your software during every install. For more details, see the | |
| 30 wheel docs: http://wheel.readthedocs.org/en/latest. | |
| 31 | |
| 32 Requirements: setuptools>=0.8, and wheel. | |
| 33 | |
| 34 'pip wheel' uses the bdist_wheel setuptools extension from the wheel | |
| 35 package to build individual wheels. | |
| 36 | |
| 37 """ | |
| 38 | |
| 39 name = 'wheel' | |
| 40 usage = """ | |
| 41 %prog [options] <requirement specifier> ... | |
| 42 %prog [options] -r <requirements file> ... | |
| 43 %prog [options] [-e] <vcs project url> ... | |
| 44 %prog [options] [-e] <local project path> ... | |
| 45 %prog [options] <archive url/path> ...""" | |
| 46 | |
| 47 summary = 'Build wheels from your requirements.' | |
| 48 | |
| 49 def __init__(self, *args, **kw): | |
| 50 super(WheelCommand, self).__init__(*args, **kw) | |
| 51 | |
| 52 cmd_opts = self.cmd_opts | |
| 53 | |
| 54 cmd_opts.add_option( | |
| 55 '-w', '--wheel-dir', | |
| 56 dest='wheel_dir', | |
| 57 metavar='dir', | |
| 58 default=DEFAULT_WHEEL_DIR, | |
| 59 help=("Build wheels into <dir>, where the default is " | |
| 60 "'<cwd>/wheelhouse'."), | |
| 61 ) | |
| 62 cmd_opts.add_option(cmdoptions.use_wheel.make()) | |
| 63 cmd_opts.add_option(cmdoptions.no_use_wheel.make()) | |
| 64 cmd_opts.add_option( | |
| 65 '--build-option', | |
| 66 dest='build_options', | |
| 67 metavar='options', | |
| 68 action='append', | |
| 69 help="Extra arguments to be supplied to 'setup.py bdist_wheel'.") | |
| 70 cmd_opts.add_option(cmdoptions.editable.make()) | |
| 71 cmd_opts.add_option(cmdoptions.requirements.make()) | |
| 72 cmd_opts.add_option(cmdoptions.download_cache.make()) | |
| 73 cmd_opts.add_option(cmdoptions.src.make()) | |
| 74 cmd_opts.add_option(cmdoptions.no_deps.make()) | |
| 75 cmd_opts.add_option(cmdoptions.build_dir.make()) | |
| 76 | |
| 77 cmd_opts.add_option( | |
| 78 '--global-option', | |
| 79 dest='global_options', | |
| 80 action='append', | |
| 81 metavar='options', | |
| 82 help="Extra global options to be supplied to the setup.py " | |
| 83 "call before the 'bdist_wheel' command.") | |
| 84 | |
| 85 cmd_opts.add_option( | |
| 86 '--pre', | |
| 87 action='store_true', | |
| 88 default=False, | |
| 89 help=("Include pre-release and development versions. By default, " | |
| 90 "pip only finds stable versions."), | |
| 91 ) | |
| 92 | |
| 93 cmd_opts.add_option(cmdoptions.no_clean.make()) | |
| 94 | |
| 95 index_opts = cmdoptions.make_option_group( | |
| 96 cmdoptions.index_group, | |
| 97 self.parser, | |
| 98 ) | |
| 99 | |
| 100 self.parser.insert_option_group(0, index_opts) | |
| 101 self.parser.insert_option_group(0, cmd_opts) | |
| 102 | |
| 103 def check_required_packages(self): | |
| 104 import_or_raise( | |
| 105 'wheel.bdist_wheel', | |
| 106 CommandError, | |
| 107 "'pip wheel' requires the 'wheel' package. To fix this, run: " | |
| 108 "pip install wheel" | |
| 109 ) | |
| 110 pkg_resources = import_or_raise( | |
| 111 'pkg_resources', | |
| 112 CommandError, | |
| 113 "'pip wheel' requires setuptools >= 0.8 for dist-info support." | |
| 114 " To fix this, run: pip install --upgrade setuptools" | |
| 115 ) | |
| 116 if not hasattr(pkg_resources, 'DistInfoDistribution'): | |
| 117 raise CommandError( | |
| 118 "'pip wheel' requires setuptools >= 0.8 for dist-info " | |
| 119 "support. To fix this, run: pip install --upgrade " | |
| 120 "setuptools" | |
| 121 ) | |
| 122 | |
| 123 def run(self, options, args): | |
| 124 self.check_required_packages() | |
| 125 | |
| 126 index_urls = [options.index_url] + options.extra_index_urls | |
| 127 if options.no_index: | |
| 128 logger.info('Ignoring indexes: %s', ','.join(index_urls)) | |
| 129 index_urls = [] | |
| 130 | |
| 131 if options.use_mirrors: | |
| 132 warnings.warn( | |
| 133 "--use-mirrors has been deprecated and will be removed in the " | |
| 134 "future. Explicit uses of --index-url and/or --extra-index-url" | |
| 135 " is suggested.", | |
| 136 RemovedInPip7Warning, | |
| 137 ) | |
| 138 | |
| 139 if options.mirrors: | |
| 140 warnings.warn( | |
| 141 "--mirrors has been deprecated and will be removed in the " | |
| 142 "future. Explicit uses of --index-url and/or --extra-index-url" | |
| 143 " is suggested.", | |
| 144 RemovedInPip7Warning, | |
| 145 ) | |
| 146 index_urls += options.mirrors | |
| 147 | |
| 148 if options.download_cache: | |
| 149 warnings.warn( | |
| 150 "--download-cache has been deprecated and will be removed in " | |
| 151 "the future. Pip now automatically uses and configures its " | |
| 152 "cache.", | |
| 153 RemovedInPip8Warning, | |
| 154 ) | |
| 155 | |
| 156 if options.build_dir: | |
| 157 options.build_dir = os.path.abspath(options.build_dir) | |
| 158 | |
| 159 with self._build_session(options) as session: | |
| 160 | |
| 161 finder = PackageFinder( | |
| 162 find_links=options.find_links, | |
| 163 index_urls=index_urls, | |
| 164 use_wheel=options.use_wheel, | |
| 165 allow_external=options.allow_external, | |
| 166 allow_unverified=options.allow_unverified, | |
| 167 allow_all_external=options.allow_all_external, | |
| 168 allow_all_prereleases=options.pre, | |
| 169 trusted_hosts=options.trusted_hosts, | |
| 170 process_dependency_links=options.process_dependency_links, | |
| 171 session=session, | |
| 172 ) | |
| 173 | |
| 174 build_delete = (not (options.no_clean or options.build_dir)) | |
| 175 with BuildDirectory(options.build_dir, | |
| 176 delete=build_delete) as build_dir: | |
| 177 requirement_set = RequirementSet( | |
| 178 build_dir=build_dir, | |
| 179 src_dir=options.src_dir, | |
| 180 download_dir=None, | |
| 181 ignore_dependencies=options.ignore_dependencies, | |
| 182 ignore_installed=True, | |
| 183 isolated=options.isolated_mode, | |
| 184 session=session, | |
| 185 wheel_download_dir=options.wheel_dir | |
| 186 ) | |
| 187 | |
| 188 # make the wheelhouse | |
| 189 options.wheel_dir = normalize_path(options.wheel_dir) | |
| 190 if not os.path.exists(options.wheel_dir): | |
| 191 os.makedirs(options.wheel_dir) | |
| 192 | |
| 193 # parse args and/or requirements files | |
| 194 for name in args: | |
| 195 requirement_set.add_requirement( | |
| 196 InstallRequirement.from_line( | |
| 197 name, None, isolated=options.isolated_mode, | |
| 198 ) | |
| 199 ) | |
| 200 for name in options.editables: | |
| 201 requirement_set.add_requirement( | |
| 202 InstallRequirement.from_editable( | |
| 203 name, | |
| 204 default_vcs=options.default_vcs, | |
| 205 isolated=options.isolated_mode, | |
| 206 ) | |
| 207 ) | |
| 208 for filename in options.requirements: | |
| 209 for req in parse_requirements( | |
| 210 filename, | |
| 211 finder=finder, | |
| 212 options=options, | |
| 213 session=session): | |
| 214 requirement_set.add_requirement(req) | |
| 215 | |
| 216 # fail if no requirements | |
| 217 if not requirement_set.has_requirements: | |
| 218 logger.error( | |
| 219 "You must give at least one requirement to %s " | |
| 220 "(see \"pip help %s\")", | |
| 221 self.name, self.name, | |
| 222 ) | |
| 223 return | |
| 224 | |
| 225 try: | |
| 226 # build wheels | |
| 227 wb = WheelBuilder( | |
| 228 requirement_set, | |
| 229 finder, | |
| 230 options.wheel_dir, | |
| 231 build_options=options.build_options or [], | |
| 232 global_options=options.global_options or [], | |
| 233 ) | |
| 234 if not wb.build(): | |
| 235 raise CommandError( | |
| 236 "Failed to build one or more wheels" | |
| 237 ) | |
| 238 except PreviousBuildDirError: | |
| 239 options.no_clean = True | |
| 240 raise | |
| 241 finally: | |
| 242 if not options.no_clean: | |
| 243 requirement_set.cleanup_files() |
