307beeca02
Prepare the first public 1.0.0 release and finish the remaining CI hardening work. Highlights: - align Python, Rust, WASM, Conda, API, MCP, and docs version metadata to 1.0.0 - promote package metadata to Production/Stable and update stability/versioning docs for the stable series - move the accumulated Unreleased notes into a dated 1.0.0 changelog section and keep a fresh top-level Unreleased block - strengthen the changelog checker so it validates a single top-level Unreleased section - fix the CI/package support mismatch by declaring Python >=3.10 consistently and gating pandas-ta extras to Python 3.12+ - restore Sphinx autodoc compatibility for documented ferro_ta.<module> imports by registering module aliases - make the TA-Lib benchmark guardrail less flaky by checking median and tail-percentile speedups instead of failing on a single mild outlier - switch PyPI publishing to OIDC-only trusted publishing and wire the changelog check into the required CI gate - apply the Ruff-driven cleanup across the Python and test tree and refresh uv/cargo lockfiles Validated locally: - python3 scripts/check_changelog.py - uv run --with ruff ruff check python tests - uv run --with ruff ruff format --check python tests - uv lock --check - sphinx-build -b html docs docs/_build -W --keep-going - build/install the ferro_ta 1.0.0 wheel successfully
69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
# 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
|
|
import sys
|
|
|
|
# Add the python source directory so autodoc can import ferro_ta
|
|
# Only add if ferro_ta is not already installed (e.g. from a wheel in CI)
|
|
try:
|
|
import ferro_ta # noqa: F401
|
|
except ImportError:
|
|
sys.path.insert(0, os.path.abspath("../python"))
|
|
|
|
# -- Project information -------------------------------------------------------
|
|
project = "ferro-ta"
|
|
copyright = "2024, pratikbhadane24"
|
|
author = "pratikbhadane24"
|
|
# Version from env (e.g. set in CI from git tag) or default
|
|
release = os.environ.get("FERRO_TA_VERSION", "1.0.0")
|
|
version = release
|
|
|
|
# -- General configuration ----------------------------------------------------
|
|
extensions = [
|
|
"sphinx.ext.autodoc",
|
|
"sphinx.ext.viewcode",
|
|
"sphinx.ext.napoleon", # Google / NumPy-style docstrings
|
|
"sphinx.ext.autosummary",
|
|
"sphinx.ext.intersphinx",
|
|
]
|
|
|
|
intersphinx_mapping = {
|
|
"python": ("https://docs.python.org/3", None),
|
|
"numpy": ("https://numpy.org/doc/stable", None),
|
|
"pandas": ("https://pandas.pydata.org/docs", None),
|
|
}
|
|
|
|
templates_path = ["_templates"]
|
|
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
|
|
|
# -- Options for HTML output --------------------------------------------------
|
|
html_theme = "sphinx_rtd_theme"
|
|
html_static_path = ["_static"]
|
|
html_title = "ferro-ta Documentation"
|
|
html_short_title = "ferro-ta"
|
|
|
|
# -- autodoc ------------------------------------------------------------------
|
|
autodoc_default_options = {
|
|
"members": True,
|
|
"undoc-members": True,
|
|
"show-inheritance": True,
|
|
}
|
|
autodoc_typehints = "description"
|
|
napoleon_google_docstring = False
|
|
napoleon_numpy_docstring = True
|
|
|
|
# Suppress autodoc import warnings for modules that can't be loaded without
|
|
# the compiled Rust extension (_ferro_ta). These are expected when building
|
|
# docs without the wheel; the documented API is still accurate.
|
|
# Also suppress duplicate object descriptions that arise when Rust-backed
|
|
# streaming classes (defined in ferro_ta._ferro_ta) are re-exported through
|
|
# ferro_ta.streaming — autodoc sees them in both modules.
|
|
suppress_warnings = [
|
|
"autodoc.import_object",
|
|
"ref.doc",
|
|
"py.duplicate",
|
|
]
|