35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
__all__ = ["export_module"]
|
|
|
|
from typing import Callable, Optional, TypeVar
|
|
|
|
T = TypeVar("T")
|
|
|
|
# Global dictionary to store export module mappings
|
|
# Key: original symbol name (qualified by module)
|
|
# Value: target module where it should be documented
|
|
_PDOC_MODULE_EXPORT_MAPPINGS: dict[str, str] = {}
|
|
|
|
|
|
def export_module(module: str) -> Callable[[T], T]:
|
|
def decorator(cls: T) -> T:
|
|
original_module = getattr(cls, "__module__", None)
|
|
if original_module:
|
|
fqn = f"{original_module}.{cls.__name__}"
|
|
_PDOC_MODULE_EXPORT_MAPPINGS[fqn] = module
|
|
return cls
|
|
|
|
return decorator
|
|
|
|
|
|
def get_target_module(obj: object) -> Optional[str]:
|
|
"""Get the target module where an object should be documented."""
|
|
if not hasattr(obj, "__module__"):
|
|
return None
|
|
|
|
fqn = f"{obj.__module__}.{obj.__name__}"
|
|
return _PDOC_MODULE_EXPORT_MAPPINGS.get(fqn)
|