"""MCPower Sphinx documentation configuration."""

import importlib.metadata

project = "MCPower"
author = "Paweł Lenartowicz"
release = importlib.metadata.version("MCPower")
version = release
copyright = "2025–2026, Paweł Lenartowicz"

# -- Extensions --
extensions = [
    "myst_nb",
    "sphinx.ext.autodoc",
    "sphinx.ext.napoleon",
    "sphinx.ext.viewcode",
    "sphinx.ext.intersphinx",
    "sphinx.ext.mathjax",
]

# -- MyST (Markdown) --
# myst-nb auto-registers .md; no manual source_suffix needed
myst_enable_extensions = ["colon_fence", "fieldlist", "dollarmath", "amsmath"]
myst_heading_anchors = 4  # auto-generate anchor targets for h1–h4

# -- MyST-NB (notebook execution) --
nb_execution_mode = "cache"
nb_execution_timeout = 120
nb_execution_allow_errors = False
nb_merge_streams = False
nb_execution_cache_path = "_build/.jupyter_cache"

# -- Autodoc --
autodoc_member_order = "bysource"
autodoc_typehints = "description"
autodoc_default_options = {
    "members": True,
    "show-inheritance": True,
}

# -- Napoleon (Google-style docstrings) --
napoleon_google_docstring = True
napoleon_numpy_docstring = False
napoleon_include_init_with_doc = True
napoleon_use_param = True
napoleon_use_rtype = True

# -- Intersphinx --
intersphinx_mapping = {
    "python": ("https://docs.python.org/3", None),
    "numpy": ("https://numpy.org/doc/stable/", None),
    "matplotlib": ("https://matplotlib.org/stable/", None),
    "pandas": ("https://pandas.pydata.org/docs/", None),
}

# -- Theme --
html_theme = "furo"
html_title = "MCPower"
html_static_path = ["_static"]
html_css_files = ["custom.css"]
templates_path = ["_templates"]

html_theme_options = {
    "footer_icons": [
        {
            "name": "GitHub",
            "url": "https://github.com/pawlenartowicz/MCPower",
            "html": '<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>',
            "class": "",
        },
    ],
    "light_css_variables": {
        "color-brand-primary": "#5B4460",
        "color-brand-content": "#5B4460",
    },
    "dark_css_variables": {
        "color-brand-primary": "#B88FC2",
        "color-brand-content": "#B88FC2",
    },
}

# -- Output --
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
