#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import re import sys import glob import sphinx_book_theme # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath("../..")) sys.path.insert(0, os.path.abspath("../../nemo")) sys.path.insert(0, os.path.abspath("../../nemo_text_processing")) from package_info import __version__ templates_path = ["_templates"] autodoc_mock_imports = [ 'torch', 'torch.nn', 'torch.utils', 'torch.optim', 'torch.utils.data', 'torch.utils.data.sampler', 'torchtext', 'torchvision', 'ruamel.yaml', # ruamel.yaml has ., which is troublesome for this regex 'hydra', # hydra-core in requirements, hydra during import 'dateutil', # part of core python 'transformers.tokenization_bert', # has ., troublesome for this regex 'megatron', # megatron-lm in requirements, megatron in import 'sklearn', # scikit_learn in requirements, sklearn in import 'nemo_text_processing.inverse_text_normalization', # Not installed automatically 'nemo_text_processing.text_normalization', # Not installed automatically 'attr', # attrdict in requirements, attr in import 'torchmetrics', # inherited from PTL 'lightning_utilities', # inherited from PTL 'apex', 'joblib', # inherited from optional code 'IPython', 'ipadic', 'psutil', ] _skipped_autodoc_mock_imports = ['wrapt', 'numpy'] for req_path in sorted(list(glob.glob("../../requirements/*.txt"))): if "docs.txt" in req_path: continue req_file = os.path.abspath(os.path.expanduser(req_path)) with open(req_file, 'r') as f: for line in f: line = line.replace("\n", "") req = re.search(r"([a-zA-Z0-9-_]*)", line) if req: req = req.group(1) req = req.replace("-", "_") if req not in autodoc_mock_imports: if req in _skipped_autodoc_mock_imports: print(f"Skipping req : `{req}` (lib {line})") continue autodoc_mock_imports.append(req) print(f"Adding req : `{req}` to autodoc mock requirements (lib {line})") else: print(f"`{req}` already added to autodoc mock requirements (lib {line})") # # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ "sphinx.ext.autodoc", "sphinx.ext.todo", "sphinx.ext.coverage", "sphinx.ext.mathjax", "sphinx.ext.ifconfig", "sphinx.ext.viewcode", "sphinx.ext.napoleon", "sphinx.ext.githubpages", "sphinxcontrib.bibtex", "sphinx.ext.inheritance_diagram", "sphinx.ext.intersphinx", "sphinx.ext.autosectionlabel", "sphinxcontrib.bibtex", "sphinx_copybutton", ] bibtex_bibfiles = [ 'asr/asr_all.bib', 'nlp/nlp_all.bib', 'nlp/text_normalization/tn_itn_all.bib', 'tools/tools_all.bib', 'tts/tts_all.bib', 'text_processing/text_processing_all.bib', 'core/adapters/adapter_bib.bib', ] intersphinx_mapping = { 'pytorch': ('https://pytorch.org/docs/stable', None), 'pytorch-lightning': ('https://pytorch-lightning.readthedocs.io/en/latest/', None), } # Set default flags for all classes. autodoc_default_options = {'members': None, 'undoc-members': None, 'show-inheritance': True} locale_dirs = ['locale/'] # path is example but recommended. gettext_compact = False # optional. # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] source_suffix = ".rst" # The master toctree document. master_doc = "index" # General information about the project. project = "NVIDIA NeMo" copyright = "© 2021-2022 NVIDIA Corporation & Affiliates. All rights reserved." author = "NVIDIA CORPORATION" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # The short X.Y version. # version = "0.10.0" version = __version__ # The full version, including alpha/beta/rc tags. # release = "0.9.0" release = __version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = [] # The name of the Pygments (syntax highlighting) style to use. pygments_style = "default" ### Previous NeMo theme # # NVIDIA theme settings. # html_theme = 'nvidia_theme' # html_theme_path = ["."] # html_theme_options = { # 'display_version': True, # 'project_version': version, # 'project_name': project, # 'logo_path': None, # 'logo_only': True, # } # html_title = 'Introduction' # html_logo = html_theme_options["logo_path"] # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = "nemodoc" ### from TLT conf.py # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # # html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] html_theme = "sphinx_book_theme" html_logo = os.path.join('nv_logo.png') html_title = 'NVIDIA NeMo' html_theme_options = { 'logo_only': True, 'display_version': True, # 'prev_next_buttons_location': 'bottom', # 'style_external_links': False, # 'style_nav_header_background': '#000000', # Toc options 'collapse_navigation': False, # 'sticky_navigation': False, 'navigation_depth': 10, # 'includehidden': False, # 'titles_only': False, # Sphinx Book theme, 'repository_url': 'https://github.com/NVIDIA/NeMo', 'use_repository_button': True, 'show_navbar_depth': 1, 'show_toc_level': 10, } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_favicon = 'favicon.ico' html_static_path = ['_static'] html_last_updated_fmt = '' def setup(app): app.add_css_file('css/custom.css') app.add_js_file('js/pk_scripts.js') # html_css_files = [ # './custom.css', # ] # html_js_files = [ # './pk_scripts.js', # ]