Skip to main content

Crackle: Next gen. 3D segmentation compression codec.

# Command Line Interface
crackle data.npy # creates data.ckl
crackle -m 5 data.npy # use a 5th order context model
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, allow_pins=False, markov_model_order=0)
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 experimental.

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. u32 Number of bytes of the labels section. Note the labels come in at least two format types.

Format Field (u16): DDSSCLLFGOOOORRR (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) OOOO: Nth-Order of Markov Chain (as an unsigned integer, typical values 0, or 3 to 7). If 0, markov compression is disabled. R: Reserved

Flat Label Format

Attribute Type Description
num_unique u64 Number of unique labels in this volume.
unique_labels stored_type[num_unique] Sorted ascending array of all unique values in image, stored in the smallest data type that will hold them.
cc_per_grid smallest_type(sx * sy)[sz] Array containing the number of CCL IDs in each grid (usually a z-slice).
cc_to_labels smallest_type(num_labels)[sum(cc_per_grid)] Array mapping CCL IDs to their proper value by indexing the unique labels array.

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

Attribute Type Description
background_color stored_data_width Background color of image.
num_unique u64 Number of unique labels in this volume.
unique_labels stored_type[num_unique] Sorted ascending array of all unique values in image, stored in the smallest data type that will hold them.
fmt_byte u8 0000DDNN DD: 2^(DD) is the depth width NN: 2^(NN) is the num pins width
pin_section Bitstream to end of labels section. Contains pin information.

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 | num_single_labels | CC 0 | CC 1 | ... | CC 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).

For very short pins (e.g. depth 0 or 1) that take more bytes to record than simply listing the corresponding CC label, we list the CC label instead. This calculation is made depending on the dimensions of the image and the max pin depth, and the byte width of the CCL labels.

Example calculation. For a 512 x 512 x 32 file with an average of 1000 CCL's per a slice and a maximum pin depth of 30, a pin takes 4 index + 1 depth = 5 bytes while a CCL takes 2 bytes. Therefore, depth 1 and 2 pins can be efficiently replaced with 1 and 2 CCL labels for a 60% and 20% savings respectively. CCLs are also difference coded to enhance second stage compressibility.

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: MARKOV MODEL | CHAIN 0 | CHAIN 1 | ... | CHAIN N |

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

MARKOV MODEL (if enabled): priority order of moves UDLR packed per a byte. 4^order bytes.

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

Release files for crackle-codec 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crackle-codec 0.4.0
File Size Uploaded
crackle-codec-0.4.0.tar.gz 72.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for crackle-codec 0.4.0
File
crackle_codec-0.4.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
crackle_codec-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
crackle_codec-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
crackle_codec-0.4.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
crackle_codec-0.4.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
crackle_codec-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
crackle_codec-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
crackle_codec-0.4.0-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details
crackle_codec-0.4.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
crackle_codec-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
crackle_codec-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
crackle_codec-0.4.0-cp39-cp39-macosx_10_9_universal2.whl CPython 3.9 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64) Details
crackle_codec-0.4.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
crackle_codec-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
crackle_codec-0.4.0-cp38-cp38-macosx_11_0_universal2.whl CPython 3.8 CPython 3.8 macOS 11.0+ universal2 (ARM64, x86-64) Details
crackle_codec-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details
crackle_codec-0.4.0-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
crackle_codec-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details
crackle_codec-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64 Details
crackle_codec-0.4.0-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
crackle_codec-0.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64 Details
crackle_codec-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.9+ x86-64 Details

Total release size: 8.3 MB

Release files / crackle-codec-0.4.0.tar.gz

Download URL crackle-codec-0.4.0.tar.gz
Size 72.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b1753b1d2b335b30fde5137ba1481f45bd5b2ba5d603d99b96cf909bd4431f9d
BLAKE2b-256 checksum
How to use checksums
9066d72abaacc15966c6d5d96a0c4aec1840c5dc6d122bf5a0c68c8e73cbcd15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp311-cp311-win_amd64.whl

Download URL crackle_codec-0.4.0-cp311-cp311-win_amd64.whl
Size 211.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2e8694fcf15162cc7f6a99fb6a93d4552050b235c49055d6585dda89221a430c
BLAKE2b-256 checksum
How to use checksums
a9afb26a150c42bdb77edbd619e61a740af236edfea9261c66755b7db26a46ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL crackle_codec-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 322.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3a50c10a2d1d93ea606e3f9b283d027636542d6870ec6ab969627a1be6c16f42
BLAKE2b-256 checksum
How to use checksums
9434413fe5c512c62dff931917721c6a4c72c56266d7a00dba6ea3be5cbe3b40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL crackle_codec-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 382.3 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
456209a2bae96e8624ffd31ad2fcab70625dfb927b42e04cac1f066eb0399f85
BLAKE2b-256 checksum
How to use checksums
335bddf5f2993527952d0c7dd370baa3e3fdaa4ad026f50f4bba84ef8ada664e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp311-cp311-macosx_10_9_universal2.whl

Download URL crackle_codec-0.4.0-cp311-cp311-macosx_10_9_universal2.whl
Size 665.9 kB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
0f3caa857e16027275dbdb2c8ae80d2c948aca458fd71be6d155e716a96c0cd5
BLAKE2b-256 checksum
How to use checksums
eb014a1661b08c46e51a3fea5da9f3f6877c4bb879101a0b5fa1a5bf1d522ac3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp310-cp310-win_amd64.whl

Download URL crackle_codec-0.4.0-cp310-cp310-win_amd64.whl
Size 211.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
7a9defeb6e585f6157980ff5b801df335dc14eb8cf8ffcc500b5d14af4c6671e
BLAKE2b-256 checksum
How to use checksums
ce288043a400de45b354df7d4f7c30dfd5ef17de792745a00a153f1db3eaec21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL crackle_codec-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 322.8 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
71236ee9acfc18b2d0931c7ddff6451a83c75aadab2a16ce002e958162e21c91
BLAKE2b-256 checksum
How to use checksums
881ac69e6e2d235a81a2c6931343d753c619f3b0462896a2994da3c2a6f14403
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL crackle_codec-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 382.3 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
7aba60458ecc5659f2789941003130ec6807cdde35df67e5c96eba4c45193e30
BLAKE2b-256 checksum
How to use checksums
221ba9c8694ec503a5bfcfb2810e65c9fc57d4cb6f236ddb4f6a441ba4648e32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp310-cp310-macosx_10_9_universal2.whl

Download URL crackle_codec-0.4.0-cp310-cp310-macosx_10_9_universal2.whl
Size 665.9 kB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
b436a247d1a8e759f3e1ae9cee5aaec0f4f5f946442f79eeef5c3daa21e0c358
BLAKE2b-256 checksum
How to use checksums
71c97c717fc901995b86465d5649a8fd2c61e2884eed366e95e354bea1a97db6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp39-cp39-win_amd64.whl

Download URL crackle_codec-0.4.0-cp39-cp39-win_amd64.whl
Size 210.5 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
a207e37f965efa433e3bae9eed7b2f09392b79bc8e132489dd503c29783f32e2
BLAKE2b-256 checksum
How to use checksums
7a2a516fe755b56355a3d200a17ff60449bab492f233038d6aa12d83e6d37392
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL crackle_codec-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 323.3 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8d354cd9aa8d72f773eb868aadafcaff2c60dbcff2b348cc845a83d81192009a
BLAKE2b-256 checksum
How to use checksums
2274f2ad2c225c48992b26b973d2fc2f00d188044447ce4b9fea9ae87309179f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl

Download URL crackle_codec-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Size 382.5 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
72d12d6db8ec3be46bfe07bf0955956a3532f409668e993a2761f483303706d8
BLAKE2b-256 checksum
How to use checksums
31de21c1cdedd50400c85be51ea25191598877a19da62a4e3e83ee120a44f440
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp39-cp39-macosx_10_9_universal2.whl

Download URL crackle_codec-0.4.0-cp39-cp39-macosx_10_9_universal2.whl
Size 666.3 kB
Tags CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
292ffd3be7aab08a8f037de983b7f3f9c318a0784dcb411a6a5f0c0581bf6513
BLAKE2b-256 checksum
How to use checksums
c46e6934f3636a6ed437351f572561b7cc40e478964d5049594593a5011c8d1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp38-cp38-win_amd64.whl

Download URL crackle_codec-0.4.0-cp38-cp38-win_amd64.whl
Size 211.0 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
87e698172f7194cb88864df1aba4d486d64aefcd14bb55ed3ab0de7aba40085a
BLAKE2b-256 checksum
How to use checksums
42de02522f19f906154f9c3c7ee994bcf1d5a839131b8aaca8b44784a56dd1dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL crackle_codec-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 322.8 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
445f694e77e02aa08258417a51677b22c8a17e0bc24a24b279f91079c1568025
BLAKE2b-256 checksum
How to use checksums
bb84693f6ecd73d9cb0174f9258a15ead3827542de8888ea715f3e6b9cf20b39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp38-cp38-macosx_11_0_universal2.whl

Download URL crackle_codec-0.4.0-cp38-cp38-macosx_11_0_universal2.whl
Size 682.9 kB
Tags CPython 3.8 macOS 11.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
00048ad633c956b86bde8fa77f7ed44017edab00455d91858d8b8c737baf7e70
BLAKE2b-256 checksum
How to use checksums
f6d02482d4d02023af5a4b1c4bc8f9c5bd478541a56c028697043b8bcd10a2be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl

Download URL crackle_codec-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Size 382.1 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
fa7d5e71a1673787eded3cc5ab401c1bc937c849ab615bd364286760f84bb94f
BLAKE2b-256 checksum
How to use checksums
04417b4da126d45ceb047a80a2d8e4b48c194a73e2f22167a46485d164bad6b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp37-cp37m-win_amd64.whl

Download URL crackle_codec-0.4.0-cp37-cp37m-win_amd64.whl
Size 211.9 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
ba2c32f6be963a16ab2d30c8c8eb7a7d5cf01e2c0c126c8f87f7adf5e804e3af
BLAKE2b-256 checksum
How to use checksums
ac9c89e3c643c0863aeabd6788af23504bac67afcc41bea31e1432e4bfdc503a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL crackle_codec-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 323.3 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0ad1972bdd30b14c35921ea4448265709d46a6ff3a98b9309d415c3366ce9842
BLAKE2b-256 checksum
How to use checksums
51fbefb362647a156ba732f102b0194a411e85ac6f95c4958e263410a1f75774
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl

Download URL crackle_codec-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl
Size 381.6 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
445e2667ae266f7a61c55e1d8ff0e33f09565dd28b4d9eb3bb6e4c2bbc16fee2
BLAKE2b-256 checksum
How to use checksums
0192995f0dc1d035c539d526dad95f890ee5e7de273bfa3f7652748acc356883
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp36-cp36m-win_amd64.whl

Download URL crackle_codec-0.4.0-cp36-cp36m-win_amd64.whl
Size 211.9 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
b50acbb3532b87217e397fe933327d6935d46a1730db2b55ad3876faa8a7a190
BLAKE2b-256 checksum
How to use checksums
7dab2943b8e46e796606a3ab4ba43cfbb6bd96bcdf8c5c2b45370690554cd2cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL crackle_codec-0.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 323.5 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
75b829ef0c058fe2374156b6e4ca2f2cc3a1cb87cf618db9cc8785de5c394431
BLAKE2b-256 checksum
How to use checksums
16cd5d33d7b984cf665ad6abd5a23ddd236bcc3787fd03ab711b10a53379dfb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / crackle_codec-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl

Download URL crackle_codec-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl
Size 381.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
d74ee14268e838296cdf6a7bf37dd6378e167a58882bcb9e14a614d25844dcee
BLAKE2b-256 checksum
How to use checksums
2c5a6757ce688ffd241ab9f067dcd25fc433b34942bf9d5467a3f08ba891f2a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release history Release notifications | RSS feed

0.17.2

1 release file

0.9.0

26 release files

0.8.0

27 release files

0.7.1

29 release files

0.6.2

27 release files

0.6.1

27 release files

0.6.0

27 release files

0.5.0

27 release files

This release

0.4.0 This release

23 release files

0.3.0

22 release files

0.2.1

22 release files

0.2.0

22 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page