a
    ze(                     @   s   d dl Z 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 g d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)EmailMessage)r   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|vrt | dt  t jf i | d S )Nheader_factory)object__setattr__r   super__init__)selfkw	__class__ "/usr/lib/python3.9/email/policy.pyr   ]   s    zEmailPolicy.__init__c                 C   s   | j | jS N)r   Z	max_count)r   namer   r   r   header_max_countd   s    zEmailPolicy.header_max_countc                 C   s>   |d  dd\}}|dd|dd   }||dfS )Nr   :   z 	 
)splitlstripjoinrstrip)r   Zsourcelinesr   valuer   r   r   header_source_parsev   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   header_fetch_parse   s    	
zEmailPolicy.header_fetch_parsec                 C   s   | j ||ddS )NTrefold_binary)_foldr/   r   r   r   fold   s    zEmailPolicy.foldc                 C   s0   | j ||| jdkd}| jr dnd}||dS )NZ7bitr3   utf8asciisurrogateescape)r5   Zcte_typer7   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j | }| jdkp| jdko|rdt|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allr   r      c                 3   s   | ]}t | kV  qd S r   )r,   ).0xmaxlenr   r   	<genexpr>       z$EmailPolicy._fold.<locals>.<genexpr>r   r    z: )r(   r6   max_line_lengthsysmaxsizer-   refold_sourcer,   anyr   r   r$   linesep)r   r   r&   r4   linesZrefoldr   rA   r   r5      s    


 zEmailPolicy._fold)F)__name__
__module____qualname__r	   Zmessage_factoryr7   rH   r   r   r   Zcontent_managerr   r   r'   r0   r2   r6   r<   r5   __classcell__r   r   r   r   r
      s   =r
   T)Zraise_on_defectr!   )rJ   )rJ   rE   )r7   )rerF   Zemail._policybaser   r   r   r   Zemail.utilsr   Zemail.headerregistryr   Zemail.contentmanagerr   Zemail.messager	   __all__compiler1   r
   r   r   Zcloner   r   r   ZSMTPUTF8r   r   r   r   <module>   s"   
 @