Skip to main content

treekle🌳

PyPI version CI Python 3.12+ License: Apache-2.0 Discord

tree + pickle: pickle's semantics, written as a plain tree of dicts, lists, and scalars instead of opaque bytes.

Quick Start

# Mac:
#   # Required for quick install.
#   brew install uv

# Ubuntu/Debian:
#   # Required for quick install.
#   sudo apt-get install -y curl
#   curl -LsSf https://astral.sh/uv/install.sh | sh

uv add treekle

# Alternatively: python -m pip install treekle

to_plain turns a value into plain data any JSON, TOML, or YAML writer can store. from_plain turns it back into the type you ask for. Neither touches text, so the wire format is yours.

Example

from __future__ import annotations

from collections.abc import Callable
from dataclasses import dataclass
from pathlib import Path
from types import MappingProxyType

import json
import math

from treekle import ABSENT, ReadError, from_plain, to_plain


def by_name(user: User) -> str:
    return user.name


@dataclass
class User:
    name: str


@dataclass
class Job:
    owner: User
    reviewer: User
    fallback: object
    sort_key: Callable[[User], str]
    output: type
    root: Path
    timeout: float
    env: MappingProxyType[str, str]


ada = User("ada")
job = Job(
    owner=ada,
    reviewer=ada,  # the same object
    fallback=ABSENT,  # a singleton
    sort_key=by_name,  # a function
    output=dict,  # a class
    root=Path("/srv"),
    timeout=math.inf,  # JSON has no inf
    env=MappingProxyType({"LANG": "C"}),
)

back = from_plain(json.loads(json.dumps(to_plain(job))), Job, allow_imports=True)
assert back.owner is back.reviewer
assert back.fallback is ABSENT
assert back.sort_key is by_name
assert back.output is dict
assert back.root == Path("/srv")
assert back.timeout == math.inf
assert isinstance(back.env, MappingProxyType)

Every other library fails on the same job:

  • pickle

    TypeError: cannot pickle 'mappingproxy' object
    
  • jsonpickle

    AttributeError: 'Absent' object attribute '_instance' is read-only
    
  • pydantic

    PydanticSchemaGenerationError: Unable to generate pydantic-core schema for mappingproxy[str, str]. Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.
    
  • msgspec

    TypeError: Encoding objects of type Absent is unsupported
    
  • cattrs

    TypeError: Object of type Absent is not JSON serializable
    
  • mashumaro

    UnserializableField: Field "fallback" of type object in Job is not serializable
    

Additionally, treekle reads bad inputs all the way through:

@dataclass
class Team:
    a: User
    b: User
    c: User


bad = '{"a": {"name": "ada"}, "b": {"name": 7}, "c": {"name": 8}}'
try:
    from_plain(json.loads(bad), Team)
except ReadError as error:
    error.partial
    # Team(a=User(name='ada'),
    #      b=User(name=Invalid(raw=7, reason='cannot read 7 as str')),
    #      c=User(name=Invalid(raw=8, reason='cannot read 8 as str')))

Every other library on the same bad:

  • jsonpickle

    {'a': {'name': 'ada'}, 'b': {'name': 7}, 'c': {'name': 8}}
    
  • pydantic

    ValidationError: 2 validation errors for Team
    b.name
      Input should be a valid string [type=string_type, input_value=7, input_type=int]
    c.name
      Input should be a valid string [type=string_type, input_value=8, input_type=int]
    
  • msgspec

    ValidationError: Expected `str`, got `int` - at `$.b.name`
    
  • cattrs

    Team(a=User(name='ada'), b=User(name='7'), c=User(name='8'))
    
  • mashumaro

    Team(a=User(name='ada'), b=User(name='7'), c=User(name='8'))
    

Captured with jsonpickle 4.1.3, pydantic 2.13.5, msgspec 0.22.0, cattrs 26.2.1, and mashumaro 3.23.

A lambda has no import path, so it is refused when written, not when read:

to_plain(lambda x: x)
# TypeError: Cannot serialize <function <lambda> ...>: import path
# '__main__.<lambda>' does not resolve to the same object.

Features

Tags for what JSON lacks

Anything a wire format cannot carry natively becomes a py/* tag, spelled as jsonpickle spells it where one exists:

Value Tag
class instance, class, function py/object, py/type, py/function
tuple, set, frozenset, mappingproxy py/tuple, py/set, py/frozenset, py/mappingproxy
non-finite float, complex, bytes py/float, py/complex, py/b64
Path, UUID, datetime py/path, py/uuid, py/datetime
anything else picklable py/reduce
a type you register with hooks= py/hook
a repeat of an earlier object py/ref
a non-string or tag-like dict key json://...

Shared objects and cycles

A repeat is written as py/ref, the path to its first occurrence, so model.encoder is model.decoder survives the round trip. Cycles terminate the same way. Older py/id back-references still read.

The type decides, unless a tag does

from_plain(data, T) reads data as T: a JSON array as a tuple[int, int], "red" as Color.RED, a dict as a dataclass. Where the data carries a tag, the tag decides, so a field typed object or a Protocol reads back as whatever class the payload names, if that class fits the annotation. Importing a class by name is gated behind allow_imports=True.

Best-effort decoding

A bad part does not stop the read. ReadError.partial is the value with an Invalid in place of each bad part; ReadError.bad maps each bad part's path to its Invalid.

Wire-invariant

The core never parses or prints text. treekle.json_loads is the one reader: json_loads(text, T) parses and reads as T in one call. This is its whole body, minus overloads and docstring:

import json


def json_loads(
    text: str | bytes,
    target: object = ABSENT,
    *,
    hooks: Hooks = MappingProxyType({}),
    allow_imports: bool = False,
    strict: bool = True,
) -> object:
    tree = cast("MutablePlainTree", json.loads(text))
    if target is ABSENT:
        return tree
    return from_plain(
        tree,
        target,
        hooks=hooks,
        allow_imports=allow_imports,
        strict=strict,
    )

Why not another serializer

tl;dr: The pickle-style libraries have a nearly orthogonal feature set to the JSON-style libraries. The group either is forgiving about types (like callables) and forgoes type-strictness or cannot tolerate types to achieve safety. jsonpickle is arguably the most similar to treekle (and was our default choice until making treekle).

treekle pickle jsonpickle pydantic msgspec cattrs mashumaro
C/Rust ✅ ✅ ❌ ✅ ✅ ❌ ❌
stdlib ✅ ✅ ✅ ❌ ❌ ❌ ❌
plain ✅ ❌ ✅ ✅ ✅ ✅ ✅
typed result ✅ ❌ ❌ ✅ ✅ ✅ ✅
typed contents ✅ ❌ ❌ ✅ ✅ ✅ ✅
untagged input ✅ ❌ ❌ ✅ ✅ ✅ ✅
class from data ✅ ❌ ❌ ❌ ❌ ❌ ❌
callables ✅ ✅ ✅ ❌ ❌ ❌ ❌
shared refs ✅ ✅ ✅ ❌ ❌ ❌ ❌
best-effort ✅ ❌ ❌ ❌ ❌ ❌ ❌
GitHub stars -- stdlib 1.3k 29.0k 4.2k 1.1k 940

✅ = yes, ❌ = no. Star counts checked 2026-10-11. Corrections welcome -- open a PR.

  • C/Rust: the core is a compiled extension, not pure Python.
  • stdlib: part of the standard library, or importing nothing outside it.
  • plain: encodes to plain dicts, lists, and scalars, so any writer stores it: JSON, YAML, TOML.
  • typed result: a type checker infers T from decode(data, T), not Any.
  • typed contents: every nested field and element is checked against its annotation, e.g. list[Layer]. An isinstance check on jsonpickle's result would fix typed result, not this.
  • untagged input: data with no py/* tags reads as the declared type, so hand-written config works.
  • class from data: decode builds the class the payload names by import path (a subclass, a Protocol implementation, or any class) and rejects one that does not fit the field's annotation.
  • callables: a function round-trips by import path, with no special field type.
  • shared refs: an object referenced twice decodes as one object; cycles too.
  • best-effort: bad input yields the partial value and every bad part's location.

Details: each cell is what a probe of jsonpickle 4.1, pydantic 2.13, msgspec 0.22, cattrs 26.2, and mashumaro 3.23 returned:

treekle pickle jsonpickle pydantic msgspec cattrs mashumaro
plain to_plain bytes only Pickler().flatten dump_python to_builtins unstructure encode
typed result Layer Any dict | list | ... Layer Layer Layer Layer
typed contents raises at layers[0].width no target type dict holding 'x' raises at layers[0].width raises at layers[0].width raises at layers[0].width raises at layers
untagged input Net raises: bytes only dict Net Net Net Net
class from data: subclass subclass subclass subclass base class, subclass fields dropped base class, subclass fields dropped base class, subclass fields dropped base class, subclass fields dropped
class from data: Protocol implementing class implementing class implementing class raises: no Protocol schema raises: no Protocol schema raises: no Protocol schema raises: no Protocol schema
class from data: object named class named class named class dict dict raises raises
class from data: misfit raises misfit accepted misfit accepted raises raises raises raises
callables same function same function same function raises raises raises raises
shared refs one object one object one object two copies two copies two copies two copies
best-effort partial value, all errors first error no error, returns dict all errors, no value first error all errors, no value first error
  • plain: the call that encodes to plain data.
  • typed result: what basedpyright infers for decoding a dataclass Layer.
  • typed contents: Net with layers: list[Layer], given layers[0].width = "x". jsonpickle with a top-level isinstance(obj, Net) check returned Net(layers=[{'width': 'x'}]).
  • untagged input: a valid Net payload with no py/* tags.
  • class from data: a payload naming a class, read into a base-class field, a Protocol field, and an object field. cattrs keeps the subclass with include_subclasses; pydantic and msgspec need a closed tagged union. "misfit": a payload naming a class that is neither a subclass of the base-class field nor an implementation of the Protocol field.
  • callables: a field holding a module-level function.
  • shared refs: one object in two fields.
  • best-effort: two bad fields.

One cycle shape fails to read: one through a dataclass decoded as its declared type.

Speed

Times are totals over the exp000 config of each of 43 priml baselines, in ms, with each library's time as a percent more than msgspec's:

library encode (ms) encode (%) decode (ms) decode (%)
msgspec 0.50 +0% 0.15 +0%
msgspec-dataclass 0.50 +1% ❌ ❌
treekle-rust 0.63 +27% 0.86 +493%
pickle 2.32 +369% 0.95 +555%
treekle-python 3.68 +641% 14.32 +9787%
jsonpickle 20.61 +4057% 10.18 +6930%
  • encode: each library on the config itself. msgspec is given enc_hook=repr, its only way past the callables a config holds, and writes no class names or shared references, so it writes less than treekle.
  • decode: msgspec cannot decode the configs: its unions may not mix a class with anything but None. So decode times the closest thing every library reads: each config rebuilt as dataclasses holding only plain values. msgspec reads it into tagged msgspec.Struct twins; msgspec-dataclass into the dataclasses themselves, which fails (❌) on 14 configs whose unions hold two dataclasses it cannot tell apart.
  • treekle-rust, treekle-python: the compiled core, and the Python fallback a platform without a wheel gets.

Python 3.14, one core of an Intel Core Ultra 7 255H. Reproduce with scripts/bench_configs.py.

Metadata

Release files for treekle 0.2.0

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

Source distribution (sdist)

Source distribution for treekle 0.2.0
File Size Uploaded
treekle-0.2.0.tar.gz 196.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for treekle 0.2.0
File
treekle-0.2.0-py3-none-any.whl Python 3 none any Details
treekle-0.2.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
treekle-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
treekle-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
treekle-0.2.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
treekle-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
treekle-0.2.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
treekle-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
treekle-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
treekle-0.2.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
treekle-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
treekle-0.2.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
treekle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
treekle-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
treekle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
treekle-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details

Total release size: 8.0 MB

Release files / treekle-0.2.0.tar.gz

Download URL treekle-0.2.0.tar.gz
Size 196.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d9e1be0910bf8ea8033a8addb0f17d7e03586a0d7fdefd265211b383ef086d1d
BLAKE2b-256 checksum
How to use checksums
7c5c5d010f0888c4b6374f8695c1508370b65f850e62ad2e2867fe6f327223bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-py3-none-any.whl

Download URL treekle-0.2.0-py3-none-any.whl
Size 68.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
61e11e9fd719721644e09d3c9c028e41a27a415bb8d37079b4c7018bd8d63aa9
BLAKE2b-256 checksum
How to use checksums
6e930acbdf5933314fb25da984a3d8d2ec913c22424b7d9dfe7b2edb851300a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp314-cp314-win_amd64.whl

Download URL treekle-0.2.0-cp314-cp314-win_amd64.whl
Size 468.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
bb8c67cf34ae216d0e4058698e89a71248b174a3f9542dff30411cf7edd55e9c
BLAKE2b-256 checksum
How to use checksums
b3e324969505bb9e69d74fe49ee6a88824305b8c2b8b544e65c6af33df4f335b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL treekle-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 536.0 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2b0b4aaf206fcc67b9762b2b992217c6bf9a49e54b5881cc8af81dae320422c2
BLAKE2b-256 checksum
How to use checksums
edb4d1f7f230e018075fbcb85e50aae5d4e0b34338e72815d0843bb4fadb5547
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL treekle-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 516.1 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
c06ff011bb5463c8c19d0d5fa89f5dab115b75a8cb976ac6a32c2a6d80a57286
BLAKE2b-256 checksum
How to use checksums
351d9b25b21077997386603237a05f2d6f2efdb36a4c48d5f025e0504a336e1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL treekle-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Size 505.7 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
317e77c994bc113964ce922ae0d67e93b86c1f9e6a143e8004ccc27551f71f7e
BLAKE2b-256 checksum
How to use checksums
e3583fd63bbd16c25e74a35fdcc74eaa765f2a34c56ddf0cf8dc4a071905031d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl

Download URL treekle-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl
Size 540.5 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
963d563a60dd841b354656378281128fdaa06153ddaa0da69f6fa1a1f82e628b
BLAKE2b-256 checksum
How to use checksums
bf40a528240b9403e33780688d1b4e008a021385203b9cf8183e22ec9b306f98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp313-cp313-win_amd64.whl

Download URL treekle-0.2.0-cp313-cp313-win_amd64.whl
Size 468.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
7d92d00a816b96e9f5de1e25cbf43eefe2525631e4b6fae97e973051ce804f9f
BLAKE2b-256 checksum
How to use checksums
607ce88dce260120f28a0f8baca352b1425b57dd5834303ff80cb6aeee0a5777
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL treekle-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 537.1 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
60377dd8bf000f7c140a986962b8055a6523a62a4447bb9cd66a6de69ca7830e
BLAKE2b-256 checksum
How to use checksums
4bdde9e38a545ff0698004c4d930cf522ae4d6fb5e475ac4552d5b59480cb90f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL treekle-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 518.8 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
89b00135dd3c6f922e7e20b216710854e6427ad4a6a702a79c0cf2aaee543405
BLAKE2b-256 checksum
How to use checksums
6a46f0374d0e086c3ab960ca4d9e64ae69b61961680ed50107ef901f080c5c98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL treekle-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Size 508.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
695e0abb9b49534560bb6a5e1f3e6275e01e6366bfe85db4d127b88de035d4b2
BLAKE2b-256 checksum
How to use checksums
438be397d13d1499922c8f86a686f993daca6eadaf8594a4d9e3579d9a8bbfbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL treekle-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 543.4 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
328cf79d4ea66df23931ec2809b00c376bb5f3af5bc9158947849f0d9d2f2736
BLAKE2b-256 checksum
How to use checksums
de33e8cbee7119efe9ec8c8d346dad7e1d299a971624a9f69318bec389442950
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp312-cp312-win_amd64.whl

Download URL treekle-0.2.0-cp312-cp312-win_amd64.whl
Size 468.0 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9593aae6fc9c002ebd4fa79acc615a70fe4cf7d9e5979bdb8ab60201bedc9660
BLAKE2b-256 checksum
How to use checksums
b88d9e3abff897ae410d109568bb6f7ebc136d010f7282fdd104a50b7db685e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL treekle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 536.4 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
db355672b8876d215d1d871a700e5a8fd0652083d99eb939a4aaa7b0209e1fb7
BLAKE2b-256 checksum
How to use checksums
513995a3e2b860717c63425821fce4a9c0feca25a5031977951471d22d8e5caf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL treekle-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 517.7 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
0679cd16422e0dedf4cad454096283896fb592018300f43a2044b9edf9082e07
BLAKE2b-256 checksum
How to use checksums
c6230088f600d69af2bd487606dce075d849878c380ca1b886411f9e378f9117
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL treekle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Size 506.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ad0c1c980c7f309a4d0518146c24f04ccd2cd6fd55a758cdc366a01729a7adb0
BLAKE2b-256 checksum
How to use checksums
6086f6ac8ca94b6a174ff0b649f6d9fcefa9fdef8e39e084a833e6d92ee37b9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release files / treekle-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL treekle-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 540.8 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
2e3e4f4157a8409c907aec823911e7db72bc463c7c41387b79fedcd6d3ebaa29
BLAKE2b-256 checksum
How to use checksums
b871a02097d1734ed42bd22dbb802cc488325401fab618f75f4fa790f9da5f91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

17 release files

0.1.1

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