conf.py 3.57 KB
Newer Older
1
# Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Przemek Tredak's avatar
Przemek Tredak committed
2
3
4
#
# See LICENSE for license information.

5
import datetime
Przemek Tredak's avatar
Przemek Tredak committed
6
import os
7
import pathlib
Przemek Tredak's avatar
Przemek Tredak committed
8
import subprocess
9
from builtins import str
Przemek Tredak's avatar
Przemek Tredak committed
10

11
12
13
# Basic project info
project = "Transformer Engine"
author = "NVIDIA CORPORATION & AFFILIATES"
Przemek Tredak's avatar
Przemek Tredak committed
14

15
# Copyright statement
Przemek Tredak's avatar
Przemek Tredak committed
16
release_year = 2022
17
current_year = datetime.date.today().year
Przemek Tredak's avatar
Przemek Tredak committed
18
19
20
21
if current_year == release_year:
    copyright_year = release_year
else:
    copyright_year = str(release_year) + "-" + str(current_year)
22
copyright = f"{copyright_year}, NVIDIA CORPORATION & AFFILIATES. All rights reserved."
Przemek Tredak's avatar
Przemek Tredak committed
23

24
25
# Transformer Engine root directory
root_path = pathlib.Path(__file__).resolve().parent.parent
26

27
# Git hash
28
29
30
git_sha = os.getenv("GIT_SHA")
if not git_sha:
    try:
31
32
33
34
35
36
        git_sha = (
            subprocess.check_output(["git", "log", "--pretty=format:'%h'", "-n1"])
            .decode("ascii")
            .replace("'", "")
            .strip()
        )
37
    except:
38
        git_sha = "0000000"
39
40
git_sha = git_sha[:7] if len(git_sha) > 7 else git_sha

41
42
43
44
45
# Version
with open(root_path / "build_tools" / "VERSION.txt", "r") as f:
    _raw_version = f.readline().strip()
if "dev" in _raw_version:
    version = str(_raw_version + "-" + git_sha)
46
else:
47
48
    version = str(_raw_version)
release = _raw_version
Przemek Tredak's avatar
Przemek Tredak committed
49
50
51
52
53

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = [
54
55
56
57
58
59
60
    "sphinx.ext.autodoc",
    "sphinx.ext.mathjax",
    "sphinx.ext.napoleon",
    "sphinx.ext.ifconfig",
    "nbsphinx",
    "breathe",
    "autoapi.extension",
61
    "sphinx_tabs.tabs",
62
]
Przemek Tredak's avatar
Przemek Tredak committed
63

64
templates_path = ["_templates"]
Paweł Gadziński's avatar
Paweł Gadziński committed
65
66
67
68
69
exclude_patterns = [
    "_build",
    "Thumbs.db",
    "sphinx_rtd_theme",
]
Przemek Tredak's avatar
Przemek Tredak committed
70

71
source_suffix = ".rst"
Przemek Tredak's avatar
Przemek Tredak committed
72

73
master_doc = "index"
Przemek Tredak's avatar
Przemek Tredak committed
74

75
pygments_style = "sphinx"
Przemek Tredak's avatar
Przemek Tredak committed
76
77
78
79

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

80
81
html_theme = "sphinx_rtd_theme"
html_static_path = ["_static"]
82
html_show_sphinx = False
83
84

html_css_files = [
85
86
    "css/nvidia_font.css",
    "css/nvidia_footer.css",
87
88
    "css/rtabs.css",
    "css/output-style.css",
89
]
Przemek Tredak's avatar
Przemek Tredak committed
90

91
92
93
94
95
96
html_theme_options = {
    "collapse_navigation": False,
    "logo_only": False,
    "version_selector": False,
    "language_selector": False,
}
Przemek Tredak's avatar
Przemek Tredak committed
97

98
99
100
101
napoleon_custom_sections = [
    ("Parallelism parameters", "params_style"),
    ("Optimization parameters", "params_style"),
    ("Values", "params_style"),
102
103
    ("Graphing parameters", "params_style"),
    ("FP8-related parameters", "params_style"),
Paweł Gadziński's avatar
Paweł Gadziński committed
104
    ("Quantization parameters", "params_style"),
105
]
Przemek Tredak's avatar
Przemek Tredak committed
106

107
breathe_projects = {"TransformerEngine": root_path / "docs" / "doxygen" / "xml"}
Przemek Tredak's avatar
Przemek Tredak committed
108
breathe_default_project = "TransformerEngine"
109
110

autoapi_generate_api_docs = False
111
autoapi_dirs = [root_path / "transformer_engine"]
Paweł Gadziński's avatar
Paweł Gadziński committed
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
autoapi_ignore = ["*test*"]


# There are 2 warnings about the same namespace (transformer_engine) in two different c++ api
# docs pages. This seems to be the only way to suppress these warnings.
def setup(app):
    """Custom Sphinx setup to filter warnings."""
    import logging

    # Filter out duplicate C++ declaration warnings
    class DuplicateDeclarationFilter(logging.Filter):
        def filter(self, record):
            message = record.getMessage()
            if "Duplicate C++ declaration" in message and "transformer_engine" in message:
                return False
            return True

    # Apply filter to Sphinx logger
    logger = logging.getLogger("sphinx")
    logger.addFilter(DuplicateDeclarationFilter())