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.tar.gz (48.5 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-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-cp313-cp313-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

tuberd-0.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tuberd-0.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (643.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

tuberd-0.18-cp313-cp313-macosx_11_0_arm64.whl (422.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tuberd-0.18-cp313-cp313-macosx_10_15_x86_64.whl (430.1 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

tuberd-0.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tuberd-0.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (643.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

tuberd-0.18-cp312-cp312-macosx_11_0_arm64.whl (422.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tuberd-0.18-cp312-cp312-macosx_10_15_x86_64.whl (429.7 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

tuberd-0.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (669.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tuberd-0.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (642.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

tuberd-0.18-cp311-cp311-macosx_11_0_arm64.whl (423.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tuberd-0.18-cp311-cp311-macosx_10_15_x86_64.whl (431.7 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

tuberd-0.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tuberd-0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

tuberd-0.18-cp310-cp310-macosx_11_0_arm64.whl (422.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tuberd-0.18-cp310-cp310-macosx_10_15_x86_64.whl (429.8 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

tuberd-0.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tuberd-0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

tuberd-0.18-cp39-cp39-macosx_11_0_arm64.whl (422.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tuberd-0.18-cp39-cp39-macosx_10_15_x86_64.whl (430.1 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: tuberd-0.18.tar.gz
  • Upload date:
  • Size: 48.5 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.tar.gz
Algorithm Hash digest
SHA256 89ac2cfb574850f92c40891febbb0621799f37713af86855c8f54b1496035ad3
MD5 beccd033f93582ebeca68e8a55057759
BLAKE2b-256 2336f63e9820dd30355d26c4f4af461531e3e16355b62c6807daa15b6464ec17

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8c0822db8304586c607570fcae7180a6176c3f309f8496d26df8b262db61583c
MD5 269e78bdec1b7bf39a7699f8223a1681
BLAKE2b-256 44af351732f20dc717fac0fe4892837b93e0f32a77295ec75292dc33f9830714

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5329ce7af8e1c1889b2e6189837f90fc2c836c0000bf3c4e0796038199d1bc84
MD5 25ded19028b14899e6670a2a2d02c642
BLAKE2b-256 5c7e3c7fc171277424b3c9ea47bad16afbb2d4b93ecf15f6130e64a47cac419f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09dadeb6228a4c0b369b74270f57d001004368b9e9bd0d1fcd1fb8020aae10f9
MD5 e5ea0e1c6e404548b0b0255a24264dea
BLAKE2b-256 326bad2d9c2880c2f350affc2f9c3603eee1cb8a27fb6e61119f6a283031dc26

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 abd3ced2d60cf3766c0782cfcb2556d2dd4a8c6652ab1dcb6c822f068f669e9f
MD5 82d324ce284664c17fd00653e75a1de4
BLAKE2b-256 dc894cde7c01cf284cff72771cc1710ac16eb2566994ea5adea1fb1780e1290d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 816d671ae52794d04e6d1cbfc41d295e63365388b0e1524eb7628ecab24f5274
MD5 60098e01dbd408469bee27153d35527c
BLAKE2b-256 486f1691673a4ff4982bc45fbf17ef32a55904b36f3c131d482504cf16dcfe0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1c7b93b31a49f2caa31afe06cb167e851d60393b13f7c30174a018dafd7a628b
MD5 ad54b35e9fd359da36395eecaa105a26
BLAKE2b-256 1137a44643dac642c9c4d85f0071c9a9a0bcf7bb9a755c481c27d8efcd939965

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3cff0a678584113786d2d7c5a4a125e7ed11f0126f029c3659f3d1073857b501
MD5 f952d4a1e8a87a34c46a869213f8e64b
BLAKE2b-256 30ed695d9f5c86341da51b389d475df823c90df885cbe2b1b877804963cca48e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2bd24122626fcfdb705cb624d76d509872a4bc8469c763f48d8784da0d242f24
MD5 0ff3af23c387e573a4f8956c4628e48f
BLAKE2b-256 5fdfdbab3f2c142f2ee6df4eab91a6889b781cb1255746fd472b974e896bc11a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 176fd52d3501e63b676e34dda4df18f4ef8bd3e91a4bd59efa62e58da7609548
MD5 c70602ace8203b66706fa8528c51b6c1
BLAKE2b-256 c2713a07bd5c35758bc0a32bc78e9afd1db6c5c1bac326a710cb6a4ea48b0c27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5aced78c37465ad870240a153cfdb964295ee3e3662a2948a479266f8703c95c
MD5 c11570c403ce8e5c158dd9844f96fb49
BLAKE2b-256 92c2c065266dec59a1a11cfda52bd61627725248e173d6db0a0f2d0b6785ad6c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 934c064f6f7e1627da99b03d901bd415ee8122cb37f62ba837b5ace093ef6fde
MD5 9151da2dcd425f67a1e150bd9f9738df
BLAKE2b-256 4919c6755b32a0e502f7167d6b838bbd671883de498a33d68868ddeb5e26eadc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1cdb8d6fea2fcef62da05c86c4c1ee0e16cfbc4a2b7a505d0f47cb655b9907f2
MD5 47d9368b134f6379c150f0e9fe7dcb93
BLAKE2b-256 aa357bf57d4b4cd0a2b313d0092ebaf2dbceea3bca074cd57e9553a6d0d3a074

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a0c30ed5b4805b4c159795bc57713a6a8cd5c716f7e3b5753c2ddc17a7169203
MD5 c14e6f7ae0ee2f56e855dcc794ae6845
BLAKE2b-256 445a11dbd5c77459da09f6c964df4ef4a72be92ffaae2396baf8e97e07d4f124

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 614fa8fc6d49e22d3d1f5aa9261a58801630e744368f5838a6304357ea68bcff
MD5 27c3ac3b79f8faa7fe38ea96b7205979
BLAKE2b-256 0cb2107271d949ade4fa39e3d33dd64d8907a112e34a5a07cf4fa36775993c59

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2746028bb734ca09abbfb808d5744c4bb1b3c73c826cfd1be9bf41f43f27c3a
MD5 5d3e58aa469a3aec958015ae30f49fd2
BLAKE2b-256 49fc9ca9d68bd3d43281279041d8372d3f0b7e039f47c1044b606b6c82c9e5d4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d80eb7b58b2285ca42af19588ac03ee5927a67f955396c55ff3844544d29092
MD5 86b9687a86891aab65b041458a69c0ae
BLAKE2b-256 8304daf5374e696b3386621aae2151e186fcad9516f214cce2f0137d0107e41d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c6d53487a58c4f1ac8df16be3dd101e2718fe7c07fa889a3e693caa98ed8121
MD5 f83d15831f1bc30cb08a4e30c64f249e
BLAKE2b-256 5d2848f5dcc27e98172296557cded15c176ca7ee9765bb07a393a99870decb74

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b04b27e58d21e6a5dd2db9bb166ca10ac40b1ea618eec2ef6d5198c400b11ca8
MD5 53eb50de6d8196a71e94ef2f77120321
BLAKE2b-256 d6c06e438e7c878321ea3b073632edb66f3d8959246c576d8ea9e996c23876a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 65d950ba7ff8de3cae31f59c41663ca37210aa2a45540a5b4830eda5eacd912f
MD5 4a23aa8adcb5e83519a83cca709913f0
BLAKE2b-256 3bae1ce9989486455a9118fe96fca14432cf04bd66967320fc77665bf71b4651

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b4c5f9f5e153668009eade66df43bdabde4fe994ecb154d1f5f1da19b905f430
MD5 2a729db102c985645c0f08366b68a077
BLAKE2b-256 8dafc4f36b8fa56a3a477aae842f123fb6c77078e1be7b3aa4da40b7230feb20

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e4631d3388670f6ec550cdcdfe08e5e6d98f81ca447362faa2edd63754bbadd0
MD5 285398a91896c2f68af6f430f2f6962f
BLAKE2b-256 98b25d7e7f3170cf839e766369f55e9897fe39399280c063ef074e7ff5524fb9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f005567b2cb9ea0f3ebde560167ec26c8b5d60a20bc1cafa4a9dde4bfe988e89
MD5 9176817031721d828ae62022e8bdc71b
BLAKE2b-256 23a1d675562da0117da022680e720bf904f214eba25990ccfeb87e4aa1e62ea8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97bcdb1585c59a4df2961330b0941f1d3a2f8d6520e1bcc0aecd915f604548c1
MD5 9c166cc335072f8d974a616fc2cf2785
BLAKE2b-256 2ecc0632072587e64fbeff9efc1cdc88c9849af3e085f6b394568e82b86accf6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7807e8db89ce7e6c80680c58e1d4701280197f74ece34d8537b1339d9421187c
MD5 c6373ed27ad22051389b5dae0d7dd8cd
BLAKE2b-256 4e458ad89aa577d6f11ca61f4428905e7bee788578bb90365ffb93754670ef27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7ce2c683729ceb04db785d8c50b60b5727a4d003b44cf2120dfd2e65adeac868
MD5 b0b2433aa86b8f939f066493ee3fec2f
BLAKE2b-256 aee4465a6dfb8b88eb4c598c4c1904687906a4627d3813fef899dcb7228a6b55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b74045a284ad943d079a4f6b9cca821448ce9e36965e66babed1951a240edfee
MD5 b76c42059cb1de927f4b741ef905ce5f
BLAKE2b-256 09104e5625b86df86c3243ad8546d7ed9af73742ee83bbaac4a99635569a1ab9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e0b81a674e19d37687727aac9213c58401c314ed03bcd05189d20e9cc4de781f
MD5 dddad04b4519db0b9227c0c306eb5182
BLAKE2b-256 81d7fe9119c40f306d8032f0074d0371581ce6c873ccb7a1e212fb323146d3c0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9b80ad7968bd502bc4351e59b000fb7439ce5675c162b547daf4bbae60b4c8ba
MD5 af0f9a1d3c19659b5455b1ce3730633d
BLAKE2b-256 b58ea4a85d2680b9f221eb91038f41fd23bc964a5441f38543584136dcdeaa6c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tuberd-0.18-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 422.2 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for tuberd-0.18-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f39d75076cb75f21753e7f762541e43b9b8a97bc211fe99cfa4e6014b2f7dcef
MD5 8d3dad0e87f7eab47e243cca5351a98f
BLAKE2b-256 20e55d339bc35da0546535447597b68f5a7a4c97c942182ad3c12c1db8739b20

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 45ad3f63337c96af41be7996cc79eabbc56cad9e52c50c8ecec4f14249ece9c6
MD5 b6c238b7b679d2cefea3d8fe2b82a9a7
BLAKE2b-256 37f6551e3df9cb541fb135263cd4ea3a552fc79e6ac1e7ba72868aff0aafd330

See more details on using hashes here.

Provenance

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