Skip to main content

Snaplet

Faster JSON Mapping, the only dependency is orjson.

Features

  • Just-In-Time (JIT) Codegen: Snaplet generates specialized property accessors at runtime using exec(). By eliminating getattr calls and internal dictionary lookups during access, it achieves near-native attribute access speeds.
  • Zero-Copy Lazy Instantiation: Nested models and lists are only instantiated when accessed. This minimizes the performance impact when processing large JSON payloads where only specific fields are required.
  • High-Throughput Bulk Loading: Bypasses the standard __init__ constructor and leverages __slots__ with __new__ to mass-produce instances. This enables high-speed loading by reducing Python-level overhead during object creation.
  • Explicit Validation Control: Snaplet does not perform eager validation on load. This design allows developers to implement custom validation logic only where necessary, avoiding global performance bottlenecks.
  • Transparent Alias Mapping: Supports Annotated and Field(alias=...) to map complex JSON keys to Pythonic names. JIT compilation ensures that using aliases does not incur additional runtime performance costs.
  • Minimal Dependency: The only requirement is orjson. It operates as a pure Python library utilizing JIT logic, ensuring high portability across different environments without the need for complex build chains.

Installation

uv add snaplet

Usage

from typing import Annotated

from snaplet import SnapletBase
from snaplet import Field


class User(SnapletBase):
    user_id: int
    internal_id: Annotated[int, Field(alias="ID")]
    tags: Annotated[list[str], Field(alias="Tags-List-V1")]


data = {"userId": 1, "ID": 999, "Tags-List-V1": ["python", "snaplet"]}

user = User(data)
print(user.internal_id)
print(user.user_id)

You can disable JIT with jit=False but, this is not recommended as it may significantly degrade performance.

class User(SnapletBase, jit=False):
    user_id: int
    internal_id: Annotated[int, Field(alias="ID")]
    tags: Annotated[list[str], Field(alias="Tags-List-V1")]

Performance

Snaplet is designed for high-performance applications that handle large JSON datasets with minimal overhead.

Benchmark (1,000 items)

Measured on Python 3.12.

Operation Time Notes
Bulk Load ~108 μs Using orjson + __new__ bypass
Attribute Access ~115 ns Powered by JIT Property Access
Lazy Export (dict) ~165 ns Zero-cost for unaccessed fields

Why so fast?

  • JIT Property Access: Specialized property accessors are compiled at runtime using exec(), eliminating branch overhead.
  • Lazy Instantiation: Nested objects are only instantiated when accessed.
  • Minimal Overhead: Bypassing __init__ during bulk loading to achieve near-native speeds.

LICENSE

MIT License

Release files for snaplet 0.1.1

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

Source distribution (sdist)

Source distribution for snaplet 0.1.1
File Size Uploaded
snaplet-0.1.1.tar.gz 26.8 kB Details

Built distribution (wheel)

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

Total release size: 34.0 kB

Release files / snaplet-0.1.1.tar.gz

Download URL snaplet-0.1.1.tar.gz
Size 26.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2915d51e466a2eb32f3760aeafc35f67f7f90070cacb8697f766cbaa2cfb7f44
BLAKE2b-256 checksum
How to use checksums
2a6372594dd85b895056f7763ff43b3c13c65d81931f4622a468f654c9b2a8db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Release files / snaplet-0.1.1-py3-none-any.whl

Download URL snaplet-0.1.1-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a41906bb0907fdc40557150de3d31dc737604c118a154cc69aebbb751769d6cb
BLAKE2b-256 checksum
How to use checksums
566028c3836ea2161b1b828c7df55c9da1d71b69bbbc9ccebddb72977e6ed48c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

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