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.

:hidden:

onnx
nnef
inference_model
model
fact
runnable
tensor

API Reference

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().load("./mobilenetv2-7.onnx").into_model().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 Tensor 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.

Running on GPU

The getting started example above runs on the CPU, which is the default runtime. On systems with an NVIDIA GPU, tract can leverage CUDA for accelerated inference. The only change is in how the model is prepared: instead of calling into_runnable(), use a CUDA runtime to prepare the model.

import tract

# load and type the model as before
model = tract.onnx().load("./mobilenetv2-7.onnx").into_model()

# prepare it for the CUDA runtime
cuda = tract.runtime_for_name("cuda")
runnable = cuda.prepare(model)

# run exactly as before
outputs = runnable.run([im])
output = outputs[0].to_numpy()

The Metal runtime works the same way on Apple Silicon Macs: just replace "cuda" with "metal".

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


Release history Release notifications | RSS feed

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.23.1.tar.gz (7.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tract-0.23.1-cp314-cp314-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.14Windows x86-64

tract-0.23.1-cp314-cp314-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tract-0.23.1-cp314-cp314-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tract-0.23.1-cp314-cp314-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tract-0.23.1-cp314-cp314-macosx_10_15_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tract-0.23.1-cp314-cp314-macosx_10_15_universal2.whl (19.7 MB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

tract-0.23.1-cp313-cp313-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.13Windows x86-64

tract-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tract-0.23.1-cp313-cp313-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tract-0.23.1-cp313-cp313-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tract-0.23.1-cp313-cp313-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

tract-0.23.1-cp313-cp313-macosx_10_13_universal2.whl (19.7 MB view details)

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

tract-0.23.1-cp312-cp312-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.12Windows x86-64

tract-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tract-0.23.1-cp312-cp312-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tract-0.23.1-cp312-cp312-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tract-0.23.1-cp312-cp312-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tract-0.23.1-cp312-cp312-macosx_10_13_universal2.whl (19.7 MB view details)

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

tract-0.23.1-cp311-cp311-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.23.1-cp311-cp311-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tract-0.23.1-cp311-cp311-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tract-0.23.1-cp311-cp311-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.23.1-cp311-cp311-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

tract-0.23.1-cp311-cp311-macosx_10_13_universal2.whl (19.7 MB view details)

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

tract-0.23.1-cp310-cp310-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.23.1-cp310-cp310-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tract-0.23.1-cp310-cp310-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tract-0.23.1-cp310-cp310-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.23.1-cp310-cp310-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

tract-0.23.1-cp310-cp310-macosx_10_13_universal2.whl (19.7 MB view details)

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

tract-0.23.1-cp39-cp39-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.23.1-cp39-cp39-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tract-0.23.1-cp39-cp39-manylinux_2_28_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

tract-0.23.1-cp39-cp39-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.23.1-cp39-cp39-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.9macOS 10.13+ x86-64

tract-0.23.1-cp39-cp39-macosx_10_13_universal2.whl (19.7 MB view details)

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

File details

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

File metadata

  • Download URL: tract-0.23.1.tar.gz
  • Upload date:
  • Size: 7.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1.tar.gz
Algorithm Hash digest
SHA256 a4f97c2b3e60f956f27a5bcc9c0e45425108abfdaa10c08d3750e87a43e7d0c3
MD5 dad27aa4f84b5cbf5130ef5897580fdb
BLAKE2b-256 cbc60cffa049877d38fcfb52cd1e90248daa926f1283b83cbbea8507531be98c

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: tract-0.23.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 976667f1a182e5e185024fda4e2cd7ecba636e7d102a135bd1793f6c9589ba0c
MD5 3544d729a70e824fcefccfc5597b6371
BLAKE2b-256 650f524b80d8f9a882c65699dc099aee58dd95781af8651887fa078133ac5935

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 67ac1fba9db1b792cdaa5e3d2b9c53cfdba059667c8d5c8b606cfbab4bd8b83c
MD5 8a4844b6aaf8930081849966a8b88def
BLAKE2b-256 26fd1c2ce5d425aa6259b12c5ee16455c17191c10a0009d29db503b36afce89f

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b0c3d9f067f9110d272d3a7d57b2003ac34b400bff86ecdee3a933ada6839de
MD5 a7bd1d85a8e9ae6545430e7d9e4c279c
BLAKE2b-256 ea54764d493ab03e0b3927d5e0922c68114a93a53528f652446681076ddbf4bd

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d43a1642e05199e1d1d003976ed663c8426d70febb91316a596ae1d71a32c43
MD5 c8cb390eb491b33f7b017ca4e741cdc5
BLAKE2b-256 7cdd324ec971ce30c0428e582a552ecae3db9c6ed50c8fe6bf958c0523bf8ee2

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d77c090d454ea327baccd6a77efc8df74a070f2f62a73aecb5cb36b5a5857f82
MD5 a69d24013554337910e9bda2d9a71990
BLAKE2b-256 5dd308e0ad55a6d4914ef4a300a6c4cdcee071231011062e65dfa6f2f1ce5688

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 bae244837c798d0cf01fb6dde0ae113b24229ac981b000f89862e845a332bc2f
MD5 9f74b76349437944a933839695083dec
BLAKE2b-256 d8536970acdd67740c59ccba1507407a535ef9f1df5baef5e8816e0b9651d3fb

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tract-0.23.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e2506345c8b07b574f5e899c2c1d9922cf1a45d370542d2c4c768904d68405d8
MD5 f2ea28caf290b29deaf6ddee0fbba35e
BLAKE2b-256 7910668ed6658a196e66a4bf7a7a1a3970c2f3203c66fc2d37306e55209913e2

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5b1c186180fc7e925682e8b8d11566aaef4c84ccac592eb7bf9a024ed1929f96
MD5 3467e0b9b3451f27b8bd46f6af89954c
BLAKE2b-256 bb195e6810d1f870b29cea6095bc6511588dd0c0eb597beb55012a5d60bf2ad4

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 51a8f870e0e841307a4838d50b61b50a6bc8e25c2ccd44cd24e4040ac8e6297c
MD5 821184dcf64c104b7fc5fba6ea7079b2
BLAKE2b-256 463c7d0d51005bee1f369dab5c9f4714bdcde0537fe80aa9b9a69f2c70d2c23e

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b00acbd97cf745ce50a19e0306715abff4d8fe95dd284a3e5b52ae598fc0177
MD5 bc14c9531dc79e9ac3c60e681aa02a20
BLAKE2b-256 7fb642be1c1949dd3d69e4f1cc69083c7ccffabeb0954fb75b6bdb55a3b1e1e7

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4d2b6fa4ac98617da60b86cbb8805faba06463f3ed9360b3e5485b673a704242
MD5 96791f4fb966b5b78bee3fb3c198f29f
BLAKE2b-256 913d58ec8d2b5c37af9907d8dc7bd1b65c9150fa7214c2dc7e02fa2bdc5099cf

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 0db408642da25957fbfdcfb8406da636e7bbd6236daf64b70369fbef04e8b8a7
MD5 0713ca949b3de9492e071fce87fc1e66
BLAKE2b-256 24aee7446b111ed837cadd5a14b08cc0dc435da8b9eb71048d1a24055c6437d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.23.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e9f0d478ce4b5c3700f706b69252ac721602d8d313f1f25325090ae6a3afd1b2
MD5 c6e68dbcdda0cff23263e6739b2667e3
BLAKE2b-256 80016a27a099787f81cfd6bed84432982902ae07c335f04d4217f61f08fd42bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 88cae733d3fb9d251346e894feacccb3685083c52288028bed6fa381c70575b7
MD5 0800062c4433a4ec51b2834ad819930f
BLAKE2b-256 0eab17de45e39cf305fa40dce7cd998ebb50f6587cc809fe492d0ed56d266b1c

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 867e9be9cf90b98344c179fdfcd8c424ae22ad7e45be403de411ed6abaf5e5f5
MD5 60b33ea2196d9904cdec2d2a82919ada
BLAKE2b-256 a4222d7cd2636609e3bf552cc23fc332ff0d666ae6c00fc25beb8ca03459fdea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72b8963446341baeb2741ff9557dfb8d8adecb6a55165bcd3a22ba0a3a413299
MD5 4edce0e35231e8c8719e7b615507defe
BLAKE2b-256 f74f1b8eddeceb2027d31a95b816c76d62e12e23bcddaad28d2ced4275b6496c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bf56a6a79ecff2e6ec2c7ddf0796c2bc74251906c44871cefc7dcbbc09bb3be4
MD5 d1cd967f343144d74d31ca799efbab75
BLAKE2b-256 ea2286d205d5fd25ab030c369996d054ec4b069e77e560064d7072c808c8103b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 14e0e3c30a23a399128b0c99366fde03fa66a5b4b3514d2bfe88901996392bd4
MD5 348c07b84a6ee696b6967efd2890b823
BLAKE2b-256 0b0e22a7d98fb6d50ca2639caa14029da3492c48dd44387f7ac822e5f29fe922

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.23.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e850be3309b31ec516625ff9e48d49382b790a4931ef85ec3212dca47d02d45a
MD5 649e44c5d07796c9b3802bd5de8c93bc
BLAKE2b-256 a87c20d5781f756291be0667f055116a8fc40e601692fcf2122e37b83a738be4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec29af4666fa0995564b65872a9918195bc016d27a39f2a79deda693f8535dae
MD5 ba5d74a8cdf9f3eacd3cde25972ba427
BLAKE2b-256 9ca652e1604703a1aea4abbd8ac39da42d2dc0a7b822c785262ca867ad3b2b98

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd1a7dcd446d11821c323f286c79cc8565aee744a5ab4f3805131474b4cccf66
MD5 4c610c1c4fd02d30b46d5a3bbff1b6fd
BLAKE2b-256 789ef38617edc53ce121681168a61ba07460d25d0a62b763aa77491bea56702f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb5d79aa177009a05990ec630f70d8c300644ec891a37be4887f43e538d64bdd
MD5 c24d7a5b194d33fa3a3b0ac94d982cef
BLAKE2b-256 57f0792a25434affb110618bce8508ef78f1c82441bf41ece5d1c921e49ff512

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp311-cp311-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1f3d4678c0336e7f8de580130fd21be32c15e01868dd4833fd198a8663e8346b
MD5 666bf3f18a3c959189886e8c97511968
BLAKE2b-256 d75e85a6364b2ab7314362485229eef44783d045204d982051117d82e8ca8f2f

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp311-cp311-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp311-cp311-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 b6ce3902ffc04afe753d1c0444b4f4a6b5c80173c0875164f0dc49600258b94e
MD5 c384de266592e038648c21b98c28ff10
BLAKE2b-256 dabeb7304550fa756756ccad2d806c78d01f777b903738ebdbf674f759733c15

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.23.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f844dfae83e2bdb66ba2b0660c416e39c6240292548aaef571a2881975e14fe9
MD5 356b1ded40777c748ac6eb76c42ecb0a
BLAKE2b-256 86d00d099b5a64dffefad2efaa52aea9350ee3e9ca4830939493e90a24b3c872

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec93af331023dc28c6fe622b565e2befbefb358231fe7df127e0be3dcc7ecdd2
MD5 76487e94ab45d0dadfbc2a915c86dd01
BLAKE2b-256 e7a070c8b2e652a61cca5d8811d99e84d02115b6e4a5e242853b6fdc815fe064

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c6bb008db3ecc3b378e861e3a4eba730d0f38bcfaf366261086eb71c995b5de2
MD5 ba742a05a6d6f48049e3698479a9cee1
BLAKE2b-256 7ea62a01f7009f11655b3e1b765eae1cce7ee16b033768d068dbf720755cb3e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 033d21d844f269772104daf6921f02df3a83f1500d607a5f40919ba9a241c55e
MD5 e765d6bdd141c71ece0d4a898a1a2801
BLAKE2b-256 856a5b736976613c6aee55368caf04dcfb9ea41ba964578ea9bb647d1f1255ce

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp310-cp310-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 61524d99afbf78e4019a67041248e67b28f1dc68700d5e9798bbad445900157f
MD5 66c62508047151fe6375f7b8556abfe6
BLAKE2b-256 8755d21542cfb26ad5ded98044d07338d1d31413e7b103364d2300c4b66b60f0

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp310-cp310-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp310-cp310-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 21d2a51c3878b122fce8ad87ab5e1852780583aabe74d7d036723aae37c28e48
MD5 d715f6708cc20c1f7c6ab7a641a769bc
BLAKE2b-256 d78ffe7ddeb513b967617f14081b5e0772f08c4f00db2cb64a0cd4b4d42b2373

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.23.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tract-0.23.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 4088564ac92e5cc308da6e13a660835dfca294dd93ee82e8f7cd354cf879e0cc
MD5 e2a9f1e6b3ad135f5c6a8c0f9aa22923
BLAKE2b-256 cd1ac81126cd90598cb6f57ff45d7518743f40b766631b501e5690dcb43c9d4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1f3764dc2c14a5013939efaff54848bb4507d36ed198e210e109b2b28751d305
MD5 320439ef82541776e2e837e516d4891f
BLAKE2b-256 80575aeec6d89e7f6fef2b8070c927c516a615d9c2ab7cb361dfcc5be7268b86

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb633c739961877487c8ba4860ff28e259fd7cb22bb52eb13bc5bc02fd4f4b97
MD5 baf92eec969f884f3cc0e030d2d9239a
BLAKE2b-256 ee903a5fce01f391a99d485dd6bc6685c65a70e096869f521d2dec6cf71c8fa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.23.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5735ef5bd904790addd867512dd5d8b947e67c169eff11e3b6df2911aace2d5f
MD5 3695a0ac40f5a35635ae0b281dc49d6b
BLAKE2b-256 87ff49f5ece5530deb0fb6e9daa59529981df88b440323af043bafcfcd47dd4a

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp39-cp39-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp39-cp39-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c9fcc487fb90c675da0b9143acdd122fca499c68a73b057d5cd2dfc7f051d392
MD5 4d1b40e505b53375d9c44b7d0ce0ab1d
BLAKE2b-256 9b68475c6e73c090fd17d995642034bba5680622cc99a1e3b0a20fcc97692897

See more details on using hashes here.

File details

Details for the file tract-0.23.1-cp39-cp39-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.1-cp39-cp39-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 c48979b6549de1320c44cf00fd5015e3ff070673129da88a2a707b9fb67a7bc1
MD5 fc135f73a7ffddda03eec023510d5e19
BLAKE2b-256 76972005c3d936564c7d20aa8430e892db8ae27334fbed2f50e08051d4e84143

See more details on using hashes here.

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