o 0i# @ s d Z ddlZddlZddlmZ dddZdd d ZG dd dejZG d d dejZG dd dej Z G dd deej Z G dd deejZdd ZdS )a Python '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)BytesIOstrict c C s t | }t }|j}|j}|dd}|dd}|d|d@ |f d |d}|r9|t| |d}|s,|d | t| fS ) N z\n z\rzbegin %o %s i ascii- s end ) r readwritereplaceencodebinasciiZb2a_uugetvaluelen) inputerrorsfilenamemodeinfileoutfiler r chunk r 9/opt/alt/python310/lib64/python3.10/encodings/uu_codec.py uu_encode s r c C s t | }t }|j}|j} | }|std|d d dkr nq | }|r+|dkr,n7zt|}W n* tjy] } z|d d d @ d d d } t|d | }W Y d }~nd }~ww || q"|sitd| t| fS ) N z"Missing "begin" line in input data s beginTs end r ? zTruncated input data) r readliner ValueErrorr Za2b_uuErrorr r ) r r r r r! r sdatavnbytesr r r uu_decode% s6 r( c @ s e Zd ZdddZdddZdS )Codecr c C t ||S N)r selfr r r r r r G zCodec.encodec C r* r+ )r( r, r r r decodeJ r. zCodec.decodeNr )__name__ __module____qualname__r r/ r r r r r) F s r) c @ e Zd ZdddZdS )IncrementalEncoderFc C t || jd S Nr )r r r- r finalr r r r N zIncrementalEncoder.encodeNF)r1 r2 r3 r r r r r r5 M r5 c @ r4 )IncrementalDecoderFc C r6 r7 )r( r r8 r r r r/ R r: zIncrementalDecoder.decodeNr; )r1 r2 r3 r/ r r r r r= Q r<