# snappy API reference

> The `snappy` package, from snappy 0.1.4, as published on mojoshelf (commit b8172ed0a4ef), by `mojo doc` from Mojo 1.2.0.

## Modules

- [snappy.crc32c](https://magmalake.dev/s/snappy/api/crc32c.md): CRC-32C (Castagnoli, polynomial 0x1EDC6F41 / reflected 0x82F63B78), init/xorout 0xFFFFFFFF. Table-driven with a slice-by-8 fast path.
- [snappy.framing](https://magmalake.dev/s/snappy/api/framing.md): Snappy **framing format**: a `sNaPpY` stream identifier chunk followed by a sequence of length-prefixed chunks, each either compressed or uncompressed raw-format data guarded by a masked CRC-32C. See https://github.com/google/snappy/blob/main/framing_format.txt.
- [snappy.raw](https://magmalake.dev/s/snappy/api/raw.md): Snappy **raw block format**: a leading varint giving the uncompressed length, followed by a stream of literal / copy elements. See https://github.com/google/snappy/blob/main/format_description.txt.

Snappy — a pure-Mojo Snappy compressor/decompressor.

Implements both the **raw block format** (varint length + literal/copy
elements) and the **framing format** (`sNaPpY` stream identifier, chunked,
CRC-32C-checksummed) from
https://github.com/google/snappy/blob/main/format_description.txt and
https://github.com/google/snappy/blob/main/framing_format.txt. No FFI, no
C dependency.

    from snappy import compress, decompress
    var packed = compress(Span(data))
    var back = decompress(Span(packed))

    from snappy import compress_framed, decompress_framed
    var stream = compress_framed(Span(data))   # sNaPpY-framed, CRC-checked
    var back2 = decompress_framed(Span(stream))
