509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \O  ã               @   sf  d dl mZ d dlmZ d dlmZ d dlmZ G dd„ dƒZG dd„ dƒZG d	d
„ d
e	ƒZ
dd„ ZG dd„ dƒZG dd„ deƒZG dd„ dƒZG dd„ deƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZG dd „ d ƒZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&ƒZeeeeeeeeeeeeeeeeeeed'œZG d(d)„ d)ƒZd*S )+é    )ÚMappingProxyType)Úutils)Úerrors)Ú_header_value_parserc               @   s^   e Zd Zddd„Zedd„ ƒZedd„ ƒZed	d
„ ƒZedd„ ƒZdd„ Z	dd„ Z
dd„ ZdS )ÚAddressÚ Nc             C   sl   |d k	rV|s|rt dƒ‚tj|ƒ\}}|r:tdj||ƒƒ‚|jrJ|jd ‚|j}|j}|| _|| _	|| _
d S )Nz=addrspec specified when username and/or domain also specifiedz6Invalid addr_spec; only '{}' could be parsed from '{}'r   )Ú	TypeErrorÚparserZget_addr_specÚ
ValueErrorÚformatÚall_defectsÚ
local_partÚdomainÚ_display_nameÚ	_usernameÚ_domain)ÚselfÚdisplay_nameÚusernamer   Ú	addr_specZa_sÚrest© r   ú,/usr/lib64/python3.6/email/headerregistry.pyÚ__init__   s    

zAddress.__init__c             C   s   | j S )N)r   )r   r   r   r   r   7   s    zAddress.display_namec             C   s   | j S )N)r   )r   r   r   r   r   ;   s    zAddress.usernamec             C   s   | j S )N)r   )r   r   r   r   r   ?   s    zAddress.domainc             C   sT   t | jƒ}t|ƒt|tj ƒkr.tj| jƒ}n| j}| jrH|d | j S |sPdS |S )Nú@z<>)Úsetr   Úlenr	   ZDOT_ATOM_ENDSÚquote_stringr   )r   ÚnamesetZlpr   r   r   r   C   s    
zAddress.addr_specc             C   s   dj | jj| j| j| jƒS )Nz1{}(display_name={!r}, username={!r}, domain={!r}))r   Ú	__class__Ú__name__r   r   r   )r   r   r   r   Ú__repr__S   s    zAddress.__repr__c             C   s^   t | jƒ}t|ƒt|tj ƒkr.tj| jƒ}n| j}|rX| jdkrFdn| j}dj||ƒS | jS )Nz<>r   z{} <{}>)r   r   r   r	   ÚSPECIALSr   r   r   )r   r   Údispr   r   r   r   Ú__str__X   s    
zAddress.__str__c             C   s8   t |ƒt | ƒkrdS | j|jko6| j|jko6| j|jkS )NF)Útyper   r   r   )r   Úotherr   r   r   Ú__eq__c   s
    zAddress.__eq__)r   r   r   N)r    Ú
__module__Ú__qualname__r   Úpropertyr   r   r   r   r!   r$   r'   r   r   r   r   r      s   
%r   c               @   sF   e Zd Zddd„Zedd„ ƒZedd„ ƒZdd	„ Zd
d„ Zdd„ Z	dS )ÚGroupNc             C   s   || _ |rt|ƒntƒ | _d S )N)r   ÚtupleÚ
_addresses)r   r   Ú	addressesr   r   r   r   m   s    zGroup.__init__c             C   s   | j S )N)r   )r   r   r   r   r      s    zGroup.display_namec             C   s   | j S )N)r-   )r   r   r   r   r.   ƒ   s    zGroup.addressesc             C   s   dj | jj| j| jƒS )Nz${}(display_name={!r}, addresses={!r})r   r   r    r   r.   )r   r   r   r   r!   ‡   s    zGroup.__repr__c             C   sŽ   | j d kr&t| jƒdkr&t| jd ƒS | j }|d k	r\t|ƒ}t|ƒt|tj ƒkr\tj|ƒ}djdd„ | jD ƒƒ}|r~d| n|}dj	||ƒS )Né   r   z, c             s   s   | ]}t |ƒV  qd S )N)Ústr)Ú.0Úxr   r   r   ú	<genexpr>”   s    z Group.__str__.<locals>.<genexpr>ú z{}:{};)
r   r   r.   r0   r   r	   r"   r   Újoinr   )r   r#   r   Zadrstrr   r   r   r$   Œ   s    
zGroup.__str__c             C   s,   t |ƒt | ƒkrdS | j|jko*| j|jkS )NF)r%   r   r.   )r   r&   r   r   r   r'   ˜   s    zGroup.__eq__)NN)
r    r(   r)   r   r*   r   r.   r!   r$   r'   r   r   r   r   r+   k   s   
r+   c               @   sP   e Zd Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZd	d
„ Ze	dd„ ƒZ
dd„ ZdS )Ú
BaseHeaderc             C   s\   dg i}| j ||ƒ tj|d ƒr4tj|d ƒ|d< tj| |d ƒ}|d= |j|f|Ž |S )NÚdefectsÚdecoded)Úparser   Z_has_surrogatesÚ	_sanitizer0   Ú__new__Úinit)ÚclsÚnameÚvalueÚkwdsr   r   r   r   r;   Ã   s    zBaseHeader.__new__c            C   s   || _ || _|| _d S )N)Ú_nameÚ_parse_treeÚ_defects)r   r>   Ú
parse_treer7   r   r   r   r<   Í   s    zBaseHeader.initc             C   s   | j S )N)rA   )r   r   r   r   r>   Ò   s    zBaseHeader.namec             C   s
   t | jƒS )N)r,   rC   )r   r   r   r   r7   Ö   s    zBaseHeader.defectsc             C   s   t | jj| jjt| ƒf| jfS )N)Ú_reconstruct_headerr   r    Ú	__bases__r0   Ú__dict__)r   r   r   r   Ú
__reduce__Ú   s
    zBaseHeader.__reduce__c             C   s   t j| |ƒS )N)r0   r;   )r=   r?   r   r   r   Ú_reconstructä   s    zBaseHeader._reconstructc            C   s`   t jt jt j| jdƒt jddƒgƒgƒ}| jrH|jt jt jddƒgƒƒ |j| jƒ |j	|d�S )Nzheader-nameú:z
header-sepr4   Zfws)Úpolicy)
r	   ZHeaderZHeaderLabelZValueTerminalr>   rB   ÚappendZCFWSListZWhiteSpaceTerminalÚfold)r   rK   Úheaderr   r   r   rM   è   s    zBaseHeader.foldN)r    r(   r)   r;   r<   r*   r>   r7   rH   ÚclassmethodrI   rM   r   r   r   r   r6   ¡   s   "

r6   c             C   s   t | |i ƒj|ƒS )N)r%   rI   )Zcls_nameÚbasesr?   r   r   r   rE     s    rE   c               @   s&   e Zd ZdZeejƒZedd„ ƒZ	dS )ÚUnstructuredHeaderNc             C   s"   | j |ƒ|d< t|d ƒ|d< d S )NrD   r8   )Úvalue_parserr0   )r=   r?   r@   r   r   r   r9     s    zUnstructuredHeader.parse)
r    r(   r)   Ú	max_countÚstaticmethodr	   Úget_unstructuredrR   rO   r9   r   r   r   r   rQ   	  s   
rQ   c               @   s   e Zd ZdZdS )ÚUniqueUnstructuredHeaderr/   N)r    r(   r)   rS   r   r   r   r   rV     s   rV   c                   sB   e Zd ZdZeejƒZedd„ ƒZ	‡ fdd„Z
edd„ ƒZ‡  ZS )Ú
DateHeaderNc             C   sz   |s6|d j tjƒ ƒ d |d< d|d< tjƒ |d< d S t|tƒrJtj|ƒ}||d< tj	|d ƒ|d< | j
|d ƒ|d< d S )Nr7   Údatetimer   r8   rD   )rL   r   ZHeaderMissingRequiredValuer	   Z	TokenListÚ
isinstancer0   r   Zparsedate_to_datetimeZformat_datetimerR   )r=   r?   r@   r   r   r   r9   )  s    

zDateHeader.parsec                s   |j dƒ| _tƒ j||Ž d S )NrX   )ÚpopÚ	_datetimeÚsuperr<   )r   ÚargsÚkw)r   r   r   r<   7  s    zDateHeader.initc             C   s   | j S )N)r[   )r   r   r   r   rX   ;  s    zDateHeader.datetime)r    r(   r)   rS   rT   r	   rU   rR   rO   r9   r<   r*   rX   Ú__classcell__r   r   )r   r   rW     s
   
rW   c               @   s   e Zd ZdZdS )ÚUniqueDateHeaderr/   N)r    r(   r)   rS   r   r   r   r   r`   @  s   r`   c                   sP   e Zd ZdZedd„ ƒZedd„ ƒZ‡ fdd„Ze	dd	„ ƒZ
e	d
d„ ƒZ‡  ZS )ÚAddressHeaderNc             C   s   t j| ƒ\}} |S )N)r	   Zget_address_list)r?   Úaddress_listr   r   r   rR   I  s    zAddressHeader.value_parserc             C   sÂ   t |tƒrZ| j|ƒ |d< }g }x,|jD ]"}|jt|jdd„ |jD ƒƒƒ q(W t|j	ƒ}n"t
|dƒsj|g}dd„ |D ƒ}g }||d< ||d< djd	d„ |D ƒƒ|d
< d|kr¾| j|d
 ƒ|d< d S )NrD   c             S   s*   g | ]"}t |jpd |jpd |jp"d ƒ‘qS )r   )r   r   r   r   )r1   Zmbr   r   r   ú
<listcomp>X  s   z'AddressHeader.parse.<locals>.<listcomp>Ú__iter__c             S   s&   g | ]}t |d ƒstd|gƒn|‘qS )r.   N)Úhasattrr+   )r1   Úitemr   r   r   rc   a  s   Úgroupsr7   z, c             S   s   g | ]}t |ƒ‘qS r   )r0   )r1   rf   r   r   r   rc   g  s    r8   )rY   r0   rR   r.   rL   r+   r   Zall_mailboxesÚlistr   re   r5   )r=   r?   r@   rb   rg   Zaddrr7   r   r   r   r9   O  s$    


zAddressHeader.parsec                s(   t |jdƒƒ| _d | _tƒ j||Ž d S )Nrg   )r,   rZ   Ú_groupsr-   r\   r<   )r   r]   r^   )r   r   r   r<   k  s    zAddressHeader.initc             C   s   | j S )N)ri   )r   r   r   r   rg   p  s    zAddressHeader.groupsc             C   s&   | j d kr tdd„ | jD ƒƒ| _ | j S )Nc             S   s   g | ]}|j D ]}|‘qqS r   )r.   )r1   ÚgroupÚaddressr   r   r   rc   w  s    z+AddressHeader.addresses.<locals>.<listcomp>)r-   r,   ri   )r   r   r   r   r.   t  s    
zAddressHeader.addresses)r    r(   r)   rS   rT   rR   rO   r9   r<   r*   rg   r.   r_   r   r   )r   r   ra   E  s   ra   c               @   s   e Zd ZdZdS )ÚUniqueAddressHeaderr/   N)r    r(   r)   rS   r   r   r   r   rl   |  s   rl   c               @   s   e Zd Zedd„ ƒZdS )ÚSingleAddressHeaderc             C   s(   t | jƒdkrtdj| jƒƒ‚| jd S )Nr/   z9value of single address header {} is not a single addressr   )r   r.   r
   r   r>   )r   r   r   r   rk   ƒ  s    
zSingleAddressHeader.addressN)r    r(   r)   r*   rk   r   r   r   r   rm   �  s   rm   c               @   s   e Zd ZdZdS )ÚUniqueSingleAddressHeaderr/   N)r    r(   r)   rS   r   r   r   r   rn   ‹  s   rn   c                   sZ   e Zd ZdZeejƒZedd„ ƒZ	‡ fdd„Z
edd„ ƒZedd	„ ƒZed
d„ ƒZ‡  ZS )ÚMIMEVersionHeaderr/   c             C   s€   | j |ƒ |d< }t|ƒ|d< |d j|jƒ |jd kr<d n|j|d< |j|d< |jd k	rtdj|d |d ƒ|d< nd |d< d S )NrD   r8   r7   ÚmajorÚminorz{}.{}Úversion)rR   r0   Úextendr   rq   rp   r   )r=   r?   r@   rD   r   r   r   r9   –  s    

zMIMEVersionHeader.parsec                s6   |j dƒ| _|j dƒ| _|j dƒ| _tƒ j||Ž d S )Nrr   rp   rq   )rZ   Ú_versionÚ_majorÚ_minorr\   r<   )r   r]   r^   )r   r   r   r<   ¢  s    zMIMEVersionHeader.initc             C   s   | j S )N)ru   )r   r   r   r   rp   ¨  s    zMIMEVersionHeader.majorc             C   s   | j S )N)rv   )r   r   r   r   rq   ¬  s    zMIMEVersionHeader.minorc             C   s   | j S )N)rt   )r   r   r   r   rr   °  s    zMIMEVersionHeader.version)r    r(   r)   rS   rT   r	   Zparse_mime_versionrR   rO   r9   r<   r*   rp   rq   rr   r_   r   r   )r   r   ro   �  s   
ro   c                   s8   e Zd ZdZedd„ ƒZ‡ fdd„Zedd„ ƒZ‡  Z	S )ÚParameterizedMIMEHeaderr/   c             C   sZ   | j |ƒ |d< }t|ƒ|d< |d j|jƒ |jd krBi |d< ndd„ |jD ƒ|d< d S )NrD   r8   r7   Úparamsc             S   s&   i | ]\}}t j|ƒt j|ƒjƒ “qS r   )r   r:   Úlower)r1   r>   r?   r   r   r   ú
<dictcomp>Å  s   z1ParameterizedMIMEHeader.parse.<locals>.<dictcomp>)rR   r0   rs   r   rx   )r=   r?   r@   rD   r   r   r   r9   ¼  s    

zParameterizedMIMEHeader.parsec                s   |j dƒ| _tƒ j||Ž d S )Nrx   )rZ   Ú_paramsr\   r<   )r   r]   r^   )r   r   r   r<   É  s    zParameterizedMIMEHeader.initc             C   s
   t | jƒS )N)r   r{   )r   r   r   r   rx   Í  s    zParameterizedMIMEHeader.params)
r    r(   r)   rS   rO   r9   r<   r*   rx   r_   r   r   )r   r   rw   µ  s   rw   c                   sJ   e Zd ZeejƒZ‡ fdd„Zedd„ ƒZ	edd„ ƒZ
edd„ ƒZ‡  ZS )	ÚContentTypeHeaderc                s2   t ƒ j||Ž tj| jjƒ| _tj| jjƒ| _d S )N)	r\   r<   r   r:   rB   ÚmaintypeÚ	_maintypeÚsubtypeÚ_subtype)r   r]   r^   )r   r   r   r<   Ö  s    zContentTypeHeader.initc             C   s   | j S )N)r~   )r   r   r   r   r}   Û  s    zContentTypeHeader.maintypec             C   s   | j S )N)r€   )r   r   r   r   r   ß  s    zContentTypeHeader.subtypec             C   s   | j d | j S )Nú/)r}   r   )r   r   r   r   Úcontent_typeã  s    zContentTypeHeader.content_type)r    r(   r)   rT   r	   Zparse_content_type_headerrR   r<   r*   r}   r   r‚   r_   r   r   )r   r   r|   Ò  s
   
r|   c                   s2   e Zd ZeejƒZ‡ fdd„Zedd„ ƒZ	‡  Z
S )ÚContentDispositionHeaderc                s2   t ƒ j||Ž | jj}|d kr"|ntj|ƒ| _d S )N)r\   r<   rB   Úcontent_dispositionr   r:   Ú_content_disposition)r   r]   r^   Zcd)r   r   r   r<   ì  s    zContentDispositionHeader.initc             C   s   | j S )N)r…   )r   r   r   r   r„   ñ  s    z,ContentDispositionHeader.content_disposition)r    r(   r)   rT   r	   Z parse_content_disposition_headerrR   r<   r*   r„   r_   r   r   )r   r   rƒ   è  s   
rƒ   c                   sB   e Zd ZdZeejƒZedd„ ƒZ	‡ fdd„Z
edd„ ƒZ‡  ZS )ÚContentTransferEncodingHeaderr/   c             C   s2   | j |ƒ |d< }t|ƒ|d< |d j|jƒ d S )NrD   r8   r7   )rR   r0   rs   r   )r=   r?   r@   rD   r   r   r   r9   ü  s    z#ContentTransferEncodingHeader.parsec                s"   t ƒ j||Ž tj| jjƒ| _d S )N)r\   r<   r   r:   rB   ÚcteÚ_cte)r   r]   r^   )r   r   r   r<     s    z"ContentTransferEncodingHeader.initc             C   s   | j S )N)rˆ   )r   r   r   r   r‡     s    z!ContentTransferEncodingHeader.cte)r    r(   r)   rS   rT   r	   Z&parse_content_transfer_encoding_headerrR   rO   r9   r<   r*   r‡   r_   r   r   )r   r   r†   ö  s
   
r†   )ZsubjectZdatezresent-datez	orig-dateZsenderzresent-senderZtoz	resent-toZccz	resent-ccZbccz
resent-bccÚfromzresent-fromzreply-tozmime-versionzcontent-typezcontent-dispositionzcontent-transfer-encodingc               @   s4   e Zd Zeedfdd„Zdd„ Zdd„ Zdd	„ Zd
S )ÚHeaderRegistryTc             C   s&   i | _ || _|| _|r"| j jtƒ d S )N)ÚregistryÚ
base_classÚdefault_classÚupdateÚ_default_header_map)r   rŒ   r�   Zuse_default_mapr   r   r   r   '  s
    zHeaderRegistry.__init__c             C   s   || j |jƒ < d S )N)r‹   ry   )r   r>   r=   r   r   r   Úmap_to_type9  s    zHeaderRegistry.map_to_typec             C   s,   | j j|jƒ | jƒ}td|j || jfi ƒS )NÚ_)r‹   Úgetry   r�   r%   r    rŒ   )r   r>   r=   r   r   r   Ú__getitem__?  s    zHeaderRegistry.__getitem__c             C   s   | | ||ƒS )Nr   )r   r>   r?   r   r   r   Ú__call__C  s    
zHeaderRegistry.__call__N)	r    r(   r)   r6   rQ   r   r�   r“   r”   r   r   r   r   rŠ   #  s
   rŠ   N)Útypesr   Zemailr   r   r   r	   r   r+   r0   r6   rE   rQ   rV   rW   r`   ra   rl   rm   rn   ro   rw   r|   rƒ   r†   r�   rŠ   r   r   r   r   Ú<module>
   sP   [6d'7
%