aboutsummaryrefslogtreecommitdiffstats
path: root/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands
diff options
context:
space:
mode:
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands')
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/__init__.py88
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/bundle.py50
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/completion.py61
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py133
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/help.py33
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/install.py362
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/list.py183
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/search.py146
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py87
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/uninstall.py64
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/unzip.py7
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/wheel.py213
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py404
13 files changed, 0 insertions, 1831 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/__init__.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/__init__.py
deleted file mode 100644
index e0702d2..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/__init__.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""
-Package containing all pip commands
-"""
-
-
-from pip.commands.bundle import BundleCommand
-from pip.commands.completion import CompletionCommand
-from pip.commands.freeze import FreezeCommand
-from pip.commands.help import HelpCommand
-from pip.commands.list import ListCommand
-from pip.commands.search import SearchCommand
-from pip.commands.show import ShowCommand
-from pip.commands.install import InstallCommand
-from pip.commands.uninstall import UninstallCommand
-from pip.commands.unzip import UnzipCommand
-from pip.commands.zip import ZipCommand
-from pip.commands.wheel import WheelCommand
-
-
-commands = {
- BundleCommand.name: BundleCommand,
- CompletionCommand.name: CompletionCommand,
- FreezeCommand.name: FreezeCommand,
- HelpCommand.name: HelpCommand,
- SearchCommand.name: SearchCommand,
- ShowCommand.name: ShowCommand,
- InstallCommand.name: InstallCommand,
- UninstallCommand.name: UninstallCommand,
- UnzipCommand.name: UnzipCommand,
- ZipCommand.name: ZipCommand,
- ListCommand.name: ListCommand,
- WheelCommand.name: WheelCommand,
-}
-
-
-commands_order = [
- InstallCommand,
- UninstallCommand,
- FreezeCommand,
- ListCommand,
- ShowCommand,
- SearchCommand,
- WheelCommand,
- ZipCommand,
- UnzipCommand,
- BundleCommand,
- HelpCommand,
-]
-
-
-def get_summaries(ignore_hidden=True, ordered=True):
- """Yields sorted (command name, command summary) tuples."""
-
- if ordered:
- cmditems = _sort_commands(commands, commands_order)
- else:
- cmditems = commands.items()
-
- for name, command_class in cmditems:
- if ignore_hidden and command_class.hidden:
- continue
-
- yield (name, command_class.summary)
-
-
-def get_similar_commands(name):
- """Command name auto-correct."""
- from difflib import get_close_matches
-
- close_commands = get_close_matches(name, commands.keys())
-
- if close_commands:
- guess = close_commands[0]
- else:
- guess = False
-
- return guess
-
-
-def _sort_commands(cmddict, order):
- def keyfn(key):
- try:
- return order.index(key[1])
- except ValueError:
- # unordered items should come last
- return 0xff
-
- return sorted(cmddict.items(), key=keyfn)
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/bundle.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/bundle.py
deleted file mode 100644
index 52b4f19..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/bundle.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from pip.locations import build_prefix, src_prefix
-from pip.util import display_path, backup_dir
-from pip.log import logger
-from pip.exceptions import InstallationError
-from pip.commands.install import InstallCommand
-
-
-class BundleCommand(InstallCommand):
- """Create pybundles (archives containing multiple packages)."""
- name = 'bundle'
- usage = """
- %prog [options] <bundle name>.pybundle <package>..."""
- summary = 'DEPRECATED. Create pybundles.'
- bundle = True
-
- def __init__(self, *args, **kw):
- super(BundleCommand, self).__init__(*args, **kw)
- # bundle uses different default source and build dirs
- build_opt = self.parser.get_option("--build")
- build_opt.default = backup_dir(build_prefix, '-bundle')
- src_opt = self.parser.get_option("--src")
- src_opt.default = backup_dir(src_prefix, '-bundle')
- self.parser.set_defaults(**{
- src_opt.dest: src_opt.default,
- build_opt.dest: build_opt.default,
- })
-
- def run(self, options, args):
-
- logger.deprecated(
- '1.6',
- "DEPRECATION: 'pip bundle' and support for installing from "
- "*.pybundle files is deprecated. "
- "See https://github.com/pypa/pip/pull/1046"
- )
-
- if not args:
- raise InstallationError('You must give a bundle filename')
- # We have to get everything when creating a bundle:
- options.ignore_installed = True
- logger.notify(
- 'Putting temporary build files in %s and source/develop files in '
- '%s' % (
- display_path(options.build_dir),
- display_path(options.src_dir)
- )
- )
- self.bundle_filename = args.pop(0)
- requirement_set = super(BundleCommand, self).run(options, args)
- return requirement_set
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/completion.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/completion.py
deleted file mode 100644
index a3fa2fb..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/completion.py
+++ /dev/null
@@ -1,61 +0,0 @@
-import sys
-from pip.basecommand import Command
-
-BASE_COMPLETION = """
-# pip %(shell)s completion start%(script)s# pip %(shell)s completion end
-"""
-
-COMPLETION_SCRIPTS = {
- 'bash': """
-_pip_completion()
-{
- COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\
- COMP_CWORD=$COMP_CWORD \\
- PIP_AUTO_COMPLETE=1 $1 ) )
-}
-complete -o default -F _pip_completion pip
-""", 'zsh': """
-function _pip_completion {
- local words cword
- read -Ac words
- read -cn cword
- reply=( $( COMP_WORDS="$words[*]" \\
- COMP_CWORD=$(( cword-1 )) \\
- PIP_AUTO_COMPLETE=1 $words[1] ) )
-}
-compctl -K _pip_completion pip
-"""}
-
-
-class CompletionCommand(Command):
- """A helper command to be used for command completion."""
- name = 'completion'
- summary = 'A helper command to be used for command completion'
- hidden = True
-
- def __init__(self, *args, **kw):
- super(CompletionCommand, self).__init__(*args, **kw)
- self.parser.add_option(
- '--bash', '-b',
- action='store_const',
- const='bash',
- dest='shell',
- help='Emit completion code for bash')
- self.parser.add_option(
- '--zsh', '-z',
- action='store_const',
- const='zsh',
- dest='shell',
- help='Emit completion code for zsh')
-
- def run(self, options, args):
- """Prints the completion code of the given shell"""
- shells = COMPLETION_SCRIPTS.keys()
- shell_options = ['--' + shell for shell in sorted(shells)]
- if options.shell in shells:
- script = COMPLETION_SCRIPTS.get(options.shell, '')
- print(BASE_COMPLETION % {'script': script, 'shell': options.shell})
- else:
- sys.stderr.write(
- 'ERROR: You must pass %s\n' % ' or '.join(shell_options)
- )
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py
deleted file mode 100644
index 2d5b10d..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py
+++ /dev/null
@@ -1,133 +0,0 @@
-import re
-import sys
-import pip
-
-from pip.backwardcompat import stdlib_pkgs
-from pip.req import InstallRequirement
-from pip.log import logger
-from pip.basecommand import Command
-from pip.util import get_installed_distributions
-
-# packages to exclude from freeze output
-freeze_excludes = stdlib_pkgs + ['setuptools', 'pip', 'distribute']
-
-
-class FreezeCommand(Command):
- """
- Output installed packages in requirements format.
-
- packages are listed in a case-insensitive sorted order.
- """
- name = 'freeze'
- usage = """
- %prog [options]"""
- summary = 'Output installed packages in requirements format.'
-
- def __init__(self, *args, **kw):
- super(FreezeCommand, self).__init__(*args, **kw)
-
- self.cmd_opts.add_option(
- '-r', '--requirement',
- dest='requirement',
- action='store',
- default=None,
- metavar='file',
- help="Use the order in the given requirements file and its "
- "comments when generating output.")
- self.cmd_opts.add_option(
- '-f', '--find-links',
- dest='find_links',
- action='append',
- default=[],
- metavar='URL',
- help='URL for finding packages, which will be added to the '
- 'output.')
- self.cmd_opts.add_option(
- '-l', '--local',
- dest='local',
- action='store_true',
- default=False,
- help='If in a virtualenv that has global access, do not output '
- 'globally-installed packages.')
-
- self.parser.insert_option_group(0, self.cmd_opts)
-
- def setup_logging(self):
- logger.move_stdout_to_stderr()
-
- def run(self, options, args):
- requirement = options.requirement
- find_links = options.find_links or []
- local_only = options.local
- # FIXME: Obviously this should be settable:
- find_tags = False
- skip_match = None
-
- skip_regex = options.skip_requirements_regex
- if skip_regex:
- skip_match = re.compile(skip_regex)
-
- f = sys.stdout
-
- for link in find_links:
- f.write('-f %s\n' % link)
- installations = {}
- for dist in get_installed_distributions(local_only=local_only,
- skip=freeze_excludes):
- req = pip.FrozenRequirement.from_dist(dist, find_tags=find_tags)
- installations[req.name] = req
- if requirement:
- req_f = open(requirement)
- for line in req_f:
- if not line.strip() or line.strip().startswith('#'):
- f.write(line)
- continue
- if skip_match and skip_match.search(line):
- f.write(line)
- continue
- elif line.startswith('-e') or line.startswith('--editable'):
- if line.startswith('-e'):
- line = line[2:].strip()
- else:
- line = line[len('--editable'):].strip().lstrip('=')
- line_req = InstallRequirement.from_editable(
- line,
- default_vcs=options.default_vcs
- )
- elif (line.startswith('-r')
- or line.startswith('--requirement')
- or line.startswith('-Z')
- or line.startswith('--always-unzip')
- or line.startswith('-f')
- or line.startswith('-i')
- or line.startswith('--extra-index-url')
- or line.startswith('--find-links')
- or line.startswith('--index-url')):
- f.write(line)
- continue
- else:
- line_req = InstallRequirement.from_line(line)
- if not line_req.name:
- logger.notify(
- "Skipping line because it's not clear what it would "
- "install: %s" % line.strip()
- )
- logger.notify(
- " (add #egg=PackageName to the URL to avoid"
- " this warning)"
- )
- continue
- if line_req.name not in installations:
- logger.warn(
- "Requirement file contains %s, but that package is not"
- " installed" % line.strip()
- )
- continue
- f.write(str(installations[line_req.name]))
- del installations[line_req.name]
- f.write(
- '## The following requirements were added by pip --freeze:\n'
- )
- for installation in sorted(
- installations.values(), key=lambda x: x.name.lower()):
- f.write(str(installation))
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/help.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/help.py
deleted file mode 100644
index 2253387..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/help.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from pip.basecommand import Command, SUCCESS
-from pip.exceptions import CommandError
-
-
-class HelpCommand(Command):
- """Show help for commands"""
- name = 'help'
- usage = """
- %prog <command>"""
- summary = 'Show help for commands.'
-
- def run(self, options, args):
- from pip.commands import commands, get_similar_commands
-
- try:
- # 'pip help' with no args is handled by pip.__init__.parseopt()
- cmd_name = args[0] # the command we need help for
- except IndexError:
- return SUCCESS
-
- if cmd_name not in commands:
- guess = get_similar_commands(cmd_name)
-
- msg = ['unknown command "%s"' % cmd_name]
- if guess:
- msg.append('maybe you meant "%s"' % guess)
-
- raise CommandError(' - '.join(msg))
-
- command = commands[cmd_name]()
- command.parser.print_help()
-
- return SUCCESS
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/install.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/install.py
deleted file mode 100644
index 850a6ff..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/install.py
+++ /dev/null
@@ -1,362 +0,0 @@
-import os
-import tempfile
-import shutil
-
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
-from pip.log import logger
-from pip.locations import (src_prefix, virtualenv_no_global, distutils_scheme,
- build_prefix)
-from pip.basecommand import Command
-from pip.index import PackageFinder
-from pip.exceptions import (
- InstallationError, CommandError, PreviousBuildDirError,
-)
-from pip import cmdoptions
-
-
-class InstallCommand(Command):
- """
- Install packages from:
-
- - PyPI (and other indexes) using requirement specifiers.
- - VCS project urls.
- - Local project directories.
- - Local or remote source archives.
-
- pip also supports installing from "requirements files", which provide
- an easy way to specify a whole environment to be installed.
- """
- name = 'install'
-
- usage = """
- %prog [options] <requirement specifier> ...
- %prog [options] -r <requirements file> ...
- %prog [options] [-e] <vcs project url> ...
- %prog [options] [-e] <local project path> ...
- %prog [options] <archive url/path> ..."""
-
- summary = 'Install packages.'
- bundle = False
-
- def __init__(self, *args, **kw):
- super(InstallCommand, self).__init__(*args, **kw)
-
- cmd_opts = self.cmd_opts
-
- cmd_opts.add_option(
- '-e', '--editable',
- dest='editables',
- action='append',
- default=[],
- metavar='path/url',
- help=('Install a project in editable mode (i.e. setuptools '
- '"develop mode") from a local project path or a VCS url.'),
- )
-
- cmd_opts.add_option(cmdoptions.requirements.make())
- cmd_opts.add_option(cmdoptions.build_dir.make())
-
- cmd_opts.add_option(
- '-t', '--target',
- dest='target_dir',
- metavar='dir',
- default=None,
- help='Install packages into <dir>.')
-
- cmd_opts.add_option(
- '-d', '--download', '--download-dir', '--download-directory',
- dest='download_dir',
- metavar='dir',
- default=None,
- help=("Download packages into <dir> instead of installing them, "
- "regardless of what's already installed."),
- )
-
- cmd_opts.add_option(cmdoptions.download_cache.make())
-
- cmd_opts.add_option(
- '--src', '--source', '--source-dir', '--source-directory',
- dest='src_dir',
- metavar='dir',
- default=src_prefix,
- help='Directory to check out editable projects into. '
- 'The default in a virtualenv is "<venv path>/src". '
- 'The default for global installs is "<current dir>/src".')
-
- cmd_opts.add_option(
- '-U', '--upgrade',
- dest='upgrade',
- action='store_true',
- help='Upgrade all packages to the newest available version. '
- 'This process is recursive regardless of whether a dependency'
- ' is already satisfied.'
- )
-
- cmd_opts.add_option(
- '--force-reinstall',
- dest='force_reinstall',
- action='store_true',
- help='When upgrading, reinstall all packages even if they are '
- 'already up-to-date.')
-
- cmd_opts.add_option(
- '-I', '--ignore-installed',
- dest='ignore_installed',
- action='store_true',
- help='Ignore the installed packages (reinstalling instead).')
-
- cmd_opts.add_option(cmdoptions.no_deps.make())
-
- cmd_opts.add_option(
- '--no-install',
- dest='no_install',
- action='store_true',
- help="DEPRECATED. Download and unpack all packages, but don't "
- "actually install them."
- )
-
- cmd_opts.add_option(
- '--no-download',
- dest='no_download',
- action="store_true",
- help="DEPRECATED. Don't download any packages, just install the "
- "ones already downloaded (completes an install run with "
- "--no-install).")
-
- cmd_opts.add_option(cmdoptions.install_options.make())
- cmd_opts.add_option(cmdoptions.global_options.make())
-
- cmd_opts.add_option(
- '--user',
- dest='use_user_site',
- action='store_true',
- help='Install using the user scheme.')
-
- cmd_opts.add_option(
- '--egg',
- dest='as_egg',
- action='store_true',
- help="Install packages as eggs, not 'flat', like pip normally "
- "does. This option is not about installing *from* eggs. "
- "(WARNING: Because this option overrides pip's normal install"
- " logic, requirements files may not behave as expected.)")
-
- cmd_opts.add_option(
- '--root',
- dest='root_path',
- metavar='dir',
- default=None,
- help="Install everything relative to this alternate root "
- "directory.")
-
- cmd_opts.add_option(
- "--compile",
- action="store_true",
- dest="compile",
- default=True,
- help="Compile py files to pyc",
- )
-
- cmd_opts.add_option(
- "--no-compile",
- action="store_false",
- dest="compile",
- help="Do not compile py files to pyc",
- )
-
- cmd_opts.add_option(cmdoptions.use_wheel.make())
- cmd_opts.add_option(cmdoptions.no_use_wheel.make())
-
- cmd_opts.add_option(
- '--pre',
- action='store_true',
- default=False,
- help="Include pre-release and development versions. By default, "
- "pip only finds stable versions.")
-
- cmd_opts.add_option(cmdoptions.no_clean.make())
-
- index_opts = cmdoptions.make_option_group(
- cmdoptions.index_group,
- self.parser,
- )
-
- self.parser.insert_option_group(0, index_opts)
- self.parser.insert_option_group(0, cmd_opts)
-
- def _build_package_finder(self, options, index_urls, session):
- """
- Create a package finder appropriate to this install command.
- This method is meant to be overridden by subclasses, not
- called directly.
- """
- return PackageFinder(
- find_links=options.find_links,
- index_urls=index_urls,
- use_wheel=options.use_wheel,
- allow_external=options.allow_external,
- allow_unverified=options.allow_unverified,
- allow_all_external=options.allow_all_external,
- allow_all_prereleases=options.pre,
- session=session,
- )
-
- def run(self, options, args):
-
- if (
- options.no_install or
- options.no_download or
- (options.build_dir != build_prefix) or
- options.no_clean
- ):
- logger.deprecated(
- '1.7',
- 'DEPRECATION: --no-install, --no-download, --build, '
- 'and --no-clean are deprecated. See '
- 'https://github.com/pypa/pip/issues/906.',
- )
-
- if options.download_dir:
- options.no_install = True
- options.ignore_installed = True
- options.build_dir = os.path.abspath(options.build_dir)
- options.src_dir = os.path.abspath(options.src_dir)
- install_options = options.install_options or []
- if options.use_user_site:
- if virtualenv_no_global():
- raise InstallationError(
- "Can not perform a '--user' install. User site-packages "
- "are not visible in this virtualenv."
- )
- install_options.append('--user')
-
- temp_target_dir = None
- if options.target_dir:
- options.ignore_installed = True
- temp_target_dir = tempfile.mkdtemp()
- options.target_dir = os.path.abspath(options.target_dir)
- if (os.path.exists(options.target_dir)
- and not os.path.isdir(options.target_dir)):
- raise CommandError(
- "Target path exists but is not a directory, will not "
- "continue."
- )
- install_options.append('--home=' + temp_target_dir)
-
- global_options = options.global_options or []
- index_urls = [options.index_url] + options.extra_index_urls
- if options.no_index:
- logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
- index_urls = []
-
- if options.use_mirrors:
- logger.deprecated(
- "1.7",
- "--use-mirrors has been deprecated and will be removed"
- " in the future. Explicit uses of --index-url and/or "
- "--extra-index-url is suggested."
- )
-
- if options.mirrors:
- logger.deprecated(
- "1.7",
- "--mirrors has been deprecated and will be removed in "
- " the future. Explicit uses of --index-url and/or "
- "--extra-index-url is suggested."
- )
- index_urls += options.mirrors
-
- session = self._build_session(options)
-
- finder = self._build_package_finder(options, index_urls, session)
-
- requirement_set = RequirementSet(
- build_dir=options.build_dir,
- src_dir=options.src_dir,
- download_dir=options.download_dir,
- download_cache=options.download_cache,
- upgrade=options.upgrade,
- as_egg=options.as_egg,
- ignore_installed=options.ignore_installed,
- ignore_dependencies=options.ignore_dependencies,
- force_reinstall=options.force_reinstall,
- use_user_site=options.use_user_site,
- target_dir=temp_target_dir,
- session=session,
- pycompile=options.compile,
- )
- for name in args:
- requirement_set.add_requirement(
- InstallRequirement.from_line(name, None))
- for name in options.editables:
- requirement_set.add_requirement(
- InstallRequirement.from_editable(
- name,
- default_vcs=options.default_vcs
- )
- )
- for filename in options.requirements:
- for req in parse_requirements(
- filename, finder=finder, options=options, session=session):
- requirement_set.add_requirement(req)
- if not requirement_set.has_requirements:
- opts = {'name': self.name}
- if options.find_links:
- msg = ('You must give at least one requirement to %(name)s '
- '(maybe you meant "pip %(name)s %(links)s"?)' %
- dict(opts, links=' '.join(options.find_links)))
- else:
- msg = ('You must give at least one requirement '
- 'to %(name)s (see "pip help %(name)s")' % opts)
- logger.warn(msg)
- return
-
- try:
- if not options.no_download:
- requirement_set.prepare_files(
- finder,
- force_root_egg_info=self.bundle,
- bundle=self.bundle,
- )
- else:
- requirement_set.locate_files()
-
- if not options.no_install and not self.bundle:
- requirement_set.install(
- install_options,
- global_options,
- root=options.root_path,
- )
- installed = ' '.join([req.name for req in
- requirement_set.successfully_installed])
- if installed:
- logger.notify('Successfully installed %s' % installed)
- elif not self.bundle:
- downloaded = ' '.join([
- req.name for req in requirement_set.successfully_downloaded
- ])
- if downloaded:
- logger.notify('Successfully downloaded %s' % downloaded)
- elif self.bundle:
- requirement_set.create_bundle(self.bundle_filename)
- logger.notify('Created bundle in %s' % self.bundle_filename)
- except PreviousBuildDirError:
- options.no_clean = True
- raise
- finally:
- # Clean up
- if ((not options.no_clean)
- and ((not options.no_install) or options.download_dir)):
- requirement_set.cleanup_files(bundle=self.bundle)
-
- if options.target_dir:
- if not os.path.exists(options.target_dir):
- os.makedirs(options.target_dir)
- lib_dir = distutils_scheme('', home=temp_target_dir)['purelib']
- for item in os.listdir(lib_dir):
- shutil.move(
- os.path.join(lib_dir, item),
- os.path.join(options.target_dir, item),
- )
- shutil.rmtree(temp_target_dir)
- return requirement_set
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/list.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/list.py
deleted file mode 100644
index 3a0330a..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/list.py
+++ /dev/null
@@ -1,183 +0,0 @@
-from pip.basecommand import Command
-from pip.exceptions import DistributionNotFound, BestVersionAlreadyInstalled
-from pip.index import PackageFinder
-from pip.log import logger
-from pip.req import InstallRequirement
-from pip.util import get_installed_distributions, dist_is_editable
-from pip.cmdoptions import make_option_group, index_group
-
-
-class ListCommand(Command):
- """
- List installed packages, including editables.
-
- Packages are listed in a case-insensitive sorted order.
- """
- name = 'list'
- usage = """
- %prog [options]"""
- summary = 'List installed packages.'
-
- def __init__(self, *args, **kw):
- super(ListCommand, self).__init__(*args, **kw)
-
- cmd_opts = self.cmd_opts
-
- cmd_opts.add_option(
- '-o', '--outdated',
- action='store_true',
- default=False,
- help='List outdated packages (excluding editables)')
- cmd_opts.add_option(
- '-u', '--uptodate',
- action='store_true',
- default=False,
- help='List uptodate packages (excluding editables)')
- cmd_opts.add_option(
- '-e', '--editable',
- action='store_true',
- default=False,
- help='List editable projects.')
- cmd_opts.add_option(
- '-l', '--local',
- action='store_true',
- default=False,
- help=('If in a virtualenv that has global access, do not list '
- 'globally-installed packages.'),
- )
-
- cmd_opts.add_option(
- '--pre',
- action='store_true',
- default=False,
- help=("Include pre-release and development versions. By default, "
- "pip only finds stable versions."),
- )
-
- index_opts = make_option_group(index_group, self.parser)
-
- self.parser.insert_option_group(0, index_opts)
- self.parser.insert_option_group(0, cmd_opts)
-
- def _build_package_finder(self, options, index_urls, session):
- """
- Create a package finder appropriate to this list command.
- """
- return PackageFinder(
- find_links=options.find_links,
- index_urls=index_urls,
- allow_external=options.allow_external,
- allow_unverified=options.allow_unverified,
- allow_all_external=options.allow_all_external,
- allow_all_prereleases=options.pre,
- session=session,
- )
-
- def run(self, options, args):
- if options.outdated:
- self.run_outdated(options)
- elif options.uptodate:
- self.run_uptodate(options)
- elif options.editable:
- self.run_editables(options)
- else:
- self.run_listing(options)
-
- def run_outdated(self, options):
- for dist, remote_version_raw, remote_version_parsed in \
- self.find_packages_latests_versions(options):
- if remote_version_parsed > dist.parsed_version:
- logger.notify(
- '%s (Current: %s Latest: %s)' %
- (dist.project_name, dist.version, remote_version_raw)
- )
-
- def find_packages_latests_versions(self, options):
- index_urls = [options.index_url] + options.extra_index_urls
- if options.no_index:
- logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
- index_urls = []
-
- if options.use_mirrors:
- logger.deprecated(
- "1.7",
- "--use-mirrors has been deprecated and will be removed"
- " in the future. Explicit uses of --index-url and/or "
- "--extra-index-url is suggested."
- )
-
- if options.mirrors:
- logger.deprecated(
- "1.7",
- "--mirrors has been deprecated and will be removed in "
- " the future. Explicit uses of --index-url and/or "
- "--extra-index-url is suggested."
- )
- index_urls += options.mirrors
-
- session = self._build_session(options)
-
- finder = self._build_package_finder(options, index_urls, session)
-
- installed_packages = get_installed_distributions(
- local_only=options.local,
- include_editables=False,
- )
- for dist in installed_packages:
- req = InstallRequirement.from_line(dist.key, None)
- try:
- link = finder.find_requirement(req, True)
-
- # If link is None, means installed version is most up-to-date
- if link is None:
- continue
- except DistributionNotFound:
- continue
- except BestVersionAlreadyInstalled:
- remote_version = req.installed_version
- else:
- # It might be a good idea that link or finder had a public
- # method that returned version
- remote_version = finder._link_package_versions(
- link, req.name
- )[0]
- remote_version_raw = remote_version[2]
- remote_version_parsed = remote_version[0]
- yield dist, remote_version_raw, remote_version_parsed
-
- def run_listing(self, options):
- installed_packages = get_installed_distributions(
- local_only=options.local,
- )
- self.output_package_listing(installed_packages)
-
- def run_editables(self, options):
- installed_packages = get_installed_distributions(
- local_only=options.local,
- editables_only=True,
- )
- self.output_package_listing(installed_packages)
-
- def output_package_listing(self, installed_packages):
- installed_packages = sorted(
- installed_packages,
- key=lambda dist: dist.project_name.lower(),
- )
- for dist in installed_packages:
- if dist_is_editable(dist):
- line = '%s (%s, %s)' % (
- dist.project_name,
- dist.version,
- dist.location,
- )
- else:
- line = '%s (%s)' % (dist.project_name, dist.version)
- logger.notify(line)
-
- def run_uptodate(self, options):
- uptodate = []
- for dist, remote_version_raw, remote_version_parsed in \
- self.find_packages_latests_versions(options):
- if dist.parsed_version == remote_version_parsed:
- uptodate.append(dist)
- self.output_package_listing(uptodate)
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/search.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/search.py
deleted file mode 100644
index a26f8b4..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/search.py
+++ /dev/null
@@ -1,146 +0,0 @@
-import sys
-import textwrap
-
-from pip.basecommand import Command, SUCCESS
-from pip.util import get_terminal_size
-from pip.log import logger
-from pip.backwardcompat import xmlrpclib, reduce, cmp
-from pip.exceptions import CommandError
-from pip.status_codes import NO_MATCHES_FOUND
-from pip._vendor import pkg_resources
-from distutils.version import StrictVersion, LooseVersion
-
-
-class SearchCommand(Command):
- """Search for PyPI packages whose name or summary contains <query>."""
- name = 'search'
- usage = """
- %prog [options] <query>"""
- summary = 'Search PyPI for packages.'
-
- def __init__(self, *args, **kw):
- super(SearchCommand, self).__init__(*args, **kw)
- self.cmd_opts.add_option(
- '--index',
- dest='index',
- metavar='URL',
- default='https://pypi.python.org/pypi',
- help='Base URL of Python Package Index (default %default)')
-
- self.parser.insert_option_group(0, self.cmd_opts)
-
- def run(self, options, args):
- if not args:
- raise CommandError('Missing required argument (search query).')
- query = args
- index_url = options.index
-
- pypi_hits = self.search(query, index_url)
- hits = transform_hits(pypi_hits)
-
- terminal_width = None
- if sys.stdout.isatty():
- terminal_width = get_terminal_size()[0]
-
- print_results(hits, terminal_width=terminal_width)
- if pypi_hits:
- return SUCCESS
- return NO_MATCHES_FOUND
-
- def search(self, query, index_url):
- pypi = xmlrpclib.ServerProxy(index_url)
- hits = pypi.search({'name': query, 'summary': query}, 'or')
- return hits
-
-
-def transform_hits(hits):
- """
- The list from pypi is really a list of versions. We want a list of
- packages with the list of versions stored inline. This converts the
- list from pypi into one we can use.
- """
- packages = {}
- for hit in hits:
- name = hit['name']
- summary = hit['summary']
- version = hit['version']
- score = hit['_pypi_ordering']
- if score is None:
- score = 0
-
- if name not in packages.keys():
- packages[name] = {
- 'name': name,
- 'summary': summary,
- 'versions': [version],
- 'score': score,
- }
- else:
- packages[name]['versions'].append(version)
-
- # if this is the highest version, replace summary and score
- if version == highest_version(packages[name]['versions']):
- packages[name]['summary'] = summary
- packages[name]['score'] = score
-
- # each record has a unique name now, so we will convert the dict into a
- # list sorted by score
- package_list = sorted(
- packages.values(),
- key=lambda x: x['score'],
- reverse=True,
- )
- return package_list
-
-
-def print_results(hits, name_column_width=25, terminal_width=None):
- installed_packages = [p.project_name for p in pkg_resources.working_set]
- for hit in hits:
- name = hit['name']
- summary = hit['summary'] or ''
- if terminal_width is not None:
- # wrap and indent summary to fit terminal
- summary = textwrap.wrap(
- summary,
- terminal_width - name_column_width - 5,
- )
- summary = ('\n' + ' ' * (name_column_width + 3)).join(summary)
- line = '%s - %s' % (name.ljust(name_column_width), summary)
- try:
- logger.notify(line)
- if name in installed_packages:
- dist = pkg_resources.get_distribution(name)
- logger.indent += 2
- try:
- latest = highest_version(hit['versions'])
- if dist.version == latest:
- logger.notify('INSTALLED: %s (latest)' % dist.version)
- else:
- logger.notify('INSTALLED: %s' % dist.version)
- logger.notify('LATEST: %s' % latest)
- finally:
- logger.indent -= 2
- except UnicodeEncodeError:
- pass
-
-
-def compare_versions(version1, version2):
- try:
- return cmp(StrictVersion(version1), StrictVersion(version2))
- # in case of abnormal version number, fall back to LooseVersion
- except ValueError:
- pass
- try:
- return cmp(LooseVersion(version1), LooseVersion(version2))
- except TypeError:
- # certain LooseVersion comparions raise due to unorderable types,
- # fallback to string comparison
- return cmp([str(v) for v in LooseVersion(version1).version],
- [str(v) for v in LooseVersion(version2).version])
-
-
-def highest_version(versions):
- return reduce(
- (lambda v1, v2: compare_versions(v1, v2) == 1 and v1 or v2),
- versions,
- )
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py
deleted file mode 100644
index e0d2bc7..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py
+++ /dev/null
@@ -1,87 +0,0 @@
-import os
-
-from pip.basecommand import Command
-from pip.log import logger
-from pip._vendor import pkg_resources
-
-
-class ShowCommand(Command):
- """Show information about one or more installed packages."""
- name = 'show'
- usage = """
- %prog [options] <package> ..."""
- summary = 'Show information about installed packages.'
-
- def __init__(self, *args, **kw):
- super(ShowCommand, self).__init__(*args, **kw)
- self.cmd_opts.add_option(
- '-f', '--files',
- dest='files',
- action='store_true',
- default=False,
- help='Show the full list of installed files for each package.')
-
- self.parser.insert_option_group(0, self.cmd_opts)
-
- def run(self, options, args):
- if not args:
- logger.warn('ERROR: Please provide a package name or names.')
- return
- query = args
-
- results = search_packages_info(query)
- print_results(results, options.files)
-
-
-def search_packages_info(query):
- """
- Gather details from installed distributions. Print distribution name,
- version, location, and installed files. Installed files requires a
- pip generated 'installed-files.txt' in the distributions '.egg-info'
- directory.
- """
- installed = dict(
- [(p.project_name.lower(), p) for p in pkg_resources.working_set])
- query_names = [name.lower() for name in query]
- for dist in [installed[pkg] for pkg in query_names if pkg in installed]:
- package = {
- 'name': dist.project_name,
- 'version': dist.version,
- 'location': dist.location,
- 'requires': [dep.project_name for dep in dist.requires()],
- }
- file_list = None
- if isinstance(dist, pkg_resources.DistInfoDistribution):
- # RECORDs should be part of .dist-info metadatas
- if dist.has_metadata('RECORD'):
- lines = dist.get_metadata_lines('RECORD')
- paths = [l.split(',')[0] for l in lines]
- paths = [os.path.join(dist.location, p) for p in paths]
- file_list = [os.path.relpath(p, dist.egg_info)
- for p in paths]
- else:
- # Otherwise use pip's log for .egg-info's
- if dist.has_metadata('installed-files.txt'):
- file_list = dist.get_metadata_lines('installed-files.txt')
- # use and short-circuit to check for None
- package['files'] = file_list and sorted(file_list)
- yield package
-
-
-def print_results(distributions, list_all_files):
- """
- Print the informations from installed distributions found.
- """
- for dist in distributions:
- logger.notify("---")
- logger.notify("Name: %s" % dist['name'])
- logger.notify("Version: %s" % dist['version'])
- logger.notify("Location: %s" % dist['location'])
- logger.notify("Requires: %s" % ', '.join(dist['requires']))
- if list_all_files:
- logger.notify("Files:")
- if dist['files'] is not None:
- for line in dist['files']:
- logger.notify(" %s" % line.strip())
- else:
- logger.notify("Cannot locate installed-files.txt")
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/uninstall.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/uninstall.py
deleted file mode 100644
index 3d81a30..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/uninstall.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
-from pip.basecommand import Command
-from pip.exceptions import InstallationError
-
-
-class UninstallCommand(Command):
- """
- Uninstall packages.
-
- pip is able to uninstall most installed packages. Known exceptions are:
-
- - Pure distutils packages installed with ``python setup.py install``, which
- leave behind no metadata to determine what files were installed.
- - Script wrappers installed by ``python setup.py develop``.
- """
- name = 'uninstall'
- usage = """
- %prog [options] <package> ...
- %prog [options] -r <requirements file> ..."""
- summary = 'Uninstall packages.'
-
- def __init__(self, *args, **kw):
- super(UninstallCommand, self).__init__(*args, **kw)
- self.cmd_opts.add_option(
- '-r', '--requirement',
- dest='requirements',
- action='append',
- default=[],
- metavar='file',
- help='Uninstall all the packages listed in the given requirements '
- 'file. This option can be used multiple times.',
- )
- self.cmd_opts.add_option(
- '-y', '--yes',
- dest='yes',
- action='store_true',
- help="Don't ask for confirmation of uninstall deletions.")
-
- self.parser.insert_option_group(0, self.cmd_opts)
-
- def run(self, options, args):
- session = self._build_session(options)
-
- requirement_set = RequirementSet(
- build_dir=None,
- src_dir=None,
- download_dir=None,
- session=session,
- )
- for name in args:
- requirement_set.add_requirement(
- InstallRequirement.from_line(name))
- for filename in options.requirements:
- for req in parse_requirements(
- filename,
- options=options,
- session=session):
- requirement_set.add_requirement(req)
- if not requirement_set.has_requirements:
- raise InstallationError(
- 'You must give at least one requirement to %(name)s (see "pip '
- 'help %(name)s")' % dict(name=self.name)
- )
- requirement_set.uninstall(auto_confirm=options.yes)
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/unzip.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/unzip.py
deleted file mode 100644
index ed66ab9..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/unzip.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from pip.commands.zip import ZipCommand
-
-
-class UnzipCommand(ZipCommand):
- """Unzip individual packages."""
- name = 'unzip'
- summary = 'DEPRECATED. Unzip individual packages.'
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/wheel.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/wheel.py
deleted file mode 100644
index 5536816..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/wheel.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import absolute_import
-
-import os
-
-from pip.basecommand import Command
-from pip.index import PackageFinder
-from pip.log import logger
-from pip.exceptions import CommandError, PreviousBuildDirError
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
-from pip.util import normalize_path
-from pip.wheel import WheelBuilder
-from pip import cmdoptions
-
-DEFAULT_WHEEL_DIR = os.path.join(normalize_path(os.curdir), 'wheelhouse')
-
-
-class WheelCommand(Command):
- """
- Build Wheel archives for your requirements and dependencies.
-
- Wheel is a built-package format, and offers the advantage of not
- recompiling your software during every install. For more details, see the
- wheel docs: http://wheel.readthedocs.org/en/latest.
-
- Requirements: setuptools>=0.8, and wheel.
-
- 'pip wheel' uses the bdist_wheel setuptools extension from the wheel
- package to build individual wheels.
-
- """
-
- name = 'wheel'
- usage = """
- %prog [options] <requirement specifier> ...
- %prog [options] -r <requirements file> ...
- %prog [options] <vcs project url> ...
- %prog [options] <local project path> ...
- %prog [options] <archive url/path> ..."""
-
- summary = 'Build wheels from your requirements.'
-
- def __init__(self, *args, **kw):
- super(WheelCommand, self).__init__(*args, **kw)
-
- cmd_opts = self.cmd_opts
-
- cmd_opts.add_option(
- '-w', '--wheel-dir',
- dest='wheel_dir',
- metavar='dir',
- default=DEFAULT_WHEEL_DIR,
- help=("Build wheels into <dir>, where the default is "
- "'<cwd>/wheelhouse'."),
- )
- cmd_opts.add_option(cmdoptions.use_wheel.make())
- cmd_opts.add_option(cmdoptions.no_use_wheel.make())
- cmd_opts.add_option(
- '--build-option',
- dest='build_options',
- metavar='options',
- action='append',
- help="Extra arguments to be supplied to 'setup.py bdist_wheel'.")
- cmd_opts.add_option(cmdoptions.requirements.make())
- cmd_opts.add_option(cmdoptions.download_cache.make())
- cmd_opts.add_option(cmdoptions.no_deps.make())
- cmd_opts.add_option(cmdoptions.build_dir.make())
-
- cmd_opts.add_option(
- '--global-option',
- dest='global_options',
- action='append',
- metavar='options',
- help="Extra global options to be supplied to the setup.py "
- "call before the 'bdist_wheel' command.")
-
- cmd_opts.add_option(
- '--pre',
- action='store_true',
- default=False,
- help=("Include pre-release and development versions. By default, "
- "pip only finds stable versions."),
- )
-
- cmd_opts.add_option(cmdoptions.no_clean.make())
-
- index_opts = cmdoptions.make_option_group(
- cmdoptions.index_group,
- self.parser,
- )
-
- self.parser.insert_option_group(0, index_opts)
- self.parser.insert_option_group(0, cmd_opts)
-
- def run(self, options, args):
-
- # confirm requirements
- try:
- import wheel.bdist_wheel
- # Hack to make flake8 not complain about an unused import
- wheel.bdist_wheel
- except ImportError:
- raise CommandError(
- "'pip wheel' requires the 'wheel' package. To fix this, run: "
- "pip install wheel"
- )
-
- try:
- import pkg_resources
- except ImportError:
- raise CommandError(
- "'pip wheel' requires setuptools >= 0.8 for dist-info support."
- " To fix this, run: pip install --upgrade setuptools"
- )
- else:
- if not hasattr(pkg_resources, 'DistInfoDistribution'):
- raise CommandError(
- "'pip wheel' requires setuptools >= 0.8 for dist-info "
- "support. To fix this, run: pip install --upgrade "
- "setuptools"
- )
-
- index_urls = [options.index_url] + options.extra_index_urls
- if options.no_index:
- logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
- index_urls = []
-
- if options.use_mirrors:
- logger.deprecated(
- "1.7",
- "--use-mirrors has been deprecated and will be removed"
- " in the future. Explicit uses of --index-url and/or "
- "--extra-index-url is suggested."
- )
-
- if options.mirrors:
- logger.deprecated(
- "1.7",
- "--mirrors has been deprecated and will be removed in "
- " the future. Explicit uses of --index-url and/or "
- "--extra-index-url is suggested."
- )
- index_urls += options.mirrors
-
- session = self._build_session(options)
-
- finder = PackageFinder(
- find_links=options.find_links,
- index_urls=index_urls,
- use_wheel=options.use_wheel,
- allow_external=options.allow_external,
- allow_unverified=options.allow_unverified,
- allow_all_external=options.allow_all_external,
- allow_all_prereleases=options.pre,
- session=session,
- )
-
- options.build_dir = os.path.abspath(options.build_dir)
- requirement_set = RequirementSet(
- build_dir=options.build_dir,
- src_dir=None,
- download_dir=None,
- download_cache=options.download_cache,
- ignore_dependencies=options.ignore_dependencies,
- ignore_installed=True,
- session=session,
- wheel_download_dir=options.wheel_dir
- )
-
- # make the wheelhouse
- if not os.path.exists(options.wheel_dir):
- os.makedirs(options.wheel_dir)
-
- # parse args and/or requirements files
- for name in args:
- requirement_set.add_requirement(
- InstallRequirement.from_line(name, None))
-
- for filename in options.requirements:
- for req in parse_requirements(
- filename,
- finder=finder,
- options=options,
- session=session):
- if req.editable:
- logger.notify("ignoring %s" % req.url)
- continue
- requirement_set.add_requirement(req)
-
- # fail if no requirements
- if not requirement_set.has_requirements:
- opts = {'name': self.name}
- msg = ('You must give at least one requirement '
- 'to %(name)s (see "pip help %(name)s")' % opts)
- logger.error(msg)
- return
-
- try:
- # build wheels
- wb = WheelBuilder(
- requirement_set,
- finder,
- options.wheel_dir,
- build_options=options.build_options or [],
- global_options=options.global_options or [],
- )
- wb.build()
- except PreviousBuildDirError:
- options.no_clean = True
- raise
- finally:
- if not options.no_clean:
- requirement_set.cleanup_files()
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py
deleted file mode 100644
index 6b17762..0000000
--- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py
+++ /dev/null
@@ -1,404 +0,0 @@
-import sys
-import re
-import fnmatch
-import os
-import shutil
-import zipfile
-from pip.util import display_path, backup_dir, rmtree
-from pip.log import logger
-from pip.exceptions import InstallationError
-from pip.basecommand import Command
-
-
-class ZipCommand(Command):
- """Zip individual packages."""
- name = 'zip'
- usage = """
- %prog [options] <package> ..."""
- summary = 'DEPRECATED. Zip individual packages.'
-
- def __init__(self, *args, **kw):
- super(ZipCommand, self).__init__(*args, **kw)
- if self.name == 'zip':
- self.cmd_opts.add_option(
- '--unzip',
- action='store_true',
- dest='unzip',
- help='Unzip (rather than zip) a package.')
- else:
- self.cmd_opts.add_option(
- '--zip',
- action='store_false',
- dest='unzip',
- default=True,
- help='Zip (rather than unzip) a package.')
- self.cmd_opts.add_option(
- '--no-pyc',
- action='store_true',
- dest='no_pyc',
- help=(
- 'Do not include .pyc files in zip files (useful on Google App '
- 'Engine).'),
- )
- self.cmd_opts.add_option(
- '-l', '--list',
- action='store_true',
- dest='list',
- help='List the packages available, and their zip status.')
- self.cmd_opts.add_option(
- '--sort-files',
- action='store_true',
- dest='sort_files',
- help=('With --list, sort packages according to how many files they'
- ' contain.'),
- )
- self.cmd_opts.add_option(
- '--path',
- action='append',
- dest='paths',
- help=('Restrict operations to the given paths (may include '
- 'wildcards).'),
- )
- self.cmd_opts.add_option(
- '-n', '--simulate',
- action='store_true',
- help='Do not actually perform the zip/unzip operation.')
-
- self.parser.insert_option_group(0, self.cmd_opts)
-
- def paths(self):
- """All the entries of sys.path, possibly restricted by --path"""
- if not self.select_paths:
- return sys.path
- result = []
- match_any = set()
- for path in sys.path:
- path = os.path.normcase(os.path.abspath(path))
- for match in self.select_paths:
- match = os.path.normcase(os.path.abspath(match))
- if '*' in match:
- if re.search(fnmatch.translate(match + '*'), path):
- result.append(path)
- match_any.add(match)
- break
- else:
- if path.startswith(match):
- result.append(path)
- match_any.add(match)
- break
- else:
- logger.debug("Skipping path %s because it doesn't match %s"
- % (path, ', '.join(self.select_paths)))
- for match in self.select_paths:
- if match not in match_any and '*' not in match:
- result.append(match)
- logger.debug("Adding path %s because it doesn't match "
- "anything already on sys.path" % match)
- return result
-
- def run(self, options, args):
-
- logger.deprecated(
- '1.7',
- "DEPRECATION: 'pip zip' and 'pip unzip` are deprecated, and will "
- "be removed in a future release."
- )
-
- self.select_paths = options.paths
- self.simulate = options.simulate
- if options.list:
- return self.list(options, args)
- if not args:
- raise InstallationError(
- 'You must give at least one package to zip or unzip')
- packages = []
- for arg in args:
- module_name, filename = self.find_package(arg)
- if options.unzip and os.path.isdir(filename):
- raise InstallationError(
- 'The module %s (in %s) is not a zip file; cannot be '
- 'unzipped' % (module_name, filename)
- )
- elif not options.unzip and not os.path.isdir(filename):
- raise InstallationError(
- 'The module %s (in %s) is not a directory; cannot be '
- 'zipped' % (module_name, filename)
- )
- packages.append((module_name, filename))
- last_status = None
- for module_name, filename in packages:
- if options.unzip:
- last_status = self.unzip_package(module_name, filename)
- else:
- last_status = self.zip_package(
- module_name, filename, options.no_pyc
- )
- return last_status
-
- def unzip_package(self, module_name, filename):
- zip_filename = os.path.dirname(filename)
- if (not os.path.isfile(zip_filename)
- and zipfile.is_zipfile(zip_filename)):
- raise InstallationError(
- 'Module %s (in %s) isn\'t located in a zip file in %s'
- % (module_name, filename, zip_filename))
- package_path = os.path.dirname(zip_filename)
- if package_path not in self.paths():
- logger.warn(
- 'Unpacking %s into %s, but %s is not on sys.path'
- % (display_path(zip_filename), display_path(package_path),
- display_path(package_path)))
- logger.notify(
- 'Unzipping %s (in %s)' % (module_name, display_path(zip_filename))
- )
- if self.simulate:
- logger.notify(
- 'Skipping remaining operations because of --simulate'
- )
- return
- logger.indent += 2
- try:
- # FIXME: this should be undoable:
- zip = zipfile.ZipFile(zip_filename)
- to_save = []
- for info in zip.infolist():
- name = info.filename
- if name.startswith(module_name + os.path.sep):
- content = zip.read(name)
- dest = os.path.join(package_path, name)
- if not os.path.exists(os.path.dirname(dest)):
- os.makedirs(os.path.dirname(dest))
- if not content and dest.endswith(os.path.sep):
- if not os.path.exists(dest):
- os.makedirs(dest)
- else:
- f = open(dest, 'wb')
- f.write(content)
- f.close()
- else:
- to_save.append((name, zip.read(name)))
- zip.close()
- if not to_save:
- logger.info(
- 'Removing now-empty zip file %s' %
- display_path(zip_filename)
- )
- os.unlink(zip_filename)
- self.remove_filename_from_pth(zip_filename)
- else:
- logger.info(
- 'Removing entries in %s/ from zip file %s' %
- (module_name, display_path(zip_filename))
- )
- zip = zipfile.ZipFile(zip_filename, 'w')
- for name, content in to_save:
- zip.writestr(name, content)
- zip.close()
- finally:
- logger.indent -= 2
-
- def zip_package(self, module_name, filename, no_pyc):
- orig_filename = filename
- logger.notify('Zip %s (in %s)' % (module_name, display_path(filename)))
- logger.indent += 2
- if filename.endswith('.egg'):
- dest_filename = filename
- else:
- dest_filename = filename + '.zip'
- try:
- # FIXME: I think this needs to be undoable:
- if filename == dest_filename:
- filename = backup_dir(orig_filename)
- logger.notify(
- 'Moving %s aside to %s' % (orig_filename, filename)
- )
- if not self.simulate:
- shutil.move(orig_filename, filename)
- try:
- logger.info(
- 'Creating zip file in %s' % display_path(dest_filename)
- )
- if not self.simulate:
- zip = zipfile.ZipFile(dest_filename, 'w')
- zip.writestr(module_name + '/', '')
- for dirpath, dirnames, filenames in os.walk(filename):
- if no_pyc:
- filenames = [f for f in filenames
- if not f.lower().endswith('.pyc')]
- for fns, is_dir in [
- (dirnames, True), (filenames, False)]:
- for fn in fns:
- full = os.path.join(dirpath, fn)
- dest = os.path.join(
- module_name,
- dirpath[len(filename):].lstrip(
- os.path.sep
- ),
- fn,
- )
- if is_dir:
- zip.writestr(dest + '/', '')
- else:
- zip.write(full, dest)
- zip.close()
- logger.info(
- 'Removing old directory %s' % display_path(filename)
- )
- if not self.simulate:
- rmtree(filename)
- except:
- # FIXME: need to do an undo here
- raise
- # FIXME: should also be undone:
- self.add_filename_to_pth(dest_filename)
- finally:
- logger.indent -= 2
-
- def remove_filename_from_pth(self, filename):
- for pth in self.pth_files():
- f = open(pth, 'r')
- lines = f.readlines()
- f.close()
- new_lines = [
- l for l in lines if l.strip() != filename]
- if lines != new_lines:
- logger.info('Removing reference to %s from .pth file %s'
- % (display_path(filename), display_path(pth)))
- if not [line for line in new_lines if line]:
- logger.info(
- '%s file would be empty: deleting' % display_path(pth)
- )
- if not self.simulate:
- os.unlink(pth)
- else:
- if not self.simulate:
- f = open(pth, 'wb')
- f.writelines(new_lines)
- f.close()
- return
- logger.warn(
- 'Cannot find a reference to %s in any .pth file' %
- display_path(filename)
- )
-
- def add_filename_to_pth(self, filename):
- path = os.path.dirname(filename)
- dest = filename + '.pth'
- if path not in self.paths():
- logger.warn(
- 'Adding .pth file %s, but it is not on sys.path' %
- display_path(dest)
- )
- if not self.simulate:
- if os.path.exists(dest):
- f = open(dest)
- lines = f.readlines()
- f.close()
- if lines and not lines[-1].endswith('\n'):
- lines[-1] += '\n'
- lines.append(filename + '\n')
- else:
- lines = [filename + '\n']
- f = open(dest, 'wb')
- f.writelines(lines)
- f.close()
-
- def pth_files(self):
- for path in self.paths():
- if not os.path.exists(path) or not os.path.isdir(path):
- continue
- for filename in os.listdir(path):
- if filename.endswith('.pth'):
- yield os.path.join(path, filename)
-
- def find_package(self, package):
- for path in self.paths():
- full = os.path.join(path, package)
- if os.path.exists(full):
- return package, full
- if not os.path.isdir(path) and zipfile.is_zipfile(path):
- zip = zipfile.ZipFile(path, 'r')
- try:
- zip.read(os.path.join(package, '__init__.py'))
- except KeyError:
- pass
- else:
- zip.close()
- return package, full
- zip.close()
- # FIXME: need special error for package.py case:
- raise InstallationError(
- 'No package with the name %s found' % package)
-
- def list(self, options, args):
- if args:
- raise InstallationError(
- 'You cannot give an argument with --list')
- for path in sorted(self.paths()):
- if not os.path.exists(path):
- continue
- basename = os.path.basename(path.rstrip(os.path.sep))
- if os.path.isfile(path) and zipfile.is_zipfile(path):
- if os.path.dirname(path) not in self.paths():
- logger.notify('Zipped egg: %s' % display_path(path))
- continue
- if (basename != 'site-packages'
- and basename != 'dist-packages'
- and not path.replace('\\', '/').endswith('lib/python')):
- continue
- logger.notify('In %s:' % display_path(path))
- logger.indent += 2
- zipped = []
- unzipped = []
- try:
- for filename in sorted(os.listdir(path)):
- ext = os.path.splitext(filename)[1].lower()
- if ext in ('.pth', '.egg-info', '.egg-link'):
- continue
- if ext == '.py':
- logger.info(
- 'Not displaying %s: not a package' %
- display_path(filename)
- )
- continue
- full = os.path.join(path, filename)
- if os.path.isdir(full):
- unzipped.append((filename, self.count_package(full)))
- elif zipfile.is_zipfile(full):
- zipped.append(filename)
- else:
- logger.info(
- 'Unknown file: %s' % display_path(filename)
- )
- if zipped:
- logger.notify('Zipped packages:')
- logger.indent += 2
- try:
- for filename in zipped:
- logger.notify(filename)
- finally:
- logger.indent -= 2
- else:
- logger.notify('No zipped packages.')
- if unzipped:
- if options.sort_files:
- unzipped.sort(key=lambda x: -x[1])
- logger.notify('Unzipped packages:')
- logger.indent += 2
- try:
- for filename, count in unzipped:
- logger.notify('%s (%i files)' % (filename, count))
- finally:
- logger.indent -= 2
- else:
- logger.notify('No unzipped packages.')
- finally:
- logger.indent -= 2
-
- def count_package(self, path):
- total = 0
- for dirpath, dirnames, filenames in os.walk(path):
- filenames = [f for f in filenames
- if not f.lower().endswith('.pyc')]
- total += len(filenames)
- return total