o *g# @sdZddlZddlZddlmZdddZdd d ZGd d d ejZGd ddejZGdddej Z Gdddeej Z Gdddeej Z ddZ dS)aPython 'uu_codec' Codec - UU content transfer encoding. This codec de/encodes from bytes to bytes. Written by Marc-Andre Lemburg (mal@lemburg.com). Some details were adapted from uu.py which was written by Lance Ellinghouse and modified by Jack Jansen and Fredrik Lundh. N)BytesIOstrictc Cs|dksJt|}t}|j}|j}|dd}|dd}|d|d@|fd|d }|r?|t||d }|s2|d |t|fS) Nr z\n z\rz begin %o %s iascii-s end ) rreadwritereplaceencodebinasciib2a_uugetvaluelen) inputerrorsfilenamemodeinfileoutfiler r chunkr)/usr/lib/python3.10/encodings/uu_codec.py uu_encodes   rc Cs|dksJt|}t}|j}|j} |}|std|dddkr&nq |}|r1|dkr2n7zt|}Wn*tjyc}z|dd d @d dd } t|d| }WYd}~nd}~ww||q(|sotd |t|fS)Nrz"Missing "begin" line in input datasbeginTsend r ?zTruncated input data) rreadliner ValueErrorra2b_uuErrorrr) rrrrr"r sdatavnbytesrrr uu_decode%s8   r*c@s eZdZdddZdddZdS)CodecrcC t||SN)rselfrrrrrr G z Codec.encodecCr,r-)r*r.rrrdecodeJr0z Codec.decodeNr)__name__ __module__ __qualname__r r1rrrrr+Fs r+c@eZdZdddZdS)IncrementalEncoderFcCt||jdSNr)rrr/rfinalrrrr NzIncrementalEncoder.encodeNF)r3r4r5r rrrrr7Mr7c@r6)IncrementalDecoderFcCr8r9)r*rr:rrrr1Rr<zIncrementalDecoder.decodeNr=)r3r4r5r1rrrrr?Qr>r?c@eZdZeZdS) StreamWriterNr3r4r5bytescharbuffertyperrrrrAUrAc@r@) StreamReaderNrBrrrrrFXrErFc CstjdttttttddS)NuuF)namer r1incrementalencoderincrementaldecoder streamreader streamwriter_is_text_encoding)codecs CodecInforr*r7r?rFrArrrr getregentry]srP)rrrr2) __doc__rNriorrr*r+r7r?rArFrPrrrrs    !