o
    wvXj  ã                
   @   s~  d Z ddlmZmZ zddlmZ W n ey!   ddlmZ Y nw ddlm	Z	 zddl
mZmZmZmZ W n eyO   ddlmZmZ ddlmZmZ Y nw zddlZd	ZW n eyc   d
ZY nw ddlmZmZ ddlmZ ddlmZ e	eedƒd�ZeeƒZeddefdefdefdefdefdefdefgƒ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.é    )Úabsolute_importÚunicode_literals)ÚMapping)Úpartial)Ú	parse_qslÚquoteÚunquoteÚurlparse)r   r   )r	   r   NTF)Úbytes_if_py2Ústring_té   )Ú
NamedTupleé   )Ú
get_loggerÚ )ÚsafeÚurlpartsÚschemeÚhostnameÚportÚusernameÚpasswordÚpathÚqueryc           
   	   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Úkey© r   úL/var/www/html/myproject/venv/lib/python3.10/site-packages/kombu/utils/url.pyÚ
<listcomp>1   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$   
þþr/   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	   r   Úlenr   r   r   r   r   r   r   r+   r   r   )r,   r   Ú
schemelessÚpartsr   r   r   r   Úurl_to_partsC   s   

 ùr5   ú**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.z{0}://ú:ú@r   r1   c                 s   s   � | ]	}|rt |ƒV  qd S )N)Ústr)r   Úpartr   r   r   Ú	<genexpr>j   s   € zas_url.<locals>.<genexpr>)ÚformatÚappendÚ	safequoteÚextendÚjoin)
r   r-   r   r.   r   r   r   ÚsanitizeÚmaskr4   r   r   r   Úas_urlX   s   
rC   c                 C   s   t t| ƒd|dœŽS )z)Return copy of URL with password removed.T)rA   rB   )rC   r&   ©r,   rB   r   r   r   Úsanitize_urlm   s   rE   c                 C   s    t | tƒrd| v rt| |ƒS | S )z-Sanitize url, or do nothing if url undefined.z://)Ú
isinstancer   rE   rD   r   r   r   Úmaybe_sanitize_urls   s   
rG   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"   rH   rI   rJ   )Úquery_valueÚquery_value_to_constantr   r   r   r(   {   s   úr(   )NNNNNNFr6   )r6   )&Ú__doc__Ú
__future__r   r   Úcollections.abcr   ÚImportErrorÚcollectionsÚ	functoolsr   Úurllib.parser   r   r   r	   Úurllibr"   rN   Ú
kombu.fiver
   r   Úcompatr   Úlogr   r>   Ú__name__r)   r9   Úintr   r/   r5   r&   rC   rE   rG   r(   r   r   r   r   Ú<module>   sV    ÿþÿù
ÿ

