Skip to main content

provident (Python)

PyPI Python CI License: GPL-3.0-only

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.0 for missing hours; report rows flag them with error and leave values None.
  • API key. A wrong password for api_key counts 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

GPL-3.0-only.

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)

Source distribution for provident 0.2.2
File Size Uploaded Provenance
provident-0.2.2.tar.gz 84.1 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for provident 0.2.2
File
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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Security 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.

Select from 8 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page