Spaces:
Runtime error
Runtime error
import sys | |
from optparse import Values | |
from typing import List | |
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.operations.freeze import freeze | |
from pip._internal.utils.compat import stdlib_pkgs | |
DEV_PKGS = {'pip', 'setuptools', 'distribute', 'wheel'} | |
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) -> 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( | |
'-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.cmd_opts.add_option(cmdoptions.list_exclude()) | |
self.parser.insert_option_group(0, self.cmd_opts) | |
def run(self, options: Values, args: List[str]) -> int: | |
skip = set(stdlib_pkgs) | |
if not options.freeze_all: | |
skip.update(DEV_PKGS) | |
if options.excludes: | |
skip.update(options.excludes) | |
cmdoptions.check_list_path_option(options) | |
for line in freeze( | |
requirement=options.requirements, | |
local_only=options.local, | |
user_only=options.user, | |
paths=options.path, | |
isolated=options.isolated_mode, | |
skip=skip, | |
exclude_editable=options.exclude_editable, | |
): | |
sys.stdout.write(line + '\n') | |
return SUCCESS | |