Prettymaps v1.4.2 turns OSM layers into artwork
Prettymaps v1.4.2 gives Python users a short route from a place name to a stylized static map. prettymaps.plot() accepts an address, latitude and longitude, a GeoDataFrame boundary, or a GPX/KML track. It obtains OpenStreetMap geometry, projects it, and draws the chosen layers with Matplotlib. Buildings can use a color palette while streets, water, parks, and boundaries receive separate line, fill, opacity, and hatch settings.
The useful part is what comes back. A Plot object exposes the figure, axes, background, keypoints, and GeoDataFrames for each layer. You can begin with 1 of the bundled JSON presets, inspect a building record, add a Matplotlib title, or apply a postprocessing function before drawing. The tutorial also covers mosaics, several locations on one canvas, hillshade, route overlays, and a Vsketch mode for pen-plotter SVG output.
What happened when we ran it
Our sandbox installed Prettymaps in 76 seconds, adding 148 Python packages and using 1,913 MB on disk. The build completed in 6 seconds. Pytest then ran for 36 seconds and reported 9 passed with 0 failures out of 9. Pip-audit found 0 known vulnerabilities in the installed environment. These figures come from commit 02f8587 in a fresh Debian container with 3 CPUs and 8 GB of RAM.
The repository itself was much smaller than its environment: 53 files, about 3,529 source lines, and a 23 MB checkout. We found 3 CI workflow files, no Dockerfile, and a tests directory. A passing build and 9 green tests make the checked-out code easy to trial. They do not measure whether a particular city renders completely, because the collected tests mock much of the expensive map-fetching and drawing work.
The 1,913 MB environment buys a one-call interface
The 148-package install reflects how much Prettymaps assembles for you. Its requirements include OSMnx, GeoPandas, Shapely, Rasterio, Rioxarray, OpenCV, scikit-image, scikit-learn, Vsketch, Streamlit, and Marimo. That bundle supports vector geometry, raster elevation, a browser front end, tutorials, and physical plotting. A script that only draws streets still receives the wider stack, so an isolated environment and a 2 GB disk allowance are sensible starting points.
The README's pip install prettymaps instruction is accurate for the happy path. commit 02f8587 declares Python 3.12 or newer in setup.py, although the README badge says Python 3.11+. Colab uses a source install and requires a runtime restart. The Streamlit interface must run from a repository checkout with streamlit run app.py; it lets users choose a preset, layers, page size, palette, and PNG or SVG download without writing a full plotting script.
OpenStreetMap availability decides whether a render finishes
Prettymaps v1.4.2 gets its geography through OSMnx, so the first render needs working geocoding and Overpass access. Open issue 150 contains a connection-refused trace after the Overpass endpoint exhausted its retries. That report concerns one user's connection and does not prove a general outage. It does show why a successful 76-second package install is separate from a dependable rendering service: live data retrieval remains outside the repository.
Error handling makes that dependency harder to operate. Issue 154 reports that a partial or empty response can leave out the highway column and later crash drawing with a KeyError. Issue 159 points to exception handlers in fetch.py that replace fetch errors with empty GeoDataFrames without logging the original problem. Both reports were still open after activity on August 23, 2026. For commissioned work, render early, keep the source revision fixed, and compare the image with OpenStreetMap before delivery.
AGPL-3.0 governs the code despite the MIT setup label
The README and LICENSE identify Prettymaps as AGPL-3.0 and ask users to keep the printed credit for the project and OpenStreetMap. The author also asks people not to sell NFTs made with the project, while plainly acknowledging that this request is not legally enforceable. Commercial use is allowed under the stated license, but distribution and network-service obligations deserve review before Prettymaps becomes part of a proprietary product.
commit 02f8587 contains a concrete packaging mistake: setup.py labels the package as MIT License, conflicting with the AGPL-3.0 README and license file. Pull request 152 proposed correcting that metadata and was closed on August 7, 2026. Do not treat the setup label as permission. Use the repository license text as the starting point and get legal advice when source-disclosure duties could affect a product.
July source work and August reports show an active queue
GitHub recorded the last source push on July 30, 2026, while issues and pull requests were still being updated on August 23. The repository had 14,080 stars and 22 open issues and pull requests when fetched. The latest release was v1.4.2, published March 3, 2025, so main-branch additions such as GPX/KML handling arrived after the latest tagged package release. Pin the release or commit you tested instead of mixing examples from both.
Prettymaps earns its place as an art-oriented convenience layer, particularly when you want presets plus direct access to the underlying GeoDataFrames. Our 9-of-9 test result lowers the cost of an experiment, and the 1,913 MB footprint sets an honest boundary around deployment. Choose OSMnx for network analysis, GeoPandas for a custom data pipeline, or Folium for an interactive browser map. Choose Prettymaps when the deliverable is a static image you will inspect.

