HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python311/lib/python3.11/site-packages/validators/__pycache__/url.cpython-311.pyc
�

�;f���\�dZddlmZddlZddlmZddlmZmZm	Z	ddl
m
Z
ddlmZed	���Z
ed
���Zdefd�Zded
efd�Zdefd�Zded
edededededeededefd�Zdedededefd�Zedddddddddd�	ded
ededededededeededefd ���ZdS)!zURL.�)�	lru_cacheN)�Optional)�parse_qs�unquote�urlsplit�)�hostname)�	validatorc�@�tjdtj��S)Nz�(^[\u0100-\u017F\u0180-\u024F]|[-!#$%&'*+/=?^_`{}|~0-9a-z]+(\.[-!#$%&'*+/=?^_`{}|~0-9a-z]+)*$|^([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\011.])*$)��re�compile�
IGNORECASE���A/opt/alt/python311/lib/python3.11/site-packages/validators/url.py�_username_regexrs#��
�:�	G�
	�
���rc�@�tjdtj��S)Nzm^[\/a-z0-9\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@\%\U0001F600-\U0001F64F\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$rrrr�_path_regexrs"��
�:�	8�
	�
���r�valuec��|r|dvndS)zValidate scheme.>�ftp�git�irc�ssh�ftps�http�rtmp�rtsp�sftp�https�rtmps�telnetFr)rs r�_validate_schemer$(s'���		��
�	
�	
��r�skip_ipv6_addrc�d�|p.|�d��dkp|�d��S)zConfirm skip IPv6 check.�:��[)�count�
startswith)rr%s  r�_confirm_ipv6_skipr,9s4���N�U�[�[��-�-��1�N��9I�9I�#�9N�9N�5N�Nrc���|sdS|�d��x}dkr.t���t|����S|dkr!t���|��S|�dd��\}�t���|��ot�fd�dD����S)z Validate authentication segment.Tr'rc3� �K�|]}|�vV��	dS)Nr)�.0�
char_to_avoid�passwords  �r�	<genexpr>z)_validate_auth_segment.<locals>.<genexpr>Is9�����5�5�*7�
�X�%�5�5�5�5�5�5r)�/�?�#�@)r*r�matchr�rsplit�all)r�colon_count�usernamer1s   @r�_validate_auth_segmentr<>s�������t��{�{�3�'�'�'��1�,�,�� � �&�&�w�u�~�~�6�6�6��Q���� � �&�&�u�-�-�-����c�1�-�-��H�h����"�"�8�,�,���5�5�5�5�;O�5�5�5�2�2�r�skip_ipv4_addr�
may_have_port�simple_host�consider_tld�private�rfc_1034�rfc_2782c	�N�|r|�d��dkrdS|�d��dkrdtt||��sd|vr|n)|�d���ddd��t||��|||||||��	�	S|�dd��\}	}
tt|
|��sd|vr|
n)|
�d���ddd��t|
|��|||||||��	�	ot
|	��S)	zValidate netloc.r6rFz]:r)�]�)r%r=r>�maybe_simpler@rArBrC)r*r	r,�lstrip�replacer8r<)rr%r=r>r?r@rArBrC�
basic_auth�hosts           r�_validate_netlocrLNsf����E�K�K��$�$�q�(�(��u��{�{�3���!����&�e�^�<�<�;�@D��
�
����\�\�#�&�&�.�.�s�B��:�:�-�e�^�D�D�)�'�$�%����
�
�
�	
��|�|�C��+�+��J���"�$��7�7�
6�;?�5�=�=�
�D����S�!�!�)�)�#�r�1�5�5�)�$��?�?�%�#� �!�������-�!��
,�
,�-r�path�query�fragment�strict_queryc�~�d}|r1|tt���|����z}	|r)t||d���rt||d���r|dz}n(#t$r|rt||���r|dz}YnwxYw|r0|ttjd|t
j����z}|S)z"Validate path query and fragments.T�&)�strict_parsing�	separator�;)rSz[0-9a-z?/:@\-._~%!$&'()*+,;=]*)�boolrr7r�	TypeErrorr
�	fullmatchr)rMrNrOrP�optional_segmentss     r�_validate_optionalsrZ~s�����=��T�+�-�-�"5�"5�d�";�";�<�<�<��&��	&���|�s�K�K�K�	&���|�s�K�K�K�		&�
��%�����&�&�&��	&�X�e�L�A�A�A�	&���%����&�����
��T��L�:�H�b�m�T�T�
�
�	
���s�+A#�#"B�BFT)	r%r=r>r?rPr@rArBrCc	���|rtjd|��rdS	t|��\}
}}}
}n#t$rYdSwxYwt	|
��o(t|||||||||	�	�	ot
||
||��S)a�Return whether or not given value is a valid URL.

    This validator was originally inspired from [URL validator of dperini][1].
    The following diagram is from [urlly][2]::


            foo://admin:hunter1@example.com:8042/over/there?name=ferret#nose
            \_/   \___/ \_____/ \_________/ \__/\_________/ \_________/ \__/
             |      |       |       |        |       |          |         |
          scheme username password hostname port    path      query    fragment

    [1]: https://gist.github.com/dperini/729294
    [2]: https://github.com/treeform/urlly

    Examples:
        >>> url('http://duck.com')
        # Output: True
        >>> url('ftp://foobar.dk')
        # Output: True
        >>> url('http://10.0.0.1')
        # Output: True
        >>> url('http://example.com/">user@example.com')
        # Output: ValidationError(func=url, ...)

    Args:
        value:
            URL string to validate.
        skip_ipv6_addr:
            When URL string cannot contain an IPv6 address.
        skip_ipv4_addr:
            When URL string cannot contain an IPv4 address.
        may_have_port:
            URL string may contain port number.
        simple_host:
            URL string maybe only hyphens and alpha-numerals.
        strict_query:
            Fail validation on query string parsing error.
        consider_tld:
            Restrict domain to TLDs allowed by IANA.
        private:
            Embedded IP address is public if `False`, private/local if `True`.
        rfc_1034:
            Allow trailing dot in domain/host name.
            Ref: [RFC 1034](https://www.rfc-editor.org/rfc/rfc1034).
        rfc_2782:
            Domain/Host name is of type service record.
            Ref: [RFC 2782](https://www.rfc-editor.org/rfc/rfc2782).

    Returns:
        (Literal[True]): If `value` is a valid url.
        (ValidationError): If `value` is an invalid url.
    z\sF)r
�searchr�
ValueErrorr$rLrZ)rr%r=r>r?rPr@rArBrC�scheme�netlocrMrNrOs               r�urlr`�s���F��B�I�e�U�+�+���u��08����-����e�X�X�������u�u�����	�� � �	E�����������

�

�	E�
 ��e�X�|�D�D�s�1�
?�?)�__doc__�	functoolsrr
�typingr�urllib.parserrrr	�utilsr
rr�strr$rVr,r<rLrZr`rrr�<module>rgsy��
�
� ������	�	�	�	�������4�4�4�4�4�4�4�4�4�4��������������	�	���	��	�	���	��C�����"O�c�O�4�O�O�O�O�

�#�
�
�
�
� --��--��--��--��	--�
�--��
--��d�^�--��--��--�--�--�--�`�c��#����D�����2�
!� �����"���Z�Z�Z��Z��	Z�
�Z��
Z��Z��Z��Z��d�^�Z��Z��Z�Z�Z���Z�Z�Zr