v2026.6.7 — PyPI Library Migration
PyPI Library Migration
Provider API code moved to the standalone python-openpublictransport PyPI library. No functional changes — all 28 providers work exactly as before.
Changes in this release
- ~3,800 lines of bundled provider code removed —
providers/folder anddata_models.pydeleted from integration - Integration now imports
get_provider,get_provider_classfrompython-openpublictransport==0.1.2 - Cleaner integration codebase; provider updates can ship independently via PyPI
Bronze Quality Scale Achieved 🥉
This release formally meets all requirements of the Home Assistant Integration Quality Scale Bronze tier — the baseline standard for integrations that can be set up through the UI and follow core HA conventions.
What Bronze means
The Bronze tier covers the foundational requirements every quality integration should fulfill:
- Configurable entirely through the UI (no YAML required)
- All entities have stable unique IDs
has_entity_name = Trueon all entities- Runtime data stored via
ConfigEntry.runtime_data - Services registered in
async_setup(once per HA start, not per entry) - Connection tested during config flow and on setup
- Duplicate entries prevented
- Entity events subscribed in correct lifecycle methods
- Appropriate polling interval set
- Branding assets (
icon.png/logo.png) served frombrand/ - Full test coverage for the config flow (96 tests)
- Dependencies declared transparently via PyPI (
python-openpublictransport) - Documentation available at docs.openpublictransport.net
Changes in v2026.6.6
quality_scale.yamladded — all 18 Bronze rules tracked asdoneorexemptmanifest.json:quality_scalefield set to"bronze"- Minimum HA version: bumped to
2026.3.0(required for integrated brand asset serving) - Python 3.12 dropped from test matrix — HA 2026.3+ requires Python 3.13+
- Test matrix: Python 3.13 and 3.14
Next milestone: Silver 🥈
The Silver tier focuses on reliability — error recovery, entity availability signalling, re-authentication, parallel update limits, and >95% test coverage across all modules.