| | |
| | import os |
| |
|
| | from omegaconf import DictConfig, OmegaConf |
| |
|
| | from .instantiate import instantiate |
| | from .lazy import LazyCall, LazyConfig |
| | from .omegaconf_patch import to_object |
| |
|
| | OmegaConf.to_object = to_object |
| |
|
| | PLACEHOLDER = None |
| | LazyDict = DictConfig |
| |
|
| | __all__ = ["instantiate", "LazyCall", "LazyConfig", "PLACEHOLDER", "LazyDict"] |
| |
|
| |
|
| | DOC_BUILDING = os.getenv("_DOC_BUILDING", False) |
| |
|
| |
|
| | def fixup_module_metadata(module_name, namespace, keys=None): |
| | """ |
| | Fix the __qualname__ of module members to be their exported api name, so |
| | when they are referenced in docs, sphinx can find them. Reference: |
| | https://github.com/python-trio/trio/blob/6754c74eacfad9cc5c92d5c24727a2f3b620624e/trio/_util.py#L216-L241 |
| | """ |
| | if not DOC_BUILDING: |
| | return |
| | seen_ids = set() |
| |
|
| | def fix_one(qualname, name, obj): |
| | |
| | |
| | if id(obj) in seen_ids: |
| | return |
| | seen_ids.add(id(obj)) |
| |
|
| | mod = getattr(obj, "__module__", None) |
| | if mod is not None and (mod.startswith(module_name) or mod.startswith("fvcore.")): |
| | obj.__module__ = module_name |
| | |
| | |
| | |
| | if hasattr(obj, "__name__") and "." not in obj.__name__: |
| | obj.__name__ = name |
| | obj.__qualname__ = qualname |
| | if isinstance(obj, type): |
| | for attr_name, attr_value in obj.__dict__.items(): |
| | fix_one(objname + "." + attr_name, attr_name, attr_value) |
| |
|
| | if keys is None: |
| | keys = namespace.keys() |
| | for objname in keys: |
| | if not objname.startswith("_"): |
| | obj = namespace[objname] |
| | fix_one(objname, objname, obj) |
| |
|
| |
|
| | fixup_module_metadata(__name__, globals(), __all__) |
| | del fixup_module_metadata |
| |
|