
    4bhOQ                        	 g d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZ dZdZ ej                   d	      Z ej                   d
ej$                        Z ej                   d      Z G d d      Z G d de      ZdZ G d de      Z e eej6                  dz
              Zdez  Zej<                  Zy))	GeneratorDecodedGeneratorBytesGenerator    N)deepcopy)StringIOBytesIO)_has_surrogates)HeaderWriteError_
z
\r\n|\r|\nz^From z\r\n[^ \t]|\r[^ \n\t]|\n[^ \t]c                       e Zd Z	 ddddZd ZddZd Zd Zd Zd	 Z	d
 Z
d Zd Zd ZeZd Zd Zd Zd Zedd       Zed        Zy)r   Npolicyc                b    	 ||dn|j                   }|| _        || _        || _        || _        y )NT)mangle_from__fp_mangle_from_maxheaderlenr   )selfoutfpr   r   r   s        9/opt/python-3.12.12/usr/lib/python3.12/email/generator.py__init__zGenerator.__init__%   s>    	. #)>4v7J7JL)(    c                 :    | j                   j                  |       y N)r   writer   ss     r   r   zGenerator.writeE   s    qr   c                    	 | j                   |j                   n| j                   }||j                  |      }| j                  |j                  | j                        }|j                  | _        | j                  | j                        | _        d| _        | j                  | j                        | _        | j                   }|j                   }	 || _         ||_         |rZ|j                         }|s*dt        j                  t        j                               z   }| j                  || j                  z          | j                  |       || _         ||_         y # || _         ||_         w xY w)N)linesepmax_line_length zFrom nobody )r   cloner   r    _NL_encode_encoded_NL_EMPTY_encoded_EMPTYget_unixfromtimectimer   _write)r   msgunixfromr    r   old_gen_policyold_msg_policyufroms           r   flattenzGenerator.flattenI   s*   	(  ${{2\\'\2F(\\$2C2C\DF>><<1"ll4;;7
 	( DKCJ((**TZZ		-DDE

5488+,KK(DK'CJ )DK'CJs   A;E E-c                 V    	 | j                  || j                  d | j                        S Nr   )	__class__r   r   )r   fps     r   r$   zGenerator.clonez   s0    ?~~b"00"%)[[  2 	2r   c                     t               S r   )r   r   s    r   _new_bufferzGenerator._new_buffer   s
    zr   c                     |S r    r   s     r   r&   zGenerator._encode   s    r   c                     |sy t         j                  |      }|d d D ].  }| j                  |       | j                  | j                         0 |d   r| j                  |d          y y )N)NLCREsplitr   r%   )r   lineslines      r   _write_lineszGenerator._write_lines   s`    E"#2JDJJtJJtxx   9JJuRy! r   c                     | j                   }	 d | _        | j                         x| _         }| j                  |       || _         | j                  }| `|rOt	        |      }|j                  d      	|d   |d<   n|j                  d|d          |j                  d|d          t        |dd       }|| j                  |       n ||        | j                   j                  |j                                y # || _         | j                  }| `w xY w)Ncontent-transfer-encodingr   Content-Transfer-Encodingcontent-type   _write_headers)r   
_munge_cter:   	_dispatchr   getreplace_headergetattrrI   r   getvalue)r   r.   oldfpsfp	munge_ctemeths         r   r-   zGenerator._write   s     	 "DO!--//DHsNN3DHI3-Cww23;3<Q</0""#>	!M~y|< s,d3<$Js||~&' DHIs   /C6 6Dc                 &   |j                         }|j                         }t        j                  ||f      j	                  dd      }t        | d|z   d       }|0|j	                  dd      }t        | d|z   d       }|| j                  } ||       y )N-r   _handle_)get_content_maintypeget_content_subtype
UNDERSCOREjoinreplacerN   
_writeBody)r   r.   mainsubspecificrS   generics          r   rK   zGenerator._dispatch   s    
 '')%%'??D#;/77SAtZ(2D9<ll3,G4g!5t<D|S	r   c                    |j                         D ]  \  }}| j                  j                  ||      }| j                  j                  r~| j                  j                  }|j                  | j                  j                        st        d|d|      t        j                  |j                  |            rt        d|      | j                  |        | j                  | j                         y )Nz folded header does not end with z: z folded header contains newline: )	raw_itemsr   foldverify_generated_headersr    endswithr
   NEWLINE_WITHOUT_FWSPsearchremovesuffixr   r%   )r   r.   hvfoldedr    s         r   rI   zGenerator._write_headers   s    MMODAq[[%%a+F{{33++--t{{':':;*:7+RzRT T'..v/B/B7/KL*:6*EG GJJv $ 	

488r   c                    |j                         }|y t        |t              st        dt	        |      z        t        |j                        r\|j                  d      }|It        |      }|d= |j                  |j                  |       |j                         }|d   |d   f| _
        | j                  rt        j                  d|      }| j                  |       y )Nzstring payload expected: %scharsetrE   rG   >From )get_payload
isinstancestr	TypeErrortyper	   _payload	get_paramr   set_payloadrJ   r   fcrer^   rC   )r   r.   payloadrm   s       r   _handle_textzGenerator._handle_text   s    //#?'3'9DMIJJ3<<(mmI.G" sm34g6//+#&'B#C#&~#6#8hhx1G'"r   c                 0   g }|j                         }|g }n5t        |t              r| j                  |       y t        |t              s|g}|D ]`  }| j                         }| j                  |      }|j                  |d| j                         |j                  |j                                b |j                         }|s=| j                  j                  |      }| j                  |      }|j                  |       |j                   e| j"                  r!t$        j'                  d|j                         }	n|j                   }	| j)                  |	       | j                  | j                         | j                  d|z   | j                  z          |r*| j*                  j                  |j-                  d             |D ]K  }
| j                  | j                  dz   |z   | j                  z          | j*                  j                  |
       M | j                  | j                  dz   |z   dz   | j                  z          |j.                  K| j"                  r!t$        j'                  d|j.                        }n|j.                  }| j)                  |       y y )NFr/   r    rn   z--r   )ro   rp   rq   r   listr:   r$   r3   r%   appendrO   get_boundaryr'   rZ   _make_boundaryset_boundarypreambler   rw   r^   rC   r   popepilogue)r   r.   msgtextssubpartspartr   gboundaryalltextr   	body_partr   s               r   _handle_multipartzGenerator._handle_multipart  s    ??$H#&JJx Hd+ zHD  "A

1AIIdUDHHI=OOAJJL)	  ##% &&++H5G**73HX&<<#!!88Hcll;<<h'JJtxx 

4(?TXX-.HHNN8<<?+ "IJJtxx$1DHH<=HHNN9%	 " 	

488d?X-4txx?@<<#!!88Hcll;<<h' $r   c                     | j                   }|j                  d      | _         	 | j                  |       || _         y # || _         w xY w)Nr   r!   )r   r$   r   )r   r.   ps      r   _handle_multipart_signedz"Generator._handle_multipart_signedF  sA     KKggag0	""3'DK!DKs	   > 	Ac                    g }|j                         D ]  }| j                         }| j                  |      }|j                  |d| j                         |j                         }|j                  | j                        }|r@|d   | j                  k(  r.|j                  | j                  j                  |d d              |j                  |        | j                  j                  | j                  j                  |             y )NFr{   r>   )ro   r:   r$   r3   r%   rO   r@   r'   r)   r}   rZ   r   r   )r   r.   blocksr   r   r   textrA   s           r   _handle_message_delivery_statusz)Generator._handle_message_delivery_statusQ  s     OO%D  "A

1AIIdUDHHI=::<DJJt//0Erd&9&99d..33E#2J?@d# & 	t'',,V45r   c                 R   | j                         }| j                  |      }|j                  }t        |t              r>|j                  |j                  d      d| j                         |j                         }n| j                  |      }| j                  j                  |       y )Nr   Fr{   )r:   r$   rt   rp   r|   r3   ro   r%   rO   r&   r   r   )r   r.   r   r   rx   s        r   _handle_messagezGenerator._handle_messagef  sz    JJqM ,,gt$IIcooa(5$((IKjjlGll7+Gwr   c                 @   t        j                  t        j                        }dt        |z  z   dz   }||S |}d}	 | j                  dt        j                  |      z   dz   t        j                        }|j                  |      s	 |S |dz   t        |      z   }|dz  }d)Nz===============z==r   z^--z(--)?$.rH   )random	randrangesysmaxsize_fmt_compile_rereescape	MULTILINErg   rq   )clsr   tokenr   bcountercres          r   r   zGenerator._make_boundary  s       -.5<O//%"))A,"6"A2<<PC::d#  3W-AqLG r   c                 .    t        j                  ||      S r   )r   compiler   r   flagss      r   r   zGenerator._compile_re  s    zz!U##r   )NN)FNr   )__name__
__module____qualname__r   r   r3   r$   r:   r&   rC   r-   rK   rI   ry   r\   r   r   r   r   classmethodr   r   r<   r   r   r   r      s    @/(b2(	" %'N(&#, J8(t	6* 2  " $ $r   r   c                   L     e Zd Z	 d Zd Zd Zd Z fdZeZe	d        Z
 xZS )r   c                 Z    | j                   j                  |j                  dd             y )Nasciisurrogateescape)r   r   encoder   s     r   r   zBytesGenerator.write  s    qxx):;<r   c                     t               S r   )r   r9   s    r   r:   zBytesGenerator._new_buffer  s
    yr   c                 $    |j                  d      S Nr   )r   r   s     r   r&   zBytesGenerator._encode  s    xx  r   c                     |j                         D ]:  \  }}| j                  j                  | j                  j	                  ||             < | j                  | j
                         y r   )rb   r   r   r   fold_binaryr%   )r   r.   ri   rj   s       r   rI   zBytesGenerator._write_headers  sK     MMODAqHHNN4;;221a89 $ 	

488r   c                 <   |j                   y t        |j                         rf| j                  j                  dk(  sM| j                  r%t
        j                  d|j                         |_         | j                  |j                          y t        t        | +  |       y )N7bitrn   )rt   r	   r   cte_typer   rw   r^   rC   superr   ry   )r   r.   r6   s     r   ry   zBytesGenerator._handle_text  so     <<3<<(1E1Ev1M!!#xx#,,?cll+.3C8r   c                 L    t        j                  |j                  d      |      S r   )r   r   r   r   s      r   r   zBytesGenerator._compile_re  s    zz!((7+U33r   )r   r   r   r   r:   r&   rI   ry   r\   r   r   __classcell__)r6   s   @r   r   r     s:    
=!
9 J4 4r   r   zD[Non-text (%(type)s) part of message omitted, filename %(filename)s]c                   "    e Zd Z	 ddddZd Zy)r   Nr   c                d    	 t         j                  | ||||       |t        | _        y || _        y r5   )r   r   _FMTr   )r   r   r   r   fmtr   s         r   r   zDecodedGenerator.__init__  s:    	* 	4l"( 	 	*;DIDIr   c                    |j                         D ]  }|j                         }|dk(  rt        |j                  d      |        6|dk(  r<t        | j                  |j                         |j                         |j                         |j                  d      |j                  dd      |j                  d	d
      dz  |         y )Nr   F)decode)file	multipartz[no filename]zContent-Descriptionz[no description]rF   z[no encoding])rs   maintypesubtypefilenamedescriptionencoding)	walkrW   printro   r   get_content_typerX   get_filenamerL   )r   r.   r   r   s       r   rK   zDecodedGenerator._dispatch  s    HHJD002H6!d&&e&44@[(dii#'#8#8#:#'#<#<#>#'#;#;#=#'#4#4_#E#'88,A,>$@#'88,G,;$=	# 	 !	" r   )NNN)r   r   r   r   rK   r<   r   r   r   r     s    
<"r   r   rH   z%%0%dd)__all__r   r   r+   r   copyr   ior   r   email.utilsr	   email.errorsr
   rY   NLr   r?   r   rw   rf   r   r   r   r   lenreprr   _widthr   r   r<   r   r   <module>r      s   
 A
= 	 
      ' )
	

=!rzz)R\\*!rzz"CD x$ x$v/4Y /4d N6"y 6"t 
T#++a- 	!& ))r   