o
    —¨ÊhÜ  ã                   @  sæ   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZmZ zddlZdZW n ey9   d	ZY nw d
dlmZ eedd�ZeeƒZG dd„ deƒZdd„ Zdd„ ZeZ		ddd„Zddd„Zddd„Zdd„ ZdS )zURL Utilities.é    )Úannotations)ÚMapping)Úpartial)Ú
NamedTuple)Ú	parse_qslÚquoteÚunquoteÚurlparseNTFé   )Ú
get_loggerÚ )Úsafec                   @  sJ   e Zd ZU dZded< ded< ded< ded< ded< ded	< d
ed< dS )Úurlpartsz*Named tuple representing parts of the URL.ÚstrÚschemeÚhostnameÚintÚportÚusernameÚpasswordÚpathr   ÚqueryN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© r   r   úA/var/www/html/env/lib/python3.10/site-packages/kombu/utils/url.pyr      s   
 r   c           
   	   C  s¦   t | ƒ\}}}}}}}|rEdd„ | ¡ D ƒ}|D ],}	|	dkr1t||	 ƒ||	< ||	 du r1t d¡ d|vr9i |d< ||	 |d |	< ||	= qtd||||||dœ|¤ŽS )	z%Parse URL into mapping of components.c                 S  s   g | ]	}|  d ¡r|‘qS )Ússl_)Ú
startswith)Ú.0Úkeyr   r   r   Ú
<listcomp>(   s    zparse_url.<locals>.<listcomp>Ússl_cert_reqsNz%Defaulting to insecure SSL behaviour.Ússl)Ú	transportr   r   Úuseridr   Úvirtual_hostr   )Ú
_parse_urlÚkeysÚparse_ssl_cert_reqsÚloggerÚwarningÚdict)
Úurlr   Úhostr   Úuserr   r   r   r*   r"   r   r   r   Ú	parse_url#   s$   
þþr2   c              
   C  sª   t | ƒj}| t|ƒd d… }t d| ƒ}|jpd}|r(|d dkr(|dd… n|}t|t|jp1dƒp4d|jt|jp;dƒp>dt|j	pCdƒpFdt|pJdƒpMdt
t|jƒƒƒS )z5Parse URL into :class:`urlparts` tuple of components.é   Nzhttp://r   r   ú/é   )r	   r   Úlenr   r   r   r   r   r   r   r.   r   r   )r/   r   Ú
schemelessÚpartsr   r   r   r   Úurl_to_parts:   s   

 ùr9   ú**c	           
      C  s®   | › d�g}	|s
|r2|r|	  t|ƒ¡ |r-|r$|	 |rd|gndg¡ n	|	 dt|ƒg¡ |	  d¡ |	  |r:t|ƒnd¡ |rF|	 d|g¡ |	 d|g¡ d dd„ |	D ƒ¡S )z"Generate URL from component parts.ú://ú:ú@r   r4   c                 s  s   � | ]	}|rt |ƒV  qd S )N)r   )r!   Úpartr   r   r   Ú	<genexpr>c   s   € zas_url.<locals>.<genexpr>)ÚappendÚ	safequoteÚextendÚjoin)
r   r0   r   r1   r   r   r   ÚsanitizeÚmaskr8   r   r   r   Úas_urlQ   s   
rF   c                 C  s   t t| ƒd|dœŽS )z)Return copy of URL with password removed.T)rD   rE   )rF   r)   ©r/   rE   r   r   r   Úsanitize_urlf   s   rH   c                 C  s    t | tƒrd| v rt| |ƒS | S )z-Sanitize url, or do nothing if url undefined.r;   )Ú
isinstancer   rH   rG   r   r   r   Úmaybe_sanitize_urll   s   
rJ   c                 C  s.   t rtjtjtjtjtjtjdœ}||  S dS )zMGiven the query parameter for ssl_cert_reqs, return the SSL constant or None.)ÚCERT_REQUIREDÚCERT_OPTIONALÚ	CERT_NONEÚrequiredÚoptionalÚnoneN)Ússl_availabler%   rK   rL   rM   )Úquery_valueÚquery_value_to_constantr   r   r   r+   t   s   úr+   )NNNNNNFr:   )r:   )r   Ú
__future__r   Úcollections.abcr   Ú	functoolsr   Útypingr   Úurllib.parser   r   r   r	   r%   rQ   ÚImportErrorÚlogr   rA   r   r,   r   r2   r9   r)   rF   rH   rJ   r+   r   r   r   r   Ú<module>   s2    ÿ
ÿ

