o
    ci                     @   s:  d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
 dZg dZeeZeeeeeef Zd	ed
efddZded
dfddZeded
eedB edB edB edB f fddZdeded	ededed
efddZe	d"dedB dedB dedB dedB ded
efddZded
eeeef  fd d!ZdS )#zURL parsing utilities.    N)	lru_cache)scheme_charsuses_netloc   )QUOTERUNQUOTER_PLUSz! 	
 )	
urlreturnc                 C   s  |  t} tD ]}|| v r| |d} qd } } }}| d}|dkrK| d tv rK| d| D ]}|tvr9 nq1| d|  | |d d }} d| v }d| v }	| dd d	krt| }
|rf|	rfd
}n|	rkd}n|rpd}nd}|D ]}| |d}|dkr||
k r|}
qt| d|
 }| |
d } d|v }d|v }|r|r|r|std|r|	dd 	dd }|r|d dkrt
d|stdnd|vrtd|r| 	d\} }}|	r| 	d\} }}|r| st| ||| ||fS )zSplit URL into parts. :r   r   N#?   //z/?#z/?z/#/[]zInvalid IPv6 URLvz\Av[a-fA-F0-9]+\..+\ZzIPvFuture address is invalidz.The IPv6 content between brackets is not valid)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_ r4   S/var/www/scraper.webshop2u.hu/html/venv/lib/python3.10/site-packages/yarl/_parse.py	split_url   sl   

"r6   r&   c                 C   sb   |  dd dd dd dd}td|}||krd S dD ]}||v r.td|  d	q d S )
N@r   r   r   r   NFKCz/?#@:znetloc 'z6' contains invalid characters under NFKC normalization)r   unicodedata	normalizer   )r&   nnormalized_netlocr*   r4   r4   r5   r#   U   s   $
r#   c                 C   s   d| vrd}d}| }n|  d\}}}|d\}}}|sd}d|v r<|d\}}}|d\}}}	|	d\}}}	n|d\}}}	|	sP|pId||pMddfS zt|	}
W n tya   tdw d|
  krodksttd	 td	|pwd||p{d|
fS )
z4Split netloc into username, password, host and port.r7   Nr   r   r   z/Invalid URL: port can't be converted to integerr   i  zPort out of range 0-65535)
rpartitionr   intr   )r&   usernamepasswordhostinfouserinfor3   have_password	bracketedhostnameport_strportr4   r4   r5   split_netlock   s2   rH   r%   r'   r(   c                 C   s   |s| r| t v s|dd dkrA|r.|dd dkr.| r&|  d| d| n|  d| }n| r9|  d| | nd| | }n	| rJ|  d| }|rS| d| }|r\| d	| S |S )
z(Unsplit a URL without any normalization.Nr   r   r   r   z://r   r   r   )USES_AUTHORITY)r%   r&   r   r'   r(   r4   r4   r5   unsplit_result   s    (&rJ   Fuserr@   hostrG   encodec                 C   s   |du rdS |}|dur| d| }| du r|du r|S |dur:| s&d} n|r,t | } |r2t |}|  d| } n| rB|rBt | } | rK|  d| S |S )zMake netloc from parts.

    The user and password are encoded if encode is True.

    The host must already be encoded with _encode_host.
    Nr   r   r7   )r   )rK   r@   rL   rG   rM   retr4   r4   r5   make_netloc   s$   rO   query_stringc                 C   sF   g }| s|S |  dD ]}|d\}}}|t|t|f q|S )zmParse a query given as a string argument.

    Works like urllib.parse.parse_qsl with keep empty values.
    &=)splitr   appendr   )rP   pairsk_vkr3   r   r4   r4   r5   query_to_pairs   s   rX   )F)__doc__r    r9   	functoolsr   urllib.parser   r   _quotersr   r   r   r   	frozensetrI   tuplestrSplitURLTyper6   r#   r>   rH   rJ   boolrO   listrX   r4   r4   r4   r5   <module>   s`    =!
"!