Skip to main content

Crackle 3D dense segmentation compression codec.

Project description

Crackle: Next gen. 3D segmentation compression codec.

# Command Line Interface
crackle data.npy # creates data.ckl
crackle -d data.ckl # recovers data.npy
import crackle
import numpy

labels = np.load("example.npy") # a 2D or 3D dense segmentation

binary = crackle.compress(labels)
labels = crackle.decompress(binary)

# get unique labels without decompressing
uniq = crackle.labels(binary) 

# Remap labels without decompressing. Could
# be useful for e.g. proofreading.
remapped = crackle.remap(
  binary, { 1: 2, 2: 3, ... },
  preserve_missing_labels=True
)

# for working with files
# if .gz is appended to the filename, the file will be
# automatically gzipped (or ungzipped)
crackle.save(labels, "example.ckl.gz")
labels = crackle.load("example.ckl.gz")

arr = crackle.CrackleArray(binary)
res = arr[:10,:10,:10] # array slicing (efficient z ranges)
20 in arr # highly efficient search

This repository is currently in Beta release.

Crackle is a compression codec for 3D dense segmentation (labeled) images. The algorithm accepts both signed and unsigned integer labels (though the implementation currently has some restrictions on signed integers). It is written in C++ and has Python bindings. Crackle uses a two pass compression strategy where the output of crackle may be further comrpessed with a bitstream compressor like gzip, bzip2, zstd, or lzma. However, if the Crackle binary, which is already small, is not further compressed, it supports several efficient operations:

  • Query if a label exists in the image
  • Extract unique labels
  • Remap labels
  • Decode by Z-Range

Crackle is inspired by Compresso [1]. Compresso innovated by separating labels from boundary structures. There were conceptually four (but really five) elements in the format: header, labels, bit packed and RLE encoded binary image boundaries, and indeterminate boundary locations.

Crackle improves upon Compresso by replacing the bit-packed boundary map with a "crack code" and can also use 3D information to reduce redundancy in labels using "pins".

See benchmarks for more information on Crackle's size and compute effiency.

Versions

Major Version Format Version Description
1 0 Still experimental.

Stream Format

Section Bytes Description
Header 24 Metadata incl. length of fields.
Crack Index header.sz * sizeof(uint32) Number of bytes for the crack codes in each slice.
Labels header.num_label_bytes Can be either "flat" labels or "pins". Describes how to color connected components.
Crack Codes Variable length. Instructions for drawing crack boundaries.

Header

Attribute Value Type Description
magic crkl char[4] File magic number.
format_version 0 u8 Stream version.
format_field bitfield u16 See below.
sx, sy, sz >= 0 u32 x 3 Size of array dimensions.
grid_size log2(grid_size) u8 Stores log2 of grid dimensions in voxels.
num_label_bytes Any. u8 Number of bytes of the labels section. Note the labels come in at least two format types.

Format Field (u16): DDSSCLLFGRRRRRRR (each letter represents a bit, left is LSB)

DD: 2^(DD) = byte width of returned array (1,2,4,8 bytes)
SS: 2^(SS) = byte width of stored labels (sometimes you can store values in 2 bytes when the final array is 8 bytes)
C: 1: crack codes denote impermissible boundaries 0: they denote permissible boundaries.
LL: 0: "flat" label format, 1: fixed width pins (unused?) 2: variable width pins 3: reserved
F: whether the array is to be rendered as C (0) or F (1) order G: Signed (if (1), data are signed int, otherwise unsigned int) R: Reserved

Flat Label Format

| NUM_LABELS (u64) | UNIQUE LABELS (NUM_LABELS \* STORED_DATA_WIDTH) | NUM CONNECTED COMPONENTS PER A GRID (sizeof(sx \* sy) \* sz) | INDEX INTO UNIQUE LABELS FOR EACH CCL ID (sizeof(NUM_LABELS) \* ... to end of section) |

Flat labels are random access read, allow efficient reading of unique labels, efficient remapping, and efficient search for a given label's existence. Since the connected component labels can often use a smaller byte width than the unique values, even noise arrays can see some value from compression.

Encoding flat labels is fast.

Condensed (Variable Width) Pins Label Format

| BACKGROUND COLOR (STORED_DATA_WIDTH) | NUM_LABELS (u64) | UNIQUE LABELS (NUM_LABELS \* STORED_DATA_WIDTH) | FMT_BYTE | PIN SECTION |

FMT_BYTE: 0000DDNN

DD: 2^(DD) is the depth width NN: 2^(NN) is the num pins width

PIN SECTION: | PINS FOR LABEL 0 | PINS FOR LABEL 1 | ... | PINS FOR LABEL N |

PINS: | num_pins | INDEX_0 | INDEX_1 | ... | INDEX_N | DEPTH_0 | DEPTH_1 | ... | DEPTH_N |

Note that INDEX_0 to INDEX_N are stored with a difference filter applied to improve compressibility.

A pin (color, position, depth) is a line segment that joins together multiple connected component IDs and labels them with a color (an index into UNIQUE LABELS) in order to use 3D information to compress the labels as compared with the flat label format. Pins are slow to compute but fast to decode, however random access is lost (a full scan of the labels section is needed to decode a subset of crack codes). The most frequent pin is replaced with a background color. Like with flat, efficient reading of unique labels, efficient remapping, and search are supported.

Depending on the image statistics and quality of the pin solver, pins can be much smaller than flat or larger (some heuristics are used to avoid this case). An excellent example of where pins do well is a binary image where remarkable savings can be achieved in the labels section (though overall it is probably a small part of the file).

Fixed Width Pins (disabled)

| BACKGROUND COLOR (STORED_DATA_WIDTH) | NUM_LABELS (u64) | UNIQUE LABELS (NUM_LABELS \* STORED_DATA_WIDTH) | PIN SECTION |

PIN SECTION: |PIN0|PIN1|PIN2|...|PINN| PIN: |LABEL|INDEX|DEPTH|

A fixed width variant of pins has also been developed but is not enabled. It frequently is not significantly smaller than flat outside of special circumstances such as a binary image. An advantage this format would have over condensed is that the pins can be sorted and searched rapidly by index, which reduces the amount of reading one might have to do on an mmapped file. Please raise an issue if this seems like something that might be useful to you.

Crack Code Format

CRACK CODE: | CHAIN 0 | CHAIN 1 | ... | CHAIN N |

CHAIN: | BEGINNING OF CHAIN INDEX (sizeof(sx * sy)) | BIT PACKED MOVES (2 bits each) |

The BEGINNING OF CHAIN INDEX (BOC) locates the grid vertex where the crack code will begin. Vertices are the corners of the pixel grid, with 0 at the top left and sx*sy-1 at the bottom right (fortran order).

The crack code is a NEWS code (up,right,left,down). Impossible combinations of directions are used to signal branching and branch termination. The next chain begins in the next byte when a termination signal causes the current branch count to reach zero.

There may be ways to further improve the design of the crack code. For example, by applying a difference filter a few more percent compression under gzip can be obtained. In the literature, there are other shorter codes such as a left,right,straight (LRS) code and fancy large context compressors that can achieve fewer than one bit per a move.

Boundary Structure: Crack Code

Our different approach is partially inspired by the work of Zingaretti et al. [2]. We represent the boundary not by border voxels, but by a "crack code" that represents the edges between voxels. This code can be thought of as directions to draw edges on a graph where the vertices are where the corners of four pixels touch and the edges are the cracks in between them.

Since this regular graph is 4-connected, each "move" in a cardinal direction can be described using two bits. To represent special symbols such as "branch" and "terminate", an impossible set of instructions on an undirected graph such as "left-right" or "up-down" can be used (occupying 4 bits). In order to avoid creating palendromic sequences such as (3, 0, 3) meaning (down, branch) but can be read (terminate, down), we can use the left-right impossible directions to rewrite it as (3, 2, 1).

While the image is 3D, we treat the image in layers because working in 3D introduces a large increase in geometric complexity (a cube has 6 faces, 12 edges, and 8 corners while a square has 4 edges and 4 corners). This increase in complexity would inflate the size of the crack code and make the implementation more difficult.

Label Map: Method of Pins

Each 2D CCL region must has a label assigned. Due to the 2D nature of the crack code, we cannot use 3D CCL. However, for example, a solid cube of height 100 would need 100 labels to represent the same color on every slice as in Compresso.

It is still possible to reduce the amount of redundant information even without 3D CCL. For each label, we find a set of vertical line segments ("pins") that fully cover the label's 2D CCL regions. Sharp readers may note that this is the NP-hard set cover problem.

Once a reasonably small or minimal set of pins are found, they can be encoded in two forms:

Condensed Form: [label][num_pins][pin_1][pin_2]...[pin_N] Fixed Width Form: [label][pin_1][label][pin_2]...[label][pin_N] Pin Format: [linear index of pin top][number of voxels to bottom]

Fixed width example with label 1 with a pin between (1,1,1) and (1,1,5) on a 10x10x10 image: [1][111][4]

An alternative formulation [label][idx1][idx2] was shown in an experiment on connectomics.npy.cpso to compress slightly worse than Compresso labels. However, this alternative formulation theoretically allows arbitrary pin orientations and so might be useful for reducing the overall number of pins.

The condensed format is a bit smaller than the fixed width format, but the fixed width format enables rapid searches if the set of pins are sorted by either the label (enables fast label in file) or the likely more useful sorting by top index to filter candidate pins when performing random access to a z-slice.

References

  1. Matejek, B., Haehn, D., Lekschas, F., Mitzenmacher, M., Pfister, H., 2017. Compresso: Efficient Compression of Segmentation Data for Connectomics, in: Descoteaux, M., Maier-Hein, L., Franz, A., Jannin, P., Collins, D.L., Duchesne, S. (Eds.), Medical Image Computing and Computer Assisted Intervention − MICCAI 2017, Lecture Notes in Computer Science. Springer International Publishing, Cham, pp. 781–788. https://doi.org/10.1007/978-3-319-66182-7_89

  2. Zingaretti, P., Gasparroni, M., Vecci, L., 1998. Fast chain coding of region boundaries. IEEE Transactions on Pattern Analysis and Machine Intelligence 20, 407–415. https://doi.org/10.1109/34.677272

  3. Freeman, H., 1974. Computer Processing of Line-Drawing Images. ACM Comput. Surv. 6, 57–97. https://doi.org/10.1145/356625.356627

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

crackle-codec-0.2.1.tar.gz (64.9 kB view details)

Uploaded Source

Built Distributions

crackle_codec-0.2.1-cp311-cp311-win_amd64.whl (186.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

crackle_codec-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (291.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

crackle_codec-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl (284.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

crackle_codec-0.2.1-cp310-cp310-win_amd64.whl (186.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

crackle_codec-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (292.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

crackle_codec-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl (284.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

crackle_codec-0.2.1-cp310-cp310-macosx_10_9_universal2.whl (516.7 kB view details)

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

crackle_codec-0.2.1-cp39-cp39-win_amd64.whl (186.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

crackle_codec-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (293.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

crackle_codec-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl (284.5 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

crackle_codec-0.2.1-cp39-cp39-macosx_10_9_universal2.whl (518.0 kB view details)

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

crackle_codec-0.2.1-cp38-cp38-win_amd64.whl (186.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

crackle_codec-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

crackle_codec-0.2.1-cp38-cp38-macosx_11_0_universal2.whl (531.2 kB view details)

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

crackle_codec-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl (284.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

crackle_codec-0.2.1-cp37-cp37m-win_amd64.whl (187.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

crackle_codec-0.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (297.9 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

crackle_codec-0.2.1-cp37-cp37m-macosx_10_9_x86_64.whl (283.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

crackle_codec-0.2.1-cp36-cp36m-win_amd64.whl (187.6 kB view details)

Uploaded CPython 3.6m Windows x86-64

crackle_codec-0.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (298.0 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

crackle_codec-0.2.1-cp36-cp36m-macosx_10_9_x86_64.whl (283.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file crackle-codec-0.2.1.tar.gz.

File metadata

  • Download URL: crackle-codec-0.2.1.tar.gz
  • Upload date:
  • Size: 64.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle-codec-0.2.1.tar.gz
Algorithm Hash digest
SHA256 7bd4fd1dc0c3525f32c7016337a7f06d8507a4f8fc06c4dd2c6244d5fd167293
MD5 7f8357c61389224ac7778c7a83bea0a9
BLAKE2b-256 e303262cbe35c9923524adba51f6db7a39f716a086ad3e60fa32a4487dd0caaf

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 186.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 182805c06a928d05a0d5e7e40b6c368b2f44f6bb04fde703608c908e170a5237
MD5 35d8cbd8d1dd1be22d0aee6752cf476b
BLAKE2b-256 ae06e2f3715e19a0238f46b9b08fabba93bc961acd72c9cf43d2833d91555e5a

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 050ececb5249716fb9cf08efb459d3a9d53681a02294b46feb1d17e6321a4b9d
MD5 cdbb43ed97746f4e3f830c53b1c764d3
BLAKE2b-256 486f58f5306df6f605a1f249a08f550766a6bbe48c181727aa05f9321991f4d4

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.4 kB
  • Tags: CPython 3.11, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b575485f28b57b4500629e52a58749199e3f7d8c11a734df3e49a1b5421270b5
MD5 bd2a495a9e2101bcf2e230eea02f57cc
BLAKE2b-256 aca3e243a11bb040b0d3b135f2ae8c1ae3cac19c1a22bf3b6f5f3af66183789f

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 186.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ace1e684bb8b52adc635ce67cd23a16b37ec6b11264d880b83d50d07c113c481
MD5 609956265713d7b026f18d845e4f31d5
BLAKE2b-256 18c5ad1c6cd1b500024d3add8eee3dc28591875ec4357a71e739c6b0853c61fc

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a57b50182d5861222860b478db4a4c870ac1b6770fa785171d3ce8c24f6f81e
MD5 80e951c3375f60dadc5cd8acf1a79ffb
BLAKE2b-256 5b5e1629c0612dbd46d853c118a07e8a557123966e8fa8338a4d8f80cc7294e7

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.4 kB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 91efd2db29e1acb9894d23f61d783601dd00dd75e7b2ca606181dd8e8d9108f9
MD5 6e02b2acefced95c6954cc95847f608e
BLAKE2b-256 046a372f4cb7301858d046de757bceaf871e1d0c3646183ac8e817a868a4a4e5

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 516.7 kB
  • Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7e9db421578190b97e2294990653ba16ead132993fee2b162e9ab31fb994978f
MD5 702637faa89197c8791aa42041567ef4
BLAKE2b-256 e389fa1c34f29b9f7f9bb40c238931aec9ab3a3125111d283fefe67302640ff3

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 186.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 878c5d35e23a764d8bb312e432bd5e0ed50a74910c1c5e409f9313789e77b749
MD5 9ef33aa1ad936b78bf5fbb77d16fb4dd
BLAKE2b-256 e80ffd2562d90d84a636bcee15e5f7bb92fdd7441558644480f2c414529db7a5

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c4f41379624c07f4e7e6f52bf56f6ec6deb6aad68b39a4ce9125bf394516d9a6
MD5 23ec97f180cb92a4529e5170c603ab1f
BLAKE2b-256 8df9062616e202c84dd312d8b135827d9e1b8f3253efdf4ae605642dd32084b8

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.5 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c7db85bebf56ed7dd58644931ec05f238d3fe4f9d27a8dbf3b6fb73284516d7e
MD5 51c9f4be28e49a899a4e118760da7983
BLAKE2b-256 d52b1c63683d49e52802cb9b02cf4e35f7bce8526ff6c87400c36feebbb80b14

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 518.0 kB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c34976640ac48cce93d498911dda920cf8e767da9e317c9e00eeae68c269b51c
MD5 4650ad049f7028af989b0ed9f3ec2283
BLAKE2b-256 481b6331b9d71f9970e688c1004841f573222d8afdd5e172d05fa8d420be9dd8

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 186.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6108535490fad1998e0239935e13ab9e185d3a31fa5e9ac1a25fdcb89ca196f6
MD5 2cef82c5c24e7dfc6d7a9c9e31e5b834
BLAKE2b-256 ce96193530cf683f1e375f8b54b61cfc2619df9f24e30fd86f59a06db91cf9bd

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5a8aee801febe2272c3ca2ffac12e483a45842956226e01ec74672cfb915923
MD5 6c018674ccc02f76ec18ba8ff46a200f
BLAKE2b-256 a6bc86aa8c82584e08c16d2573c8f2e12d58c55a89df5850715bd6c123a47925

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 531.2 kB
  • Tags: CPython 3.8, macOS 11.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 971a5aba21e3fcf986f99610f35fff7b46bcdf3b8a2f73a157592fb46db3529b
MD5 e4bbee2cd4e3e85b2338ec6bec6ed12c
BLAKE2b-256 746e39a61ebee6424ca94647d545feee54db0555d9110a10709a8596d6c534e5

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.3 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3824daa0a2428c75f938a1ea1cfff9d47d1845396987401b9472474e3c980420
MD5 4bbb34ed3a9e6e7124ac4212d495cc2b
BLAKE2b-256 37c1cb486e62712e2266b6f55daf0b063b6524efcea72f17e3e50c23c9f5b727

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 187.7 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 4e988f720558e9cea64f6f8d0a04704fd22b3d77cc29260dfdd6f0ab01b7fe74
MD5 9ca3d978f928debd70e494a688b2cbc3
BLAKE2b-256 06c9995bea4f1b699014a282a6ab36d7911eafead59678a4de67ebdf5b9b9ec8

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8659e243e6a110b4087e4cf7d798e0f04136f910cb6a3afb0065ea7277f4669c
MD5 55da8d997843e1ddbe7f207feb8d3932
BLAKE2b-256 9927f4588a368cbe3c932c40813d898445151fe4fb0a861c50a261f90dd5ce0b

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 283.8 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6ba102e4cb591a5f93b1d8803fbbe4c4356773a0f5ab41353c0cee233cc5f337
MD5 7e30f1ba05fc42c9964322454404ebe2
BLAKE2b-256 f376e8b528d2f05c2ad720263637b4e73414e7704842a9d8ba28ad98fb5d2b04

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 187.6 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 33f4cd1b7592fe25ca37d593d46cb004fcc152433809883918ecce82543cf100
MD5 d1dd8601f25d429f21269109c915d68c
BLAKE2b-256 2a19d5aeb50980c25d59dd2584d134408f933303390032045946bd41aeb9e752

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crackle_codec-0.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b577bcf1129b83ca60509ff4e252fdc52150b3169be5327cf964a2a6cbd95803
MD5 b43e62842ec44c77f9a1367889ed5643
BLAKE2b-256 57aa451226ed51a3c54c266b6fc2f02a632833fc3dbdb2d2871658f183b7d9fa

See more details on using hashes here.

File details

Details for the file crackle_codec-0.2.1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: crackle_codec-0.2.1-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 283.8 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.21.0 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.10

File hashes

Hashes for crackle_codec-0.2.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f5f79e6eb118a63bad3ef90470cb7a6580d5a45ac2a93ea1544c4923847f06b
MD5 ffb913435b83bb929798456e5977d199
BLAKE2b-256 f90c7c35863dab22f63715e6c43fc2eb09a163c97feb233e7539d6e5f51eb9f8

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 Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page