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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

tuberd-0.18.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tuberd-0.18.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (643.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

tuberd-0.18.2-cp313-cp313-macosx_11_0_arm64.whl (422.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tuberd-0.18.2-cp313-cp313-macosx_10_15_x86_64.whl (430.3 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

tuberd-0.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tuberd-0.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (643.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.15+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

tuberd-0.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (670.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tuberd-0.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (642.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

tuberd-0.18.2-cp311-cp311-macosx_11_0_arm64.whl (423.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tuberd-0.18.2-cp311-cp311-macosx_10_15_x86_64.whl (432.0 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

tuberd-0.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tuberd-0.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

tuberd-0.18.2-cp310-cp310-macosx_11_0_arm64.whl (422.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tuberd-0.18.2-cp310-cp310-macosx_10_15_x86_64.whl (430.0 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

tuberd-0.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tuberd-0.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (640.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

tuberd-0.18.2-cp39-cp39-macosx_10_15_x86_64.whl (430.3 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: tuberd-0.18.2.tar.gz
  • Upload date:
  • Size: 48.8 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.2.tar.gz
Algorithm Hash digest
SHA256 b91fa9021fc1d718761b2e96b3427ac0c592f1796fc9dfd84a0902ac7a13667a
MD5 2eafab5db4ccd9dd5224624e0952a03f
BLAKE2b-256 d2d2f0a593880b6bcc00c430ed5dd2ce1a59c2b0a358264d764b3bb4067d531b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1bba3dc5e68fab00dbfb5cbb574c89ef7c028f04709db20341f0e8763d3774af
MD5 dfc268720bdd309d1a04bdff19dd87a3
BLAKE2b-256 ee5c4ba252bb47d86414b39076a81e64415baec551cbc3474fa1a26e13edaf31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8989eee603bc27876780954fa6eed76b5cf7b534ee2dc1224235bf67ef01525a
MD5 597df4deaa5c8c1c932d3d8548b3b1fe
BLAKE2b-256 19e62193149815cf6bf6b603c40cb404670887be758c10fc672d9d60551b4c1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf34f1a5da8886d0345872281b292c8aa2da3c26047611ccfe4df2d2ad812e4f
MD5 4bfce38e2236cd7e14c5296de8071239
BLAKE2b-256 d8a578f9e9b2247cc5806eab917974c4f9ec33b4a53f0aa08493d99dd2f45868

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c9e379d3aea482282ff338ea42eb7e15e8e815c13201acd647c02a9738dd1629
MD5 4a2d5f9e47ad91cf84be8dd75a080595
BLAKE2b-256 db0cef4cec442ea9ab6f6f222698d1991cb64713dba09e31f92b5a06cfabebef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2b24a4f60e37d4ef29aa4857dd1ace22173972ec790bd2eac72a6bf7ec26518
MD5 34c8a07bb7d8a89ee7c2a6d96ace2aa6
BLAKE2b-256 c15e455f3a676d8f8d8960e58058c68fbdb3ec6cb4a624540c52fdcd95a76a14

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7c14636066797f89f66ef6b06c767baa658758feba700e77257aeafd5cd6a2e7
MD5 a286bb65fc212cb32430462698b75d79
BLAKE2b-256 5a5e61c24438c417f1f66d485f00f7c3ca5ea950ded081d1e1c68d3fc86eb746

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d82eea259f8667963bd7c8930faa234e49049789fa78b18265b65e262f92f7ed
MD5 5e674fb427d1febcbb21577b327e6b65
BLAKE2b-256 b1a7db0b553092bdc86828187b09f37483b1d5279305b25e99dfe50b6d8bd430

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 65dc82fb0c8a897005cc2af394921fd3064364ed11380ab86a8dbe413b820940
MD5 d9d75972b7f51db681c68d6ff4fe6544
BLAKE2b-256 f6e0c38cf0232c21a75f98e3f87db06bcaa75c1b50fb38ca9de69004fa83b794

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6ba1e687be66aeba4e2280e499da33ceee0c8753e813875cf9cf8f474524bdfb
MD5 2081f8d167d33abf36bc957ee966dbd7
BLAKE2b-256 444d518fb6145d5724730dd648f8588d458c10781f0f7d9e005020e395fff199

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a4669fecb9f8f78c6c8582b5b49d82240125ff5d085d081f2508b06559769c9a
MD5 ecf3ef3f2468f64d751068710e09fd76
BLAKE2b-256 7800490396f1d3bcd86f81901d82593fdc291e261b3d789ef83b9885eb818278

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f84b428becc8ceb3b133eab93105235381a464fa526d27cf478e4c6dd54912d
MD5 b367d348514eeb5e4b7aecad702536c8
BLAKE2b-256 1ac5dd02ab26c84139475c2b243ddd837e3421d319ec940d5fd29c9fa0d9108f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2d9a731ad00f779a99de991e9019b76fcd26cb3535125b51876ebf97cd0ea41c
MD5 a915789e970650d3997c10e769c79a6c
BLAKE2b-256 2abe5ffaccdc39fe557121095ede3dd200a9b79cbf487f2402a2bc210a40fd79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0d979d8b80e3970eed06af08888de19fa1d55c10c3a65faad5728e3c24398c97
MD5 09e949b9eeb782176cd2e47aeda50487
BLAKE2b-256 ebfcf782d7e8ce65e9e8b295acaab10a958c6c4b0112de091be04aba5a8cf91a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e71773f0e03f43f4101da0b44f8d7900299ae0d35b64686496daf647fe079579
MD5 adbf47e9ac6a89ac4e9847989b6d3ef9
BLAKE2b-256 b62a3cf9f44242254fa17721e0a2ad268446c4d11fdb965e3f9b8832cd61e058

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08723827a3674f6a5cf6254e8e0ab1290b0352475977b3cab7ad913a2be7d6ce
MD5 d4ebe927c960d0830bdf0f58f0199a00
BLAKE2b-256 06386940245669ffcf9520f938113ef2cf4f595d83a26228eb096263f42b726a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2a5104888d4d4bce18988b507bde364dd65a97682e56354fff038ad2fb2453d2
MD5 a8cc73038cd74845e0cf2b4e4b8b1b40
BLAKE2b-256 c3157af9076acf597b239c1743e6395a350b95c99013d0dd588ffe9fe0042a8b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6be3f831721cb327d0108a9880a6c44aee897650b22a8d1d9f5468c643925617
MD5 37a91f0725d4da5587c75545b3d94a80
BLAKE2b-256 9f7b8a958f2c5bed52b8acb5588da2cd0d3a144bf29c9113bcdbf434ea7cd535

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 870c87689ff5ad676a0b58d0f08bfabdd2d08844159aaa48dce66d867c3babc3
MD5 8d86b3e74fa934f8529c553c3f511b60
BLAKE2b-256 3485b8c36e28e2930942804a6fc0d77f461780723581583ce7db98a056457792

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 91c185d020551fc3d3cf7dc90f1f0b38617625284e86456a5ea9b1bfa1978376
MD5 0a635032ccfd4aeef09355cf65802297
BLAKE2b-256 bf4327ee4df748b118f4c14aa2da7dae3d7ea196dff0b3b4592a84b02f89e3ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 48b7f5f8e1fd531c31b8da3744fc8036ec1a6f5536f323d755a648abbf4ff83f
MD5 d10be50f5f690d305da46b7c31423636
BLAKE2b-256 b914d1fd2bca2a77b9153368d646a231913c75e5c87935f3898aa2e79a1d3360

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b4cb202fc412d24bc854d1e3c5b80a5a8fdbf6378adf6d929153aa0d5d73f94
MD5 50c09d9bbedc8c3e72a89b6d63823154
BLAKE2b-256 43508e1eb3dd8477172853f6da77ebd1bff74396fb0ad22a06b77305ce229bb4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8de16daa575f34d47e29a4d4a4bd8a8952b41cef6edc307b5f0f00b614b16ca4
MD5 4e0f0bf7af9123b4c73e259d35de8f0e
BLAKE2b-256 9ff7fe2053659e106d9b8a8e6420aac37b4be6207fdffefb047e552e65e95c33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4d2acc1139c775eb3fa59017d7a5e37d905f78dcd3248bef8bae8f0e95903b5
MD5 be129fe011663f690ae2f16e9727f63d
BLAKE2b-256 fd62b58cf671c315fd1998d500a01f99fdfc53b35222bc26df9fa153b9afbefa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bc9e22c31aef42ffd97766ac5353b2682bc617489a22be40e15b0cd102e8d646
MD5 9811ab353d18e76cb04697e09a09b455
BLAKE2b-256 1c7a473dee1ef55c9263e219f92843eea92ac5e712298452b7c62b3f6dde1bfe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6ebf0a40326ff6da217f396404fbcefeaa2c6402b79939175b258f93be979da5
MD5 666dcbfb43e56f5c26cd626543dd8e20
BLAKE2b-256 2573b0622bbd6961a3f084410ed2b3b325ea26e0efe8affcaa848c65992894c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bf69e5d2e94bab33816c1080cee0f4012260c8a3d6cff32caae357e6e4b32f43
MD5 fd382f24aa9b4c2c907423d166da1663
BLAKE2b-256 3c83988bea62d493bd7cdf9daa05be925263ba585ffc02b5bf512bbeaefbf5e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b00bcc866b3fc37bc3b81f5f7822d685a191a53518bd0f37c7a44e61734f5114
MD5 9b5101f953ea78cf280f162ad438f782
BLAKE2b-256 0aa49d9348f62f9c9a2b3cbf7947b27b3ef3b76e50327914980d34cc192de219

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6eecb81195040b062205205910a814050bb6175accb47a50ce42622e0f0fcbe8
MD5 5145b4db1aee531f3acc87ccd12f4117
BLAKE2b-256 5ff1c001570c64a6a39a17ecb2ae3882b340afe58be7e27092056e6e848a208a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4606c688861d5dbd1ab8ad2936f7ac51036063243955e5ce78634e3ddd74d65
MD5 0aa5a1345ce5fe83e0301cd14d88ef04
BLAKE2b-256 d5dc946085d0c087fe157d85015274e67688b911a4e9c997f8ccf53c656dd071

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tuberd-0.18.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1327280265eacd588866f57c3f3356dda74bf8b1dd207a0045cc1a942497b61a
MD5 e7b3d1e2318d71240943ba1113e4b182
BLAKE2b-256 e4da764b96e96eb2213a9f40d9eeca8e6fc0b09abc2fe0d8e6ecf145b68ab1bc

See more details on using hashes here.

Provenance

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