1+ from aikido_zen .sinks import on_import , patch_function , after
2+ import contextvars
13import importlib .metadata
24from importlib .metadata import PackageNotFoundError
3-
45from aikido_zen .background_process .packages import PackagesStore
5- from aikido_zen .sinks import on_import , patch_function , after
6+
7+ running_import_scan = contextvars .ContextVar ("running_import_scan" , default = False )
68
79
810@after
911def _import (func , instance , args , kwargs , return_value ):
12+ if running_import_scan .get ():
13+ return
14+ running_import_scan .set (True )
15+
1016 if not hasattr (return_value , "__file__" ):
1117 return # Would be built-in into the interpreter (system package)
1218
@@ -18,9 +24,6 @@ def _import(func, instance, args, kwargs, return_value):
1824 # Make sure the name exists
1925 return
2026 name = name .split ("." )[0 ] # Remove submodules
21- if name == "importlib" or name == "importlib_metadata" :
22- # Avoid circular dependencies
23- return
2427
2528 if PackagesStore .get_package (name ):
2629 return
@@ -33,6 +36,8 @@ def _import(func, instance, args, kwargs, return_value):
3336 if version :
3437 PackagesStore .add_package (name , version )
3538
39+ running_import_scan .set (False )
40+
3641
3742@on_import ("builtins" )
3843def patch (m ):
0 commit comments