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="")
| 47 | |
| 48 | |
| 49 | def 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"""\ |
| 81 | import sys |
| 82 | from typing import TYPE_CHECKING |
| 83 | if TYPE_CHECKING: |
| 84 | {imports_str} |
| 85 | else: |
| 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 | |
| 98 | def write_init_py(pkg_root, path_parts, rel_modules=(), rel_classes=(), init_extra=""): |
no test coverage detected