(module_name, source_code, source_ref)
| 57 | |
| 58 | |
| 59 | def 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 | ) |
no test coverage detected
searching dependent graphs…