Skip to content

release: qualify stable 0.1.0 - #25

Merged
stefan-jansen merged 49 commits into
mainfrom
release/0.1.0-readiness
Aug 8, 2026
Merged

stefan-jansen merged 49 commits into
mainfrom
release/0.1.0-readiness

Conversation

@stefan-jansen

Copy link
Copy Markdown
Contributor

Completes the stable 0.1.0 release-readiness work with zero open Critical or High findings.

Final qualification passed at https://github.com/ml4t/engineer/actions/runs/31255732600 on commit 63f1bf0:

  • Python 3.12-3.14 across Linux, macOS, and Windows
  • Blocking Python 3.15.0rc1 checks on all three operating systems
  • Installation, import, tests, type checks, and package builds
  • 120 installed-wheel test processes
  • 95.72% line and 89.39% branch coverage
  • Dependency audit, archive integrity, and secret scanning
  • Stable ml4t-specs 0.1.0 dependency

After merge, tag v0.1.0 will trigger tag-specific qualification and publication.

Copilot AI lite review requested due to automatic review settings August 8, 2026 17:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes stable v0.1.0 release-readiness by tightening runtime compatibility (notably for CPython 3.15), hardening a few operational/security edges, and expanding regression coverage around public APIs, docs/examples, and critical computations.

Changes:

  • Make core runtime resilient when compiled dependencies are unavailable (Python 3.15), including Polars dispatch repair and a Numba decorator fallback.
  • Harden and validate several critical computations/APIs (e.g., ATR triple-barrier normalization/execution semantics, transfer entropy definition, schema validation, bar sampler input validation).
  • Increase release qualification confidence via expanded tests, executable documentation workflows, and example execution checks.

Reviewed changes

Copilot reviewed 213 out of 214 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/type_stubs/matplotlib/pyplot.pyi Minimal stub surface for optional Matplotlib usage in tests/docs.
tests/type_stubs/matplotlib/figure.pyi Minimal Figure/SubFigure stub for typing.
tests/type_stubs/matplotlib/axes.pyi Minimal Axes stub for typing.
tests/type_stubs/matplotlib/init.pyi Stub package docstring for Matplotlib typing surface.
tests/type_stubs/duckdb/init.pyi Minimal DuckDB stub surface for typing/tests.
tests/test_volume_comprehensive.py Tighten AD numba behavior expectations for mismatched lengths.
tests/test_risk.py Remove SciPy dependency in fixtures; add rolling-window correctness tests.
tests/test_polars_compat.py Regression tests for CPython 3.15 Polars dispatch repair.
tests/test_numba_compat.py Regression tests for behavior when Numba is unavailable.
tests/test_new_labeling_methods.py Add config/argument conflict tests and stronger config-driven behavior checks.
tests/test_fdiff.py Make statsmodels optional; gate diagnostics tests on availability.
tests/test_examples.py Execute example scripts in subprocess to validate end-user flows.
tests/test_exact_validation.py Replace emoji markers in messages with ASCII-safe text.
tests/test_documentation_workflows.py Run documentation workflow runner as a regression test.
tests/test_cross_asset.py Add pairwise-complete-sample test for beta-to-market.
tests/test_coverage_policy.py New tests for release coverage threshold enforcement.
tests/test_catalog.py Expand FeatureCatalog behavior tests, including proxy/default catalog behaviors.
tests/test_bars_specialized.py Add VWAP behavior test for zero-volume incomplete dollar bars.
tests/test_atr_barriers.py Add ATR normalization, grouping isolation, and event-time preservation tests.
tests/test_artifacts.py Add conversion/normalization tests for artifact specs/components.
tests/test_all_features_integration.py Strengthen integration tests incl. panel isolation and timestamp usage.
tests/store/test_offline.py Add SQL-injection-style identifier safety tests and quoting support tests.
tests/relationships/test_plot_correlation.py Skip plotting tests when Matplotlib isn’t present.
tests/features/volume/test_volume_coverage.py Make randint dtype explicit for large integer ranges.
tests/features/utils/test_ma_types.py Add dispatcher contract tests for MA type routing/validation.
tests/features/trend/test_donchian.py Add Donchian channel expression contract tests.
tests/features/test_volume_crossasset_coverage.py Add transfer entropy definition and validation tests.
tests/features/momentum/test_momentum_numba_coverage.py Add INT_EMA end-clamp regression test.
tests/features/momentum/test_adx.py Tighten ADX parameter/length validation expectations.
tests/documentation_workflows.py Implement extraction/execution of marked Python code blocks from docs.
tests/core/test_schemas_coverage.py Add test for strict time-column requirement when flexible time is disabled.
tests/core/test_registry.py Add decorator/metadata validation tests and warning coverage.
tests/bars/test_run_bars.py Add validation tests for invalid warmup/probability settings.
src/ml4t/engineer/store/offline.py Add safe identifier quoting + column validation for DuckDB-backed store.
src/ml4t/engineer/store/init.py Export FeatureStoreError from store package.
src/ml4t/engineer/relationships/correlation.py Replace Kendall implementation to avoid SciPy; adjust Polars/Pandas conversions.
src/ml4t/engineer/logging/config.py Improve typing for presets and environment-driven config hydration.
src/ml4t/engineer/labeling/utils.py Refactor future-price lookup to return joined lookup frame (reused by caller).
src/ml4t/engineer/labeling/uniqueness.py Tighten typing and add robust validation for sample weight calculation.
src/ml4t/engineer/labeling/atr_barriers.py Normalize ATR distances to return fractions; group-safe ATR; preserve event_time.
src/ml4t/engineer/labeling/init.py Improve typing for registry integration and remove type ignores.
src/ml4t/engineer/features/volume/obv.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/volume/adosc.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/volume/ad.py Route through Numba fallback decorator; enforce length validation in ad_numba.
src/ml4t/engineer/features/volatility/yang_zhang_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/volatility_regime_probability.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/volatility_percentile_rank.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/volatility_of_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/trange.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/volatility/rogers_satchell_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/realized_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/parkinson_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/natr.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/volatility/garman_klass_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/garch_forecast.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/volatility/ewma_volatility.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/volatility/conditional_volatility_ratio.py Preserve nulls through ratio computation instead of forcing 1.0.
src/ml4t/engineer/features/volatility/bollinger_bands.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/volatility/atr.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/wma.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/trima.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/tema.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/t3.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/sma.py Expand return typing; route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/midpoint.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/kama.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/ema.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/trend/donchian.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/trend/dema.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/var.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/tsf.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/structural_break.py Route through Numba fallback decorator; metadata tweaks.
src/ml4t/engineer/features/statistics/stddev.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/linearreg.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/linearreg_slope.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/linearreg_intercept.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/linearreg_angle.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/statistics/avgdev.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/regime.py Route through Numba fallback decorator; metadata/parameter defaults adjustments.
src/ml4t/engineer/features/price_transform/wclprice.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/price_transform/typprice.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/price_transform/midprice.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/price_transform/medprice.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/price_transform/avgprice.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/momentum/willr.py Route through Numba fallback decorator and tighten ndarray conversions.
src/ml4t/engineer/features/momentum/ultosc.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/momentum/trix.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/stochrsi.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/stochf.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/stochastic.py Route through Numba fallback decorator and tighten ndarray conversions.
src/ml4t/engineer/features/momentum/sar.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/momentum/rsi.py Route through Numba fallback decorator; metadata/parameter defaults adjustments.
src/ml4t/engineer/features/momentum/rocr100.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/rocr.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/rocp.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/roc.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/ppo.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/plus_dm.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/mom.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/minus_dm.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/mfi.py Route through Numba fallback decorator and tighten ndarray conversions.
src/ml4t/engineer/features/momentum/macdfix.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/macd.py Fix TA-Lib EMA helper bounds handling; route through Numba fallback decorator.
src/ml4t/engineer/features/momentum/imi.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/directional.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/momentum/cmo.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/cci.py Route through Numba fallback decorator and tighten ndarray conversions.
src/ml4t/engineer/features/momentum/bop.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/aroon.py Route through Numba fallback decorator and tighten ndarray conversions/validation.
src/ml4t/engineer/features/momentum/apo.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/momentum/adxr.py Adjust Polars batch mapping to return Series consistently.
src/ml4t/engineer/features/momentum/adx.py Add window validation and strict length validation; route through Numba fallback decorator.
src/ml4t/engineer/features/ml/volatility_adjusted_returns.py Make volatility column optional; compute rolling std when omitted.
src/ml4t/engineer/features/ml/time_decay_weights.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/rolling_entropy.py Route through Numba fallback decorator; metadata tweaks.
src/ml4t/engineer/features/ml/regime_conditional_features.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/percentile_rank_features.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/multi_horizon_returns.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/interaction_features.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/fourier_features.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/directional_targets.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/cyclical_encode.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/ml/create_lag_features.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/volume_weighted_price_momentum.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/volume_synchronicity.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/volume_at_price_ratio.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/trade_intensity.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/roll_spread_estimator.py Preserve nulls through spread computation instead of forcing 0.
src/ml4t/engineer/features/microstructure/realized_spread.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/quote_stuffing_indicator.py Preserve nulls through indicator computation instead of forcing 0/1.
src/ml4t/engineer/features/microstructure/price_impact_ratio.py Preserve nulls through ratio computation instead of forcing 1.0.
src/ml4t/engineer/features/microstructure/order_flow_imbalance.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/order_book.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/kyle_lambda.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/effective_tick_rule.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/microstructure/amihud_illiquidity.py Metadata tweak (lookback field adjustments).
src/ml4t/engineer/features/math/sum.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/math/min.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/math/max.py Route through Numba fallback decorator; metadata tweak.
src/ml4t/engineer/features/math/AGENTS.md Formatting cleanup in documentation snippet.
src/ml4t/engineer/features/fdiff.py Make statsmodels optional; improve error messaging; route through Numba fallback decorator.
src/ml4t/engineer/features/cross_asset.py Fix transfer entropy definition; add strict validation; route through Numba fallback decorator.
src/ml4t/engineer/features/AGENTS.md Documentation formatting cleanup for compute_features examples.
src/ml4t/engineer/discovery/catalog.py Add lookback/tags APIs; clarify lookback semantics; proxy delegates.
src/ml4t/engineer/core/schemas.py Make schema validation strict; simplify integrity checks.
src/ml4t/engineer/core/registry.py Clarify lookback callable semantics in docs/examples.
src/ml4t/engineer/core/dispatch.py Centralize dispatch mappings for compute_features signature inference.
src/ml4t/engineer/config/preprocessing_config.py Mark TYPE_CHECKING imports as pragma no cover.
src/ml4t/engineer/config/labeling.py Add stronger pydantic validation + portable timedelta serialization.
src/ml4t/engineer/config/base.py Implement portable timedelta encoding/decoding helpers.
src/ml4t/engineer/config/AGENTS.md Documentation formatting cleanup for config examples.
src/ml4t/engineer/bars/volume.py Return typed empty results; improve empty-path schema correctness.
src/ml4t/engineer/bars/vectorized.py Return typed empty results; route through Numba fallback decorator.
src/ml4t/engineer/bars/tick.py Return typed empty results.
src/ml4t/engineer/bars/run.py Return typed empty results; route through Numba fallback decorator.
src/ml4t/engineer/bars/base.py Add stricter input validation and a typed empty result factory.
src/ml4t/engineer/_polars_compat.py Add Python 3.15 Polars Series dispatch repair.
src/ml4t/engineer/_numba.py Add Numba decorator loader with identity fallback.
src/ml4t/engineer/init.py Import Polars compatibility shim at package import time.
README.md Update example params (Bollinger params naming) in README.
pyproject.toml Mark project stable; constrain deps; gate compiled deps on <3.15; add pip-audit; enable branch coverage.
examples/README.md Align example descriptions with deterministic/no-local-data behavior.
examples/fdiff_example.py Replace file/plot-based example with deterministic synthetic-data example.
docs/user-guide/preprocessing.md Add executable workflow block for preprocessing example.
docs/user-guide/ml-readiness.md Add executable workflow block + assertions for registry use.
docs/user-guide/fractional-differencing.md Add executable workflow blocks and update compute_features usage guidance.
docs/user-guide/features.md Add executable workflow block, update parameter names, and clarify ordering/output semantics.
docs/user-guide/discovery.md Add executable workflow block and clarify lookback semantics.
docs/user-guide/dataset-builder.md Add executable workflow block for dataset builder example.
docs/user-guide/bars.md Add executable workflow block for bars quickstart example.
docs/index.md Add executable workflow block and align quickstart API outputs/columns.
docs/getting-started/quickstart.md Add executable workflow block and update parameter names.
AGENTS.md Align top-level quickstart with updated feature column names.
.pre-commit-config.yaml Update ruff-pre-commit rev.
.github/workflows/release.yml Rework release workflow to run qualification before publish/release.
.github/workflows/docs.yml Pin action SHAs and run documented workflows in docs CI.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +66 to +67

return f'"{identifier.replace('"', '""')}"'


def ensure_polars_series_dispatch() -> None:
"""Repair pola-rs/polars#28347 only when its Python 3.15 failure is present."""
@stefan-jansen
stefan-jansen merged commit 8ea892a into main Aug 8, 2026
35 checks passed
@stefan-jansen
stefan-jansen deleted the release/0.1.0-readiness branch August 11, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants