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

Uploaded Source

Built Distributions

tract-0.21.13-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.21.13-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.21.13-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.21.13-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.21.13-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.21.13-cp312-cp312-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.12Windows x86-64

tract-0.21.13-cp312-cp312-musllinux_1_2_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tract-0.21.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tract-0.21.13-cp312-cp312-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tract-0.21.13-cp312-cp312-macosx_10_13_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

tract-0.21.13-cp312-cp312-macosx_10_13_universal2.whl (14.1 MB view details)

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

tract-0.21.13-cp311-cp311-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.21.13-cp311-cp311-musllinux_1_2_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tract-0.21.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tract-0.21.13-cp311-cp311-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.21.13-cp311-cp311-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

tract-0.21.13-cp311-cp311-macosx_10_12_universal2.whl (14.1 MB view details)

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

tract-0.21.13-cp310-cp310-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.21.13-cp310-cp310-musllinux_1_2_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tract-0.21.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tract-0.21.13-cp310-cp310-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.21.13-cp310-cp310-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

tract-0.21.13-cp310-cp310-macosx_10_12_universal2.whl (14.1 MB view details)

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

tract-0.21.13-cp39-cp39-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.21.13-cp39-cp39-musllinux_1_2_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

tract-0.21.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tract-0.21.13-cp39-cp39-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.21.13-cp39-cp39-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

tract-0.21.13-cp39-cp39-macosx_10_12_universal2.whl (14.1 MB view details)

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

tract-0.21.13-cp38-cp38-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.8Windows x86-64

tract-0.21.13-cp38-cp38-musllinux_1_2_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

tract-0.21.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

tract-0.21.13-cp38-cp38-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

tract-0.21.13-cp38-cp38-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

tract-0.21.13-cp38-cp38-macosx_10_12_universal2.whl (14.1 MB view details)

Uploaded CPython 3.8macOS 10.12+ universal2 (ARM64, x86-64)

tract-0.21.13-cp37-cp37m-musllinux_1_2_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ x86-64

tract-0.21.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

tract-0.21.13-cp37-cp37m-macosx_10_12_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.7mmacOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for tract-0.21.13.tar.gz
Algorithm Hash digest
SHA256 1d431bd0ae9fb87453709af91b616394cb3410fa2253ea8d0a5aece3a934a234
MD5 46d9d6400c7f59aa80a383d0dd4f21e1
BLAKE2b-256 ec59278f7d75f327263a4954606e348a287335ea7382dae02b90989da47a0db1

See more details on using hashes here.

File details

Details for the file tract-0.21.13-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f36cf623942f5a172b137de831cde34ec5aed196f801a84a10c772275675e8e
MD5 7364f3ead2abe4b52ad2e6014a8224c2
BLAKE2b-256 a29b4afd370ad5faa53450a1ef4251a892b011a4fb9f18a00199ab181c95694c

See more details on using hashes here.

File details

Details for the file tract-0.21.13-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efbeb994ddac31390552f58f2cae9067d407279497dd25ccd3b989ac29243d62
MD5 1ef42eb9096fb45187be80ffa3184485
BLAKE2b-256 50cf2c31da1f297c9ecd1c9e243da728474bc5111479ee07dd987a475453d731

See more details on using hashes here.

File details

Details for the file tract-0.21.13-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f9c1e5503aa9a262f864cb89ced7c5334849ca2d8286de95d2470e68acaff4f6
MD5 64dfd9288ad6115e182953df6472bd95
BLAKE2b-256 5f95372672a3ca1ea7c1a362edfb1d3cfcec455842593a6b70638c0446e25e15

See more details on using hashes here.

File details

Details for the file tract-0.21.13-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8e60458220e77dfdf7e16b1e0758a9a0196766375520091f2ec15be319086d4
MD5 5ca74c2cfef0235bf91751e111b16d82
BLAKE2b-256 5d54a6b616b0a2c297b5c50baefe21417b7f80845d164693ebd8180bac7ff3b5

See more details on using hashes here.

File details

Details for the file tract-0.21.13-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 671b888df732cdb4887bfe12538e80ce07e9b30a1dfef716cc643e845c3b7824
MD5 368f543477eb4c0597aa8857260b0f9e
BLAKE2b-256 fab67374d046165898266612970678dd5ede693831266c188e91893b7e0d76d6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.21.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 36b97302a74b3a1033b2c0809059164caeb6ae07ab04cb9122341da765fe8153
MD5 e95448cc813b8236743dcda49b934aa8
BLAKE2b-256 c662a1a4dc1a5bcb3a97cdcaa392638522479a63135aca5146876a9e175ec41b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0f540c10ace0ad15eb7d6ffbb61137dafdfdc56bafa25d410b96f081180ca271
MD5 d37b23bbc69f6b15e3b437f650622e69
BLAKE2b-256 94ba9802f504474047c88827d527b244cbb9961fe97ba0a24c5baf6e79f8e031

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4c935d05f988c97b6dc73cac2b72b4f3d586f1e9e50daf7d9ed2031904112fd
MD5 4c497a6207f08362ffdf62dee0f9614d
BLAKE2b-256 c2114963204d94e0c21b4ebd5f79c65a05cd524d2630a650498f5b0d95aa8e78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e02400912c0e73cba6e0d12e35a200320be3f3dd47952c45c9c914f1926a3ee
MD5 600b120fcc8e8a184d710998449d4bce
BLAKE2b-256 e221fa37bbe767fa50a37dccda11ea49b17de5066aa583160dbfcedb0177b93c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d27081130cde8377d901d2df8180933796a2e211e0fcb1eb7c6c44cc70c821f7
MD5 ef86052a875fb20b0dbf6bfa12c8a947
BLAKE2b-256 56689ec016a490cf8e65dd227bdc0d180fcc213b9b973aabed308ad50b6b437f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 ee4996180d39dac51ecb43ba29dd4181e980f5b2e3e119ad09a9ed2110f40db3
MD5 8899513c1b43a591f113eb71ed5396a1
BLAKE2b-256 6cd8b833773a3e052921ed4d2ea77415a2af7db99c207e465831e544021b1d6a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.21.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d2fd3d101654281c2b2f233d49844646566c81d15ecea432c36a893b36c647cc
MD5 b1c21770a6cbeb13d9a428e14c6822ac
BLAKE2b-256 91d74cb3a5b554a3b03a2ed50005ec13bc207c62d84726b02fc507ce9c8b2112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c6fb7fc413124dfe9b1287e49f4ead696eac32381f174c189fa43777e6000027
MD5 1cf24bff24f5259b2be3bb2050c260cd
BLAKE2b-256 70612698cfeb28fd0880f2b80faff68a3c641ce9d8bb867e78ad85661b830d5f

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b97575bc52e80a71da6011caa1d6390bb9898a84511fb46ae6bd2510956245c5
MD5 0a8ecef1c59e84058448db4508ff5c31
BLAKE2b-256 5ac2018ce6ec3c6ebb4088ca0ba856cbb1a41672d75cc45052ad8586c5a110fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec7fe4783c5c57e9a826cfb94f9996efb4c02031ae13a1ec7198b8381ad0b9dc
MD5 fc7fb630e558ddc0e30b3f216491a6da
BLAKE2b-256 accf3a6d3557b2b0f302128134e44b1be82c78158a1aad158488dcf35a65ea52

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a9597d995cdac26896ab76dbf98cdc4773bf65936e6f69ad6a8670688c10779b
MD5 06aa68cd17fa47603a32864c0a9f1873
BLAKE2b-256 d3a914d0acef9b01a44dd59ce3f8b518982cde6a7829d95492b8ff23f1fc7f76

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp311-cp311-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 9547174de0a45d5e04fe05c3f8056a936cec09f85e50cfd3b72faf9324006bd0
MD5 2f4f001f78b742f24a8301de8a6bf977
BLAKE2b-256 fa0d259872d988012190ff55028ee4d3f97646774d05d9a67efecbe9c9655e48

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.21.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2c9c4992eb3c102bfd4c5b7c5faf6f8203034cb587bc7361bf2df4af7a0752aa
MD5 f120bb66949ca4d3a55eef3f376edca6
BLAKE2b-256 91d0c13f7fbdce30cd899fb1a6fdca89cd84d1009dcbfd44e50b82820f546640

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4739bd8041262cb7924d80c44c8587d4c71075fd578d041f9d39c3a59d69ebc
MD5 88d38bc741df6982fd2ff1003a168b86
BLAKE2b-256 5433568b89e98addbdb2a494c44d16a3209715894c6efc54a5264186b3795643

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c279adb6262c96240ee691673c9eedd337722c2b242612d2b2017510c9f9c27
MD5 ee20c375b2797315f23fe32cb169206a
BLAKE2b-256 8e8393c2c0c7e16724f1114aadf11a656882447fcc47a50614b90f737aad7394

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 099ea8d19b553c179cca22bdadae53c3f72068c27073de8682eb7debf7f1a285
MD5 66653f3f434bb323cf13fe38141f5f7a
BLAKE2b-256 ca5e88c71fac37af859c5baec7aab592d78851dca7f32ea90234774af4042258

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b61e5ee09310f089cd4f5df484c8f3ea4830f27a7ad47d84ce2dbaf1c26b184f
MD5 be8c8f096f0e7b3d6b7f54d5e1948510
BLAKE2b-256 a6c7deea4c30aa9727fe2c86d6d232b8ebb289b2cab51e6734a42f1ce5152206

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp310-cp310-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp310-cp310-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 ae927bcde88210d4a8c67b48c9ca7ba0aa2780af108c0d4e9eeac5eaa5fb428f
MD5 5532801217ba096014db1491393cb2d8
BLAKE2b-256 5e6079a2f75d4ba681210bfb8b32099e1230a2492acc3f53eeb3e6c08242b889

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tract-0.21.13-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ed50b00de59375d5144fde1776320f7b5316b2b29b1f45220a9086b81a31f5c2
MD5 c7c432572d31bbd7ed8372e0610a69f4
BLAKE2b-256 eeeb4535d5c8ed862b9e168695e1ebdf0206a07c8d537b9903681aa28c7f75d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b440616f7edf6707152c07381702cd6a0dcd9ae0d9c0f6c984ebb92c52f41701
MD5 bb1f2a558ac4ce622128e52182d2520b
BLAKE2b-256 206f5cc2a2c8f67f28418f440047143715890487987e0675ab8963eb890e3a30

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e65fe28f482e693105076e9a0ef9de76008ff98f0c1ebaa508bee714d076a45c
MD5 3e6852c891b1d6d3f7c8b00ed96a3343
BLAKE2b-256 e9a20793bc4d66f4aebaffc25a466e821c0df740620cce638662c05d67f4168a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.21.13-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 137180458616af46f016455ad2fded20a27b26db300470198458ede62f4b7898
MD5 fdaf2e1729d8d5670e34a24e631e86fd
BLAKE2b-256 0d3cd8c4deeb1b76402ddc122de2c9d72082d965efec78cb8b0d50f78cab5a9f

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9d59c4d146aef77a8999d64e4c6e9f6b9411a0c226eaf71c5d09ea5053356065
MD5 068c523b3d06dd9db5595606364f8261
BLAKE2b-256 1fe405bcfb0090fcf5f58e83f99d5cde807a38e73b0c8a8718333f37f7d7f5ad

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp39-cp39-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp39-cp39-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 b89c61c27040b1ab40eeb32f4567e93e2176fce2a8a630029ea66c1d6a0d2bab
MD5 f60343f77301bc4702d86af5acdd35ef
BLAKE2b-256 67db35b5e2d911717ca4162480320c48948a148da3a5f0e0d5afe665c118fe26

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: tract-0.21.13-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 7.6 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for tract-0.21.13-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5a74cac4e722ffc6224f6a65e29ba3e3338e34ccd94fac3c0555318f75c104fb
MD5 195bbb7484b285a03ae13ef228d4233c
BLAKE2b-256 9e588fa66a92b0ce3f5b22acc67e3b729af117710802be893bf8cfefd7664770

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c7573ce289f83d53b869fb6fe9a19951efcdb66c51dcb512d085354288846712
MD5 630a5678733ddbd4e6ce09746aa2c0ae
BLAKE2b-256 5575b94435f55a3e06c8d580d1069b59f7f9a2132346b31847e2c370836be383

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e1a1d9704c079dfdbf7ba760c74a9c191d9bd480f5aaa63bfc908bca3925f21
MD5 352a76ef1ca8ab71cc9e8952d3c608ca
BLAKE2b-256 85e391f4e0b8792051b365356fdbc458c36c48c4cbda440a3e1f0dd649bb3987

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48ff3f17e84ba4123d2293ee4ddae20fc91730a0230b64a1a995a86bc8e602fb
MD5 223b4be439ae68374e9a8db05218c658
BLAKE2b-256 b74cc3e97f292142fcbd14b40397a3459da6c73983b7eacc2ef6b5ca9e24eb3e

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e80002eeecd3b7da3b002ba2d0cc80f2249a4a8e2af794b6f00d9558245fbafc
MD5 4381f2db03ca3633018255b5a831496c
BLAKE2b-256 401b11550988562eba0dad0dd104b447c33c97df2226d9fcbc17b490324d96d2

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp38-cp38-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp38-cp38-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 fc67bbb3bd36f79574dc78593efee8a1d17bf34ebce15d45272c921dbeea080c
MD5 995a9116d249feac6a648358b49a8fe2
BLAKE2b-256 9195ad6083fca35599c11b9fdab60c17df5c0f7db14ffb819b55b49730878cc4

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 65d49997f0a1f9a4c9db2dcc08b8b5a3c033d59d48e82f77a7e83d73291a0f10
MD5 da3db064190ce7a6c36dd9993b9169e0
BLAKE2b-256 e512c81edefa3c56de9836978e2b01842da73ada93f83a5fb28e29ef5dc9fb2a

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 872aa8cc4457cdedd1f98238e35f7c8bc601f76413facb5e64f0d2905c79b6b3
MD5 1f229bccfe60347fc833097c7b93dadf
BLAKE2b-256 52cf9d5fa32af44454e23cbf13796b6fd9ad7ac51c1b45bc73ce4eee561afc1c

See more details on using hashes here.

File details

Details for the file tract-0.21.13-cp37-cp37m-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.21.13-cp37-cp37m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d970ebc1d21a4774fcaa9a9e00f5638969d348f3c54e0c037fe5e2883f71a93c
MD5 73737907759f8ff6e91a888c92397b98
BLAKE2b-256 4458fb0a724c88d921b1e7b8bf178e9bd40a82e9d5327d567570502158e64a8b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page