From 0969ca4a46c4a2081be38f7e96a81a74b308c75f Mon Sep 17 00:00:00 2001 From: erykoff Date: Tue, 24 Aug 2021 13:59:24 -0700 Subject: [PATCH 1/1] Change sys.exit to raise ImportError (#2440) The fix for #1688 in #1761 breaks help("modules") introspection and also leads to unhappy results when inadvertently importing blackd from Python. Basically the sys.exit(-1) causes the whole Python REPL to exit -- not great to suffice. Commit history before merge: * Change sys.exit to Raise. * Add #2440 to changelog. * Fix lint error from prettier * Remove exception chain for more helpful user message. Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com> --- CHANGES.md | 4 ++++ src/blackd/__init__.py | 9 +++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 22ddc42..ed08ab3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,10 @@ - The failsafe for accidentally added backslashes in f-string expressions has been hardened to handle more edge cases during quote normalization (#2437) +### _Blackd_ + +- Replace sys.exit(-1) with raise ImportError (#2440) + ### Integrations - The provided pre-commit hooks no longer specify `language_version` to avoid overriding diff --git a/src/blackd/__init__.py b/src/blackd/__init__.py index 3e2a7e7..5fdec15 100644 --- a/src/blackd/__init__.py +++ b/src/blackd/__init__.py @@ -1,6 +1,5 @@ import asyncio import logging -import sys from concurrent.futures import Executor, ProcessPoolExecutor from datetime import datetime from functools import partial @@ -11,13 +10,11 @@ try: from aiohttp import web import aiohttp_cors except ImportError as ie: - print( + raise ImportError( f"aiohttp dependency is not installed: {ie}. " + "Please re-install black with the '[d]' extra install " - + "to obtain aiohttp_cors: `pip install black[d]`", - file=sys.stderr, - ) - sys.exit(-1) + + "to obtain aiohttp_cors: `pip install black[d]`" + ) from None import black from black.concurrency import maybe_install_uvloop -- 2.39.5