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
2.1 KiB
2.1 KiB
Plugin Catalog
A curated list of ferro-ta plugins and community extensions.
Note: This catalog is community-maintained and provided on a best-effort basis. Plugins are not endorsed or audited by the ferro-ta maintainers. Verify each plugin before use in production.
How to Add Your Plugin
- Verify that your plugin works with the current ferro-ta release.
- Open a pull request adding a row to the table below. Include:
- Name: package name (PyPI or GitHub)
- Description: one-line summary of what the plugin adds
- Install:
pip install ...command - Link: GitHub or PyPI URL
Listing criteria:
- Has a README or documentation describing what it does.
- Works with the current or previous minor version of ferro-ta.
- Is publicly available (PyPI or GitHub).
Known Plugins
| Name | Description | Install | Link |
|---|---|---|---|
| (none yet — be the first!) |
Reference Implementation
The examples/custom_indicator.py file in the ferro-ta repository serves as
the canonical reference for building a plugin. See Writing a plugin
for the full guide.
# Minimal plugin example
from ferro_ta.registry import register
from ferro_ta import RSI, SMA
def SMOOTH_RSI(close, timeperiod=14, smooth=3):
"""Smoothed RSI: RSI of RSI values."""
return SMA(RSI(close, timeperiod=timeperiod), timeperiod=smooth)
register("SMOOTH_RSI", SMOOTH_RSI)
Publishing Your Plugin to PyPI
- Implement your indicator(s) following the plugin contract.
- Package with pyproject.toml using the
ferro_ta.pluginsentry point:
[project]
name = "ferro-ta-myplugin"
version = "1.0.0"
dependencies = ["ferro_ta>=1.0.0"]
[project.entry-points."ferro_ta.plugins"]
auto_register = "ferro_ta_myplugin:register_all"
- Publish to PyPI:
pip install build twine
python -m build
twine upload dist/*
- Submit a PR to add your plugin to this catalog.
Removal Requests
If you are the maintainer of a listed plugin and want it removed, open a GitHub issue with the title "Plugin catalog removal: ".