From db3385d220f3793c01a377a2545b9dabcf52a2bc Mon Sep 17 00:00:00 2001 From: masklinn Date: Sat, 13 Jul 2024 15:01:31 +0200 Subject: [PATCH] Ruff does not understand contextlib.suppress MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not entirely clear when F811 started triggering on this pattern (it didn't 3 months ago but is now unhappy with this). Use `find_spec` to perform a conditional import rather than recover from a failing import. This is generally less efficient, but given it's only done at import it likely doesnt matter. - successfully importing a module takes about 65ns - successfully find_spec-ing a module takes about 280ns - unsuccessfully find_spec-ing a module takes about 21*µ*s - unsuccessfully importing a modules (then recovering) takes about 26µs --- src/ua_parser/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ua_parser/__init__.py b/src/ua_parser/__init__.py index 54e49a0..a9a09b4 100644 --- a/src/ua_parser/__init__.py +++ b/src/ua_parser/__init__.py @@ -40,7 +40,7 @@ "parse_user_agent", ] -import contextlib +import importlib.util from typing import Callable, Optional from .basic import Resolver as BasicResolver @@ -59,7 +59,7 @@ from .loaders import load_builtins, load_lazy_builtins Re2Resolver: Optional[Callable[[Matchers], Resolver]] = None -with contextlib.suppress(ImportError): +if importlib.util.find_spec("re2"): from .re2 import Resolver as Re2Resolver