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.17.tar.gz (46.3 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.17-cp313-cp313-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tuberd-0.17-cp313-cp313-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

tuberd-0.17-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (670.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tuberd-0.17-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (642.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

tuberd-0.17-cp313-cp313-macosx_11_0_arm64.whl (420.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tuberd-0.17-cp313-cp313-macosx_10_15_x86_64.whl (428.8 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

tuberd-0.17-cp312-cp312-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tuberd-0.17-cp312-cp312-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

tuberd-0.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (669.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tuberd-0.17-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (642.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

tuberd-0.17-cp312-cp312-macosx_11_0_arm64.whl (420.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tuberd-0.17-cp312-cp312-macosx_10_15_x86_64.whl (428.5 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

tuberd-0.17-cp311-cp311-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tuberd-0.17-cp311-cp311-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

tuberd-0.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (668.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tuberd-0.17-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

tuberd-0.17-cp311-cp311-macosx_11_0_arm64.whl (422.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tuberd-0.17-cp311-cp311-macosx_10_15_x86_64.whl (430.5 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tuberd-0.17-cp310-cp310-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

tuberd-0.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (665.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tuberd-0.17-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (638.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

tuberd-0.17-cp310-cp310-macosx_11_0_arm64.whl (420.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tuberd-0.17-cp310-cp310-macosx_10_15_x86_64.whl (428.5 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

tuberd-0.17-cp39-cp39-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tuberd-0.17-cp39-cp39-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

tuberd-0.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (666.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tuberd-0.17-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (639.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

tuberd-0.17-cp39-cp39-macosx_11_0_arm64.whl (420.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tuberd-0.17-cp39-cp39-macosx_10_15_x86_64.whl (428.8 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

tuberd-0.17-cp38-cp38-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

tuberd-0.17-cp38-cp38-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

tuberd-0.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (665.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

tuberd-0.17-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (638.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

tuberd-0.17-cp38-cp38-macosx_10_15_x86_64.whl (428.9 kB view details)

Uploaded CPython 3.8macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: tuberd-0.17.tar.gz
  • Upload date:
  • Size: 46.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for tuberd-0.17.tar.gz
Algorithm Hash digest
SHA256 acec4b99b24bd318286e28db8d4145a0d074f36ace7cc8252f2f7ce51f45ba6c
MD5 b8787c1b3b803d5e73bbbb907caf2fb0
BLAKE2b-256 ca3d450301499e9538979d930fb27f149f077f737076b590b09d9f1e0b119be4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1fb4f713150904ea192f268dc7c94651d004ef3ff8691ca8087755244847d09d
MD5 e383e1ef9c6825e2991114037556ac0c
BLAKE2b-256 2a37a30b505fffcf5fca8456d2390714efaf27e9fe1f5602a355cb0f3cc54948

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 066823723b1754809dd3fb664335541f1591660cf712fd6e20cfbe89d5a8f3e5
MD5 15d85a451bd88c43b64046cd337acb80
BLAKE2b-256 ea57562ac08666ee634d6651ace63a1b442b12784b26ba1641c430c835499466

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 474199a57f8eff1dc0ae71ab14ecbb3fe34df40280dcbd76d469a044697a534f
MD5 58b4650f2ce193773ba16d0034139936
BLAKE2b-256 ca62ff49271ca653c8daa0238de2567def3d142370ab7694eeeac87610a86497

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-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.17-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 587ba9de06fa81557340111ecc03695f7fb4fc64a25af6906db7a6349b00aba2
MD5 cc49782e943b18f9d3652b90e39a46b9
BLAKE2b-256 c5ed35b06b94991d517baba6ad53066fcdfc8d700573079018ab272aed84f4b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54d0144af9c32b7ca47cd89864e98721d36b61de33244359d3f2a4d600ae1eeb
MD5 c8e7050215e6cc63fd4daa1aad4550d2
BLAKE2b-256 8e3a40040ba0e3f92c686d41a459119e902d7635d705b0bfbd57d647c0c1f589

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 374a0bd18e9755ee43f37e72258d9a1bfa01b3946c02f74fd6cc07be71952b45
MD5 b963e49896f3139dd83f539cbf364cf0
BLAKE2b-256 8fc8b90c0265335d79e82f416b62c35d08f163d878a20788b267bffd3fff9efa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ea3bb11113f2dd6828df183ad746d730994b50d2639100348802143bdb6604ce
MD5 f6175da679f32f1cb7577e46ac841a3d
BLAKE2b-256 b389ca094580f78cbde3380beddd9de671360de32b146acf09c4f8d45fee6989

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6c6057e450e6a4c40a4b2f19f30f81b1431a5fdcf8de196cdad1f1723e863537
MD5 0d69b8c64f430839bc05058230171e9d
BLAKE2b-256 d8a1a7cc0c4564b330cf94c310a4406bda747081abb4e2a53b8c916226e530a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69527bfe4b87def22e4f95f1e8f2e5677a193fb3f1ca6b821ce18448703b339d
MD5 07f705c990237317328873af6732dd4f
BLAKE2b-256 bacbaf3fe9a78ea0c56d82167357b0217179e9f4652b0d95f8b88038aa00717d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-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.17-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f34a7a35772477093cb60cc736793c45eded254e7624aa8f2bc91caa436a1656
MD5 89fa2dbf656bae47744d43b3e4d9d6db
BLAKE2b-256 0ce3ef1a180a50ec4a4a40ff6f711a60558cc370c5cdda86accaf0514541df88

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f87b3756baeabf67a9b2e1cd909bc7f75a8815c335d4365fec5e4f33799a624
MD5 487972e9a9646ebbffe25b67ac4f7d35
BLAKE2b-256 9a3bba49ea28dfb0f1dd14aa852e18e67ba7b299076eb9b4301c44a38c234be1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8c124430c5dcebd9a340cedd49cf8afc9078589d5251695a1f9db65277a7acb3
MD5 71c998da13d9f1a3697fdeff3ff63009
BLAKE2b-256 ac0adbcddaa1afba99671ad30c2837afd7ea584ee7ffcc37e4e41ca5c01fb66b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f561eda6ae6bb7fa7bd82f469f66eb79d99e90d80983c69f5361f223f020366c
MD5 6fb2c4162f2b42ac7bf8e791913372bc
BLAKE2b-256 b152c2a532a87bd9e9345ac3f602acb064184ffb896f8eb2becfb82503cc2e38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 09bc1b22d38c932354b6241c8205eb2f5bbefd7e5ef4cb1b8f6e7ee501667f56
MD5 87f3be0983e5b3445487a152a0a82965
BLAKE2b-256 fed126e2ea6b1f4683342f92e983f1c95d95efc4679485a403b764aca8eb6813

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 040edbd5b6add4924813e8b2691dade448c73c788090e6ff526a90bdb4d1141c
MD5 a61bcbd017a5b040bbf803c8859d7d9d
BLAKE2b-256 a72a720d01e906beab5b834bcbc82962049c56dba2449d95806480fc726d95c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-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.17-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ca51b62c65c4dc2db976e1fb2b7d47893acf93855d20fc4439c8c620776ab7ea
MD5 1356508938b20ae66125d07d96e6289a
BLAKE2b-256 c96bebba3259044ed4f2f7ab7ff51e0e8bd0b094d5736141ecfe73abfe1f62ae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08f7bc46b8212672ade7210c5b954dc1afaa9fb86590d8a38ae65369ce6200f8
MD5 db03468e99e969a1c261edf31196e510
BLAKE2b-256 40afc68928f487f7b0e6c7006142249425dfafbbd4eb92ada344aad9d96fd65a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 64eb7fea4b5fd05a9df7f73ca10e5fc910247731a0c9129b22a8f0b50ffa5ac6
MD5 8cc9b1958e0ac55b094ab1292d438304
BLAKE2b-256 71bbe13a9ea25ff9dcbd0c6c29fd8dbafb44da27378e70e5c81c84a859b59786

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1cd5b4f4d43604fad58ebf7a597a7a8be6f594fa34a10f4c4cd128b8a6edf1df
MD5 c9b2782bd2d1228d3b254114d64da263
BLAKE2b-256 bdbbc5a2f0f43adfe45974f3b395c6c79db17255fda03f8d9a5f9656ea7de5b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e5a9ecbae8ea5653988369c2b6185d686fc8838d861300a9fd5ba118054422ab
MD5 e1242de2d05193d1e5440a740820da27
BLAKE2b-256 1d5001d767f50623723236833b603f128c97209ad7acc4af76a564d6606443e9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16d331a876ecb14665dc2520eb933734e60047ad153920b9bc1a46b1d3e77a60
MD5 5a620cb18bf7e34d21a6a5eace66ac66
BLAKE2b-256 787dc5cf392f4b3f006a5932ee8f24d0fb7e9731890bc41d688d035c8e6b6a5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-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.17-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5241b8aa3a74d85d633545d9f7d79f657e05c485b352b0f9f609a7a570a7d097
MD5 8ebdf38159910a4ea4972bc8ad3c9308
BLAKE2b-256 a9e409cec88c29f2e91ae26e292283cabf48265f3fa53ae99d0a1a6d5c5b8a9b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7cfe96958add30af340386e883b352f4c9dd0b9705dc1fed3c50e3ee42aa23bf
MD5 b227399dbaa9d0ffdb0e5919d12987c7
BLAKE2b-256 20792195b66472bff04fccb4f2c160e05856ad6b10886a2aedc80fee54cce6a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1a6144eedfcd10036350b0a2f57f95574d8d36dc81cf6802bfb0633091d1f423
MD5 79bfe384ebfb360d9cc636e8366129c4
BLAKE2b-256 04a5017dd8f45929977c2bb0f5f9a4ba8b1a864f55474efefe7d55f99133be87

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4e9eacf6a2299c2acf6dc51a80d21fdce467f8da62123958b77fb71f1f4c28fd
MD5 ba09417502da60d905cc07408d5bfe3a
BLAKE2b-256 6e2228f1c0bbe50f484bfee76c2ffce80e225f31591569bd238c8abbd5b95cf1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d62660b7c841e2efa92a950a89d4f2039c019f3c8effcb886f907e08fb059e34
MD5 9b6cd3c1a6c01d8b3e8bfd1e444337c1
BLAKE2b-256 23e0ef48544f7c8a47f3d3482746349e74189b320815f1f1f74362c7524a2a20

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fe90e33adf7f5faa9e42ad93be63c855e84a760383e9e7d6c51cb4e7a24309c
MD5 4b777ff2d7567614d9f0213eeaf4c8ce
BLAKE2b-256 438a7f7544c3e4d2cde4f19e9604814e1f8ebc104534df5c1461f9ca9d362ae3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-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.17-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c432d8a6c1b04f57c316039ffa7dd039cc6f30ba3a5bdd01646cfd07f7a63872
MD5 d3de5fc74e498a69099244377e5f256b
BLAKE2b-256 07fc2a38380623538e33801e1747adaf1a4c76f124f75f90f529ea6d30c0d504

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tuberd-0.17-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 420.9 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for tuberd-0.17-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f37c2d7ad7878c375b891e13dddbaf7342bad5214ada16c2d7dcd08094f6b56
MD5 42c0d8a0e9ae2796af2af9f350e25af9
BLAKE2b-256 2506d94689c949ebe263bfe15e38f74e9db4a740e25083988efc0e53810a0184

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.17-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 35016497097383047403279f576194fbc629fd9b777fcd7ff541852d8db502f7
MD5 878612a1fecd0be3c02e252b69a7524d
BLAKE2b-256 332d311e59859cd24103850f3421e4e1b390416e6c0ddbeebbf0b7d63f9779da

See more details on using hashes here.

Provenance

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

File details

Details for the file tuberd-0.17-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3d6b3599091bc104acc87f0f3f99023bfd089d7bd88fb20cd856a2836621be4d
MD5 bd4edaf7c18a9abd3de30897ee65973e
BLAKE2b-256 ba72b8d633ff1744b8fcf3a2cc63b5a416c2664865fe146ba38b5ecbfe764274

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-cp38-cp38-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.17-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 87768125e98f335d9c876405b347f194f57a877f750ce880da1e0c9b3d1a888a
MD5 9aba41045624e81299633beb6943fabb
BLAKE2b-256 4c3b462d7f4f76f5b5af4745efff601475427e1d13719229e3ddebbe6145ee4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-cp38-cp38-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.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7cde178d01c33dfb773d8b477e4b62d1bb58d2da9ec0d724dfb306f15049df3d
MD5 b20fd4fb170d405d4d82621625b3bb63
BLAKE2b-256 552c19fd075b134b3f12d3468e74b8575e566906c0089f35a8dcf42f884a5c52

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-cp38-cp38-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.17-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 42f909469e72d892e61c1d6af12b93769802102520284eb07e68624e6a73ed06
MD5 0409dee141e2d3e2cb7056b193a44b2e
BLAKE2b-256 32f3f5d5c1c9e61da68475c64d1c1cf60e198f0c5dc765aa1b2bd4a6d87e6584

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuberd-0.17-cp38-cp38-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.17-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tuberd-0.17-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 95e0942262e51fbd684734bd0d3fe233069dccfc80fdd1b2945a4c0a4c22a573
MD5 00a76df00da608f3eb18e71054a8c1d8
BLAKE2b-256 a493d64daebdc7d5c87b9043ef7f77e31b24061cd1a214a78815de14b0682a1b

See more details on using hashes here.

Provenance

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