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.22.1.tar.gz (8.1 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.22.1-cp314-cp314-win_amd64.whl (8.8 MB view details)

Uploaded CPython 3.14Windows x86-64

tract-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tract-0.22.1-cp314-cp314-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tract-0.22.1-cp314-cp314-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tract-0.22.1-cp314-cp314-macosx_10_15_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tract-0.22.1-cp314-cp314-macosx_10_15_universal2.whl (15.9 MB view details)

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

tract-0.22.1-cp313-cp313-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.13Windows x86-64

tract-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tract-0.22.1-cp313-cp313-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tract-0.22.1-cp313-cp313-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tract-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

tract-0.22.1-cp313-cp313-macosx_10_13_universal2.whl (15.9 MB view details)

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

tract-0.22.1-cp312-cp312-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.12Windows x86-64

tract-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tract-0.22.1-cp312-cp312-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tract-0.22.1-cp312-cp312-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tract-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tract-0.22.1-cp312-cp312-macosx_10_13_universal2.whl (15.9 MB view details)

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

tract-0.22.1-cp311-cp311-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tract-0.22.1-cp311-cp311-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tract-0.22.1-cp311-cp311-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.22.1-cp311-cp311-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

tract-0.22.1-cp311-cp311-macosx_10_13_universal2.whl (15.9 MB view details)

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

tract-0.22.1-cp310-cp310-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.22.1-cp310-cp310-musllinux_1_2_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tract-0.22.1-cp310-cp310-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tract-0.22.1-cp310-cp310-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.22.1-cp310-cp310-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

tract-0.22.1-cp310-cp310-macosx_10_13_universal2.whl (15.9 MB view details)

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

tract-0.22.1-cp39-cp39-win_amd64.whl (8.5 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.22.1-cp39-cp39-musllinux_1_2_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tract-0.22.1-cp39-cp39-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

tract-0.22.1-cp39-cp39-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.22.1-cp39-cp39-macosx_10_13_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.9macOS 10.13+ x86-64

tract-0.22.1-cp39-cp39-macosx_10_13_universal2.whl (15.9 MB view details)

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

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1.tar.gz
Algorithm Hash digest
SHA256 510b529fc7b91166e44eddbd2dbbade878badd2db670aa59a23c6ef577b0c17b
MD5 b7c735b4ba85c909dea89a355f2998e3
BLAKE2b-256 fe8028ef9f474a6b1d8ea64fcb6839e80cce563503511cb3de98e22dd29a0722

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4abe9c81137b06e4fcc903c31a2a292ae3793a53e36b0b26cf207354ac244474
MD5 77253d0f7cfb3b8664adc60b9e0f172a
BLAKE2b-256 f80b7e5312ce799001978b23c34fcc84cb0b19c4b43b4a40ea654658fd6482ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3c68e5e1a87aba1c24ab4195d954831c7951ce6e233d34dcc9ca5a9f97984b1f
MD5 2d7ad203c7cdd0e826a10f6cb57dd615
BLAKE2b-256 eae5d553e528fd52eae908b689ef9d2e81f11ef0092b20b8f578be120c0d7891

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ecae7efe4425cd984a2b89b16e5f79c911abd6f1fd3583dc883371b4b14e71fe
MD5 8546b6398f8674c3750e52f714696878
BLAKE2b-256 0bb8a20f935b2e3330a5dd6e520794a9b4941e6b0cb54780afe18ab1e6264c7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 17cd0db57860a9137ea115bcdbc3d4c2575a0612a1a07ce46b9d06ad19a2cdd4
MD5 40a55fb1b4433421a3a61b85ac694326
BLAKE2b-256 3c6ac5d84ddb92c604d9f4d5419d27020fd6f5ddb52a21193c73818c1e1c5c95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3c805f4616bd2befe8c2d5a4248a8580b6a6a07ebc9684f31dc2f6ce826f8201
MD5 c56067f7b2eac4c36c4cf2f812070174
BLAKE2b-256 f9821ba32db1ffd8bc07e9b7494160688cdceff30fe1e53dbf8c132b05a80594

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 a5b4a9be67e0887a21686fd5404c2d4241053703183d96c7013f8b233d7c6066
MD5 c4da64787fca18c8836253bd4327e7e6
BLAKE2b-256 4209dd9bb1af1a86824f97e1cb4d2cbdeadf231ce3ab2fac913ec7a9f3d68e9b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b730577bccc3a06562a98d4dc8d97c77edd3aeea70d0fe54172de42ae9b02f61
MD5 e44720393a2362df9d30987bdbc4f547
BLAKE2b-256 272aed41b1b543dd43a7a2228b1c34bf798965275a235d1a131d99b6605142fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c9457f48377a14c0642302f771a8120eac5d23caefc13822b368a94d04730294
MD5 d486c890fc2c59a25b52d0a5a94bda52
BLAKE2b-256 260bfb28ad79d9601ca9de7d0719b6e692d4d6e89244462b96ea32c7a1749d5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c813806b4fdce9d9ed162e54fde8ba026958db860d2fdf389e3f0101ef687a1
MD5 f676eaeed10401c553fc04b63cff61ff
BLAKE2b-256 efed61f80824330dc6723589b15b721ae71289af2f0d1ea91c3715a8176bb8ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ead53900d751826121009344246a1a60e19d2e9cedcf73c673db5da7c4c0483f
MD5 790c35d60a27d829229db38c3ed28c06
BLAKE2b-256 82f695965d9c4b5157123fc69e37f99a97c889920aef582b52fbc39dd95ade82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 99f6b467ec0afb771e8b75e06298b288641652ba6532a767d711cb9cc95ef533
MD5 9e83e0181e057d1f59766f4c49a61145
BLAKE2b-256 fee1d252ab138cad88207a6abfce19cb8ed7c818e4319707b7c556e89c00e1f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 0b342c271ebadde681bac0a159dcfedadd7e2ab59e3b40ef18b39850164d393f
MD5 535132ed056595142fc5b4d1ca533e40
BLAKE2b-256 dd36fd32b3f20cc2ca565159b2944f132876825ba711f3e997b58af16a4f9173

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e46ca08a2af1563642a5ed441b2061a7ddf4bbd3ad8b5ed7fac0ff0c51e490cd
MD5 a0902e2784cfb040ec8275bc62986038
BLAKE2b-256 d990c3c45bace4dcab9a02b67e1ffd6d7f9f10711a6f871822998cb0dec4d080

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 347cda0825562d6933fcb9f3d06886983f294f52fc26239a54988344faaf676f
MD5 200332206544cc92ca1cd48d42ddda8b
BLAKE2b-256 18e35786e305779c6ec7c72115b8665b218f88aace7873732f356dad35691f32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e02d023ab0e646679c61ceba1b27a022ae9b496fe47c4835edbf31661ed64616
MD5 21b63b845b1fdb8279be8178c3417a53
BLAKE2b-256 6c5f603aa861829e2bc5c9f94034a4a3586ed682d6fa21ceaf0b037eaf0631b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 396936a75771cd47f009e0b7c5ab84e0dd2705e97cc6cfdc1889b7af20c0a8d3
MD5 93047efcb1e802612c42616b558f86e5
BLAKE2b-256 b8a902d952b0573f42b41fc99bdda0bbcdcc3f9bf95c61fca886cf9fa9e045aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 755f2ecfa526b7df9216337828c1251df3be2c6595caf92e7f2ef9137cc264fb
MD5 48c2054a1d5105dc2bf2ba3012a8b5d7
BLAKE2b-256 cd01c940dfe5943bf8f75bf1822480fd2248999f5a2ce521cd0429784296e128

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 5170d3961c29a4fdf2a21aad6ac32df13fcbb29c957656fd227a9f34458e39a2
MD5 a1f7500b3c2908cd562e72bcfc2ef884
BLAKE2b-256 7a0b58ec8327cd3d9161cad73ed81cd56873fda053f54538fb31b3e257ead79d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d341b3989e3389f1afdf6b1992e1a203e6f84b5119329d7ee2fe0b23f6077776
MD5 bc064f576433786f5a45407a995db883
BLAKE2b-256 10d34e2d3754b9b41581403d478c4e7ce15966be2014d227c2924a818e1e2195

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f297d12da88cb75d83a3146c28473a7581ed708cba5c270922f144ba0a8e5a1e
MD5 aedb7b62b61610e156ac02c75e2ceb2d
BLAKE2b-256 eafb43a715385cf8a85b2d088b67d163c9f4b78d6d867cbdd1b250068047a961

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 555c39d506ea13e5c2fc020bf6e763da734728f4bb9ffb04c5c117381a3f0594
MD5 78d20026d2a082dd1aff893086697ae0
BLAKE2b-256 40fe4e5786ca450758f078be798cc2c92b80c2dd5661b976b4b9c35a9ad68e82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1d6dea51bb6fb5f1a54209e947d01858efcea9ab6415d58aad5d0b6ec5cbda2
MD5 f60528e63dbfd11787524e143403665a
BLAKE2b-256 d56442fcc541234dc9c0edfd432eb3fcb9057036184c7978c7b3c330e6d93633

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a45b79627eec3a6df5e9fb892c16a78a4c3167d30b5c8c6b5abbd533223dd06c
MD5 653cc94794125b451d609d0a9658b8c9
BLAKE2b-256 4dd6c66c7ff2b983c9da5f82da01c526ac2161ebba795a5520f061821edf57a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp311-cp311-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6416975b6c21185e088c33e634b8053fcf3ea49fccf2a6481cd4745d014a7d23
MD5 82627352a515f1c0151285f19870227b
BLAKE2b-256 245b8b9e819ed29eaf88e776a7593d11251e14d6ac7902d961fd1daa94d2ebec

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 43120b3c6de36e83026731313e2224af6dcf6d42ba31e285b9df696d3c135fbb
MD5 9f8ae6fa9bd3e1648f41a91b883fe15d
BLAKE2b-256 34e7046c04db630c650bd750b436c08dc92fb1599d2caaed522caeadac8c9351

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 75e51f247a1b87082229090648c34cf1b7401945f778136ff011f2166313ca45
MD5 5bc924a4aec436c9167b7abfc878e42b
BLAKE2b-256 af4c62dbeb9efb82dd2e34a848669396e7530495d4d9584341e23dd20e92ea62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6fe2e429a5e01068521e393ba06bf48a74660b0564ab0a1f4850091e65e06fb0
MD5 d096da14f323c8542ebf7f1a6a011722
BLAKE2b-256 20f6f9f688285713d298f4ddc880eb68cd6ddafb740d537f706a45dc467d418f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75af39a27748bee29d280e3e9515bb8e84a8068d859fb1e0525844899bbb409a
MD5 bdf8123a381f645a56bbb60236b56ceb
BLAKE2b-256 f0010024d8271342f2a687b1e672594c5e5e29d70c3c7ae6ed231b0496f12f30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c9dcfbc9b800e21b9e106a1451c8f46313098fccb11182daa6e3276d73b2066c
MD5 302b5fc90ef5312e04b67ababc223b15
BLAKE2b-256 9885327357637cc9dc7553d53e7b3b36d50790ea6b9c63c8f16ed8faaf815b41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp310-cp310-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 3e019b375b059ae5f61fe068961f3dd35365d2e00e90efb257191119fb2cb39e
MD5 ddf998ec0bd7e40a16d558894937d63d
BLAKE2b-256 6f34d687916998e6246adfa16245dd4b09bcc17d06818889b2de3b4ed166aa34

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.22.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 423e5046421f0b85d06c31435307632c3d4b5c7a19663a5e608dffbf5a3e3339
MD5 d282f63d4c13f0534fd326762f14b38f
BLAKE2b-256 b25ce7b5ac4009140b75abc9b11393eaf10a8cec2962cf32fa6e67959f90d664

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 23af8eea7a169de4ed23a36a3a97c1e33405bf25685aa565918b18fa0356bc14
MD5 1452b3fd90c7756236581a6286098f60
BLAKE2b-256 b093569ce1dbb7294b4679d7fbcaee607e1f6cd3615e933e867cdc8116966964

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 565e60f5cb963b746b268870a9aa77dd1bc5b58378fd1309e75efaa46a64e5bc
MD5 366a7c081151a9a15e4bfcc468f55852
BLAKE2b-256 44d142c28d9ab318c7e386b19ab5e53cecd47d0c8a745612973581e9d3bb0bc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e957c0a0953dabc8e2c33496fe0bdbafb1c839434412604aa1040a13393211d6
MD5 68e6ce9ce3212ef73a7f3e64e317c2dc
BLAKE2b-256 66f74d7e6382c939b2d9d5368ed17bbbf6da00a574ed5a66efbcd5ef2d964ea2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp39-cp39-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0834e52bc2f5cc88c1bca32e239e4d47b2dc53ae9e7230894f471614dd49d1fb
MD5 c113a71a60123433cc16a14c7042ee30
BLAKE2b-256 4ee4f2fceae04d3ae3c135dc7e5166864cecb4c03585f832a97a61127edcefea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.22.1-cp39-cp39-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 641ee28d7b92b274797f9ba6efc588dc9aaaaeb458aeacefe0ea54321f080970
MD5 637c982e427bc4bfb45860700e69c733
BLAKE2b-256 a25a0108db86984d8ddcfca4598be05a31cf9080f7f8bbbf24024cf1fcf27dc6

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