OwlCyberSecurity - MANAGER
Edit File: _parseaddr.cpython-37.opt-1.pyc
B ����� fE������������������@���s����d�Z�ddddgZddlZddlZdZdZd Zd ddd dddddddddddddddddddd gZd!d"d#d$d%d&d'gZddddd(d)d*d(d+d*d,d+d-d,d.�Z d/d��Z d0d1��Zd2d��Zd3d��Z d4d��ZG�d5d6��d6�ZG�d7d8��d8e�ZdS�)9zcEmail address parsing code. Lifted directly from rfc822.py. This should eventually be rewritten. � mktime_tz� parsedate�parsedate_tz�quote�����N� ��z, ZjanZfebZmarZaprZmayZjunZjulZaug�sep�octZnovZdecZjanuaryZfebruaryZmarchZaprilZjuneZjulyZaugustZ septemberZoctoberZnovemberZdecemberZmonZtueZwedZthuZfriZsatZsunip���i���i���i����iD���i��)ZUTZUTCZGMT�ZZASTZADTZESTZEDTZCSTZCDTZMSTZMDTZPSTZPDTc�������������C���s,���t�|��}|sdS�|d�dkr$d|d<�t|�S�)zQConvert a date string to a time tuple. Accounts for military timezones. N� ���r���)� _parsedate_tz�tuple)�dataZres��r����5/opt/alt/python37/lib64/python3.7/email/_parseaddr.pyr���-���s����c���������� ���C���s���|�sdS�|�����}�|�sdS�|�d��d�s6|�d����tkr>|�d=�n.|�d��d�}|dkrl|�d�|d�d��|�d<�t|��dkr�|�d���d�}t|�dkr�||�dd���}�t|��dk�r|�d�}|�d�}|d kr�|�d�}|dkr�|d|��||d��g|�dd�<�n |��d ��t|��dk��rdS�|�dd��}�|�\}}}}}|���}|tk�rb||����}}|tk�rbdS�t� |�d�}|dk�r�|d8�}|d �dk�r�|dd ��}|�d �}|dk�r�||�}}|d �dk�r�|dd ��}|d�� ���s�||�}}|d �dk�r|dd ��}|��d �}t|�dk�r,|\} } d}n~t|�dk�rF|\} } }ndt|�dk�r�d|d�k�r�|d���d�}t|�dk�r�|\} } d}nt|�dk�r�|\} } }ndS�y,t|�}t|�}t| �} t| �} t|�}W�n�tk �r����dS�X�|dk��r|dk�r|d7�}n|d7�}d}|� ��}|tk�r4t|�}n>yt|�}W�n�tk �rV���Y�nX�|dk�rr|�d��rrd}|�r�|dk��r�d } |�}nd} | |d�d�|d�d���}|||| | |ddd |g S�)a���Convert date to extended time tuple. The last (additional) element is the time zone offset in seconds, except if the timezone was specified as -0000. In that case the last element is None. This indicates a UTC timestamp that explicitly declaims knowledge of the source timezone, as opposed to a +0000 timestamp that indicates the source timezone really was UTC. 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����iZstuff�sZddZmmZyyZtmZtzZthhZtmmZtssZtzoffsetZtzsignr���r���r���r���9���s����� " r���c�������������C���s&���t�|��}t|t�r|dd��S�|S�dS�)z&Convert a time string to a time tuple.Nr���)r���� isinstancer ���)r����tr���r���r���r�������s���� c�������������C���s<���|�d�dkr"t��|�dd��d��S�t�|��}||�d��S�dS�)zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.r���N����)r���)�timeZmktime�calendarZtimegm)r���r4���r���r���r���r�������s���� c�������������C���s���|���dd���dd�S�)z�Prepare string to be used in a quoted string. Turns backslash and double quote characters into quoted pairs. These are the only characters that need to be quoted inside a quoted string. Does not add the surrounding double quotes. �\z\\�"z\")�replace)�strr���r���r���r�������s����c���������������@���s|���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd d��Zdd ��Z dd��Z ddd�Zdd��Zdd��Z dd��Zddd�Zdd��ZdS�) � AddrlistClassa��Address parser class by Ben Escoto. To understand what this class does, it helps to have a copy of RFC 2822 in front of you. Note: this class interface is deprecated and may be removed in the future. Use email.utils.AddressList instead. c�������������C���sZ���d|�_�d|�_d|�_d|�_|�j|�j�|�_|�j�|�j�|�j�|�_|�j�dd�|�_||�_g�|�_ dS�)z�Initialize a new instance. `field' is an unparsed address header field, containing one or more addresses. z()<>@,:;."[]r���z z r���r���N) �specials�pos�LWSZCR�FWS�atomendsr:���� phraseends�field�commentlist)�selfrC���r���r���r����__init__����s����zAddrlistClass.__init__c�������������C���s����g�}x�|�j�t|�j�k�r�|�j|�j��|�jd�kr^|�j|�j��dkrN|�|�j|�j����|��j�d7��_�q|�j|�j��dkr�|�j�|������qP�qW�t�|�S�)z&Skip white space and extract comments.z r����() r>���r&���rC���r?���r(���rD���� getcomment�EMPTYSTRING�join)rE���Zwslistr���r���r����gotonext����s����zAddrlistClass.gotonextc�������������C���s>���g�}x4|�j�t|�j�k�r8|����}|r,||7�}q|�d��qW�|S�)zVParse all addresses. Returns a list containing all of the addresses. )r���r���)r>���r&���rC���� getaddressr(���)rE����resultZadr���r���r����getaddrlist����s���� zAddrlistClass.getaddrlistc�������������C���s���g�|�_�|�����|�j}|�j�}|����}|�����g�}|�jt|�j�kr\|rXt�|�j��|d�fg}�n^|�j|�j�dkr�||�_||�_�|����}t�|�j��|fg}�n$|�j|�j�dk�r g�}t|�j�}|��jd7��_x�|�jt|�j�k��r|�����|�j|k��r|�j|�j�dk�r|��jd7��_P�||�� ���}q�W�n�|�j|�j�dk�rz|�� ��}|�j��rht�|�d�d�|�j���d �|fg}nt�|�|fg}n@|�r�t�|�j��|d�fg}n"|�j|�j�|�jk�r�|��jd7��_|�����|�jt|�j�k��r�|�j|�j�d k�r�|��jd7��_|S�)zParse the next address.r���z.@r���r����;�<z (r����)r���)rD���rK���r>���� getphraselistr&���rC����SPACErJ����getaddrspecrL����getrouteaddrr=���)rE���ZoldposZoldcl�plistZ returnlistZaddrspecZfieldlenZ routeaddrr���r���r���rL�����sL���� &$zAddrlistClass.getaddressc�������������C���s����|�j�|�j�dkrdS�d}|��jd7��_|�����d}x�|�jt|�j��k�r�|rV|�����d}n~|�j�|�j�dkrx|��jd7��_P�n\|�j�|�j�dkr�|��jd7��_d}n8|�j�|�j�d kr�|��jd7��_n|����}|��jd7��_P�|�����q4W�|S�) z�Parse a route address (Return-path value). This method just skips all the route stuff and returns the addrspec. rP���NFr���r����>�@Tr���)rC���r>���rK���r&���� getdomainrT���)rE���ZexpectrouteZadlistr���r���r���rU���A��s.����zAddrlistClass.getrouteaddrc�������������C���sX��g�}|������x�|�jt|�j�k�r�d}|�j|�j�dkrh|rJ|d����sJ|����|�d��|��jd7��_d}nd|�j|�j�dkr�|�dt|��������n<|�j|�j�|�j kr�|r�|d����s�|����P�n|�|�� ����|�����}|r|r|�|��qW�|�jt|�j�k�s|�j|�j�dk�rt�|�S�|�d��|��jd7��_|������|�� ��}|�sJtS�t�|�|�S�) zParse an RFC 2822 addr-spec.Tr���r���r���Fr9���z"%s"rX���)rK���r>���r&���rC����strip�popr(���r����getquoterA����getatomrI���rJ���rY���)rE���ZaslistZpreserve_wsZwsZdomainr���r���r���rT���a��s:���� $ zAddrlistClass.getaddrspecc�������������C���s����g�}x�|�j�t|�j�k�r�|�j|�j��|�jkr8|��j�d7��_�q|�j|�j��dkrZ|�j�|������q|�j|�j��dkrz|�|������q|�j|�j��dkr�|��j�d7��_�|�d��q|�j|�j��dkr�tS�|�j|�j��|�j kr�P�q|�|�� ����qW�t�|�S�)z-Get the complete domain name from an address.r���rG����[r���rX���)r>���r&���rC���r?���rD���r(���rH����getdomainliteralrI���rA���r]���rJ���)rE���Zsdlistr���r���r���rY������s"����zAddrlistClass.getdomainTc�������������C���s����|�j�|�j�|krdS�dg}d}|��jd7��_x�|�jt|�j��k�r�|rZ|�|�j�|�j���d}np|�j�|�j�|kr||��jd7��_P�nN|r�|�j�|�j�dkr�|�|������q.n(|�j�|�j�dkr�d}n|�|�j�|�j���|��jd7��_q.W�t�|�S�)a���Parse a header fragment delimited by special characters. `beginchar' is the start character for the fragment. If self is not looking at an instance of `beginchar' then getdelimited returns the empty string. `endchars' is a sequence of allowable end-delimiting characters. Parsing stops when one of these is encountered. If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed within the parsed fragment. r���Fr���rG���r8���T)rC���r>���r&���r(���rH���rI���rJ���)rE���Z begincharZendcharsZ allowcommentsZslistr���r���r���r����getdelimited���s(���� zAddrlistClass.getdelimitedc�������������C���s���|���ddd�S�)z1Get a quote-delimited fragment from self's field.r9���z" F)r`���)rE���r���r���r���r\������s����zAddrlistClass.getquotec�������������C���s���|���ddd�S�)z7Get a parenthesis-delimited fragment from self's field.rG���z) T)r`���)rE���r���r���r���rH������s����zAddrlistClass.getcommentc�������������C���s���d|���ddd��S�)z!Parse an RFC 2822 domain-literal.z[%s]r^���z] F)r`���)rE���r���r���r���r_������s����zAddrlistClass.getdomainliteralNc�������������C���sh���dg}|dkr|�j�}xH|�jt|�j�k�r\|�j|�j�|kr:P�n|�|�j|�j���|��jd7��_qW�t�|�S�)a��Parse an RFC 2822 atom. Optional atomends specifies a different set of end token delimiters (the default is to use self.atomends). This is used e.g. in getphraselist() since phrase endings must not include the `.' (which is legal in phrases).r���Nr���)rA���r>���r&���rC���r(���rI���rJ���)rE���rA���Zatomlistr���r���r���r]������s����zAddrlistClass.getatomc�������������C���s����g�}x�|�j�t|�j�k�r�|�j|�j��|�jkr8|��j�d7��_�q|�j|�j��dkrX|�|������q|�j|�j��dkrz|�j�|������q|�j|�j��|�jkr�P�q|�|�� |�j���qW�|S�)z�Parse a sequence of RFC 2822 phrases. A phrase is a sequence of words, which are in turn either RFC 2822 atoms or quoted-strings. Phrases are canonicalized by squeezing all runs of continuous whitespace into one space. r���r9���rG���) r>���r&���rC���r@���r(���r\���rD���rH���rB���r]���)rE���rV���r���r���r���rR������s����zAddrlistClass.getphraselist)T)N)�__name__� __module__�__qualname__�__doc__rF���rK���rN���rL���rU���rT���rY���r`���r\���rH���r_���r]���rR���r���r���r���r���r<�������s���; & % r<���c���������������@���sH���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd d��Zdd ��Z dd��Z dS�)�AddressListz@An AddressList encapsulates a list of parsed RFC 2822 addresses.c�������������C���s&���t��|�|��|r|����|�_ng�|�_d�S�)N)r<���rF���rN����addresslist)rE���rC���r���r���r���rF������s����zAddressList.__init__c�������������C���s ���t�|�j�S�)N)r&���rf���)rE���r���r���r����__len__��s����zAddressList.__len__c�������������C���sB���t�d��}|�jd�d���|_x$|jD�]}||�jkr |j�|��q W�|S�)N)re���rf���r(���)rE����other�newaddr�xr���r���r����__add__��s���� zAddressList.__add__c�������������C���s*���x$|j�D�]}||�j�kr|�j��|��qW�|�S�)N)rf���r(���)rE���rh���rj���r���r���r����__iadd__��s���� zAddressList.__iadd__c�������������C���s2���t�d��}x$|�jD�]}||jkr|j�|��qW�|S�)N)re���rf���r(���)rE���rh���ri���rj���r���r���r����__sub__��s ���� zAddressList.__sub__c�������������C���s*���x$|j�D�]}||�j�kr|�j��|��qW�|�S�)N)rf����remove)rE���rh���rj���r���r���r����__isub__��s���� zAddressList.__isub__c�������������C���s ���|�j�|�S�)N)rf���)rE���r*���r���r���r����__getitem__%��s����zAddressList.__getitem__N)ra���rb���rc���rd���rF���rg���rk���rl���rm���ro���rp���r���r���r���r���re������s��� re���)rd����__all__r6���r7���rS���rI���Z COMMASPACEr)���r$���r/���r���r���r���r���r���r<���re���r���r���r���r����<module>���s8��� w ��/