| |
| |
|
|
| import os |
| import sys |
|
|
| |
| sys.path.insert(0, os.path.abspath("../..")) |
|
|
| |
|
|
| project = "Kimodo" |
| copyright = "2026, NVIDIA" |
| author = "NVIDIA" |
|
|
| version = "" |
| release = "" |
|
|
| |
|
|
| extensions = [ |
| "sphinx.ext.autodoc", |
| "sphinx.ext.napoleon", |
| "sphinx.ext.viewcode", |
| "sphinx.ext.intersphinx", |
| "sphinx.ext.autosummary", |
| "sphinx.ext.githubpages", |
| "sphinx_copybutton", |
| "myst_parser", |
| "sphinx_design", |
| ] |
|
|
| napoleon_google_docstring = True |
| napoleon_numpy_docstring = False |
| napoleon_include_init_with_doc = True |
| napoleon_use_param = True |
| napoleon_use_rtype = True |
|
|
| autodoc_default_options = { |
| "members": True, |
| "member-order": "bysource", |
| "special-members": "__init__", |
| "undoc-members": True, |
| "exclude-members": "__weakref__", |
| "show-inheritance": False, |
| } |
| autodoc_typehints = "none" |
|
|
| autosummary_generate = True |
|
|
| |
| os.environ.setdefault("MUJOCO_GL", "osmesa") |
| os.environ.setdefault("PYOPENGL_PLATFORM", "osmesa") |
|
|
|
|
| class Mock: |
| """Mock class for imports that can't be satisfied.""" |
|
|
| def __init__(self, *args, **kwargs): |
| pass |
|
|
| def __call__(self, *args, **kwargs): |
| return Mock() |
|
|
| def __getattr__(self, name): |
| if name in ("__file__", "__path__"): |
| return "/dev/null" |
| if name == "__version__": |
| |
| |
| return "0.0.0" |
| if name == "__signature__": |
| return None |
| if name == "__mro_entries__": |
| return lambda bases: () |
| return Mock() |
|
|
| def __getitem__(self, name): |
| return Mock() |
|
|
| def __iter__(self): |
| return iter([]) |
|
|
| def __or__(self, other): |
| return Mock() |
|
|
| def __ror__(self, other): |
| return Mock() |
|
|
|
|
| mock_modules = [ |
| "torch", |
| "torch.nn", |
| "torch.nn.functional", |
| "torch.optim", |
| "torch.distributed", |
| "torch.cuda", |
| "torch.utils", |
| "torch.utils.data", |
| "lightning", |
| "lightning.fabric", |
| "lightning_fabric", |
| "pytorch_lightning", |
| "tensordict", |
| "pydantic", |
| "pydantic.dataclasses", |
| "pydantic_core", |
| "mujoco", |
| "isaacgym", |
| "isaacgymenvs", |
| "genesis", |
| "omni", |
| "wandb", |
| "hydra", |
| "omegaconf", |
| "tqdm", |
| "trimesh", |
| "pyvista", |
| "smplx", |
| "smpl", |
| "scipy", |
| "scipy.spatial", |
| "scipy.spatial.transform", |
| "peft", |
| "transformers", |
| "safetensors", |
| "safetensors.torch", |
| "sklearn", |
| "PIL", |
| "cv2", |
| "rich", |
| "rich.progress", |
| "skimage", |
| "imageio", |
| "openmesh", |
| "gym", |
| "easydict", |
| "dm_control", |
| "dm_control.mjcf", |
| "dm_control.mujoco", |
| "matplotlib", |
| "matplotlib.pyplot", |
| ] |
|
|
| for mod in mock_modules: |
| sys.modules[mod] = Mock() |
|
|
| autodoc_mock_imports = mock_modules |
|
|
| templates_path = ["_templates"] |
| exclude_patterns = ["api_reference/_generated/**"] |
|
|
| language = "en" |
|
|
| source_suffix = { |
| ".rst": "restructuredtext", |
| ".md": "markdown", |
| } |
|
|
| master_doc = "index" |
|
|
| |
|
|
| html_theme = "nvidia_sphinx_theme" |
| html_static_path = ["_static"] |
| html_css_files = ["custom.css"] |
| html_logo = "_static/logo-placeholder.svg" |
| html_show_sourcelink = False |
|
|
| html_theme_options = { |
| "collapse_navigation": False, |
| "navigation_depth": 4, |
| } |
|
|
| toc_object_entries_show_parents = "hide" |
|
|
| htmlhelp_basename = "Kimododoc" |
|
|
| |
|
|
| intersphinx_mapping = { |
| "python": ("https://docs.python.org/3", None), |
| "torch": ("https://pytorch.org/docs/stable/", None), |
| "numpy": ("https://numpy.org/doc/stable/", None), |
| } |
|
|
| copybutton_prompt_text = r">>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: " |
| copybutton_prompt_is_regexp = True |
|
|
| |
| myst_heading_anchors = 4 |
|
|
| |
| myst_enable_extensions = ["colon_fence"] |
|
|
|
|
| def setup(app): |
| app.add_css_file("custom.css") |
|
|