MCPcopy Index your code
hub / github.com/python/mypy / generate_module

Method generate_module

mypy/stubgenc.py:411–487  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

409 return module is None or module == self.module_name
410
411 def generate_module(self) -> None:
412 all_items = self.get_members(self.module)
413 if self.resort_members:
414 all_items = sorted(all_items, key=lambda x: x[0])
415 items = []
416 for name, obj in all_items:
417 if inspect.ismodule(obj) and obj.__name__ in self.known_modules:
418 module_name = obj.__name__
419 if module_name.startswith(self.module_name + "."):
420 # from {.rel_name} import {mod_name} as {name}
421 pkg_name, mod_name = module_name.rsplit(".", 1)
422 rel_module = pkg_name[len(self.module_name) :] or "."
423 self.import_tracker.add_import_from(rel_module, [(mod_name, name)])
424 self.import_tracker.reexport(name)
425 else:
426 # import {module_name} as {name}
427 self.import_tracker.add_import(module_name, name)
428 self.import_tracker.reexport(name)
429 elif self.is_defined_in_module(obj) and not inspect.ismodule(obj):
430 # process this below
431 items.append((name, obj))
432 else:
433 # from {obj_module} import {obj_name}
434 obj_module_name = self.get_obj_module(obj)
435 if obj_module_name:
436 self.import_tracker.add_import_from(obj_module_name, [(name, None)])
437 if self.should_reexport(name, obj_module_name, name_is_alias=False):
438 self.import_tracker.reexport(name)
439
440 self.set_defined_names({name for name, obj in all_items if not inspect.ismodule(obj)})
441
442 if self.resort_members:
443 functions: list[str] = []
444 types: list[str] = []
445 variables: list[str] = []
446 else:
447 output: list[str] = []
448 functions = types = variables = output
449
450 for name, obj in items:
451 if self.is_function(obj):
452 self.generate_function_stub(name, obj, output=functions)
453 elif inspect.isclass(obj):
454 self.generate_class_stub(name, obj, output=types)
455 else:
456 self.generate_variable_stub(name, obj, output=variables)
457
458 self._output = []
459
460 if self.resort_members:
461 for line in variables:
462 self._output.append(line + "\n")
463 for line in types:
464 if line.startswith("class") and self._output and self._output[-1]:
465 self._output.append("\n")
466 self._output.append(line + "\n")
467 if self._output and functions:
468 self._output.append("\n")

Callers 2

Calls 15

get_membersMethod · 0.95
is_defined_in_moduleMethod · 0.95
get_obj_moduleMethod · 0.95
is_functionMethod · 0.95
generate_class_stubMethod · 0.95
sortedFunction · 0.85
lenFunction · 0.85
enumerateFunction · 0.85
rsplitMethod · 0.80
add_import_fromMethod · 0.80

Tested by

no test coverage detected