Skip to main content

laterite — a Rust-backed AGS4 reader, writer and validator

laterite

A Rust-backed reader, writer and validator for the AGS4 geotechnical data format, with a modern, born-typed polars API. A faster drop-in for python-ags4's AGS4 module — swap from python_ags4 import AGS4 for from laterite import compat as AGS4.

ci python cov PyPI Python versions License: MIT

Install

pip install laterite                  # base AGS4 (polars + duckdb, pyarrow-free)
pip install "laterite[compat]"        # + pandas (python-ags4 drop-in)

Requires Python ≥ 3.12.

Use

import laterite

# Validate — errors + warnings by default (FYI is opt-in)
report = laterite.validate("delivery.ags")
report.is_valid
for rule, findings in report.by_rule().items():
    print(rule, len(findings))

# Read born-typed columns: a 2DP heading is a float, a DT a datetime
ags = laterite.read("delivery.ags")
ags.groups                       # ['PROJ', 'LOCA', 'SAMP', …]
ags["LOCA"]["LOCA_GL"][0]        # → 12.3  (a polars DataFrame per group)

# Repair a dirty file into a fresh handle, then keep working with it
fixed = ags.fix(risky=True)      # pads short rows, transliterates non-ASCII, …

# Typed graph: PROJ → LOCA → SAMP → …
from laterite.ags4 import read_typed
proj = read_typed("delivery.ags")
for loca in proj.locas:
    print(loca.loca_id, loca.loca_gl)

# python-ags4 drop-in — swap the import, keep your code
from laterite import compat as AGS4
tables, headings = AGS4.AGS4_to_dataframe("delivery.ags")
AGS4.dataframe_to_AGS4(tables, headings, "round-trip.ags")

The native API returns born-typed polars frames by default (or pandas with read(..., backend="pandas")) — both pyarrow-free, read back from a Python-owned in-memory DuckDB engine.

One engine, every stack

laterite on PyPI is the Python surface of one Rust AGS4 engine, shared across:

Surface Package Get it
Python laterite — PyPI pip install laterite
Node.js laterite — npm npm install laterite
Rust / CLI lat-check GitHub Releases
DuckDB laterite_ags4 — community extension INSTALL laterite_ags4 FROM community;
Browser validator + data explorer — WASM open in a browser

Faster than python-ags4

Validation throughput vs python-ags4 1.2.0 (macOS arm64), agreeing on the same findings — speed not at the cost of diagnostic coverage: ~17× on a 512 KB file, ~8× from 50 MB to 1 GB (a 557 MB file validates in ~6.5 s vs ~53 s). Full tables + methodology in the repo README.

Parity + clean-room

122 / 131 of python-ags4 1.2.0's own test suite passes through laterite.compat (the 9 remaining are deliberate non-closures). The validator is clean-room from the AGS4 spec — python-ags4 is LGPL-3.0, and the separation is what lets laterite ship under MIT. Details: COMPAT.md · OBSERVATIONS.md.

Docs

Full documentation — Learn, Cookbook, Concepts, and the Python API reference — at https://niko86.github.io/laterite/docs/.

Download files

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

Source Distribution

laterite-0.6.2.tar.gz (823.8 kB view details)

Uploaded Source

Built Distributions

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

laterite-0.6.2-cp312-abi3-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.12+Windows x86-64

laterite-0.6.2-cp312-abi3-manylinux2014_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.12+

laterite-0.6.2-cp312-abi3-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for laterite-0.6.2.tar.gz
Algorithm Hash digest
SHA256 b4e1d83e4f7e5c3c402f15e844999c5af180629bf2e59c38b787e6bf0eefd174
MD5 fc5d5f7d670390fd72906738c5fd8fb9
BLAKE2b-256 c99c940c59516fba1ab827f79b3f6814f01fbd5501e48f3722442edab274203a

See more details on using hashes here.

Provenance

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

Publisher: release.yml on niko86/laterite

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

File details

Details for the file laterite-0.6.2-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: laterite-0.6.2-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for laterite-0.6.2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 002eb3736fb2a3b0c85d05fe78c5155722b3e6e4d52be22ae464d24a78cc5818
MD5 1f697b3412b30e1434ae4a448c7704ef
BLAKE2b-256 977d0ab05c3e310cef0d41085e3b30aefed00f267a305a0860851273d5a26244

See more details on using hashes here.

Provenance

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

Publisher: release.yml on niko86/laterite

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

File details

Details for the file laterite-0.6.2-cp312-abi3-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for laterite-0.6.2-cp312-abi3-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f70465b699bf7aeecf213fbbf1789fc8015f8ad4da0fe3acb0ea714311b4e2c
MD5 dda045573ea4b1d891fed3d4cb1c0458
BLAKE2b-256 84285c107f43cdc2edb73dd760527fd4a31ef62ee7d7e10d1e2fdc996a24efed

See more details on using hashes here.

Provenance

The following attestation bundles were made for laterite-0.6.2-cp312-abi3-manylinux2014_x86_64.whl:

Publisher: release.yml on niko86/laterite

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

File details

Details for the file laterite-0.6.2-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for laterite-0.6.2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e236421049e4a8e6e53cf28d3f72e1a9c4f7ce2ecd0f8fe0c12d9245d199a80
MD5 f072fe2692e1fdc8f0f72ffe10865b1e
BLAKE2b-256 937b2e938e96cf65dbde409d2e25cc44b370e6651eeb3c3c0e02108d8ee6de0c

See more details on using hashes here.

Provenance

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

Publisher: release.yml on niko86/laterite

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

Release history Release notifications | RSS feed

0.12.0

5 files

0.11.0

5 files

0.10.1

4 files

0.10.0

4 files

0.9.0

4 files

0.8.0

4 files

0.7.0

4 files

This release

0.6.2 This release

4 files

0.6.1

4 files

0.6.0

4 files

0.5.1

4 files

0.5.0

4 files

0.4.0

3 files

0.2.0

3 files

0.1.0

4 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