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


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.21.16.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.16-cp314-cp314-win_amd64.whl (8.2 MB view details)

Uploaded CPython 3.14Windows x86-64

tract-0.21.16-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.16-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.16-cp314-cp314-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tract-0.21.16-cp314-cp314-macosx_10_15_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tract-0.21.16-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.16-cp313-cp313-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.13Windows x86-64

tract-0.21.16-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.16-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.16-cp313-cp313-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tract-0.21.16-cp313-cp313-macosx_10_13_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

tract-0.21.16-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.16-cp312-cp312-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.12Windows x86-64

tract-0.21.16-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.16-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.16-cp312-cp312-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tract-0.21.16-cp312-cp312-macosx_10_13_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tract-0.21.16-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.16-cp311-cp311-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.21.16-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.16-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.16-cp311-cp311-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.21.16-cp311-cp311-macosx_10_13_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

tract-0.21.16-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.16-cp310-cp310-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.21.16-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.16-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.16-cp310-cp310-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.21.16-cp310-cp310-macosx_10_13_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

tract-0.21.16-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.16-cp39-cp39-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.21.16-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.16-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.16-cp39-cp39-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.21.16-cp39-cp39-macosx_10_13_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.9macOS 10.13+ x86-64

tract-0.21.16-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.16.tar.gz.

File metadata

  • Download URL: tract-0.21.16.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.16.tar.gz
Algorithm Hash digest
SHA256 f025c9a03f6419893cf50bf0349df7ae9dad1589fcb3141e649c732186c72240
MD5 6732527362062513a20d58f1c2791762
BLAKE2b-256 8b1a492152b1398ebd9a86c53c08dc44e9992d9d9e245a14ca89592768cb7b2b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.16-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 8.2 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.16-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 eb06655af88eecbaef827c02effc073e2fe45ef6bf698deba10bde134dcb6f09
MD5 6f146278e3988321db4ce3f75ea62723
BLAKE2b-256 f5de81de00a03d862f1bfb84b95e20c87e4363d7e05d4b9e053d841a1519d12a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8fdb093dae4d434509ec4c945e6cc6819bd017a6c745b9732312f3641df0f7c7
MD5 984c4143b39542b5517888040ccb6e7c
BLAKE2b-256 5bae976c5a00b0577574fab69902c5cf6b099ee896ad0a1bab87d2ad46bc5729

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 22eaa323ff637982cdca4a004f30094a216af66a2176e374316a3b8c7fbaf129
MD5 dc8df4d0f5087bc60964565dcfcdd35d
BLAKE2b-256 158eb15dfb19b1c89e26681d7793a29f124a5fcb7a45d5b73856e57d7a894c8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b93872835109bbf8feb479841470fed1e9897a4b5973e3586f98729313f8af2
MD5 fdbacce786aa8cfb347f6bf469807e3c
BLAKE2b-256 73a43afa2831a443772e903b076d0c3a0b27aebf4991298d94e25431b102c30d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f85e2240b897b757fb0a4e20cb9ec49990acc37426d504888abb65649bae6d9c
MD5 86d8e4df28124231998140ad1f5abd25
BLAKE2b-256 9b90d9e747034b0d921e9b698cb21b987cd707231bb98a921e0ac5f5335bc2ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e8b5afa73f67b0cd92c75a9dda04a6aa50c172b4240985ec90387b519b56330d
MD5 40c0e15a70dc56e961784697ae541f0e
BLAKE2b-256 0f9d5551f93c62cfd75e3a7f9d459f1d82de4cb042222b27c1c25417e8299098

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.16-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.16-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2cf2a89758004c2ef2e34dacb6957a14cd9661730e5f423ec78963d9d014802e
MD5 3bd58e34b47e548b79291c0b31e72cfd
BLAKE2b-256 4e0e1777d42a68c5fe89666d2ae51e03e7fd8fd0f94739a0c62367e73e4e4999

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e19e8b1e80851037a3f40b2f88772f99f678ddbede8f706cc825d21fe7f5c326
MD5 03c1b6a31c54b84e73a01987ac2ff85d
BLAKE2b-256 060aa5e5bff7e645849c11a5edf8311d348282f6bd76a8ee79d0f775ed7fefdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cdf3eb319f9f8d97a80f783763487231a67863ab5ebf0b4e266d22b5a7827ad2
MD5 79bcc662110844d43399e7dac9ed3c69
BLAKE2b-256 96457504ec3c4c1c519394a64d37bdfa4100da1aa62aa2e9485644abdb8b3b67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f47052a837c1b37f9fe365eba5ac113bb635c1abe195e7b032cf04d4d9cb5b8
MD5 1d921e0f6e8040e871167cb83bbad273
BLAKE2b-256 6c10b6b119a98dbf2afa1f4e527f1079fd04a1a444cd2fa1fd1b199ea23ddfa7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 db97cce52464bab8d16629a88105a4b9afe3978dfb8ff63dc5e0a3e5e7dfc3a0
MD5 55201ef71929a434c1b3a12b663969bb
BLAKE2b-256 0b83272dc816335ce4ca7dc312513193cec1034e35b2ef707d2fe2dec0f0d950

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 b5bb85e7037c532932a4aaead19c90ce72ee854ace80a20d373548b64ebcadbe
MD5 32741a1eda8692b53797877988e6a7f1
BLAKE2b-256 e66523c2833363d8582a0a19a7a8c4f6db4395d2d1b11f2b52145c947e2e8ce8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.16-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.16-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9459ee3913b363119028055dace3446040f206d3960b25aa8fddb6f05fc3292a
MD5 035a38817b1b00db1ceb757fb0c4f41b
BLAKE2b-256 33899f1a4fa2410279bc7ec3081b41e56b1c5cdf519221e5fa3ae3c9bd972581

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a69a8ed7a3f54a9fee21b81fa942b7b706f6a1fbb261afd737141dd3edbea3df
MD5 eed6727c949d3713d4e63b7ed4c30bdb
BLAKE2b-256 fb6ea970a8516cce4e0d38e632a733ecdace7a44db3c013b23a842849cb42766

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e13f51fa067447e48b36d519ff4316337dbd49a5925d9e390cc87f253eec792
MD5 2e302a4a92715765e7999b69213ec4f2
BLAKE2b-256 5176e0a4245938b80fbe3a3ed0c85199a08254125270ba84a318f55d538ebc2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1dc97a485b50190dad2aafef56aad21349c97eef8c5212eb8f81fc9220aabd08
MD5 65532a074d6edaffe8f949905f800d20
BLAKE2b-256 494c3d56256a830921bab383ec587e97b10a4186d3a3acbb898e0473671e2cee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c96e64b7ca0e40301ddf1f61cda242bd5c9a88d5cf1a8f43475c5147f4916bdf
MD5 5054421ad8df02b58d1cba7ba325bc32
BLAKE2b-256 4a61b09d2e0db74fe72a978f26799010d1d910439104fdada688c8029a36c472

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 4f44e8b6f3627c7ab3b7d87767449f972abb983486098e392baa48873ec1f4de
MD5 7eea158a31ba8b1231faaaa2eddf04d1
BLAKE2b-256 09194fd1efdb8299622c6176a95a82113c7ae560743977fe2e5a7ae83b17bf42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.16-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.16-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 48e0bb3da01e513a479bffb3a1b4c173ff3c407bf4a010d734080c2315c0f5af
MD5 89e28eb6e7b6880d121bdd3eec2e1720
BLAKE2b-256 6dda032b0a938d246ca072c7a8d927e71e767ece96d8da734929dbbfc68ad706

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 df85c660242cee95791a442c53a12f6ef93f1e8fed2ecb9f16145a7375a3778e
MD5 6819f8b4dfec19c889cd2dd50c05fd8e
BLAKE2b-256 3f3bd70f825a39528ef98e55c440e7cc92c38379248c75fafe4d55db034130d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec90bec8247ce1975b0a1f1b021b0f300284ff383dc107f637b0fcfa29e9b0c6
MD5 77da2277ef91c25c6925f2810605ec3e
BLAKE2b-256 e650cb07943470938c07586182f027c3f8780e1aeb4709dc316176214a83d648

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 622c91731bfd5582a4a6421481454a652dd57a5e4d8d2854cfe017ced2ae3ac8
MD5 7de8a584cd83cd9d939b1b778904ddfb
BLAKE2b-256 110f5b489242a1584a9aa0c33526271702ed5ba4f10b7fb5c6e46f8320088462

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 112da46a7750f2a3325aa15a7dfe13d3f302c6e40666d648e70b211afb9d2e1b
MD5 85e1282488300d60e5ea72188a050ddd
BLAKE2b-256 42939ef90ab52887e4396d759b9c029c5327f2fcf37c14ed98860184be8b11bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp311-cp311-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 0fed0dc9055dfc2d4b1a6cc6042d3b58493ae885e044cdb426aec194b262f058
MD5 57c0e521038ec965a5e5fd0109181bc8
BLAKE2b-256 e804c98963fe1494bc70e5efd0f141fc2ff24d6e2af16513b70e3b556c81e5af

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.16-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.16-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0f84a052cb2276a3dbbde437e27217014fb57f2ffc141b7152c1df5d41908ce7
MD5 a3b2812362cfbb05fd7af6aaccfbe7ac
BLAKE2b-256 a284ad2ae82fae65e9ffcf741beb23a1eca8c3ecb841d76bd0d334ed0cf48d1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 59f96ce858e1459f22b0cc32345c96423b8f62d90f320063b55b244fbd7e88cc
MD5 31b537a7f5e1c0ab3538fa6ad6549bda
BLAKE2b-256 5aff13df7a73df29418d1124270b90ede163b8a8c554acb5d0634f5bc9e7c564

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 005406cfe57680e2095bcf3759892e76c6f20447605ce513d2f7a4aa67d97f92
MD5 5f10f1242860955fd70920c91619bcc4
BLAKE2b-256 fb9d35709ed8924f11a3004198f5fefa173fe5e557bd6897a67b0ac7924b975e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f301e785ae00b5fc83288842bdc3bc73a8dc1220e90d560a5cd522685cb82b43
MD5 25c33ef1b49fa225a73a9bb5b99b9d17
BLAKE2b-256 ad4396beb42e0208ed29f4bb5b806fb1cb73924660e1a66cc2e6f326e52ff67a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 474a9d3abfab862cd1a38b81c66aec9f34be05fc55dfd7f17d0cc3eb31c6832a
MD5 9d6b1592616f75379dcd4ff94d84cd28
BLAKE2b-256 d88f2f8042601fbd8026a1d3921aca3b0e248c70b8991f5eb00512dd25bb03c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp310-cp310-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 f17ebe1d30897353933881739cce8d08602a67a5c5f2e34a2d2c5fc4676f7d73
MD5 970644a5edb352dc076ee81f315b46e3
BLAKE2b-256 c7635674585a2502f34d8cc173b32bf099d9ce6f96546012bca124fde47e5e4d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.21.16-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.16-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1bf1592ad4b9ad29e3a40ae96da92503d5b4f864b8b7fb38b37b7bafe0c1985b
MD5 ed9b578e6d70e331427bf5142d51d2dc
BLAKE2b-256 986533fbf74971d2829d29dfe8dc119e2b7c11e451b22efc5c311d1d64dc088a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 992204a2eaeb915f9bf1ca6f10273d96aa17163f8204f9e09b9a8bc7c1592c46
MD5 d53c3a050909f6d3b80a49794b64748c
BLAKE2b-256 92e1784a32af4396a8d0bb3f623747fd29bc1c1ba650ad6aa23716e0c9aa8879

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aea239ca8e6a98a16fe8ab48f0c7b88c6912500331d5d3ce916a950b54e5b44f
MD5 91fee7bb021de270472e8fb7922c7241
BLAKE2b-256 fa8087edbd93b471737c9185791ece149fd49edcde65c832f42dbd9918ee8609

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01366e3ffea63bdfa6731c199088ef3cc47dd939a44a5255987325276f0531c4
MD5 9eab0632e9b6747e1fb0737153e21c93
BLAKE2b-256 bd41fd7559de7da73b2d8bc5c1bc016ec63c7efbeb859d0aa76e1f63c5f037da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp39-cp39-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b84cb4b6f92d169034664536b9c7b615fde92ae3a7d4a71e5cb692b143223662
MD5 8c569d76ea3e1ec96da60770a413f341
BLAKE2b-256 ea57ff196ea246643a5d0272b1480908dbbb57adde52e397a0b9597df7698e92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.16-cp39-cp39-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 df23ff4330825deceb30be4215691c2aa021cbe7845d2a002bdfe4910b163a72
MD5 90a6c62e2c8331d6209eae6e065fe34c
BLAKE2b-256 5513cca8ca2ba1e552afe6c9dd91b5c50d17c11059830c06b1f6bb56b86dd6df

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