diff --git a/docs/conf.py b/docs/conf.py index f2481f107267..5e3653860b8a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,3 +1,102 @@ -from sphinx_pyproject import SphinxConfig +# Configuration file for the Sphinx documentation builder. +# https://www.sphinx-doc.org/en/master/usage/configuration.html +# +# Project metadata (name/version/authors) is single-sourced from pyproject.toml +# so it never drifts from the packaging metadata. +import tomllib +from pathlib import Path -project = SphinxConfig("../pyproject.toml", globalns=globals()).name +_pyproject = tomllib.loads( + (Path(__file__).parent.parent / "pyproject.toml").read_text(encoding="utf-8") +) +_project = _pyproject["project"] + +project = _project["name"] +author = ", ".join(a["name"] for a in _project.get("authors", [])) +release = version = _project["version"] +copyright = "2014, TheAlgorithms" # noqa: A001 # Sphinx requires this exact name + +extensions = [ + "autoapi.extension", + "myst_parser", +] + +autoapi_dirs = [ + "audio_filters", + "backtracking", + "bit_manipulation", + "blockchain", + "boolean_algebra", + "cellular_automata", + "ciphers", + "computer_vision", + "conversions", + "data_compression", + "data_structures", + "digital_image_processing", + "divide_and_conquer", + "dynamic_programming", + "electronics", + "file_transfer", + "financial", + "fractals", + "fuzzy_logic", + "genetic_algorithm", + "geodesy", + "geometry", + "graphics", + "graphs", + "greedy_methods", + "hashes", + "knapsack", + "linear_algebra", + "linear_programming", + "machine_learning", + "maths", + "matrix", + "networking_flow", + "neural_network", + "other", + "physics", + "project_euler", + "quantum", + "scheduling", + "searches", + "sorts", + "strings", + "web_programming", +] +autoapi_member_order = "groupwise" + +exclude_patterns = [ + ".*/*", + "docs/", +] + +html_theme = "alabaster" +html_static_path = ["_static"] +templates_path = ["_templates"] + +source_suffix = { + ".rst": "restructuredtext", + ".md": "markdown", +} + +myst_enable_extensions = [ + "amsmath", + "attrs_inline", + "colon_fence", + "deflist", + "dollarmath", + "fieldlist", + "html_admonition", + "html_image", + "replacements", + "smartquotes", + "strikethrough", + "substitution", + "tasklist", +] +myst_fence_as_directive = [ + "include", +] diff --git a/pyproject.toml b/pyproject.toml index cb0ae624842e..f6eb2e5e562f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,13 +19,12 @@ dependencies = [ "matplotlib>=3.9.3", "numpy>=2.1.3", "opencv-python>=4.10.0.84", - "pandas>=2.2.3", + "pandas>=2.3.3", "pillow>=11.3", "qiskit>=2", "rich>=13.9.4", "scikit-learn>=1.5.2", "scipy>=1.16.2", - "sphinx-pyproject>=0.3", "statsmodels>=0.14.4", "sympy>=1.13.3", "tweepy>=4.14", @@ -40,8 +39,8 @@ test = [ ] docs = [ "myst-parser>=4", + "sphinx>=8.2", "sphinx-autoapi>=3.4", - "sphinx-pyproject>=0.3", ] euler-validate = [ "httpx>=0.28.1", @@ -185,86 +184,3 @@ report.omit = [ "project_euler/*", ] report.sort = "Cover" - -[tool.sphinx-pyproject] -copyright = "2014, TheAlgorithms" -autoapi_dirs = [ - "audio_filters", - "backtracking", - "bit_manipulation", - "blockchain", - "boolean_algebra", - "cellular_automata", - "ciphers", - "computer_vision", - "conversions", - "data_compression", - "data_structures", - "digital_image_processing", - "divide_and_conquer", - "dynamic_programming", - "electronics", - "file_transfer", - "financial", - "fractals", - "fuzzy_logic", - "genetic_algorithm", - "geodesy", - "geometry", - "graphics", - "graphs", - "greedy_methods", - "hashes", - "knapsack", - "linear_algebra", - "linear_programming", - "machine_learning", - "maths", - "matrix", - "networking_flow", - "neural_network", - "other", - "physics", - "project_euler", - "quantum", - "scheduling", - "searches", - "sorts", - "strings", - "web_programming", -] -autoapi_member_order = "groupwise" -# autoapi_python_use_implicit_namespaces = true -exclude_patterns = [ - ".*/*", - "docs/", -] -extensions = [ - "autoapi.extension", - "myst_parser", -] -html_static_path = [ "_static" ] -html_theme = "alabaster" -myst_enable_extensions = [ - "amsmath", - "attrs_inline", - "colon_fence", - "deflist", - "dollarmath", - "fieldlist", - "html_admonition", - "html_image", - # "linkify", - "replacements", - "smartquotes", - "strikethrough", - "substitution", - "tasklist", -] -myst_fence_as_directive = [ - "include", -] -templates_path = [ "_templates" ] -source_suffix.".rst" = "restructuredtext" -source_suffix.".md" = "markdown" -# ".txt" = "markdown"