Metadata-Version: 2.5
Name: hunchml
Version: 0.2.1
Summary: Local AutoML for tabular data, for non-experts
Requires-Python: >=3.10
Requires-Dist: catboost>=1.2.7
Requires-Dist: fastapi>=0.115
Requires-Dist: joblib>=1.4
Requires-Dist: lightgbm>=4.3
Requires-Dist: numpy>=1.26
Requires-Dist: openpyxl>=3.1
Requires-Dist: optuna>=4.0
Requires-Dist: pandas>=2.2
Requires-Dist: psutil>=5.9
Requires-Dist: pyarrow>=16
Requires-Dist: python-multipart>=0.0.9
Requires-Dist: scikit-learn>=1.5
Requires-Dist: shap>=0.46
Requires-Dist: uvicorn>=0.30
Requires-Dist: xgboost>=2.1
Description-Content-Type: text/markdown

# hunchml

Local AutoML for tabular data. Bring a spreadsheet, pick the column you want to predict, and
get a trained, explained model, without writing code. Everything runs on your computer; your
data never leaves it.

## Use it

```bash
pip install hunchml
hunchml
```

On a Mac, also run `brew install libomp` once ([Homebrew](https://brew.sh)): two of the
model types (LightGBM and XGBoost) need it, and without it the app skips them.

Your browser opens the app. Keep the terminal window open while you use it; press Ctrl+C there
to stop. Options: `--data-dir` (where projects are stored, default `~/.hunchml`), `--port`,
`--max-concurrent` (training runs at once, default 1) and `--no-browser`.

## Develop

Needs [uv](https://docs.astral.sh/uv/) and Node.js 24.

```bash
uv sync                                  # Python environment
(cd frontend && npm ci)                  # frontend dependencies

uv run pytest                            # fast Python tests (slow ones: -m slow)
uv run ruff check src tests scripts && uv run mypy
(cd frontend && npm test && npm run lint && npm run typecheck)
```

Work on the interface with live reload: start the backend with
`uv run hunchml --no-browser`, run `npm run dev` in `frontend/`, and open the address Vite
prints with the `?token=...` part of the backend's link added (for example
`http://localhost:5173/?token=abc`). Vite forwards `/api` calls to the backend on port 8765.

`npm run build` in `frontend/` writes the interface into `src/hunchml/server/static/`,
which the backend serves and the wheel ships. The end-to-end test needs that build:
`npm run build && npx playwright install chromium && npm run e2e`.

## Release

Set the version in `pyproject.toml`, commit, and push a tag `v<version>`. The Release
workflow builds the interface and the package, checks both, and publishes to PyPI.
