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


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.0.dev4.tar.gz (7.0 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.0.dev4-cp314-cp314-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.14Windows x86-64

tract-0.23.0.dev4-cp314-cp314-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tract-0.23.0.dev4-cp314-cp314-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tract-0.23.0.dev4-cp314-cp314-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tract-0.23.0.dev4-cp314-cp314-macosx_10_15_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

tract-0.23.0.dev4-cp314-cp314-macosx_10_15_universal2.whl (18.5 MB view details)

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

tract-0.23.0.dev4-cp313-cp313-win_amd64.whl (10.1 MB view details)

Uploaded CPython 3.13Windows x86-64

tract-0.23.0.dev4-cp313-cp313-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tract-0.23.0.dev4-cp313-cp313-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tract-0.23.0.dev4-cp313-cp313-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tract-0.23.0.dev4-cp313-cp313-macosx_10_13_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

tract-0.23.0.dev4-cp313-cp313-macosx_10_13_universal2.whl (18.5 MB view details)

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

tract-0.23.0.dev4-cp312-cp312-win_amd64.whl (10.1 MB view details)

Uploaded CPython 3.12Windows x86-64

tract-0.23.0.dev4-cp312-cp312-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tract-0.23.0.dev4-cp312-cp312-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tract-0.23.0.dev4-cp312-cp312-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tract-0.23.0.dev4-cp312-cp312-macosx_10_13_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tract-0.23.0.dev4-cp312-cp312-macosx_10_13_universal2.whl (18.5 MB view details)

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

tract-0.23.0.dev4-cp311-cp311-win_amd64.whl (10.1 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.23.0.dev4-cp311-cp311-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tract-0.23.0.dev4-cp311-cp311-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tract-0.23.0.dev4-cp311-cp311-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.23.0.dev4-cp311-cp311-macosx_10_13_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

tract-0.23.0.dev4-cp311-cp311-macosx_10_13_universal2.whl (18.5 MB view details)

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

tract-0.23.0.dev4-cp310-cp310-win_amd64.whl (10.1 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.23.0.dev4-cp310-cp310-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tract-0.23.0.dev4-cp310-cp310-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tract-0.23.0.dev4-cp310-cp310-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.23.0.dev4-cp310-cp310-macosx_10_13_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

tract-0.23.0.dev4-cp310-cp310-macosx_10_13_universal2.whl (18.5 MB view details)

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

tract-0.23.0.dev4-cp39-cp39-win_amd64.whl (10.1 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.23.0.dev4-cp39-cp39-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tract-0.23.0.dev4-cp39-cp39-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

tract-0.23.0.dev4-cp39-cp39-macosx_11_0_arm64.whl (8.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.23.0.dev4-cp39-cp39-macosx_10_13_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.9macOS 10.13+ x86-64

tract-0.23.0.dev4-cp39-cp39-macosx_10_13_universal2.whl (18.5 MB view details)

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

File details

Details for the file tract-0.23.0.dev4.tar.gz.

File metadata

  • Download URL: tract-0.23.0.dev4.tar.gz
  • Upload date:
  • Size: 7.0 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.0.dev4.tar.gz
Algorithm Hash digest
SHA256 0b9ce53ed769524c34e349e60ae72de1eeeb8e4012b334e494538ce489653c65
MD5 3bd3d28b21fcdf3f50114b837a8931ea
BLAKE2b-256 5642d8b66945358882ab55f34fd5c4eb14c1b65f340a905da77259f3a024fe37

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 86f6d1a75fd060dfd5136be7ea0c875f5fcd9d7e3bea5912012aa1f0d1b47d87
MD5 c3e88155de5a6e519d250a862eaf9e9f
BLAKE2b-256 c0aff2276bd14098def72a87d81dd845500470e246a239670739acc486ecf61a

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f920f2dab565d5f25c5bb8c5078ac1fa8a0f5e13989fdf0ac835a2cc94b44e29
MD5 0981a34c760a776612e629fa5ba6f084
BLAKE2b-256 5f3de2914347a5db2157a82a0a5495bc8dbb9f2f17210e306e1eafe28db121eb

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 288e2487c649a171a6a0528d9094549cb75811d0b042381b63bb4abd3838c9a3
MD5 660b2cda1387f352a03f4b3d720e3387
BLAKE2b-256 4663eee76d7ba187963dd0894292dbfc736cf529355f77f169e3d8f58201f296

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 224c910964bd47e724ac008af4b633444e6d705599fc0c113e544c792bfc5970
MD5 c9e598cba1dbb9f2233557a2766b1f78
BLAKE2b-256 4d43071182210202001746d010bbca1af041740ac2ba273f8f724256be356eb1

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1a4e9a00a942ac6fc0d2f53e9eb76add28ef31300db8c834ebad04a8cc737e41
MD5 48f500806918cbbff098f3ad131df3c9
BLAKE2b-256 36b86058bbcae27a948a9d5f62c7a853be9d84567fdf9c9a58a61b62a23a6f43

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 3cb64b30a3b9fd2afc8291f76034b1f380dd736adef31684873bae071992fa46
MD5 738ae281b73c2fa43344db850afae1c6
BLAKE2b-256 e147510a4d12acc2fe80ef4ef6ec6be0326bfeaf69949f24377ad71817d71a46

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2bf6247f8339176f98dc3953fbfe415087ea596119de57edb14c7f5f5a04e97e
MD5 efc31c7a1a94d51cc9546581b96ac86d
BLAKE2b-256 71d1d37feecab80346372970141473aa39ddaae903b214f84594cf5cef411b76

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 568e85b5d3dc12729a4e0abdbb9d4983825f54578a1beb111f8388739f26f187
MD5 149c7fb5487d2af500f3b80295235cc6
BLAKE2b-256 a523933848750c7402edea08bfc24e5eade2c60a8c8865abcdca7eb00ef66cf9

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 49dd3f5ff3da09d18e2375ca133ebed7a2f83abb81cd3be1fb4fb8a984b3cd47
MD5 56e6d0994da388358207c7fa6b63e1ad
BLAKE2b-256 159c9bb45340bd9314f90957bbbd8a290274c611493a8bd00e04342f571340d5

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37c3c8a7fc75f90d9e7bd5527b5941f0ba6fa768b20c83eb5d07261e4b5346d9
MD5 b5aac17cb0113360cf4f84a0187b43cc
BLAKE2b-256 67a54ad3c5787030d7849cd809a5eeb549ac5d999c5671a9754289df68c50af6

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 432fb943dea5f9d8db207081151d43c03a600c2dce9dea9f1722ef60861d28ea
MD5 06313b024a6fd43ea31301b76b946b61
BLAKE2b-256 9ff6695ce32abcc8f16f864ad747c5a62505f01e4ebb083762ad9551e79c4cde

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 528f1e33b37aeb7b3e8679ef62f96093a5f580bbca3e83558bec4f2e8c9d605c
MD5 67176048af017030986d1c56292395ee
BLAKE2b-256 d3b1c0f414a7ef5b6825ff3e5b636a2761cfbb2a489f2ce577577c9438ed3784

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c68be8bc76c528612b7f6b6801656e34757fbd81848fa176f62ac0c608f9d8cf
MD5 0c9b762ffa153e5cd3d8191a6ae8bdb1
BLAKE2b-256 226bb90745a2b8c7b602da168388dd2d156a4dda79d588375a48fb8805844a20

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc7058a0720dbae1f3ea0b04cc825133eb1d7a1eb4b55d6d8c4f448096f4c7b2
MD5 9438bbd7deec6847990c4e75b995cdbd
BLAKE2b-256 5b2c4f6183c5fade694ca442827958fef50698451fb74234dd614e246d3dcbc1

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9ccca56138b74a3feb49579dd73cf036805e4b56ddee04df077d2f6c81912b26
MD5 5547e963b8d7fa3a2dfc8f506be249ae
BLAKE2b-256 714b39e74b3f2c4be78185ac0b1520827917bc5f051470a0d77072dcb5bbf0fd

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbd53fbaacfe2d96d7ab21c167caccfe0c9cb05f024a12661bd105336eaf80ef
MD5 89b66c773a3d83125278b2d16aa7c740
BLAKE2b-256 27f4951d606a8ad50fc4cfba89fea40fc49a47d985fe929f2cbcadea185d54f6

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f101e80e86bf4292e703ef42e5143acfb9c3de4de96906e9031b8f072f313339
MD5 038181d4de15439ba98479f07f6f26bf
BLAKE2b-256 85263bbc7a0f0f2474de0f2ac697712d7253744793ee81a37a39085a03d3830a

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 a8060ca3038e2ba57e8dac7836fcb120cddbd518f09cd44ae10d52a936d93be7
MD5 737031f937ecf594e07e7158e74b122e
BLAKE2b-256 455c42595652e1de6eb23f17b3eabf8d2a27be325c6c9a6526b4c2139b00e2ad

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 169c695e04e07925b74c3bede59822063a286e6232c0c6b6ce85900b1b5678b5
MD5 779c952b2b49c3028df090ef960c8cf4
BLAKE2b-256 bf0de231d87d6e17baf929d9ecaad627bfa87496dd1e058d1fe01cc2a7fff86f

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c59d06a5a75dfaa0ef4c86ffe6d08978af04be9ecd19773961fd8eb87420b0a1
MD5 cc7c45047fd165e8c94132c6d27435f5
BLAKE2b-256 4f2154ca65dde72d33e4cc540abb0dafe24e7dac8f91517282008636a9fc3d6e

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b51d1643d57636161cf19aeb245a2eba01a47529cd1d3afdea49e273502ad7a6
MD5 0eed01165975f01c4d6249cc4d6551be
BLAKE2b-256 387587bc81c2e2342fb5db7d2b1808f2d8a84946b511d13007dc86584ecc1a8b

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b93521a61e45343b331b9b94af2b91239d8f1d8eabdf78623c19d490a148c2ec
MD5 e67aac94de3f1aec6563149d0c6c48d0
BLAKE2b-256 024d1db1ad1c1f2e0121cb514af34b8da7e8099a14b361310ef142b2bcc782ae

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp311-cp311-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 593163ba0a36c0af4e38bc39217452cb7d35c81dbde6be20edd0bc4632cc4549
MD5 b107976002377028a3207ea4c9843de6
BLAKE2b-256 d7dc4ca74fabebff4f4e503239aa814cf043944a2fbdafdd2d678e0ab585719b

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp311-cp311-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp311-cp311-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 f421146817e729116734a130e6f539137eb3b4795e184d2e3c7fd04baebd53d3
MD5 d49c071457c5493c00a4cf66ce45e432
BLAKE2b-256 d4f9e2d3f4843d13e38ddaa4b2e46900f7007c704b3a854b6eedf0ad27ff48c5

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7cffd5920166974671d4cfaed64bf474a74e84cbf08582368096bb7bbf777f88
MD5 d989c0b4b9482182ad0dd0d06bd7a0cd
BLAKE2b-256 10fd7ce673a6be71273913a4a73f9b189f81df348323aa234b14f65b2591d3c0

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7a909244881bc9a03337dcb19767d57eeea6ed01776f4c6f603f977fd21467ca
MD5 0b371a928399345b4c9c25368f35ba9d
BLAKE2b-256 98e2f236c609d0efe42f74638084d5644053eb86a0462103fd95a4efb1132b3c

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67d85ef0f8b4d2e4aa39b834f399b731a223874d4fb4c8e8f6bda5304c312ef9
MD5 15b30abab7d37b482f64d330b2e12f84
BLAKE2b-256 18f4d10026fc47c7c55e5495c6cb0ddbabe054f1c9e8b98db938419247328fe4

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea4c256d5870ac0aac1ba098679b276ba76e3edced2ee7791e54805d6031905d
MD5 9f2722a47c991f2e0f28085e204b3822
BLAKE2b-256 cf8d7ed9c0eb5df3ea73c2853cac655a921f4277a38369928ec23e04ffcc467b

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp310-cp310-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 673cba317cd2970f262fc9251dc03460567db11ff48b0adc91b0dd9ff07f1daa
MD5 149d801d9fbc9818c7de8aa05706199f
BLAKE2b-256 0af2efff4ac97ba783439d074ddf8f98502ba3b6d9ba8f4798aa1c33c0436730

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp310-cp310-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp310-cp310-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 9c755ccf82dc5d8f8ebf069660b248f8c4b6d9c1dc84eccc973866c3a88f8f1c
MD5 e185d8f6e6443ae5435a9caded4c1742
BLAKE2b-256 2bb72d7f01db76bf12a368f10df501e658434ae49025013612efeba08253c86c

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tract-0.23.0.dev4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 10.1 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.0.dev4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9d77a112a9dded7a2dd1a90bc02c66a93c3fbabda9dfeb5186ffc8f800e14b03
MD5 50e75bc1ba4dfd25a36229e55bb56a71
BLAKE2b-256 aa84faae00302c1be9edf057497df0507c2b9b13375299c42987b95718efdfaf

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4305f5a246c91a39c089cbd232ee586f167d4fe35f68d5cef8168ca6801ae85b
MD5 6f364e538ddd97bef688949f8c44d94c
BLAKE2b-256 63ac4952ebb10a18c16ce5a6fc297354d98a1d34fa9f5eceeb8827ba15b57eaa

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8f563a644b2737a4ae72447827c23c37f63354c539fc8b4fdbe7aa8ce78fc1a3
MD5 c74f1146971ac4a740229b96695a7176
BLAKE2b-256 6f5eeb419311d445b1601f81196073246e099f9734a3fcb638bdd58e4ebe710f

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b394134f1e91781b26d48ae571a3736b445b75b08f5b2337bb4dee65896af59
MD5 34e9e292bc7ef208f03d2fbbf149250a
BLAKE2b-256 2bc9dcafefa7a38f1a39579f7be4d3986813d9819696ec3c2181d4c546bb6b8f

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp39-cp39-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp39-cp39-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 78ea81440314e27c99ba4a0988839b78705f099e448ff8c37df8a1da45f61239
MD5 12cf730d6d0a2f39989c1ac89a6d7806
BLAKE2b-256 53c6b6ded07c99aa2d733eba4643bbc1197c1115a47783503844937525c5f6ea

See more details on using hashes here.

File details

Details for the file tract-0.23.0.dev4-cp39-cp39-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tract-0.23.0.dev4-cp39-cp39-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 53c3d4256b218aa3f886826d7ea4a454b623fb532a80655e6a270624ccb856a1
MD5 2bac822b2459c5ce4eaa91314aa54ede
BLAKE2b-256 20443752bdba66569e1aef6659c6e5b4c746b2fae4407719f26bd629d7a7b93f

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