o
    °3Ihn,  ã                   @  sÚ   d dl mZ d dlmZ d dlZd dlmZ ejdejdZ	e d¡Z
e d¡Zd	Zd
e Zde Zde ZdZdZe d¡Ze d¡ZeedddœƒZeedddddddddddœ
ƒZG dd„ dƒZddœd dd„ZdS )!é    )Úannotations)ÚdefaultdictN)ÚURLz^([a-z0-9.+-]+:))Úflagsz:[0-9]*$z^(//?(?!/)[^?\s]*)(\?[^\s]*)?$)ú<ú>ú"ú`ú úÚ
ú	)Ú{Ú}ú|ú\ú^r	   )ú')ú%ú/ú?ú;ú#)r   r   r   éÿ   z^[+a-z0-9A-Z_-]{0,63}$z^([+a-z0-9A-Z_-]{0,63})(.*)$T)Ú
javascriptzjavascript:)
ÚhttpÚhttpsÚftpÚgopherÚfilezhttp:zhttps:zftp:zgopher:zfile:c                   @  s*   e Zd Zddd„Zdd
d„Zddd„ZdS )Ú
MutableURLÚreturnÚNonec                 C  s4   d | _ d| _d | _d | _d | _d | _d | _d | _d S )NF)ÚprotocolÚslashesÚauthÚportÚhostnameÚhashÚsearchÚpathname)Úself© r,   úL/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/mdurl/_parse.pyÚ__init__j   s   
zMutableURL.__init__ÚurlÚstrÚslashes_denote_hostÚboolú'MutableURL'c                 C  s&  d}d}|}|  ¡ }|s/t| d¡ƒdkr/t |¡}|r/| d¡| _| d¡r-| d¡| _| S d}t |¡}|rK| ¡ }| 	¡ }|| _
|t|ƒd … }|sU|sUt d|¡rk| d¡}|rk|rbt| sk|dd … }d| _t| sÍ|sz|rÍt| sÍd	}	tttƒƒD ]}
| t|
 ¡}|d	kr™|	d	ks—||	k r™|}	q‚|	d	kr¤| d
¡}n	| d
d|	d ¡}|d	krÂ|d |… }||d d … }|| _d	}	tttƒƒD ]}
| t|
 ¡}|d	krá|	d	ksß||	k rá|}	qÊ|	d	krêt|ƒ}	|	dkrú||	d  dkrú|	d8 }	|d |	… }||	d … }|  |¡ | jpd| _| j d¡o| j d¡}|s·| j d¡}t|ƒ}d}
|
|k r·||
 }|s@|
d7 }
q.t |¡s®d}t|ƒ}d}||k rpt|| ƒdkra|d7 }n||| 7 }|d7 }||k sSt |¡s®|d |
… }||
d d … }t |¡}|r| | d¡¡ | d| d¡¡ |r§d |¡| }d |¡| _n	|
d7 }
|
|k s3t| jƒtkrÂd| _|rÍ| jdd	… | _| d¡}|d	krä||d … | _ |d |… }| d¡}|d	krû||d … | _|d |… }|r|| _t| r| jr| jsd| _| S )NÚ Fr   é   é   z^//[^@/]+@[^@/]+z//Téÿÿÿÿú@r   ú:ú[ú]Ú.é   Úxr   )!ÚstripÚlenÚsplitÚSIMPLE_PATH_PATTERNÚmatchÚgroupr*   r)   ÚPROTOCOL_PATTERNÚlowerr#   ÚreÚ
startswithÚHOSTLESS_PROTOCOLr$   ÚSLASHED_PROTOCOLÚrangeÚHOST_ENDING_CHARSÚfindÚrfindr%   ÚNON_HOST_CHARSÚ
parse_hostr'   ÚendswithÚHOSTNAME_PART_PATTERNÚordÚHOSTNAME_PART_STARTÚappendÚinsertÚjoinÚHOSTNAME_MAX_LENr(   )r+   r/   r1   Úlower_protor$   ÚrestÚsimple_pathÚprotoÚproto_matchÚhost_endÚiÚhecÚat_signr%   ÚhostÚipv6_hostnameÚ	hostpartsÚlÚpartÚnewpartÚkÚjÚvalid_partsÚnot_hostÚbitr(   Úqmr,   r,   r-   Úparset   sÚ   




ÿÿÿ€€
ÿ



ø

á!



zMutableURL.parserb   c                 C  sP   t  |¡}|r| ¡ }|dkr|dd … | _|d t|ƒ … }|r&|| _d S d S )Nr9   r5   )ÚPORT_PATTERNr)   rD   r&   r@   r'   )r+   rb   Ú
port_matchr&   r,   r,   r-   rP     s   

ÿzMutableURL.parse_hostN)r!   r"   )r/   r0   r1   r2   r!   r3   )rb   r0   r!   r"   )Ú__name__Ú
__module__Ú__qualname__r.   rn   rP   r,   r,   r,   r-   r    i   s
    


 +r    F)r1   r/   ú	URL | strr1   r2   r!   r   c             	   C  sF   t | tƒr| S tƒ }| | |¡ t|j|j|j|j|j|j	|j
|jƒS )N)Ú
isinstancer   r    rn   r#   r$   r%   r&   r'   r(   r)   r*   )r/   r1   Úur,   r,   r-   Ú	url_parse)  s   
 ÿrw   )r/   rt   r1   r2   r!   r   )Ú
__future__r   Úcollectionsr   rG   Ú
mdurl._urlr   ÚcompileÚ
IGNORECASErE   ro   rB   ÚDELIMSÚUNWISEÚAUTO_ESCAPErO   rL   rX   rR   rT   r2   rI   rJ   r    rw   r,   r,   r,   r-   Ú<module>   sL   )



þþöþ A