CToon
The fastest implementation of the TOON format - a compact, human-readable serialisation format designed to minimise LLM token usage. Achieves 30-60% token reduction versus JSON while remaining fully readable and structured.
CToon is built on a high-performance C core and exposes the same logic through idiomatic bindings for C++, Go, Julia, MATLAB, Python, Rust, and Zig, plus a standalone CLI. The name reflects its foundation: C + TOON.
Format Overview
# JSON (352 bytes) # TOON (165 bytes, -53 %)
{ order:
"order": { id: ORD-12345
"id": "ORD-12345", status: completed
"items": [ customer:
{"product":"Book","qty":2}, name: John Doe
{"product":"Pen","qty":5} email: john@example.com
] items[2]{product,qty}:
} Book,2
} Pen,5
Quick Start
Pick your language below - each section is install, a short example, then a link to that language's full reference for everything else (flags, options, error handling, ...). Order matches the tabs on the documentation site.
CLI
pip install ctoon # ships a pre-built `ctoon` binary - no compiler needed
ctoon input.json # JSON -> TOON (auto-detected from extension)
ctoon input.toon -o output.json # TOON -> JSON
cat data.json | ctoon -e - # stdin -> TOON
Building from source with CMake instead is also supported (sudo cmake --install build after building - see Building & Testing).
→ Full CLI reference
C
Requires CMake 3.19+ and a C99 compiler.
# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
ctoon
GIT_REPOSITORY https://github.com/MohammadRaziei/ctoon.git
GIT_TAG v0.9.0
)
FetchContent_MakeAvailable(ctoon)
target_link_libraries(my_app PRIVATE ctoon::ctoon)
#include "ctoon.h"
ctoon_doc *doc = ctoon_read("name: Alice\nage: 30", 20, 0);
ctoon_val *root = ctoon_doc_get_root(doc);
printf("%s\n", ctoon_get_str(ctoon_obj_get(root, "name"))); /* Alice */
size_t len;
char *toon = ctoon_write(doc, &len); /* caller must free() */
free(toon);
ctoon_doc_free(doc);
→ Full C API reference (also summarised below)
C++
Requires CMake 3.19+ and a C++11 compiler. Header-only on top of the C core.
# same FetchContent block as C, then:
target_link_libraries(my_app PRIVATE ctoon::ctoonpp)
#include "ctoon.hpp"
auto doc = ctoon::document::parse("name: Alice\nage: 30");
auto root = doc.root();
std::cout << root["name"].get_str().str() << "\n"; // Alice
std::cout << doc.to_json(2).c_str() << "\n"; // pretty JSON
Go
Requires Go 1.21+ with CGo enabled; a C compiler must be on the build host.
go get github.com/mohammadraziei/ctoon
import ctoon "github.com/mohammadraziei/ctoon"
toon, _ := ctoon.Dumps(map[string]interface{}{"name": "Alice", "age": int64(30)})
val, _ := ctoon.Loads(toon)
Julia
Requires Julia 1.7+ and a C compiler. Not yet in Julia's General registry.
import Pkg
Pkg.add(url="https://github.com/mohammadraziei/ctoon.git", subdir="src/bindings/julia")
using CToon
data = CToon.parse("""{"name": "Alice", "age": 30}""")
println(data["name"]) # Alice
MATLAB
Requires MATLAB R2014b+ and a C compiler configured for MEX (mex -setup C).
cd src/bindings/matlab
ctoon_install % compiles the MEX gateway, adds it to your MATLAB path
s = ctoon.encode(struct('name', 'Alice', 'age', uint64(30)));
v = ctoon.decode(s);
v.name % 'Alice'
→ Full MATLAB reference (type mapping, ctoon.read/ctoon.write, Python-style aliases, ...)
GNU Octave 8.1+ uses the very same binding. There is no prebuilt Octave binary: build once with mkoctfile (Debian/Ubuntu: apt install octave octave-dev; needs a C compiler to build only), then load it with a single addpath:
cd src/bindings/matlab
ctoon_build('/path/to/ctoon-octave')
addpath('/path/to/ctoon-octave')
Or, without a checkout: python -m ctoon.manager octave install (builds a release's MATLAB source distribution).
Python
Requires Python 3.9+. Pre-built wheels for Linux, macOS and Windows - no compiler needed.
pip install ctoon
import ctoon
toon = ctoon.dumps({"name": "Alice", "age": 30})
data = ctoon.loads(toon)
Rust
Requires Rust 1.70+ and a C compiler on the build host.
cargo add ctoon
or add it to Cargo.toml yourself (the crate is on
crates.io):
[dependencies]
ctoon = "0.9.0"
let val = ctoon::loads("name: Alice\nage: 30")?;
println!("{}", val["name"].as_str().unwrap()); // Alice
let toon = ctoon::dumps(&val)?;
Zig
Requires Zig 0.16.0+.
zig fetch --save git+https://github.com/mohammadraziei/ctoon.git
const ctoon = @import("ctoon");
var val = try ctoon.loads(gpa, "name: Alice\nage: 30");
defer val.deinit(gpa);
const toon = try ctoon.dumps(gpa, val);
TOON Spec Version
The toon-format/spec release a build targets is exposed in every language (spec §13: implementations SHOULD declare it). It is resolved at CMake configure time and recorded in supported_spec.conf; the bindings read it from the C core, so it can't drift. Each language gives you the version (4.1), the tag (v4.1.2) and the release date:
| Language | Version | Tag | Date |
|---|---|---|---|
| C | CTOON_SPEC_VERSION_STRING |
CTOON_SPEC_TAG_STRING |
CTOON_SPEC_DATE_STRING |
| C++ | ctoon::spec::version::string() |
ctoon::spec::tag::string() |
ctoon::spec::date::string() |
| Go | ctoon.SpecVersion() |
ctoon.SpecTag() |
ctoon.SpecDate() |
| Julia | CToon.spec_version() |
CToon.spec_tag() |
CToon.spec_date() |
| MATLAB | info.Spec.Version |
info.Spec.Tag |
info.Spec.Date ([~, info] = ctoon.version()) |
| Python | ctoon.__toon_spec__ |
ctoon.__toon_spec_tag__ |
ctoon.__toon_spec_date__ |
| Rust | ctoon::spec_version() |
ctoon::spec_tag() |
ctoon::spec_date() |
| Zig | ctoon.specVersion() |
ctoon.specTag() (major/minor/patch) |
ctoon.specDate() |
In C and C++ the tag is also available as numbers (CTOON_SPEC_TAG_MAJOR/MINOR/PATCH, CTOON_SPEC_TAG_HEX; ctoon::spec::tag::major() etc.).
Building & Testing From Source
Each binding can be built, run and tested entirely with its own native
tooling - cargo test for Rust, go test for Go, pytest for Python, zig build test for Zig, Pkg.test() for Julia, MATLAB's buildtool test - pick
whichever's already open and go. But the project as a whole - building
every language together, running the full cross-language test matrix,
generating coverage, and building the documentation site - is driven by
CMake, the same commands CI uses. This section covers that path; see
CONTRIBUTING.md for the complete contributor workflow.
Configure
cmake -B build -DCMAKE_BUILD_TYPE=Release
By default this configures only C, C++ and the CLI. Each other language is opt-in via its own flag - and the flag changes what a missing toolchain does: silently skipped when the flag is OFF (the default, so the command above works on a machine with only some toolchains installed), a hard configure error when you've explicitly turned it ON:
# e.g. working on the Rust binding
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCTOON_BUILD_RUST=ON
# everything, like CI
cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DCTOON_BUILD_PYTHON=ON -DCTOON_BUILD_GO=ON -DCTOON_BUILD_RUST=ON \
-DCTOON_BUILD_ZIG=ON -DCTOON_BUILD_JULIA=ON
CMake options
| Option | Default | Description |
|---|---|---|
CTOON_BUILD_TESTS |
ON (top-level) | Build and register tests. |
CTOON_BUILD_EXAMPLES |
ON (top-level) | Build the examples. |
CTOON_BUILD_DOCS |
OFF | Build documentation. |
CTOON_BUILD_PYTHON |
OFF | Build the Python extension (nanobind). |
CTOON_BUILD_GO |
OFF | Require the Go toolchain (error instead of skip if missing). |
CTOON_BUILD_RUST |
OFF | Require the Rust toolchain (error instead of skip if missing). |
CTOON_BUILD_ZIG |
OFF | Require the Zig toolchain (error instead of skip if missing). |
CTOON_BUILD_JULIA |
OFF | Require the Julia toolchain (error instead of skip if missing). |
CTOON_BUILD_MATLAB |
OFF | Require the MATLAB toolchain (error instead of skip if missing). |
CTOON_BUILD_OCTAVE |
OFF | Require GNU Octave + mkoctfile (error instead of skip if missing). |
CTOON_BUILD_ALL_LANGS |
OFF | Require every self-building language's toolchain at once. |
JSON support is on by default. Define CTOON_DISABLE_JSON to turn it off - no external JSON library is required either way.
Build
cmake --build build -j
Test
ctest --test-dir build --output-on-failure --extra-verbose
# equivalently:
cmake --build build --target ctoon_test
Per-language targets, for iterating on one binding at a time:
ctoon_test_c, ctoon_test_cpp, ctoon_test_go, ctoon_test_julia,
ctoon_test_matlab, ctoon_test_octave, ctoon_test_python, ctoon_test_rust, ctoon_test_zig
(each also runnable as a single ctest case, e.g. ctest --test-dir build -R rust).
Coverage
cmake --build build --target ctoon_coverage
Per-language: ctoon_coverage_c, ctoon_coverage_cpp, ctoon_coverage_go,
ctoon_coverage_julia, ctoon_coverage_matlab, ctoon_coverage_octave,
ctoon_coverage_python, ctoon_coverage_rust, plus ctoon_coverage_total (merged
C/C++/Python/Go/Rust/Julia/Octave lcov report). Output lands in build/coverage/, with build/coverage/index.html
as the dashboard - published at
mohammadraziei.github.io/ctoon/coverage.
(Zig has no coverage target yet - see the comment in tests/zig/CMakeLists.txt.)
Docs
cmake -B build -DCTOON_BUILD_DOCS=ON # plus any CTOON_BUILD_<LANG>=ON you need
cmake --build build --target ctoon_docs
Per-language: ctoon_docs_c, ctoon_docs_cpp, ctoon_docs_julia,
ctoon_docs_matlab, ctoon_docs_octave, ctoon_docs_python, ctoon_docs_rust, plus
ctoon_docs_index for the landing page (CLI and Zig are assembled straight
from Markdown, no external doc tool needed). Output lands in build/docs/out/.
C API Reference
Parsing
/* from memory */
ctoon_doc *ctoon_read(const char *toon, size_t len, ctoon_read_flag flags);
ctoon_doc *ctoon_read_opts(char *toon, size_t len, ctoon_read_flag flags,
const ctoon_alc *alc, ctoon_read_err *err);
ctoon_doc *ctoon_read_opts_indent(char *toon, size_t len, ctoon_read_flag flags,
int indent_size, const ctoon_alc *alc,
ctoon_read_err *err);
/* from file */
ctoon_doc *ctoon_read_file(const char *path, ctoon_read_flag flags,
const ctoon_alc *alc, ctoon_read_err *err);
/* from JSON */
ctoon_doc *ctoon_read_json(char *json, size_t len, ctoon_read_flag flags,
const ctoon_alc *alc, ctoon_read_err *err);
ctoon_doc *ctoon_read_json_file(const char *path, ctoon_read_flag flags,
const ctoon_alc *alc, ctoon_read_err *err);
Writing
/* TOON output */
char *ctoon_write(const ctoon_doc *doc, size_t *len);
char *ctoon_write_opts(const ctoon_doc *doc, const ctoon_write_options *opts,
const ctoon_alc *alc, size_t *len, ctoon_write_err *err);
char *ctoon_mut_write(const ctoon_mut_doc *doc, size_t *len);
/* JSON output */
char *ctoon_doc_to_json(const ctoon_doc *doc, int indent,
ctoon_write_flag flags, const ctoon_alc *alc,
size_t *len, ctoon_write_err *err);
Access
/* document */
ctoon_val *ctoon_doc_get_root(const ctoon_doc *doc);
void ctoon_doc_free(ctoon_doc *doc);
/* type checks */
bool ctoon_is_null(ctoon_val *v); bool ctoon_is_bool(ctoon_val *v);
bool ctoon_is_true(ctoon_val *v); bool ctoon_is_false(ctoon_val *v);
bool ctoon_is_uint(ctoon_val *v); bool ctoon_is_sint(ctoon_val *v);
bool ctoon_is_real(ctoon_val *v); bool ctoon_is_str(ctoon_val *v);
bool ctoon_is_arr(ctoon_val *v); bool ctoon_is_obj(ctoon_val *v);
/* getters */
const char *ctoon_get_str(ctoon_val *v);
uint64_t ctoon_get_uint(ctoon_val *v);
int64_t ctoon_get_sint(ctoon_val *v);
double ctoon_get_real(ctoon_val *v);
bool ctoon_get_bool(ctoon_val *v);
/* array */
size_t ctoon_arr_size(ctoon_val *arr);
ctoon_val *ctoon_arr_get(ctoon_val *arr, size_t idx); /* O(1) */
/* object */
size_t ctoon_obj_size(ctoon_val *obj);
ctoon_val *ctoon_obj_get(ctoon_val *obj, const char *key);
/* iteration */
ctoon_obj_iter ctoon_obj_iter_with(ctoon_val *obj);
ctoon_val *ctoon_obj_iter_next(ctoon_obj_iter *iter);
ctoon_val *ctoon_obj_iter_get_val(ctoon_val *key);
Mutable documents
ctoon_mut_doc *ctoon_mut_doc_new(const ctoon_alc *alc);
void ctoon_mut_doc_free(ctoon_mut_doc *doc);
void ctoon_mut_doc_set_root(ctoon_mut_doc *doc, ctoon_mut_val *root);
ctoon_mut_val *ctoon_mut_null(ctoon_mut_doc *doc);
ctoon_mut_val *ctoon_mut_bool(ctoon_mut_doc *doc, bool val);
ctoon_mut_val *ctoon_mut_uint(ctoon_mut_doc *doc, uint64_t val);
ctoon_mut_val *ctoon_mut_sint(ctoon_mut_doc *doc, int64_t val);
ctoon_mut_val *ctoon_mut_real(ctoon_mut_doc *doc, double val);
ctoon_mut_val *ctoon_mut_str(ctoon_mut_doc *doc, const char *str);
ctoon_mut_val *ctoon_mut_arr(ctoon_mut_doc *doc);
ctoon_mut_val *ctoon_mut_obj(ctoon_mut_doc *doc);
bool ctoon_mut_arr_append(ctoon_mut_val *arr, ctoon_mut_val *item);
bool ctoon_mut_obj_put(ctoon_mut_val *obj, ctoon_mut_val *key, ctoon_mut_val *val);
/* convert between immutable and mutable */
ctoon_mut_doc *ctoon_doc_mut_copy(ctoon_doc *doc, const ctoon_alc *alc);
ctoon_doc *ctoon_mut_doc_imut_copy(ctoon_mut_doc *doc, const ctoon_alc *alc);
Complexity
| Operation | Time | Notes |
|---|---|---|
ctoon_read / ctoon_read_json |
O(n) | n = input bytes |
ctoon_write / ctoon_doc_to_json |
O(n) | zero extra copy for immutable doc |
ctoon_arr_get(arr, i) |
O(1) | direct index into flat arena |
ctoon_obj_get(obj, key) |
O(k) | linear scan; k = key count |
ctoon_doc_free |
O(chunks) ~= O(1) | arena freed in one shot |
Thread Safety
| Scenario | Safe? |
|---|---|
| Multiple threads reading different documents | Yes |
| Multiple threads reading the same document | Yes |
| Building a document from multiple threads | No - arena not thread-safe |
License
MIT - see LICENSE.
Related
- toon-format/toon - the TOON format specification
Metadata
Release files for ctoon 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ctoon-0.9.0.tar.gz | 1.1 MB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| ctoon-0.9.0-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| ctoon-0.9.0-cp312-abi3-win32.whl | CPython 3.12 | abi3 | Windows x86-32 | Details |
| ctoon-0.9.0-cp312-abi3-musllinux_1_2_x86_64.whl | CPython 3.12 | abi3 | Linux musl 1.2+ x86-64 | Details |
| ctoon-0.9.0-cp312-abi3-musllinux_1_2_aarch64.whl | CPython 3.12 | abi3 | Linux musl 1.2+ ARM64 | Details |
| ctoon-0.9.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| ctoon-0.9.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| ctoon-0.9.0-cp312-abi3-macosx_10_13_universal2.whl | CPython 3.12 | abi3 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
| ctoon-0.9.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| ctoon-0.9.0-cp311-cp311-win32.whl | CPython 3.11 | CPython 3.11 | Windows x86-32 | Details |
| ctoon-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux musl 1.2+ x86-64 | Details |
| ctoon-0.9.0-cp311-cp311-musllinux_1_2_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux musl 1.2+ ARM64 | Details |
| ctoon-0.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| ctoon-0.9.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| ctoon-0.9.0-cp311-cp311-macosx_10_13_universal2.whl | CPython 3.11 | CPython 3.11 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
| ctoon-0.9.0-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| ctoon-0.9.0-cp310-cp310-win32.whl | CPython 3.10 | CPython 3.10 | Windows x86-32 | Details |
| ctoon-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux musl 1.2+ x86-64 | Details |
| ctoon-0.9.0-cp310-cp310-musllinux_1_2_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux musl 1.2+ ARM64 | Details |
| ctoon-0.9.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| ctoon-0.9.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| ctoon-0.9.0-cp310-cp310-macosx_10_13_universal2.whl | CPython 3.10 | CPython 3.10 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
| ctoon-0.9.0-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| ctoon-0.9.0-cp39-cp39-win32.whl | CPython 3.9 | CPython 3.9 | Windows x86-32 | Details |
| ctoon-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux musl 1.2+ x86-64 | Details |
| ctoon-0.9.0-cp39-cp39-musllinux_1_2_aarch64.whl | CPython 3.9 | CPython 3.9 | Linux musl 1.2+ ARM64 | Details |
| ctoon-0.9.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| ctoon-0.9.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 | Details |
| ctoon-0.9.0-cp39-cp39-macosx_10_13_universal2.whl | CPython 3.9 | CPython 3.9 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
Total release size: 26.1 MB
Release files / ctoon-0.9.0.tar.gz
| Download URL | ctoon-0.9.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a283801a6cf5a2e3ab062978151f64cde5c4394b4aced9f65586c33db63fa80d
|
|
BLAKE2b-256 checksum How to use checksums |
ea85f53c23f70c0e51e9834ac4e59eedd8c4f05ce8167c2c3c876df0da723128
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-win_amd64.whl
| Download URL | ctoon-0.9.0-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 540.8 kB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
2c056d6fad7e3ae8b9f9ed47055c09d1aaa8431fbed7038039df17d47771b159
|
|
BLAKE2b-256 checksum How to use checksums |
00b3ab4db2e6f9093cbe74e8b02b3c341976d1ed7ffad222da4782809a3e2124
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-win32.whl
| Download URL | ctoon-0.9.0-cp312-abi3-win32.whl |
|---|---|
| Size | 517.8 kB |
| Tags | CPython 3.12 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
9d766c5630328bb98350c6cfe63a395557c34d3a9e32bd9d52144a8ded8521bd
|
|
BLAKE2b-256 checksum How to use checksums |
2f6a744f27c93478382fb50da3946ce0ca6d2345c1a2d8b9ed9b950b0834d16a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-musllinux_1_2_x86_64.whl
| Download URL | ctoon-0.9.0-cp312-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f1f680bb483bf7308425e490332563eedac658a6c7d4c858833737f12dcd039d
|
|
BLAKE2b-256 checksum How to use checksums |
3668e6aa3802d530471c60a5600ec47e17a2c7f835d3093028d9e3e2e7cfe8a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-musllinux_1_2_aarch64.whl
| Download URL | ctoon-0.9.0-cp312-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ee716757d5eaabefcb0496da1fed8a38610db0e267c3e684c7a5f3cdd6041fef
|
|
BLAKE2b-256 checksum How to use checksums |
8f9e59d0d038eef6b46082ea60bb428d6db15488e5377c5263bf0b1230f2862b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctoon-0.9.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 452.1 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
713c1fa95ebc9db8a432d98452788a7187ef47e9f0da6a4a15f806aaf28c8c06
|
|
BLAKE2b-256 checksum How to use checksums |
8cbc243aa2228b97d1e77486a61f3ce8c329693c380fbdd1d3b8eab1a34ed7d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ctoon-0.9.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 423.6 kB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
8f553cbcb9c5ee4b96390cb0c4a64bebe1c048014135905a79cd58fe02983b1d
|
|
BLAKE2b-256 checksum How to use checksums |
153ac6b9ffd628d866e98b9c1407f1ad89785953a252285a5ce05e0e12a99981
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp312-abi3-macosx_10_13_universal2.whl
| Download URL | ctoon-0.9.0-cp312-abi3-macosx_10_13_universal2.whl |
|---|---|
| Size | 655.1 kB |
| Tags | CPython 3.12 abi3 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
caec169da94d41af3f216d70e1558e61c2b43fa751e7600e1b346c6306fa9d0c
|
|
BLAKE2b-256 checksum How to use checksums |
a34578e832f2ffdb3fd7e8a41c6402a10a772bd08504fb8fa450e325dbc5de29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-win_amd64.whl
| Download URL | ctoon-0.9.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 541.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6b27c044d4e8c73d556238ebcabfdf3db15b3fc730c4b720ec44831c4f9adda0
|
|
BLAKE2b-256 checksum How to use checksums |
e9b48a69df82470f9eb68afe58e3affdf29956bb46b841066be9f5db85a65b36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-win32.whl
| Download URL | ctoon-0.9.0-cp311-cp311-win32.whl |
|---|---|
| Size | 518.5 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
13ecc2449bd8307a9b0a742963bea7de929a5facbb38b0a236f7ed8089ab09d1
|
|
BLAKE2b-256 checksum How to use checksums |
43b5cb7eaea593d2108e9767eff820d5f1ecc4f903142db02e272666faaed2ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | ctoon-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
aa851fec0990210c68847249b9d8f262d9d49d4e7b149ab157fda897e94866f1
|
|
BLAKE2b-256 checksum How to use checksums |
4717f3d0de3bbe87e5dcbdfe9fb269f9a3892e9e8aab25aa9eb4978435e56861
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | ctoon-0.9.0-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
545c17677737940c4f8426429d60fa1d3de1d964522b17edcfd254e4f626c009
|
|
BLAKE2b-256 checksum How to use checksums |
035e5d2aec2e0599d3b72155148b0751a324c3a110f3071a7c27572a769ae028
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctoon-0.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 456.2 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c93cc5114728758e387853a99e170a09fd3c1ac6105168d2abdd1c8f0506706e
|
|
BLAKE2b-256 checksum How to use checksums |
e7e313f2ba668bc6be7c3c9d798e48d971076cf321ab50c31aec40b5a81900a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ctoon-0.9.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 427.7 kB |
| Tags | CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
a0e4c11965af72cabb9fdfa4f8b8eaa4a61d943a87bba3e0c319c6353d4314a7
|
|
BLAKE2b-256 checksum How to use checksums |
301e92f63a89507fb44857a344953e7cc3361b538c7e4352d02bba29448592f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp311-cp311-macosx_10_13_universal2.whl
| Download URL | ctoon-0.9.0-cp311-cp311-macosx_10_13_universal2.whl |
|---|---|
| Size | 659.5 kB |
| Tags | CPython 3.11 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
0b4c3bac4ba527bb12244308a5993921f98e8d31b6fa3372129c94955b567ab1
|
|
BLAKE2b-256 checksum How to use checksums |
24f266dedf9d9b4856c6a02eb89889b5fc3adbbbcefcbc5e4dbba51eeef4c064
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-win_amd64.whl
| Download URL | ctoon-0.9.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 541.0 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
323c890b01312586896a986506842aade5f73f21fb37f450e6749971bb696800
|
|
BLAKE2b-256 checksum How to use checksums |
16a1404b2a98e5c13ec08f5fe9480c4373fb46db90192cfb2ff93c22c7e2e72d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-win32.whl
| Download URL | ctoon-0.9.0-cp310-cp310-win32.whl |
|---|---|
| Size | 518.3 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
78aaf1109389724712398d0cd3f996da6794d00c4935ea881ee14dd409057944
|
|
BLAKE2b-256 checksum How to use checksums |
aba3890d79471419d18e60bed0dd46128371e41a623765a0598934ef65c01142
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | ctoon-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
fca606ac902ea6d554f18a7889f2bdc1b5866e3ada701109e622fa546229e66c
|
|
BLAKE2b-256 checksum How to use checksums |
97d749e3d775621585e32d5aaf219ea66cbc2e72cac0e49a47e4becf4c05c85a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-musllinux_1_2_aarch64.whl
| Download URL | ctoon-0.9.0-cp310-cp310-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
2961c4ff435040961c7a25dbcad193a6b540cc15780af19fd3f7caf2fa3c960d
|
|
BLAKE2b-256 checksum How to use checksums |
bb7ede9beefaadef62a4443934a2f507a5003f1f5beed9e694c3999d886fb6ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctoon-0.9.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 455.7 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c05e65df151ae30cf8ec08822b5b8b72504f5e58b413bf6335c384b9162f0b34
|
|
BLAKE2b-256 checksum How to use checksums |
1b80932995a5844a4f41ff76d085ec6ec76ac114705ee8567f5f83f5bafd02fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ctoon-0.9.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 427.4 kB |
| Tags | CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
2e78d91ca94bfe0e9307179aa96c1814aa7359515f89e81f20a468fd52436465
|
|
BLAKE2b-256 checksum How to use checksums |
228f3d1244c9d14887477c8ee2d542c59f0d2402d7a4b321d7c0dabf88aeb913
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp310-cp310-macosx_10_13_universal2.whl
| Download URL | ctoon-0.9.0-cp310-cp310-macosx_10_13_universal2.whl |
|---|---|
| Size | 657.7 kB |
| Tags | CPython 3.10 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
d03f77bcf1444b8e92f0df1d67650b2a7d344aa268f14a0bc33357d85ca4568b
|
|
BLAKE2b-256 checksum How to use checksums |
e0c07c9ed6d79c0661344357eb7daeebc5da75a3e060d1737a916f7c1fc57e18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-win_amd64.whl
| Download URL | ctoon-0.9.0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 514.2 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
96ed90ae1ce842adbde551fece4a8ed6537eb899373c33c7ad5dd2c58c2635ff
|
|
BLAKE2b-256 checksum How to use checksums |
6bb31a38c9dd51d308dd4908e6635279aa0dc9ffacbe086c7612e4ec45bfedfc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-win32.whl
| Download URL | ctoon-0.9.0-cp39-cp39-win32.whl |
|---|---|
| Size | 493.8 kB |
| Tags | CPython 3.9 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
e845eabc7ffe4ddd6353a698e9fc9d8c69b8d1d5112b0db21536a58929ccb53b
|
|
BLAKE2b-256 checksum How to use checksums |
bee1e0c95c6ffc3c337ffaa821b730f0b534466fcbea28963af96162a0d1db13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl
| Download URL | ctoon-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
4cd2cb187e1add6ee6477dc986ea05b0f7292a6b07a1e5cff9adb827df7b172c
|
|
BLAKE2b-256 checksum How to use checksums |
9440ed49a705eb0a60a97c0826fa9d0c05d9c6aa1d7262b7a932dabdee0f695f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-musllinux_1_2_aarch64.whl
| Download URL | ctoon-0.9.0-cp39-cp39-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
82184349fc28893f01164da7d2bd3413ef6fda2575f59fd105453e67e22374ae
|
|
BLAKE2b-256 checksum How to use checksums |
53c1fa5962666d9e3226b11d57323788d792f0d87dfa66090c655ef7399f66ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ctoon-0.9.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 449.8 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1b5121eed15b67cc0980904782e77482461abe90fe7c2d33448818bb15b48bf1
|
|
BLAKE2b-256 checksum How to use checksums |
13100cd1596739fe94c24c572dd98609bbc743909e4f8dde29a9f4b3c3d67a76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ctoon-0.9.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 422.1 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
25eb4bf824919a607c69c50b30dd457a115160c804456ab69cd097708b440e7c
|
|
BLAKE2b-256 checksum How to use checksums |
b5a79669d3f847136b94e476337dbc9afcd14ed7741b4b0ff4eabecb9694c1a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ctoon-0.9.0-cp39-cp39-macosx_10_13_universal2.whl
| Download URL | ctoon-0.9.0-cp39-cp39-macosx_10_13_universal2.whl |
|---|---|
| Size | 641.6 kB |
| Tags | CPython 3.9 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
2adcb714d70426e08c40aec92ad46af81f16c6c2d48c4b298d425b2a3aafe5b6
|
|
BLAKE2b-256 checksum How to use checksums |
3e415187923984070c8380abad36162350d033e3bc77fc782acd654ad720474b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for ctoon 0.9.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.