def generate_stub_for_module(module: str, output_dir: str, quiet: bool = False, add_header: bool = False, sigs: Dict[str, str] = {}, class_sigs: Dict[str, str] = {}, pyversion: Tuple[int, int] = defaults.PYTHON3_VERSION) -> None: if pyversion[0] == 2: module_path, module_all = load_python2_module_info(module) else: mod = importlib.import_module(module) imp.reload(mod) if is_c_module(mod): target = module.replace('.', '/') + '.pyi' target = os.path.join(output_dir, target) generate_stub_for_c_module(module_name=module, target=target, add_header=add_header, sigs=sigs, class_sigs=class_sigs) return target module_path = mod.__file__ module_all = getattr(mod, '__all__', None) target = module.replace('.', '/') if os.path.basename(module_path) == '__init__.py': target += '/__init__.pyi' else: target += '.pyi' target = os.path.join(output_dir, target) generate_stub(module_path, output_dir, module_all, target=target, add_header=add_header, module=module, pyversion=pyversion) if not quiet: print('Created %s' % target) return target
def generate_stub_for_module(module: str, output_dir: str, quiet: bool = False, add_header: bool = False, sigs: Dict[str, str] = {}, class_sigs: Dict[str, str] = {}, pyversion: Tuple[int, int] = defaults.PYTHON3_VERSION, no_import: bool = False, search_path: List[str] = [], interpreter: str = sys.executable) -> None: target = module.replace('.', '/') result = find_module_path_and_all(module=module, pyversion=pyversion, no_import=no_import, search_path=search_path, interpreter=interpreter) if not result: # C module target = os.path.join(output_dir, target + '.pyi') generate_stub_for_c_module(module_name=module, target=target, add_header=add_header, sigs=sigs, class_sigs=class_sigs) else: # Python module module_path, module_all = result if os.path.basename(module_path) == '__init__.py': target += '/__init__.pyi' else: target += '.pyi' target = os.path.join(output_dir, target) generate_stub(module_path, output_dir, module_all, target=target, add_header=add_header, module=module, pyversion=pyversion) if not quiet: print('Created %s' % target)
def generate_stub_for_module(module, output_dir, quiet=False, add_header=False, sigs={}, class_sigs={}): mod = importlib.import_module(module) imp.reload(mod) if is_c_module(mod): target = module.replace('.', '/') + '.pyi' target = os.path.join(output_dir, target) generate_stub_for_c_module(module_name=module, target=target, add_header=add_header, sigs=sigs, class_sigs=class_sigs) else: target = module.replace('.', '/') if os.path.basename(mod.__file__) == '__init__.py': target += '/__init__.pyi' else: target += '.pyi' target = os.path.join(output_dir, target) generate_stub(mod.__file__, output_dir, getattr(mod, '__all__', None), target=target, add_header=add_header, module=module) if not quiet: print('Created %s' % target)
def generate_stubs(options: Options, # additional args for testing quiet: bool = False, add_header: bool = True) -> None: """Main entry point for the program.""" mypy_opts = mypy_options(options) py_modules, c_modules = collect_build_targets(options, mypy_opts) # Collect info from docs (if given): sigs = class_sigs = None # type: Optional[Dict[str, str]] if options.doc_dir: sigs, class_sigs = collect_docs_signatures(options.doc_dir) # Use parsed sources to generate stubs for Python modules. generate_asts_for_modules(py_modules, options.parse_only, mypy_opts) for mod in py_modules: assert mod.path is not None, "Not found module was not skipped" target = mod.module.replace('.', '/') if os.path.basename(mod.path) == '__init__.py': target += '/__init__.pyi' else: target += '.pyi' target = os.path.join(options.output_dir, target) with generate_guarded(mod.module, target, options.ignore_errors, quiet): generate_stub_from_ast(mod, target, options.parse_only, options.pyversion, options.include_private, add_header) # Separately analyse C modules using different logic. for mod in c_modules: target = mod.module.replace('.', '/') + '.pyi' target = os.path.join(options.output_dir, target) with generate_guarded(mod.module, target, options.ignore_errors, quiet): generate_stub_for_c_module(mod.module, target, sigs=sigs, class_sigs=class_sigs, add_header=add_header)
def generate_stub_for_module(module, output_dir, quiet=False, add_header=False, sigs={}, class_sigs={}, pyversion=defaults.PYTHON3_VERSION): if pyversion[0] == 2: module_path, module_all = load_python2_module_info(module) else: mod = importlib.import_module(module) imp.reload(mod) if is_c_module(mod): target = module.replace('.', '/') + '.pyi' target = os.path.join(output_dir, target) generate_stub_for_c_module(module_name=module, target=target, add_header=add_header, sigs=sigs, class_sigs=class_sigs) return module_path = mod.__file__ module_all = getattr(mod, '__all__', None) target = module.replace('.', '/') if os.path.basename(module_path) == '__init__.py': target += '/__init__.pyi' else: target += '.pyi' target = os.path.join(output_dir, target) generate_stub(module_path, output_dir, module_all, target=target, add_header=add_header, module=module, pyversion=pyversion) if not quiet: print('Created %s' % target)
def generate_stub_for_module(module, output_dir, quiet=False, add_header=False, sigs={}, class_sigs={}): mod = __import__(module) imp.reload(mod) components = module.split('.') for attr in components[1:]: mod = getattr(mod, attr) if is_c_module(mod): target = '/'.join(components[:-1] + [components[-1] + '.pyi']) target = os.path.join(output_dir, target) generate_stub_for_c_module(module_name=module, target=target, add_header=add_header, sigs=sigs, class_sigs=class_sigs) else: target = '/'.join(module.split('.')[:-1]) modfnam = os.path.basename(mod.__file__) if modfnam == '__init__.py': target = os.path.join(target, module.split('.')[-1], '__init__.pyi') else: target = os.path.join(target, modfnam.replace('.py', '.pyi')) target = os.path.join(output_dir, target) generate_stub(mod.__file__, output_dir, getattr(mod, '__all__', None), target=target, add_header=add_header, module=module) if not quiet: print('Created %s' % target)
def generate_stub_for_module(module, output_dir, quiet=False, add_header=False, sigs={}, class_sigs={}): mod = __import__(module) imp.reload(mod) components = module.split('.') for attr in components[1:]: mod = getattr(mod, attr) if is_c_module(mod): target = '/'.join(components[:-1] + [components[-1] + '.py']) target = os.path.join(output_dir, target) generate_stub_for_c_module(module_name=module, target=target, add_header=add_header, sigs=sigs, class_sigs=class_sigs) else: target = '/'.join(module.split('.')[:-1]) modfnam = os.path.basename(mod.__file__) if modfnam == '__init__.py': target = os.path.join(target, module.split('.')[-1], '__init__.py') else: target = os.path.join(target, modfnam) target = os.path.join(output_dir, target) generate_stub(mod.__file__, output_dir, getattr(mod, '__all__', None), target=target, add_header=add_header, module=module) if not quiet: print('Created %s' % target)