Python library to retrieve data from Grand Lyon open data platform, for Home Assistant.
Project description
data_grand_lyon_ha
Python library to retrieve data from the Grand Lyon open data platform.
Intended for use as a Home Assistant integration backend.
Installation
pip install data-grand-lyon-ha
Or with uv:
uv add data-grand-lyon-ha
Usage
import asyncio
from datetime import datetime
import aiohttp
from data_grand_lyon_ha import (
DataGrandLyonClient,
extract_tcl_pictogram_from_zip,
filter_tcl_alerts_by_line,
filter_tcl_passages_by_line,
filter_tcl_passages_by_stop,
find_tcl_line_pictogram_by_code,
find_tcl_park_and_ride_by_id,
find_tcl_stop_by_id,
find_velov_station_by_id,
sort_tcl_alerts_by_relevance,
sort_tcl_passages_by_time,
)
async def main():
async with aiohttp.ClientSession() as session:
client = DataGrandLyonClient(session)
# Or with authentication (required for real-time TCL passages):
# client = DataGrandLyonClient(session, username="user", password="pass")
# TCL passages: fetch all, then filter and sort client-side
all_passages = await client.get_tcl_passages()
passages = filter_tcl_passages_by_stop(
filter_tcl_passages_by_line(all_passages, "A"), 30101
)
for p in sort_tcl_passages_by_time(passages):
print(f"{p.ligne} → {p.direction} in {p.delai_passage} [{p.type}]")
# TCL stops: fetch all, then look one up by ID
stops = await client.get_tcl_stops()
stop = find_tcl_stop_by_id(stops, 1041)
if stop:
print(f"{stop.nom} ({stop.commune}) — lines: {stop.desserte}")
# Vélo'v stations: fetch all, then look one up by ID
stations = await client.get_velov_stations()
station = find_velov_station_by_id(stations, 10044)
if station:
print(
f"{station.name}: {station.available_bikes}/{station.bike_stands} bikes"
)
# TCL park-and-rides (P+R): fetch all, then look one up by ID
parks = await client.get_tcl_park_and_rides()
park = find_tcl_park_and_ride_by_id(parks, "VAI2")
if park:
print(
f"{park.nom}: {park.nb_tot_place_dispo}/{park.capacite} places"
)
# TCL traffic alerts: fetch all, filter by line, then sort most-relevant-first
# (ongoing or starting today come before later days; ended alerts last).
all_alerts = await client.get_tcl_alerts()
alerts = filter_tcl_alerts_by_line(all_alerts, "27")
for a in sort_tcl_alerts_by_relevance(alerts, datetime.now()):
print(f"[{a.type}] {a.titre} ({a.debut:%d/%m %H:%M} → {a.fin:%d/%m %H:%M})")
# TCL line pictograms: list lines, then extract one line's SVG as bytes
# (e.g. for a Home Assistant image entity).
lines = await client.get_tcl_line_pictograms()
line = find_tcl_line_pictogram_by_code(lines, "10")
if line:
zip_bytes = await client.get_tcl_line_pictograms_zip()
svg = extract_tcl_pictogram_from_zip(zip_bytes, line.picto_complet)
if svg:
print(f"Pictogram for line 10: {len(svg)} bytes")
asyncio.run(main())
Development
This project uses uv for dependency management.
# Run tests
uv run pytest
# Build the package
uv build
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file data_grand_lyon_ha-0.9.0.tar.gz.
File metadata
- Download URL: data_grand_lyon_ha-0.9.0.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d25e0c4f7877f8f20f247348c5502d1483b8e3ad44eae230528f259d423d9b1c
|
|
| MD5 |
0e2bee48a91a65492d47598b6740092a
|
|
| BLAKE2b-256 |
66238d3be3677463245bde7e2be0a98649190d49fc645a1eb80b17b40cd3c089
|
File details
Details for the file data_grand_lyon_ha-0.9.0-py3-none-any.whl.
File metadata
- Download URL: data_grand_lyon_ha-0.9.0-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ca939f3ec2e7496d8fe0b0f17eeb122d2946eeaa6404f25b1fcbb096f04a526
|
|
| MD5 |
7bd7fb3e1be06b776cd48d6141202343
|
|
| BLAKE2b-256 |
ab132d92b0840c5f90314cbe327bccb89e95cd5c2b58530b3e6785110dd3d562
|