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 asyncio-enabled client interface:

pip install tuberd[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.1.tar.gz (48.7 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.1-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.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

tuberd-0.18.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tuberd-0.18.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (643.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

tuberd-0.18.1-cp313-cp313-macosx_11_0_arm64.whl (422.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tuberd-0.18.1-cp313-cp313-macosx_10_15_x86_64.whl (430.2 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

tuberd-0.18.1-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.1-cp312-cp312-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

tuberd-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tuberd-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (643.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

tuberd-0.18.1-cp312-cp312-macosx_11_0_arm64.whl (422.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tuberd-0.18.1-cp312-cp312-macosx_10_15_x86_64.whl (429.9 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

tuberd-0.18.1-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.1-cp311-cp311-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

tuberd-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (670.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tuberd-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (642.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

tuberd-0.18.1-cp311-cp311-macosx_11_0_arm64.whl (423.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tuberd-0.18.1-cp311-cp311-macosx_10_15_x86_64.whl (431.9 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

tuberd-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

tuberd-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tuberd-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

tuberd-0.18.1-cp310-cp310-macosx_11_0_arm64.whl (422.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tuberd-0.18.1-cp310-cp310-macosx_10_15_x86_64.whl (429.9 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

tuberd-0.18.1-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.1-cp39-cp39-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

tuberd-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tuberd-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

tuberd-0.18.1-cp39-cp39-macosx_11_0_arm64.whl (422.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tuberd-0.18.1-cp39-cp39-macosx_10_15_x86_64.whl (430.2 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: tuberd-0.18.1.tar.gz
  • Upload date:
  • Size: 48.7 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.1.tar.gz
Algorithm Hash digest
SHA256 a2e5c7b8b8cc598962860966bed3bc62073009bd1547c1ed797608531aa4558c
MD5 29bb3b94e601f19abab4ec774eeb1d1a
BLAKE2b-256 931860a47d027be16ac5c040fdaa0a69776e798a1931aa834880973eae510bd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1.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.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 963061e2da8159759f60537aea3f0292e3ff971d7bcfc4dc43cad109efd48f16
MD5 77c8a35bae37e8ea8037766af4af1cd7
BLAKE2b-256 d5b1e4e24c5aa6da40c0c9f7299ea1ae7e0bda0cf1813e2b66cc11aa7899742d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2ac238fc54306199b809dd8cf189b29d406a1dd2574ec93be16faa0725135676
MD5 d72036f191bbb55aab61f4fad4b44e8a
BLAKE2b-256 4a8a1d74e4799c4aaf8fcc395e38f5bf315c30410808e1e91c1cba61ce40d2c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36ed74e0d21a7c4b9be1f243c0ea756e70781b2bd00aec682b61890a9622a6eb
MD5 b502973df798a0acfbccb2e8657fe16d
BLAKE2b-256 24ff83e64d127207200974f4ecdac77f685a6c9e1f047727d235219ce841e0a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_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.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cc763c7834c378d6d0876c66d45bc69984b4d9b231245f240fbf9e5bd9ecfb3b
MD5 f1949e8baae9d1e6f5640e852050e0ad
BLAKE2b-256 fb83f537ed098e2901c66dbd61d2b282818b68bdfe9ea6e79cafdc8792746f87

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06ae9b4db5a4839aab9f436918eda6be3e657e39c3d627699a9bc4ffcc155224
MD5 061f911c72ee4222ed46670e0b9a72de
BLAKE2b-256 128f13523d815d5054249da81df70420b6e3bddefe1a93c01b98401bdc3d7d23

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8233acac471f01a7ceec26a8a8a369a5e232b7303a26d41241c5eaf337ddd801
MD5 7911f3e45b5092919dfe6edbf1e5d123
BLAKE2b-256 db0f2e0bdcc312eea59fba2396c328dbae0af2bf8752c105f183d1d9e7f8e94d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3816acce561c0d226f5ad71ace32e5dc1b7a5eb86512a794316bf19d62b8de0f
MD5 87ae99a2cf885dadfaba0d764c323592
BLAKE2b-256 033dde9574b30e6186fe2ed3a81caa6f748472cd09955eeca0f1c982023d32b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a765237db8da9e09c7e158a881bd10c9a7f8ce5275f7436a1b3515a24914e074
MD5 fef0d26ac2d819f66969a95fb2246173
BLAKE2b-256 aae61f89d564c5e0f5208636e5ba46675d34c0293535b051f6888b5d40bb0282

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c71d67f4c396797c9d3cfb22fe069d455c061f0bb295375172d9a94216fdc20e
MD5 c4f732d07ec3c5743029ff09c529e122
BLAKE2b-256 e111c5b929d970626a5d1c2a4637bb63175be2442bf447bfee1ed7591e728eed

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_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.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a12b668b7c9f362e18dd3e339723b66b885f9c9de39b0235bc2262807a1f26d4
MD5 bdc07a87e7563fbbc9334009d600fde3
BLAKE2b-256 ab41b2ecf6bcd566079739c0c08734a846dec9c734fd1d9505b65a11cfefd075

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 85e79c8951179bbc1a122b4b7b4ed8f318c2de04cff006310e7a447d0bf7c371
MD5 95860df5123e1f214372789e48050059
BLAKE2b-256 e160b50952a3015fca32d11ed02f216397bdac3b8b5ead5a5ae41f972f6562c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4d988ab077f52ed0b04fdf9d0feb719f57a9eba01c365a76e1de9ced1b851af2
MD5 e3ea8496342f6c91a9727caaecdc2a7d
BLAKE2b-256 cc21de7ac30e8733527d3d98734a11e6de99800d744e8b817cc3ee2bc0b9e302

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 86c1f17c1b52bda62d919f04cee47ab4c8c9c3165a1f7dff95e17de710c25edb
MD5 122aa011373703e0110cd21083939e03
BLAKE2b-256 c0633c38a9401ccc9d7ca4143592112464f5956f91c0510e3b8452531b0bf814

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6348dbf042325a94058f34ffd3b227ee7f625fb427c2f1d194b2b54394f648fb
MD5 b7fc134720d88b9320f94a2cafb8af93
BLAKE2b-256 e9ee8e0f397566c6a03d212caf9363623cbc7bd0cf634ff2a3d182187db98e3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87bbb37eaf10aceff805f764bec280b09def5a037f9f725df7a0561b53d5fdf3
MD5 0c999b294192a020e82a37df9d9ee805
BLAKE2b-256 cbb88901200b9ab5fee6abbc6373d6d0ebc5ed7cfa5d420cd77a507f0bdf7efa

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_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.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 24aea0cfff4ba8a93483748d9120ffb8316964a60e85509798e60f25221c2e7f
MD5 5239708f92e86c1821227fdc92ce2645
BLAKE2b-256 ed027509c5f9994563cbd519cf15128681346060d439dca5877b80fda6e118fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53875eb6f2ba4b3bdcd16658b5128ae73a0292959895143328d40df89e87a6c7
MD5 0dddf29859d47edc93b62d592fbbfbcc
BLAKE2b-256 5999c1d8686ce2b63144f4cf17602f69ff9da680e98cddd24d7892f8a43dc7b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e6c59ff7842ba4ffc45ee683a53e5b6025983dd70f3bac569ff2487177f24107
MD5 be9332783a350edae00ccd1af51dcd21
BLAKE2b-256 6f7bfd3ed18ddc86fe54750cdb49ebf1a7dbf41bc05980fce8f45ab56544597c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fa5ee05cc701b67dd290e26900c40d44021a68d5cebf47209881a95d5968cb3c
MD5 66712b39da70c0a63f20ec3323986dfe
BLAKE2b-256 63d3eef3aca0af2446077524b6585ebc69cb8eec205784543e36a3023858ba9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c0372658d7f3ab579f83918ef583a77bc3500279f9d97b81339bb9b2f2889d7c
MD5 70568674f80da32ca3c4d9e61c906ab3
BLAKE2b-256 7cbfb524459bbf1d6b3f0dc3cafef928a62f4e431c10b986e3c0259b726aee01

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c658549d591ecd14fc9fa7180c7d037264531a375ed7961e7592cbbafe7e727
MD5 8441a9fe2e1d9f36d2035d33be5e9812
BLAKE2b-256 ce2c22a117aeb83abab3c964081a77258b28f3fd354b3c4f372b6e46e78cb432

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_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.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fc61c594e435ec378e54552e449ca19e9f772d0e00b1bf86f0311afc3e3ea2c3
MD5 a639c86add7c24a5905d48f39b6f5ba6
BLAKE2b-256 77652f308e0c0e6839e506ee245c1b1509a78de338905dabb8958336b08351e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_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.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c23f1c64d68ccaf2fc76065d45aa564f57f7a8ae18d492904bbcbc85ca0d8aff
MD5 522a24719178e943ad061fa9e2901e0c
BLAKE2b-256 8181d5f7a125371b11d7a056e80a15c2b37642628df5617b4fae361664cddd20

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 948e517f92481376918d6e60679f23947f4c30839e995e1a5d209559df7456b2
MD5 6f6edcda75863e15fe9e62115f7fff44
BLAKE2b-256 fc3de6602402e78b6f94e6ff209ba5fe32fa8e5066d75d6b1da9b03383b08a0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f1f14a57a88aaec6e383019b9a9d1603d02adabdf835935fd4c2d50e8c6338da
MD5 10c5f3e80c88c22176115b42a60aa8f7
BLAKE2b-256 0bea43b40c4dd67c272568df60d30f9ffd51ab9dafbabafe43f96195def64537

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 237bbc47a43ef1d7b09d21975a784fe42a1b964d4d2d946db44c76b9a4d0dadd
MD5 2e8cb504ca57bd34c23870b53d1b37a3
BLAKE2b-256 6f040d5a861c1ebc1f299d08de20eb8b293febe14f4729b2ebc57e74c6d42bb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a5ec443bfffa307881581069336c365c154f60c0df5a00abe02934ce54f69e3
MD5 318fed7a074af785b0afd9dcf6862120
BLAKE2b-256 522a545b9775cf26faa20f1003d461824fc84c25bb58f6004ad2e99f3b7e515f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_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.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70fc5bfc30eaf67623b404c4994a59bfec708261a6ebf134187801ac3f675539
MD5 cbe3f453cb48b8aa63e6679d30af1d4a
BLAKE2b-256 f03ba82380efb0d8548e4f4aefd9e3e0215ab48954be5c0f2ebc76bf8797fe7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_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.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a5865cf83c69309f30896003d48fd176cc0a67e7fff0c6f92d51b6f9e8a3c65d
MD5 645122b769aa916ac568738319fc10df
BLAKE2b-256 ba776406baa299cc86b9db78bca7ba0dd654b71f250f8b81b2a49578976c3126

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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.1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e3ec745d51821bde912db3c849425fe53cddc8d85a1130d5e63305549cbcd6fc
MD5 ed24de3cb2e8ff1229a44b0e076420a6
BLAKE2b-256 42247604f89163eba54f4e1c3b5d60fe595e8a983f869b60cb7b7856cb34c384

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.1-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