a
XC?h# � @ s� d Z ddlZddlZddlmZ ddd�Zdd d
�ZG dd� dej�ZG d
d� dej�ZG dd� dej �Z G dd� deej
�Z
G dd� deej�Zdd� ZdS )a Python 'uu_codec' Codec - UU content transfer encoding.
This codec de/encodes from bytes to bytes.
Written by Marc-Andre Lemburg ([email protected]). Some details were
adapted from uu.py which was written by Lance Ellinghouse and
modified by Jack Jansen and Fredrik Lundh.
� N)�BytesIO�strict�� c C s� |dksJ �t | �}t � }|j}|j}|�dd�}|�dd�}|d|d@ |f �d�� |d �}|r||t�|�� |d �}q`|d
� |�� t| �fS )Nr �
z\n�
z\rzbegin %o %s
i� �ascii�- s
end
) r �read�write�replace�encode�binasciiZb2a_uu�getvalue�len) �input�errors�filename�mode�infile�outfiler
r �chunk� r �7/opt/alt/python39/lib64/python3.9/encodings/uu_codec.py� uu_encode s
r c
C s� |dksJ �t | �}t � }|j}|j}|� }|s8td��|d d� dkr&qLq&|� }|r�|dkr`q�zt�|�}W nT tjy� } z:|d d d@ d d d
} t�|d | � �}W Y d }~n
d }~0 0 ||� qL|s�td��|�� t| �fS )Nr z"Missing "begin" line in input data� s begins end
r � �? � � zTruncated input data) r �readliner �
ValueErrorr Za2b_uu�Errorr r )
r r r r r r �s�data�v�nbytesr r r � uu_decode% s, (
r' c @ s e Zd Zddd�Zddd�ZdS ) �Codecr c C s
t ||�S �N)r ��selfr r r r r r
G s zCodec.encodec C s
t ||�S r) )r' r* r r r �decodeJ s zCodec.decodeN)r )r )�__name__�
__module__�__qualname__r
r, r r r r r( F s
r( c @ s e Zd Zddd�ZdS )�IncrementalEncoderFc C s t || j�d S �Nr )r r �r+ r �finalr r r r
N s zIncrementalEncoder.encodeN)F)r- r. r/ r
r r r r r0 M s r0 c @ s e Zd Zddd�ZdS )�IncrementalDecoderFc C s t || j�d S r1 )r' r r2 r r r r, R s zIncrementalDecoder.decodeN)F)r- r. r/ r, r r r r r4 Q s r4 c @ s e Zd ZeZdS )�StreamWriterN�r- r. r/ �bytes�charbuffertyper r r r r5 U s r5 c @ s e Zd ZeZdS )�StreamReaderNr6 r r r r r9 X s r9 c
C s t jdttttttdd�S )N�uuF)�namer
r, �incrementalencoder�incrementaldecoder�streamreader�streamwriter�_is_text_encoding)�codecs� CodecInfor r' r0 r4 r9 r5 r r r r �getregentry] s �rC )r r r )r )
�__doc__rA r �ior r r' r( r0 r4 r5 r9 rC r r r r �