Python brotli.compress() Examples
The following are 17
code examples of brotli.compress().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
brotli
, or try the search function
.
Example #1
Source File: compression.py From Charcoal with MIT License | 6 votes |
def CompressLZMA(string): """ CompressBrotli(string) -> str Returns without delimiters the given string compressed \ using the lzstring compression method. """ compressed = lzma.compress( string.encode("ascii"), format=lzma.FORMAT_RAW, filters=[{'id': lzma.FILTER_LZMA2, 'preset': 9 | lzma.PRESET_EXTREME}] ) number = 1 for c in compressed: number = number * 256 + c result = "" while number: result = Codepage[number % 255] + result number //= 255 return Codepage[LZMA_ENCODING] + result
Example #2
Source File: woff2.py From Emoji-Tools with GNU General Public License v3.0 | 6 votes |
def _calcFlavorDataOffsetsAndSize(self, start): """Calculate offsets and lengths for any meta- and/or private data.""" offset = start data = self.flavorData if data.metaData: self.metaOrigLength = len(data.metaData) self.metaOffset = offset self.compressedMetaData = brotli.compress( data.metaData, mode=brotli.MODE_TEXT) self.metaLength = len(self.compressedMetaData) offset += self.metaLength else: self.metaOffset = self.metaLength = self.metaOrigLength = 0 self.compressedMetaData = b"" if data.privData: # make sure private data is padded to 4-byte boundary offset = (offset + 3) & ~3 self.privOffset = offset self.privLength = len(data.privData) offset += self.privLength else: self.privOffset = self.privLength = 0 return offset
Example #3
Source File: test_simple_compression.py From brotlipy with MIT License | 6 votes |
def test_streaming_compression(one_compressed_file, chunk_size, mode, quality, lgwin, lgblock): """ Confirm that the streaming compressor works as expected. """ compressed_chunks = [] c = brotli.Compressor( mode=mode, quality=quality, lgwin=lgwin, lgblock=lgblock ) with open(one_compressed_file, 'rb') as f: while True: next_data = f.read(chunk_size) if not next_data: break compressed_chunks.append(c.compress(next_data)) compressed_chunks.append(c.finish()) decompressed = brotli.decompress(b''.join(compressed_chunks)) with open(one_compressed_file, 'rb') as f: assert decompressed == f.read()
Example #4
Source File: compression.py From cloud-volume with BSD 3-Clause "New" or "Revised" License | 6 votes |
def compress(content, method='gzip', compress_level=None): """ Compresses file content. Required: content (bytes): The information to be compressed method (str, default: 'gzip'): None or gzip Raises: NotImplementedError if an unsupported codec is specified. compression.DecodeError if the encoder has an issue Return: compressed content """ if method == True: method = 'gzip' # backwards compatibility method = (method or '').lower() if method == '': return content elif method == 'gzip': return gzip_compress(content, compresslevel=compress_level) elif method == 'br': return brotli_compress(content, quality=compress_level) raise NotImplementedError(str(method) + ' is not currently supported. Supported Options: None, gzip')
Example #5
Source File: http.py From scapy with GNU General Public License v2.0 | 6 votes |
def post_build(self, pkt, pay): if not conf.contribs["http"]["auto_compression"]: return pkt + pay encodings = self._get_encodings() # Compress if "deflate" in encodings: import zlib pay = zlib.compress(pay) elif "gzip" in encodings: pay = gzip_compress(pay) elif "compress" in encodings: import lzw pay = lzw.compress(pay) elif "br" in encodings and is_brotli_available: pay = brotli.compress(pay) return pkt + pay
Example #6
Source File: compression.py From Charcoal with MIT License | 6 votes |
def CompressBrotli(string): """ CompressBrotli(string) -> str Returns without delimiters the given string compressed \ using Google's brotli compression method. """ compressed = brotli.compress(string.encode("ascii")) number = 1 for c in compressed: number = number * 256 + c result = "" while number: result = Codepage[number % 255] + result number //= 255 return Codepage[BROTLI_ENCODING] + result
Example #7
Source File: image_url.py From rssant with BSD 3-Clause "New" or "Revised" License | 5 votes |
def encode_image_url(url, referer=None): try: text = json.dumps(validate_image_url(dict(url=url, referer=referer))) data = brotli.compress(text.encode('utf-8'), quality=6) return base64.urlsafe_b64encode(data).decode() except (Invalid, json.JSONDecodeError, brotli.error, UnicodeEncodeError) as ex: raise ImageUrlEncodeError(str(ex)) from ex
Example #8
Source File: util.py From scalyr-agent-2 with Apache License 2.0 | 5 votes |
def verify_and_get_compress_func(compression_type, compression_level=9): # type: (str, int) -> Optional[Callable] """ Given a compression_type (bz2, zlib, lz4, zstandard), verify that compression works and return the compress() function with compression level pre-applied. @param compression_type: Compression type. @type compression_type: str @param compression_level: Compression level to use. @ type: compression_level: int @returns: The compress() function for the specified compression_type. None, if compression_type is not supported or if underlying libs are not installed properly, """ if compression_type not in SUPPORTED_COMPRESSION_ALGORITHMS: return None try: compress_func, decompress_func = get_compress_and_decompress_func( compression_type, compression_level=compression_level ) # Perform a sanity check that data compresses and that it can be decompressed cdata = compress_func(COMPRESSION_TEST_STR) if ( len(cdata) < len(COMPRESSION_TEST_STR) and decompress_func(cdata) == COMPRESSION_TEST_STR ): return compress_func except Exception: pass return None
Example #9
Source File: compression.py From cloud-volume with BSD 3-Clause "New" or "Revised" License | 5 votes |
def brotli_compress(content, quality=None): if quality is None: # 5/6 are good balance between compression speed and compression rate quality = 5 return brotli.compress(content, quality=quality)
Example #10
Source File: test_simple_compression.py From brotlipy with MIT License | 5 votes |
def test_roundtrip_compression_with_files(simple_compressed_file): """ Roundtripping data through the compressor works correctly. """ with open(simple_compressed_file[0], 'rb') as f: uncompressed_data = f.read() assert brotli.decompress( brotli.compress(uncompressed_data) ) == uncompressed_data
Example #11
Source File: http.py From scapy with GNU General Public License v2.0 | 5 votes |
def post_dissect(self, s): if not conf.contribs["http"]["auto_compression"]: return s encodings = self._get_encodings() # Un-chunkify if "chunked" in encodings: data = b"" while s: length, _, body = s.partition(b"\r\n") try: length = int(length, 16) except ValueError: # Not a valid chunk. Ignore break else: load = body[:length] if body[length:length + 2] != b"\r\n": # Invalid chunk. Ignore break s = body[length + 2:] data += load if not s: s = data # Decompress try: if "deflate" in encodings: import zlib s = zlib.decompress(s) elif "gzip" in encodings: s = gzip_decompress(s) elif "compress" in encodings: import lzw s = lzw.decompress(s) elif "br" in encodings and is_brotli_available: s = brotli.decompress(s) except Exception: # Cannot decompress - probably incomplete data pass return s
Example #12
Source File: test_simple_compression.py From brotlipy with MIT License | 5 votes |
def test_streaming_compression_flush(one_compressed_file, chunk_size, mode, quality, lgwin, lgblock): """ Confirm that the streaming compressor works as expected, including flushes after each chunk. """ compressed_chunks = [] c = brotli.Compressor( mode=mode, quality=quality, lgwin=lgwin, lgblock=lgblock ) with open(one_compressed_file, 'rb') as f: while True: next_data = f.read(chunk_size) if not next_data: break compressed_chunks.append(c.compress(next_data)) compressed_chunks.append(c.flush()) compressed_chunks.append(c.finish()) decompressed = brotli.decompress(b''.join(compressed_chunks)) with open(one_compressed_file, 'rb') as f: assert decompressed == f.read()
Example #13
Source File: test_simple_compression.py From brotlipy with MIT License | 5 votes |
def test_compressed_data_roundtrips(s): assert brotli.decompress(brotli.compress(s)) == s
Example #14
Source File: test_simple_compression.py From brotlipy with MIT License | 5 votes |
def test_compressed_data_with_dictionaries(s, dictionary): d = brotli.Decompressor(dictionary) compressed = brotli.compress(s, dictionary=dictionary) uncompressed = d.decompress(compressed) assert uncompressed == s
Example #15
Source File: woff2_test.py From Emoji-Tools with GNU General Public License v3.0 | 5 votes |
def setUpClass(cls): assert os.path.exists(METADATA) with open(METADATA, 'rb') as f: cls.xml_metadata = f.read() cls.compressed_metadata = brotli.compress(cls.xml_metadata, mode=brotli.MODE_TEXT) # make random byte strings; font data must be 4-byte aligned cls.fontdata = bytes(bytearray(random.sample(range(0, 256), 80))) cls.privData = bytes(bytearray(random.sample(range(0, 256), 20)))
Example #16
Source File: woff2_test.py From Emoji-Tools with GNU General Public License v3.0 | 5 votes |
def setUpFlavorData(cls): assert os.path.exists(METADATA) with open(METADATA, 'rb') as f: cls.xml_metadata = f.read() cls.compressed_metadata = brotli.compress(cls.xml_metadata, mode=brotli.MODE_TEXT) cls.privData = bytes(bytearray(random.sample(range(0, 256), 20)))
Example #17
Source File: woff2.py From Emoji-Tools with GNU General Public License v3.0 | 4 votes |
def close(self): """ All tags must have been specified. Now write the table data and directory. """ if len(self.tables) != self.numTables: raise TTLibError("wrong number of tables; expected %d, found %d" % (self.numTables, len(self.tables))) if self.sfntVersion in ("\x00\x01\x00\x00", "true"): isTrueType = True elif self.sfntVersion == "OTTO": isTrueType = False else: raise TTLibError("Not a TrueType or OpenType font (bad sfntVersion)") # The WOFF2 spec no longer requires the glyph offsets to be 4-byte aligned. # However, the reference WOFF2 implementation still fails to reconstruct # 'unpadded' glyf tables, therefore we need to 'normalise' them. # See: # https://github.com/khaledhosny/ots/issues/60 # https://github.com/google/woff2/issues/15 if isTrueType: self._normaliseGlyfAndLoca(padding=4) self._setHeadTransformFlag() # To pass the legacy OpenType Sanitiser currently included in browsers, # we must sort the table directory and data alphabetically by tag. # See: # https://github.com/google/woff2/pull/3 # https://lists.w3.org/Archives/Public/public-webfonts-wg/2015Mar/0000.html # TODO(user): remove to match spec once browsers are on newer OTS self.tables = OrderedDict(sorted(self.tables.items())) self.totalSfntSize = self._calcSFNTChecksumsLengthsAndOffsets() fontData = self._transformTables() compressedFont = brotli.compress(fontData, mode=brotli.MODE_FONT) self.totalCompressedSize = len(compressedFont) self.length = self._calcTotalSize() self.majorVersion, self.minorVersion = self._getVersion() self.reserved = 0 directory = self._packTableDirectory() self.file.seek(0) self.file.write(pad(directory + compressedFont, size=4)) self._writeFlavorData()