LICENSEfile (BSD-3-Clause),py.typedmarker, and PyPI metadata (classifiers, URLs, keywords).- GitHub Actions: tests and lint on every push and pull request; publish to PyPI on a
v*tag through trusted publishing.
- The
devextra now installs everything the test suite needs (respx,python-dotenv);matplotlibmoved to anexamplesextra. - Lint clean under the repository's ruff configuration.
- First release on PyPI:
pip install dhis2-client.
- Corrected release wording from "Centrlized" to "Centralized".
- Added separate
connect_timeoutcontrol (default60s) while keepingtimeoutfor read/write/pool (default30s).
- Analytics: latest_period_for_level(de_uid, level) using /api/dataValueSets with calendar-aware windows.
- Utils: calendar_year_bounds, calendar_year_bounds_for, period_key, period_start_end, next_period_id.
- Default dependency: convertdate>=2.4 for multi-calendar support.
- HTTP timeout controls: added
connect_timeout(default 60s) while keepingtimeoutfor read/write/pool (default 30s).
- Error if data element is linked to datasets with mixed periodType.
- Sharing: read and set public access, user and user-group accesses on metadata objects.
- User organisation-unit scope management (capture, data view, tracked-entity search).
- Sync
DHIS2Clientusing httpx (dict/JSON only). - Stdlib JSON logging via
ClientSettings. - Clean paging (
list_paged,fetch_all). - Resources: Users (read-only), OrgUnits (CRUD + geojson), DataElements (CRUD), DataSets (CRUD), DataValues (single + sets), Analytics (read), System info.
- Unit tests (respx) + live integration tests (guarded by env).