← back to Atmos Game

assets/gen/.venv/lib/python3.12/site-packages/httpx/__pycache__/_urlparse.cpython-312.pyc

128 lines

�

c�bjrH�
�N�dZddlmZddlZddlZddlZddlZddlmZdZ	dZ
dZejd	�Z
d
jedd�D�cgc]}|d
vs�e|���c}�Zd
jedd�D�cgc]}|dvs�e|���c}�Zd
jedd�D�cgc]}|dvre|���c}�Zd
jedd�D�cgc]}|dvre|���c}�Zd
jedd�D�cgc]}|dvre|���c}�Zd
jedd�D�cgc]}|dvre|���c}�Zejdj/ddddd���Zejdj/ddd���Zejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�d�Zejd�Zejd �ZGd!�d"ej:�Zd+d,d#�Zd-d$�Z d.d%�Z!d/d&�Z"d0d'�Z#d1d(�Z$d2d)�Z%d2d*�Z&ycc}wcc}wcc}wcc}wcc}wcc}w)3a�
An implementation of `urlparse` that provides URL validation and normalization
as described by RFC3986.

We rely on this implementation rather than the one in Python's stdlib, because:

* It provides more complete URL validation.
* It properly differentiates between an empty querystring and an absent querystring,
  to distinguish URLs with a trailing '?'.
* It handles scheme, hostname, port, and path normalization.
* It supports IDNA hostnames, normalizing them to their encoded form.
* The API supports passing individual components, as well as the complete URL string.

Previously we relied on the excellent `rfc3986` package to handle URL parsing and
validation, but this module provides a simpler alternative, with less indirection
required.
�)�annotationsN�)�
InvalidURLizBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~z!$&'()*+,;=z%[A-Fa-f0-9]{2}�� �)r�"�<�>�`)rr	�#r
r)	rr	r
r
r�?r�{�})rr	r
r
rrrrr�/�:�;�=�@�[�\�]�^�|)rr	r
r
rrrrrrrrrrrrrrz�(?:(?P<scheme>{scheme}):)?(?://(?P<authority>{authority}))?(?P<path>{path})(?:\?(?P<query>{query}))?(?:#(?P<fragment>{fragment}))?z([a-zA-Z][a-zA-Z0-9+.-]*)?z[^/?#]*z[^?#]*z[^#]*z.*��scheme�	authority�path�query�fragmentzA(?:(?P<userinfo>{userinfo})@)?(?P<host>{host}):?(?P<port>{port})?z(\[.*\]|[^:@]*))�userinfo�host�portz[^@]*z(\[.*\]|[^:]*))rrrrr r!r"r#z ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$z^\[.*\]$c��eZdZUded<ded<ded<ded<ded<ded	<ded
<edd��Zedd��Zdd
�Zdd�Zy)�ParseResult�strrr!r"�
int | Noner#r�
str | Nonerr c���dj|jr|j�d�ndd|jvrd|j�d�n|j|j�d|j��g�Sdg�S)Nr�@�:�[�])�joinr!r"r#��selfs �f/Users/macstudio3/Projects/atmos-game/assets/gen/.venv/lib/python3.12/site-packages/httpx/_urlparse.pyrzParseResult.authority�sz���w�w�'+�}�}�4�=�=�/��#�"�$'�4�9�9�$4�!�D�I�I�;�a� �$�)�)�#'�9�9�#8�!�D�I�I�;��
�
�	
�?A�
�
�	
�c��djd|jvrd|j�d�n|j|j�d|j��g�Sdg�S)Nrr+r,r-)r.r"r#r/s r1�netloczParseResult.netloc�sd���w�w�$'�4�9�9�$4�!�D�I�I�;�a� �$�)�)�#'�9�9�#8�!�D�I�I�;��
�
�	
�?A�
�
�	
r2c��|s|S|j|j|j|j|jd�}|j|�t
di|��S)Nr�r)rrrrr �update�urlparse)r0�kwargs�defaultss   r1�	copy_withzParseResult.copy_with�sR����K��k�k�����I�I��Z�Z��
�
�
��	������'�h�'�'r2c��|j}dj|jr|j�d�nd|rd|��nd|j|j�d|j��nd|j
�d|j
��g�Sdg�S)Nrr+�//�?�#)rr.rrrr )r0rs  r1�__str__zParseResult.__str__�s����N�N�	��w�w�%)�[�[�4�;�;�-�q�!�b�$-�"�Y�K� �2��	�	�$(�J�J�$:�!�D�J�J�<� ��'+�}�}�'@�!�D�M�M�?�#�
�
�	
�GI�
�
�	
r2N)�returnr&)r9r(rAr%)	�__name__�
__module__�__qualname__�__annotations__�propertyrr4r;r@�r2r1r%r%�sX���K��M�

�I�
��

�I�����
�
��
��
��
�(�

r2r%c	�8�t|�tkDrtd��td�|D��r7t	d�|D��}|j|�}d|�d|�d�}t|��d|vr%|d}t
|t�rt|�n||d<d|vr0|jd�xsd	}|jd
�\|d<}|d<d|vsd
|vrXt|jdd	�xsd	t��}t|jd
d	�xsd	t��}	|	r|�d
|	��n||d<d|vr7|jd�xsd	}
|
jd�\|d<}|d<|sd|d<d|vrD|jd�xsd	}d
|vr+|jd�r|j!d�s	d|�d�|d<|j#�D]�\}
}|��	t|�tkDrtd|
�d���td�|D��r:t	d�|D��}|j|�}d|
�d|�d|�d�}t|��t$|
j'|�r��td|
�d���t(j+|�}|�J�|j-�}|jd|d�xsd	}|jd|d�xsd	}|jd|d�xsd	}|jd|d�}|jd |d �}t.j+|�}|�J�|j-�}|jd|d�xsd	}|jd|d�xsd	}|jd|d�}|j1�}t|t2��}t5|�}t7||�}|d	k7}|d	k7xs|d	k7xs|du}t9|||�!�|s|rt;|�}t|t<��}|�dnt|t>��} |�dnt|t@��}!tC|||||| |!�S)"NzURL too longc3�bK�|]'}|j�xr|j����)y�w�N��isascii�isprintable��.0�chars  r1�	<genexpr>zurlparse.<locals>.<genexpr>�s+����
E���4�<�<�>�4�$�"2�"2�"4�4�4����-/c3�dK�|](}|j�s�|j�r�%|���*y�wrJrKrNs  r1rQzurlparse.<locals>.<genexpr>�s$����V�S�T�D�L�L�N�4�CS�CS�CU�D�S���0�0�0z.Invalid non-printable ASCII character in URL, z
 at position �.r#r4rr+r"�username�password��safer!�raw_pathr>rrr,r-zURL component 'z
' too longc3�bK�|]'}|j�xr|j����)y�wrJrKrNs  r1rQzurlparse.<locals>.<genexpr>s+����O���4�<�<�>�<�$�*:�*:�*<�&<�<��rRc3�dK�|](}|j�s�|j�r�%|���*y�wrJrKrNs  r1rQzurlparse.<locals>.<genexpr>s'�����%*�T�d�l�l�n�T�EU�EU�EW�D�U�rTz-Invalid non-printable ASCII character in URL z component, zInvalid URL component '�'rrr )�
has_scheme�
has_authority)"�len�MAX_URL_LENGTHr�any�next�find�
isinstance�intr&�pop�	partition�quote�
USERNAME_SAFE�
PASSWORD_SAFE�get�
startswith�endswith�items�COMPONENT_REGEX�	fullmatch�	URL_REGEX�match�	groupdict�AUTHORITY_REGEX�lower�
USERINFO_SAFE�encode_host�normalize_port�
validate_path�normalize_path�	PATH_SAFE�
QUERY_SAFE�	FRAG_SAFEr%)"�urlr9rP�idx�errorr#r4�_rVrWrZ�	seperatorr"�key�value�	url_match�url_dictrrrr�frag�authority_match�authority_dictr!�
parsed_scheme�parsed_userinfo�parsed_host�parsed_portr^r_�parsed_path�parsed_query�parsed_frags"                                  r1r8r8�s{��
�3�x�.� ���(�(��
E��
E�E��V�S�V�V���h�h�t�n��<�T�H�M�RU�QV�VW�X�	���������f�~��&0��s�&;��T����v���6�����H�%�+���,2�,<�,<�S�,A�)��v���6�&�>��V��z�V�3�����J��3�9�r�
�N������J��3�9�r�
�N��9A��z��8�*�5�x��z���V���:�:�j�)�/�R��5=�5G�5G��5L�2��v��	�6�'�?��"�F�7�O�����z�z�&�!�'�R���$�;����� 4����s�9K� ���a�[�F�6�N�
�l�l�n�
��U����5�z�N�*� �?�3�%�z�!B�C�C��O��O�O���%*�����j�j��&��C�C�5���h�m�C�5��3��!��'�'�#�3�'�1�1�%�8� �#:�3�%�q�!A�B�B�)%�.����$�I�� � � ��"�"�$�H��Z�Z��(�8�"4�
5�
;��F��
�
�;���(=�>�D�"�I��:�:�f�h�v�.�/�5�2�D��J�J�w��� 1�2�E��:�:�j�(�:�"6�7�D�&�+�+�I�6�O��&�&�&�$�.�.�0�N��z�z�*�n�Z�&@�A�G�R�H��:�:�f�n�V�4�5�;��D��:�:�f�n�V�4�5�D�
 ����M� ��
�>�O�"�4�(�K�,�T�6�:�K��"�$�J��2��M���!2�M�k��6M���$�:�]�K��]��d�#���T�	�2�K�',�}�t�%��J�:W�L�&*�l�d��d��8S�K����������r2c�t�|sytj|�r	tj|�|Stj|�r	tj|dd�|ddS|j�r$d}t|j�t|z��S	tj|j��jd�S#tj$rtd|����wxYw#tj$rtd|����wxYw#tj$rtd	|����wxYw)
NrzInvalid IPv4 address: r�����zInvalid IPv6 address: z"`{}%|\rX�asciizInvalid IDNA hostname: )�IPv4_STYLE_HOSTNAMErs�	ipaddress�IPv4Address�AddressValueErrorr�IPv6_STYLE_HOSTNAME�IPv6AddressrLrirv�
SUB_DELIMS�idna�encode�decode�	IDNAError)r"�WHATWG_SAFEs  r1rxrx\s2����	�	"�	"�4�	(�	@��!�!�$�'���	�	"�	"�4�	(�	@��!�!�$�q��*�-��A�b�z��	
����!���T�Z�Z�\�
�[�(@�A�A�=��{�{�4�:�:�<�(�/�/��8�8��=�*�*�	@��5�d�X�>�?�?�	@���*�*�	@��5�d�X�>�?�?�	@�� �>�>�=��2�4�(�;�<�<�=�s#�C�C0�1D�"C-�0"D�"D7c��|�|dk(ry	t|�}dddddd�j|�}||k(ry|S#t$rtd|����wxYw)NrzInvalid port: ��Pi�)�ftp�http�https�ws�wss)rf�
ValueErrorrrl)r#r�port_as_int�default_ports    r1ryry�sv���|�t�r�z��4��$�i��
�r�C�r�#�N�R�R���L��l�"������4��>�$��2�3�3�4�s	�4�Ac���|r|r|jd�std��|s<|s9|jd�rtd��|jd�rtd��yyy)z�
    Path validation rules that depend on if the URL contains
    a scheme or authority component.

    See https://datatracker.ietf.org/doc/html/rfc3986.html#section-3.3
    �/z7For absolute URLs, path must be empty or begin with '/'r=z3Relative URLs cannot have a path starting with '//'r+z2Relative URLs cannot have a path starting with ':'N)rmr)rr^r_s   r1rzrz�sh��������,��V�W�W��m��?�?�4� ��R�S�S��?�?�3���Q�R�R� �,�:r2c���d|vr|S|jd�}d|vrd|vr|Sg}|D]9}|dk(r�	|dk(r|s�|dgk7s�|j��)|j|��;dj|�S)z�
    Drop "." and ".." segments from a URL path.

    For example:

        normalize_path("/path/./to/somewhere/..") == "/path/to"
    rUr�z..r)�splitrg�appendr.)r�
components�output�	components    r1r{r{�s����$�������C��J��*���Z�!7����F��	�����
�$�
��&�R�D�.��
�
���M�M�)�$� ��8�8�F��r2c�p�dj|jd�D�cgc]}d|d����
c}�Scc}w)Nrzutf-8�%�02X)r.r�)�string�bytes  r1�PERCENTr��s6��
�7�7�v�}�}�W�/E�F�/E�t�a��S�z�N�/E�F�G�G��Fs�
3c��t|z}|j|�s|Sdj|D�cgc]}||vr|n
t|���c}�Scc}w)z1
    Use percent-encoding to quote a string.
    r)�UNRESERVED_CHARACTERS�rstripr.r�)r�rY�NON_ESCAPED_CHARSrPs    r1�percent_encodedr��sZ��.��4���=�=�*�+��
�
�7�7�JP�Q�&�$��*�*����
�	=�&�Q����Qs�Ac��g}d}tjt|�D]l}|j�|j	�}}|jd�}||k7r!|||}|j
t||���|j
|�|}�n|t|�k7r!||d}	|j
t|	|���dj|�S)a�
    Use percent-encoding to quote a string, omitting existing '%xx' escape sequences.

    See: https://www.rfc-editor.org/rfc/rfc3986#section-2.1

    * `string`: The string to be percent-escaped.
    * `safe`: A string containing characters that may be treated as safe, and do not
        need to be escaped. Unreserved characters are always treated as safe.
        See: https://www.rfc-editor.org/rfc/rfc3986#section-2.3
    rrXNr)
�re�finditer�PERCENT_ENCODED_REGEX�start�end�groupr�r�r`r.)
r�rY�parts�current_positionrs�start_position�end_position�matched_text�leading_text�
trailing_texts
          r1riri�s���
�E������2�F�;��',�{�{�}�e�i�i�k����{�{�1�~���-�-�!�"2�>�B�L��L�L���D�A�B�	���\�"�'��<��3�v�;�&��/�0�1�
�
���_�]��>�?�
�7�7�5�>�r2r6)rr&r9r(rAr%)r"r&rAr&)r#zstr | int | Nonerr&rAr')rr&r^�boolr_r�rA�None)rr&rAr&)r�r&rAr&)r�r&rYr&rAr&)'�__doc__�
__future__rr�r��typingr��_exceptionsrrar�r��compiler�r.�range�chrr~r}r|rjrkrw�formatrrrurpr�r��
NamedTupler%r8rxryrzr{r�r�ri)�is0r1�<module>r�s0���$#��	�
��#���I���
�"��
�
�#4�5��
�G�G��4��&�R�&��!�3Q�*Q�S��V�&�R�
�	��W�W��4��&�R�&��!�3Q�*Q�S��V�&�R��
�
�G�G��t�T�"��"�A��M�M�	�A��"��
�	�����t�T�"��"�A��G�G�	�A��"��	�
�����t�T�"��"�A��G�G�	�A��"��	�
�����t�T�"��"�A��A�A�	�A��"��	�
�"
�B�J�J�	*�

�f�+��
���
��
�	�&�"�*�*�T��f��
 �
�	
��	�� �b�j�j�5�6�����I�&��B�J�J�x� �
�R�Z�Z��
 ���
�
�4� ���
�
�7�#��B�J�J�)�*��B�J�J�t��	��!�b�j�j�!D�E�� �b�j�j��-��4
�&�#�#�4
�nD�N,=�^�6S�2�>H����KS��S��������s0�
	J	�
J	�>	J�
J�/J�J�J�?J"