py-equilab: Equilab API Client Python Library
An unofficial, asynchronous, read-only Python client for the Equilab cloud API.
This library provides authentication, token renewal, bounded concurrent reads, rate-limit observations, Firestore decoding, and typed domain models for Equilab accounts, horses, training sessions, riders, and stables/groups. It does not modify cloud data, bypass subscription entitlements, or download route recordings.
Installation
python -m pip install equilab
Usage
import aiohttp
from pyequilab import EquilabClient
async def get_account(email: str, password: str) -> dict:
async with aiohttp.ClientSession() as session:
client = EquilabClient(session)
await client.async_login(email, password)
return await client.async_get_user()
Long-running applications should persist client.refresh_token securely. Pass an
on_token callback to receive rotated refresh tokens. Callers own the supplied
aiohttp.ClientSession; the library never closes it.
Supported operations
- Sign in and renew authentication tokens.
- Read the authenticated user profile.
- Read referenced horses, training sessions, and stables/groups.
- Read the latest notification without marking it as read.
- Normalise the subset of domain data used by downstream applications.
All public network operations are asynchronous. Exceptions contain safe generic messages and never include response bodies, credentials, identifiers, or request URLs.
Development
python -m pip install -e '.[test]'
pytest --cov=pyequilab --cov-branch --cov-report=term-missing
ruff check .
ruff format --check .
mypy
See CONTRIBUTING.md for the release process.
Licence
Copyright © 2026 Daniel Wilson (@Danw33)
Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
Equilab and Equestrian Insights AB are trademarks of their respective owners.
Release files for equilab 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| equilab-0.1.1.tar.gz | 20.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| equilab-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.1 kB
Release files / equilab-0.1.1.tar.gz
| Download URL | equilab-0.1.1.tar.gz |
|---|---|
| Size | 20.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ef2d1aa0cb3b707bc79062664b9d591e3bbfaa3bc9edffb1a2c6e13a08aa0eef
|
|
BLAKE2b-256 checksum How to use checksums |
eb435aa346ee4249d66e88bc31249c035cbaa08aa739c1eff0568bd4635a0633
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.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 Sep 16, 2026.
Transparency logRelease files / equilab-0.1.1-py3-none-any.whl
| Download URL | equilab-0.1.1-py3-none-any.whl |
|---|---|
| Size | 14.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
04a4d52393e33fd76df4e28ab1c19ea8a0b156df1d367d9ea3b50d626d2f7fa7
|
|
BLAKE2b-256 checksum How to use checksums |
947822442d6556b4bca79e4e2c2c9cf677069d999507d664be7ff631112188d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.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 Sep 16, 2026.
Transparency log