Mercurial > repos > guerler > hhblits
comparison lib/python3.8/site-packages/pip/_internal/commands/debug.py @ 0:9e54283cc701 draft
"planemo upload commit d12c32a45bcd441307e632fca6d9af7d60289d44"
| author | guerler |
|---|---|
| date | Mon, 27 Jul 2020 03:47:31 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:9e54283cc701 |
|---|---|
| 1 # The following comment should be removed at some point in the future. | |
| 2 # mypy: disallow-untyped-defs=False | |
| 3 | |
| 4 from __future__ import absolute_import | |
| 5 | |
| 6 import locale | |
| 7 import logging | |
| 8 import os | |
| 9 import sys | |
| 10 | |
| 11 from pip._vendor.certifi import where | |
| 12 | |
| 13 from pip._internal.cli import cmdoptions | |
| 14 from pip._internal.cli.base_command import Command | |
| 15 from pip._internal.cli.cmdoptions import make_target_python | |
| 16 from pip._internal.cli.status_codes import SUCCESS | |
| 17 from pip._internal.utils.logging import indent_log | |
| 18 from pip._internal.utils.misc import get_pip_version | |
| 19 from pip._internal.utils.typing import MYPY_CHECK_RUNNING | |
| 20 | |
| 21 if MYPY_CHECK_RUNNING: | |
| 22 from typing import Any, List, Optional | |
| 23 from optparse import Values | |
| 24 | |
| 25 logger = logging.getLogger(__name__) | |
| 26 | |
| 27 | |
| 28 def show_value(name, value): | |
| 29 # type: (str, Optional[str]) -> None | |
| 30 logger.info('{}: {}'.format(name, value)) | |
| 31 | |
| 32 | |
| 33 def show_sys_implementation(): | |
| 34 # type: () -> None | |
| 35 logger.info('sys.implementation:') | |
| 36 if hasattr(sys, 'implementation'): | |
| 37 implementation = sys.implementation # type: ignore | |
| 38 implementation_name = implementation.name | |
| 39 else: | |
| 40 implementation_name = '' | |
| 41 | |
| 42 with indent_log(): | |
| 43 show_value('name', implementation_name) | |
| 44 | |
| 45 | |
| 46 def show_tags(options): | |
| 47 # type: (Values) -> None | |
| 48 tag_limit = 10 | |
| 49 | |
| 50 target_python = make_target_python(options) | |
| 51 tags = target_python.get_tags() | |
| 52 | |
| 53 # Display the target options that were explicitly provided. | |
| 54 formatted_target = target_python.format_given() | |
| 55 suffix = '' | |
| 56 if formatted_target: | |
| 57 suffix = ' (target: {})'.format(formatted_target) | |
| 58 | |
| 59 msg = 'Compatible tags: {}{}'.format(len(tags), suffix) | |
| 60 logger.info(msg) | |
| 61 | |
| 62 if options.verbose < 1 and len(tags) > tag_limit: | |
| 63 tags_limited = True | |
| 64 tags = tags[:tag_limit] | |
| 65 else: | |
| 66 tags_limited = False | |
| 67 | |
| 68 with indent_log(): | |
| 69 for tag in tags: | |
| 70 logger.info(str(tag)) | |
| 71 | |
| 72 if tags_limited: | |
| 73 msg = ( | |
| 74 '...\n' | |
| 75 '[First {tag_limit} tags shown. Pass --verbose to show all.]' | |
| 76 ).format(tag_limit=tag_limit) | |
| 77 logger.info(msg) | |
| 78 | |
| 79 | |
| 80 def ca_bundle_info(config): | |
| 81 levels = set() | |
| 82 for key, value in config.items(): | |
| 83 levels.add(key.split('.')[0]) | |
| 84 | |
| 85 if not levels: | |
| 86 return "Not specified" | |
| 87 | |
| 88 levels_that_override_global = ['install', 'wheel', 'download'] | |
| 89 global_overriding_level = [ | |
| 90 level for level in levels if level in levels_that_override_global | |
| 91 ] | |
| 92 if not global_overriding_level: | |
| 93 return 'global' | |
| 94 | |
| 95 levels.remove('global') | |
| 96 return ", ".join(levels) | |
| 97 | |
| 98 | |
| 99 class DebugCommand(Command): | |
| 100 """ | |
| 101 Display debug information. | |
| 102 """ | |
| 103 | |
| 104 usage = """ | |
| 105 %prog <options>""" | |
| 106 ignore_require_venv = True | |
| 107 | |
| 108 def __init__(self, *args, **kw): | |
| 109 super(DebugCommand, self).__init__(*args, **kw) | |
| 110 | |
| 111 cmd_opts = self.cmd_opts | |
| 112 cmdoptions.add_target_python_options(cmd_opts) | |
| 113 self.parser.insert_option_group(0, cmd_opts) | |
| 114 self.parser.config.load() | |
| 115 | |
| 116 def run(self, options, args): | |
| 117 # type: (Values, List[Any]) -> int | |
| 118 logger.warning( | |
| 119 "This command is only meant for debugging. " | |
| 120 "Do not use this with automation for parsing and getting these " | |
| 121 "details, since the output and options of this command may " | |
| 122 "change without notice." | |
| 123 ) | |
| 124 show_value('pip version', get_pip_version()) | |
| 125 show_value('sys.version', sys.version) | |
| 126 show_value('sys.executable', sys.executable) | |
| 127 show_value('sys.getdefaultencoding', sys.getdefaultencoding()) | |
| 128 show_value('sys.getfilesystemencoding', sys.getfilesystemencoding()) | |
| 129 show_value( | |
| 130 'locale.getpreferredencoding', locale.getpreferredencoding(), | |
| 131 ) | |
| 132 show_value('sys.platform', sys.platform) | |
| 133 show_sys_implementation() | |
| 134 | |
| 135 show_value("'cert' config value", ca_bundle_info(self.parser.config)) | |
| 136 show_value("REQUESTS_CA_BUNDLE", os.environ.get('REQUESTS_CA_BUNDLE')) | |
| 137 show_value("CURL_CA_BUNDLE", os.environ.get('CURL_CA_BUNDLE')) | |
| 138 show_value("pip._vendor.certifi.where()", where()) | |
| 139 | |
| 140 show_tags(options) | |
| 141 | |
| 142 return SUCCESS |
