
    i                        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__     o/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/kombu/utils/url.pyr   r      s(    4KM
IMM
INr    r   c           
     T   t        |       \  }}}}}}}|r}|j                         D cg c]  }|j                  d      s| }	}|	D ]I  }|dk(  r+t        ||         ||<   ||   t        j                  d       d|vri |d<   ||   |d   |<   ||= K t        d||||||d|S c c}w )z%Parse URL into mapping of components.ssl_ssl_cert_reqsz%Defaulting to insecure SSL behaviour.ssl)	transportr   r   useridr   virtual_hostr   )
_parse_urlkeys
startswithparse_ssl_cert_reqsloggerwarningdict)
urlr   hostr   userr   r   r   keyr*   s
             r!   	parse_urlr4   #   s     7Ao3FD$he$zz|Fs~~f/EFF 
	Co%0s<c
:%NN#JKE!!e %c
E%Lc

	  ?&4$!?8=? ? Gs
   B%B%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   r/   r   r   )r0   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   r7   c              3  8   K   | ]  }|st        |        y w)N)r   ).0parts     r!   	<genexpr>zas_url.<locals>.<genexpr>c   s     7$3t97s   )append	safequoteextendjoin)
r   r1   r   r2   r   r   r   sanitizemaskr;   s
             r!   as_urlrK   Q   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)rI   rJ   )rK   r)   r0   rJ   s     r!   sanitize_urlrN   f   s     :c?T==r    c                F    t        | t              rd| v rt        | |      S | S )z-Sanitize url, or do nothing if url undefined.r>   )
isinstancer   rN   rM   s     r!   maybe_sanitize_urlrQ   l   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%   rS   rT   rU   )query_valuequery_value_to_constants     r!   r,   r,   t   sQ      .. ..))))MM#
 '{33r    )NNNNNNF**)r\   )r   
__future__r   collections.abcr   	functoolsr   typingr   urllib.parser   r   r	   r
   r%   rY   ImportErrorlogr   rF   r   r-   r   r4   r<   r)   rK   rN   rQ   r,   r   r    r!   <module>rd      s     # #   < <M E#		H		z 	?.( 
 >B7;8*>K  Ms   A+ +A54A5