Skip to main content

High-performance streaming converter between WKT and WKB geometry formats

Project description

wkb_wkt_converter

A high-performance, zero-dependency Rust library for streaming conversion between WKT/EWKT and WKB/EWKB geometry formats used in GIS systems (PostGIS, GDAL, etc.).

Exposes both a Rust API and Python bindings (via PyO3/maturin).


Features

  • All 7 OGC geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection
  • All coordinate dimensions: XY, XYZ, M, ZM
  • Both EWKB (PostGIS flag-bit encoding) and ISO WKB (type+1000 offset encoding) as input
  • SRID preservation (EWKT ↔ EWKB); option to split SRID from geometry
  • Big-endian and little-endian WKB input; little-endian EWKB output for full conversions, with simple header rewrites preserving input byte order
  • EMPTY geometry support
  • Per-member EMPTY support inside MULTI* geometries
  • Hex WKB convenience helpers
  • Memory-safe handling for malformed input: structurally invalid input returns descriptive errors, while trusted-valid fast paths may pass through malformed geometry bodies as invalid output bytes/text.

Conversion strategy

WKB → WKT is a straightforward streaming read. WKT → WKB uses a seekable-buffer approach: count fields (ring count, point count, etc.) are written as 0 placeholders and patched in-place after the coordinates are streamed, avoiding a two-pass scan of the input.


Rust API

Add to Cargo.toml:

[dependencies]
wkb_wkt_converter = { path = "wkb_wkt_converter" }

Functions

// WKB/EWKB → WKT/EWKT, with SRID output control
pub fn wkb_to_wkt(wkb: &[u8], srid: SridMode) -> Result<String>

// WKB/EWKB → WKT, SRID returned separately (not in the string)
pub fn wkb_to_wkt_split_srid(wkb: &[u8]) -> Result<(String, Option<u32>)>

// WKT/EWKT → EWKB bytes, with SRID output control
pub fn wkt_to_wkb(wkt: &str, srid: SridMode) -> Result<Vec<u8>>

// WKT/EWKT → EWKB bytes, SRID returned separately (not in bytes)
pub fn wkt_to_wkb_split_srid(wkt: &str) -> Result<(Vec<u8>, Option<u32>)>

// WKT/EWKT → uppercase hex-encoded EWKB string, with SRID output control
pub fn wkt_to_hex_wkb(wkt: &str, srid: SridMode) -> Result<String>

// Hex-encoded WKB/EWKB → WKT/EWKT string, with SRID output control
pub fn hex_wkb_to_wkt(hex: &str, srid: SridMode) -> Result<String>

Generic converters

These functions accept an explicit Input: a WKT/EWKT string, a hex-encoded WKB/EWKB string, or raw WKB/EWKB bytes. Text input is detected automatically (a non-empty, even-length string composed entirely of hex characters is treated as hex WKB; anything else, including odd-length all-hex text, is treated as WKT). Input::Wkb is always treated as raw WKB/EWKB, not encoded text.

pub enum Input<'a> {
    Text(&'a str),
    Wkb(&'a [u8]),
}

pub fn to_wkb(input: Input<'_>, srid: SridMode) -> Result<Vec<u8>>
pub fn to_wkt(input: Input<'_>, srid: SridMode, normalize_wkt: bool) -> Result<String>
pub fn to_hex_wkb(input: Input<'_>, srid: SridMode) -> Result<String>

SridMode controls SRID handling in the output of direct and generic converters:

Variant Behaviour
SridMode::Auto Mirror the input — SRID kept if present, absent if not
SridMode::Strip Always strip the SRID from the output
SridMode::Set(n) Always embed SRID n, overriding whatever the input contains

Validation notes:

  • WKT coordinates must be finite. WKB coordinate payloads are treated as trusted-valid: all-NaN Point remains POINT EMPTY, while other NaN or infinity values may format as invalid WKT instead of raising an error.
  • Direct WKB-to-WKT entry points still reject structurally invalid WKB such as truncation, unsupported type codes, excessive nesting, and trailing top-level bytes.
  • For simple Point, LineString, and Polygon EWKB/WKB hex or raw WKB input in either byte order, to_wkb(input, SridMode::Strip | SridMode::Set(_)) and the equivalent to_hex_wkb paths patch only the top-level header. Malformed coordinate bodies or trailing bytes in those simple fast paths can pass through as invalid output. ISO-dimensional, collection, and non-canonical type headers fall back to a full normalising round-trip.
  • to_wkb(Input::Text(hex), SridMode::Auto) returns decoded bytes without WKB structure validation, and to_hex_wkb(Input::Text(hex), SridMode::Auto) validates and uppercases the hex text only. Input::Wkb under SridMode::Auto is copied or hex-encoded without WKB structure validation.
  • GeometryCollection dimension tags are not inherited by child geometries. An XY collection may contain heterogeneous immediate children. A Z, M, or ZM collection requires each immediate child to declare the same dimension.
  • WKT and WKB parsing reject geometry nesting beyond the implementation depth limit of 128.

to_wkt accepts a normalize_wkt: bool parameter. When true, WKT input is normalised (canonical casing, spacing, coordinate formatting) via a round-trip through WKB. When false, only the SRID prefix is adjusted — no validation is performed: malformed WKT is returned without error. Leading/trailing whitespace is always trimmed regardless of this flag. Hex WKB and raw WKB input are always decoded to normalised WKT regardless of this flag. Odd-length all-hex input is not detected as hex WKB; with normalize_wkt=false it follows the same unvalidated WKT fast path.

Example

use wkb_wkt_converter::{wkt_to_wkb, wkb_to_wkt, wkt_to_wkb_split_srid, hex_wkb_to_wkt};
use wkb_wkt_converter::{to_wkt, to_hex_wkb, Input, SridMode};

// Basic round-trip
let wkb = wkt_to_wkb("POINT (1 2)", SridMode::Auto)?;
let wkt = wkb_to_wkt(&wkb, SridMode::Auto)?;
assert_eq!(wkt, "POINT (1 2)");

// With SRID embedded
let wkb = wkt_to_wkb("SRID=4326;POINT Z (1 2 3)", SridMode::Auto)?;
let wkt = wkb_to_wkt(&wkb, SridMode::Auto)?;
assert_eq!(wkt, "SRID=4326;POINT Z (1 2 3)");

// SRID split from geometry
let (wkb, srid) = wkt_to_wkb_split_srid("SRID=4326;LINESTRING (0 0, 1 1)")?;
assert_eq!(srid, Some(4326));
// wkb contains a plain (non-EWKB) LineString

// All geometry types and dimensions work the same way
let wkb = wkt_to_wkb(
    "MULTIPOLYGON ZM (((0 0 0 1, 1 0 0 1, 1 1 0 1, 0 0 0 1)))",
    SridMode::Auto,
)?;
let wkt = wkb_to_wkt(&wkb, SridMode::Auto)?;
assert_eq!(wkt, "MULTIPOLYGON ZM (((0 0 0 1, 1 0 0 1, 1 1 0 1, 0 0 0 1)))");

// Generic converters: input format (WKT, hex WKB, or raw WKB) selected explicitly/detected automatically
// Normalise WKT (casing, whitespace) — SridMode::Auto mirrors the input SRID
let wkt = to_wkt(Input::Text("point(1 2)"), SridMode::Auto, true)?;
assert_eq!(wkt, "POINT (1 2)");

// Add or override an SRID regardless of what the input contains
let hex = to_hex_wkb(Input::Text("POINT (1 2)"), SridMode::Set(4326))?;
// hex is an EWKB string encoding SRID=4326;POINT (1 2)
let wkt = hex_wkb_to_wkt(&hex, SridMode::Strip)?;
assert_eq!(wkt, "POINT (1 2)");

// Raw WKB bytes can also go through the generic converters
let wkt = to_wkt(Input::Wkb(&wkb), SridMode::Auto, false)?;
assert_eq!(wkt, "MULTIPOLYGON ZM (((0 0 0 1, 1 0 0 1, 1 1 0 1, 0 0 0 1)))");

// Strip the SRID without re-encoding (fast path)
let wkt = to_wkt(Input::Text("SRID=4326;POINT (1 2)"), SridMode::Strip, false)?;
assert_eq!(wkt, "POINT (1 2)");

Error handling

All functions return Result<_, wkb_wkt_converter::Error>:

pub enum Error {
    InvalidWkt(String),
    InvalidWkb(String),
    UnsupportedGeometryType(u32),
}

Fuzzing

cargo-fuzz support for the core crate lives in fuzz/README.md. It includes five targets covering raw WKB bytes, arbitrary UTF-8 text, generic Input dispatch behavior, bounded valid-geometry round-trips, plus a depth-boundary target for nested GEOMETRYCOLLECTION inputs. The GitHub Actions fuzz workflow is a smoke/regression check; it complements, but does not replace, longer local or continuous fuzzing campaigns.


Python API

Build and install

Requires Python 3.10 or newer, maturin, and a Rust toolchain. Wheels include PEP 561 type stubs for static type checkers and IDEs.

pip install maturin
maturin develop          # install into the current virtualenv (dev mode)
maturin build --release  # build a wheel

Functions

from wkb_wkt_converter import (
    wkb_to_wkt,
    wkb_to_wkt_split_srid,
    wkt_to_wkb,
    wkt_to_wkb_split_srid,
    wkt_to_hex_wkb,
    hex_wkb_to_wkt,
    # generic converters
    to_wkb,
    to_wkt,
    to_hex_wkb,
)
Function Input Output
wkb_to_wkt(wkb, srid=None) bytes-like WKB/EWKB str
wkb_to_wkt_split_srid(wkb) bytes-like WKB/EWKB (str, int | None)
wkt_to_wkb(wkt, srid=None) str bytes
wkt_to_wkb_split_srid(wkt) str (bytes, int | None)
wkt_to_hex_wkb(wkt, srid=None) str str
hex_wkb_to_wkt(hex_wkb, srid=None) str str

WKB arguments in the Python API accept bytes, bytearray, memoryview, and other C-contiguous one-byte buffer objects. They are always treated as raw WKB/EWKB, not as encoded text.

For performance, bytes-like WKB inputs may be borrowed directly without copying. Do not mutate a writable buffer while a converter is reading it, including from native code, another thread, or shared memory. Mutating the buffer during conversion is unsupported and may produce invalid or inconsistent results.

All functions above raise ValueError on invalid geometry input. The bytes-like WKB functions raise BufferError when the Python object does not provide a C-contiguous one-byte buffer. (See to_wkt below for an exception when normalize_wkt=False.)

Generic converters

These three functions accept a WKT/EWKT string, a hex-encoded WKB/EWKB string, or bytes-like WKB/EWKB input. String input is detected automatically: a non-empty, even-length string composed entirely of hex characters is treated as hex WKB; anything else, including odd-length all-hex text, is treated as WKT. Bytes-like input is always treated as raw WKB/EWKB, not encoded text.

Function Output
to_wkb(source, srid=None) bytes
to_wkt(source, srid=None, normalize_wkt=False) str
to_hex_wkb(source, srid=None) str

The srid keyword argument on direct and generic converters controls SRID handling in the output:

Value Behaviour
None (default) Mirror the input — SRID kept if present, absent if not
False Always strip the SRID from the output
int Always embed this SRID, overriding whatever the input contains

Validation behavior matches the Rust API: WKT coordinates must be finite, while WKB coordinate payloads are treated as trusted-valid. Simple Point, LineString, and Polygon EWKB/WKB hex or bytes-like inputs in either byte order under srid=False or an integer SRID are patched at the top-level header without scanning the body, so malformed bodies or trailing bytes can pass through as invalid output. to_wkb(source, srid=None) returns decoded/raw bytes without WKB structure validation, and to_hex_wkb(source, srid=None) validates and uppercases hex text or hex-encodes bytes-like input without WKB structure validation.

to_wkt accepts a normalize_wkt keyword argument (default False). When True, WKT input is normalised (canonical casing, spacing, coordinate formatting) via a round-trip through WKB. When False (the default), only the SRID prefix is adjusted — no validation is performed: malformed WKT is returned without raising an error. Leading/trailing whitespace is always stripped regardless of this flag. Hex WKB and bytes-like WKB input are always decoded to normalised WKT regardless of this flag. Odd-length all-hex input is not detected as hex WKB; with normalize_wkt=False it follows the same unvalidated WKT fast path.

Example

from wkb_wkt_converter import wkt_to_wkb, wkb_to_wkt, wkt_to_hex_wkb, hex_wkb_to_wkt
from wkb_wkt_converter import to_wkt, to_hex_wkb

wkb = wkt_to_wkb("POINT (1 2)")
wkt = wkb_to_wkt(wkb)
assert wkt == "POINT (1 2)"

# EWKT with SRID
wkb = wkt_to_wkb("SRID=4326;POLYGON ((0 0, 1 0, 1 1, 0 0))")
wkt = wkb_to_wkt(wkb)
assert wkt == "SRID=4326;POLYGON ((0 0, 1 0, 1 1, 0 0))"

# Hex WKB (common PostGIS text format)
hex_wkb = wkt_to_hex_wkb("POINT (1 2)")
wkt = hex_wkb_to_wkt(hex_wkb)
assert wkt == "POINT (1 2)"

srid_hex_wkb = wkt_to_hex_wkb("SRID=4326;POINT (1 2)")
wkt = hex_wkb_to_wkt(srid_hex_wkb, srid=False)
assert wkt == "POINT (1 2)"

# Generic converters: input format detected automatically
wkt = to_wkt("point(1 2)", normalize_wkt=True)  # normalise WKT
assert wkt == "POINT (1 2)"

wkt = to_wkt(hex_wkb)                           # hex WKB -> WKT (always normalised)
assert wkt == "POINT (1 2)"

wkt = to_wkt(wkb)                               # raw WKB bytes -> WKT
assert wkt == "POINT (1 2)"

hex_out = to_hex_wkb("POINT (1 2)", srid=4326)  # add SRID
wkt = to_wkt(hex_out)
assert wkt == "SRID=4326;POINT (1 2)"

wkt = to_wkt("SRID=4326;POINT (1 2)", srid=False)  # strip SRID (fast path)
assert wkt == "POINT (1 2)"

Benchmarks

Comparison against shapely 2.x. Regenerate with:

pip install ".[benchmark]"
python scripts/update_readme_benchmarks.py
# or, using an already-saved JSON:
python scripts/update_readme_benchmarks.py --json benchmark_results.json

For local performance history across commits, use airspeed velocity:

pip install ".[asv]"
asv check --python=same
asv run --python=same --quick --show-stderr --dry-run
asv run HEAD^! --quick --show-stderr --dry-run
asv run main..HEAD --skip-existing-commits --show-stderr
asv run ALL --skip-existing-commits --show-stderr
asv publish
asv preview
asv compare main HEAD --split

2026-05-05 — Python 3.12.3 — 12th Gen Intel(R) Core(TM) i7-12700KF

Times are mean latency per call (lower is better). Speedup = shapely mean ÷ wkb_wkt_converter mean.

Basic conversions

wkt_to_wkb

Geometry wkb_wkt_converter shapely Speedup
Point 140 ns 5.2 µs 37.3×
LineString (5 pts) 233 ns 6.2 µs 26.7×
Polygon (5 pts) 247 ns 6.2 µs 25.2×
GeometryCollection 387 ns 8.3 µs 21.5×
MultiPolygon 533 ns 9.9 µs 18.6×
LineString (1000 pts) 23.3 µs 209.1 µs 9.0×
Polygon (1000 pts) 40.7 µs 444.0 µs 10.9×

wkb_to_wkt

Geometry wkb_wkt_converter shapely Speedup
Point 148 ns 3.9 µs 26.3×
LineString (5 pts) 240 ns 4.4 µs 18.3×
Polygon (5 pts) 140 ns 4.4 µs 31.2×
GeometryCollection 213 ns 5.1 µs 24.0×
MultiPolygon 667 ns 6.9 µs 10.3×
LineString (1000 pts) 38.9 µs 118.2 µs 3.0×
Polygon (1000 pts) 118.3 µs 140.8 µs 1.2×

wkt_to_hex_wkb

Geometry wkb_wkt_converter shapely Speedup
Point 164 ns 5.2 µs 31.6×
LineString (5 pts) 337 ns 6.4 µs 19.0×
Polygon (5 pts) 365 ns 6.4 µs 17.6×
GeometryCollection 494 ns 8.7 µs 17.5×
MultiPolygon 847 ns 9.8 µs 11.6×
LineString (1000 pts) 36.8 µs 230.0 µs 6.2×
Polygon (1000 pts) 54.5 µs 456.0 µs 8.4×

hex_wkb_to_wkt

Geometry wkb_wkt_converter shapely Speedup
Point 188 ns 4.0 µs 21.3×
LineString (5 pts) 331 ns 4.6 µs 13.9×
Polygon (5 pts) 219 ns 4.6 µs 21.1×
GeometryCollection 352 ns 5.6 µs 15.8×
MultiPolygon 854 ns 6.8 µs 8.0×
LineString (1000 pts) 47.2 µs 133.3 µs 2.8×
Polygon (1000 pts) 126.7 µs 156.0 µs 1.2×

Generic to_* converters

to_wkb(wkt)

Geometry wkb_wkt_converter shapely Speedup
Point 146 ns 5.4 µs 36.8×
LineString (5 pts) 241 ns 6.7 µs 27.7×
Polygon (5 pts) 273 ns 6.5 µs 23.9×
GeometryCollection 391 ns 8.5 µs 21.6×
MultiPolygon 565 ns 9.6 µs 17.0×
LineString (1000 pts) 24.0 µs 215.0 µs 9.0×
Polygon (1000 pts) 41.2 µs 452.8 µs 11.0×

to_wkb(hex_wkb)

Geometry wkb_wkt_converter shapely Speedup
Point 79 ns 4.5 µs 57.4×
LineString (5 pts) 116 ns 4.8 µs 41.6×
Polygon (5 pts) 117 ns 4.7 µs 40.4×
GeometryCollection 160 ns 5.3 µs 33.2×
MultiPolygon 215 ns 5.9 µs 27.7×
LineString (1000 pts) 7.2 µs 42.8 µs 5.9×
Polygon (1000 pts) 7.2 µs 43.3 µs 6.0×

to_wkt(wkt)normalize_wkt=False (fast path, no WKB round-trip)

Geometry wkb_wkt_converter shapely Speedup
Point 62 ns 4.8 µs 76.8×
LineString (5 pts) 60 ns 6.1 µs 101.3×
Polygon (5 pts) 61 ns 6.1 µs 100.2×
GeometryCollection 65 ns 8.4 µs 129.9×
MultiPolygon 66 ns 10.6 µs 160.0×
LineString (1000 pts) 521 ns 306.5 µs 588.0×
Polygon (1000 pts) 2.1 µs 547.8 µs 267.2×

to_wkt(wkt)normalize_wkt=True (full WKT→WKB→WKT round-trip)

Geometry wkb_wkt_converter shapely Speedup
Point 346 ns 4.8 µs 13.8×
LineString (5 pts) 550 ns 6.1 µs 11.1×
Polygon (5 pts) 458 ns 6.1 µs 13.3×
GeometryCollection 685 ns 8.4 µs 12.3×
MultiPolygon 1.3 µs 10.6 µs 8.1×
LineString (1000 pts) 62.9 µs 306.5 µs 4.9×
Polygon (1000 pts) 162.3 µs 547.8 µs 3.4×

to_wkt(hex_wkb)

Geometry wkb_wkt_converter shapely Speedup
Point 195 ns 4.1 µs 21.1×
LineString (5 pts) 349 ns 4.6 µs 13.2×
Polygon (5 pts) 231 ns 4.7 µs 20.1×
GeometryCollection 359 ns 5.5 µs 15.4×
MultiPolygon 873 ns 6.7 µs 7.7×
LineString (1000 pts) 46.8 µs 132.5 µs 2.8×
Polygon (1000 pts) 126.9 µs 155.2 µs 1.2×

to_hex_wkb(wkt)

Geometry wkb_wkt_converter shapely Speedup
Point 177 ns 5.4 µs 30.4×
LineString (5 pts) 350 ns 6.4 µs 18.3×
Polygon (5 pts) 375 ns 6.8 µs 18.3×
GeometryCollection 524 ns 8.7 µs 16.6×
MultiPolygon 869 ns 9.8 µs 11.3×
LineString (1000 pts) 37.3 µs 228.1 µs 6.1×
Polygon (1000 pts) 54.7 µs 463.0 µs 8.5×

to_hex_wkb(hex_wkb)

Geometry wkb_wkt_converter shapely Speedup
Point 86 ns 4.5 µs 52.6×
LineString (5 pts) 169 ns 4.9 µs 29.1×
Polygon (5 pts) 174 ns 4.9 µs 28.5×
GeometryCollection 238 ns 5.5 µs 23.0×
MultiPolygon 366 ns 6.2 µs 17.0×
LineString (1000 pts) 14.8 µs 56.7 µs 3.8×
Polygon (1000 pts) 15.1 µs 58.1 µs 3.8×

Project layout

wkb_wkt_converter/          # core Rust library (zero runtime dependencies)
  src/
    lib.rs                  # public API
    error.rs
    types.rs                # GeomType, Dimension
    wkb_to_wkt/             # WKB reader + WKT builder
    wkt_to_wkb/             # WKT tokenizer + seekable WKB writer
  tests/
    wkb_to_wkt.rs
    wkt_to_wkb.rs
    generic_converters.rs

wkb_wkt_converter_py/       # Python bindings (PyO3 / maturin)
  src/lib.rs

pyproject.toml              # maturin build config

Running tests

cargo test                  # run all Rust tests
cargo clippy -- -D warnings # lints
cargo fmt --check           # formatting

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wkb_wkt_converter-0.6.2.tar.gz (42.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-win_amd64.whl (182.2 kB view details)

Uploaded PyPyWindows x86-64

wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (281.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl (256.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (262.3 kB view details)

Uploaded PyPymacOS 10.12+ x86-64

wkb_wkt_converter-0.6.2-cp314-cp314-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.14Windows x86-64

wkb_wkt_converter-0.6.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

wkb_wkt_converter-0.6.2-cp314-cp314-macosx_11_0_arm64.whl (253.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

wkb_wkt_converter-0.6.2-cp314-cp314-macosx_10_12_x86_64.whl (258.7 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

wkb_wkt_converter-0.6.2-cp313-cp313-win_amd64.whl (177.7 kB view details)

Uploaded CPython 3.13Windows x86-64

wkb_wkt_converter-0.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

wkb_wkt_converter-0.6.2-cp313-cp313-macosx_11_0_arm64.whl (253.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

wkb_wkt_converter-0.6.2-cp313-cp313-macosx_10_12_x86_64.whl (258.7 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

wkb_wkt_converter-0.6.2-cp312-cp312-win_amd64.whl (178.0 kB view details)

Uploaded CPython 3.12Windows x86-64

wkb_wkt_converter-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

wkb_wkt_converter-0.6.2-cp312-cp312-macosx_11_0_arm64.whl (253.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wkb_wkt_converter-0.6.2-cp312-cp312-macosx_10_12_x86_64.whl (259.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

wkb_wkt_converter-0.6.2-cp311-cp311-win_amd64.whl (180.6 kB view details)

Uploaded CPython 3.11Windows x86-64

wkb_wkt_converter-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (279.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

wkb_wkt_converter-0.6.2-cp311-cp311-macosx_11_0_arm64.whl (255.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wkb_wkt_converter-0.6.2-cp311-cp311-macosx_10_12_x86_64.whl (260.7 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

wkb_wkt_converter-0.6.2-cp310-cp310-win_amd64.whl (180.4 kB view details)

Uploaded CPython 3.10Windows x86-64

wkb_wkt_converter-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (280.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

wkb_wkt_converter-0.6.2-cp310-cp310-macosx_11_0_arm64.whl (255.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

wkb_wkt_converter-0.6.2-cp310-cp310-macosx_10_12_x86_64.whl (261.0 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file wkb_wkt_converter-0.6.2.tar.gz.

File metadata

  • Download URL: wkb_wkt_converter-0.6.2.tar.gz
  • Upload date:
  • Size: 42.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wkb_wkt_converter-0.6.2.tar.gz
Algorithm Hash digest
SHA256 2a66060b51a4649ba46945003eeb35a562fa714999f90a95a74c079b6306d2ba
MD5 a24a22dab69ea2011367cf2ca8104b88
BLAKE2b-256 ecea1277e70d83712c89ff4bf74f2f70ed7b91c43b09750c4777db75dde1de67

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2.tar.gz:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 02c5b61f06a8cbb34d56451cb9d0255153faac28335e0c1beb3ec045eddf368e
MD5 c24c5e442fe3df532123670e06e50c8f
BLAKE2b-256 6272571b19a7d3192c2f4d70f966a57e6176c1944ab5888cf70ae6296e07c7dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-win_amd64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e6c6557b8367969458ed79ff713c126b7d048ad325e6a9e2a82c598d1e83b566
MD5 d4bd9ed3352e226670a0a6f6f47c827b
BLAKE2b-256 95d9f818ae96597a43e432eedb854365ed8996c472fc5f27418e0b1ecc144a3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9a1bdf8195f4abdbdbed275ebe590dc1c48f6ea147105b097ad2c73357606a7
MD5 8f3d7ab9aa5daf403d9feb393c653ee5
BLAKE2b-256 a2309dc18864b27f43166590082676e8ade628b972dbd672976a813b6b9506de

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 11c12da2b3dcdfdfdea63192b4e640223b3d0f4e4c99e4eba7b81ca3e4c69bb1
MD5 27972f6c9b8a02b34f3e085f2a1ac71f
BLAKE2b-256 5ba09bd0de7532fdfca7d2c15ca1003865fb2a94247695d2a3f2d21a78db04f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1f71663182bcd0abe722d903328edaf3c7294b00cd15459ffc6c2e91c649672c
MD5 9051b323f022cf1e281e1d164142352a
BLAKE2b-256 fd83f2bde90f37ea869047f37a2cf362747b859dffd19524e04f117cc76fbe09

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp314-cp314-win_amd64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a39fc4de623ac996097e73e806a0c65f27aaed3f30746ae886a96dec29b16515
MD5 61ee4810169feabaeb2f6fe165952dec
BLAKE2b-256 f2599edbed7af5e3687904f1e476ac103f18374bdc412de27fa6ec844c280ed7

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c18e7bb9e46c8a79fe835597dc1b8edeec2e1c6f07e464f816704b87bd6ce1e9
MD5 3a7765fb2b23fc61dff2ecce362086bf
BLAKE2b-256 034e8eeec6eac7be4355a16934a3d79a6cf59c43015cbc3085c5370f4c98b648

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3420e4a45d4ab91b8111b32b8968cc139dac0911efc6a49bd4fd6217f2a40037
MD5 281a698b60b3c39a23f3ff3bdcac7d68
BLAKE2b-256 a9d6ca24da78d230d194ed60f33279d424824ab913eb84c37f096efbd7076efd

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b2e00756bc2f18c5e9edcef2f48ed9412146bf0f70060d75cf38bd07fc0fb14d
MD5 7f64e1764b36951f5d0a00c7d4d49f2e
BLAKE2b-256 06578e50ba8df3c24cb59ba3c008e43175a881ceaf4e5bb86aad857686dd9c2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp313-cp313-win_amd64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e49719831b0a1a3cb474bde1638406bcd1c4acef6507ff337452f88804d15ff
MD5 45e27f6114c1708dc498d6847e9e8ac1
BLAKE2b-256 80ab181c4c0bda6f0ccf4a93d933d312a609d8f35c95ccf27be41f2516497192

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10f482f426faab8c40510ab6110481573cdaa461b07a15ffe88c56ad4a705429
MD5 85908f8c15ddafd124e9f30b06c1e9c5
BLAKE2b-256 9874852d0a118d1d71d319f44a1ca97b42dfd3445b45b44ba080795e34b5825e

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 87f3f181d113ab71577506a71e18faf6681c1e40234f0c4a868fc16e1e8edfe0
MD5 7222b43bcb70342b4bf14812e20347a4
BLAKE2b-256 4197b314fd07531723c45487709af2037e91f37a1c076ab18cac7504b41a74ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 031333e7c5265db6a7eda2692483e98036ed57e098a29e5d9ee5f6b2382ac434
MD5 ee7e0a5b3a9ec5b68c0e90fd0fce3f71
BLAKE2b-256 d56fa2aff63a2b20676d00de9e2624d922a45d03029f10774629b648a12cd98d

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp312-cp312-win_amd64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20cfc477613934d81661f8cd43b8bfda809f0d2aaca8418246e5babf8283652f
MD5 fad32159e876b6ae3a7b179ea13ff358
BLAKE2b-256 0281e22f021e63bd16409e46fdc07349b4536e4b50da6f901ebd394261cfa9bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c823461c3bbce590429885a2ef4584e1450b3f553c11ffe696a1b15e135eefc
MD5 b083fb8099cd64187afab749a6b89522
BLAKE2b-256 a2a631786bb0f0e480cb3b5116b22f052590cb4a924a46b7e8fffb22b7e76140

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0d9214fcf10d80e933b98a772c59c52baf0a0fe7df3f4236a2f971685b5da5e0
MD5 53acb4807348d5a9c7adfb80f62a945f
BLAKE2b-256 ddf9db38ea759a94f7470420d8a9d9e7228410618b4c900b2ead01f4317d2541

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e8b0f7a4ff563c38701b44612207e299daa5299dba4785a21cf9891157d9b539
MD5 5e9e281118fea54d999954b1d3d0ccfa
BLAKE2b-256 1145aa7868f9f565be94b315b435eb7a52d79ca936e83825675009f9512f65e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp311-cp311-win_amd64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b98bcedee80afad237decb0bdd4224f0e8a1314d69ed742807ee83ccdaa6adc5
MD5 f2ecdb1cc870b85e467eff694f560104
BLAKE2b-256 a91bdc77091f62770014405e3690093fdbebf5295a0f3cf24990042f3fb9fcd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ad6103884f4d225931ae754175a8f6185493e396ca49e57bb00165f1d9d7113
MD5 13a1837d253985f8b3f3ac6bdcbb07bb
BLAKE2b-256 bd60fc7b36b4fe2d1b2dfbf0c275c38361163a5767c6b5fcfc91d0bfa34f6a2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 45c56d3999bb4297281321f80fc3f87fe0248fdbcaef0ca774d9c2c3916e1722
MD5 bb5a0f42d0559ad9f1c6a7bf20cca467
BLAKE2b-256 0e183e6ae49a568303c9b7f505c6c46768f97b277662b4227728254c9184df09

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 dc72ab38feffc2cfc9eae180a6dd4b00f8bb7a2ac804ea79315295052c6e80c9
MD5 c1b5fe2a4eb9c4acdf11d3ffc53bf486
BLAKE2b-256 f41738887030d9aada690fe0f7c5108ccf9469af65fe1bb59b78e546590dcee1

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp310-cp310-win_amd64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d09de0b68af0a28764b67399dc7be4c980611ba0b282af103d0d13baab935bf
MD5 67eb2c6a713b5a5baa3b302deeb9426b
BLAKE2b-256 4ce2ca72a2b9a244bee50ab8d98117b39c426d3c0f7b5ab5bb20491cc4fb5fb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbd0066b2cc4d7d22b1fe5038792388990742aeb005fbe879130eecac4ce050e
MD5 01168e69877f2608be17a8acaa564001
BLAKE2b-256 0381e74f94e77446b7ec6efca4e2a5689579446f74ee7098d77c99abb217a731

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wkb_wkt_converter-0.6.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wkb_wkt_converter-0.6.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 703046d517484d791e53476c1c03f3ebdced3a4f8c2bbf97748f60a9ee3fc0fa
MD5 6ecb768d9393ba541624095140b48823
BLAKE2b-256 c21dbc8d909eddfb82cc8e49a91942f271338d3ab5da99c6822e1aacb4757c32

See more details on using hashes here.

Provenance

The following attestation bundles were made for wkb_wkt_converter-0.6.2-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: release.yml on adrien-berchet/WKB_WKT_Converter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page