Skip to main content
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')

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.5.tar.gz (57.8 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.5-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.5-cp314-cp314-musllinux_1_2_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

tuberd-0.18.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (644.0 kB view details)

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

tuberd-0.18.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (607.8 kB view details)

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

tuberd-0.18.5-cp314-cp314-macosx_11_0_arm64.whl (481.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tuberd-0.18.5-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.5-cp313-cp313-musllinux_1_2_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

tuberd-0.18.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (644.2 kB view details)

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

tuberd-0.18.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (607.9 kB view details)

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

tuberd-0.18.5-cp313-cp313-macosx_11_0_arm64.whl (481.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tuberd-0.18.5-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.5-cp312-cp312-musllinux_1_2_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

tuberd-0.18.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (643.9 kB view details)

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

tuberd-0.18.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (607.7 kB view details)

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

tuberd-0.18.5-cp312-cp312-macosx_11_0_arm64.whl (481.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tuberd-0.18.5-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.5-cp311-cp311-musllinux_1_2_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

tuberd-0.18.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (642.2 kB view details)

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

tuberd-0.18.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (605.7 kB view details)

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

tuberd-0.18.5-cp311-cp311-macosx_11_0_arm64.whl (478.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tuberd-0.18.5-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.5-cp310-cp310-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

tuberd-0.18.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (641.2 kB view details)

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

tuberd-0.18.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (604.7 kB view details)

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

tuberd-0.18.5-cp310-cp310-macosx_11_0_arm64.whl (477.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

tuberd-0.18.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (641.5 kB view details)

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

tuberd-0.18.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (604.8 kB view details)

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

tuberd-0.18.5-cp39-cp39-macosx_11_0_arm64.whl (478.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tuberd-0.18.5.tar.gz
  • Upload date:
  • Size: 57.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tuberd-0.18.5.tar.gz
Algorithm Hash digest
SHA256 9be72bc32124aea51c005bfa8ed85f739220316934ecfddc6fadf65d3c40a62d
MD5 d50d83f7a28d19cf6d814eb46cf27754
BLAKE2b-256 3f7496b392fef987e54985f6dc316ea3bf917cd678252ac1591d585a3dee386c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5.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.5-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 39cc62b69018c82672e70aa4259166d9ec7c63de2afe4029d090f28f450a4c83
MD5 548a36e5fcedbc3c775647c1052805d3
BLAKE2b-256 5450b6df8f1b8ad2a214652a8f214eb54b7fc72e6ea1c53087328a0228eef937

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a70805d3a7090513e1767ff62f36814d1527b5c3fcf1c0f37fad5862a9f8dad8
MD5 f55f341f0fee8c6c8d380795bb58bdc0
BLAKE2b-256 63886c39ee51294cac6ba3bc75a65d84abc64813587af23289f2dcbe5c3dd981

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6cbb8fa69b8377ce669dd0ef9006ca3a16397fd1946e83c1816c949c4b32b624
MD5 2dfa50639825a6bf784e388971bf57ce
BLAKE2b-256 539b5e100b592e117f790a23363f7a12c18fa9299521a617e4a3511c08218c80

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56a3998662fce13c0dce88bb51b66a9056866394b0eeedcad2369272fa4be05c
MD5 31c852a8f4096a0a00d8be4f27495a0a
BLAKE2b-256 7b809a51cc77c187e900791e2b08334765e690347bcafc9942ffb46150b407d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 431c965124a72a9cf9a8fb3de6dbe0267e0ac55c4facbdb0bc847379bc0e8382
MD5 b4dcf1e4967e5938d9fda304c2453d5d
BLAKE2b-256 d6a2b6f113a14e545c18907c135b62ee785f956a5736280639e5ce0ad0022a9c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd5c0f2b98a79d22ec5fd20fecd35c4ecb3d3f6cf95559e9c7733e4dceb3c943
MD5 2c18ca15c8c5fb918e787f04714cfb49
BLAKE2b-256 069d3d12ed62101feae1730c76caadcf61d8dfe354a37a93f8297b0f6f4b7a7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4fbc4a1bd934924ddb9c2b5d17c35b3cc4b548bf352accbf14f07904dad77003
MD5 89a9a68431bfdabcb447ef99556400cd
BLAKE2b-256 6ddd185a0f20b33ea191c082e5e96575d3f267c88d9af7232ddee3224555ee9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb02af194d3ff32844285103525faf740015895cd039f15ee9ca14d1f88f3cc9
MD5 6630ab84e124bcc9b6fa1aab1d99e50b
BLAKE2b-256 d4fb0e9703d15579f656147279201df54e5ef7d11055389decbcb22b61e9af31

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c6bee718781b494bdf01dabec1a53d14bf249ca4c9068dfa99fd3fd6137c0abf
MD5 94b35dc1108f5e218fbb0e6fb13453e3
BLAKE2b-256 e29fd56796da3a47ebbca1fe9aed8eeaa86b2019f013cdeba0d9ff7a87fabb24

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36bd70b667fbc45ff260c0a2df792d840dfb32a6b061547d524f05cb71ab3023
MD5 fac4b8f96ef5a49cfbaee4e34a82df05
BLAKE2b-256 0c01226052aab9f9548200426935443230cdf67d4bf14f05d199c0062326e9c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 77d64cb0211e74ede1542489646f0f653acddb9361a688c64e3c58a14430a6c0
MD5 8323a1ed7f2502200b39e3d6e37fe15f
BLAKE2b-256 6818c6fd2278a2c4049a343427703b52c053ee87cc89bd756ff55ef5422b4342

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1213cf5eea10c5bbff65a3197e0955df5dbeb9c4e709caf14c9d0a49cbc8821f
MD5 2f953c8d2a56cd2a3900241fbb9be045
BLAKE2b-256 2c60326e434ff9f4caccc1a74a3f30c0ed42d0af0adfe5967fd3da7c9ca92266

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e96aebf34a2acd7ccdbe494e563f4744b837a2104c6b5718bca6cf7141dba0a
MD5 0ae0af548aa10ab2a7625223fdbc7285
BLAKE2b-256 f7e0ad99e410cb3301bcf65a5ca276d7623ec505ea190bb0e5788bca7ada89fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9a3189270eb98f79c92f4c0d8116edff0fb9e58971e7d7a31ace52e83e21f04f
MD5 a22ed3ff8f32d0ed65434fecfd85c5b0
BLAKE2b-256 a779668dbb6ddc47de57eeee1ce77e8e3a8fda8ba44cde5c1177fbe884dc1484

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c908af3b01477dc3e2f26714ba363f1df261636d1bf629d89bfa89fefa03090f
MD5 5451f35467b22405854da46328428da2
BLAKE2b-256 917caf84e27c12c0149099821d36ea2e32e946b4da9f16f8debb4551e12ba799

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1af3c8be89fec53f4ee7b90a9c42a396465ef60edee6f144a2bb9d6e9640c1c0
MD5 ba748c0e692c197024ac3228315b1d28
BLAKE2b-256 0b8f2aef39cf3b43c3ff3435fa79d8c0645c97dd4ae0613677bb8e868dec7d32

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 26eca29e02f19fb495cddc3becd2fa3cc86ce9c651f73cf6e9e9cb884cb9e154
MD5 4c55db814dfde3865b3b19006b40d2c5
BLAKE2b-256 e702ddce53a314034970531161aae309bd48e1149e19b7b83dbe291f1a6a9066

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ac992e21ccb273be6c1150ac06152ac78c1ba7a211b95f8ba1b3cdaa3732a556
MD5 a242dfa100ec6316a5c859eca1da02d3
BLAKE2b-256 d75898a3e2a9cd9e6c91d9dfd9e70b8cde174f1359fe1452471ecbc33dd3454d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1009d4d025c75478d8a6107f54e442581ec0a48efe1653fc79cda62f753ae7f8
MD5 887842a6cf84c393e15048112e98189d
BLAKE2b-256 b89c153d02dd9f9534ab20a26e00a4e658bfffd71485ff665cc25125592e0a66

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e355c0a7acd98fc294a140988348e2183b6795cab74f72fd7f617ad837ff7bc
MD5 5adc0f202c8c6420bbc5f607ab9e1336
BLAKE2b-256 4558a257f707ce5e31e0c73429b7cc7c52ea75cda030adaef21d140dc7eca736

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 38052111ca7003b273080cebe6b494ce949b55804a7a15d36853961a0ced9407
MD5 e7475b92ee7da8c083211030ebca50bc
BLAKE2b-256 6ca5969c9043fef424dc3cf7f5d37993033adbe64783bff2c077f72e4c5b1acd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a9bf13780148e573a99b578b693abb490513e6fe52766d013e0ba7e404381cff
MD5 a306af33e1eb3eeae3d26c79f43ff910
BLAKE2b-256 c2805515900808422068553c9bf1a2683cfe2fa270a06de11dfde528d9ecd721

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc57465214ec327c58d1365ac00904c3f75feb3b93dd769dfa003fdb434e9fbd
MD5 cc2557356532d59327a16d7a7e850ccb
BLAKE2b-256 a8e10c1979f93a8b6b261f0665c16f6f0dc0d313352475c332c12803b95d4709

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 edf3e365278b6949b33835815e41ce2310578a73f5dccc410a5e00a899304dd6
MD5 21b88132db4a448d2093e9e633390f79
BLAKE2b-256 5131f5d9ea1062801ac5e880f05d887a363ed30bf4d1f447ee47145f395f9047

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6bbfb642d260e415c608b433c59e10b199db173022cb9e5dc54c4ac71c4b1185
MD5 6d228be8c2516a59a9110abeada60465
BLAKE2b-256 2ed9f56e89ffe3c83b6d6333fe916b666eb447fe84285535c78088ebf261131e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bc122994ff3edc7883ced2d26157287c431ab4324cba5dbfe4186ccfb7f9f359
MD5 7d0719bee28f4b6e7c04ed0cfe5dd6cf
BLAKE2b-256 ae3cc4302baa24cb09ddcf93f46a377c0fd332f749e84c160033c70af49d7b06

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.5-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 28f7412c10b4ab69fdbd06ee22a09cce463d2ef962ba6148b4a216ea11b33512
MD5 2fbb3e84cd85855f002051bb973c102f
BLAKE2b-256 a524a2b7a286215c8906f5c424d6d49dd3c82c0cd6b794090b26a85706bcabba

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39f11e74571ff978369a4c93e5be50b2b467fcef16e9ee09ecd177cc0fb994c0
MD5 711e2b3508de940e037d639443272cfa
BLAKE2b-256 d4f4eb156d88535486614287f5be319daa5396e1aec804637d9ea3da54c618c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 91664fb07c0e9ac188750285b8f5227029335bae339d76f2deb1b06414341da4
MD5 dfd7f3cd46344de9ebeceb97be5987e3
BLAKE2b-256 a07454b2cfc4cc5fea46674dee33042673947bcdbd6b15cb736fc501205c2efb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.18.5-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.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tuberd-0.18.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1e570f9d1473d4180f0f7ee1a9003c561f27610efdd022ea5f08263af0212c7
MD5 abd5162a42940ce1f835f51f856de300
BLAKE2b-256 8054cec44e9f8447912109e0639f90582c6bcac858f7e865e279ba1c3636f5de

See more details on using hashes here.

Provenance

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

Release history Release notifications | RSS feed

This release

0.18.5 This release

31 files

0.18.4

31 files

0.18.3

37 files

0.18.2

31 files

0.18.1

31 files

0.18

31 files

0.17

36 files

0.16

36 files

0.15

15 files

0.14

15 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