Source code for flake8_polyfill.stdin

"""Monkey-patching for pep8 and pycodestyle."""
try:
    import pep8
except ImportError:
    pep8 = None

try:
    import pycodestyle
except ImportError:
    pycodestyle = None

from flake8_polyfill import version

__all__ = ('monkey_patch',)

modules = {
    'pep8': [pep8],
    'pycodestyle': [pycodestyle],
    'all': [pep8, pycodestyle],
}


[docs]def monkey_patch(which): """Monkey-patch the specified module with the appropriate stdin. On Flake8 2.5 and lower, Flake8 would would monkey-patch ``pep8.stdin_get_value`` for everyone. This avoided problems where stdin might be exhausted. On Flake8 2.6, Flake8 stopped patching ``pep8`` and started monkey-patching ``pycodestyle.stdin_get_value``. On Flake8 3.x, Flake8 has no need to monkey patch either ``pep8`` or ``pycodestyle``. This function accepts three parameters: - pep8 - pycodestyle - all "all" is a special value that will monkey-patch both "pep8" and "pycodestyle". :param str which: The name of the module to patch. :returns: Nothing. :rtype: NoneType """ if (2, 0) <= version.version_info < (3, 0): from flake8.engine import pep8 as _pep8 stdin_get_value = _pep8.stdin_get_value elif (3, 0) <= version.version_info < (4, 0): from flake8 import utils stdin_get_value = utils.stdin_get_value for module in modules[which]: if module is None: continue module.stdin_get_value = stdin_get_value