Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/pip/_internal/commands/__init__.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 """ | |
2 Package containing all pip commands | |
3 """ | |
4 | |
5 import importlib | |
6 from collections import OrderedDict, namedtuple | |
7 | |
8 from pip._internal.utils.typing import MYPY_CHECK_RUNNING | |
9 | |
10 if MYPY_CHECK_RUNNING: | |
11 from typing import Any, Optional | |
12 | |
13 from pip._internal.cli.base_command import Command | |
14 | |
15 | |
16 CommandInfo = namedtuple('CommandInfo', 'module_path, class_name, summary') | |
17 | |
18 # The ordering matters for help display. | |
19 # Also, even though the module path starts with the same | |
20 # "pip._internal.commands" prefix in each case, we include the full path | |
21 # because it makes testing easier (specifically when modifying commands_dict | |
22 # in test setup / teardown by adding info for a FakeCommand class defined | |
23 # in a test-related module). | |
24 # Finally, we need to pass an iterable of pairs here rather than a dict | |
25 # so that the ordering won't be lost when using Python 2.7. | |
26 commands_dict = OrderedDict([ | |
27 ('install', CommandInfo( | |
28 'pip._internal.commands.install', 'InstallCommand', | |
29 'Install packages.', | |
30 )), | |
31 ('download', CommandInfo( | |
32 'pip._internal.commands.download', 'DownloadCommand', | |
33 'Download packages.', | |
34 )), | |
35 ('uninstall', CommandInfo( | |
36 'pip._internal.commands.uninstall', 'UninstallCommand', | |
37 'Uninstall packages.', | |
38 )), | |
39 ('freeze', CommandInfo( | |
40 'pip._internal.commands.freeze', 'FreezeCommand', | |
41 'Output installed packages in requirements format.', | |
42 )), | |
43 ('list', CommandInfo( | |
44 'pip._internal.commands.list', 'ListCommand', | |
45 'List installed packages.', | |
46 )), | |
47 ('show', CommandInfo( | |
48 'pip._internal.commands.show', 'ShowCommand', | |
49 'Show information about installed packages.', | |
50 )), | |
51 ('check', CommandInfo( | |
52 'pip._internal.commands.check', 'CheckCommand', | |
53 'Verify installed packages have compatible dependencies.', | |
54 )), | |
55 ('config', CommandInfo( | |
56 'pip._internal.commands.configuration', 'ConfigurationCommand', | |
57 'Manage local and global configuration.', | |
58 )), | |
59 ('search', CommandInfo( | |
60 'pip._internal.commands.search', 'SearchCommand', | |
61 'Search PyPI for packages.', | |
62 )), | |
63 ('cache', CommandInfo( | |
64 'pip._internal.commands.cache', 'CacheCommand', | |
65 "Inspect and manage pip's wheel cache.", | |
66 )), | |
67 ('wheel', CommandInfo( | |
68 'pip._internal.commands.wheel', 'WheelCommand', | |
69 'Build wheels from your requirements.', | |
70 )), | |
71 ('hash', CommandInfo( | |
72 'pip._internal.commands.hash', 'HashCommand', | |
73 'Compute hashes of package archives.', | |
74 )), | |
75 ('completion', CommandInfo( | |
76 'pip._internal.commands.completion', 'CompletionCommand', | |
77 'A helper command used for command completion.', | |
78 )), | |
79 ('debug', CommandInfo( | |
80 'pip._internal.commands.debug', 'DebugCommand', | |
81 'Show information useful for debugging.', | |
82 )), | |
83 ('help', CommandInfo( | |
84 'pip._internal.commands.help', 'HelpCommand', | |
85 'Show help for commands.', | |
86 )), | |
87 ]) # type: OrderedDict[str, CommandInfo] | |
88 | |
89 | |
90 def create_command(name, **kwargs): | |
91 # type: (str, **Any) -> Command | |
92 """ | |
93 Create an instance of the Command class with the given name. | |
94 """ | |
95 module_path, class_name, summary = commands_dict[name] | |
96 module = importlib.import_module(module_path) | |
97 command_class = getattr(module, class_name) | |
98 command = command_class(name=name, summary=summary, **kwargs) | |
99 | |
100 return command | |
101 | |
102 | |
103 def get_similar_commands(name): | |
104 # type: (str) -> Optional[str] | |
105 """Command name auto-correct.""" | |
106 from difflib import get_close_matches | |
107 | |
108 name = name.lower() | |
109 | |
110 close_commands = get_close_matches(name, commands_dict.keys()) | |
111 | |
112 if close_commands: | |
113 return close_commands[0] | |
114 else: | |
115 return None |