Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/pip/_internal/commands/debug.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:d30785e31577 | 1:56ad4e20f292 |
---|---|
1 from __future__ import absolute_import | |
2 | |
3 import locale | |
4 import logging | |
5 import sys | |
6 | |
7 from pip._internal.cli import cmdoptions | |
8 from pip._internal.cli.base_command import Command | |
9 from pip._internal.cli.cmdoptions import make_target_python | |
10 from pip._internal.cli.status_codes import SUCCESS | |
11 from pip._internal.utils.logging import indent_log | |
12 from pip._internal.utils.misc import get_pip_version | |
13 from pip._internal.utils.typing import MYPY_CHECK_RUNNING | |
14 from pip._internal.wheel import format_tag | |
15 | |
16 if MYPY_CHECK_RUNNING: | |
17 from typing import Any, List | |
18 from optparse import Values | |
19 | |
20 logger = logging.getLogger(__name__) | |
21 | |
22 | |
23 def show_value(name, value): | |
24 # type: (str, str) -> None | |
25 logger.info('{}: {}'.format(name, value)) | |
26 | |
27 | |
28 def show_sys_implementation(): | |
29 # type: () -> None | |
30 logger.info('sys.implementation:') | |
31 if hasattr(sys, 'implementation'): | |
32 implementation = sys.implementation # type: ignore | |
33 implementation_name = implementation.name | |
34 else: | |
35 implementation_name = '' | |
36 | |
37 with indent_log(): | |
38 show_value('name', implementation_name) | |
39 | |
40 | |
41 def show_tags(options): | |
42 # type: (Values) -> None | |
43 tag_limit = 10 | |
44 | |
45 target_python = make_target_python(options) | |
46 tags = target_python.get_tags() | |
47 | |
48 # Display the target options that were explicitly provided. | |
49 formatted_target = target_python.format_given() | |
50 suffix = '' | |
51 if formatted_target: | |
52 suffix = ' (target: {})'.format(formatted_target) | |
53 | |
54 msg = 'Compatible tags: {}{}'.format(len(tags), suffix) | |
55 logger.info(msg) | |
56 | |
57 if options.verbose < 1 and len(tags) > tag_limit: | |
58 tags_limited = True | |
59 tags = tags[:tag_limit] | |
60 else: | |
61 tags_limited = False | |
62 | |
63 with indent_log(): | |
64 for tag in tags: | |
65 logger.info(format_tag(tag)) | |
66 | |
67 if tags_limited: | |
68 msg = ( | |
69 '...\n' | |
70 '[First {tag_limit} tags shown. Pass --verbose to show all.]' | |
71 ).format(tag_limit=tag_limit) | |
72 logger.info(msg) | |
73 | |
74 | |
75 class DebugCommand(Command): | |
76 """ | |
77 Display debug information. | |
78 """ | |
79 | |
80 name = 'debug' | |
81 usage = """ | |
82 %prog <options>""" | |
83 summary = 'Show information useful for debugging.' | |
84 ignore_require_venv = True | |
85 | |
86 def __init__(self, *args, **kw): | |
87 super(DebugCommand, self).__init__(*args, **kw) | |
88 | |
89 cmd_opts = self.cmd_opts | |
90 cmdoptions.add_target_python_options(cmd_opts) | |
91 self.parser.insert_option_group(0, cmd_opts) | |
92 | |
93 def run(self, options, args): | |
94 # type: (Values, List[Any]) -> int | |
95 logger.warning( | |
96 "This command is only meant for debugging. " | |
97 "Do not use this with automation for parsing and getting these " | |
98 "details, since the output and options of this command may " | |
99 "change without notice." | |
100 ) | |
101 show_value('pip version', get_pip_version()) | |
102 show_value('sys.version', sys.version) | |
103 show_value('sys.executable', sys.executable) | |
104 show_value('sys.getdefaultencoding', sys.getdefaultencoding()) | |
105 show_value('sys.getfilesystemencoding', sys.getfilesystemencoding()) | |
106 show_value( | |
107 'locale.getpreferredencoding', locale.getpreferredencoding(), | |
108 ) | |
109 show_value('sys.platform', sys.platform) | |
110 show_sys_implementation() | |
111 | |
112 show_tags(options) | |
113 | |
114 return SUCCESS |