Skip to main content

Python bindings for tract, a neural network inference engine

Project description

tract python bindings

tract is a library for neural network inference. While PyTorch and TensorFlow deal with the much harder training problem, tract focuses on what happens once the model in trained.

tract ultimate goal is to use the model on end-user data (aka "running the model") as efficiently as possible, in a variety of possible deployments, including some which are no completely mainstream : a lot of energy have been invested in making tract an efficient engine to run models on ARM single board computers.

Getting started

Install tract library

pip install tract. Prebuilt wheels are provided for x86-64 Linux and Windows, x86-64 and arm64 for MacOS.

Downloading the model

First we need to obtain the model. We will download an ONNX-converted MobileNET 2.7 from the ONNX model zoo.

wget https://github.com/onnx/models/raw/main/vision/classification/mobilenet/model/mobilenetv2-7.onnx.

Preprocessing an image

Then we need a sample image. You can use pretty much anything. If you lack inspiration, you can this picture of Grace Hopper.

wget https://s3.amazonaws.com/tract-ci-builds/tests/grace_hopper.jpg

We will be needing pillow to load the image and crop it.

pip install pillow

Now let's start our python script. We will want to use tract, obviously, but we will also need PIL's Image and numpy to put the data in the form MobileNet expects it.

#!/usr/bin/env python

import tract
import numpy
from PIL import Image

We want to load the image, crop it into its central square, then scale this square to be 224x224.

im = Image.open("grace_hopper.jpg")
if im.height > im.width:
    top_crop = int((im.height - im.width) / 2)
    im = im.crop((0, top_crop, im.width, top_crop + im.width))
else:
    left_crop = int((im.width - im.height) / 2)
    im = im.crop((left_crop, 0, left_crop + im_height, im.height))
im = im.resize((224, 224))
im = numpy.array(im)

At this stage, we obtain a 224x224x3 tensor of 8-bit positive integers. We need to transform these integers to floats and normalize them for MobileNet. At some point during this normalization, numpy decides to promote our tensor to double precision, but our model is single precison, so we are converting it again after the normalization.

im = (im.astype(float) / 255. - [0.485, 0.456, 0.406]) / [0.229, 0.224, 0.225]
im = im.astype(numpy.single)

Finally, ONNX variant of Mobilenet expects its input in NCHW convention, and our data is in HWC. We need to move the C axis before H and W, then insert the N at the left.

im = numpy.moveaxis(im, 2, 0)
im = numpy.expand_dims(im, 0)

Loading the model

Loading a model is relatively simple. We need to instantiate the ONNX loader first, the we use it to load the model. Then we ask tract to optimize the model and get it ready to run.

model = tract.onnx().model_for_path("./mobilenetv2-7.onnx").into_optimized().into_runnable()

If we wanted to process several images, this would only have to be done once out of our image loop.

Running the model

tract run methods take a list of inputs and returns a list of outputs. Each input can be a numpy array. The outputs are tract's own Value data type, which should be converted to numpy array.

outputs = model.run([im])
output = outputs[0].to_numpy()

Interpreting the result

If we print the output, what we get is a array of 1000 values. Each value is the score of our image on one of the 1000 categoris of ImageNet. What we want is to find the category with the highest score.

print(numpy.argmax(output))

If all goes according to plan, this should output the number 652. There is a copy of ImageNet categories at the following URL, with helpful line numbering.

https://github.com/sonos/tract/blob/main/examples/nnef-mobilenet-v2/imagenet_slim_labels.txt

And... 652 is "microphone". Which is wrong. The trick is, the lines are numbered from 1, while our results starts at 0, plus the label list includes a "dummy" label first that should be ignored. So the right value is at the line 654: "military uniform". If you looked at the picture before you noticed that Grace Hopper is in uniform on the picture, so it does make sense.

Model cooking with tract

Over the years of tract development, it became clear that beside "training" and "running", there was a third time in the life-cycle of a model. One of our contributors nicknamed it "model cooking" and the term stuck. This extra stage is about all what happens after the training and before running.

If training and Runtime are relatively easy to define, the model cooking gets a bit less obvious. It comes from the realisation that the training form (an ONNX or TensorFlow file or ste of files) of a model may is usually not the most convenient form for running it. Every time a device loads a model in ONNX form and transform it into a suitable form for runtime, it goes through the same series or more or less complicated operations, that can amount to several seconds of high-CPU usage for current models. When running the model on a device, this can have several negative impact on experience: the device will take time to start-up, consume a lot of battery energy to get ready, maybe fight over CPU availability with other processes trying to get ready at the same instant on the device.

As this sequence of operations is generally the same, it becomes relevant to persist the model resulting of the transformation. It could be persisted at the first application start-up for instance. But it could also be "prepared", or "cooked" before distribution to the devices.

Cooking to NNEF

tract supports NNEF. It can read a NNEF neural network and run it. But it can also dump its preferred representation of a model in NNEF.

At this stage, a possible path to production for a neural model becomes can be drawn:

  • model is trained, typically on big servers on the cloud, and exported to ONNX.
  • model is cooked, simplified, using tract command line or python bindings.
  • model is shipped to devices or servers in charge of running it.

Testing and benching models early

As soon as the model is in ONNX form, tract can load and run it. It gives opportunities to validate and test on the training system, asserting early on that tract will compute at runtime the same result than what the training model predicts, limiting the risk of late-minute surprise.

But tract command line can also be used to bench and profile an ONNX model on the target system answering very early the "will the device be fast enough" question. The nature of neural network is such that in many cases an untrained model, or a poorly trained one will perform the same computations than the final model, so it may be possible to bench the model for on-device efficiency before going through a costly and long model training.

tract-opl

NNEF is a pretty little standard. But we needed to go beyond it and we extended it in several ways. For instance, NNEF does not provide syntax for recurring neural network (LSTM and friends), which are an absolute must in signal and voice processing. tract also supports symbolic dimensions, which are useful to represent a late bound batch dimension (if you don't know in advance how many inputs will have to be computed concurrently).

Pulsing

For interactive applications where time plays a role (voice, signal, ...), tract can automatically transform batch models, to equivalent streaming models suitable for runtime. While batch models are presented at training time the whole signal in one go, a streaming model received the signal by "pulse" and produces step by step the same output that the batching model.

It does not work for every model, tract can obviously not generate a model where the output at a time depends on input not received yet. Of course, models have to be causal to be pulsable. For instance, a bi-directional LSTM is not pulsable. Most convolution nets can be made causal at designe time by padding, or at cooking time by adding fixed delays.

This cooking step is a recurring annoyance in the real-time voice and signal field : it can be done manually, but is very easy to get wrong. tract makes it automactic.

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

tract-0.21.7.tar.gz (6.5 MB view details)

Uploaded Source

Built Distributions

tract-0.21.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tract-0.21.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tract-0.21.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tract-0.21.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp312-cp312-win_amd64.whl (7.2 MB view details)

Uploaded CPython 3.12 Windows x86-64

tract-0.21.7-cp312-cp312-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

tract-0.21.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp312-cp312-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

tract-0.21.7-cp312-cp312-macosx_10_13_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

tract-0.21.7-cp312-cp312-macosx_10_13_universal2.whl (13.4 MB view details)

Uploaded CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)

tract-0.21.7-cp311-cp311-win_amd64.whl (7.2 MB view details)

Uploaded CPython 3.11 Windows x86-64

tract-0.21.7-cp311-cp311-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

tract-0.21.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp311-cp311-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

tract-0.21.7-cp311-cp311-macosx_10_9_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

tract-0.21.7-cp311-cp311-macosx_10_9_universal2.whl (13.4 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

tract-0.21.7-cp310-cp310-win_amd64.whl (7.2 MB view details)

Uploaded CPython 3.10 Windows x86-64

tract-0.21.7-cp310-cp310-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

tract-0.21.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp310-cp310-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

tract-0.21.7-cp310-cp310-macosx_10_9_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

tract-0.21.7-cp310-cp310-macosx_10_9_universal2.whl (13.4 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

tract-0.21.7-cp39-cp39-win_amd64.whl (7.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

tract-0.21.7-cp39-cp39-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

tract-0.21.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp39-cp39-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

tract-0.21.7-cp39-cp39-macosx_10_9_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

tract-0.21.7-cp39-cp39-macosx_10_9_universal2.whl (13.4 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

tract-0.21.7-cp38-cp38-win_amd64.whl (7.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

tract-0.21.7-cp38-cp38-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

tract-0.21.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp38-cp38-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

tract-0.21.7-cp38-cp38-macosx_10_9_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

tract-0.21.7-cp38-cp38-macosx_10_9_universal2.whl (13.4 MB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

tract-0.21.7-cp37-cp37m-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ x86-64

tract-0.21.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

tract-0.21.7-cp37-cp37m-macosx_10_9_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file tract-0.21.7.tar.gz.

File metadata

  • Download URL: tract-0.21.7.tar.gz
  • Upload date:
  • Size: 6.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tract-0.21.7.tar.gz
Algorithm Hash digest
SHA256 70412e249f3d9e1336b48294023e2843e40ac4ab5efe9a87a114798c4129b2f8
MD5 82fdc1c8915cfdb669f844f922d9f670
BLAKE2b-256 21977436f9f49bfda013b868a20110fd66e8729e9b41c5fc36d58ba85ead20c3

See more details on using hashes here.

File details

Details for the file tract-0.21.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2b2df6015ab0fdaa6acf6bb52a4a108ec778fc5daf4ec3bab4bb050c92466e39
MD5 c1b78a1f7b43f68c8166024b56ef246b
BLAKE2b-256 bbb82bbdf892a45ef4d0cb705887227256f662cb2a65f02d22f69d9908fa2b3e

See more details on using hashes here.

File details

Details for the file tract-0.21.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64bf505c97ba4191b4eab3168d98545f785c933143e467327e74edd8fb59ecb8
MD5 d7aa3ebf9ffd87833c67483303bb9184
BLAKE2b-256 0cc6d1e1436105345491b58788ceac946a2c026eb4017a366a94f2f6f8dca3e3

See more details on using hashes here.

File details

Details for the file tract-0.21.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 872b74658ca34900d496ea6f5b88598f049b988803acdb5b07cea96683ad1b6c
MD5 5b6ea3a986ecf04b3a4f7a6e2106f059
BLAKE2b-256 74bd411de8bac973a1089208b00de50515ce59d6e6b7533ee3d289120e399d76

See more details on using hashes here.

File details

Details for the file tract-0.21.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f1f88bcb355f4cf8ef01777d17bde4967e7db4afb0ecad67af56319315b7593
MD5 b127fec145ce6eede1a60e73218d37b5
BLAKE2b-256 259fd97f70a526c570e25ea4a4d537b5d417412f00c682bd6225d05841c1eb48

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tract-0.21.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tract-0.21.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a2ecde5b17273aaf56dd8d168923546607efd34485135a695b47c209cb1a840c
MD5 934b0ece1ff054c06b9242981fc53ae2
BLAKE2b-256 31117b6931d5cc10d925a55f12a723675b8ddb881ac2c15729f65d3dbe2a8e3d

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5ed5e8b10efe3c93c638a1508121d9be25d339faadfe7952d701debb426b90b2
MD5 7cf16cbe9dc7de98c1c58df50188e864
BLAKE2b-256 e08ed0f13bc74c09217a4d43908c249ff9b1e38632f8ab05385d87f7694b3992

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a95ee6c196d3b52c8134890b4332bd0b2ade2fbe6dc5441fa6953caffbee657
MD5 4d909a33c16c72eb3e8190d2ebb913ac
BLAKE2b-256 221c8ae16d93d69dbf14d83168e8686af6252c716edb12a61b5de161881f3a55

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5300875ddae52288fe7c1576f454267f8d0d35c36c9e013caae42712c7f81d70
MD5 cedca2ed6bb4bc6db83d5c755c883e24
BLAKE2b-256 7a9487c5801f162a711389ec87dc41349cee1e70d71b59ba98924b0d7c9cef83

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 14c2f48e47c5fe2c250398e654e85ebe79d0ad9eea4ef268a1a86a88f2f08306
MD5 5f399ecf0cabe4adfacd8f4997d9fcd6
BLAKE2b-256 17bfc8a5d18634d83928732b5a5fbbec0225d27cb18f15b40046f35755f5aae9

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 271035aa42643a1d86d010912d1741b2d9974a908e3242e1b61903aaebace678
MD5 30aadf6e31b8636700298b905bbde733
BLAKE2b-256 b65ce3e254deaf147bcf3dd5a41d34e5716e7b51af73c9dd58e46fefaabc1caa

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tract-0.21.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tract-0.21.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8b1cca6a5fefc90b98fe0c680005dd7204af751592ededcbce8d8056a728c39f
MD5 a07c0542c60bae15b9fb3c0109c1d145
BLAKE2b-256 48d5dec63752ac0e9de815f2c6de54be8d9f5bad90d493116492c24bdbf1a619

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0028f105cc35f1d70d827cdf4d64dd54998aa5c9d004ea7eebb9a02e5648b6f2
MD5 e9f79adae5c1dde96a0394cbe212693d
BLAKE2b-256 1337c72e958ce9d49e5fff3fe8dbb98e33f8182201ea11f9da2bedaeaf6b99e0

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 788cc19a644d82250cd0a50556dec08b5aa09bd1fc03ea52fd69f7dd41b264eb
MD5 ec26e6dc34216d784a8843d0ab0cf142
BLAKE2b-256 cfa92d6a5ca89f260cf1ae602dda9e4f9d400a9544554b3d6eece87793b8c5dc

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c02460b0c88f56d5df130cf1bd60ae811baaf50d159f4b17765ce0afb9c9163
MD5 53460c796712059c694c4914a0d7844d
BLAKE2b-256 afa867a8109df42729941ab81aa880637fad9a37d0e7b354d73447074961b6b8

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a6b6a81bcb210e4dd86f064a7ca06cccf9e778040f4bc6abe2e1aaa0ef5fce8e
MD5 e6a304e73e6ddc4f4a67d3de1f3691c6
BLAKE2b-256 6a2d88680682db591fa7ffa06b8920c24a5a9767b56a675ac325cb148463b971

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 52e3816413934c7e86a2ad5ee267f77d5eb5bba5676739abdcfac97db9133118
MD5 cc116f2af2586cfd506c085175538f3e
BLAKE2b-256 0b4660f5a74a472dcce572b6131d4d077001dcac73ebb95b6b97a79f810a9756

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tract-0.21.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tract-0.21.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 694c85238fa104626ccf4925aec461b13a226482be26bb6a99c72bdc6a5bb18c
MD5 f098f9e32eca0da8ba2461c3a843d41a
BLAKE2b-256 27923ce7e089c8cbffd2f1482d1ec95cad9a94e00cd05d61e693595b22afb474

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 84865e642e1c1cd8a29cd09285d921bfdb2bc4eb9ba14fd52eba7e035198df84
MD5 b47f8dc9acea285d9483443cb81cd129
BLAKE2b-256 79ad87f2c9226939ef1d538e054b8757faed5b8eb8d17ab5c8300878a2aae57e

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 904ac0427565a236380de5d2267dfad864fa6e73b036159498216bc66af86787
MD5 95e95fd7b2ebca6c0c806e9e37de4c14
BLAKE2b-256 f544813977162aa9c6aee703e15997ef3a0297fcf749715c4958a0ee4150f4b9

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 488c5c2f22d1e2816d0eae4db0f3344d799db87098ad6090c0cd3e772c69da04
MD5 9186a38c151fa1a557df1c81fb37c0ad
BLAKE2b-256 bb1d27e6103519645ed63bd8c6eced79a8821145384997c6599b6669c139ced6

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9316124c86e43a70dbedbb2e653f5b62216a53a45708b93fdf8d74eb17546d35
MD5 670db2a00eafa2cd8516a9cf99a61b39
BLAKE2b-256 869cfe0cfafcace4aa698b6568362d3165fdc25fa8019aa40510dbf3fd6456a0

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f94adab546946aa0c3a16f9a7033ffd2db844e1fa11560a76699e0c1ee0e603a
MD5 66a9f7a8b32142099d0bc58fc57ec3b5
BLAKE2b-256 0b8389d8283661263a21dfe512af9c99c28f79c16749801df75d2bc34300b98a

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tract-0.21.7-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tract-0.21.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ad8a21d60e65b46704470576f37cfb231b6736a29dbf56c7774c405055700a12
MD5 cc57b76957c8c2d8171d88b7258a0512
BLAKE2b-256 e7ae8ad20b50568eb884b26e12e4c45936b89d1609870f28299a035f16afe629

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3db7f1b9eb0e546dcb37ace19c53bc5d7a053efc891096320a2c45d95fc748f1
MD5 bfb05e5d5a8bce0a2f9e68a9a01a2517
BLAKE2b-256 440803dfa71e1e950756da9012b62062b02a3017b3f7591d27ae81b8987831c9

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89deb6c601a7e37cb945536952db4f37c567673d3d03cb7ef40815b272c04aff
MD5 268d4daf4b6a4f2ce4a8e2c0756f12b7
BLAKE2b-256 febef3f90ecf7e60d899cfe859ac1ffc6010040afff6383ada1f60c6968455f1

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 276c73abe2c5d080a4071eb6caf073eabf1c808eee0618e99ad0db042e1fbd9b
MD5 844b215c529fdd47b2a4fd893f83d684
BLAKE2b-256 b85460af3912d9c5922cc80a43ea9b880036c6c4765d5ae6296aeaf1ecb3a5b1

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d8aa9e5399e3fbeaffb513d60b6fb3c459829004d1e72d48de2349ef59204bf5
MD5 de58283d6a3a4ba653c1d33cc30bc73b
BLAKE2b-256 8e45d83d5250be41eb64fde192109fc00a17e95052c59e3731499cb367baf31d

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c6416318179b3ae62b4d7c0e3010146be80645b4fed6685f8a1472bdf1490696
MD5 636ddea94789affd4e8c53f330166b8c
BLAKE2b-256 adaa2f0e468c7241006cb3456c75adef8bec008398f8c049f897d27302147dbe

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: tract-0.21.7-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tract-0.21.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5d2b35f6d0230ff51d2ee925a22a4e7b3b9fd7f404de4cb121c6c7689326b507
MD5 18e99418efb8b5853832d83adb6d7353
BLAKE2b-256 bab63dd89455d2e5b975afbf1fa62119e28390ccff66dc5f2c63d27a23b5491e

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0bebe578de11f87b5afaa4903c2a57be9ddaea0440ba6fc5dbda0235b6993918
MD5 d5436e6e321b3c6218e7591650d6ea8b
BLAKE2b-256 56cff95ddfd9963533ae745d2728a4fdb40143c4b5ae3886d8e6867814c1dcb9

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e47255adba05795a5b4c91c3384d1944e6901822ec47b0ed0833f0f757e9dcf8
MD5 d8760323eed6ec087b79419f746bffff
BLAKE2b-256 e99172a1e24185b238bbca437d2bc2d94e5e7edcb230129c282c9afd1e87af44

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 377336ff4b3e7ef27dc9ca32df78e04f800148d3f6e1978ff61ac078e8099de4
MD5 baeb31b31b562ce611643fadd90f9ed6
BLAKE2b-256 de2eb5a3662cd8970d95311603faa1d64e7e79f81208da89bb4e5c4064c12b3a

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cdfde9216838638f26b91da2036373dc5aafbb605e5c197d17bc905fedd162ef
MD5 13bcdbd2d869ef669aa5ec3b53c06460
BLAKE2b-256 1ebe105a4a7c5baf6b666277999ae33d917bfa4c46a7e500f9e62cc927f2ee6b

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b11ef98e85537c922ec20009342ff6336a3cdefce91f1578aa868b1a927eaf94
MD5 4a8fda727b6813407a7fd4a1e54f8521
BLAKE2b-256 22df50890cbd9f2fc429d3f89f0fd6f8f6b9cb0072bf87211058a6d29e0793cb

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 21cadc4ff373aeefaa0cf4a5b3c5ff92a584f25eaefd09c104aeec63f87d26e5
MD5 f3206313791ed5ca720f7cebfb188cd0
BLAKE2b-256 972c6167de22e39a14cc965ddcc79deab5ef5946d895dc5f2b057e903cb0fbf1

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 662c4579824938c3a15ae222012157dc47a89f8245bf3e90699d90900703020f
MD5 a4a371343951ca6f5671ef1aee5a7865
BLAKE2b-256 53364b13200cc81cdf33d9a331abfe04fa3b7d38126d78fd8b2e25a894f1c85e

See more details on using hashes here.

File details

Details for the file tract-0.21.7-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e7b9e017591ba89b38b6d74602e321a6069c0f4217966134b8201022436b3556
MD5 30f748dbd33415270b9e3d8b73775d89
BLAKE2b-256 edd2626c905abb3b273f131b6e596f2ecb8ce6db1ba90619169c799c30612afe

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page