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.1.tar.gz (820.9 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.1-cp312-abi3-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.12+Windows x86-64

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

Uploaded CPython 3.12+

laterite-0.6.1-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.1.tar.gz.

File metadata

  • Download URL: laterite-0.6.1.tar.gz
  • Upload date:
  • Size: 820.9 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.1.tar.gz
Algorithm Hash digest
SHA256 eaeba4922a9d1782c1c041b76b11071ed9bbebd46d87fdbfbb13dd7d29a76588
MD5 2b3fc002704fd64fcd31f721a6570653
BLAKE2b-256 734623f80073e832756e03303b76dbcf820cdde7d3ff4761e3eac78bdbe117c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for laterite-0.6.1.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.1-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: laterite-0.6.1-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.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b5b303b8723b39702d1738f4a67c4b38f83b76577f75cdb514803ffbf476bcbd
MD5 7505b3eea8bed11f8ad9500f520a35e5
BLAKE2b-256 3db080b38615e7b263a0cfc2c805557f7f2d2cc37306f6b80354d2b53a391648

See more details on using hashes here.

Provenance

The following attestation bundles were made for laterite-0.6.1-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.1-cp312-abi3-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for laterite-0.6.1-cp312-abi3-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c1a8852b1c0d4c1eb3a28e31110e94cc8d521fb85a5faf2627eaa5d57f41b81
MD5 a4fb107653c1bc3606ba4a28f4fb5dce
BLAKE2b-256 5fbad707dcdf6af159b9ee48fbf57449ea9b265d106b66822ed16257d6cfcb32

See more details on using hashes here.

Provenance

The following attestation bundles were made for laterite-0.6.1-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.1-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for laterite-0.6.1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6814fbbbc7d0ebc5045a3b5b70f58e8968eb7ed1b6299edc27f01a6808521ec3
MD5 c6db73de0bb0ea37f6aad387828edc78
BLAKE2b-256 0594c5cc0c1ce4a01bf278897ffd905990b0489329591cce8be0eec1f4fe839c

See more details on using hashes here.

Provenance

The following attestation bundles were made for laterite-0.6.1-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

0.6.2

4 files

This release

0.6.1 This release

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