# uproot.compression.compress

Defined in uproot.compression on line 524.

uproot.compression.compress(data: bytes, compression: Compression) → bytes
  Parameters:

    - data (bytes, memoryview, or NumPy array) – Data to compress.

    - compression (uproot.compression.Compression) – Algorithm and level to use in compressing the data.

  Compress `data` using `compression` and return a bytes object (or the original object in some circumstances).

  This function generates ROOT’s 9-byte compression headers (17 bytes for LZ4 because it includes a checksum), with multiple blocks for each 2**24 - 1 bytes of input. The return value has all blocks concatenated into a single bytes object, and the splitting into multiple blocks is necessary because the compression headers can only specify uncompressed and compressed sizes up to 2**24 - 1.

  If the compression level (`compression.level`) is zero or the compressed output would be larger than the input, the input is returned instead, in whatever format (bytes, memoryview, or NumPy array) it was provided.