MCPcopy Index your code
hub / github.com/plotly/plotly.py / build_from_imports_py

Function build_from_imports_py

codegen/utils.py:49–95  ·  view source on GitHub ↗

Build a string containing a series of `from X import Y` lines Parameters ---------- rel_modules: list of str list of submodules to import, of the form .submodule rel_classes: list of str list of submodule classes/variables to import, of the form ._submodule.Foo

(rel_modules=(), rel_classes=(), init_extra="")

Source from the content-addressed store, hash-verified

47
48
49def build_from_imports_py(rel_modules=(), rel_classes=(), init_extra=""):
50 """
51 Build a string containing a series of `from X import Y` lines
52
53 Parameters
54 ----------
55 rel_modules: list of str
56 list of submodules to import, of the form .submodule
57 rel_classes: list of str
58 list of submodule classes/variables to import, of the form ._submodule.Foo
59 init_extra: str
60 Extra code snippet to append to end of __init__.py file
61 Returns
62 -------
63 str
64 String containing a series of imports
65 """
66
67 rel_modules = list(rel_modules)
68 rel_classes = list(rel_classes)
69
70 import_lines = []
71 for rel in rel_classes + rel_modules:
72 rel_parts = rel.split(".")
73 parent_module = ".".join(rel_parts[:-1]) or "."
74 import_target = rel_parts[-1]
75 import_line = f"from {parent_module} import {import_target}"
76 import_lines.append(import_line)
77
78 imports_str = "\n ".join(import_lines)
79
80 result = f"""\
81import sys
82from typing import TYPE_CHECKING
83if TYPE_CHECKING:
84 {imports_str}
85else:
86 from _plotly_utils.importers import relative_import
87 __all__, __getattr__, __dir__ = relative_import(
88 __name__,
89 {repr(rel_modules)},
90 {repr(rel_classes)}
91 )
92
93{init_extra}
94"""
95 return result
96
97
98def write_init_py(pkg_root, path_parts, rel_modules=(), rel_classes=(), init_extra=""):

Callers 2

perform_codegenFunction · 0.90
write_init_pyFunction · 0.85

Calls 1

splitMethod · 0.45

Tested by

no test coverage detected