Skip to main content

CALF - CAPIO Logging Facility

CALF - CApio Logging Facility

C++ 17 Python 3.10-3.14

C++ tests Python tests

CALF is a structured, header-only C++17 logging library for the CAPIO ecosystem. It records RAII scopes and events in one of two file formats:

  • Perfetto is the preferred format. It produces compact, streaming .perfetto-trace files that open directly in the Perfetto UI.
  • JSON is the dependency-free fallback. It produces readable .log files containing valid, indented JSON.

CALF provides three logging backends:

  • StlLogger uses std::fstream and is intended for regular C++ processes.
  • SyscallLogger uses raw Linux syscalls and is intended for syscall interceptors or other environments where the STL is unsafe.
  • StdOutLogger writes human-readable messages to standard output.

StlLogger and SyscallLogger support both Perfetto and JSON with the same logging macros. The selected file format is fixed when a target is built.

Requirements

  • C++17 or later
  • CMake 3.16 or later
  • Linux when using SyscallLogger
  • Python 3.10 or later when using the Python bindings

Quick start

Add CALF with FetchContent:

include(FetchContent)

FetchContent_Declare(
  calf
  GIT_REPOSITORY https://github.com/High-Performance-IO/calf.git
  GIT_TAG <commit-sha> # Pin a commit for reproducible builds.
  GIT_SHALLOW TRUE
)

set(CALF_TESTS OFF CACHE BOOL "" FORCE)
set(CALF_BUILD_PYTHON_BINDINGS OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(calf)

# Enables logging and selects Perfetto when CALF_PROTOBUF=ON.
calf_enable_log(my_server ON)

Use the logging macros in C++:

#include <calf/StlLogger.h>

void handle_request(int tid, const char *path) {
    START_LOG(tid, "path=%s", path);
    LOG("processing");
} // The scope closes and its end timestamp is recorded here.

By default, this writes a Perfetto trace to:

./calf_logs/<hostname>/calf_<pid>.perfetto-trace

Open the file in https://ui.perfetto.dev/.

Log formats

Perfetto format

Perfetto is selected when a target links to calf::protobuf. The calf_enable_log helper does this automatically when CALF_PROTOBUF=ON:

# Automatic: Perfetto if available, otherwise JSON.
calf_enable_log(my_server ON)

# Explicit: require Perfetto. Configuration fails if CALF_PROTOBUF=OFF.
calf_enable_log(my_server ON PROTOBUF)

You can also select it by linking the target directly:

target_link_libraries(my_server PRIVATE calf::protobuf)

CALF writes a standard Perfetto TrackEvent protobuf stream. Its logging model maps to Perfetto as follows:

CALF operation Perfetto representation
START_LOG(...) Slice begin on the calling thread's track
Scope destruction Slice end on the same track
LOG(...) Instant event on the same track
C++ function name Event name
Formatted message args debug annotation
Source file and line Perfetto source location
Nested CALF scopes Nested Perfetto slices

All threads in a process write to one trace:

$CALF_LOG_DIR/<hostname>/<component>_<pid>.perfetto-trace

Each thread has its own Perfetto track. Timestamps use the monotonic clock in nanoseconds. Writes are synchronized so packets from different threads cannot interleave. Separate processes always use separate files.

The trace is streamed as logging occurs; CALF does not build the complete trace in memory. StlLogger uses generated protobuf support for the schema, while SyscallLogger writes compatible protobuf bytes through raw syscalls.

CMake uses any installed Google Protobuf package that provides protoc and generates the schema with it. Otherwise, it downloads Protobuf through FetchContent.

JSON fallback

JSON is selected automatically by calf_enable_log(target ON) when CALF_PROTOBUF=OFF. It can also be requested explicitly:

# Disable protobuf support for the whole CALF build.
set(CALF_PROTOBUF OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(calf)
calf_enable_log(my_server ON)

# Or keep protobuf available but use JSON for this target.
calf_enable_log(my_tool ON JSON)

Directly linking calf::stl or calf::syscall also uses JSON unless the target additionally receives the Perfetto configuration through calf::protobuf:

target_link_libraries(my_server PRIVATE calf::stl)
target_link_libraries(my_interceptor PRIVATE calf::syscall)

This is a build-time fallback. CALF does not switch formats at runtime or convert an existing Perfetto trace to JSON.

JSON output uses one file per thread:

$CALF_LOG_DIR/<component>/<hostname>/<prefix><tid>.log

The default prefix is stl_ for StlLogger and syscall_ for SyscallLogger. CALF_LOG_PREFIX overrides it.

Each file contains one root array. Every START_LOG scope is an object, and each LOG call is an event in that scope's events array:

[
  {
    "invoker": "capio_openat",
    "file": "posix/open.cpp",
    "line": 77,
    "ts_enter": 42,
    "args": "dirfd=4, pathname=/tmp/foo, flags=0",
    "events": [
      { "ts": 43, "invoker": "get_file_location", "file": "location.hpp", "line": 96, "args": "path=/tmp/foo" },
      { "ts": 44, "invoker": "get_file_location", "file": "location.hpp", "line": 96, "args": "file found on node host0" }
    ],
    "ts_exit": 45
  }
]

Scope fields:

Field Meaning
invoker Function that opened the scope
file, line Source location of START_LOG
ts_enter Scope start time in elapsed milliseconds
args Expanded START_LOG format string
events Ordered LOG events and any nested scopes
ts_exit Scope end time in elapsed milliseconds

Event fields:

Field Meaning
ts Event time in elapsed milliseconds
invoker Function associated with the enclosing logger
file, line Source location associated with the logger
args Expanded LOG format string

Strings are JSON-escaped, and the file remains valid JSON after each completed outer scope. Multiple outer scopes are appended to the same root array.

C++ usage

Regular processes

Use StlLogger in code where the C++ standard library is safe. Logging starts enabled on every thread:

#include <calf/StlLogger.h>

void handle_request(int tid, const char *path) {
    START_LOG(tid, "call(path=%s)", path);
    LOG("processing path=%s", path);
    LOG("done");
}

Syscall interceptors

Use SyscallLogger where logging must avoid intercepted STL I/O. This backend is Linux-only and starts disabled to prevent re-entrancy during setup. Enable it after initialization:

#include <calf/SyscallLogger.h>
#include <libsyscall_intercept_hook_point.h>

void setup() {
    SET_CALF_SYSCALL_HANDLER(syscall_no_intercept);
    ENABLE_LOGGER();
}

long hook(long syscall_number, ...) {
    START_LOG(capio_syscall(SYS_gettid), "call()");
    // Handle the syscall.
}

SET_CALF_SYSCALL_HANDLER redirects CALF's internal syscalls through syscall_no_intercept. Temporarily suspend logging around operations that must not be captured:

void internal_operation() {
    DISABLE_LOGGER(); // Logging is restored when this scope exits.
    // Perform internal syscalls.
}

Macros

Macro Description
START_LOG(tid, fmt, ...) Creates a scoped Logger log RAII object.
LOG(fmt, ...) Adds an event to the current scope.
ERR_EXIT(fmt, ...) Logs and terminates, or throws when configured to continue on error.
ENABLE_LOGGER() Enables logging on the calling thread.
DISABLE_LOGGER() Suspends logging until the current C++ scope exits.
DBG(tid, lambda) Wraps a lambda in a debug-only scope; compiled out in release builds.
SET_CALF_SYSCALL_HANDLER(handler) Sets the non-intercepted syscall handler for SyscallLogger.

Configuration

CMake options

Option Default Description
CALF_LOG ON Enables logging macros globally; when disabled, they are no-ops.
CALF_PROTOBUF ON Builds Perfetto support and the calf::protobuf target.
CALF_PROTOBUF_FETCH ON Downloads Protobuf when an installation with protoc is unavailable.
CALF_PROTOBUF_FORCE_FETCH OFF Downloads and uses Protobuf even when it is installed.
CALF_PROTOBUF_REGENERATE OFF Adds the calf_regenerate_protobuf source regeneration target.
CALF_TESTS OFF Builds and registers the C++ test suites.
CALF_PYTHON_TESTS Value of CALF_TESTS Builds the Python extension and registers binding tests.
CALF_BUILD_PYTHON_BINDINGS OFF Builds and installs the private calf._py_calf extension.
CALF_DEFAULT_COMPONENT_NAME calf Sets the default component used in paths and CLI headers.
CALF_DEFAULT_LOG_DIR_NAME ./calf_logs Sets the log root used when CALF_LOG_DIR is unset.

Pass options during configuration with -D<option>=<value>:

# Build C++ and Python tests.
cmake -S . -B build -DCALF_TESTS=ON

# Build only C++ tests.
cmake -S . -B build -DCALF_TESTS=ON -DCALF_PYTHON_TESTS=OFF

# Build without protobuf and use JSON as the automatic format.
cmake -S . -B build -DCALF_PROTOBUF=OFF

# Override compiled-in output defaults.
cmake -S . -B build \
  -DCALF_DEFAULT_COMPONENT_NAME=my_component \
  -DCALF_DEFAULT_LOG_DIR_NAME=/var/log/calf

For individual targets, calf_set_component(target name) and calf_set_default_log_dir(target path) override the compiled-in defaults.

Environment variables

Variable Description Default
CALF_LOG_DIR Root directory for Perfetto and JSON output. ./calf_logs
CALF_LOG_PREFIX Prefix for per-thread JSON filenames; ignored by Perfetto. stl_ or syscall_

Environment variables are read by the process at runtime and override the compiled-in output directory and JSON prefix.

Python bindings

The Python package exposes the JSON-backed StlLogger and the human-readable StdoutLogger.

Install a published release:

python -m pip install capio-calf

Install from the repository for development:

python -m pip install -e .

Use calf.Logger, an alias for calf.StlLogger, as a context manager so its scope closes deterministically:

import calf

with calf.Logger("processing request") as logger:
    logger.log("reading input")
    logger.log("request complete")
    print(logger.log_file_name)

CALF detects the current Python function as the invoker. At module scope it uses the script name, and in an interactive session it uses python. The constructor accepts invoker, file, line, and tid overrides. If tid is omitted, CALF uses the current thread ID. close() can be used without a context manager, and get_log_file_name() returns the output path.

Configure stdout logging through StdoutLoggerOptions:

import calf

options = calf.StdoutLogger.get_options()
options.workflow_name = "example"
options.color = calf.CLI_LEVEL_INFO
options.print_header = True
options.use_color = True
calf.StdoutLogger.set_options(options)

with calf.StdoutLogger("starting") as logger:
    logger.log("working")

calf.StdoutLogger.print("finished")

Available colors are CLI_LEVEL_RESET, CLI_LEVEL_STATUS, CLI_LEVEL_INFO, CLI_LEVEL_WARNING, and CLI_LEVEL_ERROR.

Testing

The C++ tests use GoogleTest. Python binding tests use pytest. Both run on Linux and macOS, except the Linux-only raw syscall suites.

cmake -S . -B build -DCALF_TESTS=ON
cmake --build build --parallel
ctest --test-dir build --output-on-failure

Run only the Python binding test target with:

cmake --build build --target calf_python_tests

Download files

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

Source Distribution

capio_calf-0.3.1.tar.gz (33.0 kB view details)

Uploaded Source

Built Distributions

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

capio_calf-0.3.1-cp314-cp314-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

capio_calf-0.3.1-cp314-cp314-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

capio_calf-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (194.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

capio_calf-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (177.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

capio_calf-0.3.1-cp314-cp314-macosx_15_0_x86_64.whl (103.6 kB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

capio_calf-0.3.1-cp314-cp314-macosx_15_0_arm64.whl (95.5 kB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

capio_calf-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

capio_calf-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

capio_calf-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (193.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

capio_calf-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (176.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

capio_calf-0.3.1-cp313-cp313-macosx_15_0_x86_64.whl (103.2 kB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

capio_calf-0.3.1-cp313-cp313-macosx_15_0_arm64.whl (95.1 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

capio_calf-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

capio_calf-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

capio_calf-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (194.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

capio_calf-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (176.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

capio_calf-0.3.1-cp312-cp312-macosx_15_0_x86_64.whl (103.2 kB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

capio_calf-0.3.1-cp312-cp312-macosx_15_0_arm64.whl (95.1 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

capio_calf-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

capio_calf-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

capio_calf-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (193.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

capio_calf-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (176.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

capio_calf-0.3.1-cp311-cp311-macosx_15_0_x86_64.whl (102.3 kB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

capio_calf-0.3.1-cp311-cp311-macosx_15_0_arm64.whl (94.9 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

capio_calf-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

capio_calf-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

capio_calf-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

capio_calf-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (175.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

capio_calf-0.3.1-cp310-cp310-macosx_15_0_x86_64.whl (100.9 kB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

capio_calf-0.3.1-cp310-cp310-macosx_15_0_arm64.whl (93.6 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file capio_calf-0.3.1.tar.gz.

File metadata

  • Download URL: capio_calf-0.3.1.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for capio_calf-0.3.1.tar.gz
Algorithm Hash digest
SHA256 600daf34e68d93a4f6247e0c42f649869f535750af3dca653fa92c95b4b8bfb3
MD5 3acee8910b868dd22dd5c29da7bd5b20
BLAKE2b-256 4a0d72ea76dfa535d2ddadbb271b3d6bd8d2cc8664c006f9e08083f85d461646

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 719c94923657658c6a7ed0be0e76b4dafd7b90e47d1b7254f61a80667ba7c9d3
MD5 3f802af4f2cd5a3ea43826c260356333
BLAKE2b-256 ca9ccf9c68246cce247c3042defb8b02ec06c19c3b78120047d6cb3706db1196

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cb6b29ef612eaa7080a8c3d552bbd5533a70a86cc6808d0c3e227b6051730365
MD5 5b1808e955f5ad26ec607304802f5914
BLAKE2b-256 78468bace46218a93ed8426142482ca6fbd999f034b4000e578dba44c23e9ee3

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7aeaac84098f8d635cf89a0b375d4500345c4a2e650369c6c83082533468f20
MD5 0f3cf5cbb349926a43e8e21cd8a3fd9d
BLAKE2b-256 62ee79a78f5e336b9969950fc016a7b378f10fad384cb96b6d49101d4b21d8eb

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 df7ad863602bce628ed3bcfe1d82684aa718969af5ae0ca0bd9c3ba40eeff06b
MD5 c45471489252dd30e45466098bc8af1a
BLAKE2b-256 8d1497eb2289d7835d714bac14c4b85c50e8b7ae1ba0cca9e3c5c905937d6b5e

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1430ba809fa74f544c89cdcf804c5597c526e880c7b5a839b86e8ca6eea46df5
MD5 7b655be301a879a45cd796be43f7f239
BLAKE2b-256 6248cd415e83b7acd5ce535773538c7bb8edc4d2c682442aa9c59c1ba74d4b08

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 680bbdd53298b37308eab578ef7058b3abdf0eca273054a89ca023700e13db1e
MD5 f0d54acd90e0a5e3d2b5916c59fe06fc
BLAKE2b-256 6acc1dcdbff77a0f3a0fbaea0c1427fe7eced89215941ffc792f369537ee1616

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fc0620fbfeaf8d54ff61335d7c219ae981fe2214336f17ad24f1b9287ce457a2
MD5 6cb71060d6550c2c600731cf00c2ec1c
BLAKE2b-256 d17a94499297ff1efdc186f19b3c5d6125c86982eb308b48cbc738a260ea0136

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f8e48fda8209423726fa024d95a77f3cbc72cd9e2da7ab9010abad05ca8ad02c
MD5 219f364e3fa225aeab1ea8997c042eeb
BLAKE2b-256 6af607f6ac01106931f4a94d3bd3d4834cb4f4589f7acd73a584f283861780e2

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f427004923a8ab2181d26d3eca72599ce82011c77ce699dbff98415b3cf969bc
MD5 84c513d7a26681dfeeb13e1874b5a03a
BLAKE2b-256 a1def79a34a56e3d779e61634bef7b5c6267977a5bf271af92f6cb1da1e8e2ee

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d935ce5295025f422a2faa87ff9dc157eb31bf3ea785fb684477ce69d89670d
MD5 1d0da20c77de9a3b724f6a22d728ee81
BLAKE2b-256 c587121140c6e5d5c124ccfaf67d8ae9b9f71af004b4fcf131a4a687b4f33f28

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fb37d572c9ba9c41607f7d1518af9a9c9f8a03e10fcae1e75f1526a9f7c6491a
MD5 520e0235acbb3c1be40c9ce7f6e650be
BLAKE2b-256 15f667b5cf47e93ab448e4e62b2e14eb1899fb16ae7962d4447b3440b4efe6c7

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cbf5ef5ab4e0306f184feb592f3521f5480d6e9266aad085d56950bfbabfe486
MD5 3f75fb7a83a554d045c6621f67bca1ab
BLAKE2b-256 e5331be0dac0a57aba650eddd533fab238a5d66447d8353befe7ab54a9ce4cf5

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 67eef46184ff6fe1b63346e5ae8ce46e05f75ce74c61ead26d0eb75cd66bf671
MD5 0a2e43e28ad7481d689a3f0315e29773
BLAKE2b-256 475a589e0b9102a700fd7699d3a948c473501aafd5819066c077c9a8715e7479

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f015058146d9412c11df1f68db33896ce622309783e3ec28b88f7e0d81f586ca
MD5 81faa57fd17b76096b43ebba9bad4798
BLAKE2b-256 f95eac6597913798e1ba637c087ea98ee3f8bcca8444db08340ae725d7666af7

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3bef34124ae9aadc11429b6893542efe4a3dbd6915741a98b667fee21e27d9a7
MD5 6329902297254d67bbfce3ecb7a8517d
BLAKE2b-256 8fda590ac26536e78b353259a8cec3c7edef3848666886dd6e4d36170033b547

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 60fd07d4925179350b1a800b8246e9ccac5d624a5736e1bee86f1331aa8dd6b9
MD5 cbc1d2faa88b6452886aa51290d471cb
BLAKE2b-256 fce224d192eab65260927e27c5544840aacf5a018364a0c122f7edb82ea7d8e0

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ec7560a39a28e90d8fc65b26ab03095d6b00c29d95d88ac6fc672aaac8ff9373
MD5 e78d931f704d34418d506bc1e1e9023d
BLAKE2b-256 13dbc01593d7de9a20aee711bc9cb0a7119f3d3279e5f909f8e18af21d01be5c

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 02c04d8b2fd3652d6ca21b093c341be4ecac97ed619c877d2158fe3ac9f2bfeb
MD5 6fb6b2656fbaa92b6cbadef0d6de14ca
BLAKE2b-256 7eaf176dc6937d78553b12c9de778111af66ef0bb1dc56b14b0385fa3f02dc72

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d41a0f2771533d9a59308e50357b6e358c0e3d1664eec45ed8ae6367e413f8a9
MD5 8b64c52321a3edd4f9dcf26aa4dafc51
BLAKE2b-256 497f3c4f51bf3cfe256e1cf827bea5eb6da0685f1c38f8c43d91ec525c626041

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a4e6c817804f7f0313ff79cdcf3c16a78b6121782d7e184d73f159c21157b873
MD5 632ab6b4b9046ee57e116f6ba4dea94e
BLAKE2b-256 1dcf7ecaf5813f51f80cc84e6b0f92ecc0af734b28a67f6a79782d4fa528ef7a

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3fd3095876c05c49918170fb9cff30cdb56c39ed56ee9a1f797b041dac24d08
MD5 15c0538fc804a9b31581fae9e79daec1
BLAKE2b-256 6cf1c64791a1ce59f9b649d6056f7267c4ec94e15af57c091a9489a4e03255b5

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 24287ce10b2159bc41b97f9c2d7cfb0f30867556670959f7a72c3d8db889b100
MD5 512ff6a5b5459e24516e854e227fab8d
BLAKE2b-256 ca3e22cd05676e8f17ab3ecf08ade144171b39dd7b9d8261210f98b9d49ea40a

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 21f9500726d567a9bbba44ef0d52d98b6474eba9a1c977e7f1dc9c6e275290c5
MD5 7054659cd62e1c84af132ee5165fbb7c
BLAKE2b-256 f9e81d8230440f68f56c08110da985ea19ccbbb2d99d7bb1fd9b48cc869d4b8b

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cc558265d8591f2911864c7a5543f54f405f213bdab307eb5d88421d0fd6c69c
MD5 3597841d5002a9a701ac3f7a8447bb87
BLAKE2b-256 a3f79212ad5b6bb2586378378ed3219058adbdfa8ed8f949e92c8cea663250de

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 351ade7c464fa228f25eb44be294d93a80f587a6e6f85defaba132839511872c
MD5 da20fdefa5343edb5569eb5ec1942510
BLAKE2b-256 7b86d963414f197b4543d9ec4c46646093030f13239d180b5ab965981cb0edd4

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5ff2541b739ad5365af866d822d088484a25fe157da444e264bd57d0387e981f
MD5 c6f5d037661c69775f62688aec632f45
BLAKE2b-256 a6463645efc96c4eb22d31d7138edb7ba4c9c47878a52147bc1b54f0f92db0fa

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e96b960d2a48f0e920133b16b8508864dbeca666afb55e9d6d63ce110d4755b
MD5 4f607a0c30318688c10256597cb0960c
BLAKE2b-256 978e412acf2434ec2ccdfba7dba23ad95dff0f02039ed2af0eb76883663f9e2b

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2eda3c44df236cd664e51c50bbcb2c6ac5a96c49833dfd117bac7a4f648bd736
MD5 081682dca705b8beb9d909bb571b2c29
BLAKE2b-256 d9c252f18d3c0572d93d03d295b80792f5075060afa87af6129b017ac3888d30

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 672e379c784a15ddd94467d6fb7fe77a696321b1dae376dded8992025c074cd8
MD5 9bddb9724318f7d320ae8c972da943c9
BLAKE2b-256 f0c79ea8b82ec9b3769922160a456a178d07cd8481bbddf01151a98b1b83cbea

See more details on using hashes here.

File details

Details for the file capio_calf-0.3.1-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for capio_calf-0.3.1-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ff7e500ad29d1aaff823d56f79b9f27edc48461cdbaa34333c8ace09237cac02
MD5 0ef1eeba64e8ee9a8aaf6bb836380bf5
BLAKE2b-256 6b1dc465e3041956b219f7dd8bda0ffa727d8b781a6e8c98de465d9e46d49671

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.1 This release

31 files

0.3.0

31 files

0.2.0

31 files

0.1.1

31 files

0.1.0

31 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