
    z%iSQ                     *   	 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y<)=    )MappingProxyType)utils)errors)_header_value_parserc                   f    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y)AddressNc           	         	 dj                  t        d ||||f            }d|v sd|v rt        d      |w|s|rt        d      t	        j
                  |      \  }}|rt        dj                  ||            |j                  r|j                  d   |j                  }|j                  }|| _
        || _        || _        y )N 
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           H/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/email/headerregistry.py__init__zAddress.__init__   s    	  |Xvy&QRS6>TV^WXX  6 !8 9 9,,Y7IC  "==CV$'>45 5 ooa((~~HZZF)!    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                  j                  |      st        j                  |      }| j
                  r|dz   | j
                  z   S |sy|S )N@<>)r   r   DOT_ATOM_ENDS
isdisjointquote_stringr   )r   lps     r!   r   zAddress.addr_specD   s[    	 ]]##..r2$$R(B;;8dkk))	r#   c                     dj                  | 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   s9    BII//))4==$++G 	Gr#   c                     | j                   }t        j                  j                  |      st        j                  |      }|r/| j
                  dk(  rdn| j
                  }dj                  ||      S | j
                  S )Nr/   r
   z{} <{}>)r   r   SPECIALSr1   r2   r   r   )r   dispr   s      r!   __str__zAddress.__str__W   se      ))$/&&t,D"nnd2I##D)44~~r#   c                     t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r%   )
isinstancer   NotImplementedr   r   r   r   others     r!   __eq__zAddress.__eq__`   sU    %)!!!!U%7%77 ,/,u||+	-r#   )r
   r
   r
   N)r6   
__module____qualname__r"   propertyr   r   r   r   r7   r;   rA    r#   r!   r   r      sh    (T " "      G
-r#   r   c                   F    e Zd ZddZed        Zed        Zd Zd Zd Z	y)	GroupNc                 X    	 || _         |rt        |      | _        y t               | _        y r%   )r   tuple
_addresses)r   r   	addressess      r!   r"   zGroup.__init__j   s'    	 *.7%	*UW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                  | j                        S )Nz${}(display_name={!r}, addresses={!r})r   r5   r6   r   rK   r'   s    r!   r7   zGroup.__repr__   s1    5<<((""DNN4 	4r#   c                 x   | j                   0t        | j                        dk(  rt        | j                  d         S | j                   }|4t        j
                  j                  |      st	        j                  |      }dj                  d | j                  D              }|rd|z   n|}dj                  ||      S )N   r   , c              3   2   K   | ]  }t        |        y wr%   )str).0xs     r!   	<genexpr>z Group.__str__.<locals>.<genexpr>   s     :a3q6:s    z{}:{};)
r   lenrK   rS   r   r9   r1   r2   r   r   )r   r:   adrstrs      r!   r;   zGroup.__str__   s    $T^^)<a)?t~~a())  FOO$>$>t$D&&t,D:4>>::!'vVtV,,r#   c                     t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r%   )r=   rG   r>   r   rK   r?   s     r!   rA   zGroup.__eq__   s@    %'!!!!U%7%77 2%//1	3r#   )NN)
r6   rB   rC   r"   rD   r   rK   r7   r;   rA   rE   r#   r!   rG   rG   h   s?    E$ " "  4
-3r#   rG   c                   V    e Zd Z	 d Zd Zed        Zed        Zd Ze	d        Z
d Zy)	
BaseHeaderc                     dg i}| j                  ||       t        j                  |d         rt        j                  |d         |d<   t        j                  | |d         }|d=  |j                  |fi | |S )Ndefectsdecoded)parser   _has_surrogates	_sanitizerS   __new__init)clsnamevaluekwdsr   s        r!   rc   zBaseHeader.__new__   st    2		%  i1#ood9o>DO{{3Y0O		$$r#   c                .    || _         || _        || _        y r%   )_name_parse_tree_defects)r   rf   
parse_treer^   s       r!   rd   zBaseHeader.init   s    
%r#   c                     | j                   S r%   )rj   r'   s    r!   rf   zBaseHeader.name   s    zzr#   c                 ,    t        | j                        S r%   )rI   rl   r'   s    r!   r^   zBaseHeader.defects   s    T]]##r#   c                     t         | j                  j                  | j                  j                  t	        |       f| j                         fS r%   )_reconstruct_headerr5   r6   	__bases__rS   __getstate__r'   s    r!   
__reduce__zBaseHeader.__reduce__   sC    ''((D	
 ! 	!r#   c                 .    t         j                  | |      S r%   )rS   rc   )re   rg   s     r!   _reconstructzBaseHeader._reconstruct   s    {{3&&r#   c          	         	 t        j                  t        j                  t        j                  | j                  d      t        j                  dd      g      g      }| j
                  r9|j                  t        j                  t        j                  dd      g             |j                  | j
                         |j                  |      S )Nzheader-name:z
header-seprW   fws)policy)
r   HeaderHeaderLabelValueTerminalrf   rk   appendCFWSListWhiteSpaceTerminalfold)r   rz   headers      r!   r   zBaseHeader.fold   s    	  $$TYY>$$S,7 9 :  
 MM!:!:3!F GHJd&&'{{&{))r#   N)r6   rB   rC   rc   rd   rD   rf   r^   rt   classmethodrv   r   rE   r#   r!   r\   r\      sX    @ 
   $ $! ' '*r#   r\   c                 :    t        | |i       j                  |      S r%   )typerv   )cls_namebasesrg   s      r!   rq   rq      s    %$11%88r#   c                   D    e Zd ZdZ eej                        Zed        Z	y)UnstructuredHeaderNc                 N    | j                  |      |d<   t        |d         |d<   y )Nrm   r_   )value_parserrS   re   rg   rh   s      r!   r`   zUnstructuredHeader.parse	  s*     --e4\d<01Yr#   )
r6   rB   rC   	max_countstaticmethodr   get_unstructuredr   r   r`   rE   r#   r!   r   r     s)    I 7 78L2 2r#   r   c                       e Zd ZdZy)UniqueUnstructuredHeaderrP   Nr6   rB   rC   r   rE   r#   r!   r   r         Ir#   r   c                   h     e Zd Z	 dZ eej                        Zed        Z	 fdZ
ed        Z xZS )
DateHeaderNc                     |sH|d   j                  t        j                                d |d<   d|d<   t        j                         |d<   y t        |t              r||d<   	 t        j                  |      }||d<   t        j                  |d         |d<   | j                  |d         |d<   y # t        $ rF |d   j                  t        j                  d             d |d<   t        j                         |d<   Y y w xY w)Nr^   datetimer
   r_   rm   zInvalid date value or format)r~   r   HeaderMissingRequiredValuer   	TokenListr=   rS   r   parsedate_to_datetimer   InvalidDateDefectformat_datetimer   r   s      r!   r`   zDateHeader.parse$  s    O""6#D#D#FG#D DO!'!1!1!3DeS!#DO33E: !Z//Z0@AY --d9o>\  Y&&v'?'?@^'_`#'Z %+%5%5%7\"	s   !B. .AC=<C=c                 P    |j                  d      | _        t        |   |i | y )Nr   )pop	_datetimesuperrd   r   argskwr5   s      r!   rd   zDateHeader.init9  s$    
+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   r`   rd   rD   r   __classcell__r5   s   @r!   r   r     sL     I   7 78L? ?("  r#   r   c                       e Zd ZdZy)UniqueDateHeaderrP   Nr   rE   r#   r!   r   r   B  r   r#   r   c                   b     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                 6    t        j                  |       \  }} |S r%   )r   get_address_list)rg   address_lists     r!   r   zAddressHeader.value_parserK  s    $55e<er#   c                    t        |t              r| j                  |      x|d<   }g }|j                  D ]t  }|j	                  t        |j                  |j                  D cg c]9  }t        |j                  xs d|j                  xs d|j                  xs d      ; c}             v t        |j                        }n9t        |d      s|g}|D cg c]  }t        |d      st        d |g      n| }}g }||d<   ||d<   dj                  |D cg c]  }t        |       c}      |d<   d|vr| j                  |d         |d<   y y c c}w c c}w c c}w )	Nrm   r
   __iter__rK   groupsr^   rQ   r_   )r=   rS   r   rK   r~   rG   r   all_mailboxesr   r   r   listr   hasattrr   )	re   rg   rh   r   r   addrmbr^   items	            r!   r`   zAddressHeader.parseQ  sy   eS! 140@0@0GGDF$.. EeD$5$5 04/A/A%C *, &-R__-B-/]]-@b-/YY_"&> %CD EE <334G 5*- 167(, 29{1KeD4&)/34 7F 7 GX!Y))6$B4SY$BCYt#!$!1!1$y/!BD $!%C7 %Cs   !>E"EEc                 p    t        |j                  d            | _        d | _        t	        |   |i | y )Nr   )rI   r   _groupsrJ   r   rd   r   s      r!   rd   zAddressHeader.initm  s0    RVVH-.d!b!r#   c                     | j                   S r%   )r   r'   s    r!   r   zAddressHeader.groupsr  r,   r#   c                 t    | j                   !t        d | j                  D              | _         | j                   S )Nc              3   B   K   | ]  }|j                   D ]  }|   y wr%   )rK   )rT   groupaddresss      r!   rV   z*AddressHeader.addresses.<locals>.<genexpr>y  s1      $L;@??$L07 %, $LG $Ls   )rJ   rI   r   r'   s    r!   rK   zAddressHeader.addressesv  s5    ??"# $L $L LDOr#   )r6   rB   rC   r   r   r   r   r`   rd   rD   r   rK   r   r   s   @r!   r   r   G  s]    I 
 C C6"
    r#   r   c                       e Zd ZdZy)UniqueAddressHeaderrP   Nr   rE   r#   r!   r   r   ~  r   r#   r   c                       e Zd Zed        Zy)SingleAddressHeaderc                     t        | j                        dk7  r$t        dj                  | j                              | j                  d   S )NrP   z9value of single address header {} is not a single addressr   )rX   rK   r   r   rf   r'   s    r!   r   zSingleAddressHeader.address  sB    t~~! #$*F499$57 7~~a  r#   N)r6   rB   rC   rD   r   rE   r#   r!   r   r     s    ! !r#   r   c                       e Zd ZdZy)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                 :   | j                  |      x|d<   }t        |      |d<   |d   j                  |j                         |j                  d n|j
                  |d<   |j                  |d<   |j                  dj                  |d   |d         |d<   y d |d<   y )Nrm   r_   r^   majorminorz{}.{}version)r   rS   extendr   r   r   r   re   rg   rh   rm   s       r!   r`   zMIMEVersionHeader.parse  s    *-*:*:5*AA\Zj/YYz556 * 0 0 8j>N>NW"((W'%nnT']DMJDO"DOr#   c                     |j                  d      | _        |j                  d      | _        |j                  d      | _        t	        |   |i | y )Nr   r   r   )r   _version_major_minorr   rd   r   s      r!   rd   zMIMEVersionHeader.init  sB    y)ffWoffWo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   r`   rd   rD   r   r   r   r   r   s   @r!   r   r     sk    I 9 9:L	# 	#"      r#   r   c                   B     e Zd ZdZed        Z fdZed        Z xZ	S )ParameterizedMIMEHeaderrP   c                 f   | j                  |      x|d<   }t        |      |d<   |d   j                  |j                         |j                  i |d<   y |j                  D ci c]<  \  }}t        j                  |      j                         t        j                  |      > c}}|d<   y c c}}w )Nrm   r_   r^   params)r   rS   r   r   r   r   rb   lower)re   rg   rh   rm   rf   s        r!   r`   zParameterizedMIMEHeader.parse  s    *-*:*:5*AA\Zj/YYz556$DN
 3=2C2CE#.4 $ood399;$)OOE$:; EDN Es   $AB-c                 P    |j                  d      | _        t        |   |i | y )Nr   )r   _paramsr   rd   r   s      r!   rd   zParameterizedMIMEHeader.init  s$    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   r`   rd   rD   r   r   r   s   @r!   r   r     s7    
 I
E 
E" . .r#   r   c                   r     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        |   |i | t        j                  | j                  j
                        | _        t        j                  | j                  j                        | _        y r%   )	r   rd   r   rb   rk   maintype	_maintypesubtype_subtyper   s      r!   rd   zContentTypeHeader.init  sL    d!b!)9)9)B)BC(8(8(@(@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   rd   rD   r   r   r   r   r   s   @r!   r   r     sU     @ @ALB
     2 2r#   r   c                   R     e Zd Z eej
                        Z fdZed        Z	 xZ
S )ContentDispositionHeaderc                     t        |   |i | | j                  j                  }||| _        y t	        j
                  |      | _        y r%   )r   rd   rk   content_dispositionr   rb   _content_disposition)r   r   r   cdr5   s       r!   rd   zContentDispositionHeader.init  sA    d!b!11*,*B!%//":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   rd   rD   r   r   r   s   @r!   r   r     s-     G GHLN
 ) )r#   r   c                   f     e Zd ZdZ eej                        Zed        Z	 fdZ
ed        Z xZS )ContentTransferEncodingHeaderrP   c                     | j                  |      x|d<   }t        |      |d<   |d   j                  |j                         y Nrm   r_   r^   r   rS   r   r   r   s       r!   r`   z#ContentTransferEncodingHeader.parse  A    *-*:*:5*AA\Zj/YYz556r#   c                     t        |   |i | t        j                  | j                  j
                        | _        y r%   )r   rd   r   rb   rk   cte_cter   s      r!   rd   z"ContentTransferEncodingHeader.init  s0    d!b!OOD$4$4$8$89	r#   c                     | j                   S r%   )r   r'   s    r!   r   z!ContentTransferEncodingHeader.cte  s    yyr#   )r6   rB   rC   r   r   r   &parse_content_transfer_encoding_headerr   r   r`   rd   rD   r   r   r   s   @r!   r   r     sC    I M MNL7 7
:  r#   r   c                   D    e Zd ZdZ eej                        Zed        Z	y)MessageIDHeaderrP   c                     | j                  |      x|d<   }t        |      |d<   |d   j                  |j                         y r   r   r   s       r!   r`   zMessageIDHeader.parse  r   r#   N)
r6   rB   rC   r   r   r   parse_message_idr   r   r`   rE   r#   r!   r   r     s)    I 7 78L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                   .    e Zd Z	 eedfdZd Zd Zd Zy)HeaderRegistryTc                 t    	 i | _         || _        || _        |r | j                   j                  t               y y r%   )registry
base_classdefault_classupdate_default_header_map)r   r  r  use_default_maps       r!   r"   zHeaderRegistry.__init__6  s:    		 $*MM  !45 r#   c                 @    	 || j                   |j                         <   y r%   )r  r   r   rf   re   s      r!   map_to_typezHeaderRegistry.map_to_typeH  s    	 '*djjl#r#   c                     | j                   j                  |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  sE    mm

d.@.@AC$sDOO&<bAAr#   c                     	  | |   ||      S r%   rE   )r   rf   rg   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  s#    /",<N'+6$*B
'r#   r  N)typesr   emailr   r   r   r   r   rG   rS   r\   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rE   r#   r!   <module>r     s  
 #   0Y- Y-x/3 /3ha* a*H92 21 
+ +\z 
4 4n- 
!- ! 3 
" "J. .:2/ 2,)6 ) *	7 	7$<
$4 J $4	
 $= $7 	$7 M 	$7 M 
$7 M $7 M $7  $5!" $5#$ %=$A$3) .*' *'r#   