The purpose of this repository is to provide a standalone client for use with the Alfalfa application. It additionally includes a Historian to quickly/easily enable saving of results from Alfalfa simulations.
This repo is packaged and hosted on PyPI here.
pip install pacer-clientfrom pacer_client.pacer_client import PacerClient
client = PacerClient("http://localhost")Renaming from
alfalfa-client: this project was renamed fromalfalfa-client/AlfalfaClienttopacer-client/PacerClient. During the transition, both names keep working:AlfalfaClientis an alias ofPacerClient, and thealfalfa_clientpackage/pip install alfalfa-clientcontinue to be published with identical functionality (seealfalfa_client/__init__.py).import alfalfa_client(in any form) emits aDeprecationWarningpointing you topacer_client; thealfalfa-clientname and imports will eventually be removed, so new code should preferpacer_client/PacerClient.
Additional documentation for the functions of pacer-client can be found here.
Prerequisites:
- poetry for managing environment
Cloning and Installing:
git clone https://github.com/NatLabRockies/alfalfa-client.git
cd alfalfa-client
poetry installRunning Tests:
All pacer-client tests currently require a running instance of Alfalfa with at least 2 workers.
poetry run pytest -m integrationEvery PR must carry at least one categorization label (breaking, enhancement, bug, dependencies,
github_actions, python, documentation, add test, or do not publish to exclude it) — this is enforced by
the Verify Pull Request Labeling CI check and is what allows GitHub to group the auto-generated release notes
correctly, per .github/release.yml.
- Confirm all PRs intended for the release are merged into
develop, are labeled correctly, and CI is passing. - Bump the version on
develop(assume version is 0.1.2):poetry version 0.1.2, open a PR, and merge it once tests pass. - Fast-forward
maintodevelopso both branches point at the same commit (do not create a merge commit):Ifgit checkout main git merge --ff-only develop git push origin main
--ff-onlyfails,mainanddevelophave diverged (e.g. a hotfix landed only onmain) — reconcile that first so the release doesn't leave the branches out of sync. - Draft a release on the GitHub repository targeting
main(tagv0.1.2) and click "Generate release notes" (UI), or rungh release create v0.1.2 --target main --generate-notes --draft— do not publish yet. - Copy the generated "## What's Changed" notes into
CHANGELOG.mdunder the# Unreleasedsection, then (as part of the release) rename that header to# pacer-client Version 0.1.2and add the**Full Changelog**line. - Commit this alongside the version bump PR, or as a quick follow-up commit on
main. - Publish the drafted release. This triggers the
PyPIReleaseworkflow (.github/workflows/pypi_release.yml), which builds the package twice (once aspacer-client, once with the name swapped toalfalfa-client) and publishes both to PyPI via trusted publishing — no manualpoetry build/poetry publishneeded. Both distributions have identical contents; this keepspip install alfalfa-clientworking during the rename transition (see the note in the README's Usage section). Publishing toalfalfa-clientrequires a Trusted Publisher to be configured on that PyPI project pointing at thepypi_release_alfalfaenvironment — set this up once on pypi.org before the first release after this change. - Confirm the new version appears on both pacer-client and
alfalfa-client on PyPI, and that the release notes and
CHANGELOG.mdmatch.