lanestyle
Lane-level road maps from Python.
Every road as wide as its lanes, its bus and bike lanes, lane lines, arrows, zebras and sidewalks, on roadstyle. One offline HTML file.
Documentation · Live map · Get started · Gallery · Python API
Quick start
pip install lanestyle duckosm[levels]
duckosm build --pbf monaco-latest.osm.pbf -o monaco.duckdb -m driving -m walking -m cycling
duckosm gmns monaco.duckdb -o monaco_gmns.duckdb # the lanes (GMNS, lanes and turns from SUMO)
duckosm levels monaco.duckdb # the drawing order: monaco.levels, where your edits live
import lanestyle as ls
ls.lane_page("monaco.levels", "monaco_gmns.duckdb", "monaco.duckdb").save("monaco.html") # one file, opens offline
or python lane_page.py monaco.levels monaco_gmns.duckdb monaco.duckdb monaco.html.
What you get
- The roads, drawn by roadstyle. Each road is one line as wide as its lanes, with its
outline, ends, bridges over and tunnels under, street names, hover and click: the drawing of roadstyle's level editor, so a road
you fix in the editor (
roadstyle-levels edit monaco.levels --items lanestyle.editor:lane_items) is the same on the page. - Lanes on them. Bus and bike lanes in their colours, lane lines (dashed between car lanes, solid next to a bus or bike lane, a centre line between directions), turn arrows before a junction, BUS and bike marks, all in metres. Car lanes are invisible but clickable.
- Plain junctions. Lanes, lines and arrows stop where a junction begins, as painted on a real road.
- Zebras and sidewalks. Painted crossings as white stripes (from zoom 17); the sidewalks OSM tags on a street as strips beside it. A road cars do not use (a footway, a cycleway) is drawn in the colour of who uses it.
lanestyle draws nothing of its own: roadstyle draws every road, lanestyle only reads duckOSM's GMNS lanes and adds them to the roads
as items. Settings (colours, widths, dashes, marks): src/lanestyle/data/lanestyle.json, overridden by a lanestyle.json in the
current folder.
For AI agents
- Using lanestyle: the agent skill
skills/lanestyle/SKILL.mdhas the install, the lane table, the one call, the JavaScript API and the traps in one page. In Claude Code:/plugin marketplace add Khoshkhah/lanestyle, then/plugin install lanestyle@lanestyle. - The docs as text:
llms.txtandllms-full.txt(every page, one file). - Changing lanestyle:
AGENTS.mdhas the layout, the commands and the project's rules.
More: AI agents.
License
MIT
Metadata
Release files for lanestyle 0.3.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 | |
|---|---|---|---|
| lanestyle-0.3.0.tar.gz | 45.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lanestyle-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.9 kB
Release files / lanestyle-0.3.0.tar.gz
| Download URL | lanestyle-0.3.0.tar.gz |
|---|---|
| Size | 45.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
54e7de8cd003b001ee629488b8c4a90e52f18db757dd3259352946b0471feb05
|
|
BLAKE2b-256 checksum How to use checksums |
4ebfb5a1e10b647f122ca7717621807e4d51cdb9fa53a8ccd5951bc89904b16d
|
| 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 10, 2026.
Transparency logRelease files / lanestyle-0.3.0-py3-none-any.whl
| Download URL | lanestyle-0.3.0-py3-none-any.whl |
|---|---|
| Size | 35.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f601214f96f9fba8f46aae405ce818a71db9cb16593e8810925557223d7befda
|
|
BLAKE2b-256 checksum How to use checksums |
a0ea9fde523f2743ab29f31bb435954ea5f8110c0efb80f40de66e3ee5208c2e
|
| 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 10, 2026.
Transparency log