From 5478382bbbe3e38594bcadf2b96285964c38ef62 Mon Sep 17 00:00:00 2001 From: Marcel Hellkamp Date: Wed, 30 Oct 2024 09:55:04 +0100 Subject: [PATCH] Handle PermissionError in fallback code for old import name Path.is_file() throws PermissionError if the current user is not allowed to list one of the parent directories. An import would also fail, so treat this as if the file wasn't there. fixes #181 --- multipart/__init__.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/multipart/__init__.py b/multipart/__init__.py index cdc0154..67f0e5b 100644 --- a/multipart/__init__.py +++ b/multipart/__init__.py @@ -7,14 +7,17 @@ for p in sys.path: file_path = Path(p, "multipart.py") - if file_path.is_file(): - spec = importlib.util.spec_from_file_location("multipart", file_path) - assert spec is not None, f"{file_path} found but not loadable!" - module = importlib.util.module_from_spec(spec) - sys.modules["multipart"] = module - assert spec.loader is not None, f"{file_path} must be loadable!" - spec.loader.exec_module(module) - break + try: + if file_path.is_file(): + spec = importlib.util.spec_from_file_location("multipart", file_path) + assert spec is not None, f"{file_path} found but not loadable!" + module = importlib.util.module_from_spec(spec) + sys.modules["multipart"] = module + assert spec.loader is not None, f"{file_path} must be loadable!" + spec.loader.exec_module(module) + break + except PermissionError: + pass else: warnings.warn("Please use `import python_multipart` instead.", PendingDeprecationWarning, stacklevel=2) from python_multipart import *