B
    0*\d)                 @   s   d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ ddd	d
ddddgZe dZeG dd
 d
eZe Ze`ejddZejddZejdddZejddZdS )    N)PolicyCompat32compat32_extend_docstrings)_has_surrogates)HeaderRegistry)raw_data_manager)EmailMessager   r   r   EmailPolicydefaultstrictSMTPHTTPz\n|\rc                   sl   e Zd ZeZdZdZe Ze	Z
 fddZdd Zdd Zd	d
 Zdd Zdd Zdd ZdddZ  ZS )r
   Flongc                s*   d|krt | dt  t jf | d S )Nheader_factory)object__setattr__r   super__init__)selfkw)	__class__ 7C:\ALexclude\prg\programme\Python37\Lib\email\policy.pyr   \   s    zEmailPolicy.__init__c             C   s   | j | jS )N)r   Z	max_count)r   namer   r   r   header_max_countc   s    zEmailPolicy.header_max_countc             C   s>   |d  dd\}}|dd|dd   }||dfS )Nr   :   z 	 z
)splitlstripjoinrstrip)r   Zsourcelinesr   valuer   r   r   header_source_parseu   s    	zEmailPolicy.header_source_parsec             C   sV   t |dr$|j | kr$||fS t|trFt| dkrFtd|| ||fS )Nr   r   zDHeader values may not contain linefeed or carriage return characters)	hasattrr   lower
isinstancestrlen
splitlines
ValueErrorr   )r   r   r#   r   r   r   header_store_parse   s
    
zEmailPolicy.header_store_parsec             C   s*   t |dr|S dt|}| ||S )Nr   r   )r%   r!   linesep_splitterr   r   )r   r   r#   r   r   r   header_fetch_parse   s    	
zEmailPolicy.header_fetch_parsec             C   s   | j ||ddS )NT)refold_binary)_fold)r   r   r#   r   r   r   fold   s    zEmailPolicy.foldc             C   s0   | j ||| jdkd}| jr dnd}||dS )NZ7bit)r/   utf8asciisurrogateescape)r0   Zcte_typer2   encode)r   r   r#   Zfoldedcharsetr   r   r   fold_binary   s    zEmailPolicy.fold_binaryc                s   t |dr|j| dS | jr"| jntd | }| jdkp| jdko|rft|d t| d  kpt fdd	|d
d  D }|s|rt|r| 	|d
|j| dS |d | j
| | j S )Nr   )Zpolicyinfallr   r      c             3   s   | ]}t | kV  qd S )N)r)   ).0x)maxlenr   r   	<genexpr>   s    z$EmailPolicy._fold.<locals>.<genexpr>r   r   z: )r%   r1   max_line_lengthfloatr*   refold_sourcer)   anyr   r   r!   linesep)r   r   r#   r/   linesZrefoldr   )r=   r   r0      s    


 zEmailPolicy._fold)F)__name__
__module____qualname__r	   Zmessage_factoryr2   rA   r   r   r   Zcontent_managerr   r   r$   r,   r.   r1   r7   r0   __classcell__r   r   )r   r   r
      s   =T)Zraise_on_defectz
)rC   )rC   r?   )r2   )reZemail._policybaser   r   r   r   Zemail.utilsr   Zemail.headerregistryr   Zemail.contentmanagerr   Zemail.messager	   __all__compiler-   r
   r   r   Zcloner   r   r   ZSMTPUTF8r   r   r   r   <module>   s.   
 @