Skip to main content

Python bindings for tract, a neural network inference engine

Project description

tract-logo

rustc >= 1.65.0 MIT/Apache 2 Native Linux test status Embedded targets status Doc

Sonos' Neural Network inference engine.

This project used to be called tfdeploy, or Tensorflow-deploy-rust.

What ?

tract is a Neural Network inference toolkit. It can read ONNX or NNEF, optimize them and run them.

Quick start

There is also some technical documentation and blog posts.

Tract in the landscape

ONNX

As of today, tract passes successfully about 85% of ONNX backends tests. All "real life" integration tests in ONNX test suite are passing: bvlc_alexnet, densenet121, inception_v1, inception_v2, resnet50, shufflenet, squeezenet, vgg19, zfnet512.

Notable missing parts are operators dealing with Tensor Sequences and Optional Tensors : tract /really/ wants to flow Tensors and nothing else. This is structural. Changing it would be pretty difficult, and it's unclear whether it can be done without impairing performance or maintanability. We are not convinced these features have shown their interest in the wild yet, so we prefer to leave them aside.

Other dark corners are specific operators likes "Resize" which fit perfectly in the framework, but need a complex internal logic that is far from our core business. In these cases, we are happy to accept contributions, and to help.

The following operators are implemented and tested.

Abs, Acos, Acosh, Add, And, ArgMax, ArgMin, ArrayFeatureExtractor, Asin, Asinh, Atan, Atanh, AveragePool, BatchNormalization, BitShift, BitwiseAnd, BitwiseNot, BitwiseOr, BitwiseXor, BlackmanWindow, Cast, CastLike, CategoryMapper, Ceil, Clip, Compress, Concat, Constant, ConstantLike, ConstantOfShape, Conv, ConvInteger, ConvTranspose, Cos, Cosh, CumSum, DFT, DepthToSpace, DequantizeLinear, Div, Dropout, DynamicQuantizeLinear, Einsum, Elu, Equal, Erf, Exp, Expand, EyeLike, Flatten, Floor, GRU, Gather, GatherElements, GatherND, Gemm, GlobalAveragePool, GlobalLpPool, GlobalMaxPool, Greater, GreaterOrEqual, HammingWindow, HannWindow, HardSigmoid, Hardmax, Identity, If, InstanceNormalization, IsInf, IsNaN, LRN, LSTM, LeakyRelu, Less, LessOrEqual, Log, LogSoftmax, MatMul, MatMulInteger, Max, MaxPool, Mean, MelWeightMatrix, Min, Mod, Mul, Multinomial, Neg, NonMaxSuppression, NonZero, Not, OneHot, Or, PRelu, Pad, ParametricSoftplus, Pow, QLinearConv, QLinearMatMul, QuantizeLinear, RNN, RandomNormal, RandomNormalLike, RandomUniform, RandomUniformLike, Range, Reciprocal, ReduceL1, ReduceL2, ReduceLogSum, ReduceLogSumExp, ReduceMax, ReduceMean, ReduceMin, ReduceProd, ReduceSum, ReduceSumSquare, Relu, Reshape, Resize, Round, Rsqrt, STFT, ScaledTanh, Scan, Scatter, ScatterElements, ScatterND, Selu, Shape, Shrink, Sigmoid, Sign, Sin, Sinh, Size, Slice, Softmax, Softplus, Softsign, SpaceToDepth, Split, Sqrt, Squeeze, Sub, Sum, Tan, Tanh, ThresholdedRelu, Tile, Transpose, TreeEnsembleClassifier, Unsqueeze, Where, Xor

We test these operators against from ONNX 1.4.1 (operator set 9), up to ONNX 1.13.0 (operator set 18).

We are using ONNX test suite, but it does not cover everything. We also deliberately ignore some tests, or restricting their scope depending on what we feel is realistic. Sometimes these decisions are just wrong, and sometimes they become wrong as time goes by and the fields moves in unexpected directions. So if you are puzzled by an ONNX model that does not work in tract, we are happy to take a look.

NNEF

Long story short, TensorFlow and ONNX formats are good for designing and training networks. They need to move fast to follow the research field, tend to integrate new features and operators greedily. They also exhibit a high level of expressivity to facilitate network design.

On the other hand, only a subset of operators and network features actually reach production, so systems running production network do not have to deal with so many operators. Furthermore, some information required for training can be stripped from the network before going to production for prediction.

NNEF tries to bridge the gap between training frameworks and inference by proposing a format dedicated to production and prediction.

Tract supports NNEF:

  • tract_nnef can load and execute NNEF networks
  • tract supports most of the NNEF specification, the most notable exception being the ROI operators
  • tract introduces tract-OPL, a series of NNEF extensions to support other operators (or extend some operators semantics) in order to represent the full range of tract-core neural network support: any network understood by tract should be serializable to tract-OPL. This is a work in progress.
  • tract command line can translate networks from TensorFlow or ONNX to NNEF/OPL.

tract-opl version compatibility

A remainder: NNEF is not expressive enough to represent all ONNX. tract-OPL extends NNEF using proprietary to support what is missing. Notable extensions are pulse operators, recurring operators (as Scan) and symbolic extensions.

There is no stricts check in place here, so... implementation is not bullet proof.

  • NNEF part aims at being very stable. It is strongly constrained with compatibility with NNEF specification.

  • tract-opl is a bit more in flux. Nevertheless we try to maintain the following golden rule:

    models serialized with tract 0.x.y should work with tract 0.x.z where z >= y

  • in practise, breaking changes have been relatively rare so far. Most models are forward and retro compatible from when tract has acquired NNEF support.

Notable breakage occured:

  • 0.16.3 (forward compatible) on Scan operator
  • 0.17.0 for binary decision tree classifier

Starting with 0.17.0, a model property is injected in tract-opl files (tract_nnef_ser_version) to tag which version of tract generated the file. As most models will remain compatible, tract will not do any version check. It is up to the application developper to do so.

A softer version tag exists as tract_nnef_format_version. pre-0.17.0 version set it to alpha1, post-0.17.0 set it beta1. Don't put too much emphasis into the "alpha-ness" naming of versions here.

Note: support for TensorFlow 1.x

Even if tract is very far from supporting any arbitrary model, it can run Google Inception v3 and Snips wake word models. Missing operators are relatively easy to add. The lack of easy to reuse test suite, and the wide diversity of operators in Tensorflow make it difficult to target a full support.

The following operators are implemented and tested:

Abs, Add, AddN, AddV2, Assign, AvgPool, BatchToSpaceND, BiasAdd, BlockLSTM, Cast, Ceil, ConcatV2, Const, Conv2D, DepthwiseConv2dNative, Div, Enter, Equal, Exit, ExpandDims, FakeQuantWithMinMaxVars, Fill, FloorMod, FusedBatchNorm, GatherNd, GatherV2, Greater, GreaterEqual, Identity, Less, LessEqual, Log, LogicalAnd, LogicalOr, LoopCond, MatMul, Max, MaxPool, Maximum, Mean, Merge, Min, Minimum, Mul, Neg, NoOp, Pack, Pad, Placeholder, Pow, Prod, RandomUniform, RandomUniformInt, Range, RealDiv, Relu, Relu6, Reshape, Rsqrt, Shape, Sigmoid, Slice, Softmax, SpaceToBatchND, Squeeze, StridedSlice, Sub, Sum, Switch, Tanh, Tile, Transpose, VariableV2

Additionally, the complexity of TensorFlow 2 make it very unlikely that a direct support will ever exist in tract. But many TensorFlow 2 models can be converted to ONNX and then loaded in tract.

Example of supported networks

These models among others, are used to track tract performance evolution as part of the Continuous Integration jobs. See .travis/README.md and .travis/bundle-entrypoint.sh for more information.

Keyword spotting on Arm Cortex-M Microcontrollers

https://github.com/ARM-software/ML-KWS-for-MCU

ARM demonstrated the capabilited of the Cortex-M family by providing tutorials and pre-trained models for keyword spotting. While the exercise is ultimately meant for micro-controllers, tract can run the intermediate TensorFlow models.

For instance, on a Rasperry Pi Zero, the "CNN M" model runs in about 70 micro-seconds, and 11 micro-seconds on a Raspberry Pi 3.

Snips wake word models

https://arxiv.org/abs/1811.07684

Snips uses tract to run the wake word detectors. While earlier models were class-based and did not require any special treatment, tract pulsing capabilities made it possible to run WaveNet models efficiently enough for a Raspberry Pi Zero.

Inception v3

Device Family TensorFlow-lite tract
Raspberry Pi Zero Armv6 VFP 113s 39s
Raspberry Pi 2 Armv7 NEON 25s 7s
Raspberry Pi 3 aarch32 NEON 5s 5s

Notes:

  • while the Raspberry Pi 3 is an Armv8 device, this bench is running on Raspbian, an armv6 operating system, crippling the performance of both benches
  • there exists other benches on the internet that show better performance results for TensorFlow (not -Lite) on the Pi 3. They use all four cores of the device. Both TensorFlow-Lite and tract here have been made to run on a single-core.

License

Note: files in the tensorflow/protos directory are copied from the TensorFlow project and are not covered by the following licence statement.

Note: files in the onnx/protos directory are copied from the ONNX project and are not covered by the following licence statement.

Apache 2.0/MIT

All original work licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

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.19.7.tar.gz (18.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tract-0.19.7-pp39-pypy39_pp73-win_amd64.whl (6.3 MB view details)

Uploaded PyPyWindows x86-64

tract-0.19.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.19.7-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

tract-0.19.7-pp38-pypy38_pp73-win_amd64.whl (6.3 MB view details)

Uploaded PyPyWindows x86-64

tract-0.19.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.19.7-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

tract-0.19.7-pp37-pypy37_pp73-win_amd64.whl (6.3 MB view details)

Uploaded PyPyWindows x86-64

tract-0.19.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.19.7-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (6.6 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

tract-0.19.7-cp311-cp311-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.11Windows x86-64

tract-0.19.7-cp311-cp311-musllinux_1_1_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

tract-0.19.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tract-0.19.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-cp311-cp311-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tract-0.19.7-cp311-cp311-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

tract-0.19.7-cp311-cp311-macosx_10_9_universal2.whl (12.4 MB view details)

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

tract-0.19.7-cp310-cp310-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.19.7-cp310-cp310-musllinux_1_1_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

tract-0.19.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tract-0.19.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-cp310-cp310-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tract-0.19.7-cp310-cp310-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

tract-0.19.7-cp310-cp310-macosx_10_9_universal2.whl (12.4 MB view details)

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

tract-0.19.7-cp39-cp39-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.19.7-cp39-cp39-musllinux_1_1_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

tract-0.19.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tract-0.19.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-cp39-cp39-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tract-0.19.7-cp39-cp39-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

tract-0.19.7-cp39-cp39-macosx_10_9_universal2.whl (12.4 MB view details)

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

tract-0.19.7-cp38-cp38-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.8Windows x86-64

tract-0.19.7-cp38-cp38-musllinux_1_1_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

tract-0.19.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

tract-0.19.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-cp38-cp38-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

tract-0.19.7-cp38-cp38-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

tract-0.19.7-cp38-cp38-macosx_10_9_universal2.whl (12.4 MB view details)

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

tract-0.19.7-cp37-cp37m-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.7mWindows x86-64

tract-0.19.7-cp37-cp37m-musllinux_1_1_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

tract-0.19.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

tract-0.19.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

tract-0.19.7-cp37-cp37m-macosx_10_9_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: tract-0.19.7.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for tract-0.19.7.tar.gz
Algorithm Hash digest
SHA256 d9483c90d88596c2b2a745095377ad0cb4ec30883b3db7afdd07d4a6c597b7df
MD5 d3a35b34c5bdf376de265200189d5f7e
BLAKE2b-256 b00a2d0caf358569e85e223e066a202561d144cc5447d1bb83b554fed7f4ec9a

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3cc637ca259f255bcb18ad2e66da6e564dff515862e400f2dcd41cc069beccac
MD5 b22c574f3962a1e361cd43ff335b86fe
BLAKE2b-256 87598c49a0369fdcd75a547a30fdbf8987a5ba0cd9a47a2b2b63086de22991c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5d81c9c7eebfde251cab1a6be4c21d4d389e299a4c41eaab2ba7b418e7f837b1
MD5 0467165aa6574dd8af7cd6f0d8029795
BLAKE2b-256 2bdfebf9142b3d191a3d559c866eb48cb4b51e05753b44db686180f0984d6422

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8be4fac1aefc54d0375f0938560929636e0c383326637e72c4f51e1894d6f2c6
MD5 033c70e379619130e20105e0f61442b5
BLAKE2b-256 5b85478bc81cf0ff97305d39c2ea576a2984ce85c4618e3c152a1a84e9c88d6f

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 60c941fac3cabc572c7c2b49c756e0e8ce0a03b3da625c3e57b75d79293adb80
MD5 7e3f99189bdfc387bc3da7b054377282
BLAKE2b-256 b748849c5db89e46a95668ceb066fc18e7628103afc01df6a214b43afa66b7e8

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 2bf89c4875d975ee50bc062e3fa1c6becd113e6459ef01a409d4b113af3606d2
MD5 c292a8472472a5f11e94593ca027e1ce
BLAKE2b-256 f156cb32b33e1a5ff6073cd68e8750804b86683548f4dc875b13bdfa63b405b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b558dead6330fa4a74828a8468bdd8bf3bb31c73813ad663c0a57ba6e02ef68
MD5 7de637b75b98696c9b022b2f65d9a75b
BLAKE2b-256 a8c63df57809945f45c2078c50595b173568e5fbda2fdda78e48d3a26635d170

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cc83e1681cdc2384afca032fd2d13d17d632edca63d80633e5f584a41425ab87
MD5 7bc987a9210bf00fc9b473a79fb9b3c5
BLAKE2b-256 be6c25865a2d54c80567870fe62b48f8817709bdf5797d1bb03ecc96162f5e2a

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f9cd9663878908f60e4bce498ee548496781cf8e901ae6c56b6fc8c3d4884b5
MD5 0fb3f1b4d8f803818c42243b5a77c360
BLAKE2b-256 4ed3698353568882867168f6eb74172ab9d8774eaac8df0b411b391f1bf938ab

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp37-pypy37_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 88f1c3647ae769981a93404d463c2bad6b6327561dd82bdaef4a664ca1cb18ea
MD5 fbaefa242e9f80fc6734ca974fea98e7
BLAKE2b-256 e56725eccc37d36936757c9b5d1221cf7843cb6f6a6c84bbfb8e58f87684a8b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db7dbad7325fc119aca7ea0f3b5ed3278c2ca290eeab3f72e4cb5b1c7a26fa1e
MD5 4187e63a67ac01da36b7b1745fa2b7ed
BLAKE2b-256 094d0d42ec3229326a61ad2336bd731c1e3affc85214efdc5c6b448400113107

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 53f205e60ef208781361bd417c727f56e063f28e411d635c63d241e206404197
MD5 88a32e4a81e279840da296226cdafe4a
BLAKE2b-256 9cee4ff9ab6c056b43ddc0248bb564194ffa9129cd9832155d9421601ba83e95

See more details on using hashes here.

File details

Details for the file tract-0.19.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2dd57840f1da56f73af273969bbe7347c6ed75597f469c2fdcc6a676beff821e
MD5 27c4929cc37deb45f7741ee95b4d7e13
BLAKE2b-256 4f85920feac2c5cd10402669ea85ab55b2aa69da921228dd8bf2a82037093a22

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for tract-0.19.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4736bfe4dd82934db067311f08cab97bbaec47d378c2312cb1c766a7f826c9f0
MD5 3893d992b1379923b4cf44945f42754c
BLAKE2b-256 2f9e0e8626a8d0186019ec8d7100c7adf2f6de1753fb24e2b56c24106547d217

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ed2e58e3a9b739aa8e42a55f914450eb3432bfd767b4e7651796d70d28836bfe
MD5 d4003e3344722350fa36ccfc73589050
BLAKE2b-256 a2617c406d1be42b09e1a804cc11e103568f3bdc04faf2247b2eb69c0ff50504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe4cc24cc3f55df5b77d350f66a1dcaad503c154fcff6b280871d0f4b7b413ad
MD5 a46dd7944f3bb09b71bac75a0236b09b
BLAKE2b-256 e0df4d4c45d16599778ca8cec12da68ecc0f42fcdf9228f00fbd7316c2856cc3

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c4ddb7d15732f587683a3b58f954e8d347202b626819b57f86085bab37a7fd87
MD5 fea5d0947357070988b068614dfb5493
BLAKE2b-256 a9eb357301e6ffb5db9c614961b129b71188cc7d21f6fc1bf8f61622a6209def

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7fd27d74491e568f350fcf7e4168213141ebd37fa3517c91a4784e73db552dc
MD5 93abb2782d9fb2829f2829fb6cda04c8
BLAKE2b-256 3de8160ea5842eb021f0740e482c8be9bc2d78c299e7c24d8af82061fbbc23a3

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f4bda238f7cbfeea81d0f48b05c2a619b064f4466c4cedf87b42f578f1bf8a6f
MD5 518f2bf25e1e706d49f6cefbbb268ce9
BLAKE2b-256 8f097e91f99970ab91e0ac4ec332eac1075bfa311b8ae3e38adc3f256ccb5457

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 9f83285ae126eee86385ad854bba15ef32931f0a2c11a850505b7e7a5a57358b
MD5 1b050dd9a93dcccddd3b99cdf611167a
BLAKE2b-256 564f717e5e460c32dd8c154fe386a3d6c064e5f7d70b5e031fed50c4f094ab9d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for tract-0.19.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8f0d0310ca75dbba13229cb04cf23430d1a94485d3abe6b84d9febf15a02d45e
MD5 b7fa057930e422f8bdb5f64578c20dd1
BLAKE2b-256 0d9d943c4ebcd5e17c10776cf27ff10db7d7041585201820256e54e9f4da1245

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2101b7824486d2603d2047ff8a02d9c751d44a077430fd92f7d22c1aeab1085f
MD5 1a9ea12927ee77ea0c355cb75e696d64
BLAKE2b-256 86fdc04b642bb918e111ea91faa8fe39fea8cf61957a191f483773030710677e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 96cd025e99766676e6e33c221a7191e106dcfdd6f1e71551c4ec8f66ecdbe3e1
MD5 8ed57d9df6d5f5d8816fd0cfaa18698a
BLAKE2b-256 88a5125a982cedbb736a38dcd9211c997b4e98dee40f00c09a49911a18c3e44d

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 04b3bd999ac276137931d0c522dbdb29b89c3b82d203881d279e6ed4e88d53b2
MD5 ab8da64ba51fbfb8d5c09dc4742539d6
BLAKE2b-256 ad69574757e2cc7f21f61e288cc37847351797c4b029a6de8008da1efe59ef42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca63fd3c59290395d1670e8074d3bd2979287fbe5dafa58fbaa608af5f71487f
MD5 3aef985837a12573cbd27b59dc98adab
BLAKE2b-256 fbfdfd7339916e975188cef875c41d0005d47e96231ce1ee3de298a026ea71e8

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fe578621f35b38f8087067cb4c5fb97dea8cac9f0f02428f856b2fbbdc1906e3
MD5 f3c4537ebd8b5b3c6ffa928ab9ccd6c5
BLAKE2b-256 6a75877e56df894beaf2e5fc4c5e17f2264b870edfbc7ed8a5fe4900e083cd9c

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 db5b3789b5f730c1cf06a92b8c9133996c96450906a7bb6a4f03bfabad263323
MD5 0535d9238dbb30e9c7fa622cfb807ffb
BLAKE2b-256 a4e4cf2df886543ac76e99b2a90f9dbb6349cc034182ee8e3442e1b99fef75b8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.7-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for tract-0.19.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 30845d4e541c68f4cf60554733a480af510e3e8fab9d3bc0b66f5b670187ccc1
MD5 82751321c66092f6f5d91d1f11ee15c6
BLAKE2b-256 8be32973ec0d6e68d5ebc6d6fcb8e4c3a359952fa22cfc29f0a6b638f3593442

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5699cc0764d4ac9c4b2901b391dfe4cb3d5f28a5e8fec2f487a4db9d5bae1275
MD5 660bbf5e896f799dee2a67e7c7c9c270
BLAKE2b-256 98d3bbd85c61d4ba062d188c6c755c9d51e03d2def6d698b3bb1d83bd53cf8d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28656264131159f0aba434372c7a58341e83382cb4c4c5406cc7e1ece9de1925
MD5 c002228f682a92cf5e1ceadf7b3763a7
BLAKE2b-256 7fe51039e5f4a92c83f73dd139935eb0e3b81c51e99da35096205b85cfb0df78

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 693df1b9a82797017141d086201f79afe2044d10cb079f896b85f9eb1b4784b3
MD5 6b9683c6cfdee160b56be66ab130e289
BLAKE2b-256 94ab89d4db145653062fe55655c4338aa2dc88ebd55b1d32085657eef34ce4b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebd21df4d48ef613cad34ff0fcc7c1a90c4c2d96580a0afda50f5f44778ec860
MD5 f3a52087c7caa9ffa7fb01e67dbb5c00
BLAKE2b-256 7d4c0f868e26328de726eb6bcd9e63faa039cfb8d00aa9c749b40ec9afed2529

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0f2073f3ba422cda8efe105aed5341eb43e21123ede43570a41fdeaccf429287
MD5 a95ebc986773d16363799347e5c038c7
BLAKE2b-256 ddf226942d2058d8e3c9d2d7ceea6c7925c0cfb69cdc7634856e929e0ed89e4c

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ef3924ec7bd9b59b5bccb6cbcdcf8dcfc4d65d3ab840dbb56b96758b0369ca2d
MD5 b29ebacaa62a0a8ab649cea97887d7a7
BLAKE2b-256 16bac97e551e1c868998768c58562a89ccd19c474e363a22402de8c53ecae533

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.7-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for tract-0.19.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a99c3e650c7869194fa2adb74c648c298c1f86b494fa198c380cb941d5e25b12
MD5 3768aa2398c80cee0bc2f3fbca42167b
BLAKE2b-256 5a08edc845f0c8609aa289cf16b45b4e4a6c32386f6258abac404f11c6382da9

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 08d88bdfc9acf31f83141d7d59af7ed776f0ce91780917e4e4765cd962e92d80
MD5 a550174a8a1ff132b207b2783131fd9e
BLAKE2b-256 a73ea8b6109d62a6e5b403565e1c9d4a6ebd74b1651f6788b6414d6770f0689c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 442c2a9fee2a70f1886387830cf4da1adf0dcb37e2021add84a80ccada47e65d
MD5 c188c97d8792f7435335f5110129c22f
BLAKE2b-256 73d22482450cbd49e3544aff7a8927534c2919ae3cb6ff13e90a5498cbc05494

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f60be1c29faa7929af85c639f0159bc9c1ddfce7080fd7601f45bb4d35770e14
MD5 11699c1c38688b4d4339d8aa870b51fb
BLAKE2b-256 81313e24548b42213edf6ba23776fd16dd253289d26a45e30f8c0d3e30522722

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03815c00f9f9e3348aba964fb756ff56e4cfcb643f0430f63b2475909cea2248
MD5 afa26483736990c0fa8e796f34df602a
BLAKE2b-256 3d330fcf3b80cdec9d63e1adfd55e74df230998d248efd6c0af4b1ab11ac6f9f

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e71c96badfdbf61e67a48a1d7fc4e9a785cee4717af149eccfcba0c0e58f69fb
MD5 2e5f0fd7d9c0c780e96b504e5ef00282
BLAKE2b-256 b4c4bd1c15d13f5855f4a2b663e9d99d3fbbfed8622c4407f9c04e915ab64bfe

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7690f38b1031a49ee8982fb6bfb03d7d8299221fe397f52692afb409182aaf57
MD5 6682c03a024d7a6663e95830414c09be
BLAKE2b-256 89a6065fd1cfc96158c4782c28854c37312b7b7605c20e6efd44aae81df2a44b

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: tract-0.19.7-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for tract-0.19.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 a47fbdd316006f055c307ac6e79646726697d528e585ec3611a1b93a09c36e24
MD5 65dabf31b3e1939f996cb91ab3f684a6
BLAKE2b-256 4016d44be055e4115acdbca5181ce4eccd2c582e6a355fdd96b9188f94e7738a

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 04bf53a594eeb00c0f693c31915f92841d941db5f72a3c6f0eddbee1ffff7abd
MD5 63fba6ddd95b6b418ff9c15f32ceab69
BLAKE2b-256 8900b9703bf48a89d5be00f3617b6c12b4e0ecfab765a778404ce59152c5703d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eaa038156cb3ae8728bbf86bbb92caa62a83bd1a106f45f7d06abc389e876f99
MD5 39dda0ed4e1525f41dbea2e91d1692ed
BLAKE2b-256 2020f3d0648dd3e00e9c30372531f809290029e7e9bcaa5c97ee089536ac7f02

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cd92194df061ace27f10845b783e299e8483b69ece958353e9a75a2a69ed3b14
MD5 fe55f8b6ca57ca419b667cda52fcaab3
BLAKE2b-256 f801b781655cbbf6c5e1a5d1f6eb418327365ad55fa6ff8791453315cd005387

See more details on using hashes here.

File details

Details for the file tract-0.19.7-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tract-0.19.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d5523ae046052834c0fc9d189bfe87cb1e2db0bbf65e72c1c045193efd200b61
MD5 b96389ac579a1ff1e478c444d6a8c634
BLAKE2b-256 6f3ca010e570f0baddd3f03f44b016f1099693c2efb9e14b9db889cfd17eca87

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