mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Fix crash when sys.stdin
is None
(#7118)
This commit is contained in:
commit
e6f69fadd8
5 changed files with 27 additions and 2 deletions
1
news/7118.bugfix
Normal file
1
news/7118.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.
|
1
news/7119.bugfix
Normal file
1
news/7119.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.
|
|
@ -864,3 +864,10 @@ def protect_pip_from_modification_on_windows(modifying_pip):
|
|||
'To modify pip, please run the following command:\n{}'
|
||||
.format(" ".join(new_command))
|
||||
)
|
||||
|
||||
|
||||
def is_console_interactive():
|
||||
# type: () -> bool
|
||||
"""Is this console interactive?
|
||||
"""
|
||||
return sys.stdin is not None and sys.stdin.isatty()
|
||||
|
|
|
@ -6,11 +6,11 @@ from __future__ import absolute_import
|
|||
import logging
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
from pip._internal.utils.logging import indent_log
|
||||
from pip._internal.utils.misc import (
|
||||
display_path,
|
||||
is_console_interactive,
|
||||
rmtree,
|
||||
split_auth_from_netloc,
|
||||
)
|
||||
|
@ -188,7 +188,7 @@ class Subversion(VersionControl):
|
|||
def __init__(self, use_interactive=None):
|
||||
# type: (bool) -> None
|
||||
if use_interactive is None:
|
||||
use_interactive = sys.stdin.isatty()
|
||||
use_interactive = is_console_interactive()
|
||||
self.use_interactive = use_interactive
|
||||
|
||||
# This member is used to cache the fetched version of the current
|
||||
|
|
|
@ -39,6 +39,7 @@ from pip._internal.utils.misc import (
|
|||
get_prog,
|
||||
hide_url,
|
||||
hide_value,
|
||||
is_console_interactive,
|
||||
normalize_path,
|
||||
normalize_version_info,
|
||||
parse_netloc,
|
||||
|
@ -971,3 +972,18 @@ def test_make_setuptools_shim_args__unbuffered_output(unbuffered_output):
|
|||
unbuffered_output=unbuffered_output
|
||||
)
|
||||
assert ('-u' in args) == unbuffered_output
|
||||
|
||||
|
||||
@pytest.mark.parametrize('isatty,no_stdin,expected', [
|
||||
(True, False, True),
|
||||
(False, False, False),
|
||||
(True, True, False),
|
||||
(False, True, False),
|
||||
])
|
||||
def test_is_console_interactive(monkeypatch, isatty, no_stdin, expected):
|
||||
monkeypatch.setattr(sys.stdin, 'isatty', Mock(return_value=isatty))
|
||||
|
||||
if no_stdin:
|
||||
monkeypatch.setattr(sys, 'stdin', None)
|
||||
|
||||
assert is_console_interactive() is expected
|
||||
|
|
Loading…
Reference in a new issue