| Viewing file:  freeze.py (3.37 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
from __future__ import absolute_import
 import sys
 
 from pip._internal.cache import WheelCache
 from pip._internal.cli import cmdoptions
 from pip._internal.cli.base_command import Command
 from pip._internal.cli.status_codes import SUCCESS
 from pip._internal.models.format_control import FormatControl
 from pip._internal.operations.freeze import freeze
 from pip._internal.utils.compat import stdlib_pkgs
 from pip._internal.utils.typing import MYPY_CHECK_RUNNING
 
 DEV_PKGS = {'pip', 'setuptools', 'distribute', 'wheel'}
 
 if MYPY_CHECK_RUNNING:
 from optparse import Values
 from typing import List
 
 
 class FreezeCommand(Command):
 """
 Output installed packages in requirements format.
 
 packages are listed in a case-insensitive sorted order.
 """
 
 usage = """
 %prog [options]"""
 log_streams = ("ext://sys.stderr", "ext://sys.stderr")
 
 def add_options(self):
 # type: () -> None
 self.cmd_opts.add_option(
 '-r', '--requirement',
 dest='requirements',
 action='append',
 default=[],
 metavar='file',
 help="Use the order in the given requirements file and its "
 "comments when generating output. This option can be "
 "used multiple times.")
 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.cmd_opts.add_option(
 '--user',
 dest='user',
 action='store_true',
 default=False,
 help='Only output packages installed in user-site.')
 self.cmd_opts.add_option(cmdoptions.list_path())
 self.cmd_opts.add_option(
 '--all',
 dest='freeze_all',
 action='store_true',
 help='Do not skip these packages in the output:'
 ' {}'.format(', '.join(DEV_PKGS)))
 self.cmd_opts.add_option(
 '--exclude-editable',
 dest='exclude_editable',
 action='store_true',
 help='Exclude editable package from output.')
 
 self.parser.insert_option_group(0, self.cmd_opts)
 
 def run(self, options, args):
 # type: (Values, List[str]) -> int
 format_control = FormatControl(set(), set())
 wheel_cache = WheelCache(options.cache_dir, format_control)
 skip = set(stdlib_pkgs)
 if not options.freeze_all:
 skip.update(DEV_PKGS)
 
 cmdoptions.check_list_path_option(options)
 
 freeze_kwargs = dict(
 requirement=options.requirements,
 find_links=options.find_links,
 local_only=options.local,
 user_only=options.user,
 paths=options.path,
 isolated=options.isolated_mode,
 wheel_cache=wheel_cache,
 skip=skip,
 exclude_editable=options.exclude_editable,
 )
 
 for line in freeze(**freeze_kwargs):
 sys.stdout.write(line + '\n')
 return SUCCESS
 
 |