MCPcopy Index your code
hub / github.com/RustPython/RustPython / ModuleScanner

Class ModuleScanner

Lib/pydoc.py:2258–2317  ·  view source on GitHub ↗

An interruptible scanner that searches module synopses.

Source from the content-addressed store, hash-verified

2256help = Helper()
2257
2258class ModuleScanner:
2259 """An interruptible scanner that searches module synopses."""
2260
2261 def run(self, callback, key=None, completer=None, onerror=None):
2262 if key: key = key.lower()
2263 self.quit = False
2264 seen = {}
2265
2266 for modname in sys.builtin_module_names:
2267 if modname != '__main__':
2268 seen[modname] = 1
2269 if key is None:
2270 callback(None, modname, '')
2271 else:
2272 name = __import__(modname).__doc__ or ''
2273 desc = name.split('\n')[0]
2274 name = modname + ' - ' + desc
2275 if name.lower().find(key) >= 0:
2276 callback(None, modname, desc)
2277
2278 for importer, modname, ispkg in pkgutil.walk_packages(onerror=onerror):
2279 if self.quit:
2280 break
2281
2282 if key is None:
2283 callback(None, modname, '')
2284 else:
2285 try:
2286 spec = importer.find_spec(modname)
2287 except SyntaxError:
2288 # raised by tests for bad coding cookies or BOM
2289 continue
2290 loader = spec.loader
2291 if hasattr(loader, 'get_source'):
2292 try:
2293 source = loader.get_source(modname)
2294 except Exception:
2295 if onerror:
2296 onerror(modname)
2297 continue
2298 desc = source_synopsis(io.StringIO(source)) or ''
2299 if hasattr(loader, 'get_filename'):
2300 path = loader.get_filename(modname)
2301 else:
2302 path = None
2303 else:
2304 try:
2305 module = importlib._bootstrap._load(spec)
2306 except ImportError:
2307 if onerror:
2308 onerror(modname)
2309 continue
2310 desc = module.__doc__.splitlines()[0] if module.__doc__ else ''
2311 path = getattr(module,'__file__',None)
2312 name = modname + ' - ' + desc
2313 if name.lower().find(key) >= 0:
2314 callback(path, modname, desc)
2315

Callers 4

scan_modulesFunction · 0.90
listmodulesMethod · 0.85
aproposFunction · 0.85
html_searchFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected