From 62e5edc72bfbff8640f1589355a89c1d30d46b7c Mon Sep 17 00:00:00 2001 From: Jonas Winkler <17569239+jonaswinkler@users.noreply.github.com> Date: Wed, 6 Jan 2021 12:59:28 +0100 Subject: [PATCH] fix unclosed file warnings. (#710) Co-authored-by: Jonas Winkler --- src/ocrmypdf/subprocess/__init__.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/ocrmypdf/subprocess/__init__.py b/src/ocrmypdf/subprocess/__init__.py index f349bd65..2755337b 100644 --- a/src/ocrmypdf/subprocess/__init__.py +++ b/src/ocrmypdf/subprocess/__init__.py @@ -77,20 +77,19 @@ def run_polling_stderr(args, *, callback, check=False, env=None, **kwargs): args, env, process_log, text = _fix_process_args(args, env, kwargs) assert text, "Must use text=True" - proc = Popen(args, env=env, **kwargs) + with Popen(args, env=env, **kwargs) as proc: + lines = [] + while proc.poll() is None: + for msg in iter(proc.stderr.readline, ''): + if process_log.isEnabledFor(logging.DEBUG): + process_log.debug(msg.strip()) + callback(msg) + lines.append(msg) + stderr = ''.join(lines) - lines = [] - while proc.poll() is None: - for msg in iter(proc.stderr.readline, ''): - if process_log.isEnabledFor(logging.DEBUG): - process_log.debug(msg.strip()) - callback(msg) - lines.append(msg) - stderr = ''.join(lines) - - if check and proc.returncode != 0: - raise CalledProcessError(proc.returncode, args, output=None, stderr=stderr) - return CompletedProcess(args, proc.returncode, None, stderr=stderr) + if check and proc.returncode != 0: + raise CalledProcessError(proc.returncode, args, output=None, stderr=stderr) + return CompletedProcess(args, proc.returncode, None, stderr=stderr) def _fix_process_args(args, env, kwargs):