Precision AI Pace
Pace follows semantic versioning. Before 1.0, a minor version may change the Python API, but the
[pace ...]line format only grows: new keys, never a changed one. (0.1 replaced the 0.0.x[pace:1 ...]format, which it does not read.)
Pace is a logger with progress reporting built in. Its output reads like any good logger in a terminal, and every progress line also carries a short, versioned trailer that a scheduler can read to estimate when the job will finish.
- One way to log across projects: the same levels, format and progress bars everywhere.
- Progress for real ML work: loops, manual counters, timed steps, phases, PyTorch Lightning and Hugging Face training.
- Completion estimates: the terminal shows time remaining, and a scheduler such as OrchAI gets the same estimate from the job's logs.
- No dependencies in the core, and Python 3.11 or later, so it fits into existing training images.
Installation
pip install precisionai-pace
Usage
from precisionai.pace import capture_logging, logger, progress, track
capture_logging() # route PyTorch's and Transformers' standard logging through Pace
logger.info("Loading model")
logger.success("Model ready")
for batch in track(loader, description="Inference", unit="batch"):
infer(batch)
with progress(total=len(requests), description="Evaluation", unit="request") as run:
for future in as_completed(futures):
consume(future.result())
run.advance()
Also available: timed, phase and plan for multi-stage jobs, root=True to mark
the scope that stands for the whole job, and completed= with resumed=True to resume
from a checkpoint. Settings come from logger.configure(...) or PACE_* environment
variables, so a scheduler can change them without code changes.
In a terminal, progress is one bar that redraws in place. In a container or a log file it is a rate-limited line like this one:
2026-11-03T17:36:42Z PROGRESS Train 1840/5000 36.8% 2.4 step/s · ~21m57s [pace train c=1840 t=5000 e=763.1 q=57 r=6bfc3dd5 root]
The part before [pace ...] is for people. The bracketed trailer is a stable,
versioned format described in docs/design.md; a program that reads it
should use parse_line, LineSplitter and JobForecast (see
Reading Pace output).
Documentation
| Page | Read it for |
|---|---|
| Getting started | Install, first log lines, first progress loop, terminal vs container output. |
| Logging | Levels, exception, configure and precedence, capture_logging, colour, encodings, ranks. |
| Progress | track, progress, timed, phase, plan, nesting, resuming, root scope, emission rates, the terminal bar. |
| Examples | One runnable script per style of logging and progress: loops, epochs, resuming, phases, ranks, reading the output. |
| Framework integrations | The PyTorch Lightning and Hugging Face Transformers callbacks. |
| Migrating | From print, tqdm, Loguru and logging. |
| Configuration | Every PACE_* variable and its configure equivalent. |
| Reading Pace output | For programs that read logs: parsing, de-duplication, estimates, conformance fixtures. |
| FAQ | Short answers. |
| Specification | The line format and the forecasting rules. |
The HTML build of these pages (and the module reference) is produced with Sphinx:
cd docs
make html # HTML docs → docs/_build/html/index.html
make latexpdf # PDF → docs/_build/latex/documentation.pdf
Dependencies: pip install -r docs/requirements.txt
Development
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
python -m pytest
Coverage must remain at or above 90%, enforced by pytest and the pre-commit hook. CI runs the tests on Python 3.11 through 3.13.
Project layout
precisionai/pace/ # the package (core: standard library only)
docs/ # Sphinx (HTML + LaTeX/PDF), including design.md
skills/adopt-pace/ # Claude Code skill that adds Pace to a repository
examples/ # runnable examples
tests/ # mirrors the package structure
See CLAUDE.md for the coding standard.
Releasing
Push a tag matching v*.*.* (e.g. v0.1.0) to trigger .github/workflows/release.yml,
which runs the test suite, builds the sdist and wheel, publishes to PyPI via trusted
publishing, and creates a GitHub Release. The version comes from the git tag via
setuptools-scm. Update CHANGELOG.md before tagging.
Security
To report a security vulnerability, see SECURITY.md. Do not open a public issue.
Contributing
See CONTRIBUTING.md for setup and PR guidelines, and CODE_OF_CONDUCT.md for community expectations.
License
Apache 2.0 © Precision AI
Metadata
Release files for precisionai-pace 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| precisionai_pace-0.1.3.tar.gz | 93.9 kB | With provenance | Details for precisionai_pace-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| precisionai_pace-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for precisionai_pace-0.1.3-py3-none-any.whl |
Total release size: 156.1 kB
Release files / precisionai_pace-0.1.3.tar.gz
| Download URL | precisionai_pace-0.1.3.tar.gz |
|---|---|
| Size | 93.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f3cf0040f7eaf2305ad3501b024ce2ed65d02aed35d6bb65217b81115da9ecbb
|
|
BLAKE2b-256 checksum How to use checksums |
f6fe8220b95e9fce409b983d6202bf4230bba43910cb676dd4bd449a8f82ca60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 5, 2026.
Transparency logRelease files / precisionai_pace-0.1.3-py3-none-any.whl
| Download URL | precisionai_pace-0.1.3-py3-none-any.whl |
|---|---|
| Size | 62.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
016ac6e4a6e33409286ac5cdebdec4a86d2f78e8a0d168315d2d7e7b1d5fe93c
|
|
BLAKE2b-256 checksum How to use checksums |
37a3afdc734cc08cf68a53448558331ce4b89ef5431fc10697536a33b48357f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 5, 2026.
Transparency logSecurity for precisionai-pace 0.1.3
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for precisionai_pace-0.1.3.tar.gz
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 Nov 5, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.