From: Terrance <4025899+Terrance@users.noreply.github.com> Date: Sat, 9 May 2020 16:22:23 +0000 (+0100) Subject: Handle ImportError from multiprocessing module (#1400) X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/865f536143e73da60f7c6b60924eb2472deb1cfe?ds=sidebyside;hp=f6393a20fc0f382c6bab545f8f60ec8e10d5e099 Handle ImportError from multiprocessing module (#1400) Termux's Python environment doesn't provide sem_open, but fails with a nested `ImportError` on import attempts: ImportError: cannot import name 'SemLock' from '_multiprocessing' This updates the existing handling for AWS Lambda to catch both `OSError` and `ImportError`. --- diff --git a/src/black/__init__.py b/src/black/__init__.py index 3ab4bc7..41c688b 100644 --- a/src/black/__init__.py +++ b/src/black/__init__.py @@ -662,9 +662,9 @@ def reformat_many( worker_count = min(worker_count, 61) try: executor = ProcessPoolExecutor(max_workers=worker_count) - except OSError: + except (ImportError, OSError): # we arrive here if the underlying system does not support multi-processing - # like in AWS Lambda, in which case we gracefully fallback to + # like in AWS Lambda or Termux, in which case we gracefully fallback to # a ThreadPollExecutor with just a single worker (more workers would not do us # any good due to the Global Interpreter Lock) executor = ThreadPoolExecutor(max_workers=1)