| Viewing file:  __init__.py (3.65 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
"""Package containing all pip commands
 """
 
 import importlib
 from collections import namedtuple
 from typing import Any, Dict, Optional
 
 from pip._internal.cli.base_command import Command
 
 CommandInfo = namedtuple("CommandInfo", "module_path, class_name, summary")
 
 # This dictionary does a bunch of heavy lifting for help output:
 # - Enables avoiding additional (costly) imports for presenting `--help`.
 # - The ordering matters for help display.
 #
 # Even though the module path starts with the same "pip._internal.commands"
 # prefix, the full path makes testing easier (specifically when modifying
 # `commands_dict` in test setup / teardown).
 commands_dict: Dict[str, CommandInfo] = {
 "install": CommandInfo(
 "pip._internal.commands.install",
 "InstallCommand",
 "Install packages.",
 ),
 "download": CommandInfo(
 "pip._internal.commands.download",
 "DownloadCommand",
 "Download packages.",
 ),
 "uninstall": CommandInfo(
 "pip._internal.commands.uninstall",
 "UninstallCommand",
 "Uninstall packages.",
 ),
 "freeze": CommandInfo(
 "pip._internal.commands.freeze",
 "FreezeCommand",
 "Output installed packages in requirements format.",
 ),
 "list": CommandInfo(
 "pip._internal.commands.list",
 "ListCommand",
 "List installed packages.",
 ),
 "show": CommandInfo(
 "pip._internal.commands.show",
 "ShowCommand",
 "Show information about installed packages.",
 ),
 "check": CommandInfo(
 "pip._internal.commands.check",
 "CheckCommand",
 "Verify installed packages have compatible dependencies.",
 ),
 "config": CommandInfo(
 "pip._internal.commands.configuration",
 "ConfigurationCommand",
 "Manage local and global configuration.",
 ),
 "search": CommandInfo(
 "pip._internal.commands.search",
 "SearchCommand",
 "Search PyPI for packages.",
 ),
 "cache": CommandInfo(
 "pip._internal.commands.cache",
 "CacheCommand",
 "Inspect and manage pip's wheel cache.",
 ),
 "index": CommandInfo(
 "pip._internal.commands.index",
 "IndexCommand",
 "Inspect information available from package indexes.",
 ),
 "wheel": CommandInfo(
 "pip._internal.commands.wheel",
 "WheelCommand",
 "Build wheels from your requirements.",
 ),
 "hash": CommandInfo(
 "pip._internal.commands.hash",
 "HashCommand",
 "Compute hashes of package archives.",
 ),
 "completion": CommandInfo(
 "pip._internal.commands.completion",
 "CompletionCommand",
 "A helper command used for command completion.",
 ),
 "debug": CommandInfo(
 "pip._internal.commands.debug",
 "DebugCommand",
 "Show information useful for debugging.",
 ),
 "help": CommandInfo(
 "pip._internal.commands.help",
 "HelpCommand",
 "Show help for commands.",
 ),
 }
 
 
 def create_command(name: str, **kwargs: Any) -> Command:
 """
 Create an instance of the Command class with the given name.
 """
 module_path, class_name, summary = commands_dict[name]
 module = importlib.import_module(module_path)
 command_class = getattr(module, class_name)
 command = command_class(name=name, summary=summary, **kwargs)
 
 return command
 
 
 def get_similar_commands(name: str) -> Optional[str]:
 """Command name auto-correct."""
 from difflib import get_close_matches
 
 name = name.lower()
 
 close_commands = get_close_matches(name, commands_dict.keys())
 
 if close_commands:
 return close_commands[0]
 else:
 return None
 
 |