123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- """
- Configuration file for the Sphinx documentation builder.
- For the full list of built-in configuration values, see the documentation:
- https://www.sphinx-doc.org/en/master/usage/configuration.html
- """
- import os
- from functools import wraps
- from pathlib import Path
- from sphinxcontrib_autodocgen import AutoDocGen
- os.environ["UNFCCC_GHG_ROOT_PATH"] = str(Path("..") / "..")
- import unfccc_ghg_data # noqa: E402, I001
- # -- Project information -----------------------------------------------------
- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
- project = "Country greenhouse gas data submitted to the UNFCCC"
- # put the authors in their own variable, so they can be reused later
- authors = ", ".join(["Johannes Gütschow"])
- # add a copyright year variable, we can extend this over time in future as
- # needed
- copyright_year = "2023"
- copyright = f"{copyright_year}, {authors}"
- # -- General configuration ---------------------------------------------------
- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
- extensions = [
- # create documentation automatically from source code
- # https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html
- "sphinx.ext.autodoc",
- # automatic summary
- "sphinx.ext.autosummary",
- # automatic summary with better control
- "sphinxcontrib_autodocgen",
- # tell sphinx that we're using numpy style docstrings
- # https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html
- "sphinx.ext.napoleon",
- # add support for type hints too (so type hints are included next to
- # argument and return types in docs)
- # https://github.com/tox-dev/sphinx-autodoc-typehints
- # this must come after napoleon
- # in the list for things to work properly
- # https://github.com/tox-dev/sphinx-autodoc-typehints#compatibility-with-sphinxextnapoleon
- "sphinx_autodoc_typehints",
- # jupytext rendered notebook support (also loads myst_parser)
- "myst_nb",
- # links to other docs
- "sphinx.ext.intersphinx",
- # add source code to docs
- "sphinx.ext.viewcode",
- # add copy code button to code examples
- "sphinx_copybutton",
- # math support
- "sphinx.ext.mathjax",
- # execute code
- "sphinx_exec_code",
- # tables in markdown documents
- "sphinx_markdown_tables",
- ]
- # general sphinx settings
- # https://www.sphinx-doc.org/en/master/usage/configuration.html
- # Don't include module names in object names (can also be left on,
- # depends a bit how your project is structured and what you prefer)
- add_module_names = False
- # Other global settings which we've never used but are included by default
- templates_path = ["_templates"]
- # Avoid sphinx thinking that conf.py is a source file because we use .py
- # endings for notebooks
- exclude_patterns = ["conf.py"]
- # Stop sphinx doing funny things with byte order markers
- source_encoding = "utf-8"
- # configure default settings for autodoc directives
- # https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#directives
- autodoc_default_options = {
- # Show the inheritance of classes
- "show-inheritance": True,
- }
- # autosummary with autodocgen
- # make sure autosummary doesn't interfere
- autosummary_generate = True
- autosummary_generate_overwrite = False
- autodocgen_config = [
- {
- "modules": [unfccc_ghg_data],
- "generated_source_dir": "docs/source/api",
- # choose a different title for specific modules, e.g. the toplevel one
- "module_title_decider": lambda modulename: "API Reference"
- if modulename == "unfccc_ghg_data"
- else modulename,
- }
- ]
- # monkey patch to remove leading newlines
- generate_module_rst_orig = AutoDocGen.generate_module_rst
- @wraps(generate_module_rst_orig)
- def _generate_module_rst_new(*args, **kwargs):
- default = generate_module_rst_orig(*args, **kwargs)
- out = default.lstrip("\n")
- if not out.endswith("\n"):
- out = f"{out}\n"
- return out
- AutoDocGen.generate_module_rst = _generate_module_rst_new
- # napoleon extension settings
- # https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html
- # We use numpy style docstrings
- napoleon_numpy_docstring = True
- # We don't use google docstrings
- napoleon_google_docstring = False
- # Don't use separate rtype for the return documentation
- napoleon_use_rtype = False
- # autodoc type hints settings
- # https://github.com/tox-dev/sphinx-autodoc-typehints
- # include full name of classes when expanding type hints?
- typehints_fully_qualified = True
- # Add rtype directive if needed
- typehints_document_rtype = True
- # Put the return type as part of the return documentation
- typehints_use_rtype = False
- # Left-align maths equations
- mathjax3_config = {"chtml": {"displayAlign": "center"}}
- # myst configuration
- myst_enable_extensions = ["amsmath", "dollarmath"]
- # cache because we save our notebooks as `.py` files i.e. without output
- # stored so auto doesn't work (it just ends up being run every time)
- nb_execution_mode = "cache"
- nb_execution_raise_on_error = True
- nb_execution_show_tb = True
- nb_execution_timeout = 120
- nb_custom_formats = {".py": ["jupytext.reads", {"fmt": "py:percent"}]}
- # exec-code config
- exec_code_working_dir = "." # Path('..') / '..'
- exec_code_source_folders = [Path("..") / ".." / "src" / "unfccc_ghg_data"]
- exec_code_example_dir = "."
- # -- Options for HTML output -------------------------------------------------
- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
- # Pick your theme for html output, we typically use the read the docs theme
- html_theme = "sphinx_book_theme"
- html_static_path = ["_static"]
- html_theme_options = {
- "repository_url": "https://github.com/JGuetschow/UNFCCC_non-AnnexI_data",
- "repository_branch": "main",
- "path_to_docs": "docs/source",
- "use_repository_button": True,
- "use_issues_button": True,
- "use_edit_page_button": True,
- }
- # Ignore ipynb files when building (see https://github.com/executablebooks/MyST-NB/issues/363).
- def setup(app):
- """
- Set up the Sphinx app
- """
- app.registry.source_suffix.pop(".ipynb", None)
- # Intersphinx mapping
- intersphinx_mapping = {
- "numpy": ("https://docs.scipy.org/doc/numpy", None),
- "pandas": ("https://pandas.pydata.org/pandas-docs/stable", None),
- "python": ("https://docs.python.org/3", None),
- "pyam": ("https://pyam-iamc.readthedocs.io/en/latest", None),
- "scmdata": ("https://scmdata.readthedocs.io/en/latest", None),
- "xarray": ("http://xarray.pydata.org/en/stable", None),
- "pint": (
- "https://pint.readthedocs.io/en/latest",
- None,
- ),
- }
|