� K�g] ����ddlmZddlZddlZddlZddlZddlmZddlm Z ej rddl m Z d"d �Z d#d �Zd$d%d�Zd$d&d�Zd'd�Zd(d�Zd)d�ZGd�d��Zd*d �Zd*d!�ZdS)+�)� annotationsN)� getproxies�)� PrimitiveData��URL�valuer�return�strc�@�|durdS|durdS|�dSt|��S)z� Coerce a primitive data type into a string value. Note that we prefer JSON-style 'true'/'false' for boolean values here. T�trueF�falseN�)r �r s �\/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/httpx/_utils.py�primitive_value_to_strrs6��  ��}�}��v� �%����w� ���r� �u�:�:���dict[str, str | None]c���t��}i}dD]0}|�|��r||}d|vr|nd|��||�d�<�1d�|�dd���d��D��}|D]r}|dkricS|rdd|vrd ||<�t|��r d |d |��<�0t |��r d |d |�d �<�I|���d kr d |d |��<�jd |d|��<�s|S)z+Gets proxy information from the environment)�http�https�allz://zhttp://c�6�g|]}|�����S�)�strip)�.0�hosts r� <listcomp>z+get_environment_proxies.<locals>.<listcomp>/s ��S�S�S�t�d�j�j�l�l�S�S�Sr�nor�,�*Nzall://zall://[�]� localhostzall://*)r�get�split�is_ipv4_hostname�is_ipv6_hostname�lower)� proxy_info�mounts�scheme�hostname�no_proxy_hostss r�get_environment_proxiesr.sv�����J�$&�F�*���� �>�>�&� !� !� �!�&�)�H�!�X�-�-���3G�X�3G�3G� �f�>�>�>� "��T�S�z�~�~�d�B�/G�/G�/M�/M�c�/R�/R�S�S�S�N�"�4�4�� �s�?�?� �I�I�I� � 4��� � �#'��x� � �!�(�+�+� 4�.2��*��*�*�+�+�!�(�+�+� 4�04��,��,�,�,�-�-����!�!�[�0�0�.2��*��*�*�+�+�/3��+��+�+�,�� �Mr�utf-8� str | bytes�encoding�bytesc�Z�t|t��r|�|��n|S�N�� isinstancer �encode�r r1s r�to_bytesr9Os(��%/��s�%;�%;� F�5�<�<�� !� !� !��Frc�Z�t|t��r|n|�|��Sr4)r6r �decoder8s r�to_strr<Ss'���u�c�*�*� F�5�5�� � �X�0F�0F�Fr� match_type_of� typing.AnyStrc�X�t|t��r|n|���Sr4r5)r r=s r�to_bytes_or_strr@Ws#���}�c�2�2� F�5�5�� � ���Frc�R�|d|dcxkrdkr nn |dd�n|S)Nr������"rrrs r�unquoterD[s=����(�e�B�i�6�6�6�6�3�6�6�6�6�6�5��2��;�;�E�Ar�stream� typing.Any� int | Nonec�Z� |���}tj|��j}n{#tt f$rg |���}|�dtj��}|�|��n#tt f$rYYdSwxYwYnwxYw|S)zs Given a file-like stream object, return its length in number of bytes without reading it into memory. rN) �fileno�os�fstat�st_size�AttributeError�OSError�tell�seek�SEEK_END)rE�fd�length�offsets r�peek_filelike_lengthrU_s��� � �]�]�_�_����"���%���� �G� $� � � � ��[�[�]�]�F��[�[��B�K�0�0�F� �K�K�� � � � ����(� � � ��4�4�4� ���� � � ���� �Ms4�-0�B(�A B � B(� B"�B(�!B"�"B(�'B(c�R�eZdZdZdd�Zdd �Zedd ���Zdd�Zdd�Z dd�Z dS)� URLPatterna� A utility class currently used for making lookups against proxy keys... # Wildcard matching... >>> pattern = URLPattern("all://") >>> pattern.matches(httpx.URL("http://example.com")) True # Witch scheme matching... >>> pattern = URLPattern("https://") >>> pattern.matches(httpx.URL("https://example.com")) True >>> pattern.matches(httpx.URL("http://example.com")) False # With domain matching... >>> pattern = URLPattern("https://example.com") >>> pattern.matches(httpx.URL("https://example.com")) True >>> pattern.matches(httpx.URL("http://example.com")) False >>> pattern.matches(httpx.URL("https://other.com")) False # Wildcard scheme, with domain matching... >>> pattern = URLPattern("all://example.com") >>> pattern.matches(httpx.URL("https://example.com")) True >>> pattern.matches(httpx.URL("http://example.com")) True >>> pattern.matches(httpx.URL("https://other.com")) False # With port matching... >>> pattern = URLPattern("https://example.com:1234") >>> pattern.matches(httpx.URL("https://example.com:1234")) True >>> pattern.matches(httpx.URL("https://example.com")) False �patternr r �Nonec���ddlm}|rd|vrtd|�d|�d����||��}||_|jdkrdn|j|_|jd krdn|j|_|j|_|jr |jd kr d|_dS|j�d ��r@tj |jd d���}tj d |�d ���|_dS|j�d ��r@tj |jdd���}tj d|�d ���|_dStj |j��}tj d|�d ���|_dS)Nrr�:zUProxy keys should use proper URL forms rather than plain scheme strings. Instead of "z", use "z://"rrr!z*.�z^.+\.�$z^(.+\.)?�^) �_urlsr� ValueErrorrXr+r�port� host_regex� startswith�re�escape�compile)�selfrXr�url�domains r�__init__zURLPattern.__init__�s��������� � �s�'�)�)��>�&�>�>�07�>�>�>��� � �c�'�l�l���� ��J�%�/�/�b�b�S�Z�� ��(�c�/�/�B�B�s�x�� ��H�� ��x� 8�3�8�s�?�?�:>�D�O�O�O� �X� � �� &� &� 8��Y�s�x����|�,�,�F� �j�);�&�);�);�);�<�<�D�O�O�O� �X� � �� %� %� 8��Y�s�x����|�,�,�F� �j�)>�V�)>�)>�)>�?�?�D�O�O�O��Y�s�x�(�(�F� �j��V����7�7�D�O�O�Or�otherr�boolc���|jr|j|jkrdS|jr(|j�!|j�|j��sdS|j�|j|jkrdSdS)NFT)r+rrb�matchra�rgrks r�matcheszURLPattern.matches�sr�� �;� �4�;�%�,�6�6��5� �I� ���+��O�)�)�%�*�5�5�,��5� �9� �T�Y�%�*�%<�%<��5��tr�tuple[int, int, int]c�v�|j�dnd}t|j�� }t|j�� }|||fS)z� The priority allows URLPattern instances to be sortable, so that we can match from most specific to least specific. Nrr)ra�lenrr+)rg� port_priority� host_priority�scheme_prioritys r�priorityzURLPattern.priority�sB��"�Y�2���� ��T�Y���� ��t�{�+�+�+���}�o�>�>r�intc�*�t|j��Sr4)�hashrX)rgs r�__hash__zURLPattern.__hash__�s���D�L�!�!�!rc�"�|j|jkSr4)rwros r�__lt__zURLPattern.__lt__�s���}�u�~�-�-rrFc�L�t|t��o|j|jkSr4)r6rWrXros r�__eq__zURLPattern.__eq__�s ���%��,�,�N�����1N�NrN)rXr r rY)rkrr rl)r rq)r rx)rkrWr rl)rkrFr rl) �__name__� __module__� __qualname__�__doc__rjrp�propertyrwr{r}rrrrrWrWxs�������'�'�R8�8�8�8�< � � � �� ?� ?� ?��X� ?�"�"�"�"�.�.�.�.�O�O�O�O�O�OrrWr,rlc�� tj|�d��d��n#t$rYdSwxYwdS�N�/rFT)� ipaddress� IPv4Addressr%� Exception�r,s rr&r&��S�����h�n�n�S�1�1�!�4�5�5�5�5�� �����u�u����� �4� �-0� >�>c�� tj|�d��d��n#t$rYdSwxYwdSr�)r�� IPv6Addressr%r�r�s rr'r'�r�r�)r rr r )r r)r/)r r0r1r r r2)r r0r1r r r )r r r=r>r r>)r r r r )rErFr rG)r,r r rl)� __future__rr�rJrd�typing�urllib.requestr�_typesr� TYPE_CHECKINGr_rrr.r9r<r@rDrUrWr&r'rrr�<module>r�s���"�"�"�"�"�"����� � � � � � � � � � � � �%�%�%�%�%�%�!�!�!�!�!�!� ��������� � � � �.�.�.�.�bG�G�G�G�G�G�G�G�G�G�G�G�G�G�B�B�B�B�����2jO�jO�jO�jO�jO�jO�jO�jO�Z���������r
Memory