
    =OgSQ                        	 d dl mZ d dlmZ d dlmZ d dlmZ  G d d          Z G d d          Z G d	 d
e	          Z
d Z G d d          Z G d de          Z G d d          Z G d de          Z G d d          Z G d de          Z G d de          Z G d de          Z G d d          Z G d d          Z G d  d!e          Z G d" d#e          Z G d$ d%          Z G d& d'          Zi d(ed)ed*ed+ed,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ed8eeeed9Z G d: d;          Zd<S )=    )MappingProxyType)utils)errors)_header_value_parserc                       e Zd ZddZed             Zed             Zed             Zed             Zd Z	d	 Z
d
 ZdS )Address Nc           	         	 d                     t          d ||||f                    }d|v sd|v rt          d          |q|s|rt          d          t	          j        |          \  }}|r#t          d                    ||                    |j        r|j        d         |j        }|j	        }|| _
        || _        || _        d S )Nr	   
z8invalid arguments; address parts cannot contain CR or LFz=addrspec specified when username and/or domain also specifiedz6Invalid addr_spec; only '{}' could be parsed from '{}'r   )joinfilter
ValueError	TypeErrorparserget_addr_specformatall_defects
local_partdomain_display_name	_username_domain)selfdisplay_nameusernamer   	addr_specinputsa_srests           -/usr/lib64/python3.11/email/headerregistry.py__init__zAddress.__init__   s   	  |Xvy&QRRSS6>>TV^^WXXX   96 9 !8 9 9 9,Y77IC 5  "==CV$'>4 >45 5 5  )oa((~HZF)!    c                     | j         S Nr   r   s    r!   r   zAddress.display_name8       !!r#   c                     | j         S r%   )r   r'   s    r!   r   zAddress.username<   
    ~r#   c                     | j         S r%   )r   r'   s    r!   r   zAddress.domain@   
    |r#   c                     	 | j         }t          j                            |          st          j        |          }| j        r|dz   | j        z   S |sdS |S )N@<>)r   r   DOT_ATOM_ENDS
isdisjointquote_stringr   )r   lps     r!   r   zAddress.addr_specD   sf    	 ]#..r22 	)$R((B; 	*8dk)) 	4	r#   c                 d    d                     | j        j        | j        | j        | j                  S )Nz1{}(display_name={!r}, username={!r}, domain={!r}))r   	__class____name__r   r   r   r'   s    r!   __repr__zAddress.__repr__R   s3    BII/)4=$+G G 	Gr#   c                     | j         }t          j                            |          st          j        |          }|r*| j        dk    rdn| j        }d                    ||          S | j        S )Nr/   r	   z{} <{}>)r   r   SPECIALSr1   r2   r   r   )r   dispr   s      r!   __str__zAddress.__str__W   so     ))$// 	-&t,,D 	5"nd22I##D)444~r#   c                     t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )
isinstancer   NotImplementedr   r   r   r   others     r!   __eq__zAddress.__eq__`   sO    %)) 	"!!!U%77 ,/,u|+	-r#   )r	   r	   r	   N)r6   
__module____qualname__r"   propertyr   r   r   r   r7   r;   rA    r#   r!   r   r      s        ( ( ( (T " " X"   X   X   XG G G
  - - - - -r#   r   c                   T    e Zd ZddZed             Zed             Zd Zd Zd Z	dS )	GroupNc                 ^    	 || _         |rt          |          nt                      | _        d S r%   )r   tuple
_addresses)r   r   	addressess      r!   r"   zGroup.__init__j   s2    	 *.7D%	***UWWr#   c                     | j         S r%   r&   r'   s    r!   r   zGroup.display_name|   r(   r#   c                     | j         S r%   )rJ   r'   s    r!   rK   zGroup.addresses   s
    r#   c                 X    d                     | j        j        | j        | j                  S )Nz${}(display_name={!r}, addresses={!r})r   r5   r6   r   rK   r'   s    r!   r7   zGroup.__repr__   s,    5<<("DN4 4 	4r#   c                 r   | j         2t          | j                  dk    rt          | j        d                   S | j         }|3t          j                            |          st	          j        |          }d                    d | j        D                       }|rd|z   n|}d	                    ||          S )N   r   , c              3   4   K   | ]}t          |          V  d S r%   str).0xs     r!   	<genexpr>z Group.__str__.<locals>.<genexpr>   s(      ::a3q66::::::r#    z{}:{};)
r   lenrK   rT   r   r9   r1   r2   r   r   )r   r:   adrstrs      r!   r;   zGroup.__str__   s    $T^)<)<a)?)?t~a())) FO$>$>t$D$D&t,,D::4>:::::!'3vVtV,,,r#   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r=   rG   r>   r   rK   r?   s     r!   rA   zGroup.__eq__   s>    %'' 	"!!!U%77 2%/1	3r#   )NN)
r6   rB   rC   r"   rD   r   rK   r7   r;   rA   rE   r#   r!   rG   rG   h   s        E E E E$ " " X"   X4 4 4
- - -3 3 3 3 3r#   rG   c                   j    e Zd Z	 d Zd Zed             Zed             Zd Ze	d             Z
d ZdS )	
BaseHeaderc                    dg i}|                      ||           t          j        |d                   rt          j        |d                   |d<   t                              | |d                   }|d=  |j        |fi | |S )Ndefectsdecoded)parser   _has_surrogates	_sanitizerT   __new__init)clsnamevaluekwdsr   s        r!   rd   zBaseHeader.__new__   s    2		% i11 	?#od9o>>DO{{3Y00O	$$r#   c                0    || _         || _        || _        d S r%   )_name_parse_tree_defects)r   rg   
parse_treer_   s       r!   re   zBaseHeader.init   s    
%r#   c                     | j         S r%   )rk   r'   s    r!   rg   zBaseHeader.name   s
    zr#   c                 *    t          | j                  S r%   )rI   rm   r'   s    r!   r_   zBaseHeader.defects   s    T]###r#   c                     t           | j        j        | j        j        t	          |           f|                                 fS r%   )_reconstruct_headerr5   r6   	__bases__rT   __getstate__r'   s    r!   
__reduce__zBaseHeader.__reduce__   s>    '(D		
 ! 	!r#   c                 8    t                               | |          S r%   )rT   rd   )rf   rh   s     r!   _reconstructzBaseHeader._reconstruct   s    {{3&&&r#   c          	         	 t          j        t          j        t          j        | j        d          t          j        dd          g          g          }| j        r;|                    t          j        t          j        dd          g                     |                    | j                   |	                    |          S )Nzheader-name:z
header-seprX   fws)policy)
r   HeaderHeaderLabelValueTerminalrg   rl   appendCFWSListWhiteSpaceTerminalfold)r   r{   headers      r!   r   zBaseHeader.fold   s    	  $TY>>$S,77 9 : :   
  	JMM!:3!F!F GHHJ J Jd&'''{{&{)))r#   N)r6   rB   rC   rd   re   rD   rg   r_   ru   classmethodrw   r   rE   r#   r!   r]   r]      s        @       
   X $ $ X$! ! ! ' ' ['* * * * *r#   r]   c                 J    t          | |i                               |          S r%   )typerw   )cls_namebasesrh   s      r!   rr   rr      s"    %$$11%888r#   c                   H    e Zd ZdZ eej                  Zed             Z	dS )UnstructuredHeaderNc                 f    |                      |          |d<   t          |d                   |d<   d S )Nrn   r`   )value_parserrT   rf   rh   ri   s      r!   ra   zUnstructuredHeader.parse	  s4     --e44\d<011Yr#   )
r6   rB   rC   	max_countstaticmethodr   get_unstructuredr   r   ra   rE   r#   r!   r   r     sD        I< 788L2 2 [2 2 2r#   r   c                       e Zd ZdZdS )UniqueUnstructuredHeaderrP   Nr6   rB   rC   r   rE   r#   r!   r   r             IIIr#   r   c                   p     e Zd Z	 dZ eej                  Zed             Z	 fdZ
ed             Z xZS )
DateHeaderNc                 8   |sN|d                              t          j                               d |d<   d|d<   t          j                    |d<   d S t          |t                    rt||d<   	 t          j        |          }nY# t          $ rL |d                              t          j
        d                     d |d<   t          j                    |d<   Y d S w xY w||d<   t          j        |d                   |d<   |                     |d                   |d<   d S )Nr_   datetimer	   r`   rn   zInvalid date value or format)r   r   HeaderMissingRequiredValuer   	TokenListr=   rT   r   parsedate_to_datetimer   InvalidDateDefectformat_datetimer   r   s      r!   ra   zDateHeader.parse$  s2    	O""6#D#F#FGGG#D DO!'!1!3!3DFeS!! 	#DO3E::   Y&&v'?@^'_'_```#'Z %+%5%7%7\"	
 !Z/Z0@AAY --d9o>>\s   ,B ACCc                 n    |                     d          | _         t                      j        |i | d S )Nr   )pop	_datetimesuperre   r   argskwr5   s      r!   re   zDateHeader.init9  s7    
++d!b!!!!!r#   c                     | j         S r%   )r   r'   s    r!   r   zDateHeader.datetime=  r*   r#   )r6   rB   rC   r   r   r   r   r   r   ra   re   rD   r   __classcell__r5   s   @r!   r   r     s         I  < 788L? ? [?(" " " " "   X    r#   r   c                       e Zd ZdZdS )UniqueDateHeaderrP   Nr   rE   r#   r!   r   r   B  r   r#   r   c                   z     e Zd ZdZed             Zed             Z fdZe	d             Z
e	d             Z xZS )AddressHeaderNc                 4    t          j        |           \  }} |S r%   )r   get_address_list)rh   address_lists     r!   r   zAddressHeader.value_parserK  s    $5e<<er#   c                    t          |t                    rr|                     |          x|d<   }g }|j        D ]9}|                    t          |j        d |j        D                                  :t          |j	                  }n!t          |d          s|g}d |D             }g }||d<   ||d<   d                    d |D                       |d	<   d|vr |                     |d	                   |d<   d S d S )
Nrn   c                 Z    g | ](}t          |j        pd |j        pd |j        pd           )S )r	   )r   r   r   r   )rU   mbs     r!   
<listcomp>z'AddressHeader.parse.<locals>.<listcomp>Z  sV     %C %C %C *, &-R_-B-/]-@b-/Y_"&> &> %C %C %Cr#   __iter__c                 T    g | ]%}t          |d           st          d|g          n|&S )rK   N)hasattrrG   rU   items     r!   r   z'AddressHeader.parse.<locals>.<listcomp>c  sK     7 7 7(, 29{1K1K 4eD4&)))/37 7 7r#   groupsr_   rQ   c                 ,    g | ]}t          |          S rE   rS   r   s     r!   r   z'AddressHeader.parse.<locals>.<listcomp>i  s    $B$B$B4SYY$B$B$Br#   r`   )r=   rT   r   rK   r   rG   r   all_mailboxeslistr   r   r   )rf   rh   ri   r   r   addrr_   s          r!   ra   zAddressHeader.parseQ  sc   eS!! 	 140@0@0G0GGDF$. E EeD$5%C %C 04/A%C %C %CD D E E E E
 <344GG 5*--  7 7057 7 7F GX!Y))$B$B6$B$B$BCCYt##!$!1!1$y/!B!BD $#r#   c                     t          |                    d                    | _        d | _         t	                      j        |i | d S )Nr   )rI   r   _groupsrJ   r   re   r   s      r!   re   zAddressHeader.initm  sF    RVVH--..d!b!!!!!r#   c                     | j         S r%   )r   r'   s    r!   r   zAddressHeader.groupsr  r,   r#   c                 d    | j         #t          d | j        D                       | _         | j         S )Nc              3   .   K   | ]}|j         D ]}|V  d S r%   )rK   )rU   groupaddresss      r!   rW   z*AddressHeader.addresses.<locals>.<genexpr>y  sW       $L $L;@?$L $L07 %, $L $L $L $L $L $L $Lr#   )rJ   rI   r   r'   s    r!   rK   zAddressHeader.addressesv  sG    ?"# $L $L $L $L $L L LDOr#   )r6   rB   rC   r   r   r   r   ra   re   rD   r   rK   r   r   s   @r!   r   r   G  s        I  \
 C C [C6" " " " "
   X   X    r#   r   c                       e Zd ZdZdS )UniqueAddressHeaderrP   Nr   rE   r#   r!   r   r   ~  r   r#   r   c                   $    e Zd Zed             ZdS )SingleAddressHeaderc                     t          | j                  dk    r't          d                    | j                            | j        d         S )NrP   z9value of single address header {} is not a single addressr   )rY   rK   r   r   rg   r'   s    r!   r   zSingleAddressHeader.address  sJ    t~!! #$*F49$5$57 7 7~a  r#   N)r6   rB   rC   rD   r   rE   r#   r!   r   r     s-        ! ! X! ! !r#   r   c                       e Zd ZdZdS )UniqueSingleAddressHeaderrP   Nr   rE   r#   r!   r   r     r   r#   r   c                        e Zd ZdZ eej                  Zed             Z	 fdZ
ed             Zed             Zed             Z xZS )MIMEVersionHeaderrP   c                 >   |                      |          x|d<   }t          |          |d<   |d                             |j                   |j        d n|j        |d<   |j        |d<   |j        'd                    |d         |d                   |d<   d S d |d<   d S )Nrn   r`   r_   majorminorz{}.{}version)r   rT   extendr   r   r   r   rf   rh   ri   rn   s       r!   ra   zMIMEVersionHeader.parse  s    *-*:*:5*A*AA\Zj//YYz5666 * 0 8j>NW"(W'%nnT']DMJJDOOO"DOOOr#   c                     |                     d          | _        |                     d          | _        |                     d          | _         t	                      j        |i | d S )Nr   r   r   )r   _version_major_minorr   re   r   s      r!   re   zMIMEVersionHeader.init  sY    y))ffWooffWood!b!!!!!r#   c                     | j         S r%   )r   r'   s    r!   r   zMIMEVersionHeader.major  
    {r#   c                     | j         S r%   )r   r'   s    r!   r   zMIMEVersionHeader.minor  r   r#   c                     | j         S r%   )r   r'   s    r!   r   zMIMEVersionHeader.version  
    }r#   )r6   rB   rC   r   r   r   parse_mime_versionr   r   ra   re   rD   r   r   r   r   r   s   @r!   r   r     s        I< 9::L	# 	# [	#" " " " "   X   X   X    r#   r   c                   N     e Zd ZdZed             Z fdZed             Z xZ	S )ParameterizedMIMEHeaderrP   c                     |                      |          x|d<   }t          |          |d<   |d                             |j                   |j        i |d<   d S d |j        D             |d<   d S )Nrn   r`   r_   paramsc                     i | ]>\  }}t          j        |                                          t          j        |          ?S rE   )r   rc   lower)rU   rg   rh   s      r!   
<dictcomp>z1ParameterizedMIMEHeader.parse.<locals>.<dictcomp>  sU     E E E#.4 $od3399;;$)OE$:$:E E Er#   )r   rT   r   r   r   r   s       r!   ra   zParameterizedMIMEHeader.parse  s    *-*:*:5*A*AA\Zj//YYz5666$DNNNE E2<2CE E EDNNNr#   c                 n    |                     d          | _         t                      j        |i | d S )Nr   )r   _paramsr   re   r   s      r!   re   zParameterizedMIMEHeader.init  s7    vvh''d!b!!!!!r#   c                 *    t          | j                  S r%   )r   r   r'   s    r!   r   zParameterizedMIMEHeader.params  s    ---r#   )
r6   rB   rC   r   r   ra   re   rD   r   r   r   s   @r!   r   r     sv        
 I
E 
E [
E" " " " " . . X. . . . .r#   r   c                        e Zd Z eej                  Z fdZed             Z	ed             Z
ed             Z xZS )ContentTypeHeaderc                      t                      j        |i | t          j        | j        j                  | _        t          j        | j        j                  | _        d S r%   )	r   re   r   rc   rl   maintype	_maintypesubtype_subtyper   s      r!   re   zContentTypeHeader.init  sP    d!b!!!)9)BCC(8(@AAr#   c                     | j         S r%   )r   r'   s    r!   r   zContentTypeHeader.maintype  r*   r#   c                     | j         S r%   )r   r'   s    r!   r   zContentTypeHeader.subtype  r   r#   c                 &    | j         dz   | j        z   S )N/)r   r   r'   s    r!   content_typezContentTypeHeader.content_type  s    }s"T\11r#   )r6   rB   rC   r   r   parse_content_type_headerr   re   rD   r   r   r   r   r   s   @r!   r   r     s        < @AALB B B B B
   X   X 2 2 X2 2 2 2 2r#   r   c                   T     e Zd Z eej                  Z fdZed             Z	 xZ
S )ContentDispositionHeaderc                      t                      j        |i | | j        j        }||nt	          j        |          | _        d S r%   )r   re   rl   content_dispositionr   rc   _content_disposition)r   r   r   cdr5   s       r!   re   zContentDispositionHeader.init  sI    d!b!!!1*,*BB%/":M:M!!!r#   c                     | j         S r%   )r   r'   s    r!   r   z,ContentDispositionHeader.content_disposition  s    ((r#   )r6   rB   rC   r   r    parse_content_disposition_headerr   re   rD   r   r   r   s   @r!   r   r     sj        < GHHLN N N N N
 ) ) X) ) ) ) )r#   r   c                   n     e Zd ZdZ eej                  Zed             Z	 fdZ
ed             Z xZS )ContentTransferEncodingHeaderrP   c                     |                      |          x|d<   }t          |          |d<   |d                             |j                   d S Nrn   r`   r_   r   rT   r   r   r   s       r!   ra   z#ContentTransferEncodingHeader.parse  O    *-*:*:5*A*AA\Zj//YYz566666r#   c                      t                      j        |i | t          j        | j        j                  | _        d S r%   )r   re   r   rc   rl   cte_cter   s      r!   re   z"ContentTransferEncodingHeader.init  s9    d!b!!!OD$4$899			r#   c                     | j         S r%   )r  r'   s    r!   r  z!ContentTransferEncodingHeader.cte  s
    yr#   )r6   rB   rC   r   r   r   &parse_content_transfer_encoding_headerr   r   ra   re   rD   r  r   r   s   @r!   r   r     s        I< MNNL7 7 [7
: : : : :   X    r#   r   c                   H    e Zd ZdZ eej                  Zed             Z	dS )MessageIDHeaderrP   c                     |                      |          x|d<   }t          |          |d<   |d                             |j                   d S r   r   r   s       r!   ra   zMessageIDHeader.parse  r  r#   N)
r6   rB   rC   r   r   r   parse_message_idr   r   ra   rE   r#   r!   r  r    sD        I< 788L7 7 [7 7 7r#   r  subjectdatezresent-datez	orig-datesenderzresent-sendertoz	resent-toccz	resent-ccbccz
resent-bccfromzresent-fromzreply-tozmime-versionzcontent-type)zcontent-dispositionzcontent-transfer-encodingz
message-idc                   0    e Zd Z	 eedfdZd Zd Zd ZdS )HeaderRegistryTc                 x    	 i | _         || _        || _        |r!| j                             t                     d S d S r%   )registry
base_classdefault_classupdate_default_header_map)r   r  r  use_default_maps       r!   r"   zHeaderRegistry.__init__6  sN    		 $* 	6M  !455555	6 	6r#   c                 @    	 || j         |                                <   d S r%   )r  r   r   rg   rf   s      r!   map_to_typezHeaderRegistry.map_to_typeH  s#    	 '*djjll###r#   c                     | j                             |                                | j                  }t	          d|j        z   || j        fi           S )N_)r  getr   r  r   r6   r  r  s      r!   __getitem__zHeaderRegistry.__getitem__N  sD    m

d.@AAC$sDO&<bAAAr#   c                 (    	  | |         ||          S r%   rE   )r   rg   rh   s      r!   __call__zHeaderRegistry.__call__R  s    	 tDz$&&&r#   N)	r6   rB   rC   r]   r   r"   r  r!  r#  rE   r#   r!   r  r  2  sd        /",<N'+6 6 6 6$* * *B B B
' 
' 
' 
' 
'r#   r  N)typesr   emailr   r   r   r   r   rG   rT   r]   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rE   r#   r!   <module>r&     s]  
 # " " " " "             0 0 0 0 0 0Y- Y- Y- Y- Y- Y- Y- Y-x/3 /3 /3 /3 /3 /3 /3 /3ha* a* a* a* a* a* a* a*H9 9 92 2 2 2 2 2 2 2    1   
+ + + + + + + +\    z   
4 4 4 4 4 4 4 4n    -   
! ! ! ! !- ! ! !     3   
" " " " " " " "J. . . . . . . .:2 2 2 2 2/ 2 2 2,) ) ) ) )6 ) ) )       *	7 	7 	7 	7 	7 	7 	7 	7$<
$4 J $4	
 $= $7 	$7 M 	$7 M 
$7 M $7 M $7  $5!" $5#$ %=$A$3)   .*' *' *' *' *' *' *' *' *' *'r#   