MCPcopy
hub / github.com/Nuitka/Nuitka / getCachedImportedModuleUsageAttempts

Function getCachedImportedModuleUsageAttempts

nuitka/BytecodeCaching.py:59–130  ·  view source on GitHub ↗
(module_name, source_code, source_ref)

Source from the content-addressed store, hash-verified

57
58
59def getCachedImportedModuleUsageAttempts(module_name, source_code, source_ref):
60 cache_name = makeCacheName(module_name, source_code)
61 cache_filename = _getCacheFilename(cache_name, "json")
62
63 if not os.path.exists(cache_filename):
64 return None
65
66 data = loadJsonFromFilename(cache_filename)
67
68 if data is None:
69 return None
70
71 if data.get("file_format_version") != _cache_format_version:
72 return None
73
74 if data["module_name"] != module_name:
75 return None
76
77 result = OrderedSet()
78
79 for module_used in data["modules_used"]:
80 used_module_name = ModuleName(module_used["module_name"])
81
82 # Retry the module scan to see if it still gives same result
83 if module_used["finding"] == "relative":
84 _used_module_name, filename, module_kind, finding = locateModule(
85 module_name=used_module_name.getBasename(),
86 parent_package=used_module_name.getPackageName(),
87 level=1,
88 )
89 else:
90 _used_module_name, filename, module_kind, finding = locateModule(
91 module_name=used_module_name, parent_package=None, level=0
92 )
93
94 if (
95 finding != module_used["finding"]
96 or module_kind != module_used["module_kind"]
97 ):
98 assert module_name != "email._header_value_parser", (
99 finding,
100 module_used["finding"],
101 )
102
103 return None
104
105 result.add(
106 makeModuleUsageAttempt(
107 module_name=used_module_name,
108 filename=filename,
109 finding=module_used["finding"],
110 module_kind=module_used["module_kind"],
111 # TODO: Level might have to be dropped.
112 level=0,
113 # We store only the line number, so this cheats it to at full one.
114 source_ref=source_ref.atLineNumber(module_used["source_ref_line"]),
115 reason=module_used["reason"],
116 )

Calls 13

getBasenameMethod · 0.95
getPackageNameMethod · 0.95
addMethod · 0.95
loadJsonFromFilenameFunction · 0.90
OrderedSetClass · 0.90
ModuleNameClass · 0.90
locateModuleFunction · 0.90
makeModuleUsageAttemptFunction · 0.90
makeCacheNameFunction · 0.85
atLineNumberMethod · 0.80
_getCacheFilenameFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…