mirror of
https://github.com/python/cpython.git
synced 2025-07-28 13:44:43 +00:00
Patch #1436130: codecs.lookup() now returns a CodecInfo object (a subclass
of tuple) that provides incremental decoders and encoders (a way to use stateful codecs without the stream API). Functions codecs.getincrementaldecoder() and codecs.getincrementalencoder() have been added.
This commit is contained in:
parent
e2ebb2d7f7
commit
abb02e5994
98 changed files with 2212 additions and 420 deletions
|
@ -197,18 +197,27 @@ def punycode_decode(text, errors):
|
|||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
def encode(self,input,errors='strict'):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
res = punycode_encode(input)
|
||||
return res, len(input)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
|
||||
if errors not in ('strict', 'replace', 'ignore'):
|
||||
raise UnicodeError, "Unsupported error handling "+errors
|
||||
res = punycode_decode(input, errors)
|
||||
return res, len(input)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return punycode_encode(input)
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
if errors not in ('strict', 'replace', 'ignore'):
|
||||
raise UnicodeError, "Unsupported error handling "+errors
|
||||
return punycode_decode(input, errors)
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
|
@ -218,5 +227,12 @@ class StreamReader(Codec,codecs.StreamReader):
|
|||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
|
||||
return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
|
||||
return codecs.CodecInfo(
|
||||
name='punycode',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue