a
    ze:                     @   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q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.9/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   sr   | j | j }| j D ]\}}t||| q| D ]4\}}t| |s^td|| j j	t||| q8|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|d S )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 f i |jS N)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    r1   c                 C   s   | j r(| j dr(t| jd j | j | _ | j D ]V\}}|j r2|j dr2dd | jD D ]*}tt||d}|r\t||j |_  q2q\q2| S )N+r   c                 s   s    | ]}|  D ]
}|V  qqd S r&   )mro)r   basecr   r   r   	<genexpr>h       z%_extend_docstrings.<locals>.<genexpr>__doc__)r8   
startswithr1   	__bases__r   r
   getattr)clsr   r"   r5   r0   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 r&   )raise_on_defectregister_defectr   objZdefectr   r   r   handle_defect   s    zPolicy.handle_defectc                 C   s   |j | d S r&   )ZdefectsappendrA   r   r   r   r@      s    zPolicy.register_defectc                 C   s   d S r&   r   )r   r   r   r   r   header_max_count   s    zPolicy.header_max_countc                 C   s   t d S r&   NotImplementedError)r   sourcelinesr   r   r   header_source_parse   s    zPolicy.header_source_parsec                 C   s   t d S r&   rF   r   r   r   r   r   r   header_store_parse   s    zPolicy.header_store_parsec                 C   s   t d S r&   rF   rJ   r   r   r   header_fetch_parse   s    	zPolicy.header_fetch_parsec                 C   s   t d S r&   rF   rJ   r   r   r   fold   s    
zPolicy.foldc                 C   s   t d S r&   rF   rJ   r   r   r   fold_binary  s    zPolicy.fold_binary)r   r)   r*   r?   linesepcte_typemax_line_lengthmangle_from_Zmessage_factoryrC   r@   rE   abcabstractmethodrI   rK   rL   rM   rN   r   r   r   r   r   p   s&   2
	



r   )	metaclassc                   @   sH   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   s0   t |ts|S t|r(tj|tj|dS |S d S )Nr   header_name)
isinstancestrr   r   Header_charsetUNKNOWN8BITrJ   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 r&   r   rJ   r   r   r   rK   1  s    zCompat32.header_store_parsec                 C   s   |  ||S r&   )r]   rJ   r   r   r   rL   7  s    zCompat32.header_fetch_parsec                 C   s   | j ||ddS )NTsanitize)_foldrJ   r   r   r   rM   >  s    zCompat32.foldc                 C   s"   | j ||| jdkd}|ddS )NZ7bitrb   asciisurrogateescape)rd   rP   encode)r   r   r   Zfoldedr   r   r   rN   H  s    	zCompat32.fold_binaryc                 C   s   g }| d|  t|tr\t|rL|r<tj|tj|d}qZ| | d }q`tj||d}n|}|d urd}| jd ur|| j}| |j	| j
|d | | j
 d|S )Nz%s: rV   )rW   r   )rO   
maxlinelenr_   )rD   rX   rY   r   r   rZ   r[   r\   rQ   rg   rO   r   )r   r   r   rc   partshrh   r   r   r   rd   T  s(    



zCompat32._foldN)r   r)   r*   rR   r]   rI   rK   rL   rM   rN   rd   r   r   r   r   r     s   
r   )rS   Zemailr   r   r[   Zemail.utilsr   __all__r   r1   r=   ABCMetar   r   r   r   r   r   r   <module>   s   L  f