diff --git a/bpython/_internal.py b/bpython/_internal.py index 35cd0bf8..bfcfce46 100644 --- a/bpython/_internal.py +++ b/bpython/_internal.py @@ -4,7 +4,7 @@ from .pager import page # Ugly monkeypatching -pydoc.pager = page +pydoc.pager = page # type: ignore class _Helper: diff --git a/bpython/pager.py b/bpython/pager.py index e481e793..673e902b 100644 --- a/bpython/pager.py +++ b/bpython/pager.py @@ -20,6 +20,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. +# mypy: disallow_untyped_defs=True +# mypy: disallow_untyped_calls=True import curses import errno @@ -28,14 +30,15 @@ import subprocess import sys import shlex +from typing import List -def get_pager_command(default="less -rf"): +def get_pager_command(default: str = "less -rf") -> List[str]: command = shlex.split(os.environ.get("PAGER", default)) return command -def page_internal(data): +def page_internal(data: str) -> None: """A more than dumb pager function.""" if hasattr(pydoc, "ttypager"): pydoc.ttypager(data) @@ -43,7 +46,7 @@ def page_internal(data): sys.stdout.write(data) -def page(data, use_internal=False): +def page(data: str, use_internal: bool = False) -> None: command = get_pager_command() if not command or use_internal: page_internal(data) @@ -51,8 +54,9 @@ def page(data, use_internal=False): curses.endwin() try: popen = subprocess.Popen(command, stdin=subprocess.PIPE) - data = data.encode(sys.__stdout__.encoding, "replace") - popen.stdin.write(data) + assert popen.stdin is not None + data_bytes = data.encode(sys.__stdout__.encoding, "replace") + popen.stdin.write(data_bytes) popen.stdin.close() except OSError as e: if e.errno == errno.ENOENT: