Skip to main content

No project description provided

Project description

tamp logo

Python compat PyPi GHA Status Coverage Documentation Status

Tamp

Tamp is a low-memory, micropython-optimized, DEFLATE-inspired lossless compression library.

Features

  • Various implementations available:

    • Pure Python:

      • tamp/compressor.py, tamp/decompressor.py

      • When available, Tamp will use a python-bound C implementation for speed.

    • C library:

      • tamp/_c_src/

  • High compression ratios and low memory use.

  • Compact compression and decompression implementations.

    • Compiled C library is <7.5KB (compressor + decompressor).

  • Mid-stream flushing.

    • Allows for submission of messages while continuing to compress subsequent data.

  • Customizable dictionary for greater compression of small messages.

  • Convenient CLI interface.

Installation

Tamp contains 2 implementations: a desktop cpython implementation that is optimized for readability, and a micropython implementation that is optimized for runtime performance.

Desktop Python

The Tamp library and CLI requires Python >=3.8 and can be installed via:

pip install tamp

MicroPython

For micropython use, there are 3 main files:

  1. tamp/__init__.py - Always required.

  2. tamp/decompressor_viper.py - Required for on-device decompression.

  3. tamp/compressor_viper.py - Required for on-device compression.

For example, if on-device decompression isn’t used, then do not include decompressor_viper.py. If manually installing, just copy these files to your microcontroller’s /lib/tamp folder.

If using mip, tamp can be installed by specifying the appropriate package-*.json file.

mip install github:brianpugh/tamp  # Defaults to package.json: Compressor & Decompressor
mip install github:brianpugh/tamp/package-compressor.json  # Compressor only
mip install github:brianpugh/tamp/package-decompressor.json  # Decompressor only

If using Belay, tamp can be installed by adding the following to pyproject.toml.

[tool.belay.dependencies]
tamp = [
   "https://github.com/BrianPugh/tamp/blob/main/tamp/__init__.py",
   "https://github.com/BrianPugh/tamp/blob/main/tamp/compressor_viper.py",
   "https://github.com/BrianPugh/tamp/blob/main/tamp/decompressor_viper.py",
]

Usage

Tamp works on desktop python and micropython. On desktop, Tamp is bundled with the tamp command line tool for compressing and decompressing tamp files.

CLI

Compression

Use tamp compress to compress a file or stream. If no input file is specified, data from stdin will be read. If no output is specified, the compressed output stream will be written to stdout.

$ tamp compress --help

 Usage: tamp compress [OPTIONS] [INPUT_PATH]

 Compress an input file or stream.

╭─ Arguments ────────────────────────────────────────────────────────────────────────╮
   input_path      [INPUT_PATH]  Input file to compress or decompress. Defaults to  
                                 stdin.                                             
╰────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ──────────────────────────────────────────────────────────────────────────╮
 --output   -o      PATH                      Output file. Defaults to stdout.      
 --window   -w      INTEGER RANGE [8<=x<=15]  Number of bits used to represent the  
                                              dictionary window.                    
                                              [default: 10]                         
 --literal  -l      INTEGER RANGE [5<=x<=8]   Number of bits used to represent a    
                                              literal.                              
                                              [default: 8]                          
 --help                                       Show this message and exit.           
╰────────────────────────────────────────────────────────────────────────────────────╯

Example usage:

tamp compress enwik8 -o enwik8.tamp  # Compress a file
echo "hello world" | tamp compress | wc -c  # Compress a stream and print the compressed size.

The following options can impact compression ratios and memory usage:

  • window - 2^window plaintext bytes to look back to try and find a pattern. A larger window size will increase the chance of finding a longer pattern match, but will use more memory, increase compression time, and cause each pattern-token to take up more space. Try smaller window values if compressing highly repetitive data, or short messages.

  • literal - Number of bits used in each plaintext byte. For example, if all input data is 7-bit ASCII, then setting this to 7 will improve literal compression ratios by 11.1%. The default, 8-bits, can encode any binary data.

Decompression

Use tamp decompress to decompress a file or stream. If no input file is specified, data from stdin will be read. If no output is specified, the compressed output stream will be written to stdout.

 $ tamp decompress --help

 Usage: tamp decompress [OPTIONS] [INPUT_PATH]

 Decompress an input file or stream.

╭─ Arguments ────────────────────────────────────────────────────────────────────────╮
   input_path      [INPUT_PATH]  Input file. If not provided, reads from stdin.     
╰────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ──────────────────────────────────────────────────────────────────────────╮
 --output  -o      PATH  Output file. Defaults to stdout.                           
 --help                  Show this message and exit.                                
╰────────────────────────────────────────────────────────────────────────────────────╯

Example usage:

tamp decompress enwik8.tamp -o enwik8
echo "hello world" | tamp compress | tamp decompress

Python

The python library can perform one-shot compression, as well as operate on files/streams.

import tamp

# One-shot compression
string = b"I scream, you scream, we all scream for ice cream."
compressed_data = tamp.compress(string)
reconstructed = tamp.decompress(compressed_data)
assert reconstructed == string

# Streaming compression
with tamp.open("output.tamp", "wb") as f:
    for _ in range(10):
        f.write(string)

# Streaming decompression
with tamp.open("output.tamp", "rb") as f:
    reconstructed = f.read()

Benchmark

In the following section, we compare Tamp against:

  • zlib, a python builtin gzip-compatible DEFLATE compression library.

  • heatshrink, a data compression library for embedded/real-time systems. Heatshrink has similar goals as Tamp.

All of these are LZ-based compression algorithms, and tests were performed using a 1KB (10 bit) window. Since zlib already uses significantly more memory by default, the lowest memory level (memLevel=1) was used in these benchmarks. It should be noted that higher zlib memory levels will having greater compression ratios than Tamp. Currently, there is no micropython-compatible zlib or heatshrink compression implementation, so these numbers are provided simply as a reference.

Compression Ratio

The following table shows compression algorithm performance over a variety of input data sourced from the Silesia Corpus and Enwik8. This should give a general idea of how these algorithms perform over a variety of input data types.

dataset

raw

tamp

zlib

heatshrink

enwik8

100,000,000

51,635,633

56,205,166

56,110,394

build/silesia/dickens

10,192,446

5,546,761

6,049,169

6,155,768

build/silesia/mozilla

51,220,480

25,121,385

25,104,966

25,435,908

build/silesia/mr

9,970,564

5,027,032

4,864,734

5,442,180

build/silesia/nci

33,553,445

8,643,610

5,765,521

8,247,487

build/silesia/ooffice

6,152,192

3,814,938

4,077,277

3,994,589

build/silesia/osdb

10,085,684

8,520,835

8,625,159

8,747,527

build/silesia/reymont

6,627,202

2,847,981

2,897,661

2,910,251

build/silesia/samba

21,606,400

9,102,594

8,862,423

9,223,827

build/silesia/sao

7,251,944

6,137,755

6,506,417

6,400,926

build/silesia/webster

41,458,703

18,694,172

20,212,235

19,942,817

build/silesia/x-ray

8,474,240

7,510,606

7,351,750

8,059,723

build/silesia/xml

5,345,280

1,681,687

1,586,985

1,665,179

Tamp usually out-performs heatshrink, and is generally very competitive with zlib. While trying to be an apples-to-apples comparison, zlib still uses significantly more memory during both compression and decompression (see next section). Tamp accomplishes competitive performance while using around 10x less memory.

Memory Usage

The following table shows approximately how much memory each algorithm uses during compression and decompression.

Action

tamp

zlib

heatshrink

Compression

(1 << windowBits)

(1 << (windowBits+2)) + 7 KB

(1 << windowBits)

Decompression

(1 << windowBits)

(1 << windowBits) + 7 KB

(1 << windowBits)

Both tamp and heatshrink have a few dozen bytes of overhead in addition to the primary window buffer, but are implementation-specific and ignored for clarity here.

Runtime

As a rough benchmark, here is the performance (in seconds) of these different compression algorithms on the 100MB enwik8 dataset. These tests were performed on an M1 Macbook Air.

Action

tamp (Python Reference)

tamp (C)

zlib

heatshrink (with index)

heatshrink (without index)

Compression

109.5

17.44

4.84

6.22

41.729

Decompression

54.0

0.09

0.08

0.82

0.82

Heatshrink v0.4.1 was used in these benchmarks. When heathshrink uses an index, an additional (1 << (windowBits + 1)) bytes of memory are used, tripling the memory requirement. Tamp could use a similar indexing to increase compression speed, but has chosen not to to focus on the primary goal of a low-memory compressor.

Binary Size

To give an idea on the resulting binary sizes, Tamp and other libraries were compiled for the Pi Pico. All libraries were compiled with -O3. Numbers reported in bytes.

Library

Compressor

Decompressor

Compressor + Decompressor

Tamp (micropython)

4779

4717

8262

Tamp (C)

2956

2204

5036

Heatshrink

2956

3876

6832

uzlib

2355

3963

6318

When to use Tamp

On a Pi Pico (rp2040), the viper implementation of Tamp can compress data at around 4,300 bytes/s when using a 10-bit window. The data can then be decompressed at around 44,100 bytes/s. Tamp is good for compressing data on-device. If purely decompressing data on-device, it will nearly always be better to use the micropython-builtin zlib.decompress, when available.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

tamp-1.1.0-cp311-cp311-win_amd64.whl (140.4 kB view details)

Uploaded CPython 3.11 Windows x86-64

tamp-1.1.0-cp311-cp311-win32.whl (127.2 kB view details)

Uploaded CPython 3.11 Windows x86

tamp-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl (729.8 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

tamp-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl (753.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ppc64le

tamp-1.1.0-cp311-cp311-musllinux_1_1_i686.whl (692.9 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

tamp-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl (723.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

tamp-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (732.8 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

tamp-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (757.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

tamp-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (700.5 kB view details)

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

tamp-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (727.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

tamp-1.1.0-cp311-cp311-macosx_12_0_x86_64.whl (155.7 kB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

tamp-1.1.0-cp311-cp311-macosx_12_0_arm64.whl (146.5 kB view details)

Uploaded CPython 3.11 macOS 12.0+ ARM64

tamp-1.1.0-cp310-cp310-win_amd64.whl (142.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

tamp-1.1.0-cp310-cp310-win32.whl (128.2 kB view details)

Uploaded CPython 3.10 Windows x86

tamp-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl (705.5 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

tamp-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl (728.6 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ ppc64le

tamp-1.1.0-cp310-cp310-musllinux_1_1_i686.whl (681.0 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

tamp-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl (699.5 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

tamp-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (696.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

tamp-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (721.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

tamp-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (674.5 kB view details)

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

tamp-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (691.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

tamp-1.1.0-cp310-cp310-macosx_12_0_x86_64.whl (158.2 kB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

tamp-1.1.0-cp310-cp310-macosx_12_0_arm64.whl (149.1 kB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

tamp-1.1.0-cp39-cp39-win_amd64.whl (145.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

tamp-1.1.0-cp39-cp39-win32.whl (130.2 kB view details)

Uploaded CPython 3.9 Windows x86

tamp-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl (722.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

tamp-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl (748.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ ppc64le

tamp-1.1.0-cp39-cp39-musllinux_1_1_i686.whl (696.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

tamp-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl (718.4 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

tamp-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (713.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

tamp-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (743.0 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

tamp-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (691.0 kB view details)

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

tamp-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (710.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

tamp-1.1.0-cp39-cp39-macosx_12_0_x86_64.whl (159.6 kB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

tamp-1.1.0-cp39-cp39-macosx_12_0_arm64.whl (149.7 kB view details)

Uploaded CPython 3.9 macOS 12.0+ ARM64

tamp-1.1.0-cp38-cp38-win_amd64.whl (144.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

tamp-1.1.0-cp38-cp38-win32.whl (130.0 kB view details)

Uploaded CPython 3.8 Windows x86

tamp-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl (753.0 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

tamp-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl (780.4 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ ppc64le

tamp-1.1.0-cp38-cp38-musllinux_1_1_i686.whl (725.7 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

tamp-1.1.0-cp38-cp38-musllinux_1_1_aarch64.whl (748.7 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

tamp-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (723.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

tamp-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (754.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

tamp-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl (703.0 kB view details)

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

tamp-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (720.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tamp-1.1.0-cp38-cp38-macosx_12_0_x86_64.whl (156.9 kB view details)

Uploaded CPython 3.8 macOS 12.0+ x86-64

tamp-1.1.0-cp38-cp38-macosx_12_0_arm64.whl (147.4 kB view details)

Uploaded CPython 3.8 macOS 12.0+ ARM64

File details

Details for the file tamp-1.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tamp-1.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 140.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6b02c60e8bc0dae7a27f55112952437e7ba297c6078f3d677f8f80cc0a0b05bc
MD5 729d51f44e7ec6031098236765041491
BLAKE2b-256 cafb47715134753c2260378302f00b7993dc11ad2f61fd634b377625fb796836

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: tamp-1.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 127.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 9b503940836651fb8ea8aaba0a9211ebc6e61f97542ab4d8bfad9bb327da11d4
MD5 fa5f2a3ae736d03eece930e5f4c05ddb
BLAKE2b-256 b2f104e66b59a74a81fff1cc96519159e33c7cbc81f36a4148e6818a57ec05ba

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d1d2734701530f28475da46eb41264f5dff1bbb86abfc59992cb8a8ef35f9d22
MD5 db98e078278b14839fd7143baa401b14
BLAKE2b-256 2c27128440d9682a9afff4ff64b6c791391442a1d3a42fe1cc6ebc88823b56a1

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 c4d5b6d9d6d6aeb6309d386215257f1fa7af5dc5822e37118d711219c6d59059
MD5 3b408caec11358950e1940bdd6bc1cd1
BLAKE2b-256 7a468963daadac0c997b5056e4448338b4ae5745b80134a580c0da1428970a6e

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 e6af85b4860563a1d1e8fe4f84f8378ae332ccf1164dd12c797d18fecf253f31
MD5 8663f9dea288e27491037ac98eb3b1e8
BLAKE2b-256 19b0e51f1018e1a6c8a3fcd259fcf454cf5e690237e23c0d2f8ec5fe12585517

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e3b61632793c836abffc57d1cdb2e805a1757079abefa76e00f0e3a15c792739
MD5 e1faaa4e385c4c2a0579078652996772
BLAKE2b-256 f5ac4fae00e8f66df8860c783bccd8aabd3a8a85a0582aab490d11eb605d8e01

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad8234a070196c07a0af8132c78f33fb182d52a3579b220bb261c0ab32a5250c
MD5 162f426099cc10f25b19c4135a9e5f68
BLAKE2b-256 0d9356bcf2f419311361fbe7bbc80dbba0c34f3f9360bc9ecd193b7c78c1fc33

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 793d30fe3f1a90d35f9df3452105f623c379a0d2a24707f42c554e316817289e
MD5 cbc2eb1f061a596216d74751a8a93319
BLAKE2b-256 5b0fac45aa11a41d6dd57e56c8b860accc46dc561b16372e8d78be0576caa3e9

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 848471ebee349d9476c8b0755f2158adc23c37cf8bfdd078f6d136ecb1bcedc4
MD5 1cc6830c74186212a20bac56dcae26c9
BLAKE2b-256 0ba800e0ce32941ca7c3df6eeb19d9727746a5c80d0d1de947e02fe02b65e654

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 199a54e40dd0826731bd43b2bce96e90c6d7e406f5fb7df498485107861c7aef
MD5 7f8197af1025189d95ec90508966b433
BLAKE2b-256 c261198797da9433c9e573adb08ff7678d992e6fd283aff1817425e18bff501d

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 8a218c9ee650ea17faca8d5a5d3be2d6497c5340954bf87d8adcecf1cdbe235f
MD5 d83c624586e9e5e88935ab9f02aad940
BLAKE2b-256 c92eaee98cd6d79c7e38bcf2f999cc75d4f182e7a6ae92bf7c4f883d240871ca

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 bb760385d6cbd4ca5241295e60c1488156c2a4e7c93c9b087183275cef6767ed
MD5 34b7a1eabe7f37282fa45ea7289ffbaa
BLAKE2b-256 12a1d832690e7b95e2385d6346bafaae2d9c924a3870854c64d101cd42354a67

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tamp-1.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 142.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 31579e220a0b08a41efcb467453f9ad2489b993ddc30dcf90aacf2eb5183f55c
MD5 9a0c1f5bbc19b20d8b73344e9f670531
BLAKE2b-256 11fb9f71cf909aba61c64ab76ff8d8b6ddc5d451ec23514a15d142fe4cb7b6f1

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: tamp-1.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 128.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 1b103e123a892063c961070672657ee7c9bb0e33c1134673ce5a21e31d6d541b
MD5 c31f8e2eb371af9f0e21f07e874b3db4
BLAKE2b-256 b5d95b34c85dae1a68a2fb5b06cf7eb86c7e831a5905be61c5888224710d3327

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e4cd18793d271d86c065b107569fa9ed8e9ab7c0a61cc37ca07acfd0aa8539cf
MD5 a76734fbdf9ceadb3ac99b385c923f26
BLAKE2b-256 2be46fdf61544766e8176d84d0132d44956a62289990b82f579f92b451e9ebc8

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 05ceb7e67f44ad3d166be7bdf3dc82e7c25c7cf38dc62ccd8d507f7619ce3b86
MD5 f79c8749129d644c9f9d0b5b4570e9ec
BLAKE2b-256 5df2c0cd2b17e591e102eb853a3d7500617b9ffbb375583057c2d94eef6dd028

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 04e228e5bdbe9586c159314fa7ef20eb0482de4fcf09bfe6900fcf20e909c1ea
MD5 c1e59270c0ae1655180eea84f47192c6
BLAKE2b-256 06ccb1dce94adbe4b93034cf87363967abd9e3c16587d9d1ed617e50ba083d46

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f37e0dbdf4e264222915e6e4860183930fd0739a0212d174f42ca29321a0f6e0
MD5 b887feb7d91fe447640f92abf13bcdd2
BLAKE2b-256 69f6d4262886f286ba8cfe94cf6c522ca8b2e69cde2158b2b975978a1b254e5a

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d2532af50d9c231d7a461e7c918a6fe0027678bbf0b8b52a8b028bff9ee6bf6d
MD5 f98fa5d6b93ba2876d884952bcd8c9f5
BLAKE2b-256 fb2aea5886db5e95cd4bc5c133d5d4b8b44cae7fbc618d9833aae8b75bd4c09a

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5a0cdac57827fac4864439c1cb04c5f34dda70334150b767c097074ee5fc1d02
MD5 cd6e0afbcc8d13f6ab23690084f8403d
BLAKE2b-256 82c41ece86a654a7f0b272a175199a1b5aea9146836b9eaded03f74eced02ac9

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5d924f230a673e0ff7888b9b0993446686abf3256c22929cee2a921014690f66
MD5 ec91d514d8329a6248d58e6c1758a796
BLAKE2b-256 f6a5e69840964f1fe49cf3180d85573f927e4c9ee127ca87584b15598442903e

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c01d4eaf284b2737a15673d1a9373836c90a5f012d368d3a514d279b3d2cc059
MD5 0f9413dee30b58e778c8406a1850abbf
BLAKE2b-256 2aadf008ffc4e0c2bc42f6a5d076687a41e7c60d51232f029bc784b48566a543

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3c0ea0cc8dbd1e68de661738437f3b32114a23542f899f087d62389ca2d427c8
MD5 2f913b981636582450e6ab7acf888957
BLAKE2b-256 5400b0077106867e7e04246e91f8c1b42d2e6b2b13286765fee484ef04dd7d67

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 a39d93c0560ecd9e0444503daee9e66f3c714f98b36b57c4b46a94dc04fabf9c
MD5 bd99a20d50aaf0fc053ab23674cf07a5
BLAKE2b-256 b6fa7a1f379b76d25ec9036890bb0f6a1259dd4253ca5167027a0e851b9372c1

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tamp-1.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 145.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 23b5179d57bfc993bde955107788d3d4919c87b7f9c4f227ffbd549992a5f45e
MD5 fb3bfb9dc0e112886de93949e9e69aa4
BLAKE2b-256 fd4e92a94b70026e7e076a45a9561141eab8a57f66f4dbab5d532d027dfe2813

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: tamp-1.1.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 130.2 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 33397f1b4cbdbc2c8605e34061a00578fdb5ca7413bbe026aafe7cc6aa0e3a8c
MD5 bd7fec49aa07cfbd0ccf43202c0ee40a
BLAKE2b-256 3dc6bf295372262aafa46a7c76edafd7ea50a4a6206a75eaed5dacaa7df7e0fe

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ed5fc5808fc1bfff78ae65ec490d0d47509fa7beee0bcb0d27b9886a75c55928
MD5 3409870164f11d697a09182bbaeb4757
BLAKE2b-256 45f2debd502d43cd6effe8769083be49026c8fe1e1f69cad9c9a66c215a7ee6b

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 221f64fcfe8934fb06ae3bde39fbde848b96b3e4bdc67a1c14ebd484a968d341
MD5 17561333c3435b204aa62b452d8fa719
BLAKE2b-256 e434bdf47fb9be3763c49c40c5302ddf1a7fea79e6294e432c93c4d42dc034ab

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 4d00118f9e36a4677050886a9df3c2d388b12f85a3255cf8a435019ea01d683c
MD5 440567eef9fdde51cb1136abd1485bc2
BLAKE2b-256 f33980b2d3ca09a7f196c82c1828c93f9d9179a20242bdc406e105e0551a3bb2

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3f81ee2afce54eba14479c162a530746df57a095c50058b105b9d10a7d9cf9e8
MD5 afa7c54f81d4980ad810362be6e4733d
BLAKE2b-256 d924502a1975859ede6bd8869788ba8485a894f33710605a430a8cfbb7b841f2

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d10d28cefad7cb47e1166b1651e2273c30ef85850cf96e3b65106a64dc48efd2
MD5 9664a15804a6830eb53056d2216372aa
BLAKE2b-256 530ce93157cf522b2f2e03019dc7a717b8ade66df6ac0920c05022f5d5f227e6

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0cce2e3c02a2ee6892d12e9e8254a3a199960ac58c3362911389b87827737b30
MD5 f3ff22258a501c0d8245345aa667fbd9
BLAKE2b-256 9ff1cfa90514013a33c843bc3c6d047c37a059c10b7132d58e599a9571e477bb

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d6ba532dab4e531a82c02ae9069725846a189eda7986be09f951855b4c052123
MD5 2009e2ad0463520555e42d9525cbc260
BLAKE2b-256 5cd62868db54884b168ad7456bf45a6756bfe5ff78d8e0938be163441ca2ff89

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b65df006058c8a968562ac5056b2ec6c702f1547af2717eb72d77726e90f0060
MD5 b129b58505962bc0d62a501c8f6fce37
BLAKE2b-256 2b0b775f40a438da23d09c7bbb5e50a6ccf7f49ba402ea340ddb5fef5d76c690

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 6b2a9b67f6493058854ffabae43dd7aea21bb771bfad68c52933f2302ccc8c00
MD5 0df3ae868b2702cbedca131c00d3757f
BLAKE2b-256 5a462d7d9fad195b88e3e317d576e275e9dde01ef802f05d685cf5cafc0f061e

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 a3f7352b503bfef67a17c698e587696b9e9e710e4bb2bdcca16beedd73da7854
MD5 36a068093254725d4ce6fb7533d136de
BLAKE2b-256 9fbad516f0d4ab7491edd63d89b1c2df1c5d4ee0750ceece59f6775f75106429

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: tamp-1.1.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 144.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 561fe3c7ac069e5482e9f5b3b98a02c5628aa85e2882705af316d616d7b5ada5
MD5 19dcc31c82693fb9611a086605d4e5f1
BLAKE2b-256 5f1fe1333090f41d81de1692f2a2530b97a7e24f277d24029bda540ad73d141d

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: tamp-1.1.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 130.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for tamp-1.1.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 d73e011b2d7c078960c3360f0406cda3fba9f0207dfffbb52698131f656ef744
MD5 f647cdcff4f3d43ce2fefd72b5229818
BLAKE2b-256 ee975ae822b177e0f342cc39dd37194e2b46260b4d0858d76a90fa9ebbab9f24

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b19343e27837f8e525ce191d4899e069910089c8d903e01af0ce678858ffe8ff
MD5 4d8c576bea7097770d9bf0bf31d8496a
BLAKE2b-256 7472f323889dcd57b1165d1345a50de69e98c07b26a32fd8bf411327f6bb7697

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 b1761ccb524bf39a2cf60a82104e4a095f5d2f5e5a1634ba5563450390684738
MD5 4baeb8c45f6e0df3c360069e41bae22f
BLAKE2b-256 7bfa0f9424d32afa65f82dcecdf6b8f34ed7cbc80c12665ed17105461104acf0

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 b33135ec6907c5155b206fc9261b46e6517cd101be90439bddccab5e4839c8b1
MD5 1a17b7c3842987e43e09a5c59d893dd0
BLAKE2b-256 d1e851718b1b0eec6860821a6fb06eebf914926789647eba381c7bfc0104df6f

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0c7823a13b43731c3a5f1ff20dd72d70c54a1c5f45484d790449a109526e29f2
MD5 6dbdc66e19a3bbe5f4a9957a51bdd0d0
BLAKE2b-256 dceb2b7a7da5448cab3166a9b0c071b7d8a5c405c6b97ac0296a4c187296a4aa

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b93a5c93efdd4e0fa3592798462f2b3b5b8a44e464a68dbec2d2c00266b58df8
MD5 584c8405ea2d1727e6aa351d59cdaeed
BLAKE2b-256 e745a48792dcf595aa8985b9249ecfc23226812e257bd29d4859ff06134fa771

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d99fb6f0765f15a680ba8460b5cc6b0a97fc50273d34eaa1bd3d965780a66e94
MD5 e5aa37a28fb86f15bc4c68941a2c9241
BLAKE2b-256 1131182077a3967935357a95166158e2a2eee5954fa7fa39cf4e4ec8d4554232

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 20fb7eddf3c2ac42515d3f0b8ac6f298fd834ca393e1186d36ddfa7f35f06931
MD5 080b5633d0acc6fd2d145a2af1012005
BLAKE2b-256 8385494c7fd72561adc9732c5382660b38f57415ccf53cd93602354da98e57a8

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b10d9e444d2495ceefb462a13c3ea5363c67ecbedf1f86818c9cbb6b98271864
MD5 9e8c486a3c98413b61f9dddc0cc6651a
BLAKE2b-256 3e98c8d1094ff0d75a8f3040277d156dee53d075ed3cc49a13746a00041cf2e8

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 f47196225cdddb4b00aab87ccc1943f0a24311f2a41e4b167d395d8ee7200192
MD5 24a144c5e164661ec80f8b3069f61605
BLAKE2b-256 b04d538f1c472a13e92bfac9a7161b28e62fd018bb69e0fbe572d567f1dca94b

See more details on using hashes here.

File details

Details for the file tamp-1.1.0-cp38-cp38-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tamp-1.1.0-cp38-cp38-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b193198d9b8addcccb8dc891e20bb1a0be10f2457870885ac505fae8a69778ca
MD5 2a61007b27bc7964d12a154ee93bd4c1
BLAKE2b-256 809f720615021815e13cebdbb8536a60d055115fe797c92ae41a621289b92b6d

See more details on using hashes here.

Supported by

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