1
1
Fork 0
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:
Pradyun Gedam 2019-10-02 13:47:46 +05:30 committed by GitHub
commit e6f69fadd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 2 deletions

1
news/7118.bugfix Normal file
View 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
View file

@ -0,0 +1 @@
Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.

View file

@ -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()

View file

@ -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

View file

@ -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