o
     JAf:                     @   s   	 d dl Z d dlmZ d dlmZ d dlmZ g dZG dd dZdd	 Z	d
d Z
G dd dee jdZe
G dd deZe ZdS )    N)header)charset)_has_surrogates)PolicyCompat32compat32c                       s>   e Zd Z	  fddZdd Zdd Zdd Zd	d
 Z  ZS )_PolicyBasec                    sH   	 |  D ]\}}t| |rtt| || qtd|| jjd S Nz*{!r} is an invalid keyword argument for {})	itemshasattrsuperr   __setattr__	TypeErrorformat	__class____name__)selfkwnamevaluer    (/usr/lib/python3.10/email/_policybase.py__init__)   s   
z_PolicyBase.__init__c                 C   s*   dd | j  D }d| jjd|S )Nc                 S   s   g | ]
\}}d  ||qS )z{}={!r})r   ).0r   r   r   r   r   
<listcomp>8   s    z(_PolicyBase.__repr__.<locals>.<listcomp>z{}({})z, )__dict__r
   r   r   r   join)r   argsr   r   r   __repr__7   s   z_PolicyBase.__repr__c                 K   st   	 | j | j }| j D ]\}}t||| q| D ]\}}t| |s0td|| j j	t||| q|S r	   )
r   __new__r   r
   objectr   r   r   r   r   )r   r   Z	newpolicyattrr   r   r   r   clone<   s   
z_PolicyBase.clonec                 C   s(   t | |rd}nd}t|| jj|)Nz'{!r} object attribute {!r} is read-onlyz!{!r} object has no attribute {!r})r   AttributeErrorr   r   r   )r   r   r   msgr   r   r   r   N   s   
z_PolicyBase.__setattr__c                 C   s   	 | j di |jS )Nr   )r#   r   )r   otherr   r   r   __add__U   s   z_PolicyBase.__add__)	r   
__module____qualname__r   r   r#   r   r'   __classcell__r   r   r   r   r      s    r   c                 C   s,   |  ddd } |ddd }| d | S )N
   r   )rsplitsplit)docZ	added_docr   r   r   _append_doc^   s   r0   c                 C   s   | j r| j drt| jd j | j | _ | j D ]+\}}|j rD|j drDdd | jD D ]}tt||d}|rCt||j |_  nq.q| S )N+r   c                 s   s"    | ]}|  D ]}|V  qqd S N)mro)r   basecr   r   r   	<genexpr>h   s     z%_extend_docstrings.<locals>.<genexpr>__doc__)r7   
startswithr0   	__bases__r   r
   getattr)clsr   r"   r5   r/   r   r   r   _extend_docstringsc   s   r<   c                   @   s   e Zd Z	 dZdZdZdZdZdZdd Z	dd	 Z
d
d Zejdd Zejdd Zejdd Zejdd Zejdd ZdS )r   Fr+   Z8bitN   Nc                 C   s   	 | j r|| || d S r2   )raise_on_defectregister_defectr   objZdefectr   r   r   handle_defect   s   zPolicy.handle_defectc                 C   s   	 |j | d S r2   )Zdefectsappendr@   r   r   r   r?      s   
zPolicy.register_defectc                 C   s   	 d S r2   r   )r   r   r   r   r   header_max_count   s   zPolicy.header_max_countc                 C      	 t r2   NotImplementedError)r   sourcelinesr   r   r   header_source_parse      zPolicy.header_source_parsec                 C   rE   r2   rF   r   r   r   r   r   r   header_store_parse   s   zPolicy.header_store_parsec                 C   rE   r2   rF   rK   r   r   r   header_fetch_parse   s   zPolicy.header_fetch_parsec                 C   rE   r2   rF   rK   r   r   r   fold   s   zPolicy.foldc                 C   rE   r2   rF   rK   r   r   r   fold_binary  rJ   zPolicy.fold_binary)r   r(   r)   r>   linesepcte_typemax_line_lengthmangle_from_Zmessage_factoryrB   r?   rD   abcabstractmethodrI   rL   rM   rN   rO   r   r   r   r   r   p   s*    0
	



r   )	metaclassc                   @   sJ   e Zd Z	 dZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )r   Tc                 C   s,   t |ts|S t|rtj|tj|dS |S )Nr   header_name)
isinstancestrr   r   Header_charsetUNKNOWN8BITrK   r   r   r   _sanitize_header  s   

zCompat32._sanitize_headerc                 C   s@   	 |d  dd\}}|dd|dd   }||dfS )Nr   :r,   z 	 z
)r.   lstripr   rstrip)r   rH   r   r   r   r   r   rI   %  s   zCompat32.header_source_parsec                 C   s
   	 ||fS r2   r   rK   r   r   r   rL   1  s   zCompat32.header_store_parsec                 C   s   	 |  ||S r2   )r^   rK   r   r   r   rM   7  s   zCompat32.header_fetch_parsec                 C   s   	 | j ||ddS )NTsanitize)_foldrK   r   r   r   rN   >  s   zCompat32.foldc                 C   s$   	 | j ||| jdkd}|ddS )NZ7bitrc   asciisurrogateescape)re   rQ   encode)r   r   r   Zfoldedr   r   r   rO   H  s   zCompat32.fold_binaryc                 C   s   g }| d|  t|tr.t|r&|rtj|tj|d}n| | d }n
tj||d}n|}|d urId}| jd ur>| j}| |j	| j
|d | | j
 d|S )Nz%s: rW   )rX   r   )rP   
maxlinelenr`   )rC   rY   rZ   r   r   r[   r\   r]   rR   rh   rP   r   )r   r   r   rd   partshri   r   r   r   re   T  s(   




zCompat32._foldN)r   r(   r)   rS   r^   rI   rL   rM   rN   rO   re   r   r   r   r   r     s    
r   )rT   Zemailr   r   r\   Zemail.utilsr   __all__r   r0   r<   ABCMetar   r   r   r   r   r   r   <module>   s    L  
f