Edit File: _parseaddr.cpython-311.opt-1.pyc
� �����f�E����������������������������d�Z�g�d�ZddlZddlZdZdZdZg�d�Zg�d�Zddddd d dd ddd ddd d�Z d��Z d��Zd��Zd��Z d��Z�G�d��d������������Z�G�d��de������������ZdS�)zcEmail address parsing code. Lifted directly from rfc822.py. This should eventually be rewritten. )� mktime_tz� parsedate�parsedate_tz�quote�����N� ��z, )�jan�feb�mar�apr�may�jun�jul�aug�sep�oct�nov�dec�january�february�march�aprilr ����june�july�august� september�october�november�december)�mon�tue�wed�thu�fri�sat�sunip���i���i���i����iD���i��)�UT�UTC�GMT�Z�AST�ADT�EST�EDT�CST�CDT�MST�MDT�PST�PDTc������������������`�����t����������|�������������}|sdS�|d����������d|d<���t����������|������������S�)zQConvert a date string to a time tuple. Accounts for military timezones. N� ���r���)� _parsedate_tz�tuple)�data�ress��� �7/opt/alt/python311/lib64/python3.11/email/_parseaddr.pyr���r���-���s<������ ��� � �C������ �1�v�~���A����:�:������c����������� �����������|�sdS�|�������������������������������������}�|�sdS�|�d������������������������������d������������s!|�d��������������������������������������������t����������v�r|�d=�n7|�d������������������������������d������������}|dk����r|�d���������|dz���d����������|�d<���t����������|�������������dk����r;|�d�������������������������������d������������}t����������|������������dk����r ||�dd����������z���}�t����������|�������������dk����rm|�d���������}|���������������������d������������}|d k����r|���������������������d������������}|dk����r|d|����������||d����������g|�dd�<���n|����������������������d �������������t����������|�������������dk�����rdS�|�dd����������}�|�\��}}}}}|r|r|sdS�|�����������������������������������}|t����������vr!||�����������������������������������}}|t����������vrdS�t����������� ��������������������|������������dz���}|dk����r|dz��}|d ���������dk����r |dd ����������}|���������������������d ������������}|dk����r||}}|d ���������dk����r|dd ����������}|sdS�|d���������� ����������������������������������s||}}|d ���������dk����r |dd ����������}|����������������������d ������������}t����������|������������dk����r|\��} } d}n�t����������|������������dk����r|\��} } }nqt����������|������������dk����r\d|d���������v�rR|d�������������������������������d������������}t����������|������������dk����r|\��} } d}nt����������|������������dk����r|\��} } }ndS�dS� �t����������|������������}t����������|������������}t����������| ������������} t����������| ������������} t����������|������������}n#�t����������$�r�Y�dS�w�xY�w|dk�����r|dk����r|dz ��}n|dz ��}d}|� ����������������������������������}|t����������v�rt����������|���������}n> �t����������|������������}n#�t����������$�r�Y�nw�xY�w|dk����r|���������������������d������������rd}|r"|dk�����rd } |�}nd} | |dz��dz��|dz��dz��z���z��}|||| | |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)r9����i�stuff�s�dd�mm�yy�tm�tz�thh�tmm�tss�tzoffset�tzsigns��� r;���r7���r7���9���s�����������t��:�:�<�<�D�����t���A�w�������$��Q�� � ���9� <� <���G�G���G�M�M�#������6�6��1�g�a��c�d�d�m�D��G� �4�y�y�A�~�~��Q�� � �c�"�"���u�:�:��?�?��4����8�#�D� �4�y�y�A�~�~���G�� �F�F�3�K�K����7�7����s���A��q�5�5��"�1�"��q����u�~�D����H�H��K�K��O�O�O� �4�y�y�1�}�}��t�����8�D���R��R��R����2���"����t� �����B� �����R�X�X�Z�Z�B�� �[� � ��4� � � �2� � �� "�B� �B�w�w� �b��� �"�v��}�}� ����W�� ������A��1�u�u��R�B�� �"�v��}�}� ����W���� ��4� �a�5�=�=�?�?����R�B�� �"�v��}�}� ����W�� ���#���B� �2�w�w�!�|�|�� ��c���� �R���A������c�3�3� �R���A���#��A��,�,� ��U�[�[�� � ���r�7�7�a�<�<��J�S�#��C�C� ��W�W��\�\� �O�S�#�s�s��4��t�� ��W�W�� ��W�W���#�h�h���#�h�h���#�h�h������������t�t������ �C�x�x� ��7�7��$�J�B�B�� �$�J�B��H� �����B� �Z����b�>��� ��2�w�w�H�H���� �� �� ��D� �����Q�;�;�2�=�=��-�-�;��H���J��a�<�<��F� �y�H�H��F��x��}�d�2�h��n�b�5H�H�I����B��S�#�q�!�R��:�:s%����6AN�� N�N�O(��( O5�4O5c������������������b�����t����������|�������������}t����������|t����������������������r |dd����������S�|S�)z&Convert a time string to a time tuple.Nr6���)r���� isinstancer8����r9����ts��� r;���r���r�������s3�������T���A��!�U�������!��u���r<���c�����������������������|�d����������t����������j��������|�dd����������dz���������������S�t����������j��������|�������������}||�d���������z ��S�)zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.r6���N����)rD���)�time�mktime�calendar�timegmrm���s��� r;���r���r�������sE�������A�w���{�4����8�e�+�,�,�,��O�D�!�!���4��7�{�r<���c������������������V�����|�����������������������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)�strs��� r;���r���r�������s(��������;�;�t�V�$�$�,�,�S�%�8�8�8r<���c��������������������d�����e�Zd�ZdZd��Zd��Zd��Zd��Zd��Zd��Z d��Z dd �Zd��Zd��Z d ��Zdd�Zd��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�����������������������d|�_���������d|�_��������d|�_��������d|�_��������|�j��������|�j��������z���|�_��������|�j���������|�j��������z���|�j��������z���|�_��������|�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 rJ���r���N) �specials�pos�LWS�CR�FWS�atomendsrx���� phraseends�field�commentlist��selfr����s��� r;����__init__zAddrlistClass.__init__����sw�������(�� �����������8�d�g�%���� ���0�4�7�:�� ���-�/�/��R�8�8����� �����r<���c����������������������g�}|�j���������t����������|�j��������������������k�����r�|�j��������|�j������������������|�j��������dz���v�rJ|�j��������|�j������������������dvr%|���������������������|�j��������|�j�������������������������������|�xj���������dz ��c_���������nD|�j��������|�j������������������dk����r-|�j�����������������������������|�������������������������������������������������nn|�j���������t����������|�j��������������������k�������t�������������������������������|������������S�)z&Skip white space and extract comments.z r?����() r~���rS���r����r���rU���r����� getcomment�EMPTYSTRING�join)r�����wslists��� r;����gotonextzAddrlistClass.gotonext����s����������h��T�Z���(�(��z�$�(�#�t�x�&�'8�8�8��:�d�h�'�v�5�5��M�M�$�*�T�X�"6�7�7�7����A� ������D�H�%��,�,�� �'�'����(9�(9�:�:�:�:����h��T�Z���(�(������'�'�'r<���c������������������������g�}|�j���������t����������|�j��������������������k�����rN|������������������������������������}|r||z ��}n|���������������������d�������������|�j���������t����������|�j��������������������k������N|S�)zVParse all addresses. Returns a list containing all of the addresses. )r���r���)r~���rS���r����� getaddressrU���)r�����result�ads��� r;����getaddrlistzAddrlistClass.getaddrlist����sp������ ����h��T�Z���(�(����"�"�B��� (��"����� � �h�'�'�'���h��T�Z���(�(��� r<���c����������������������g�|�_���������|�������������������������������������|�j��������}|�j���������}|������������������������������������}|�������������������������������������g�}|�j��������t ����������|�j��������������������k����r,|r(t�������������������������������|�j���������������������|d���������fg}�n|�j��������|�j�����������������dv�rF||�_��������||�_���������|������������������������������������}t�������������������������������|�j���������������������|fg}�n�|�j��������|�j�����������������dk����r�g�}t ����������|�j��������������������}|�xj��������dz ��c_��������|�j��������t ����������|�j��������������������k�����rz|�������������������������������������|�j��������|k�����r'|�j��������|�j�����������������dk����r|�xj��������dz ��c_��������n4||�� ����������������������������������z���}|�j��������t ����������|�j��������������������k������zn�|�j��������|�j�����������������dk����rx|�� ����������������������������������}|�j���������r?t�������������������������������|������������dz���d���������������������|�j���������������������z���d z���|fg}nrt�������������������������������|������������|fg}nT|r)t�������������������������������|�j���������������������|d���������fg}n)|�j��������|�j�����������������|�j��������v�r|�xj��������dz ��c_��������|�������������������������������������|�j��������t ����������|�j��������������������k�����r&|�j��������|�j�����������������d k����r|�xj��������dz ��c_��������|S�)zParse the next address.r���z.@rG���r?����;�<z (r����)r>���)r����r����r~���� getphraselistrS���r�����SPACEr�����getaddrspecr�����getrouteaddrr}���)r�����oldpos�oldcl�plist� returnlist�addrspec�fieldlen� routeaddrs��� r;���r����zAddrlistClass.getaddress��s���������� � �������� ���"�"�$�$��� � ����� ��8�s�4�:���&�&��� H�$�z�z�$�*:�;�;�U�1�X�F�G� �� �Z��� !�T� )� )���D�H�$�D���'�'�)�)�H� �:�:�d�&6�7�7��B�C�J�J� �Z��� !�S� (� (��J��4�:���H��H�H��M�H�H��(�S���_�_�,�,�� � �����8�h�&�&�4�:�d�h�+?�3�+F�+F��H�H��M�H�H��'�$�/�/�*;�*;�;� ���(�S���_�_�,�,����Z��� !�S� (� (��)�)�+�+�I���� >�$�z�z�%�0�0�4�7�"�x�x��(8�9�9� :�<?� @�AJ�L��M� � �� %�z�z�%�0�0�)�<�=� � ���� �$�z�z�$�*:�;�;�U�1�X�F�G� � ���D�H�%���6�6����A� ���� � �����8�c�$�*�o�o�%�%�$�*�T�X�*>�#�*E�*E��H�H��M�H�H��r<���c����������������������|�j���������|�j�����������������dk����rdS�d}|�xj��������dz ��c_��������|�������������������������������������d}|�j��������t����������|�j���������������������k�����r�|r|�������������������������������������d}n�|�j���������|�j�����������������dk����r|�xj��������dz ��c_��������n�|�j���������|�j�����������������dk����r|�xj��������dz ��c_��������d}nL|�j���������|�j�����������������d k����r|�xj��������dz ��c_��������n%|������������������������������������}|�xj��������dz ��c_��������n1|�������������������������������������|�j��������t����������|�j���������������������k�������|S�) z�Parse a route address (Return-path value). This method just skips all the route stuff and returns the addrspec. r����NFr?���r����>�@TrG���)r����r~���r����rS���� getdomainr����)r�����expectroute�adlists��� r;���r����zAddrlistClass.getrouteaddrG��s:����� ��:�d�h��3�&�&��F������A� ���� � �������h��T�Z���(�(��� ���� � � �#�����D�H�%��,�,����A� ������D�H�%��,�,����A� ���"�����D�H�%��,�,����A� �����)�)�+�+�����A� �����M�M�O�O�O�!��h��T�Z���(�(�$�� r<���c�����������������������g�}|��������������������������������������|�j��������t����������|�j��������������������k������rzd}|�j��������|�j�����������������dk����rX|r.|d��������������������������������������������s|������������������������������������|���������������������d�������������|�xj��������dz ��c_��������d}n�|�j��������|�j�����������������dk����r8|���������������������dt����������|������������������������������������������������z���������������nq|�j��������|�j�����������������|�j ��������v�r1|r.|d��������������������������������������������s|������������������������������������nr|���������������������|�� �����������������������������������������������|�������������������������������������}|r|r|���������������������|�������������|�j��������t����������|�j��������������������k�������z|�j��������t����������|�j��������������������k����s|�j��������|�j�����������������dk����rt�������������������������������|������������S�|���������������������d�������������|�xj��������dz ��c_��������|��������������������������������������|�� ����������������������������������}|st����������S�t�������������������������������|������������|z���S�) zParse an RFC 2822 addr-spec.TrJ���rD���r?���Frw���z"%s"r����)r����r~���rS���r�����strip�poprU���r����getquoter�����getatomr����r����r����)r�����aslist�preserve_ws�ws�domains��� r;���r����zAddrlistClass.getaddrspecg��s�������� � �����h��T�Z���(�(��K��z�$�(�#�s�*�*���!�&��*�"2�"2�"4�"4��!��J�J�L�L�L�� � �c�"�"�"����A� ���#�����D�H�%��,�,�� � �f�u�T�]�]�_�_�'=�'=�=�>�>�>�>���D�H�%���6�6���!�&��*�"2�"2�"4�"4��!��J�J�L�L�L��� � �d�l�l�n�n�-�-�-������B��� "�r�� "�� � �b�!�!�!�%��h��T�Z���(�(�(��8�s�4�:���&�&�$�*�T�X�*>�#�*E�*E��#�#�F�+�+�+�� � �c�������A� ���� � �������!�!���� ��������'�'�&�0�0r<���c������������������>����g�}|�j���������t����������|�j��������������������k������rd|�j��������|�j������������������|�j��������v�r|�xj���������dz ��c_����������n|�j��������|�j������������������dk����r-|�j�����������������������������|�������������������������������������������������n�|�j��������|�j������������������dk����r(|���������������������|�������������������������������������������������n�|�j��������|�j������������������dk����r&|�xj���������dz ��c_���������|���������������������d�������������n^|�j��������|�j������������������dk����rt����������S�|�j��������|�j������������������|�j ��������v�rnE|���������������������|�� �����������������������������������������������|�j���������t����������|�j��������������������k�������dt�������������������������������|������������S�)z-Get the complete domain name from an address.r?���r�����[rJ���r����)r~���rS���r����r���r����rU���r�����getdomainliteralr����r����r����r����)r�����sdlists��� r;���r����zAddrlistClass.getdomain���sd��������h��T�Z���(�(��z�$�(�#�t�x�/�/����A� ������D�H�%��,�,�� �'�'����(9�(9�:�:�:�:���D�H�%��,�,�� � �d�3�3�5�5�6�6�6�6���D�H�%��,�,����A� ���� � �c�"�"�"�"���D�H�%��,�,��#�"���D�H�%���6�6��� � �d�l�l�n�n�-�-�-�#��h��T�Z���(�(�$�����'�'�'r<���Tc����������������������|�j���������|�j�����������������|k����rdS�dg}d}|�xj��������dz ��c_��������|�j��������t����������|�j���������������������k�����r�|r(|���������������������|�j���������|�j������������������������������d}n�|�j���������|�j�����������������|v�r|�xj��������dz ��c_��������n�|r>|�j���������|�j�����������������dk����r(|���������������������|���������������������������������������������������|�j���������|�j�����������������dk����rd}n%|���������������������|�j���������|�j������������������������������|�xj��������dz ��c_��������|�j��������t����������|�j���������������������k�������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?���r����rv���T)r����r~���rS���rU���r����r����r����)r����� beginchar�endchars� allowcomments�slistr���s��� r;����getdelimitedzAddrlistClass.getdelimited���sI�������:�d�h��9�,�,��2���������A� ����h��T�Z���(�(��� 3����T�Z���1�2�2�2������D�H�%��1�1����A� ������ 3�4�:�d�h�#7�3�#>�#>����T�_�_�.�.�/�/�/����D�H�%��-�-�������T�Z���1�2�2�2��H�H��M�H�H���h��T�Z���(�(� �����&�&�&r<���c������������������0�����|�����������������������ddd������������S�)z1Get a quote-delimited fragment from self's field.rw���z" F�r�����r����s��� r;���r����zAddrlistClass.getquote���s������� � ��e�U�3�3�3r<���c������������������0�����|�����������������������ddd������������S�)z7Get a parenthesis-delimited fragment from self's field.r����z) Tr����r����s��� r;���r����zAddrlistClass.getcomment���s������� � ��e�T�2�2�2r<���c������������������6�����d|�����������������������ddd������������z��S�)z!Parse an RFC 2822 domain-literal.z[%s]r����z] Fr����r����s��� r;���r����zAddrlistClass.getdomainliteral���s��������)�)�#�u�e�<�<�<�<r<���Nc������������������V����dg}|�|�j���������}|�j��������t����������|�j��������������������k�����rg|�j��������|�j�����������������|v�rnR|���������������������|�j��������|�j������������������������������|�xj��������dz ��c_��������|�j��������t����������|�j��������������������k������gt �������������������������������|������������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?���)r����r~���rS���r����rU���r����r����)r����r�����atomlists��� r;���r����zAddrlistClass.getatom���s���������4�����}�H��h��T�Z���(�(��z�$�(�#�x�/�/������ �4�8� 4�5�5�5��H�H��M�H�H���h��T�Z���(�(������)�)�)r<���c������������������f����g�}|�j���������t����������|�j��������������������k������r|�j��������|�j������������������|�j��������v�r|�xj���������dz ��c_���������n�|�j��������|�j������������������dk����r(|���������������������|�������������������������������������������������n�|�j��������|�j������������������dk����r-|�j�����������������������������|�������������������������������������������������nG|�j��������|�j������������������|�j��������v�rnK|���������������������|�� ��������������������|�j���������������������������������|�j���������t����������|�j��������������������k�������|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?���rw���r����) r~���rS���r����r����rU���r����r����r����r����r����)r����r����s��� r;���r����zAddrlistClass.getphraselist���s���������h��T�Z���(�(��z�$�(�#�t�x�/�/����A� ������D�H�%��,�,����T�]�]�_�_�-�-�-�-���D�H�%��,�,�� �'�'����(9�(9�:�:�:�:���D�H�%���8�8�����T�\�\�$�/�:�:�;�;�;���h��T�Z���(�(���r<���)T�N)�__name__� __module__�__qualname__�__doc__r����r����r����r����r����r����r����r����r����r����r����r����r������r<���r;���r{���r{�������s�����������������������&(��(��(������9��9��9�v�����@$1��$1��$1�L(��(��(�.#'��#'��#'��#'�J4��4��4�3��3��3�=��=��=�*��*��*��*�(��������r<���r{���c��������������������<�����e�Zd�ZdZd��Zd��Zd��Zd��Zd��Zd��Z d��Z d S�) �AddressListz@An AddressList encapsulates a list of parsed RFC 2822 addresses.c�����������������������t��������������������������������|�|�������������|r|������������������������������������|�_��������d�S�g�|�_��������d�S�r����)r{���r����r�����addresslistr����s��� r;���r����zAddressList.__init__��sH���������t�U�+�+�+��� "�#�/�/�1�1�D����!�D���r<���c������������������*�����t����������|�j��������������������S�r����)rS���r����r����s��� r;����__len__zAddressList.__len__ ��s�������4�#�$�$�$r<���c�����������������������t����������d�������������}|�j��������d�d�����������|_��������|j��������D�]%}||�j��������vr|j�����������������������������|��������������&|S�r�����r����r����rU����r�����other�newaddr�xs��� r;����__add__zAddressList.__add__��s`�������d�#�#��"�.�q�q�q�1����"�� .�� .�A���(�(�(��#�*�*�1�-�-�-���r<���c������������������`�����|j���������D�]%}||�j���������vr|�j������������������������������|��������������&|�S�r����)r����rU����r����r����r����s��� r;����__iadd__zAddressList.__iadd__��s?�������"�� +�� +�A���(�(�(�� �'�'��*�*�*���r<���c������������������~�����t����������d�������������}|�j��������D�]%}||j��������vr|j�����������������������������|��������������&|S�r����r����r����s��� r;����__sub__zAddressList.__sub__��sL�������d�#�#���!�� .�� .�A���)�)�)��#�*�*�1�-�-�-���r<���c������������������`�����|j���������D�]%}||�j���������v�r|�j������������������������������|��������������&|�S�r����)r�����remover����s��� r;����__isub__zAddressList.__isub__$��s?�������"�� +�� +�A��D�$�$�$�� �'�'��*�*�*���r<���c�����������������������|�j���������|���������S�r����)r����)r����rW���s��� r;����__getitem__zAddressList.__getitem__+��s���������&�&r<���N)r����r����r����r����r����r����r����r����r����r����r����r����r<���r;���r����r�������s���������������J�J�"��"��"�%��%��%���������������������'��'��'��'��'r<���r����)r�����__all__rq���rs���r����r����� COMMASPACErV���rQ���r\���r���r7���r���r���r���r{���r����r����r<���r;����<module>r�������sN������� �������������������������� � �I��I��I�� � >�=�=� ���A�Q�A��$��$��$��$��$���� � �� �� �z;��z;��z;�z����������9��9��9�k��k��k��k��k��k��k��k�Z -'��-'��-'��-'��-'�-��-'��-'��-'��-'��-'r<���