Utiles

Latest version: v0.7.3

Safety actively analyzes 722810 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

0.7.2

- `utiles webpify` and `utiles-oxipng` commands now show correct size difference
if/when the size of a tiles-db is larger than it was previously
- fix axum 8 new routing paths
- `utiles-pyo3` children now accept kwarg bool `zorder`:
- `zorder` returns quadkey ordering: `top-left`, `top-right`, `bottom-left`,
`bottom-right`
- For some reason (I do not know why) `mercantile` and `mapbox/tilebelt` both
return children in the order of `top-left`, `top-right`, `bottom-right`,
`bottom-left` which I call 'd-ordering'
- `cli`
- format string `{projwin}` and `{projwin_web}` changed to return ` ` space separated coords

---

0.7.1

- fix axum 8 new routing paths

---

0.7.0

- **NO UNWRAPPING!** there is no unwrapping in utiles!
- updated `thiserror` to v2
- remove `gil-refs` pyo3 feature from python lib
- `pyo3` v0.23.x
- supermercado compatible `edges` and `burn` cli commands added as well a s rust
lib functions (obviously)
- `shapes` and `feature` functions for tile produce polygons that now DO follow
the right-hand-rule; exterior rings are clockwise
- `simplify`/`merge` function(s) optimized for faster merging and WAY less
memory usage
- Parent methods now returns `None` if `z<=0`
- New command(s):
- `agg-hash` command that computes the `agg-tiles-hash` of a tiles-db as
standardized by the martin/maplibre team (this supports more hash-types;
`xxh3` appears to be the fastest and what utiles will likely default to if
not `xxh64`)
- `commands` list all available commands (including hidden/dev/unimplemented
commands)
- `enumerate` list xyz tiles in db(s) similar to `tippecanoe-enumerate`; for
tippecanoe compatibility use `--tippecanoe`/`-t`
- `sqlite`/`db` sub-command group with `vac`/`analyze` commands and will
likely contain future pure sqlite util(e)s... these could totally be shell
scripts, but they're nice to have on das-windows
- `header`/`head` command that prints the json of a sqlite db header (which
has come in handy for weird dbs that use old code to write out sqlite dbs
(yes I have seen this))
- `vac`/`vacuum` command that vacuums a sqlite db (optionally into a new db)
- `analyze` command that analyzes a sqlite db (basically the same as doing
`sqlite3 database.sqlite "PRAGMA analyze;"`)
- `copy` and `touch`
- Now supports `flat`/`norm` (normalized)/`hash` (flat-with-hash) formats as
standardized by the martin/maplibre people. Should also work with
non-martin-conforming mbtiles schemas (appears to for me)
- Dev/hidden commands:
- `webpify` command that converts all non-webp raster-tiles to webp (lossless
only due to image-crate not supporting lossy encoding...)
- `oxipng` command that optimizes png(s) in mbtiles db(s) using `oxipng` crate
- figured out how to make async tile-stream(s)
- Removed even more `unwrap` usages
- lager/logging/tracing is reloadable from python; using the new fancy
`std::sync::LazyLock` (yay)
- lint/copy overhaul
- Added `--page-size` to vacuum command
- Using `json-patch` for metadata updates
- Allow setting metadata value(s) from file if no value is provided (`-`/`--`)
for stdin
- Figured out how to put the caller-site (eg `pyo3` in the cli help so you
(likely me) can tell which utiles you are calling)
- python:
- Added `TileFmts` string formatter object
- `Lager` singleton that can toggle tracing format and level (WIP)

---

0.6.1

- Fix calling `utiles.ut_cli` multiple times causing tracing-subscriber crash

---

0.6.0

- Upgrade pyo3 to `v0.22.0` -- had to add signatures to all fns with optional
args/kwargs
- Update python dev deps
- Added `{bbox}`, `{projwin}`, `{bbox_web}` and `{projwin_web}` format tokens to
tile-formatter (those projwins are handy for gdaling)

---

0.5.1

- Fixed backpressure issue when `unpyramiding` directory to mbtiles; the loading
of tiles was happening too fast and could cause memory issues on large
tile-pyramids... (this was previously not an issue b/c I would run those jobs
on my work machine which had 512gb or ram, but that machine died... RIP titus)
- Write out `metadata.json` when `pyramid-ing` mbtiles to directory if the
metadata of the mbtiles does not contain duplicate keys (which it should not)
- Limit jobs/concurrency when `pyramid-ing` mbtiles to directory to 4 (if not
specified by `--jobs`/`-j` option) to prevent nuking machines

---

Page 1 of 3

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.