Skip to main content

Kaitai Struct: Awkward Array runtime

This project bridges Kaitai Struct schemas to Awkward Arrays. It provides a C++ runtime plus Python helpers so Kaitai-generated parsers can emit Awkward Array buffers directly.

Quickstart

  1. Generate C++ from a .ksy schema using the Kaitai compiler with the Awkward target.
  2. Build a shared library from the generated .cpp.
  3. Load binary data into an Awkward Array.

Example flow:

# From a schema (requires kaitai-struct-compiler with awkward target)
java -cp <classpath> io.kaitai.struct.JavaMain -t awkward --outdir test_artifacts example_data/schemas/hello_world.ksy

# Build a shared library from the generated C++ file
awkward-kaitai-build test_artifacts/hello_world.cpp -b build
from awkward_kaitai import Reader

reader = Reader("test_artifacts/libhello_world.so")
array = reader.load("example_data/data/hello_world.bin")
print(array)

Documentation

The documentation is available at https://det-lab.github.io/kaitai_struct_awkward_runtime/.

Requirements

  • Kaitai Struct compiler 0.11+ with the awkward target.
  • CMake and a C++ toolchain for building shared libraries.

Development

  • Build and test everything: make test
  • Fast loop for a single schema: make compile_test testcase=hello_world
  • Linting and checks: nox -s lint / nox -s pylint / nox -s tests
  • Submodule setup: git submodule update --init --recursive

See AGENTS.md for detailed contributor guidance.

Related Papers and Talks

  1. Describe Data to get Science-Data-Ready Tooling: Awkward as a Target for Kaitai Struct YAML, Advanced Computing and Analysis Techniques for Physics Research Workshop 2024, New York, US.
  2. Awkward Target for Kaitai Struct, PyHEP Users Workshop 2023.

Metadata

Release files for awkward_kaitai 0.11.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awkward_kaitai 0.11.2
File Size Uploaded
awkward_kaitai-0.11.2.tar.gz 1.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for awkward_kaitai 0.11.2
File Interpreter ABI Platform
awkward_kaitai-0.11.2-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / awkward_kaitai-0.11.2.tar.gz

Download URL awkward_kaitai-0.11.2.tar.gz
Size 1.5 MB
Tags Source
SHA-256 checksum
How to use checksums
0082dd08e662dba6b1a0ae2637aea1f2b18555753ddce9adb56a1e4ddd2744a3
BLAKE2b-256 checksum
How to use checksums
c44dceae0d8b34a48a23ca2eeb11077a99a17dfc458a9c39432351d80e73291b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.3 cpython/3.11.2 HTTPX/0.28.1

Release files / awkward_kaitai-0.11.2-py3-none-any.whl

Download URL awkward_kaitai-0.11.2-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65910f028c113884888e88b2b2bb475726f328a2ca9d002ac7ed8259ece35547
BLAKE2b-256 checksum
How to use checksums
2c59848faeb786a2adc871d2d0cd3df6b72a35adbc4960a88de21f3edf9425d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.3 cpython/3.11.2 HTTPX/0.28.1

Release history Release notifications | RSS feed

This release

0.11.2 This release

2 release files

0.2.0

2 release files

0.1.0

2 release 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