Skip to main content

YAMLStar Python Bindings

Python bindings for YAMLStar - a pure YAML 1.2 loader implemented in Clojure.

Features

  • YAML 1.2 Spec Compliance: 100% compliant with YAML 1.2 core schema
  • Pure Implementation: No dependencies on SnakeYAML or other external parsers
  • Fast Native Performance: Uses the native YAMLStar shared library
  • Simple API: Load YAML documents with a single function call
  • Multi-Document Support: Load multiple YAML documents from a single string

Installation

Prerequisites

First, build and install the shared library:

cd ../libyamlstar
make native
sudo make install PREFIX=/usr/local

Or install to user-local directory:

cd ../libyamlstar
make native
make install PREFIX=~/.local

Install Python Package

pip install .

For development:

pip install -e .

Quick Start

import yamlstar

# Create a YAMLStar instance
ys = yamlstar.YAMLStar()

# Load a simple YAML string
data = ys.load("key: value")
print(data)  # {'key': 'value'}

Usage Examples

Basic Types

import yamlstar

ys = yamlstar.YAMLStar()

# Strings
ys.load("hello")  # 'hello'

# Integers
ys.load("42")  # 42

# Floats
ys.load("3.14")  # 3.14

# Booleans
ys.load("true")   # True
ys.load("false")  # False

# Null
ys.load("null")  # None

Collections

# Mappings (dictionaries)
data = ys.load("""
name: Alice
age: 30
city: Seattle
""")
# {'name': 'Alice', 'age': 30, 'city': 'Seattle'}

# Sequences (lists)
data = ys.load("""
- apple
- banana
- orange
""")
# ['apple', 'banana', 'orange']

# Flow style
data = ys.load("[a, b, c]")
# ['a', 'b', 'c']

Nested Structures

data = ys.load("""
person:
  name: Alice
  age: 30
  hobbies:
    - reading
    - coding
    - hiking
""")
# {
#   'person': {
#     'name': 'Alice',
#     'age': 30,
#     'hobbies': ['reading', 'coding', 'hiking']
#   }
# }

Multi-Document YAML

# Load all documents from a multi-document YAML string
docs = ys.load_all("""---
name: Document 1
---
name: Document 2
---
name: Document 3
""")
# [
#   {'name': 'Document 1'},
#   {'name': 'Document 2'},
#   {'name': 'Document 3'}
# ]

Type Coercion

YAMLStar follows YAML 1.2 core schema type inference:

data = ys.load("""
string: hello
integer: 42
float: 3.14
bool_true: true
bool_false: false
null_value: null
""")
# {
#   'string': 'hello',
#   'integer': 42,
#   'float': 3.14,
#   'bool_true': True,
#   'bool_false': False,
#   'null_value': None
# }

Error Handling

try:
    data = ys.load("invalid: yaml: syntax")
except Exception as e:
    print(f"Error loading YAML: {e}")

Version Information

# Get YAMLStar version
version = ys.version()
print(f"YAMLStar version: {version}")

API Reference

YAMLStar Class

__init__()

Create a new YAMLStar instance. Each instance maintains its own native-library lifecycle handle.

ys = yamlstar.YAMLStar()

load(yaml_input)

Load a single YAML document.

Parameters:

  • yaml_input (str): String containing YAML content

Returns:

  • Python object representing the YAML document (dict, list, str, int, float, bool, or None)

Raises:

  • Exception if the YAML is malformed

Example:

data = ys.load("key: value")

load_all(yaml_input)

Load all YAML documents from a multi-document string.

Parameters:

  • yaml_input (str): String containing one or more YAML documents

Returns:

  • List of Python objects, one per YAML document

Raises:

  • Exception if the YAML is malformed

Example:

docs = ys.load_all("---\ndoc1\n---\ndoc2")

version()

Get the YAMLStar version string.

Returns:

  • str: Version string

Example:

version = ys.version()

Development

Running Tests

# Run all tests
make test

# Run only pytest tests
make test-pytest

# Run only FFI tests
make test-ffi

Building Distribution

# Build source distribution
make dist

# Build and install in development mode
make install

Requirements

  • Python: 3.6 or higher
  • libyamlstar: Shared library (installed separately)
  • System: Linux or macOS

Library Search Path

The package searches for libyamlstar.so (or .dylib on macOS) in:

  1. Development path (relative to package)
  2. Directories in LD_LIBRARY_PATH environment variable
  3. /usr/local/lib (default install location)
  4. ~/.local/lib (user-local install location)

Comparison to PyYAML

Feature YAMLStar PyYAML
YAML Version 1.2 1.1
Implementation Pure Clojure C + Python
Type Inference YAML 1.2 core schema YAML 1.1 + custom
Native Performance Yes (Gloat/Glojure) Yes (C extension)
Dependencies libyamlstar.so None

License

MIT License - See License file

Credits

Created by Ingy döt Net, inventor of YAML.

YAMLStar is built on the YAML Reference Parser (pure Clojure implementation).

Links

Download files

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

Source Distribution

yamlstar-0.1.18.tar.gz (7.0 kB view details)

Uploaded Source

Built Distributions

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

yamlstar-0.1.18-py3-none-win_amd64.whl (6.4 MB view details)

Uploaded Python 3Windows x86-64

yamlstar-0.1.18-py3-none-manylinux_2_31_x86_64.whl (6.5 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ x86-64

yamlstar-0.1.18-py3-none-macosx_15_0_x86_64.whl (6.3 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

yamlstar-0.1.18-py3-none-macosx_14_0_arm64.whl (5.6 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file yamlstar-0.1.18.tar.gz.

File metadata

  • Download URL: yamlstar-0.1.18.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for yamlstar-0.1.18.tar.gz
Algorithm Hash digest
SHA256 160d027da77ad8d79aae5df565bb34dc4234b6b1a41da1e883b64e17988cef18
MD5 5a14a5b20538d51b2352857d131f87cf
BLAKE2b-256 b92622fa79158738cade4b31cf3f1659e1a10e46dccf7e5962e8aafa6b9c9112

See more details on using hashes here.

File details

Details for the file yamlstar-0.1.18-py3-none-win_amd64.whl.

File metadata

  • Download URL: yamlstar-0.1.18-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.4 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for yamlstar-0.1.18-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a9fd33d002f2f1f44c27138b481a4bdbd521b2aa3e3dfbb032ff306ba434a9ed
MD5 d6b64ca35fc860e7126f4ad6577e26cc
BLAKE2b-256 262d25adbfa33ea6abcdd0d5ee14fea4249426b0d8b185752064c3124d242127

See more details on using hashes here.

File details

Details for the file yamlstar-0.1.18-py3-none-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for yamlstar-0.1.18-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 cb93085edc72d378f7651beb3fe7072fdea0e1f0b02917a0a0fcba2c3b4fa701
MD5 306d1f7661ea50c491f88767c487747e
BLAKE2b-256 9a3ba0438353b5fb017454c103a082956609c77716a1020752fc376ea844c3c5

See more details on using hashes here.

File details

Details for the file yamlstar-0.1.18-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for yamlstar-0.1.18-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 5f1ef10604d494c37a3d62a4aa0e15ecd08a5eb67c53b54ac3ba90658a743c2b
MD5 2f0bc50f097069b407e8300b94c222fa
BLAKE2b-256 f4f683529ed2c9398f212a99845747d7c196838f8e9b3061e0a4ec00a7262920

See more details on using hashes here.

File details

Details for the file yamlstar-0.1.18-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for yamlstar-0.1.18-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e43432ebf7943f5123ff9aabc3d1c19455d24745cdc028ec316617a745a642c7
MD5 f6ebf336ad5bfec911d1116bb561e81e
BLAKE2b-256 efbe945b40013883845078c2345c128ad3a9844437d7fbe1b04b16000191e3dc

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.19

5 files

This release

0.1.18 This release

5 files

0.1.17

4 files

0.1.15

4 files

0.1.14

4 files

0.1.12

4 files

0.1.11

4 files

0.1.9

4 files

0.1.8

4 files

0.1.7

4 files

0.1.6

3 files

0.1.5

3 files

0.1.4

3 files

0.1.3

1 file

0.1.2

1 file

0.1.0

1 file

0.0.1

1 file

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