Skip to main content

Yoro Maps

Documentation | PyPI | GitHub

Offline maps, routing, and POI, worldwide — companion to yoro geocoding.

Install

pip install yoro-maps
pip install yoro-maps[extract]  # OSM data extraction
pip install yoro-maps[django]   # Django integration
pip install yoro-maps[tiles]    # Tile downloading

Build a map database

yoromaps download ML --output mali.yoromaps

Route between Yoro codes

yoromaps route mali.yoromaps ML-4V7AK ML-5G62E
import yoromaps

conn = yoromaps.open_db("mali.yoromaps")
graph = yoromaps.get_graph("mali.yoromaps")  # loaded once, cached per process

r = graph.route(12.639, -8.003, 14.489, -4.197)  # Bamako → Mopti
print(f"{r.distance_km} km, {r.duration_min} min")  # 551.8 km, 681.0 min

# Points of interest — every POI gets a Yoro code automatically
poi = yoromaps.add_poi(conn, 12.639, -8.002, "Grand marche", category="market")
print(poi["yoro_code"])  # "ML-4V7AK"
yoromaps.pois_near(conn, 12.64, -8.0, radius_m=500)  # sorted by distance
yoromaps.pois_in_cell(conn, "ML-4V7AK")  # who lives at this address?

A build already fills that table from OpenStreetMap: the shops, schools, hospitals, markets and places of worship in the extract are read out, given their Yoro code and stored under source="osm". Re-running an extraction replaces only those rows, so locally added POIs survive every refresh.

from yoromaps.osm_poi import extract_pois, categorize

categorize({"amenity": "pharmacy"})  # "pharmacy"
categorize({"amenity": "parking"})  # None — not every tag is a place

stats = extract_pois("togo-latest.osm.pbf", conn)
stats["pois"]  # 16940
stats["unmapped"]  # the tags we walked past, most frequent first

Tagging is an allowlist, so noise stays out; stats["unmapped"] is what tells you which categories are worth adding next. Nameless features are skipped.

yoromaps download ML -o mali.yoromaps --no-pois   # routing graph only

Update maps

yoromaps update mali.yoromaps
# → Downloads only if OSM data has changed. POI and tiles are preserved.

Tested performance

Route Distance Compute
Bamako → Mopti 551.8 km 6.3s
Bamako → Tombouctou 812.2 km 6.6s
Urban (Bamako) 3.8 km 0.5s

Django integration

import yoromaps

DATABASES = {
    "default": {...},
    "maps": yoromaps.db_config("/data/mali.yoromaps"),
}

License

MIT — Paul Guindo / Altius Academy SNC.

Metadata

Release files for yoro-maps 0.11.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 yoro-maps 0.11.0
File Size Uploaded Provenance
yoro_maps-0.11.0.tar.gz 228.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for yoro-maps 0.11.0
File Interpreter ABI Platform
yoro_maps-0.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 314.3 kB

Release files / yoro_maps-0.11.0.tar.gz

Download URL yoro_maps-0.11.0.tar.gz
Size 228.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4cd1ddea7e65f70bae418ca8d510dee9f840c215d30fdc36a5e881060a9d0e24
BLAKE2b-256 checksum
How to use checksums
9f9f149a77cd4f4f79c89859e0414c66b3a0f7fc33259bdd7c59d5589dd015e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Release files / yoro_maps-0.11.0-py3-none-any.whl

Download URL yoro_maps-0.11.0-py3-none-any.whl
Size 86.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b3de34228770cdf283d5fb321849ce7fb7aaa61b8ab0ecf6379e2bdfcde1c532
BLAKE2b-256 checksum
How to use checksums
5875a2b8db23beefc639e6ba54cec479b76640023b09d703ac72edafa6c8a09f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Security for yoro-maps 0.11.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for yoro_maps-0.11.0.tar.gz

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 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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