o
    沪g                     @  s   U d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 ed Z
ded< ed	Zd
ed< dddZdddZ	d d!ddZd"ddZdS )#    )annotationsN)FinalLiteral)urlparse)	TypeAlias)httphttpsmailtodatar   	UrlSchemazt(?P<base>https:\/\/?(gist\.)?github.com\/)(?P<account>([\w\.]+\/){1,2})(?P<blob_or_raw>(blob|raw))?(?P<suffix>(.+)?)r   _GITBLOB_REurlstrreturnc                 C  sN   t | }|r%| }|d dkrdjdi |S |d dkr!| S | d S | S )zCheck url to see if it describes a GitHub Gist "blob" URL.

    If so, returns a new URL to get the "raw" script.
    If not, returns URL unchanged.
    blob_or_rawblobz{base}{account}raw{suffix}rawz/rawN )r   match	groupdictformat)r   r   mdictr   r   N/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/streamlit/url_util.pyprocess_gitblob_url#   s   
r   
str | Nonec                 C  s    d| vr	d|  } t | }|jS )z8Return the hostname of a URL (with or without protocol).z://zhttp://)r   hostname)r   parsedr   r   r   get_hostname<   s   
r   r   r   allowed_schemastuple[UrlSchema, ...]boolc                 C  sd   z't t| }|j|vrW dS |jdv rt|jW S |jdv r%t|jW S W dS  ty1   Y dS w )a  Check if a string looks like an URL.

    This doesn't check if the URL is actually valid or reachable.

    Parameters
    ----------
    url : str
        The URL to check.

    allowed_schemas : Tuple[str]
        The allowed URL schemas. Default is ("http", "https").
    Fr   )r	   r
   )r   r   schemer!   netlocpath
ValueError)r   r   resultr   r   r   is_urlG   s   


r'   base_urlr$   c                 C  s.   |  d} | rd|  } |d}|  d| S )zMake a URL from a base URL and a path.

    Parameters
    ----------
    base_url : str
        The base URL.
    path : str
        The path to append to the base URL.

    Returns
    -------
    str
        The resulting URL.
    /)striplstrip)r(   r$   r   r   r   make_url_pathf   s
   

r,   )r   r   r   r   )r   r   r   r   )r   )r   r   r   r    r   r!   )r(   r   r$   r   r   r   )
__future__r   retypingr   r   urllib.parser   typing_extensionsr   r   __annotations__compiler   r   r   r'   r,   r   r   r   r   <module>   s   

