|
9 | 9 |
|
10 | 10 | @after |
11 | 11 | def _import(func, instance, args, kwargs, return_value): |
12 | | - if running_import_scan.get(): |
13 | | - return |
14 | | - running_import_scan.set(True) |
15 | | - |
16 | | - if not hasattr(return_value, "__file__"): |
17 | | - return # Would be built-in into the interpreter (system package) |
18 | | - |
19 | | - if not hasattr(return_value, "__package__"): |
20 | | - return |
21 | | - name = getattr(return_value, "__package__") |
22 | | - |
23 | | - if not name: |
24 | | - # Make sure the name exists |
25 | | - return |
26 | | - name = name.split(".")[0] # Remove submodules |
27 | | - if name == "importlib" or name == "importlib_metadata": |
28 | | - # Avoid circular dependencies, this is a double safety-check for if contextvar check fails. |
29 | | - return |
30 | | - |
31 | | - if PackagesStore.get_package(name): |
32 | | - return |
33 | | - |
34 | | - version = None |
35 | 12 | try: |
36 | | - version = importlib.metadata.version(name) |
37 | | - except PackageNotFoundError: |
38 | | - pass |
39 | | - if version: |
40 | | - PackagesStore.add_package(name, version) |
41 | | - |
42 | | - running_import_scan.set(False) |
| 13 | + if running_import_scan.get(): |
| 14 | + return |
| 15 | + running_import_scan.set(True) |
| 16 | + |
| 17 | + if not hasattr(return_value, "__file__"): |
| 18 | + return # Would be built-in into the interpreter (system package) |
| 19 | + |
| 20 | + if not hasattr(return_value, "__package__"): |
| 21 | + return |
| 22 | + name = getattr(return_value, "__package__") |
| 23 | + |
| 24 | + if not name: |
| 25 | + # Make sure the name exists |
| 26 | + return |
| 27 | + name = name.split(".")[0] # Remove submodules |
| 28 | + if name == "importlib" or name == "importlib_metadata": |
| 29 | + # Avoid circular dependencies, this is a double safety-check for if contextvar check fails. |
| 30 | + return |
| 31 | + |
| 32 | + if PackagesStore.get_package(name): |
| 33 | + return |
| 34 | + |
| 35 | + version = None |
| 36 | + try: |
| 37 | + version = importlib.metadata.version(name) |
| 38 | + except PackageNotFoundError: |
| 39 | + pass |
| 40 | + if version: |
| 41 | + PackagesStore.add_package(name, version) |
| 42 | + finally: |
| 43 | + running_import_scan.set(False) |
43 | 44 |
|
44 | 45 |
|
45 | 46 | @on_import("builtins") |
|
0 commit comments