� K�g�����ddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddlmZmZddlmZmZmZmZddlmZmZmZmZmZmZmZmZddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6dd l7m8Z8dd l9m:Z:m;Z;gd�Z<ddhZ=d-d�Z>d.d/d�Z?d.d0d�Z@d1d�ZAd2d �ZBd3d$�ZCGd%�d&e jDeEeEf��ZFGd'�d(��ZGGd)�d*��ZHGd+�d,e jDeEeEf��ZIdS)4�)� annotationsN)�Mapping)�Cookie� CookieJar�)� ByteStream�UnattachedStream�encode_request�encode_response)�SUPPORTED_DECODERS� ByteChunker�ContentDecoder�IdentityDecoder� LineDecoder� MultiDecoder� TextChunker� TextDecoder)�CookieConflict�HTTPStatusError�RequestNotRead�ResponseNotRead� StreamClosed�StreamConsumed�request_context)�(get_multipart_boundary_from_content_type)�codes) �AsyncByteStream� CookieTypes� HeaderTypes�QueryParamTypes�RequestContent� RequestData�RequestExtensions� RequestFiles�ResponseContent�ResponseExtensions�SyncByteStream)�URL)�to_bytes_or_str�to_str)�Cookies�Headers�Request�Response� authorizationzproxy-authorization�encoding�str�return�boolc�T� tj|��n#t$rYdSwxYwdS)z7 Return `True` if `encoding` is a known codec. FT)�codecs�lookup� LookupError�r0s �]/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/httpx/_models.py�_is_known_encodingr:8sA���� �h������ �����u�u����� �4s �� %�%�key� str | bytes� str | None�bytesc�^�t|t��r|n|�|pd��S)zE Coerce str/bytes into a strictly byte-wise HTTP header key. �ascii)� isinstancer>�encode)r;r0s r9�_normalize_header_keyrCCs.���S�%�(�(� M�3�3�c�j�j��9L�W�.M�.M�M��valuec���t|t��r|St|t��stdt |�������|�|pd��S)zG Coerce str/bytes into a strictly byte-wise HTTP header value. z'Header value must be str or bytes, not r@)rAr>r1� TypeError�typerB)rEr0s r9�_normalize_header_valuerIJsb���%������ � �e�S� !� !�Q��O�$�u�+�+�O�O�P�P�P� �<�<��+�G� ,� ,�,rD� content_typec�t�tj���}||d<|�d���S)N� content-type)�failobj)�email�message�Message�get_content_charset)rJ�msgs r9�_parse_content_type_charsetrSUs8�� �-� � � !� !�C�&�C��� � "� "�4� "� 0� 0�0rD�list[dict[str, str]]c��g}d}|�|��}|s|Stjd|��D]�} |�dd��\}}n#t$r|d}}YnwxYwd|�d��i}|�d��D]X} |�d��\}}n#t$rYn0wxYw|�|��||�|��<�Y|�|����|S) a7 Returns a list of parsed link headers, for more info see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Link The generic syntax of those is: Link: < uri-reference >; param1=value1; param2="value2" So for instance: Link; '<http:/.../front.jpeg>; type="image/jpeg",<http://.../back.jpeg>;' would return [ {"url": "http:/.../front.jpeg", "type": "image/jpeg"}, {"url": "http://.../back.jpeg"}, ] :param value: HTTP Link entity-header field :return: list of parsed link headers z '"z, *<�;r��urlz<> '"�=)�strip�re�split� ValueError�append) rE�links� replace_chars�valrX�params�link�paramr;s r9�_parse_header_linksre]s=�� #%�E��M� �K�K� � &� &�E� ��� ��x���&�&� � �� "��)�)�C��+�+�K�C����� "� "� "��r��C�C�C� "�����s�y�y��*�*�+���\�\�#�&�&� H� H�E� �"�[�[��-�-� ��U�U��� � � ���� ����-2�[�[��-G�-G�D����=�)�)� *� *� � � �T����� �Ls#�A�A!� A!�B,�, B:�9B:�items�4typing.Iterable[tuple[typing.AnyStr, typing.AnyStr]]�4typing.Iterator[tuple[typing.AnyStr, typing.AnyStr]]c#�K�|D]D\}}t|�����tvrtd|���}||fV��EdS)Nz[secure])� match_type_of)r*�lower�SENSITIVE_HEADERSr))rf�k�vs r9�_obfuscate_sensitive_headersro�sb���������1� �!�'�'�)�)� � � 1� 1� 1�� �!�<�<�<�A���d� � � � ��rDc���eZdZdZ d.d/d �Zed0d ���Zejd1d ���Zed2d���Zd3d�Z d4d�Z d5d�Z d6d�Z d7d8d�Z d9d:d �Zd7d;d!�Zd<d"�Zd=d#�Zd>d$�Zd?d%�Zd@d&�ZdAd(�ZdBd*�ZdCd,�Zd0d-�ZdS)Dr,z9 HTTP headers, as a case-insensitive multi-dict. N�headers�HeaderTypes | Noner0r=r2�Nonec�0�g|_t|t��rt|j��|_n�t|t��rj|���D]T\}}t ||��}t||��}|j�||� ��|f���UnY|�W|D]T\}}t ||��}t||��}|j�||� ��|f���U||_ dS�N) �_listrAr,�listrrfrCrIr^rk� _encoding)�selfrqr0rmrn� bytes_key� bytes_values r9�__init__zHeaders.__init__�s�� �� � �g�w� '� '� O��g�m�,�,�D�J�J� ��� )� )� O�� � ��� O� O���1�1�!�X�>�>� �5�a��B�B� �� �!�!�9�i�o�o�.?�.?��"M�N�N�N�N� O�� �� O� O���1�1�!�X�>�>� �5�a��B�B� �� �!�!�9�i�o�o�.?�.?��"M�N�N�N�N�!����rDr1c���|j�^dD]T}|jD]A\}} |�|��|�|���1#t$rYn wxYw||_n�Ud|_|jS)zn Header encoding is mandated as ascii, but we allow fallbacks to utf-8 or iso-8859-1. N)r@�utf-8z iso-8859-1)rx�raw�decode�UnicodeDecodeError)ryr0r;rEs r9r0zHeaders.encoding�s��� �>� !�.� .� .��"&�(� � �J�C���� � �8�,�,�,�� � �X�.�.�.�.��-����������� &.�D�N��E� �".����~�s�*A� A�ArEc��||_dSru)rx�ryrEs r9r0zHeaders.encoding�s ������rD�list[tuple[bytes, bytes]]c�$�d�|jD��S)zH Returns a list of the raw header items, as byte pairs. c��g|] \}}}||f�� S�r�)�.0�raw_key�_rEs r9� <listcomp>zHeaders.raw.<locals>.<listcomp>�s$��E�E�E�%6�W�a���%� �E�E�ErD�rv�rys r9rz Headers.raw�s�� F�E�$�*�E�E�E�ErD�typing.KeysView[str]c�N���fd��jD�����S)Nc�N��i|]!\}}}|��j��d��"Sru�r�r0�r�r�r;rErys �r9� <dictcomp>z Headers.keys.<locals>.<dictcomp>�s/���P�P�P�M�A�s�E�� � �4�=�)�)�4�P�P�PrD)rv�keysr�s`r9r�z Headers.keys�s+���P�P�P�P�T�Z�P�P�P�U�U�W�W�WrD�typing.ValuesView[str]c���i}|jD]W\}}}|�|j��}|�|j��}||vr||xxd|��z cc<�R|||<�X|���S)N�, )rvr�r0�values�ry� values_dictr�r;rE�str_key� str_values r9r�zHeaders.values�s���&(� �!�Z� 1� 1�M�A�s�E��j�j���/�/�G�� � �T�]�3�3�I��+�%�%��G�$�$�$�(8�Y�(8�(8�8�$�$�$�$�'0� �G�$�$��!�!�#�#�#rD�typing.ItemsView[str, str]c���i}|jD]W\}}}|�|j��}|�|j��}||vr||xxd|��z cc<�R|||<�X|���S)z� Return `(key, value)` items of headers. Concatenate headers into a single comma separated value when a key occurs multiple times. r�)rvr�r0rfr�s r9rfz Headers.items�s��� ')� �!�Z� 1� 1�M�A�s�E��j�j���/�/�G�� � �T�]�3�3�I��+�%�%��G�$�$�$�(8�Y�(8�(8�8�$�$�$�$�'0� �G�$�$�� � �"�"�"rD�list[tuple[str, str]]c�*���fd��jD��S)z� Return a list of `(key, value)` pairs of headers. Allow multiple occurrences of the same key without concatenating into a single comma separated value. c���g|]:\}}}|��j��|��j��f��;Sr�r�r�s �r9r�z'Headers.multi_items.<locals>.<listcomp>�sP��� � � ���3���Z�Z�� � &� &�� � �T�]�(C�(C� D� � � rDr�r�s`r9� multi_itemszHeaders.multi_items�s0���  � � � �!%�� � � � rDr;�default� typing.Anyc�8� ||S#t$r|cYSwxYw)z� Return a header value. If multiple occurrences of the header occur then concatenate them together with commas. )�KeyError)ryr;r�s r9�getz Headers.get�s5��  ���9� ��� � � ��N�N�N� ���s � � �F� split_commasr3� list[str]c����|�����j�����fd��jD��}|s|Sg}|D]4}|�d�|�d��D�����5|S)z� Return a list of all header values for a given key. If `split_commas=True` is passed, then any comma separated header values are split into multiple return strings. c�|��g|]8\}}}|����k�|��j����9Sr�)rkr�r0)r�r��item_key� item_value�get_header_keyrys ��r9r�z$Headers.get_list.<locals>.<listcomp>sN��� � � �'��8�Z��~�~���>�1�1� � � �d�m� ,� ,�1�1�1rDc�6�g|]}|�����Sr�)rZ)r��items r9r�z$Headers.get_list.<locals>.<listcomp>s �� K� K� K�$������ K� K� KrD�,)rkrBr0rv�extendr\)ryr;r�r�� split_valuesrEr�s` @r9�get_listzHeaders.get_list�s����� �����+�+�D�M�:�:�� � � � � �+/�:� � � �� � ��M�� �� M� M�E� � � � K� K�%�+�+�c�:J�:J� K� K� K� L� L� L� L��rDc���t|��}|���D]}||vr|�|���|j�|j��dSru)r,r��poprvr�)ryrqr;s r9�updatezHeaders.updates]���'�"�"���<�<�>�>� � �C��d�{�{����� � � �� � ���'�-�(�(�(�(�(rDc�.�t||j���S)Nr8)r,r0r�s r9�copyz Headers.copys���t�d�m�4�4�4�4rDc�����|�����j�����fd��jD��}|rd�|��St |���)z� Return a single header value. If there are multiple headers with the same key, then we concatenate them with commas. See: https://tools.ietf.org/html/rfc7230#section-3.2.2 c�X��g|]&\}}}|�k� |��j����'Sr�r�)r�r�� header_key� header_value�normalized_keyrys ��r9r�z'Headers.__getitem__.<locals>.<listcomp>%sD��� � � �+��:�|��^�+�+� � � �� � .� .�+�+�+rDr�)rkrBr0rv�joinr�)ryr;rfr�s` @r9� __getitem__zHeaders.__getitem__sz���������+�+�D�M�:�:�� � � � � �/3�z� � � �� � $��9�9�U�#�#� #��s�m�m�rDc���|�|jpd��}|�|jpd��}|�����fd�t|j��D��}t |dd���D] }|j|=� |r|d}|�|f|j|<dS|j�|�|f��dS)zs Set the header `key` to `value`, removing any duplicate entries. Retains insertion order. r~c�.��g|]\}\}}}|�k�|��Sr�r�)r��idxr�r�� lookup_keys �r9r�z'Headers.__setitem__.<locals>.<listcomp>9s9��� � � �%��%�a��1��:�%�%� �%�%�%rDrNr)rBrxrk� enumeraterv�reversedr^)ryr;rE�set_key� set_value� found_indexesr�r�s @r9� __setitem__zHeaders.__setitem__0s���� �*�*�T�^�6�w�7�7���L�L���!:�7�;�;� ��]�]�_�_� � � � � �)2�4�:�)>�)>� � � � � �M�!�"�"�-�.�.� � �C�� �3��� � @���"�C�&� �I�>�D�J�s�O�O�O� �J� � �w� �I�>� ?� ?� ?� ?� ?rDc����|����|j����fd�t|j��D��}|st |���t |��D] }|j|=� dS)z* Remove the header `key`. c�R��g|]#\}\}}}|����k�!|��$Sr�)rk)r�r�r�r��del_keys �r9r�z'Headers.__delitem__.<locals>.<listcomp>NsC��� � � �%��%�a��1��~�~���7�*�*� �*�*�*rDN)rkrBr0r�rvr�r�)ryr;� pop_indexesr�r�s @r9� __delitem__zHeaders.__delitem__Hs�����)�)�+�+�$�$�T�]�3�3�� � � � �)2�4�:�)>�)>� � � � � � ��3�-�-� ��K�(�(� � �C�� �3��� � rDc��|����|j��}|d�|jD��vS)Nc��g|]\}}}|�� Sr�r�)r�r�r;s r9r�z(Headers.__contains__.<locals>.<listcomp>\s��>�>�>�i�a��a�c�>�>�>rD)rkrBr0rv)ryr;r�s r9� __contains__zHeaders.__contains__Zs;���Y�Y�[�[�'�'�� �6�6� ��>�>�4�:�>�>�>�>�>rD�typing.Iterator[typing.Any]c�D�t|�����Sru)�iterr�r�s r9�__iter__zHeaders.__iter__^s���D�I�I�K�K� � � rD�intc�*�t|j��Sru)�lenrvr�s r9�__len__zHeaders.__len__as���4�:���rD�otherc��� t|��}n#t$rYdSwxYwd�|jD��}d�|jD��}t|��t|��kS)NFc��g|] \}}}||f�� Sr�r��r�r�r;rEs r9r�z"Headers.__eq__.<locals>.<listcomp>js"��B�B�B�m�a��e�c�5�\�B�B�BrDc��g|] \}}}||f�� Sr�r�r�s r9r�z"Headers.__eq__.<locals>.<listcomp>ks"��L�L�L�}�q�#�u�s�E�l�L�L�LrD)r,r]rv�sorted)ryr�� other_headers� self_list� other_lists r9�__eq__zHeaders.__eq__ds�� �#�E�N�N�M�M��� � � ��5�5� ����C�B�t�z�B�B�B� �L�L� �8K�L�L�L� ��i� � �F�:�$6�$6�6�6s �� � c�.�|jj}d}|jdkr d|j��}tt |�������}t |��}t|��t|��k}|r |�d|�|�d�S|�d|�|�d�S)NrWr@z , encoding=�(�))� __class__�__name__r0rwror��dictr�)ry� class_name� encoding_str�as_list�as_dict�no_duplicate_keyss r9�__repr__zHeaders.__repr__ns����^�,� �� � �=�G� #� #�:���:�:�L��3�D�4D�4D�4F�4F�G�G�H�H���w�-�-����L�L�C��L�L�8�� � >� �=�=�7�=�l�=�=�=� =��9�9�w�9�,�9�9�9�9rD�NN)rqrrr0r=r2rs�r2r1�rEr1r2rs)r2r�)r2r�)r2r�)r2r�)r2r�ru)r;r1r�r�r2r�)F)r;r1r�r3r2r�)rqrrr2rs)r2r,)r;r1r2r1�r;r1rEr1r2rs)r;r1r2rs)r;r�r2r3)r2r��r2r�)r�r�r2r3)r�� __module__� __qualname__�__doc__r|�propertyr0�setterrr�r�rfr�r�r�r�r�r�r�r�r�r�r�r�r�r�rDr9r,r,�s��������� '+�#�"�"�"�"�"�,�����X��0�_�����_���F�F�F��X�F� X�X�X�X� $� $� $� $� #� #� #� #�  �  �  �  �����������,)�)�)�)�)�5�5�5�5�����(@�@�@�@�0 � � � �$?�?�?�?�!�!�!�!�����7�7�7�7� :� :� :� :� :� :rDr,c �t�eZdZdddddddddd� d(d�Zd)d�Zed*d ���Zd*d!�Zd*d"�Zd+d#�Z d,d%�Z d-d'�Z dS).r-N) rbrq�cookies�content�data�files�json�stream� extensions�methodr1rX� URL | strrb�QueryParamTypes | Nonerqrrr��CookieTypes | Noner��RequestContent | Noner��RequestData | Noner��RequestFiles | Noner�typing.Any | Noner�'SyncByteStream | AsyncByteStream | Noner�RequestExtensions | Noner2rsc ��|���|_|�t|��nt||���|_t |��|_| �int | ��|_|r"t|��� |��| ��|j� d��} t|||| t| r| � |jj��nd������\}} |�|��| |_t#| t$��r|���dSdS| |_dS)N)rbrL)rJ)r�r�r�r�boundary)�upperrr(rXr,rqr�rr+�set_cookie_headerr�r rrBr0�_preparerrAr�read) ryrrXrbrqr�r�r�r�rrrrJs r9r|zRequest.__init__sH���l�l�n�n�� �%�~�3�s�8�8�8�3�s�6�3J�3J�3J����w�'�'�� � *� 2�"�"��Z�8H�8H��� � 5� �G� � � .� .�t� 4� 4� 4� �>�'+�|�'7�'7��'G�'G�L�,�����A�#�"��!4�!4�T�\�5J�!K�!K�!K����� � � �O�G�V� �M�M�'� "� "� "� �D�K��&�*�-�-� �� � � � � � � � � �"!�D�K�K�KrD�default_headers�dict[str, str]c���|���D]B\}}|���dkr d|jvr�'|j�||���Cg}d|jv}d|jvpd|jv}|s-|jjr!|�d|jjf��|s|jdvr|�d��t||jj z��|_dS)N�transfer-encodingzContent-Length�HostzTransfer-EncodingsHost)�POST�PUT�PATCH)sContent-Length�0) rfrkrq� setdefaultrX�hostr^�netlocrr,r)ryrr;rE� auto_headers�has_host�has_content_lengths r9rzRequest._prepare�s��)�/�/�1�1� 0� 0�J�C���y�y�{�{�1�1�1�6F�$�,�6V�6V�� �L� #� #�C�� /� /� /� /�24� ��T�\�)�� �� � ,� S�0C�t�|�0S� �� <�D�H�M� <� � � ��$�(�/� :� ;� ;� ;�!� ;�d�k�5M�&M�&M� � � � 9� :� :� :��|�d�l�.>�>�?�?�� � � rDr>c�L�t|d��st���|jS�N�_content)�hasattrrr$r�s r9r�zRequest.content�s(���t�Z�(�(� #� �"�"� "��}�rDc��t|d��sst|jtj��sJ�d�|j��|_t|jt��st|j��|_|jS)�6 Read and return the request content. r$rD)r%rAr�typing�Iterabler�r$rr�s r9rz Request.read�st���t�Z�(�(� 8��d�k�6�?�;�;� ;� ;�;��H�H�T�[�1�1�D�M��d�k�:�6�6� 8�)���7�7�� ��}�rDc��:K�t|d��s�t|jtj��sJ�d�d�|j2���d{V����|_t|jt��st|j��|_|jS)r'r$rDc��"K�g|3d{V��}|�� 6Srur��r��parts r9r�z!Request.aread.<locals>.<listcomp>�s.����%I�%I�%I�%I�%I�%I�%I�%I�T�d�%I�%I�%I�%I��N)r%rArr(� AsyncIterabler�r$rr�s r9�areadz Request.aread�s������t�Z�(�(� 8��d�k�6�+?�@�@� @� @�@��H�H�%I�%I�T�[�%I�%I�%I�%I�%I�%I�%I�%I�%I�J�J�D�M��d�k�:�6�6� 8�)���7�7�� ��}�rDc�d�|jj}t|j��}d|�d|j�d|�d�S)N�<r�r�z)>)r�r�r1rXr)ryr�rXs r9r�zRequest.__repr__�s<���^�,� ��$�(�m�m��:�:�:�:�� �:�:��:�:�:�:rD�dict[str, typing.Any]c�H�d�|j���D��S)Nc�"�i|] \}}|dv� ||�� S))rrr��r��namerEs r9r�z(Request.__getstate__.<locals>.<dictcomp>�s4�� � � ���e��3�3�3� �%�3�3�3rD��__dict__rfr�s r9� __getstate__zRequest.__getstate__��1�� � �#�}�2�2�4�4� � � � rD�statec��|���D]\}}t|||���i|_t��|_dSru)rf�setattrrr r�ryr<r7rEs r9� __setstate__zRequest.__setstate__�sJ�� �;�;�=�=� '� '�K�D�%� �D�$�� &� &� &� &����&�(�(�� � � rD)rr1rXrrbrrqrrr�rr�rr�rr�r rr rr rr r2rs�rrr2rs�r2r>r��r2r3�r<r3r2rs) r�r�r�r|rr�r�rr0r�r:r@r�rDr9r-r-~s������� *.�&*�&*�)-�#'�%)�"&�:>�/3�8!�8!�8!�8!�8!�8!�t@�@�@�@�*�����X�� � � � � � � � �;�;�;�;�  � � � �)�)�)�)�)�)rDr-c ��eZdZddddddddddd� d[d�Zd\d�Zed]d ���Zejd^d"���Zed_d$���Zejd`d&���Zedad(���Z edad)���Z edbd+���Z edcd-���Z edad.���Z eddd/���Zejded0���Zeddd1���Zdfd3�Zedgd5���Zedgd6���Zedgd7���Zedgd8���Zedgd9���Zedgd:���Zedgd;���Zdhd<�Zdid>�Zedjd@���ZedkdB���ZedldC���ZdadD�ZdmdF�ZdndH�ZdcdI�Z dodpdM�Z!dodqdO�Z"drdP�Z#dodpdQ�Z$dsdR�Z%dcdS�Z& dodtdU�Z' dodudW�Z(dvdX�Z) dodtdY�Z*dsdZ�Z+dS)wr.Nr~) rqr��text�htmlrr�requestr�history�default_encoding� status_coder�rqrrr��ResponseContent | NonerFr=rGrr�rr rH�Request | Noner�ResponseExtensions | NonerI�list[Response] | NonerJ�#str | typing.Callable[[bytes], str]r2rsc ��||_t|��|_||_d|_| �int | ��|_| �gnt| ��|_d|_ d|_ | |_ |�[t||||��\}}|� |��||_t|t ��r|���n||_d|_dS)NFr)rKr,rq�_request� next_requestr�rrwrI� is_closed�is_stream_consumedrJr rrrArr�_num_bytes_downloaded) ryrKrqr�rFrGrrrHrrIrJs r9r|zResponse.__init__s���'����w�'�'�� �(/�� �-1��� *� 2�"�"��Z�8H�8H���$�_�r�r�$�w�-�-�� ����"'��� 0��� �>�-�g�t�T�4�H�H�O�G�V� �M�M�'� "� "� "� �D�K��&�*�-�-� �� � � � � ��!�D�K�%&��"�"�"rDrrc��|���D]B\}}|���dkr d|jvr�'|j�||���CdS)Nrzcontent-length)rfrkrqr)ryrr;rEs r9rzResponse._prepare;sj��)�/�/�1�1� 0� 0�J�C���y�y�{�{�1�1�1�6F�$�,�6V�6V�� �L� #� #�C�� /� /� /� /�  0� 0rD�datetime.timedeltac�N�t|d��std���|jS)ze Returns the time taken for the complete request/response cycle to complete. �_elapsedzK'.elapsed' may only be accessed after the response has been read or closed.)r%� RuntimeErrorrZr�s r9�elapsedzResponse.elapsedBs7�� �t�Z�(�(� ��+��� ��}�rDr\c��||_dSru)rZ)ryr\s r9r\zResponse.elapsedOs ���� � � rDr-c�<�|j�td���|jS)zR Returns the request instance associated to the current response. Nz7The request instance has not been set on this response.)rRr[r�s r9rHzResponse.requestSs+�� �=� ��I��� ��}�rDrEc��||_dSru)rRr�s r9rHzResponse.request^s ���� � � rDr1c�n� |jd}|�dd���S#t$rYdSwxYw)N� http_versionr@�ignore��errorszHTTP/1.1)rr�r�)ryras r9razResponse.http_versionbsS�� A�"&�/�.�"A�L� �&�&�w�x�&�@�@� @��� � � ��:�:� ���s � &� 4�4c�� |jd}|�dd���S#t$rtj|j��cYSwxYw)N� reason_phraser@rbrc)rr�r�r�get_reason_phraserK)ryrfs r9rfzResponse.reason_phraseksf�� B�#'�?�?�#C�M�!�'�'���'�A�A� A��� =� =� =��*�4�+;�<�<� <� <� <� =���s� &�#A � A r(c��|jjS)zA Returns the URL for which the request was made. )rHrXr�s r9rXz Response.urlts�� �|��rDr>c�L�t|d��st���|jSr#)r%rr$r�s r9r�zResponse.content{s(���t�Z�(�(� $�!�#�#� #��}�rDc� �t|d��sn|j}|sd|_n]t|jpd���}d�|�|j��|���g��|_|jS)N�_textrWr~r8)r%r�rkrr0r�r��flush)ryr��decoders r9rFz Response.text�s{���t�W�%�%� V��l�G�� V��� � �%�t�}�/G��H�H�H���W�W�g�n�n�T�\�&B�&B�G�M�M�O�O�%T�U�U�� ��z�rDc� �t|d��sm|j}|�t|��sLt|jt ��r|j}n*t|d��r|�|j��}|pd|_|jS)a� Return an encoding to use for decoding the byte content into text. The priority for determining this is given by... * `.encoding = <>` has been set explicitly. * The encoding as specified by the charset parameter in the Content-Type header. * The encoding as determined by `default_encoding`, which may either be a string like "utf-8" indicating the encoding to use, or may be a callable which enables charset autodetection. rxNr$r~)r%�charset_encodingr:rArJr1r$rx)ryr0s r9r0zResponse.encoding�s����t�[�)�)� 1��,�H���'9�(�'C�'C���d�3�S�9�9�D�#�4�H�H��T�:�.�.�D�#�4�4�T�]�C�C�H�%�0��D�N��~�rDc�R�t|d��rtd���||_dS)z� Set the encoding to use for decoding the byte content into text. If the `text` attribute has been accessed, attempting to set the encoding will throw a ValueError. rkz?Setting encoding after `text` has been accessed is not allowed.N)r%r]rxr�s r9r0zResponse.encoding�s8�� �4�� !� !� ��Q��� �����rDc�\�|j�d��}|�dSt|��S)zO Return the encoding, as specified by the Content-Type header. z Content-TypeN)rqr�rS)ryrJs r9rozResponse.charset_encoding�s2�� �|�'�'��7�7� � � ��4�*�<�8�8�8rDrc���t|d��s�g}|j�dd���}|D]c}|������} t |}|�|�����T#t$rY�`wxYwt|��dkr|d|_ n<t|��dkrt|���|_ nt��|_ |j S)z� Returns a decoder instance which can be used to decode the raw byte content, depending on the Content-Encoding used in the response. �_decoderzcontent-encodingT)r�rr)�children) r%rqr�rZrkr r^r�r�rsrr)ry�decodersr�rE� decoder_clss r9�_get_content_decoderzResponse._get_content_decoder�s�� �t�Z�(�(� 2�-/�H��\�*�*�+=�D�*�Q�Q�F�� � ��� � � � �+�+�-�-���"4�U�";�K��O�O�K�K�M�M�2�2�2�2�������H������8�}�}��!�!� (�� �� � ��X����"�"� ,�h� ?� ?� ?�� � � /� 1� 1�� ��}�s�*B� B�Br3c�4�tj|j��S)zU A property which is `True` for 1xx status codes, `False` otherwise. )r�is_informationalrKr�s r9ryzResponse.is_informational�s�� �%�d�&6�7�7�7rDc�4�tj|j��S)zU A property which is `True` for 2xx status codes, `False` otherwise. )r� is_successrKr�s r9r{zResponse.is_success�s�� ��� 0�1�1�1rDc�4�tj|j��S)a A property which is `True` for 3xx status codes, `False` otherwise. Note that not all responses with a 3xx status code indicate a URL redirect. Use `response.has_redirect_location` to determine responses with a properly formed URL redirection. )r� is_redirectrKr�s r9r}zResponse.is_redirect�s��� ��!1�2�2�2rDc�4�tj|j��S)zU A property which is `True` for 4xx status codes, `False` otherwise. )r�is_client_errorrKr�s r9rzResponse.is_client_error���� �$�T�%5�6�6�6rDc�4�tj|j��S)zU A property which is `True` for 5xx status codes, `False` otherwise. )r�is_server_errorrKr�s r9r�zResponse.is_server_error�r�rDc�4�tj|j��S)z] A property which is `True` for 4xx and 5xx status codes, `False` otherwise. )r�is_errorrKr�s r9r�zResponse.is_error�s�� �~�d�.�/�/�/rDc��|jtjtjtjtjtjfvod|jvS)zs Returns True for 3xx responses with a properly formed URL redirection, `False` otherwise. �Location)rKr�MOVED_PERMANENTLY�FOUND� SEE_OTHER�TEMPORARY_REDIRECT�PERMANENT_REDIRECTrqr�s r9�has_redirect_locationzResponse.has_redirect_locationsH�� � ��'�� ����(��(� � � +��d�l�*� rDc���|j}|�td���|jr|S|jrd}nd}|jdz}dddd d �}|�|d ��}|�||� ��}t|||� ���)z> Raise the `HTTPStatusError` if one occurred. NzYCannot call `raise_for_status` as the request instance has not been set on this response.z�{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}' Redirect location: '{0.headers[location]}' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}z�{error_type} '{0.status_code} {0.reason_phrase}' for url '{0.url}' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/{0.status_code}�dzInformational responsezRedirect responsez Client errorz Server error)r���zInvalid status code)� error_type)rH�response)rRr[r{r�rKr��formatr)ryrHrO� status_class� error_typesr�s r9�raise_for_statuszResponse.raise_for_statuss����-�� �?��>��� � �?� ��K� � %� �w� �G�w� � �'�3�.� �'�"���  � � � !�_�_�\�3H�I�I� ��.�.��*�.�=�=���g�w��F�F�F�FrD�kwargsc �0�tj|jfi|��Sru)�jsonlib�loadsr�)ryr�s r9rz Response.json?s���}�T�\�4�4�V�4�4�4rDr+c��t|d��s-t��|_|j�|��|jS)N�_cookies)r%r+r��extract_cookiesr�s r9r�zResponse.cookiesBs=���t�Z�(�(� 0�#�I�I�D�M� �M� )� )�$� /� /� /��}�rD� dict[str | None, dict[str, str]]c�p�|j�d��}|�iSd�t|��D��S)zI Returns the parsed header links of the response, if any rcNc�d�i|]-}|�d��p|�d��|��.S)�relrX)r�)r�rcs r9r�z"Response.links.<locals>.<dictcomp>RsC�� � � ���X�X�e�_�_� /�������$� � � rD)rqr�re)ry�headers r9r_zResponse.linksIsL�� ��!�!�&�)�)�� �>��I� � �+�F�3�3� � � � rDc��|jSru)rVr�s r9�num_bytes_downloadedzResponse.num_bytes_downloadedWs ���)�)rDc�(�d|j�d|j�d�S)Nz <Response [� �]>)rKrfr�s r9r�zResponse.__repr__[s!��F�T�-�F�F��0B�F�F�F�FrDr3c�H�d�|j���D��S)Nc�"�i|] \}}|dv� ||�� S))rrrTrsr�r6s r9r�z)Response.__getstate__.<locals>.<dictcomp>_s4�� � � ���e��L�L�L� �%�L�L�LrDr8r�s r9r:zResponse.__getstate__^r;rDr<c��|���D]\}}t|||���d|_i|_t ��|_dS)NT)rfr>rTrr rr?s r9r@zResponse.__setstate__esQ�� �;�;�=�=� '� '�K�D�%� �D�$�� &� &� &� &�������&�(�(�� � � rDc��t|d��s,d�|�����|_|jS)�7 Read and return the response content. r$rD)r%r�� iter_bytesr$r�s r9rz Response.readls;���t�Z�(�(� 8��H�H�T�_�_�%6�%6�7�7�D�M��}�rD� chunk_size� int | None�typing.Iterator[bytes]c#�K�t|d��rb|�t|j��n|}tdt|j��t |d����D]}|j|||z�V��dS|���}t |���}t|j���5|� ��D]3}|� |��}|� |��D]}|V���4|� ��}|� |��D]}|V��|� ��D]}|V�� ddd��dS#1swxYwYdS�z� A byte-iterator over the decoded response content. This allows us to handle gzip, deflate, brotli, and zstd encoded responses. r$Nrr�r��rH) r%r�r$�range�maxrwr rrR�iter_rawr�rl�ryr��irm�chunker� raw_bytes�decoded�chunks r9r�zResponse.iter_bytests����� �4�� $� $� �/9�/A��T�]�+�+�+�z�J��1�c�$�-�0�0�#�j�!�2D�2D�E�E� 8� 8���m�A��J��$6�7�7�7�7�7� 8� 8��/�/�1�1�G�!�Z�8�8�8�G� ���7�7�7� � �!%�����$�$�I�%�n�n�Y�7�7�G�!(����!8�!8�$�$��#� � � � �$�!�-�-�/�/��$�^�^�G�4�4� � �E��K�K�K�K�$�]�]�_�_� � �E��K�K�K�K� � � � � � � � � � � � � ���� � � � � � s�.BE�E�E�typing.Iterator[str]c#��K�t|jpd���}t|���}t|j���5|���D]3}|�|��}|�|��D]}|V���4|���}|�|��D]}|V��|���D]}|V�� ddd��dS#1swxYwYdS�z� A str-iterator over the decoded response content that handles both gzip, deflate, etc but also detects the content's string encoding. r~r8r�r�N)rr0rrrRr�r�rl�ryr�rmr�� byte_content� text_contentr�s r9� iter_textzResponse.iter_text�sU���� �t�}�'?��@�@�@����4�4�4�� �T�]� 3� 3� 3� � � $��� 1� 1� � � �&�~�~�l�;�;� �$�^�^�L�9�9� � �E��K�K�K�K� �"�=�=�?�?�L� ��� �5�5� � ��� � � � � ����� � ��� � � � � � � � � � � � � � � � � ���� � � � � � s�BC!�!C%�(C%c#� K�t��}t|j���5|���D]}|�|��D]}|V���|���D]}|V�� ddd��dS#1swxYwYdS�Nr�)rrrRr�r�rl�ryrmrF�lines r9� iter_lineszResponse.iter_lines�s������-�-�� �T�]� 3� 3� 3� � ����(�(� � ��#�N�N�4�0�0���D��J�J�J�J��� � ��� � ��� � � � � �  � � � � � � � � � � � ���� � � � � � s�AB�B� Bc#�,K�|jrt���|jrt���t |jt ��std���d|_d|_t|���}t|j ���5|jD];}|xjt|��z c_|� |��D]}|V���< ddd��n #1swxYwY|���D]}|V��|���dS)�@ A byte-iterator over the raw response content. z5Attempted to call a sync iterator on an async stream.Trr�r�N)rUrrTrrArr'r[rVr rrRr�r�rl�close�ryr�r��raw_stream_bytesr�s r9r�zResponse.iter_raw�st���� � "� #� �"�"� "� �>� !��.�.� ��$�+�~�6�6� X��V�W�W� W�"&���%&��"���4�4�4�� �T�]� 3� 3� 3� � �$(�K� � � ��*�*�c�2B�.C�.C�C�*�*�$�^�^�,<�=�=� � �E��K�K�K�K� � � � � � � � � � � � � ���� � � � � �]�]�_�_� � �E��K�K�K�K� � � � � � � � s� AC�C�!Cc��t|jt��std���|jsPd|_t |j���5|j���ddd��dS#1swxYwYdSdS)�� Close the response and release the connection. Automatically called if the response body is read to completion. z3Attempted to call an sync close on an async stream.Tr�N)rArr'r[rTrrRr�r�s r9r�zResponse.close�s��� �$�+�~�6�6� V��T�U�U� U��~� $�!�D�N� ���7�7�7� $� $�� �!�!�#�#�#� $� $� $� $� $� $� $� $� $� $� $� $���� $� $� $� $� $� $� $� $s� A4�4A8�;A8c��K�t|d��s<d�d�|���2���d{V����|_|jS)r�r$rDc��"K�g|3d{V��}|�� 6Srur�r,s r9r�z"Response.aread.<locals>.<listcomp>�s.����%P�%P�%P�%P�%P�%P�%P�%P�T�d�%P�%P�%P�%Pr.N)r%r�� aiter_bytesr$r�s r9r0zResponse.aread�sc�����t�Z�(�(� R��H�H�%P�%P�T�=M�=M�=O�=O�%P�%P�%P�%P�%P�%P�%P�%P�%P�Q�Q�D�M��}�rD�typing.AsyncIterator[bytes]c��K�t|d��rc|�t|j��n|}tdt|j��t |d����D]}|j|||z�WV��dS|���}t |���}t|j���5|� ��23d{V��}|� |��}|� |��D]}|WV���:6|� ��}|� |��D]}|WV��|� ��D]}|WV�� ddd��dS#1swxYwYdSr�) r%r�r$r�r�rwr rrR� aiter_rawr�rlr�s r9r�zResponse.aiter_bytes�s����� �4�� $� $� �/9�/A��T�]�+�+�+�z�J��1�c�$�-�0�0�#�j�!�2D�2D�E�E� 8� 8���m�A��J��$6�7�7�7�7�7�7� 8� 8��/�/�1�1�G�!�Z�8�8�8�G� ���7�7�7� � �'+�~�~�'7�'7�$�$�$�$�$�$�$�)�%�n�n�Y�7�7�G�!(����!8�!8�$�$��#� � � � � �$�(8�"�-�-�/�/��$�^�^�G�4�4� � �E��K�K�K�K�K�$�]�]�_�_� � �E��K�K�K�K�K� � � � � � � � � � � � � ���� � � � � � s�/E�C>� BE�E�!E�typing.AsyncIterator[str]c��K�t|jpd���}t|���}t|j���5|���23d{V��}|�|��}|�|��D]}|WV���:6|���}|�|��D]}|WV��|���D]}|WV�� ddd��dS#1swxYwYdSr�)rr0rrrRr�r�rlr�s r9� aiter_textzResponse.aiter_text�s}�����t�}�'?��@�@�@����4�4�4�� �T�]� 3� 3� 3� � �&*�&6�&6�&8�&8� � � � � � � �l�&�~�~�l�;�;� �$�^�^�L�9�9� � �E��K�K�K�K�K� �'9�#�=�=�?�?�L� ��� �5�5� � ��� � � � � � ����� � ��� � � � � � � � � � � � � � � � � � ���� � � � � � s�C*�B�BC*�*C.�1C.c�0K�t��}t|j���5|���23d{V��}|�|��D]}|WV���%6|���D]}|WV�� ddd��dS#1swxYwYdSr�)rrrRr�r�rlr�s r9� aiter_lineszResponse.aiter_liness�����-�-�� �T�]� 3� 3� 3� � �"�o�o�/�/� � � � � � � �d�#�N�N�4�0�0���D��J�J�J�J�J��0� � � ��� � ��� � � � � � �  � � � � � � � � � � � ���� � � � � � s�B �A �<B � B�Bc�HK�|jrt���|jrt���t |jt ��std���d|_d|_t|���}t|j ���5|j23d{V��}|xjt|��z c_|� |��D]}|WV���B6 ddd��n #1swxYwY|���D]}|WV��|����d{V��dS)r�z6Attempted to call an async iterator on an sync stream.Trr�r�N)rUrrTrrArrr[rVr rrRr�r�rl�acloser�s r9r�zResponse.aiter_raw s����� � "� #� �"�"� "� �>� !��.�.� ��$�+��7�7� Y��W�X�X� X�"&���%&��"���4�4�4�� �T�]� 3� 3� 3� � �*.�+� � � � � � � �&��*�*�c�2B�.C�.C�C�*�*�$�^�^�,<�=�=� � �E��K�K�K�K�K� �+6�+� � � � � � � � � � � ���� � � � � �]�]�_�_� � �E��K�K�K�K�K��k�k�m�m���������s� C!�C�=C!�!C%�(C%c��K�t|jt��std���|jsVd|_t |j���5|j����d{V��ddd��dS#1swxYwYdSdS)r�z3Attempted to call an async close on an sync stream.Tr�N)rArrr[rTrrRr�r�s r9r�zResponse.aclose)s����� �$�+��7�7� V��T�U�U� U��~� +�!�D�N� ���7�7�7� +� +��k�(�(�*�*�*�*�*�*�*�*�*� +� +� +� +� +� +� +� +� +� +� +� +���� +� +� +� +� +� +� +� +s� A<�<B�B)rKr�rqrrr�rLrFr=rGr=rr�rr rHrMrrNrIrOrJrPr2rsrA)r2rX)r\rXr2rs)r2r-)rEr-r2rsr�)r2r(rB)r2r=r�)r2r�r2r3)r2r.)r�r�r2r�)r2r+)r2r�r�rCrDru)r�r�r2r�)r�r�r2r��r2r�)r2rs)r�r�r2r�)r�r�r2r�)r2r�),r�r�r�r|rr�r\r�rHrarfrXr�rFr0rorwryr{r}rr�r�r�r�rr�r_r�r�r:r@rr�r�r�r�r�r0r�r�r�r�r�r�rDr9r.r.s������� '+�*.����:>�"&�04�)-�@G�5'�5'�5'�5'�5'�5'�n0�0�0�0�� � � ��X� � �^� � � ��^� ������X�� �^�����^���A�A�A��X�A��B�B�B��X�B�� � � ��X� � �����X�� �����X�������X��*�_� � � ��_� ��9�9�9��X�9�����2�8�8�8��X�8� �2�2�2��X�2� � 3� 3� 3��X� 3��7�7�7��X�7� �7�7�7��X�7� �0�0�0��X�0� � � � ��X� �,#G�#G�#G�#G�J5�5�5�5������X�� �  �  �  ��X�  ��*�*�*��X�*�G�G�G�G� � � � �)�)�)�)����� � � � � �.�����&���������4 $� $� $� $�����(,� � � � � �4(,������*����(,������8 +� +� +� +� +� +rDr.c���eZdZdZd*d+d�Zd,d �Zd-d �Zd.d/d�Z d0d1d�Z d2d3d�Z d2d4d�Z d*d+d�Z d5d�Z d6d�Z d7d�Zd8d �Zd9d"�Zd:d$�Zd;d%�ZGd&�d'ejj��ZGd(�d)��ZdS)<r+z- HTTP Cookies, as a mutable mapping. Nr�rr2rsc�&�|�t|t��r\t��|_t|t��r0|���D]\}}|�||���dSdSt|t ��r3t��|_|D]\}}|�||���dSt|t��r9t��|_|jD]}|j�|���dS||_dSru) rAr�r�jarrf�setrwr+� set_cookie)ryr�r;rE�cookies r9r|zCookies.__init__<s'�� �?�j��$�7�7�?� �{�{�D�H��'�4�(�(� )�")�-�-�/�/�)�)�J�C���H�H�S�%�(�(�(�(� )� )�)�)� ��� &� &� � �{�{�D�H�%� %� %� ��U�����e�$�$�$�$� %� %� ��� )� )� � �{�{�D�H�!�+� ,� ,����#�#�F�+�+�+�+� ,� ,��D�H�H�HrDr�r.c��|�|��}|�|j��}|j�||��dS)zO Loads any cookies based on the response `Set-Cookie` headers. N)�_CookieCompatResponse�_CookieCompatRequestrHr�r�)ryr��urllib_response�urllib_requests r9r�zCookies.extract_cookiesMsK���4�4�X�>�>���2�2�8�3C�D�D�� �� � ��.�A�A�A�A�ArDrHr-c�d�|�|��}|j�|��dS)zM Sets an appropriate 'Cookie:' HTTP header on the `Request`. N)r�r��add_cookie_header)ryrHr�s r9rzCookies.set_cookie_headerVs3���2�2�7�;�;�� ��"�"�>�2�2�2�2�2rDrW�/r7r1rE�domain�pathc��idd�d|�d|�dd�dd�d |�d t|���d |�d ���d |�dt|���dd�dd�dd�dd�dd�dddi�dd�}tdi|��}|j�|��dS)zU Set a cookie value by name. May optionally include domain and path. �versionrr7rE�portN�port_specifiedFr��domain_specified�domain_initial_dot�.r��path_specified�secure�expires�discardT�comment� comment_url�rest�HttpOnly�rfc2109r�)r3� startswithrr�r�)ryr7rEr�r�r�r�s r9r�z Cookies.set]s!�� � �q� � �D� � �U� � �D�  � �e�  � �f�  � ��V� � � � !�&�"3�"3�C�"8�"8� � �D� � �d�4�j�j� � �e� � �t� � �t� � �t� � �4� � �Z��&�! �" �u�# ��&�!�!�&�!�!�� ����F�#�#�#�#�#rDr�r=c��d}|jD]D}|j|kr7|� |j|kr*|� |j|kr|�d|��}t |���|j}�E|�|S|S)z� Get a cookie by name. May optionally include domain and path in order to specify exactly which cookie to retrieve. Nz!Multiple cookies exist with name=)r�r7r�r�rrE)ryr7r�r�r�rEr�rOs r9r�z Cookies.getws������h� -� -�F��{�d�"�"��>�V�]�f�%<�%<��|�v�{�d�':�':� �,�&P�$�&P�&P�G�"0��"9�"9�9� &� ��� �=��N�� rDc����������|j������S���fd�|jD��}|D]-}|j�|j|j|j���.dS)z� Delete a cookie by name. May optionally include domain and path in order to specify exactly which cookie to delete. Nc�^��g|])}|j�kr�� |j�kr�� |j�k�'|��*Sru)r7r�r�)r�r�r�r7r�s ���r9r�z"Cookies.delete.<locals>.<listcomp>�sT��� � � ���{�d�"�"���6�=�F�#:�#:������!4�!4� �"5�!4�!4rD)r��clearr�r�r7)ryr7r�r��remover�s ``` r9�deletezCookies.delete�s������ � �$�"2��8�>�>�&�$��5�5� 5� � � � � � ��(� � � ��� D� D�F� �H�N�N�6�=�&�+�v�{� C� C� C� C� D� DrDc��g}|�|�|��|�|�J�|�|��|jj|�dS)z� Delete all cookies. Optionally include a domain and path in order to only delete a subset of all the cookies. N)r^r�r)ryr�r��argss r9rz Cookies.clear�s\�� �� � � �K�K�� � � � � ��%�%�%� �K�K�� � � ���������rDc�l�t|��}|jD]}|j�|���dSru)r+r�r�)ryr�r�s r9r�zCookies.update�sC���'�"�"���k� (� (�F� �H� � �� '� '� '� '� (� (rDc�.�|�||��Sru)r��ryr7rEs r9r�zCookies.__setitem__�s���x�x��e�$�$�$rDc�R�|�|��}|�t|���|Sru)r�r�r s r9r�zCookies.__getitem__�s'��������� �=��4�.�.� �� rDc�,�|�|��Sru)r)ryr7s r9r�zCookies.__delitem__�s���{�{�4� � � rDr�c�*�t|j��Sru)r�r�r�s r9r�zCookies.__len__�s���4�8�}�}�rDr�c�$�d�|jD��S)Nc3�$K�|] }|jV�� dSru)r7�r�r�s r9� <genexpr>z#Cookies.__iter__.<locals>.<genexpr>�s$����3�3��� �3�3�3�3�3�3rD�r�r�s r9r�zCookies.__iter__�s��3�3�$�(�3�3�3�3rDr3c��|jD]}dSdS)NTFr)ryr�s r9�__bool__zCookies.__bool__�s���� � �A��4�4��urDc�V�d�d�|jD����}d|�d�S)Nr�c �D�g|]}d|j�d|j�d|j�d���S)z<Cookie rYz for z />)r7rEr�rs r9r�z$Cookies.__repr__.<locals>.<listcomp>�sJ�� � � ��O�6�;�N�N���N�N�F�M�N�N�N� � � rDz <Cookies[r�)r�r�)ry� cookies_reprs r9r�zCookies.__repr__�sF���y�y� � �"�h� � � � � � �,�<�+�+�+�+rDc�0��eZdZdZd �fd� Zd �fd � Z�xZS) �Cookies._CookieCompatRequest�� Wraps a `Request` instance up in a compatibility interface suitable for use with `CookieJar` operations. rHr-r2rsc���t���t|j��t |j��|j���||_dS)N)rXrqr)�superr|r1rXr�rqrrH)ryrHr�s �r9r|z%Cookies._CookieCompatRequest.__init__�sP��� �G�G� � ��� �$�$��W�_�-�-��~� � � � � #�D�L�L�LrDr;r1rEc�j��t���||��||jj|<dSru)r�add_unredirected_headerrHrq)ryr;rEr�s �r9r!z4Cookies._CookieCompatRequest.add_unredirected_header�s2��� �G�G� +� +�C�� 7� 7� 7�(-�D�L� �� %� %� %rD�rHr-r2rsr�)r�r�r�r�r|r!� __classcell__)r�s@r9r�r�se������� � �  #� #� #� #� #� #� .� .� .� .� .� .� .� .� .� .rDr�c�"�eZdZdZd d�Zd d�Zd S) �Cookies._CookieCompatResponserr�r.r2rsc��||_dSru)r�)ryr�s r9r|z&Cookies._CookieCompatResponse.__init__�s ��$�D�M�M�MrD�email.message.Messagec��tj���}|jj���D] \}}|||<� |Sru)rNrOrPr�rqr�)ry�infor;rEs r9r)z"Cookies._CookieCompatResponse.info�sK���=�(�(�*�*�D�"�m�3�?�?�A�A� "� "� ��U�"��S� � ��KrDN�r�r.r2rs)r2r')r�r�r�r�r|r)r�rDr9r�r%�sF������ � �  %� %� %� %� � � � � � rDr�ru)r�rr2rsr*r")rWr�) r7r1rEr1r�r1r�r1r2rs)NNN) r7r1r�r=r�r=r�r=r2r=r�)r7r1r�r=r�r=r2rs)r�r=r�r=r2rs)r7r1rEr1r2rs)r7r1r2r1)r7r1r2rsr�r�r�r�)r�r�r�r�r|r�rr�r�rrr�r�r�r�r�r�rr��urllibrHr-r�r�r�rDr9r+r+7s��������������"B�B�B�B�3�3�3�3�$�$�$�$�$�:#�!�� �����8"�� D�D�D�D�D�0 � � � � �(�(�(�(�(� %�%�%�%����� !�!�!�!�����4�4�4�4����� ,�,�,�,�.�.�.�.�.�v�~�5�.�.�.�$���������rDr+)r0r1r2r3ru)r;r<r0r=r2r>)rEr<r0r=r2r>)rJr1r2r=)rEr1r2rT)rfrgr2rh)J� __future__rr5�datetime� email.messagerNrr�r[r(�urllib.requestr+�collections.abcr�http.cookiejarrrr$rr r r � _decodersr r rrrrrr� _exceptionsrrrrrrr� _multipartr� _status_codesr�_typesrrrr r!r"r#r$r%r&r'�_urlsr(�_utilsr)r*�__all__rlr:rCrIrSrero�MutableMappingr1r,r-r.r+r�rDr9�<module>r;s���"�"�"�"�"�"� � � � ������������� � � � � � � � �����#�#�#�#�#�#�,�,�,�,�,�,�,�,�S�S�S�S�S�S�S�S�S�S�S�S� � � � � � � � � � � � � � � � � � � � �������������������A�@�@�@�@�@� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �������+�+�+�+�+�+�+�+� 7� 7� 7��$�&;�<������N�N�N�N�N�-�-�-�-�-�1�1�1�1�"�"�"�"�J����p:�p:�p:�p:�p:�f�#�C��H�-�p:�p:�p:�fB)�B)�B)�B)�B)�B)�B)�B)�Jq+�q+�q+�q+�q+�q+�q+�q+�hF�F�F�F�F�f�#�C��H�-�F�F�F�F�FrD
Memory