Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,11 @@ jobs:
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
- name: Install macOS OpenMP runtime for optional ML
if: runner.os == 'macOS'
env:
HOMEBREW_NO_AUTO_UPDATE: "1"
run: brew install libomp
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: release-candidate
Expand All @@ -201,7 +206,7 @@ jobs:
--expected-tree "$(git rev-parse 'HEAD^{tree}')"
- name: Export installed-wheel test environment
run: >-
uv export --locked --group dev --extra ta --extra store --extra viz
uv export --locked --group dev --extra ta --extra store --extra viz --extra ml
--no-emit-project --no-hashes
--output-file "${{ runner.temp }}/test-requirements.txt"
- name: Install the candidate wheel in a clean environment
Expand All @@ -217,6 +222,12 @@ jobs:
run: >-
uv run --python .artifact-venv --no-project
python scripts/ci/candidate.py verify-installed candidate --source-root src
- name: Import optional ML dependencies
run: >-
uv run --python .artifact-venv --no-project
python -c "import numpy, scipy, sklearn, shap, lightgbm;
print(numpy.__version__, scipy.__version__, sklearn.__version__,
shap.__version__, lightgbm.__version__)"
- name: Run ty check
run: >-
uv run --python .artifact-venv --no-project
Expand Down
32 changes: 23 additions & 9 deletions docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ and then move directly into the first workflow.
## Requirements

- Python 3.12, 3.13, 3.14, or 3.15
- Polars 0.20+
- Polars 2.0+

These requirements describe development source for the 0.2 release. Published 0.1.6
The published 0.2.0 release supports these Python versions and the `calendar` argument.
Published 0.1.6
supports Python 3.12-3.14 and does not accept the new `calendar` argument. Use its
[version-matched quick start](https://github.com/ml4t/engineer/tree/v0.1.6#quick-start)
for that release. Until 0.2 is available from PyPI, use the source installation below
for Python 3.15 and the calendar-aware examples in this guide.
for that release.

## Install from PyPI

Expand Down Expand Up @@ -73,6 +73,24 @@ pip install "ml4t-engineer[stats]"

The core `ffdiff()` transform does not require this extra.

### Optional ML dependencies

The `ml` extra installs LightGBM and SHAP:

```bash
uv pip install "ml4t-engineer[ml]"
```

On macOS, LightGBM also needs the OpenMP runtime. Install it before importing the ML
dependencies, including when using the `dev` or `all` extras:

```bash
brew install libomp
```

See the [LightGBM Python installation guide](https://github.com/lightgbm-org/LightGBM/blob/v4.7.0/python-package/README.rst#installation)
for native dependency details.

## Verify Installation

```python
Expand All @@ -84,11 +102,7 @@ print(f"Total features: {len(all_features)}")
print(f"Categories: {feature_catalog.categories()}")
```

Expected output:
```
Total features: 120
Categories: ['math', 'microstructure', 'ml', 'momentum', 'price_transform', 'regime', 'risk', 'statistics', 'trend', 'volatility', 'volume']
```
This prints the features and categories available in your installed release.

## Next Steps

Expand Down
Loading
Loading