Skip to main content

lanestyle

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.

PyPI Tests Docs Python 3.10+ MIT

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.md has 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.txt and llms-full.txt (every page, one file).
  • Changing lanestyle: AGENTS.md has 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)

Source distribution for lanestyle 0.3.0
File Size Uploaded
lanestyle-0.3.0.tar.gz 45.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lanestyle 0.3.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page