Ogero does not currently provide a rest api to access it services, therefore this module web scrap the mobile version of the pages to collect data.
The async client (pyogero.asyncio.Ogero) requires an injected aiohttp.ClientSession (for example from Home Assistant async_get_clientsession(hass)):
import aiohttp
from pyogero.asyncio import Ogero
async with aiohttp.ClientSession() as session:
client = Ogero("user", "pass", session=session)
await client.login()Runtime dependency versions are capped at the versions used by Home Assistant 2026.3.2 (requests, aiohttp, beautifulsoup4, pydantic). To install exact pins in a virtual environment:
pip install -e . -c constraints-home-assistant-2026.3.2.txtThis project uses uv for dependencies and a PEP 621 pyproject.toml for package metadata. Python 3.14 is used for CI and local development (see .python-version).
uv sync --group dev
uv run pytest tests/ -m "not integration"
uv run ruff check .
uv run ruff format .To match Home Assistant pins after syncing dev dependencies:
uv sync --group dev
uv pip install -c constraints-home-assistant-2026.3.2.txt -e .Build release artifacts with uv run python -m build (requires dev dependencies).
- Bump
versioninpyproject.tomland document changes inCHANGELOG.md. - Merge to
main. CI runs on push; the Release workflow then runs tests and creates tagvX.Y.Zif that tag does not exist yet. - Pushing the new tag triggers the publish job (GitHub release + PyPI). Re-pushing
mainwithout a version bump does not re-release because the tag already exists. - You can also run the Release workflow manually via
workflow_dispatchto re-run pre-release checks.
CI publishes with trusted publishing (OIDC) when the PyPI project is linked to this GitHub repository. The workflow also supports PYPI_TOKEN in repository secrets as a fallback if trusted publishing is not configured yet.