
    ceD                    r    d Z ddlmZ g dZddlZddlZddlZddlZddl	m
Z
 dd
ZddZddZddZddZdS )z'Additional utilities to work with URLs.    )annotations)joinnetlocinject_query_parameters	file_nameN)parsebasestrargsreturnc                    |D ]u}t          j        |           }|j                            d          s0t          j        |                    |j         d                    } t          j        | |          } v| S )z
    Join multiple URLS into a single one.

    :param base: Base URL to join parts to.
    :param args: URL parts to join.
    :return: Joined URL.
    /)path)r   urlparser   endswith
urlunparse_replaceurljoin)r	   r   argparsed_bases       Blib/python3.11/site-packages/anaconda_navigator/utils/url_utils.pyr   r      s      
( 
( */)=)=((-- 	#$$[-=*@*@*@$AA D }T3''K    urlbytes | str | Nonec                    | dS t          | t                    s|                                 } t          j        |           }|j        r|j        S |j                            d          d         S )a  
    Retrieve domain name from the `url`.

    This function is designed to work with both complete URLs like 'https://example.org/page' and schema-less URLs like
    'example.org/path'.

    :param url: URL to retrieve domain from.
    :return: Parsed domain name.
    N r   r   )
isinstancer
   decoder   r   r   r   split)r   results     r   r   r   (   si     {rc3 jjll %s 3 3F} };S!!!$$r   params(collections.abc.Mapping[str, typing.Any]c                    t          j        |           }t          j        |j                  }i ||}t          j        |d          }|                    |                                          S )z
    Add or merge URL query parameters.

    :param url: URL to update.
    :param params: parameters to be ingested.
    :return: URL with update query params.
    T)doseq)query)r   r   parse_qsr%   	urlencoder   geturl)r   r!   url_componentsoriginal_paramsmerged_paramsupdated_querys         r   r   r   <   sn     ).s(;(;NSXSabpbvSwSwO>[>[TZ>[MdCCCM"""77>>@@@r   c                   | dS t          | t                    s|                                 } t          j        |           }t          j        |j                  \  }}|s	|j        sdS |st          j        |          \  }}|S )z(Retrieve a file name from a :code:`url`.Nr   )	r   r
   r   r   r   	posixpathr   r   r   )r   r    leftrights       r   r   r   K   s    
{rc3 jjll %s 3 3F /&+..KD% 6= r ,od++eLr   c                   | dS t          | t                    s|                                 } t          j        |                     d                                                    dd          dt          |            S )z7Retrieve a collision-safe file name from a :code:`url`.Nr   utf8i_)r   r
   r   hashlibmd5encode	hexdigestr   )r   s    r   safe_file_namer8   \   sp    
{rc3 jjllk#**V,,--7799"##>QQ3QQQr   )r	   r
   r   r
   r   r
   )r   r   r   r
   )r   r
   r!   r"   r   r
   )__doc__
__future__r   __all__collections.abccollectionsr4   r.   typingurllibr   r   r   r   r   r8    r   r   <module>rA      s    . - " " " " " "
D
D
D                   0% % % %(A A A A   "R R R R R Rr   