From ec311af796771f76ff858140f8392e048f68fe74 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Wed, 22 Sep 2021 17:18:59 -0700 Subject: [PATCH] typing: subprocess --- src/ocrmypdf/subprocess/__init__.py | 12 +++++++++--- src/ocrmypdf/subprocess/_windows.py | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ocrmypdf/subprocess/__init__.py b/src/ocrmypdf/subprocess/__init__.py index 28604648..7cc153b5 100644 --- a/src/ocrmypdf/subprocess/__init__.py +++ b/src/ocrmypdf/subprocess/__init__.py @@ -26,7 +26,9 @@ from ocrmypdf.exceptions import MissingDependencyError log = logging.getLogger(__name__) -def run(args, *, env=None, logs_errors_to_stdout=False, **kwargs): +def run( + args, *, env=None, logs_errors_to_stdout: bool = False, **kwargs +) -> CompletedProcess: """Wrapper around :py:func:`subprocess.run` The main purpose of this wrapper is to log subprocess output in an orderly @@ -64,7 +66,9 @@ def run(args, *, env=None, logs_errors_to_stdout=False, **kwargs): return proc -def run_polling_stderr(args, *, callback, check=False, env=None, **kwargs): +def run_polling_stderr( + args, *, callback: Callable[[str], None], check: bool = False, env=None, **kwargs +) -> CompletedProcess: """Run a process like ``ocrmypdf.subprocess.run``, and poll stderr. Every line of produced by stderr will be forwarded to the callback function. @@ -82,6 +86,8 @@ def run_polling_stderr(args, *, callback, check=False, env=None, **kwargs): with Popen(args, env=env, **kwargs) as proc: lines = [] while proc.poll() is None: + if proc.stderr is None: + continue for msg in iter(proc.stderr.readline, ''): if process_log.isEnabledFor(logging.DEBUG): process_log.debug(msg.strip()) @@ -101,7 +107,7 @@ def _fix_process_args(args, env, kwargs): env = os.environ # Search in spoof path if necessary - program = args[0] + program = str(args[0]) if os.name == 'nt': from ocrmypdf.subprocess._windows import fix_windows_args diff --git a/src/ocrmypdf/subprocess/_windows.py b/src/ocrmypdf/subprocess/_windows.py index d1cc31e0..c3130a7d 100644 --- a/src/ocrmypdf/subprocess/_windows.py +++ b/src/ocrmypdf/subprocess/_windows.py @@ -113,7 +113,7 @@ SHIMS = [ ] -def fix_windows_args(program, args, env): +def fix_windows_args(program: str, args, env): """Adjust our desired program and command line arguments for use on Windows""" if sys.version_info < (3, 8):