
    IhE                        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 	 ddlZdZd
dlmZ  eed      Z ee      Z G d de      Zd Zd ZeZ	 	 ddZddZddZd Zy# e$ r d	ZY Fw xY w)zURL Utilities.    )annotations)Mapping)partial)
NamedTuple)	parse_qslquoteunquoteurlparseNTF   )
get_logger )safec                  X    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<   y)urlpartsz*Named tuple representing parts of the URL.strschemehostnameintportusernamepasswordpathr   queryN)__name__
__module____qualname____doc____annotations__     H/var/www/html/planif/env/lib/python3.12/site-packages/kombu/utils/url.pyr   r      s(    4KM
IMM
INr    r   c           
        t        |       \  }}}}}}}|r|j                         D cg c]  }|j                  d      s| }	}|	D ]h  }|dk(  r||   j                         dk7  ||<   n0|dk(  r+t	        ||         ||<   ||   t
        j                  d       d|vri |d<   ||   |d   |<   ||= j t        d||||||d|S c c}w )	z%Parse URL into mapping of components.ssl_ssl_check_hostnamefalsessl_cert_reqsz%Defaulting to insecure SSL behaviour.ssl)	transportr   r   useridr   virtual_hostr   )
_parse_urlkeys
startswithlowerparse_ssl_cert_reqsloggerwarningdict)
urlr   hostr   userr   r   r   keyr,   s
             r!   	parse_urlr7   #   s    7Ao3FD$he$zz|Fs~~f/EFF 	C**"3Z--/7:c
'0s<c
:%NN#JKE!!e %c
E%Lc
	  ?&4$!?8=? ? Gs
   CCc                   t        |       j                  }| t        |      dz   d }t        d|z         }|j                  xs d}|r|d   dk(  r|dd n|}t	        |t        |j                  xs d      xs d|j                  t        |j                  xs d      xs dt        |j                  xs d      xs dt        |xs d      xs d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   r2   r   r   )r3   r   
schemelesspartsr   s        r!   url_to_partsr?   <   s     c]!!FS[1_%&JY+,E::DQ348DD$"%-

$"%-$"%-
#tYu{{#$ r    c	                   |  dg}	|s|rf|r|	j                  t        |             |r7|r|	j                  |rd|gndg       n|	j                  dt        |      g       |	j                  d       |	j                  |rt        |      nd       |r|	j                  d|g       |	j                  d|g       dj                  d |	D              S )z"Generate URL from component parts.://:@r   r:   c              3  8   K   | ]  }|st        |        y w)N)r   ).0parts     r!   	<genexpr>zas_url.<locals>.<genexpr>e   s     7$3t97s   )append	safequoteextendjoin)
r   r4   r   r5   r   r   r   sanitizemaskr>   s
             r!   as_urlrN   S   s     xs^ExLL4)Dc4[se<c9X#678S	LLD4b1c4[!	LL#t777777r    c                ,    t        t        |       d|dS )z)Return copy of URL with password removed.T)rL   rM   )rN   r+   r3   rM   s     r!   sanitize_urlrQ   h   s     :c?T==r    c                F    t        | t              rd| v rt        | |      S | S )z-Sanitize url, or do nothing if url undefined.rA   )
isinstancer   rQ   rP   s     r!   maybe_sanitize_urlrT   n   s&     #sC&&Jr    c                    t         rbt        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d}||    S y)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'   rV   rW   rX   )query_valuequery_value_to_constants     r!   r/   r/   v   sQ      .. ..))))MM#
 '{33r    )NNNNNNF**)r_   )r   
__future__r   collections.abcr   	functoolsr   typingr   urllib.parser   r   r	   r
   r'   r\   ImportErrorlogr   rI   r   r0   r   r7   r?   r+   rN   rQ   rT   r/   r   r    r!   <module>rg      s     # #   < <M E#		H		z 	?2( 
 >B7;8*>O  Ms   A+ +A54A5