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.15.tar.gz (6.7 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.21.15-cp314-cp314-win_amd64.whl (8.3 MB view details)

Uploaded CPython 3.14Windows x86-64

tract-0.21.15-cp314-cp314-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tract-0.21.15-cp314-cp314-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tract-0.21.15-cp314-cp314-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tract-0.21.15-cp314-cp314-macosx_10_15_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tract-0.21.15-cp314-cp314-macosx_10_15_universal2.whl (14.8 MB view details)

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

tract-0.21.15-cp313-cp313-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.13Windows x86-64

tract-0.21.15-cp313-cp313-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tract-0.21.15-cp313-cp313-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tract-0.21.15-cp313-cp313-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tract-0.21.15-cp313-cp313-macosx_10_13_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

tract-0.21.15-cp313-cp313-macosx_10_13_universal2.whl (14.8 MB view details)

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

tract-0.21.15-cp312-cp312-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.12Windows x86-64

tract-0.21.15-cp312-cp312-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tract-0.21.15-cp312-cp312-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tract-0.21.15-cp312-cp312-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tract-0.21.15-cp312-cp312-macosx_10_13_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tract-0.21.15-cp312-cp312-macosx_10_13_universal2.whl (14.8 MB view details)

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

tract-0.21.15-cp311-cp311-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.21.15-cp311-cp311-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tract-0.21.15-cp311-cp311-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tract-0.21.15-cp311-cp311-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.21.15-cp311-cp311-macosx_10_13_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

tract-0.21.15-cp311-cp311-macosx_10_13_universal2.whl (14.8 MB view details)

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

tract-0.21.15-cp310-cp310-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.21.15-cp310-cp310-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tract-0.21.15-cp310-cp310-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tract-0.21.15-cp310-cp310-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.21.15-cp310-cp310-macosx_10_13_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

tract-0.21.15-cp310-cp310-macosx_10_13_universal2.whl (14.8 MB view details)

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

tract-0.21.15-cp39-cp39-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.21.15-cp39-cp39-musllinux_1_2_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tract-0.21.15-cp39-cp39-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

tract-0.21.15-cp39-cp39-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.21.15-cp39-cp39-macosx_10_13_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.9macOS 10.13+ x86-64

tract-0.21.15-cp39-cp39-macosx_10_13_universal2.whl (14.8 MB view details)

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

File details

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

File metadata

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

File hashes

Hashes for tract-0.21.15.tar.gz
Algorithm Hash digest
SHA256 fbac220a4ba317c3b4987f5d852e67800152f60fb27096cb9f20bcce8c8313ea
MD5 21ec8900c1aa3220040d85d7dd96f2b9
BLAKE2b-256 0433906f16a7c62781ff5ce7334ad5a72af9286b6cbc9a19fee1ac8b994e7978

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.15-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 8.3 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.21.15-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 33b77748724e1d6068121845b2377b71552b0a98ccd0090d3aa81e75faf0a8d2
MD5 c6ac386a9f5eb0fd52232a7f07b87005
BLAKE2b-256 b89eda41204f3765337c3a06015a37387edbb04c407fc58d464f201f3bc7fa80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3f46544ef0ea2d0664107365430b89c30fd4f18b8b6ee80fa80848dc055f3335
MD5 e2b3c748574aa5ad865944d1b9e8bb74
BLAKE2b-256 7c90285da333f0dae255418bbe20e913c8665c84a5e02baa6850f58535859619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 720e07107bd671e1f48f331733004bfdbd37a7068e65aab37cd1802526c1eb45
MD5 f64f5fc20b0757aa3d6288695610ed66
BLAKE2b-256 7e107e26f96d1076b10a071cd3fbc618a198fd05b4d09c7fb67e25e4ddf64fc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8ff0f7088456daf5b7285576c0ea62493ed6101cffee392812dd580be35adf3
MD5 6042285d86d832c1ed81a7d4a2b8219e
BLAKE2b-256 fe9cd53cfe5830127b8ef9da6e473c9fad9e2429aa2e7b435a8a146480ab7a4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 373c59e13d9eba1654ff8a7304dc63fcd1652964e9c69ae753d653267be87f80
MD5 5f894fe0cec5cb59768318bd632a780f
BLAKE2b-256 c590009ad18e07f248c42dbce4e3ffa9424fb94471a4b7f00f9c88e07b2f1064

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e3d005f2840ad9e6d1773e6460b861e4fd776b9235689a5ea9168cf96f4c23fb
MD5 7e529bb3925345fd12f8c1bfaa899c81
BLAKE2b-256 6b4173b1669682fd6715c4dee0ff9b57448eb8493515a22756bd9a3fc0695026

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.15-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 8.0 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.21.15-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 30faa55fcf2659a1e8009c98c5956bb78a484105360a3c4a12c90639b9feca52
MD5 600c7acb41faafdaf838b646d07ab4b5
BLAKE2b-256 c2adfe06faa20e31d1540d7146c13b918d876a107c31e14f96df63db5c3cee98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a46fa4303443d3eaed00b96413bfcde7915250d7b8de55d63ae3fe9a8861fea9
MD5 ea8bcfa48635cfe874c2c691565446b1
BLAKE2b-256 aee0d169c98a2b558bb0352e336a5e374c8a77532966d2fe5472045bd6287c18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eaa61ce0dba67b3fc137e448320b9506560de0453dbab055b4f143857ac772c3
MD5 5bb5a44b526e23b14cdc82245eaf8af7
BLAKE2b-256 98806ca3d0618963fd7c8bd35f6eddebe33a727047059ae567f9b9eb0f8ddbed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77fcce394fa5416b0170e7c0da4d515c80991a60cc974d753c4dd21e3fd88b51
MD5 a16d09f19c89d5e40495278b52e3a4a3
BLAKE2b-256 081c693e9a6011ed5e57530b41a554c301dbcf05929b0efbfe8ac9a4907d5afd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ae8d2fd5203433a2f54107e700a9c0710f67d94bee100b59e56bc5ff6ed2137f
MD5 d475f1e3166c124bdf2dbdd662a5a1b8
BLAKE2b-256 24d1d265cb94bf2f4e6f8064071ac11aa51cfb50ad8959b159331b5f8da70db6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 3f5fa3949855c5ee6d11eae6f688319f52d997abd49bcb5d80ac545890355ae2
MD5 cb34038f84c3c48a3ec2d157da7d923b
BLAKE2b-256 dd396feb781001b9ea683072296aa097ec3fb9da1f8b2832adfa5bd75a853fc3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.15-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 8.0 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.21.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 226d1532908c3f6766e982bbfc5482fe0b4ecafd65126b6d88e5196214a38a2b
MD5 f6ac7fcac9bce57e77c21a32e1cf90af
BLAKE2b-256 166888850bf62a718d3fe1858ed56871a64f3a851978bd5acf86bd840d631d6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 56321c3ab7c9886e57d29a1ad9ead3d9b4ff583ac76fdf880cdf67a15701a4e7
MD5 83b6908e071168985dc3cddfc8036ad6
BLAKE2b-256 7d1be889b49028e63731101fe444c1a6616d853d6184b3feaa6e25353b1b135b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4fd90f3182edebb0f6fd11e31d21e4837c833a4d9b855175ef96bc9d08a7301a
MD5 8c50ab14978b927b2afdecfa0b689c94
BLAKE2b-256 1115d7553c78a873d40dfc764e33f402961ba1a3fe301d1a6167dacc5522ec7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 011636f79139de3696b4c10a04c5015103ad1aec535dc6374c6e8025fb826577
MD5 8b175ce6bf3180c8189d5dfab491fee7
BLAKE2b-256 b88da0f1d5a04f0c8593916fc080fac297426f6810b4788f31c63219a15b856c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7656c7bd0d33ee4da6a8a066641dc12f7f3867bea224aadbfe21c952f8ec577c
MD5 a00cd9fc793a583e0a68ab5c17a1ae69
BLAKE2b-256 92aff186df859ada53663da7c286283c73f3ae2de073a6fb5155aa2d5fa9b467

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 eeaed9d629934121b12bdca8d2784acbe7c21b62cc80a6c92fb7b595c169e8fb
MD5 b498d502d2429fc857d8c3f43673823d
BLAKE2b-256 2160d4213b8e5fc6dfdaac44dd5be4d55e5a447a5c99e20f365257df32fd07ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.15-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 8.0 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.21.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7446dd1eeb33f204d5fa5d2831586c70aaad77b9243e2264393564547d286397
MD5 b16ccea0a0ce4d5641cb96848d73e04f
BLAKE2b-256 64cd02a4d436601d8fa5ce5d077400cb03c24c2220cd6546321aec8c2f256efb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 af578d71805987bcc6e30a5b73e30c81780e63dc3c0ce82f7417e5fee3c38812
MD5 cf7413ac633bb51103f7f70017028de7
BLAKE2b-256 11c59c60bdc1f7961bed301300fe109e6b9815b9c88361de8b633cb8f91822c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6038f7eb39c3c4f4521297afb850133dea86f82695485afd3fd1b8b0c9faf35f
MD5 f25931fbecbcf20d589c636ccc715c57
BLAKE2b-256 c7fafa3b10a3a3036b2a4fd2f9e541b0bffb0372d859cfd05b1edb782d7d7654

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 541fc6f2ad2f2bcd0cf402594de32964225cece31a083e7a1a0e6790f61c98d9
MD5 e2724e9bc2d5a09b77e9db252f008a60
BLAKE2b-256 fcdd6dd7d978a0545e39520896f00ccef2c25468b887f73f8cf82a07a704c263

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 02e61d25d6655dedc1eef95dc37eb81a9457b680d64f3363408754d818b5d0b6
MD5 8f5cf197329c9eb5175682801413e0b5
BLAKE2b-256 ad0b46a7ddfea44a44b1dca8c7031e0657a9bf37359aafb3d2ebd7a450382b40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp311-cp311-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 d65b3f2274269200cac9dd99005e20d4bf75a320d239269bb105b6224478ad55
MD5 3aeb1bc09de670b30cc17bbc68d36641
BLAKE2b-256 6526f3ae504d6b26a03188022620224504992109294646ef444aa304acb43291

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.15-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 8.0 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.21.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b7337547b94aefb34fedf4f317d135d490615e71faa54896560b1e556edee30b
MD5 d3ac0df21dea51a182c3c07db9418b29
BLAKE2b-256 585b67f1a6ed3cd4dd66796e26e97fdeb1c0d0871be44afa20ddb096521cbded

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec77b98e118fcf292921c61650e0d5863ca54785a73145e111c89b9a82ff8961
MD5 b7cf67bf7fce8102821d55f47a2955d5
BLAKE2b-256 240382e8b9e571456b235280a0ff7230a2080b76eb7c2e887a55ae96bfdf125d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 18c5ba9911a5d3ce6278c658ccc9e2a74d9d103c3fd46c095c4643ee052f5ca5
MD5 f15b7e0a774ba7648ee578e8fad66d1d
BLAKE2b-256 703f0d0ef00252b65c192e4863973cd98f387d5209653fe44a545a8fe1ca53ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2387bc7d2d13368d9c8357c695e56242f7192e56cc3ad29e459c7f5bd40d2cd0
MD5 0c4c75aa717aaafdd9f4e3b6b098ceb1
BLAKE2b-256 ff7b668649a3c63b0c17a1773dddb9908251bd78098bbc2982a9c10713883258

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 cfe7ac8fda239e834eb6c39c8d0b6a97fd882e5eec1f1b361764b188833f8c40
MD5 f1f0c9761b5228f64b5304cf145219ec
BLAKE2b-256 aa9447fdb4654284d60fdf199ca6923250eec4c9aab2b205f14667adc1878336

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp310-cp310-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 688e79626c086b781e604ba1fb3fd9053935fba50431a477c4e9681e0a4246d6
MD5 087016bafa9c1ad0a744f0ef4f534d82
BLAKE2b-256 d881112c83b612964aecf2fd27e18010e97ef896c6c8fcbfe93f47ae2c7f65e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.15-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 8.0 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.21.15-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e6ca90b32cbcbae51d691f7dc24d82b43aa02de53dae8424a9ee7dffc97f3c08
MD5 1923c1cc99ec43132cded96d08a82816
BLAKE2b-256 3342aecbe214f9f0ffa9b7a70908c712a572278cafa3620f048fa91a91e533c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7109037aff3db2876b31c39ac0a33b4c9dd6eb644cc8fda8ce6ced9a96cae6f9
MD5 4f596bda1bb2856d48f4ac88b6e21629
BLAKE2b-256 e799292c7a904e4a5c8988c608145dc2b37c7d4f68fce24294a1e8c295d61f5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6ef9495376f053cd8affdd44e72894a993311fde439ce0752bf8ae9ecf5b3cc0
MD5 eb2218475cd88c7b71453f13409d3512
BLAKE2b-256 af5d72ca4bf4fd5851dd42f2a8e76c56779acb33c09c28b2147b21b0f790c090

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c7bcb3d00b600aaf6b4d7722dce5b1d45b347887e5a49ccc2a67b3e9f400363
MD5 f080b90f3540722e531c46855b30e3d7
BLAKE2b-256 a05a4ad5002c1904203ef8dd0d402ac298c7c695d3ecf959c60709aea8f17ac6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp39-cp39-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 32cb9b97897e85a8b1125105444c761f8c1768b6aea38143839f2e95dcc57f87
MD5 9c39181b9222776c5272623bc6b544af
BLAKE2b-256 f245c78023f96b9dca3852a7c2df1d65d3c5fb3d48a46547616b9fd9b99a2ead

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.15-cp39-cp39-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 61cc58622d262a5e7a743f38c48ac5f7102ccc323052deaa36ef9ce8494a13ee
MD5 b60992bb3db6cf5b4da90661954e49fb
BLAKE2b-256 89443829afc060172da046662d334ed1d7a9d3f503ab06ec7d409bf061f8f250

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