
    ;e:                         	 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          Zd Z	d	 Z
 G d
 dee j                  Ze
 G d de                      Z e            ZdS )    N)header)charset)_has_surrogates)PolicyCompat32compat32c                   8     e Zd Z	  fdZd Zd Zd Zd Z xZS )_PolicyBasec                 
   	 |                                 D ]k\  }}t          | |          r*t          t          |                               ||           ?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valuer   s       (/usr/lib/python3.11/email/_policybase.py__init__z_PolicyBase.__init__)   s    	
 88:: 	8 	8KD%tT"" 8k$''33D%@@@@@GGdn57 78 8 8		8 	8    c                     d | j                                         D             }d                    | j        j        d                    |                    S )Nc                 @    g | ]\  }}d                      ||          S )z{}={!r})r   ).0r   r   s      r   
<listcomp>z(_PolicyBase.__repr__.<locals>.<listcomp>8   s<     < < < T5 !!$.. < < <r   z{}({})z, )__dict__r   r   r   r   join)r   argss     r   __repr__z_PolicyBase.__repr__7   sQ    < <$(M$7$7$9$9< < <t~6		$HHHr   c                    	 | j                             | j                   }| j                                        D ]!\  }}t                              |||           "|                                D ]^\  }}t          | |          s-t          d                    || j         j	                            t                              |||           _|S r   )
r   __new__r    r   objectr   r   r   r   r   )r   r   	newpolicyattrr   s        r   clonez_PolicyBase.clone<   s    	 N**4>::	=..00 	7 	7KD%y$666688:: 	7 	7KD%4&& 8@GGdn57 78 8 8 y$6666r   c                     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   msgs       r   r   z_PolicyBase.__setattr__N   sA    4 	6;CC5CSZZ(?FFGGGr   c                 (    	  | j         di |j        S )N )r)   r    )r   others     r   __add__z_PolicyBase.__add__U   s#    	
 tz++EN+++r   )	r   
__module____qualname__r   r#   r)   r   r0   __classcell__)r   s   @r   r
   r
      s        *8 8 8 8 8I I I
  $H H H, , , , , , ,r   r
   c                     |                      dd          d         } |                    dd          d         }| dz   |z   S )N
   r   )rsplitsplit)doc	added_docs     r   _append_docr;   ^   sA    
**T1

a
 Ca((+I:	!!r   c                    | j         rD| j                             d          r*t          | j        d         j         | j                   | _         | j                                        D ]v\  }}|j         rj|j                             d          rPd | j        D             D ]>}t          t          ||          d          }|rt          ||j                   |_          n?w| S )N+r   c              3   H   K   | ]}|                                 D ]}|V  d S N)mro)r   basecs      r   	<genexpr>z%_extend_docstrings.<locals>.<genexpr>h   s7      FFD488::FFaaFFFFFFFr   __doc__)rD   
startswithr;   	__bases__r    r   getattr)clsr   r(   rB   r9   s        r   _extend_docstringsrI   c   s    
{ Is{--c22 I!#-"2":CKHHl((**  
d< 	DL33C88 	FFCMFFF  ga..	:: #.sDL#A#ADLE Jr   c                       e Zd Z	 dZdZdZdZdZdZd Z	d Z
d Zej        d	             Zej        d
             Zej        d             Zej        d             Zej        d             ZdS )r   Fr5   8bitN   Nc                 F    	 | j         r||                     ||           d S r?   )raise_on_defectregister_defectr   objdefects      r   handle_defectzPolicy.handle_defect   s5    	  	LS&)))))r   c                 <    	 |j                             |           d S r?   )defectsappendrP   s      r   rO   zPolicy.register_defect   s%    		 	6"""""r   c                     	 d S r?   r.   )r   r   s     r   header_max_countzPolicy.header_max_count   s    	  tr   c                     	 t           r?   NotImplementedError)r   sourceliness     r   header_source_parsezPolicy.header_source_parse       	 "!r   c                     	 t           r?   rZ   r   r   r   s      r   header_store_parsezPolicy.header_store_parse   s    	 "!r   c                     	 t           r?   rZ   r`   s      r   header_fetch_parsezPolicy.header_fetch_parse   s    	 "!r   c                     	 t           r?   rZ   r`   s      r   foldzPolicy.fold   s    	 "!r   c                     	 t           r?   rZ   r`   s      r   fold_binaryzPolicy.fold_binary  r^   r   )r   r1   r2   rN   linesepcte_typemax_line_lengthmangle_from_message_factoryrS   rO   rX   abcabstractmethodr]   ra   rc   re   rg   r.   r   r   r   r   p   s       .` OGHOLO* * *&# # #  & 	" " " 	" " " 	" " " 		" 	" 	" 	" " " " "r   r   )	metaclassc                   >    e Zd Z	 dZd Zd Zd Zd Zd Zd Z	d Z
d	S )
r   Tc                     t          |t                    s|S t          |          r!t          j        |t
          j        |          S |S )Nr   header_name)
isinstancestrr   r   Header_charsetUNKNOWN8BITr`   s      r   _sanitize_headerzCompat32._sanitize_header  sU     %%% 	L5!! 	=0D-13 3 3 3 Lr   c                     	 |d                              dd          \  }}|                    d          d                    |dd                    z   }||                    d          fS )Nr   :r6   z 	 z
)r8   lstripr!   rstrip)r   r\   r   r   s       r   r]   zCompat32.header_source_parse%  sg    	 "!n**322eU##bggk!""o&>&>>ell6**++r   c                     	 ||fS r?   r.   r`   s      r   ra   zCompat32.header_store_parse1  s    	 e}r   c                 0    	 |                      ||          S r?   )ry   r`   s      r   rc   zCompat32.header_fetch_parse7  s    	 $$T5111r   c                 4    	 |                      ||d          S )NTsanitize)_foldr`   s      r   re   zCompat32.fold>  s!    	 zz$z555r   c                 r    	 |                      ||| j        dk              }|                    dd          S )N7bitr   asciisurrogateescape)r   ri   encode)r   r   r   foldeds       r   rg   zCompat32.fold_binaryH  s<    	 D%$-2GHH}}W&7888r   c                    g }|                     d|z             t          |t                    rbt          |          r<|r"t	          j        |t          j        |          }n1|                     |           d }nt	          j        ||          }n|}|?d}| j        | j        }|                     |	                    | j
        |                     |                     | j
                   d                    |          S )Nz%s: rr   )rs   r   )rh   
maxlinelenr|   )rV   rt   ru   r   r   rv   rw   rx   rj   r   rh   r!   )r   r   r   r   partshr   s          r   r   zCompat32._foldT  s   Vd]###eS!! 	u%% ; e.6.B268 8 8AA LL'''AAM%T::: A= J#/!1
LL$,:NNOOOT\"""wwu~~r   N)r   r1   r2   rk   ry   r]   ra   rc   re   rg   r   r.   r   r   r   r     s        
 L
 
 

, 
, 
,  2 2 26 6 6
9 
9 
9    r   r   )rm   emailr   r   rw   email.utilsr   __all__r
   r;   rI   ABCMetar   r   r   r.   r   r   <module>r      s9  
 


       % % % % % % ' ' ' ' ' '  I, I, I, I, I, I, I, I,X" " "

 
 
\" \" \" \" \"[CK \" \" \" \"~ c c c c cv c c cL 8::r   