diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da83d87..8fe47b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -184,6 +184,7 @@ jobs: - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: version: ${{ env.UV_VERSION }} + cache-suffix: python-${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: diff --git a/.github/workflows/native-stress.yml b/.github/workflows/native-stress.yml index cac84cb..afc6a43 100644 --- a/.github/workflows/native-stress.yml +++ b/.github/workflows/native-stress.yml @@ -81,6 +81,7 @@ jobs: - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 with: version: "0.10.9" + cache-suffix: python-${{ matrix.python-version }} - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 with: python-version: ${{ matrix.python-version }} diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index 796522d..07255c6 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -47,6 +47,21 @@ Use the [upstream installation guide](https://github.com/TA-Lib/ta-lib-python#in when your platform requires a source build. Comparisons must declare matching moving-average types: Engineer's APO/PPO default remains SMA (`matype=0`), while TA-Lib 0.8 defaults to EMA. +### Feature store + +The `store` extra adds DuckDB and PyArrow; the core quick start does not need it. +Our Python 3.15 qualification used DuckDB 1.5.6 source builds on Linux, macOS and Windows. +If no matching wheel is available, install the +[upstream native build prerequisites](https://duckdb.org/docs/current/dev/building/python) +before enabling the extra. Source builds need a C++ toolchain and can take tens of minutes. + +Within the source checkout, enable the extra and verify both imports: + +```bash +uv sync --no-dev --extra store +uv run --no-sync python -c "import duckdb; import ml4t.engineer.store; print(duckdb.__version__)" +``` + ### Statistical diagnostics `find_optimal_d()` and `fdiff_diagnostics()` use Statsmodels for the augmented