mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
#7475: add (un)transform method to bytes/bytearray and str, add back codecs that can be used with them from Python 2.
This commit is contained in:
parent
de0ab5eab3
commit
02524629f3
17 changed files with 900 additions and 29 deletions
55
Lib/encodings/hex_codec.py
Normal file
55
Lib/encodings/hex_codec.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
"""Python 'hex_codec' Codec - 2-digit hex content transfer encoding.
|
||||
|
||||
This codec de/encodes from bytes to bytes and is therefore usable with
|
||||
bytes.transform() and bytes.untransform().
|
||||
|
||||
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import binascii
|
||||
|
||||
### Codec APIs
|
||||
|
||||
def hex_encode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (binascii.b2a_hex(input), len(input))
|
||||
|
||||
def hex_decode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (binascii.a2b_hex(input), len(input))
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
def encode(self, input, errors='strict'):
|
||||
return hex_encode(input, errors)
|
||||
def decode(self, input, errors='strict'):
|
||||
return hex_decode(input, errors)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
assert self.errors == 'strict'
|
||||
return binascii.b2a_hex(input)
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
assert self.errors == 'strict'
|
||||
return binascii.a2b_hex(input)
|
||||
|
||||
class StreamWriter(Codec, codecs.StreamWriter):
|
||||
charbuffertype = bytes
|
||||
|
||||
class StreamReader(Codec, codecs.StreamReader):
|
||||
charbuffertype = bytes
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='hex',
|
||||
encode=hex_encode,
|
||||
decode=hex_decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue