File: //usr/local/lib/python3.10/dist-packages/yarl/__pycache__/_parse.cpython-310.pyc
o
���g? � @ sD d Z ddlZddlZddlmZ ddlmZ ddlmZm Z ddl
mZ dZg d �Z
ee �Zeeeeeef Zd
edefdd
�Zdeddfdd�Zededeeedf eedf eedf eedf f fdd��Zdeded
edededefdd�Ze d deedf deedf deedf deedf dedefdd��ZdS )!zURL parsing utilities.� N)� lru_cache)�Union)�scheme_chars�uses_netloc� ��QUOTERz!
)� �
�
�url�returnc C s� | � t�} tD ]}|| v r| �|d�} qd } } }}| �d�}|dkrK| d tv rK| d|� D ]}|tvr9 nq1| d|� �� | |d d� }} d| v }d| v } | dd� d kr�t| �}
|rf| rfd
}n| rkd}n|rpd}nd
}|D ]}| �|d�}|dkr�||
k r�|}
qt| d|
� }| |
d� } d|v }
d|v }|
r�|r�|r�|
s�td��|
r�|� d�d � d�d }|d dkr�t
�d|�s�td��nd|vr�td��|r�| � d�\} }}| r�| � d�\} }}|r�|�� s�t
|� ||| ||fS )zSplit URL into parts.� �:r r N�#�?� �//z/?#z/?z/#�/�[�]zInvalid IPv6 URL�vz\Av[a-fA-F0-9]+\..+\ZzIPvFuture address is invalidz%An IPv4 address cannot be in brackets)�lstrip�WHATWG_C0_CONTROL_OR_SPACE�UNSAFE_URL_BYTES_TO_REMOVE�replace�findr �lower�len�
ValueError� partition�re�match�isascii�
_check_netloc)r �b�scheme�netloc�query�fragment�i�c�has_hash�has_question_mark�delim�delim_chars�wdelim�has_left_bracket�has_right_bracket�bracketed_host�_� r5 �6/usr/local/lib/python3.10/dist-packages/yarl/_parse.py� split_url sl
�
�"����r7 r'