B
    0*™\KE  ã               @   sÚ   d dddgZ ddlZddlZdZdZdZd	d
ddddddddddddddddddddddgZd d!d"d#d$d%d&gZddddd'd(d)d'd*d)d+d*d,d+d-œZd.d„ Z	d/d0„ Z
d1d„ Zd2d „ Zd3d„ ZG d4d5„ d5ƒZG d6d7„ d7eƒZdS )8Ú	mktime_tzÚ	parsedateÚparsedate_tzÚquoteé    Nú Ú z, ZjanZfebZmarZaprZmayZjunZjulZaugÚsepÚoctZnovZdecZjanuaryZfebruaryZmarchZaprilZjuneZjulyZaugustZ	septemberZoctoberZnovemberZdecemberZmonZtueZwedZthuZfriZsatZsunipþÿÿiÔþÿÿiþÿÿi¨ýÿÿiDýÿÿiàüÿÿ)ZUTZUTCZGMTÚZZASTZADTZESTZEDTZCSTZCDTZMSTZMDTZPSTZPDTc             C   s,   t | ƒ}|sd S |d d kr$d|d< t|ƒS )Né	   r   )Ú_parsedate_tzÚtuple)ÚdataÚres© r   ú;C:\ALexclude\prg\programme\Python37\Lib\email\_parseaddr.pyr   -   s    c          
   C   s¼  | sd S |   ¡ } | d  d¡s.| d  ¡ tkr6| d= n.| d  d¡}|dkrd| d |d d … | d< t| ƒdkrš| d   d¡}t|ƒdkrš|| dd …  } t| ƒdkrþ| d }| d¡}|dkrÊ| d¡}|dkrô|d |… ||d … g| dd …< n
|  d	¡ t| ƒd
k rd S | d d
… } | \}}}}}| ¡ }|tkrX|| ¡  }}|tkrXd S t 	|¡d }|dkrx|d8 }|d dkr’|d d… }| d¡}|dkr°|| }}|d dkrÊ|d d… }|d  
¡ sâ|| }}|d dkrü|d d… }|  d¡}t|ƒdkr"|\}	}
d}n~t|ƒdkr<|\}	}
}ndt|ƒdkrœd|d krœ|d   d¡}t|ƒdkr‚|\}	}
d}nt|ƒdkr |\}	}
}nd S y,t|ƒ}t|ƒ}t|	ƒ}	t|
ƒ}
t|ƒ}W n tk
râ   d S X |dk r
|dkr|d7 }n|d7 }d }| ¡ }|tkr*t| }n>yt|ƒ}W n tk
rL   Y nX |dkrh| d¡rhd }|r¤|dk r„d}| }nd}||d d |d d   }||||	|
|ddd|g
S )Nr   ú,é   é   ú-é   ú+éÿÿÿÿr   é   é   ú:é   Ú0Ú.éd   éD   il  iÐ  i  é<   )ÚsplitÚendswithÚlowerÚ	_daynamesÚrfindÚlenÚfindÚappendÚ_monthnamesÚindexÚisdigitÚintÚ
ValueErrorÚupperÚ
_timezonesÚ
startswith)r   ÚiZstuffÚsÚddZmmZyyZtmZtzZthhZtmmZtssZtzoffsetZtzsignr   r   r   r   9   s¬    


"














r   c             C   s&   t | ƒ}t|tƒr|d d… S |S d S )Nr   )r   Ú
isinstancer   )r   Útr   r   r   r   ®   s    
c             C   s<   | d d kr"t  | d d… d ¡S t | ¡}|| d  S d S )Nr   é   )r   )ÚtimeZmktimeÚcalendarZtimegm)r   r6   r   r   r   r   ·   s    
c             C   s   |   dd¡  dd¡S )Nú\z\\ú"z\")Úreplace)Ústrr   r   r   r   Á   s    c               @   sx   e Zd Z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
dd„ Zdd„ Zdd„ Zddd„Zdd„ ZdS )ÚAddrlistClassc             C   sZ   d| _ d| _d| _d| _| j| j | _| j | j | j | _| j dd¡| _|| _g | _	d S )Nz()<>@,:;."[]r   z 	z
r   r   )
ÚspecialsÚposÚLWSZCRÚFWSÚatomendsr<   Ú
phraseendsÚfieldÚcommentlist)ÚselfrE   r   r   r   Ú__init__Õ   s    zAddrlistClass.__init__c             C   s   g }x€| j t| jƒk r„| j| j  | jd kr^| j| j  dkrN| | j| j  ¡ |  j d7  _ q| j| j  dkr€| j |  ¡ ¡ qP qW t |¡S )Nz
r   ú()	r@   r'   rE   rA   r)   rF   Ú
getcommentÚEMPTYSTRINGÚjoin)rG   Zwslistr   r   r   Úgotonextè   s    zAddrlistClass.gotonextc             C   s>   g }x4| j t| jƒk r8|  ¡ }|r,||7 }q| d¡ qW |S )N)r   r   )r@   r'   rE   Ú
getaddressr)   )rG   ÚresultZadr   r   r   Úgetaddrlistö   s    
zAddrlistClass.getaddrlistc             C   sø  g | _ |  ¡  | j}| j }|  ¡ }|  ¡  g }| jt| jƒkr\|rXt | j ¡|d fg}n^| j| j dkr–|| _|| _ |  ¡ }t | j ¡|fg}n$| j| j dkr g }t| jƒ}|  jd7  _xô| jt| jƒk r|  ¡  | j|k r| j| j dkr|  jd7  _P ||  	¡  }qÆW nš| j| j dkrz|  
¡ }| j rht |¡d d | j ¡ d	 |fg}nt |¡|fg}n@|r˜t | j ¡|d fg}n"| j| j | jkrº|  jd7  _|  ¡  | jt| jƒk rô| j| j d
krô|  jd7  _|S )Nr   z.@r   r   ú;ú<z (r   ú)r   )rF   rM   r@   Úgetphraselistr'   rE   ÚSPACErL   ÚgetaddrspecrN   Úgetrouteaddrr?   )rG   ZoldposZoldclÚplistZ
returnlistZaddrspecZfieldlenZ	routeaddrr   r   r   rN     sL    
&$zAddrlistClass.getaddressc             C   sä   | j | j dkrd S d}|  jd7  _|  ¡  d}x¬| jt| j ƒk rÞ|rV|  ¡  d}n~| j | j dkrx|  jd7  _P n\| j | j dkrœ|  jd7  _d}n8| j | j dkr¼|  jd7  _n|  ¡ }|  jd7  _P |  ¡  q4W |S )	NrR   Fr   r   ú>ú@Tr   )rE   r@   rM   r'   Ú	getdomainrV   )rG   ZexpectrouteZadlistr   r   r   rW   ?  s.    zAddrlistClass.getrouteaddrc             C   sJ  g }|   ¡  xÜ| jt| jƒk rèd}| j| j dkrh|rJ|d  ¡ sJ| ¡  | d¡ |  jd7  _d}nd| j| j dkr| dt|  ¡ ƒ ¡ n<| j| j | j	kr¾|rº|d  ¡ sº| ¡  P n| |  
¡ ¡ |   ¡ }|r|r| |¡ qW | jt| jƒks| j| j dkrt |¡S | d¡ |  jd7  _|   ¡  t |¡|  ¡  S )	NTr   r   r   Fr;   z"%s"rZ   )rM   r@   r'   rE   ÚstripÚpopr)   r   ÚgetquoterC   ÚgetatomrK   rL   r[   )rG   ZaslistZpreserve_wsZwsr   r   r   rV   _  s4    
$

zAddrlistClass.getaddrspecc             C   sÖ   g }xÆ| j t| jƒk rÊ| j| j  | jkr8|  j d7  _ q| j| j  dkrZ| j |  ¡ ¡ q| j| j  dkrz| |  ¡ ¡ q| j| j  dkr¤|  j d7  _ | d¡ q| j| j  | jkrºP q| |  	¡ ¡ qW t
 |¡S )Nr   rI   ú[r   )r@   r'   rE   rA   rF   r)   rJ   ÚgetdomainliteralrC   r_   rK   rL   )rG   Zsdlistr   r   r   r[   €  s    zAddrlistClass.getdomainTc             C   sæ   | j | j |krdS dg}d}|  jd7  _x®| jt| j ƒk rÚ|rZ| | j | j ¡ d}np| j | j |kr||  jd7  _P nN|r¢| j | j dkr¢| |  ¡ ¡ q.n(| j | j dkr¸d}n| | j | j ¡ |  jd7  _q.W t |¡S )Nr   Fr   rI   r:   T)rE   r@   r'   r)   rJ   rK   rL   )rG   Z	begincharZendcharsZallowcommentsZslistr   r   r   r   Úgetdelimited“  s(    zAddrlistClass.getdelimitedc             C   s   |   ddd¡S )Nr;   z"F)rb   )rG   r   r   r   r^   ¸  s    zAddrlistClass.getquotec             C   s   |   ddd¡S )NrI   z)T)rb   )rG   r   r   r   rJ   ¼  s    zAddrlistClass.getcommentc             C   s   d|   ddd¡ S )Nz[%s]r`   z]F)rb   )rG   r   r   r   ra   À  s    zAddrlistClass.getdomainliteralNc             C   sh   dg}|d kr| j }xH| jt| jƒk r\| j| j |kr:P n| | j| j ¡ |  jd7  _qW t |¡S )Nr   r   )rC   r@   r'   rE   r)   rK   rL   )rG   rC   Zatomlistr   r   r   r_   Ä  s    zAddrlistClass.getatomc             C   sª   g }x | j t| jƒk r¤| j| j  | jkr8|  j d7  _ q| j| j  dkrX| |  ¡ ¡ q| j| j  dkrz| j |  ¡ ¡ q| j| j  | jkrP q| |  	| j¡¡ qW |S )Nr   r;   rI   )
r@   r'   rE   rB   r)   r^   rF   rJ   rD   r_   )rG   rX   r   r   r   rT   Ø  s    zAddrlistClass.getphraselist)T)N)Ú__name__Ú
__module__Ú__qualname__rH   rM   rP   rN   rW   rV   r[   rb   r^   rJ   ra   r_   rT   r   r   r   r   r>   Ë   s   
; !
%
r>   c               @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚAddressListc             C   s&   t  | |¡ |r|  ¡ | _ng | _d S )N)r>   rH   rP   Úaddresslist)rG   rE   r   r   r   rH   ñ  s    zAddressList.__init__c             C   s
   t | jƒS )N)r'   rg   )rG   r   r   r   Ú__len__ø  s    zAddressList.__len__c             C   sB   t d ƒ}| jd d … |_x$|jD ]}|| jkr |j |¡ q W |S )N)rf   rg   r)   )rG   ÚotherÚnewaddrÚxr   r   r   Ú__add__û  s    
zAddressList.__add__c             C   s*   x$|j D ]}|| j kr| j  |¡ qW | S )N)rg   r)   )rG   ri   rk   r   r   r   Ú__iadd__  s    
zAddressList.__iadd__c             C   s2   t d ƒ}x$| jD ]}||jkr|j |¡ qW |S )N)rf   rg   r)   )rG   ri   rj   rk   r   r   r   Ú__sub__  s
    
zAddressList.__sub__c             C   s*   x$|j D ]}|| j kr| j  |¡ qW | S )N)rg   Úremove)rG   ri   rk   r   r   r   Ú__isub__  s    
zAddressList.__isub__c             C   s
   | j | S )N)rg   )rG   r+   r   r   r   Ú__getitem__  s    zAddressList.__getitem__N)
rc   rd   re   rH   rh   rl   rm   rn   rp   rq   r   r   r   r   rf   ï  s   	rf   )Ú__all__r8   r9   rU   rK   Z
COMMASPACEr*   r%   r0   r   r   r   r   r   r>   rf   r   r   r   r   Ú<module>
   s6   

u	

  &