Skip to main content

Serve Python (or C++) objects across a LAN using something like JSON-RPC

Project description

https://badge.fury.io/py/tuberd.svg https://github.com/gsmecher/tuberd/actions/workflows/package.yml/badge.svg

Tuber Server and Client

Tuber is a C++ server and Python client for exposing an instrumentation control plane across a network.

On a client, you can write Python code like this:

>>> some_resource.increment([1, 2, 3, 4, 5])
[2, 3, 4, 5, 6]

…and end up with a remote method call on a networked resource written in Python or (more usually) C++. The C++ implementation might look like this:

class SomeResource {
public:
    std::vector<int> increment(std::vector<int> x) {
        std::ranges::for_each(x, [](int &n) { n++; });
        return x;
    };
};

On the client side, Python needs to know where to find the server. On the server side, the C++ code must be registered with pybind11 (just as any other pybind11 code) and the tuber server. Other than that, however, there is no ceremony and no boilerplate.

Its main features and design principles are:

  • Pythonic call styles, including *args, **kwargs, and DocStrings.

  • JSON and CBOR support for efficient and friendly serialization of return values.

  • “Less-is-more” approach to code. For example, Tuber uses pybind11 and C++ as a shim between C and Python, because the combination gives us the shortest and most expressive way to produce the results we want. It pairs excellently with orjson (as a JSON interface) or cbor2 (as a CBOR interface), which efficiently serialize (for example) NumPy arrays created in C++ across the network.

  • Schema-less RPC using standard-ish protocols (HTTP 1.1, JSON, CBOR, and something like JSON-RPC). Avoiding a schema allows server and client code to be independently and seamlessly up- and downgraded, with differences between exposed APIs only visible at the sites where RPC calls are made.

  • A mature, quick-ish, third-party, low-overhead, low-prerequisite embedded webserver. Tuber uses libhttpserver, which in turn, is a C++ wrapper around the well-established libmicrohttpd. We use the thread-per-connection configuration because a single keep-alive connection with a single client is the expected “hot path”; C10K-style server architectures wouldn’t be better.

  • High performance when communicating with RPC endpoints, using:

    • HTTP/1.1 Keep-Alive to avoid single-connection-per-request overhead. See this Wikipedia page for details.

    • A call API that (optionally) allows multiple RPC calls to be combined and dispatched together.

    • Client-side caches for remote properties (server-side constants)

    • Python 3.x’s aiohttp/asyncio libraries to asynchronously dispatch across multiple endpoints (e.g. multiple boards in a crate, each of which is an independent Tuber endpoint.)

  • A friendly interactive experience using Jupyter/IPython-style REPL environments. Tuber servers export metadata that can be used to provide DocStrings and tab-completion for RPC resources.

  • The ability to serve a web-based UI using static JavaScript, CSS, and HTML.

Anti-goals of this Tuber server include the following:

  • No authentication/encryption is used. For now, network security is strictly out-of-scope. (Yes, it feels naïve to write this in 2022.)

  • The additional complexity of HTTP/2 and HTTP/3 protocols are not justified. HTTP/1.1 keep-alive obviates much of the performance gains promised by connection multiplexing.

  • The performance gains possible using a binary RPC protocol do not justify the loss of a human-readable, browser-accessible JSON protocol.

  • The use of newer, better languages than C++ (server side) or Python (client side). The instruments Tuber targets are likely to be a polyglot stew, and I am mindful that every additional language or runtime reduces the project’s accessibility to newcomers. Perhaps pybind11 will be eclipsed by something in Rust one day - for now, the ability to make casual cross-language calls is essential to keeping Tuber small. (Exception: the orjson JSON library is a wonderful complement to tuber and I recommend using them together!)

Although the Tuber server hosts an embedded Python interpreter and can expose embedded resources coded in ordinary Python, it is intended to expose C/C++ code. The Python interpeter provides a convenient, Pythonic approach to attribute and method lookup and dispatch without the overhead of a fully interpreted embedded runtime.

Tuber is licensed using the 3-clause BSD license (BSD-3-Clause). This software is intended to be useful, and its licensing is intended to be pragmatic. If licensing is a stumbling block for you, please contact me at gsmecher@threespeedlogic.com.

Installation

Pre-built wheels for Linux and macOS operating systems are available on PyPI for CPython 3.8+:

pip install tuberd

Building from source requires the libmicrohttpd and libhttpserver dependencies. To simplify the build process, the wheels/install_deps.sh script can be used to build all the dependencies locally and compile against them. In this instance, cmake should be able to discover the appropriate paths for all dependencies. Use the BUILD_DEPS cmake argument to trigger this build with pip:

CMAKE_ARGS="-DBUILD_DEPS=yes" pip install tuberd

If you prefer to build the dependencies manually, to ensure that cmake can find the libhttpserver library, you may need to add the path where the FindLibHttpServer.cmake file is installed to the CMAKE_MODULE_PATH option, for example:

CMAKE_ARGS="-DCMAKE_MODULE_PATH=/usr/local/share/cmake/Modules" pip install tuberd

Optional dependencies may be installed to enable alternative encoding schemes (cbor, orjson) with and without numpy support, or the standard or asyncio-enabled client interface:

pip install tuberd[client,async,cbor,numpy,orjson]

To run the test suite, install the development dependencies:

pip install tuberd[dev]

Client Installation

The above tuberd package includes both the server and client components. If you require just the python components to run the client interface, pre-built wheels of the client code are available on PyPI for Python 3.

pip install tuber-client

To include the dependencies for the asyncio-enabled interface and/or cbor encoding with or without numpy support:

pip install tuber-client[async,cbor,numpy]

Benchmarking

With concurrency 1 and keep-alive enabled, a 1M request benchmark can be generated as follows:

$ sudo apt-get install apache2-utils
$ echo '{ "object":"Wrapper", "method":"increment", "args":[[
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10,
     1,2,3,4,5,6,7,8,9,10 ]]}' > benchmark.json
$ for n in `seq 100`
  do
      ab -q -k -n 10000 -c 1 -p benchmark.json -T application/json http://localhost:8080/tuber
  done | awk '
     BEGIN { delete A }
     /Time taken/ { A[length(A)+1] = $5; }
     END { printf("x = [ "); for(i in A) printf(A[i] ", "); print "];" }'

These results are formatted suitably for the following Python snippet:

import matplotlib.pyplot as plt
plt.hist(x)
plt.legend()
plt.grid(True)
plt.savefig('histogram.png')

Project details


Download files

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

Source Distribution

tuberd-0.18.3.tar.gz (49.9 kB view details)

Uploaded Source

Built Distributions

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

tuberd-0.18.3-cp314-cp314-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tuberd-0.18.3-cp314-cp314-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

tuberd-0.18.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (611.1 kB view details)

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

tuberd-0.18.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (578.7 kB view details)

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

tuberd-0.18.3-cp314-cp314-macosx_11_0_arm64.whl (452.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tuberd-0.18.3-cp314-cp314-macosx_10_15_x86_64.whl (459.2 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tuberd-0.18.3-cp313-cp313-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tuberd-0.18.3-cp313-cp313-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

tuberd-0.18.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (611.2 kB view details)

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

tuberd-0.18.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (578.8 kB view details)

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

tuberd-0.18.3-cp313-cp313-macosx_11_0_arm64.whl (453.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tuberd-0.18.3-cp313-cp313-macosx_10_15_x86_64.whl (459.2 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

tuberd-0.18.3-cp312-cp312-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tuberd-0.18.3-cp312-cp312-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

tuberd-0.18.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (611.1 kB view details)

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

tuberd-0.18.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (578.6 kB view details)

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

tuberd-0.18.3-cp312-cp312-macosx_11_0_arm64.whl (452.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tuberd-0.18.3-cp312-cp312-macosx_10_15_x86_64.whl (459.0 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

tuberd-0.18.3-cp311-cp311-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tuberd-0.18.3-cp311-cp311-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

tuberd-0.18.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (609.0 kB view details)

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

tuberd-0.18.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (576.2 kB view details)

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

tuberd-0.18.3-cp311-cp311-macosx_11_0_arm64.whl (450.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tuberd-0.18.3-cp311-cp311-macosx_10_15_x86_64.whl (456.4 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

tuberd-0.18.3-cp310-cp310-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tuberd-0.18.3-cp310-cp310-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

tuberd-0.18.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (606.9 kB view details)

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

tuberd-0.18.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (573.8 kB view details)

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

tuberd-0.18.3-cp310-cp310-macosx_11_0_arm64.whl (448.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tuberd-0.18.3-cp310-cp310-macosx_10_15_x86_64.whl (454.4 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

tuberd-0.18.3-cp39-cp39-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tuberd-0.18.3-cp39-cp39-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

tuberd-0.18.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (607.1 kB view details)

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

tuberd-0.18.3-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (574.2 kB view details)

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

tuberd-0.18.3-cp39-cp39-macosx_11_0_arm64.whl (448.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tuberd-0.18.3-cp39-cp39-macosx_10_15_x86_64.whl (454.6 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

Details for the file tuberd-0.18.3.tar.gz.

File metadata

  • Download URL: tuberd-0.18.3.tar.gz
  • Upload date:
  • Size: 49.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for tuberd-0.18.3.tar.gz
Algorithm Hash digest
SHA256 5885770b361cd3c540d3559e6faad46672ff7615bc93c6adc0c0154a86f426ff
MD5 be10ad2187bd1903877f1797df4b37c3
BLAKE2b-256 d5afe9442774adac40f038857b799373cb0769938b84f84f54ed893c8a0c557a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3.tar.gz:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 009b492cf01646dfd2cc6c0a54cb68f122276e81c9e5cce51e95810ed7db3049
MD5 2b1b71982cbf5e340bcb83fa93a4d01a
BLAKE2b-256 962f4889e7225cb3f13e8ad1f770925d7d7fc52b793b801672c5558d2576bfc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6c35d9f54b8f2862de731d9f296207be76148557afdf4a0c91249b5362817cd0
MD5 b59965024ca5be8e2357c3d2aaed7132
BLAKE2b-256 2432efbe3fd280c077153e999da2ba836f34e7c55e3325bc16de71a6ae1a4e17

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 458beca3ba9bcfaedb09e8e708cf797a9e165354226626897d6639db172f79c7
MD5 9b03d6872c6bfdcff97c3be3634416af
BLAKE2b-256 60dec2f6174ba489505139c511615968dc758d0a9cb626e1c3285bd175a5ddb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 59a3fb96594bfba91408420be4530e66e0658ad9a8afc9238c69eb23e1e85dd9
MD5 98ff5de97ee3fbbcc444274664c1e82e
BLAKE2b-256 706a334f9f462b02e68dc78c0c78eee3d8aa8c93b2f2864db79b9eb743256be0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7960c64e2cce34d1fb0aab8541916e61c2c6bf4e0dfff51b85fe7b453e564f0a
MD5 82b66b97f413f5102284933cc936eaeb
BLAKE2b-256 85b2c84a962ddf21918c4348bb6e010706d1d8c9c996569681d19fb8107c8b2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e58cf003d9025cf73dacfeb9e3fdf5df1d40c2fde39b2e19c24d6dffb0be1554
MD5 ab0e8dcd17f52b816aa0fb8add939076
BLAKE2b-256 a076837006f79754e8176c6f58817b178a6e1855964b2e9450ffefe830e5c0ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1970d2d7b6b3063e4e3ebf13c8b07ccd17c719876d0e875163b34f623d66270b
MD5 aafa8775c362674b047bb052bdb08689
BLAKE2b-256 d03aa9d71a2c4a7f20ad06a2102119d26a310a6fd123c466dd79cc49f5db0713

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e202cf237239709d94b676cb07753f703d25f96aaa4dcb27492aec10ea1fbe5e
MD5 4da24ee1e2794b49778e8cceeb5469f8
BLAKE2b-256 59048b938e9ec687bf370745bfd637fb4e31d3b9c4ecdb2e3a7e513a939deecd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eba64a48b9bf292379496b2bfc71fe9ca5f999b28c895f385d0d8adc1280b0b5
MD5 cdc6a7ff2bd514ae0670e0e8d33ccfed
BLAKE2b-256 622dc747522596db2cf198bdbebf6dce964cebe42f7ab2ddf12fe7719236c2a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 239a12d294f33df3065090965a4d7b8b13686c2f33f2dfc7ac6044b8bd0c7d8b
MD5 e27a017d0ddd9705e45316ec101767ff
BLAKE2b-256 af5116617356902b59c017c40c303f8ff740e89dbca243ce0b8e0a267feaa126

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d46e8dea68c0e30cb2150cdf85946bd09a13bfde67b0e87de059bb7976f3e7ee
MD5 2e2074b3a624ebaf2210bb5dc947eee0
BLAKE2b-256 23e217a6ffceda5d198e212ff8f4cc59fd0d3232b8f5718b9969dd33ac3c9db9

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3258a9559d28e970affec215dc90607e8e876c14ec3f55cedb0ba425b0e4ca6e
MD5 9bae86825d5efedccbd0018e6385ea91
BLAKE2b-256 f8607704fedbf3eb364282a4d9cc75253e4d825e5170acd746fd495dbf0b2deb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp313-cp313-macosx_10_15_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e72143456935d9ba591aeaf220e181b1f482d1cb721c89a377d0c1fe4fef2d1a
MD5 c3dd59c59a3becee6ad2f6bb924663b4
BLAKE2b-256 215a238c1e72550fa67b0189d4ece254b153829ffc0a23a56992b04c773b035a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c8e8b5985f8fbb6a9c3cc1235ed3a9e4e01af1719646eb667e190acc790f7d9a
MD5 ffff2a56ae7e571b20e7101d3a585caf
BLAKE2b-256 cf4e12ef26f122e45928612e34d77c2cd56edb63682baf005b149aaea80eb484

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0c38d021662d4582de12389ec3ddf99d96c00a0a288c81450e6ad8b55948d0ad
MD5 bbff55d72226cbffe8264c574803a6e2
BLAKE2b-256 e6448f0466299cbda6c69fccd9c6eb63ecfa7de7b45524053f1c4bb430f058c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 edb1cb1fed286000188e01a07d2ef37ef27dad325ea0648ad72a808a60ba55b9
MD5 822690bb9366cc2e1064d4709ec4202c
BLAKE2b-256 ac17d73b799effc082fe88ca0f254f5cf780a978bf3df1cf634ff3ba8fb2f4ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0dc60ec91ec03090223f75d56d1e4aaf305e052fc9cdf4151c2d8b4b62a13c70
MD5 52790b537079c35eb8adf08652880116
BLAKE2b-256 85579fbe3b8c527f6f9b6a7a248f6efe54c96713569d55ee42b74859787dd685

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1c6b74bc06952f65ac863694a98cfb3250087626f98dad582d107059ac9d2d78
MD5 ed80658b8de97eb1790bf765d1dde540
BLAKE2b-256 c57b3ff9e0d9ab32de98a6cd7fc03d9fdbc5d5e9f78604798bac830c1bcb85f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 595408d7b34dd210169d27c07bce3c94d8dc66caa68d0eca8f7f0a89d7e4594a
MD5 26fb7bfefe7071099f207842a8a88939
BLAKE2b-256 244709d609583acf579344454ebee88d841c054354dda731d50eafbf03b7c061

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1ca8fe68471fa6805aca6c4a44c5cfe0eaa310f699411171b7c270ac2e7c94c0
MD5 b35a0fce10bac237032771870fd2667b
BLAKE2b-256 57f15d2c7820d182f5c9aaf84d6c75d0df251dd73dbbec88fedc657388eb1879

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb068c8f71b0fedda0c173faae915177aabb62388b0261191f3625c5845b88e1
MD5 aaeae9ec75d4ad985d7a0c3d77c23078
BLAKE2b-256 443cf0715517e02084ae8230c3e49bcb108bcd8eddf5a1e5771754e918276c02

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a7f46205fd6fabe2c0b6f7b73978f4f55b18b56a117258f604a4ce2146f4680a
MD5 d6e3a18b15f7bfff71d516c6e67d95f1
BLAKE2b-256 eb9f82a48474c8ff207bba7882ca28687abc20416274e21051a39432c4b7e193

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81443c6123a5026c205e4216e878b2c9ab05941e39836a63bf9b6676013e7115
MD5 1095990c321b6eb13047f5ae583603bf
BLAKE2b-256 cd38c35a6ae396a90b0a418c978d3235b830a8321e57c35624a463b84bff5258

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 edfc1ce93a89bf8c1a22a965ed7d2bdf921456c2bfb9e1fa59bab6324a62ae1d
MD5 3061218755d26cc7fa0cc4368d965262
BLAKE2b-256 5e69fe6a37a3b414bcc752370372ff8d2b582bc86b999d0b4de451eecf3f14e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8d58de619b386ca773150f8f7afe57ce575c035d89888e45f6f4509c436472c1
MD5 9fb3a00069f640e3bbc8ee03c226cc10
BLAKE2b-256 0eb6d43336ba0ab54afffcdc4050f7cada8ffc886afd0faabde6f379497c21ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c96008539454ffa404afb85befdc340a1b5006a5fe49468968a4cf31fc3948ea
MD5 50988d30bb3937b3651007b6739dd4d0
BLAKE2b-256 e0eb666d2151ba497b8b8171b4e988136b1282b42c775e2a7f15cbe2815efc53

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cdd80a9c69034d57a9c4ce239e40ee42cdf7fc297794f56b0c7223c8a28f038e
MD5 ef9b31736b5b9461add456b0555045d3
BLAKE2b-256 5c75d34e8e3a890fc5a8fa35087b77214a7118ec1f671d90f136524f5081b58f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54e862d293f6c4d8c1afd17b958dbcbef36cbe30e4dc943e3d87e7186461e63b
MD5 d3b79af353f373cd315e78954ab075b0
BLAKE2b-256 2347532023f2c48a350c1729ff3d58965ea76d7da2f210fb03d39ba48ee2e3ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cf5d1359d608154157a6833e6e746842756348bef58830ddd0be7f3cfcbdca3
MD5 e20063549066974297180a06b1951a53
BLAKE2b-256 aa52ebbeb5447ec4d88f3622d194687719fafe2001e671d0a1a74d21ce4b3716

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2cacda4a30935afdfdb77e3fb6924788630059b6a7e1c0791dce7e833db67c75
MD5 5b40cb97f8dba0203c1895c335aeb827
BLAKE2b-256 47de723a24026be46c18ea53e8d1e8da80ad0c4642a944d0e992d2de06ea8ead

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f8bfe1fd23c32afc776dbf65e6c689ef82c8954c9fbd47843ba9e052dd246e21
MD5 9d5fbcc4fc9ba285b7c76dd035f5d38a
BLAKE2b-256 c575ad724ea41a2354132f28bad05363c3835cd5d5133e4e91366c85916eb090

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4b59888db89f44dd9b46c7e2cf7718799937318a7409e7f386f852bdcdbc714e
MD5 04df343bb9fe7e487464ec17a8d4c48c
BLAKE2b-256 9a96241597bbc9984d61a325cb8402615771d6d4239139266c97ed3f8aac895b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a62d7824678fa70814ed041e4b06c1d798cf385189e08498338224ab9277f440
MD5 97bf508accc9fcb1f9423ee84e9ca579
BLAKE2b-256 2264252f4546d6da96dd71f760c92aa7a9a658ffece63582cdaf0f98a1234d6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eb8f5aeeacf268f3dc4faaed65aca51b70edf0433fa8fb7288f07dfe7efffe2b
MD5 d3ce3b171a490d04156d458f894cc55d
BLAKE2b-256 a31e508447bf4579033e90e6fb265b2ae470437ae58280447181dbb7cc9f02d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 252ef68559b1d74322604bf97d91b8e20d696c676ea8b8f9cf656be94be3a5ce
MD5 d5d67986eaffb93b7c5c9cd693a1420c
BLAKE2b-256 77d411dc3df54c8e0009a5b176cbc3f9a0edf58c7168bacbf1c8b3c68847876f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuberd-0.18.3-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 59226169a7e9302c7f5dae702146bbf9ef4121126daff122ecc17a87fde62359
MD5 5453c0255afca539163838028ef6ada0
BLAKE2b-256 1c4c6f74dade38d0ead0a82b3ff68068f5ebe925859b0947b7d6977d1ad13f81

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.3-cp39-cp39-macosx_10_15_x86_64.whl:

Publisher: package.yml on gsmecher/tuberd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page