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.1

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.1
File Size Uploaded
lanestyle-0.3.1.tar.gz 46.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lanestyle 0.3.1
File Interpreter ABI Platform
lanestyle-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 82.6 kB

Release files / lanestyle-0.3.1.tar.gz

Download URL lanestyle-0.3.1.tar.gz
Size 46.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9aff660335473e56539b098da955df03f7d4f7cd358c3264897e380e615a505f
BLAKE2b-256 checksum
How to use checksums
8326d993e8b140c999d33c087b78dd6448965dd97eaf0f0083c15ace96320fab
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 11, 2026.

Transparency log

Release files / lanestyle-0.3.1-py3-none-any.whl

Download URL lanestyle-0.3.1-py3-none-any.whl
Size 36.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bbcf89c8845c64687e3512f5f46428b66d5e13e8c41fff477fca17129e698615
BLAKE2b-256 checksum
How to use checksums
906df7a6fbc85e9dcdecdbb224ca46c9b73f8f3c5b89c8f81ad371bdb924655e
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 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

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