Skip to content

Contributing

Issues and pull requests are welcome at PhylaTech/mlflow-autogluon.

Development environment

The repo ships a pixi.toml with two environments: the default environment (tabular predictor plus test, lint, and docs tooling; fast to install) and the full environment (adds timeseries and multimodal for CI-parity coverage runs).

pixi install          # default environment
pixi install -e full  # everything, needed for coverage / test-all

All common operations are pixi tasks:

Task Environment What it does
pixi run test default tabular test suite
pixi run lint default ruff check
pixi run docs default live docs server (mkdocs serve)
pixi run docs-build default strict docs build
pixi run -e full test-all full complete test suite
pixi run -e full test-timeseries full timeseries tests only
pixi run -e full test-multimodal full multimodal tests only
pixi run -e full coverage full CI-parity gate, 100 percent required

The repo also ships an environment.yml (includes all predictor extras):

mamba env create -f environment.yml
mamba run -n mlflow-autogluon pip install -e .

# Tests (fast: the suite trains tiny DUMMY-model predictors)
mamba run -n mlflow-autogluon pytest

# Coverage (CI enforces 100 percent with all predictor extras installed)
mamba run -n mlflow-autogluon pytest --cov=mlflow_autogluon --cov-fail-under=100

# Lint
mamba run -n mlflow-autogluon ruff check mlflow_autogluon tests
pip install -e .[dev]
pytest

CI runs the suite on Python 3.10 to 3.12 against the latest MLflow, plus a job pinned to mlflow<3 to guard the oldest supported line and a coverage job with all predictor extras that enforces 100 percent.

Documentation

Docs are MkDocs Material, versioned with mike and hosted on GitHub Pages:

  • every push to main deploys the dev docs version
  • every release deploys a version matching the PyPI release (e.g. 0.2.0) and moves the latest alias, which is the site default, so released docs always match the released code

Preview locally with mkdocs serve (or pixi run docs); the version selector only appears on the deployed site.

Commit messages and releases

Commits to main follow Conventional Commits (feat:, fix:, docs:, chore:, with ! or a BREAKING CHANGE: footer for breaking changes). release-please watches main, maintains a running release PR with the version bump and CHANGELOG.md, and merging that PR tags the release. Publishing the GitHub release triggers the Publish to PyPI workflow, which uploads the package via PyPI trusted publishing. Versions live in pyproject.toml and mlflow_autogluon/__init__.py; both are managed by release-please, never bump them by hand.

Roadmap

  • ClearML integration (tracked separately)