B
    0*\W<                 @   s   d dl Z d dlmZ d dlmZ d dlmZ dddg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                sL   xF|  D ]:\}}t| |r0tt| || q
td|| jjq
W d S )Nz*{!r} is an invalid keyword argument for {})	itemshasattrsuperr   __setattr__	TypeErrorformat	__class____name__)selfkwnamevalue)r    <C:\ALexclude\prg\programme\Python37\Lib\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   sz   | j | j }x$| j D ]\}}t||| qW x@| D ]4\}}t| |sdtd|| j j	t||| q>W |S )Nz*{!r} is an invalid keyword argument for {})
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 |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    r.   c             C   s   | j r(| j dr(t| jd j | j | _ xf| j D ]X\}}|j r4|j dr4x<dd | jD D ](}tt||d}|r`t||j |_ P q`W q4W | 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__)r4   
startswithr.   	__bases__r   r	   getattr)clsr   r    r2   r-   r   r   r   _extend_docstringsc   s    
r9   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 )N)raise_on_defectregister_defect)r   objdefectr   r   r   handle_defect   s    zPolicy.handle_defectc             C   s   |j | d S )N)Zdefectsappend)r   r=   r>   r   r   r   r<      s    zPolicy.register_defectc             C   s   d S )Nr   )r   r   r   r   r   header_max_count   s    zPolicy.header_max_countc             C   s   t d S )N)NotImplementedError)r   sourcelinesr   r   r   header_source_parse   s    zPolicy.header_source_parsec             C   s   t d S )N)rB   )r   r   r   r   r   r   header_store_parse   s    zPolicy.header_store_parsec             C   s   t d S )N)rB   )r   r   r   r   r   r   header_fetch_parse   s    	zPolicy.header_fetch_parsec             C   s   t d S )N)rB   )r   r   r   r   r   r   fold   s    
zPolicy.foldc             C   s   t d S )N)rB   )r   r   r   r   r   r   fold_binary  s    zPolicy.fold_binary)r   r&   r'   r;   linesepcte_typemax_line_lengthmangle_from_Zmessage_factoryr?   r<   rA   abcabstractmethodrD   rE   rF   rG   rH   r   r   r   r   r   p   s   2
)	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UNKNOWN8BIT)r   r   r   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   rC   r   r   r   r   r   rD   %  s    zCompat32.header_source_parsec             C   s   ||fS )Nr   )r   r   r   r   r   r   rE   1  s    zCompat32.header_store_parsec             C   s   |  ||S )N)rV   )r   r   r   r   r   r   rF   7  s    zCompat32.header_fetch_parsec             C   s   | j ||ddS )NT)sanitize)_fold)r   r   r   r   r   r   rG   >  s    zCompat32.foldc             C   s"   | j ||| jdkd}|ddS )NZ7bit)r[   asciisurrogateescape)r\   rJ   encode)r   r   r   Zfoldedr   r   r   rH   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 k	rd}| jd k	r|| j}| |j	| j
|d | | j
 d|S )Nz%s: )r   rP   )rP   r   )rI   
maxlinelenrX   )r@   rQ   rR   r   r   rS   rT   rU   rK   r_   rI   r   )r   r   r   r[   partshr`   r   r   r   r\   T  s&    



zCompat32._foldN)r   r&   r'   rL   rV   rD   rE   rF   rG   rH   r\   r   r   r   r   r     s   
)rM   Zemailr   r   rT   Zemail.utilsr   __all__r   r.   r9   ABCMetar   r   r   r   r   r   r   <module>   s   L  f