provident (Python)
Unofficial Python client for the Provident (MeterConnex) utility metering portal: sign in, list your meters, and fetch consumption history and billing-period reports for electricity, water, heating, cooling, and gas.
It is a thin binding to the provident Rust crate,
so both share one implementation and release version.
Not affiliated with or endorsed by Provident or QMC. The portal has no public API; this package talks to the same endpoints its web pages use, which may change without notice.
Installation
pip install provident
Wheels are prebuilt for CPython 3.11+ on Linux (x86_64, aarch64; glibc and musl), macOS (Apple Silicon, Intel), and Windows (x64), with TLS included. No Rust toolchain is needed.
Usage
from datetime import date, timedelta
from provident import Client, Utility
client = Client()
# Sign in once; the session is shared by every later call on this client.
client.auth.login("your-login", "your-password")
# Meters on the account.
meters = client.account.meters()
for meter in meters:
print(meter.utility, meter.serial, meter.unit)
# Hourly electricity use for one day (ranges up to 7 days are hourly, longer ones daily).
meter = next(m for m in meters if m.utility is Utility.ELECTRICITY)
day = date(2026, 10, 18)
series = client.usage.series(meter, day, day + timedelta(days=1)) # end is exclusive
print(series[0].units, series[0].data)
# Start/end readings and totals for September, keyed by utility label.
report = client.usage.report(meters, date(2026, 9, 1), date(2026, 10, 1))
for utility, rows in report.items():
for row in rows:
print(utility, row.serial, row.total)
asyncio
AsyncClient has the same methods, each returning an awaitable:
import asyncio
from provident import AsyncClient
async def main() -> None:
client = AsyncClient()
await client.auth.login("your-login", "your-password")
meters = await client.account.meters()
print(meters)
asyncio.run(main())
Client releases the GIL while it waits, so it is safe to use from threads.
What's available
| Area | Calls |
|---|---|
client.auth |
login(username, password, *, remember_me=False), verify() |
client.account |
meters(), meter(id), meter_by_serial(serial), utilities(), location(node), details(), api_key(password) |
client.usage |
series(meters, start, end, *, aggregate_groups=False), report(meters, start, end, *, aggregate_groups=False, include_deactivated=False) |
meters/node arguments take a Meter, a TreeNode, or a node id string ("MP:692294",
"GROUP:121497"); meters also takes an iterable of them. A group covers every meter below
it. Client(base_url=..., timeout=..., connect_timeout=..., user_agent=...) overrides the
defaults (timeouts in seconds).
Results are read-only objects: Meter, TreeNode, Series, ReportRow, AccountDetails,
and the Utility string enum. The package ships type hints.
Errors
Every exception derives from ProvidentError:
| Exception | When | Attributes |
|---|---|---|
LoginRejectedError |
Wrong username or password | reason |
PasswordRejectedError |
Wrong password for api_key |
reason |
HTTPStatusError |
Non-2xx response, e.g. 401 without a session | status, body |
DecodeError |
Response in an unexpected shape | status, body |
TransportError |
Connection, TLS, or timeout failure | status, timeout |
InvalidMeterError |
A meter in the tree could not be read |
Bad arguments (an unparsable node id, a negative timeout) raise ValueError/TypeError.
Things worth knowing
- Time zones. Dates are calendar days with no zone. Hourly buckets for electricity behave like local time; water meters appear to use a fixed offset about two hours earlier in winter.
- Missing readings. Hourly series report
0.0for missing hours; report rows flag them witherrorand leave valuesNone. - API key. A wrong password for
api_keycounts as a failed sign-in, and several in a row briefly lock the account out.
The Rust crate docs cover each endpoint in more depth.
License
Metadata
Release files for provident 0.2.2
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 | |
|---|---|---|---|---|
| provident-0.2.2.tar.gz | 84.1 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| provident-0.2.2-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| provident-0.2.2-cp311-abi3-musllinux_1_2_x86_64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ x86-64 | Details |
| provident-0.2.2-cp311-abi3-musllinux_1_2_aarch64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ ARM64 | Details |
| provident-0.2.2-cp311-abi3-manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| provident-0.2.2-cp311-abi3-manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| provident-0.2.2-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| provident-0.2.2-cp311-abi3-macosx_10_12_x86_64.whl | CPython 3.11 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 24.5 MB
Release files / provident-0.2.2.tar.gz
| Download URL | provident-0.2.2.tar.gz |
|---|---|
| Size | 84.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3de820f0b6a0ebc79ac09db0c3f48692fae5a9773046fbfcf594b0f4e158008d
|
|
BLAKE2b-256 checksum How to use checksums |
735cad589c5db127b8b6c4b2516d33b0ba97851e8b869935f3daa3655f60a0c8
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-win_amd64.whl
| Download URL | provident-0.2.2-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
dfc24d1c13a63bfed6ae0acf9ba681d157b87807b909ecbb6c41f6e876a96501
|
|
BLAKE2b-256 checksum How to use checksums |
3f78594fc459adccde8a79de47e3fb534c0665f45bebb6d1843770b8d2447851
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | provident-0.2.2-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7da12ace37aad94bbc8206ff21196c5ab2e5c23adab8a933b0d950761b75f8cb
|
|
BLAKE2b-256 checksum How to use checksums |
3d125589f7f4f65304aff1e9b97d68379eb5b4bb02b8f9f11751525c41e83e5a
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-musllinux_1_2_aarch64.whl
| Download URL | provident-0.2.2-cp311-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
cb64dbf172d75b0bcc430e95c601b9ec19a2b53fc90e332ac6dea30a3c522adc
|
|
BLAKE2b-256 checksum How to use checksums |
3f308eea4680aeedae082bb4b3629e6712665c38cdfe5aab553c11a037734358
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-manylinux_2_28_x86_64.whl
| Download URL | provident-0.2.2-cp311-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a6dc8a30bd2a790b143329116a00e260c48b75a3d258f327040bef6e0e2a12e6
|
|
BLAKE2b-256 checksum How to use checksums |
48663bc63659e3617f0da13fdbd2bcb510637a87198b2baf8698695f12b07357
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-manylinux_2_28_aarch64.whl
| Download URL | provident-0.2.2-cp311-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.9 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
c005cb63e4777a2d2f508675634f26194a4ae3d9d58f339450da6b0941addb69
|
|
BLAKE2b-256 checksum How to use checksums |
52dfa68614aeb70f653268a14755022e024f344a788b093d7e363fc96f0ba31a
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | provident-0.2.2-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
35c31421d29d68f4863bf46b4ab91a77452bc7ac6fe2512545e47339263040dd
|
|
BLAKE2b-256 checksum How to use checksums |
7b7d6e9aa5ec0de2f9ad21983fc0094a5136326ff95f63bc90e1a793a9139a78
|
| 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 Oct 20, 2026.
Transparency logRelease files / provident-0.2.2-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | provident-0.2.2-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
3ed1d4a2ced0746d4f7ec7de2f3c15993d0c6a1803b086e0951ce7b24701aa0d
|
|
BLAKE2b-256 checksum How to use checksums |
7b7bd87b3e7de758f3c8578067f2ede6b58c467a1187206ebad6cbd1f4041780
|
| 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 Oct 20, 2026.
Transparency logSecurity for provident 0.2.2
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 8 files in this release have been uploaded with provenance metadata.
Attestation for provident-0.2.2.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 Oct 20, 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.