pydmvl
Unofficial Python client for the "Domovladelets+" ("Домовладелец+", homeowner) account API. It implements the protocol used by the app (Google Play): it authenticates with an account login and password and exposes the account snapshot the service returns for its home screen: account aggregates, per-period charges (documents), receipt links, and payment history.
Неофициальный Python-клиент API лицевого счёта приложения «Домовладелец+». Реализует протокол этого приложения (Google Play): аутентифицируется по логину и паролю лицевого счёта и предоставляет снимок счёта, который сервис возвращает для главного экрана: агрегаты по счёту, начисления за период (документы), ссылки на квитанции и историю платежей.
Disclaimer. This project is unofficial and is not affiliated with, endorsed by, or sponsored by the "Domovladelets+" application or its operators. It is built for interoperability with your own account. Use it at your own risk; only access accounts you are authorized to access.
Отказ от ответственности. Проект неофициальный и не связан с приложением «Домовладелец+» или его операторами, не одобрен и не спонсируется ими. Он создан для взаимодействия с вашим собственным лицевым счётом. Используйте его на свой риск; получайте доступ только к тем счетам, на которые у вас есть разрешение.
Install
pip install pydmvl
Usage
from pydmvl import DmvlClient
with DmvlClient() as client:
session = client.login("user", "secret")
print(session.personal_account.amount_due)
TLS verification (disabled by default)
The service presents an incomplete certificate chain (it does not serve the
intermediate CA), so standard verification fails against the real endpoint with
certificate verify failed: unable to get local issuer certificate. The
official client disables verification for this reason, and pydmvl matches
that observed behavior: verify defaults to False.
This is a deliberate, documented default, not a silent downgrade. Whenever you
can, turn verification back on — pass a CA bundle that includes the missing
intermediate, or verify=True if your trust store already chains the
certificate:
DmvlClient(verify="/path/to/ca-bundle.pem")
Consumers that expose TLS settings to end users should present this as an explicit opt-in control. See spec 0004 R8.
Status
Authentication, the account snapshot, documents (charges, receipts, unpaid
detection), and payment history are implemented (specs 0001–0004); 0.x — the
API may still change. See specs/ for the specifications and their
status.
Capabilities:
- Login with
login+hash(MD5 of the password); stateless session, no bearer token — spec 0001 - Account snapshot with debt/charge/payment aggregates — spec 0002
- Per-period charges and receipt links — spec 0002
- Payment history and the latest payment — spec 0003
- Public sync + async client API — spec 0004
- Configurable TLS verification (default off; see below) — spec 0004 R8
Known API surface
The service exposes a single PHP action router. The catalogue of known
actions is spec 0005; only the read-only subset
needed for the account snapshot is implemented here — writing actions
(submitting meter readings, creating payments, opening doors, sending
messages, and similar) are out of scope.
Requirements
- Python >= 3.11
- httpx >= 0.27
Development
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/ruff check .
.venv/bin/ruff format --check .
.venv/bin/mypy
.venv/bin/pytest -m "not live"
Live tests against the real API stay behind the live marker and are run
manually only, with credentials from the environment (DMVL_USERNAME,
DMVL_PASSWORD). Account credentials are sent as request query parameters, so
do not enable request-URL logging while a live client is in use.
License
Metadata
Release files for pydmvl 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pydmvl-0.1.0.tar.gz | 24.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydmvl-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.9 kB
Release files / pydmvl-0.1.0.tar.gz
| Download URL | pydmvl-0.1.0.tar.gz |
|---|---|
| Size | 24.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b9bb2bb6adc0e46a52883a408309defbc25b0524d35154452d98809c0c83b076
|
|
BLAKE2b-256 checksum How to use checksums |
d411e3608ffcf0e3ce44dbb3b4d5bdaa88bebed38476b36c9347584a6b25e9e2
|
| 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 2, 2026.
Transparency logRelease files / pydmvl-0.1.0-py3-none-any.whl
| Download URL | pydmvl-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bca4769be53559f89442ee82759d01e992ac5081001c19be32f37dd5a9d8b16a
|
|
BLAKE2b-256 checksum How to use checksums |
18a3f5d9bf938b776248669b2df1e82671f22782052c1aefd3d5a70e2a201547
|
| 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 2, 2026.
Transparency log