Skip to main content

yeptris — YAML for Python at libleptris speed

An FFI-based (no C extension) YAML library over libyeptris — the YAML counterpart of libleptris. PyYAML-compatible semantics, one shared library, zero compilation at install.

Install (development)

# the sibling C checkout: ~/src/leptris/yeptris
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DYEPTRIS_BUILD_SHARED=ON
cmake --build build

cd ~/src/leptris/yeptris-py
YEPTRIS_LIB_PATH=../yeptris/build/src/libyeptris.dylib python3 -m pytest

Without YEPTRIS_LIB_PATH the loader falls back to a vendored yeptris/_platform/<tag>/ copy, then to the sibling checkout's build directory. Any libyeptris.{so,dylib,dll} path works.

Usage

import yeptris
from yeptris import yaml  # PyYAML-compatible surface

yaml.safe_load("name: yeptris\nrating: 10\n")
# {'name': 'yeptris', 'rating': 10}

yaml.safe_load_all("--- 1\n--- two\n")   # [1, 'two']
yaml.safe_dump({"b": 2, "a": [1, "x"]})  # 'a:\n  - 1\n  - x\nb: 2\n'

yeptris.load("k: v")        # the neutral surface
yeptris.dump({"k": [1, 2]})

Typing follows PyYAML's SafeLoader (YAML 1.1 implicit typing): yes/no/on/off booleans, 0x/leading-0/0b/sexagesimal integers, dot-required floats, timestamps with offsets, merge keys, anchor identity. Every deliberate divergence is pinned by a test.

Design

One parse, one bulk drain: the record array and string arena are read in two FFI calls, then a pure-Python walk over the unpacked records — the FFI tax is O(1) per document, never per event (the same seam yeptris-ruby rides). The 36-byte record layout is ABI-pinned in the C header and mirrored in _ffi.py.

Performance

python3 bench.py — same-process comparison against PyYAML (pure) and CSafeLoader/CDumper (libyaml C extensions):

  • load: 28-39x PyYAML pure, 3.8-6.1x CSafeLoader
  • dump: ~1.7x PyYAML pure, ~2x behind CDumper (which walks the tree entirely in C — a no-C-extension design's ceiling is the Python walk itself; the tree raises through ONE yeptris_document_build call)

Both directions are O(chunks) in FFI calls: loads drain records in two calls, dumps build through one flat entry array.

Download files

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

Source Distribution

yeptris-0.1.10.1.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

yeptris-0.1.10.1-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file yeptris-0.1.10.1.tar.gz.

File metadata

  • Download URL: yeptris-0.1.10.1.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.5

File hashes

Hashes for yeptris-0.1.10.1.tar.gz
Algorithm Hash digest
SHA256 c3d31bc66e06612171a1339dc88901b140ec116af99d07dd3976c1b16ab03be1
MD5 586ad3b273f9cad251fa099f25b963b5
BLAKE2b-256 d32c36e38aa04d3e96b4590d9b320838668abc351ffa52dc1c1d67f9ddfdb0e5

See more details on using hashes here.

File details

Details for the file yeptris-0.1.10.1-py3-none-any.whl.

File metadata

  • Download URL: yeptris-0.1.10.1-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.5

File hashes

Hashes for yeptris-0.1.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c0e41f152081df4e691481635bb1a958284bd8781ea4c812b85e4f84f84e5e36
MD5 044a5117e7274422aebf0a3c8e96a329
BLAKE2b-256 509e6cf7f37d6c6f5c10d50fa8a029f06be843ca1ad064857b4341df0f86fe9f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.10.1 This release

2 files

0.1.10.0

2 files

0.1.9.1

2 files

0.1.9.0

2 files

0.1.8.0

2 files

0.1.7.0

2 files

0.1.5.0

2 files

0.1.4.0

2 files

0.1.3.0

2 files

0.1.2.1

2 files

0.1.2.0

2 files

0.1.1.0

2 files

0.1.0

2 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