Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
镜像
Python_Packaging_Authority
pip
提交
d67acca7
P
pip
项目概览
镜像
/
Python_Packaging_Authority
/
pip
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pip
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d67acca7
编写于
6月 23, 2019
作者:
C
Chris Jerdonek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add "pip debug" command.
上级
a3606495
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
156 addition
and
0 deletion
+156
-0
news/6638.feature
news/6638.feature
+2
-0
src/pip/_internal/commands/__init__.py
src/pip/_internal/commands/__init__.py
+2
-0
src/pip/_internal/commands/debug.py
src/pip/_internal/commands/debug.py
+102
-0
tests/functional/test_debug.py
tests/functional/test_debug.py
+50
-0
未找到文件。
news/6638.feature
0 → 100644
浏览文件 @
d67acca7
Add
a
new command ``pip debug`` that can display e.g. the list of compatible
tags
for
the
current
Python.
src/pip/_internal/commands/__init__.py
浏览文件 @
d67acca7
...
...
@@ -5,6 +5,7 @@ from __future__ import absolute_import
from
pip._internal.commands.completion
import
CompletionCommand
from
pip._internal.commands.configuration
import
ConfigurationCommand
from
pip._internal.commands.debug
import
DebugCommand
from
pip._internal.commands.download
import
DownloadCommand
from
pip._internal.commands.freeze
import
FreezeCommand
from
pip._internal.commands.hash
import
HashCommand
...
...
@@ -36,6 +37,7 @@ commands_order = [
WheelCommand
,
HashCommand
,
CompletionCommand
,
DebugCommand
,
HelpCommand
,
]
# type: List[Type[Command]]
...
...
src/pip/_internal/commands/debug.py
0 → 100644
浏览文件 @
d67acca7
from
__future__
import
absolute_import
import
logging
import
sys
from
pip._internal.cli
import
cmdoptions
from
pip._internal.cli.base_command
import
Command
from
pip._internal.cli.cmdoptions
import
make_target_python
from
pip._internal.cli.status_codes
import
SUCCESS
from
pip._internal.utils.logging
import
indent_log
from
pip._internal.utils.misc
import
get_pip_version
from
pip._internal.utils.typing
import
MYPY_CHECK_RUNNING
from
pip._internal.wheel
import
format_tag
if
MYPY_CHECK_RUNNING
:
from
typing
import
Any
,
List
from
optparse
import
Values
logger
=
logging
.
getLogger
(
__name__
)
def
show_value
(
name
,
value
):
# type: (str, str) -> None
logger
.
info
(
'{}: {}'
.
format
(
name
,
value
))
def
show_sys_implementation
():
# type: () -> None
logger
.
info
(
'sys.implementation:'
)
if
hasattr
(
sys
,
'implementation'
):
implementation
=
sys
.
implementation
# type: ignore
implementation_name
=
implementation
.
name
else
:
implementation_name
=
''
with
indent_log
():
show_value
(
'name'
,
implementation_name
)
def
show_tags
(
options
):
# type: (Values) -> None
tag_limit
=
10
target_python
=
make_target_python
(
options
)
tags
=
target_python
.
get_tags
()
# Display the target options that were explicitly provided.
formatted_target
=
target_python
.
format_given
()
suffix
=
''
if
formatted_target
:
suffix
=
' (target: {})'
.
format
(
formatted_target
)
msg
=
'Compatible tags: {}{}'
.
format
(
len
(
tags
),
suffix
)
logger
.
info
(
msg
)
if
options
.
verbose
<
1
and
len
(
tags
)
>
tag_limit
:
tags_limited
=
True
tags
=
tags
[:
tag_limit
]
else
:
tags_limited
=
False
with
indent_log
():
for
tag
in
tags
:
logger
.
info
(
format_tag
(
tag
))
if
tags_limited
:
msg
=
(
'...
\n
'
'[First {tag_limit} tags shown. Pass --verbose to show all.]'
).
format
(
tag_limit
=
tag_limit
)
logger
.
info
(
msg
)
class
DebugCommand
(
Command
):
"""
Display debug information.
"""
name
=
'debug'
usage
=
"""
%prog <options>"""
summary
=
'Show information useful for debugging.'
ignore_require_venv
=
True
def
__init__
(
self
,
*
args
,
**
kw
):
super
(
DebugCommand
,
self
).
__init__
(
*
args
,
**
kw
)
cmd_opts
=
self
.
cmd_opts
cmdoptions
.
add_target_python_options
(
cmd_opts
)
self
.
parser
.
insert_option_group
(
0
,
cmd_opts
)
def
run
(
self
,
options
,
args
):
# type: (Values, List[Any]) -> int
show_value
(
'pip version'
,
get_pip_version
())
show_value
(
'sys.version'
,
sys
.
version
)
show_value
(
'sys.executable'
,
sys
.
executable
)
show_value
(
'sys.platform'
,
sys
.
platform
)
show_sys_implementation
()
show_tags
(
options
)
return
SUCCESS
tests/functional/test_debug.py
0 → 100644
浏览文件 @
d67acca7
import
pytest
from
pip._internal
import
pep425tags
@
pytest
.
mark
.
parametrize
(
'args'
,
[
[],
[
'--verbose'
],
]
)
def
test_debug
(
script
,
args
):
"""
Check simple option cases.
"""
args
=
[
'debug'
]
+
args
result
=
script
.
pip
(
*
args
)
stdout
=
result
.
stdout
assert
'sys.executable: '
in
stdout
assert
'sys.platform: '
in
stdout
assert
'sys.implementation:'
in
stdout
tags
=
pep425tags
.
get_supported
()
expected_tag_header
=
'Compatible tags: {}'
.
format
(
len
(
tags
))
assert
expected_tag_header
in
stdout
show_verbose_note
=
'--verbose'
not
in
args
assert
(
'...
\n
[First 10 tags shown. Pass --verbose to show all.]'
in
stdout
)
==
show_verbose_note
@
pytest
.
mark
.
parametrize
(
'args, expected'
,
[
([
'--python-version'
,
'3.7'
],
"(target: version_info='3.7')"
),
]
)
def
test_debug__target_options
(
script
,
args
,
expected
):
"""
Check passing target-related options.
"""
args
=
[
'debug'
]
+
args
result
=
script
.
pip
(
*
args
)
stdout
=
result
.
stdout
assert
'Compatible tags: '
in
stdout
assert
expected
in
stdout
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录