This release is a pre-release and may not be stable for production use.
Pacer Client
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.
Usage
This repo is packaged and hosted on PyPI here.
pip install pacer-client
from 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.
Development
Prerequisites:
- poetry for managing environment
Cloning and Installing:
git clone https://github.com/NatLabRockies/alfalfa-client.git
cd alfalfa-client
poetry install
Running Tests:
All pacer-client tests currently require a running instance of Alfalfa with at least 2 workers.
poetry run pytest -m integration
Releasing
Every 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):git checkout main git merge --ff-only develop git push origin main
If--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.
Release files for pacer-client 1.1.0rc1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pacer_client-1.1.0rc1.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pacer_client-1.1.0rc1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.0 kB
Release files / pacer_client-1.1.0rc1.tar.gz
| Download URL | pacer_client-1.1.0rc1.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cce1bc5c1034d9e1426607a78f8565b83ccf2d30c225899a40db8f0c4955866c
|
|
BLAKE2b-256 checksum How to use checksums |
220574a95afdebf5162f6971bd6a8c2b5751ac01cdae1ccfd2ad950d700e4635
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency logRelease files / pacer_client-1.1.0rc1-py3-none-any.whl
| Download URL | pacer_client-1.1.0rc1-py3-none-any.whl |
|---|---|
| Size | 11.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ceb3e68f116c6397f50f5d096fd07d41d430096bf308d5840cefd7cdacc93dfb
|
|
BLAKE2b-256 checksum How to use checksums |
d8db3e03fd6aae2bbfc2141c096f9dd38240b6b3da603e7227ed2cd7f64575d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency log