mirror of https://github.com/python/cpython
Added codec for bz2 compression.
This commit is contained in:
parent
9b32acd1cb
commit
9a80c5dbc4
|
@ -804,6 +804,11 @@ listed as operand type in the table.
|
|||
{byte string}
|
||||
{Convert operand to MIME base64}
|
||||
|
||||
\lineiv{bz2_codec}
|
||||
{bz2}
|
||||
{byte string}
|
||||
{Compress the operand using bz2}
|
||||
|
||||
\lineiv{hex_codec}
|
||||
{hex}
|
||||
{byte string}
|
||||
|
|
|
@ -41,6 +41,9 @@ aliases = {
|
|||
'base64' : 'base64_codec',
|
||||
'base_64' : 'base64_codec',
|
||||
|
||||
# bz2_codec codec
|
||||
'bz2' : 'bz2_codec',
|
||||
|
||||
# cp037 codec
|
||||
'csibm037' : 'cp037',
|
||||
'ebcdic_cp_ca' : 'cp037',
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
""" Python 'bz2_codec' Codec - bz2 compression encoding
|
||||
|
||||
Unlike most of the other codecs which target Unicode, this codec
|
||||
will return Python string objects for both encode and decode.
|
||||
|
||||
Adapted by Raymond Hettinger from bz2_codec which was written
|
||||
by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
|
||||
"""
|
||||
import codecs
|
||||
import bz2 # this codec needs the optional bz2 module !
|
||||
|
||||
### Codec APIs
|
||||
|
||||
def bz2_encode(input,errors='strict'):
|
||||
|
||||
""" Encodes the object input and returns a tuple (output
|
||||
object, length consumed).
|
||||
|
||||
errors defines the error handling to apply. It defaults to
|
||||
'strict' handling which is the only currently supported
|
||||
error handling for this codec.
|
||||
|
||||
"""
|
||||
assert errors == 'strict'
|
||||
output = bz2.compress(input)
|
||||
return (output, len(input))
|
||||
|
||||
def bz2_decode(input,errors='strict'):
|
||||
|
||||
""" Decodes the object input and returns a tuple (output
|
||||
object, length consumed).
|
||||
|
||||
input must be an object which provides the bf_getreadbuf
|
||||
buffer slot. Python strings, buffer objects and memory
|
||||
mapped files are examples of objects providing this slot.
|
||||
|
||||
errors defines the error handling to apply. It defaults to
|
||||
'strict' handling which is the only currently supported
|
||||
error handling for this codec.
|
||||
|
||||
"""
|
||||
assert errors == 'strict'
|
||||
output = bz2.decompress(input)
|
||||
return (output, len(input))
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self, input, errors='strict'):
|
||||
return bz2_encode(input, errors)
|
||||
def decode(self, input, errors='strict'):
|
||||
return bz2_decode(input, errors)
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
|
||||
return (bz2_encode,bz2_decode,StreamReader,StreamWriter)
|
|
@ -46,6 +46,9 @@ Extension modules
|
|||
Library
|
||||
-------
|
||||
|
||||
- encodings.bz2_codec was added for access to bz2 compression
|
||||
using "a long string".encode('bz2')
|
||||
|
||||
- Various improvements to unittest.py, realigned with PyUnit CVS.
|
||||
|
||||
- dircache now passes exceptions to the caller, instead of returning
|
||||
|
|
Loading…
Reference in New Issue