release: cut v1.0.0
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
This commit is contained in:
@@ -190,9 +190,7 @@ class TestSTOCHVsTA:
|
||||
close = ohlcv_500["close"]
|
||||
|
||||
ft_slowk, ft_slowd = ferro_ta.STOCH(
|
||||
high, low, close,
|
||||
fastk_period=14, slowk_period=3,
|
||||
slowd_period=3
|
||||
high, low, close, fastk_period=14, slowk_period=3, slowd_period=3
|
||||
)
|
||||
|
||||
# Values in valid region must be within [0, 100]
|
||||
@@ -200,16 +198,21 @@ class TestSTOCHVsTA:
|
||||
valid_d = ft_slowd[np.isfinite(ft_slowd)]
|
||||
assert len(valid_k) > 0, "STOCH slowk should have valid values"
|
||||
assert len(valid_d) > 0, "STOCH slowd should have valid values"
|
||||
assert np.all(valid_k >= 0.0) and np.all(valid_k <= 100.0), \
|
||||
assert np.all(valid_k >= 0.0) and np.all(valid_k <= 100.0), (
|
||||
"STOCH slowk must be in [0, 100]"
|
||||
assert np.all(valid_d >= 0.0) and np.all(valid_d <= 100.0), \
|
||||
)
|
||||
assert np.all(valid_d >= 0.0) and np.all(valid_d <= 100.0), (
|
||||
"STOCH slowd must be in [0, 100]"
|
||||
)
|
||||
|
||||
# Warm-up: TA-Lib STOCH NaN count = fastk_period + slowk_period - 1
|
||||
expected_nan = 14 + 3 + 1 - 1 # = fastk_period + slowk_period (TA-Lib convention)
|
||||
expected_nan = (
|
||||
14 + 3 + 1 - 1
|
||||
) # = fastk_period + slowk_period (TA-Lib convention)
|
||||
actual_nan_k = int(np.sum(np.isnan(ft_slowk)))
|
||||
assert actual_nan_k == expected_nan, \
|
||||
assert actual_nan_k == expected_nan, (
|
||||
f"STOCH slowk NaN warmup: expected {expected_nan}, got {actual_nan_k}"
|
||||
)
|
||||
|
||||
|
||||
class TestWILLRVsTA:
|
||||
|
||||
Reference in New Issue
Block a user