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.12.tar.gz (18.5 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.12-pp39-pypy39_pp73-win_amd64.whl (6.3 MB view details)

Uploaded PyPyWindows x86-64

tract-0.19.12-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.19.12-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

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

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded PyPyWindows x86-64

tract-0.19.12-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.19.12-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

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

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded PyPyWindows x86-64

tract-0.19.12-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tract-0.19.12-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

tract-0.19.12-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded CPython 3.11Windows x86-64

tract-0.19.12-cp311-cp311-musllinux_1_1_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

tract-0.19.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tract-0.19.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

tract-0.19.12-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.12-cp310-cp310-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.10Windows x86-64

tract-0.19.12-cp310-cp310-musllinux_1_1_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

tract-0.19.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tract-0.19.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.9+ x86-64

tract-0.19.12-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.12-cp39-cp39-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.9Windows x86-64

tract-0.19.12-cp39-cp39-musllinux_1_1_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

tract-0.19.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tract-0.19.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.9+ x86-64

tract-0.19.12-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.12-cp38-cp38-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.8Windows x86-64

tract-0.19.12-cp38-cp38-musllinux_1_1_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

tract-0.19.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

tract-0.19.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

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

Uploaded CPython 3.8macOS 11.0+ ARM64

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

Uploaded CPython 3.8macOS 10.9+ x86-64

tract-0.19.12-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.12-cp37-cp37m-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.7mWindows x86-64

tract-0.19.12-cp37-cp37m-musllinux_1_1_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

tract-0.19.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

tract-0.19.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (6.7 MB view details)

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

tract-0.19.12-cp37-cp37m-macosx_10_9_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: tract-0.19.12.tar.gz
  • Upload date:
  • Size: 18.5 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.12.tar.gz
Algorithm Hash digest
SHA256 1827f04c6d5b07c638ab475c35a2ab5d89cc18836afbaff6fb3667c048a61295
MD5 00e9274970446306db690584fce0bc4e
BLAKE2b-256 d8966be599261793f09511f4185506a8b01f18638d1be072f38bcc543cd50d48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 e536f88d80d03c4f55688844dd9722bef4682ae48e0972f86bbad248d74450d6
MD5 462e1e47e5289dff575df6a74053f53b
BLAKE2b-256 34bd439e0cc07b733e1d37f0c501930fae688891fc8774431e799f3dc23d6839

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3aa3489c16b70ad9a5d94d1ee0450f1cb14923c29675d2ddc787b1968e096f7
MD5 67239ab365c2c05548949da1675d7f3e
BLAKE2b-256 fe7a11dc546418dc1840eb13c159d3b0f182a22a678ad0d7475305fa407c812b

See more details on using hashes here.

File details

Details for the file tract-0.19.12-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.12-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1a9eb89adea19090c01e36fbe5f9de8a5f020c051ced5a39b8d3ebbcc4c068ce
MD5 48e540a7eeedbffc6b5e5162e7d359af
BLAKE2b-256 32b5aa8d0fe60952b1be7c9f5b939bda87c35b2afa48155a461550944984c0d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1ba5167a06022d4956ee5eee4cc61f77d589d0e43b3f2b3314bca9420c4b0f08
MD5 010f874fa0660459469b75eb07cc7383
BLAKE2b-256 370e3ef1eb7b9990957eba9dd61bf127620a90e9678d06fac8511b98c0a9c97f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 35edc45306b83af1ab3b9714c295cb4266d0bb797dcbf6b5426509f5f3d60c18
MD5 864118871ef8c3e27f0fa128c79c0559
BLAKE2b-256 3eb9a820851e9b2269683f745e3d53630c76733755a2947538ba2a560fb06ae8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bccfdb12ba0d627758b7ad0e36fdb798bc05fa8d317cc9fb21c793faa3f81484
MD5 a3d2427838159118ed769434ca8a4d5d
BLAKE2b-256 6f0b709cde0fc13f8ade25d952784b91e81ccd6383ab4c177f1a049ee58dfa28

See more details on using hashes here.

File details

Details for the file tract-0.19.12-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.12-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d25bf3edd48342750835c6e98e7530e2ba7bb98c0a7d349a2e93b920f7403dff
MD5 5e15801e0d6aded6f71e6ccdc7150dab
BLAKE2b-256 229e966e93ea9e15b5330b2a8d7c9962f69906d56e378d3abbf1051fbac22cfe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f31b1cc5dfe4140d708a78d8b2d6e42f508dbf807eedf0a519e49bd94a15afb8
MD5 900c373f2c2fbab7bee64f6cbcb597eb
BLAKE2b-256 931bf66b2947e49e65728aaffd4a6d1cf594799c626d0a5bf56929d6c1fb9ac5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 e0f5344fc858a4f3ba553f43d48c258c548f631ee15c61989838e3c784f2d7d3
MD5 f9d90be5781ae3d63ed14ff41ac66f99
BLAKE2b-256 04bf123e261b1c4bd3b45731edb8dfa52df56058090f32b64f2eb58fc5cc055b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5e510418eb9a669d728119e161590f74b7007dd233dbde4a154d286907a1dfb
MD5 8120a256894086771e0c85a3e67d8177
BLAKE2b-256 680ac5dfb0b805439bded2073b72bde17387425a7b72d0a70707c634c18d4a8d

See more details on using hashes here.

File details

Details for the file tract-0.19.12-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.12-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0da71e3f5fa5eea79666abd8dead70ab12bb2d10109ae317d8fcb7641163073e
MD5 cc883223c511ac06f46512ec34ac0bc6
BLAKE2b-256 e96c6676a0f0ef2291f0595a3ce236cd8a9a4168eb5abbdba2820752adab03a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2cdb1b9c4de5ce8c61f2e401dcf929cc7fbe9a0fe2612fa55d11874d9eb18b64
MD5 de6eeff1646396f135dd4a51d26e3e38
BLAKE2b-256 780f8e0636c68778491640b03622f5050a2a457f62425efba833f790a9b61e4d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.12-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.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c10d072fe81266fe7da4e4cb83cfd0059134f5f1b72cdaf8de4d0710648c926f
MD5 6d6db63d6146b08cbf024abca4239be9
BLAKE2b-256 190f14d8085a3136a778ede609895445c57f87e78a9e9a1f3e22c97faa14f437

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 907151f0e9859d4ee4feffca1eed08bdba08d11d39d5ce1084d3e1a6c88ed5c6
MD5 549860d593a159cd1e8a39a7c8446160
BLAKE2b-256 1382e2a6f3fabf44844e477ad833bce621649db9d635478cfe36071521239060

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c05c785687ffa6e5dbd57c080066c54cd6f4cd1273099ee0d595b2a39ed0dbf4
MD5 9cb7f3851b32204fbf3a31d1fb0d4231
BLAKE2b-256 73a736b2c071c7906291eaf0842d8fc234e83e664060df619085f579c3ed91b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7fc2d15f8b021fcd631ac271b6bb8aa12044dccced1ab7753e3f45fb2c874866
MD5 c495550054a51c177e849b3020fa1b05
BLAKE2b-256 9cdfb0ccea5c2e00a5d86c9c4bfde1c3fb9b26bef43161487cbf27585e754dfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6e0e6d7e0f0e0e29b55d9ac29d0e2bb3fac039edc07f9e85c6579f62e74733d
MD5 e72b772ac925e14e5386d1f28068a67a
BLAKE2b-256 373b65b5ceadb31ce98fce76edc9ff6c9b24cd5da34f3b0f2645e93ae6c7a9b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 199212beac7def877a6d5fb8656e44cfe87ef9e8b8916c19ba59a76d9044cdad
MD5 1b94968cb01e2694c7757d12d32092fb
BLAKE2b-256 ea50c7dda6c0efdc35446bd87db9338752fcad3d715858265ae65766278d2587

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 07f549639e63d6076417f819e5a9f8d747db85f7e7cf18ec2c846321459ec71d
MD5 d8a6c10531664d34b08632e322dc2336
BLAKE2b-256 a6bd3be4443f3061425641ea78d995f8e6e450e66d6e480faeebad07112a90a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.12-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.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 252ac84159e62ed6887248c9e8a3d46c455cfc9a16e80909a6e86689beca80e8
MD5 d4adb6a858dbe7e1c839f1c09df69eee
BLAKE2b-256 8d5242bb94b9fbda1fe9c1907bd0656bc2eb71c6e3b00bf9ba0aa4b17647c59d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 de7a98c62ef552fe68b89984e487f9d64b34ee993281bce46232775663f15ee5
MD5 7f65a9881bf960f0dbd4ff29dbcbb637
BLAKE2b-256 36e3bbec026b6f3edd959396d4e7d11e30d94f5f1b43d307aab592d773083456

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6fc58c033d9481fcf633849f3a8d7e145c89573d5ed5c162216fb710386fe8f
MD5 e39399c4bc993000d2a7818d7e5103b9
BLAKE2b-256 b862281c6c11ed2bc8ef4383b047aee443729de063162bf1a5e46d1550ab5c08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1ffe66ddfe83ccfb308e86e4df8b26531fded569917fdc1f9042ab375342b3e3
MD5 20044f86646889e4b136e6137a45f4b8
BLAKE2b-256 778893614526d57f9949a03d68cc2760e89c41098666f91a763fadd2a307d15a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b072e194a89f10755ff1c59c98ac089be9027a0727eb907ae2d30ff27fb45b7b
MD5 83a64118e4b56d46cb8a0748e14cddb3
BLAKE2b-256 b121bbe7eae453e1c1d55678f60b77956b47ce7c166263e1fb1d1776055c068a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 016e9da1bae70ac2568271b6a1c18471ebe7c71db9aa2c41949d0307f4280aef
MD5 53bab13a08fc850e499b0f9b5f38c9ac
BLAKE2b-256 88addd3a312d41b36fe5b49faf3aa5529f88f3cc3046ec6db898ccf79bbe67bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 28b78dcba17cacbfdcba878b4d5d579fb9a4868e0085606ce2b75a76ca93f2af
MD5 bad861f952a6253a077377a771597d3b
BLAKE2b-256 fdf1670dd644e0b2c45b383701d8e1e0d58928ea458149675596fa0e07d345be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.12-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.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 775a4e5ba6e47dc5c8871bdd66d8a2324a2079cfb285ad1965ed2cfa00a8c9b9
MD5 5d46f916bc574e4ca2d75171a4b52272
BLAKE2b-256 632048113c46a1f71c765fd2b778095fb56584fa71a135fd186d860d78fa2355

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f71c68299d942fbab404dd9c63a1ce05c4cf857446a95d5f63cfe394c48d356a
MD5 407354dde404dbeab0956ab21fc9a168
BLAKE2b-256 a315ddf7d262337278c757518d1f51c142e876109ee11d5057a6258f8682f395

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7deb72c23a15db9ca44b176e19ea4135be5472666a7a1fca91f3d8f2878db836
MD5 c26aa82c46d4d75afba3684b3971a99f
BLAKE2b-256 f96494ca8515b20bceb0fdee028b9ac7d7d5d80adb279d84b5124c7d86690bd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ff10f5e899db11d7508f9e16d02b74e6549809e25c69d791e583eb159ca5a7c1
MD5 cfef2cdf1d1a5b160e99d303fa5b27bf
BLAKE2b-256 85b38a634e0cd04e16ec5deeb7f9030ac6ea7b46cec1f0d5806523f2a475edbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 acb04dff6da4976f07406dc959524ceeb9811a7efe8d406071cc074a19884157
MD5 a60f0d6371d811d8bd3f4469d40cfc01
BLAKE2b-256 07e8d7e22897c8adee5c56c511429104541c436db02bed4348b82bf56a1e5bb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5f05340025e8339e30c571157d0c1f22edd88ea7cda30003f7619f154d80d478
MD5 ba3ec3964148b33bdc065503fd635ca8
BLAKE2b-256 22fc47a0dd0764dd54d52954af90e58a2d4f641b192eabaebefed0a3f3c62f5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 31d1cd17fe992240407941a4b9054e4417201b10d99e7237d04edec2478be0d2
MD5 30e466ff0678d5e5e367e603ba4d7f1f
BLAKE2b-256 79dfc3a1101860981f6268a9405c10ad778ed54bcee79ce0229a142f0a71fb31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.12-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.12-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 73025ba7ac2dc8b5e6b26a564714cd5926fdbdd50d9193d3b0166694e4001bc9
MD5 463d3a2735afb9acfc3cb7c19dfb47e2
BLAKE2b-256 cc9f208c7fb7b6ba2aa450dc8eddfa32d077c1a1f87af5c8def1fa0953e8216f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c8d72b079bfab542ff94fce5265fad33ec885478e7e342250488976220c5157e
MD5 b5523d4d0b728f064e26c2230aa0e25e
BLAKE2b-256 fa36de4fbe072e17962ed69560349012f7e0d6a1922ef3ab095a4f927cde7a16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e7c35e62261c9986432559b9afdaddd13502cb5944d6abd69a4825b7d885274
MD5 0cdbd096e7046dd89b21e31037911cbb
BLAKE2b-256 25d2f0759ae6e652e04bcc9fd911106491166370723800e3418b2963c668e1da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 44bd8dc88d4a922017cc8c7106b83bcc110d48c2b840b96c1798696828d3998c
MD5 7fbea076db7a5f545b2afd166e05a50c
BLAKE2b-256 6779e6dc7e2df14c7bfa01532b5fbedc116567f67408182bb89a330a34c427f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 265c59d91985c8d38c03e75072d7da5e8b5188e6993bcef3471bec712bcd38c3
MD5 843f0dc739d7afdb2587576c2f0936f4
BLAKE2b-256 a54236f82bb86f11094b796d5a4d23402b3ff8fab0f83f0f936b150422214f51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 973c21034e51a109df76fa53442e76d1ad119dc055b30e28542d7c65e5871641
MD5 82418b2f8398f5f202a8ad4de53870b1
BLAKE2b-256 e6afaf9d28b50cdb63b91a61d4a04546f9b5623c4f6c16c632cc196f91b32926

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 021467eae5eeff64c5fe7a5b8adbd16d57f4784db62ed36063403cb3b2b5641a
MD5 00e06f5c21b71a0d727afb11c568948a
BLAKE2b-256 7326e75d9c15eeba452c4bfabf7d97722705a10b4c3aef03061bbd972e8e5c31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tract-0.19.12-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.12-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 846a17ab6c33dc366c8e209d47db49cff634dc6251c89a4ec541214c12d27ea2
MD5 3565e622a795fe4c64e00334f9260c71
BLAKE2b-256 4ff12d4a5b4b0baca4909c2d80fad1a206e15b6a82abe0336cc524f35d6080e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 86d720c6719aaa3dde3732297ea91fb4e0d82abdba4f1063f83a45bb66c3b1c1
MD5 e1947d9f7b560be5e21f75c1f880ad22
BLAKE2b-256 0c483a4379746c1fb58519b4faeeb1cb970dee3ae788ec3be6bb2a902a9f5aa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de64132309dded90fecb17a7da212c0309d7a54a4026dc9c9d0311962795a66a
MD5 a8a88c6fbeb323f4eb9ddcf808994ca0
BLAKE2b-256 7cd42c48700b88b49737b260138c1829230d5da6ccb54397d389af8260d7f7f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b40f3cc2c72edb2b894f3de39057db340affa0df131db2b5e68fcb56e18ff18e
MD5 31f020ef7bce11f38c104fe4ad4a0756
BLAKE2b-256 3ca0f12958698c569982fe15c0b91d0d22b14990da07013f0deee9e49bed72d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tract-0.19.12-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b14a119526d43e6d65739dead3abb7b223d5521abb32a94212b439531c8c4b27
MD5 e62a1e031eae5dac99ab6dea69c14976
BLAKE2b-256 7a655c6b3341de9132ce6785a2df53a5bdc60707e049393e1637298cffbb10b7

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