|
14 | 14 | # ============================================================================== |
15 | 15 | """Functions for dynamically importing symbols from modules.""" |
16 | 16 |
|
17 | | -import importlib |
18 | | -from absl import logging |
| 17 | +from connectomics.common import import_util |
19 | 18 |
|
20 | 19 |
|
21 | | -def import_symbol(specifier, default_packages='ffn.training.models'): |
22 | | - """Imports a symbol from a python module. |
23 | | -
|
24 | | - The calling module must have the target module for the import as dependency. |
25 | | -
|
26 | | - Args: |
27 | | - specifier: full path specifier in format |
28 | | - [<packages>.]<module_name>.<model_class>, if packages is missing |
29 | | - ``default_packages`` is used. |
30 | | - default_packages: chain of packages before module in format |
31 | | - <top_pack>.<sub_pack>.<subsub_pack> etc. |
32 | | -
|
33 | | - Returns: |
34 | | - symbol: object from module |
35 | | - """ |
36 | | - module_path, symbol_name = specifier.rsplit('.', 1) |
37 | | - try: |
38 | | - logging.info('Importing symbol %s from %s.%s', |
39 | | - symbol_name, default_packages, module_path) |
40 | | - module = importlib.import_module(default_packages + '.' + module_path) |
41 | | - except ImportError as e: |
42 | | - logging.info(e) |
43 | | - logging.info('Importing symbol %s from %s', symbol_name, module_path) |
44 | | - module = importlib.import_module(module_path) |
45 | | - |
46 | | - symbol = getattr(module, symbol_name) |
47 | | - return symbol |
| 20 | +def import_symbol( |
| 21 | + specifier: str, default_packages: str = 'ffn.training.models' |
| 22 | +): |
| 23 | + return import_util.import_symbol(specifier, default_packages) |
0 commit comments