
    g                        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j                  d	      Zd
ed<   ddZddZ	 d	 	 	 	 	 ddZddZy)    )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_REc                    t         j                  |       }|r9|j                         }|d   dk(  r dj                  di |S |d   dk(  r| S | dz   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/raw )r   match	groupdictformat)urlr   mdicts      G/var/www/openai/venv/lib/python3.12/site-packages/streamlit/url_util.pyprocess_gitblob_urlr   #   sl     c"E!6)6/66??? 5(J V|J    c                B    d| vrd|  } t        |       }|j                  S )z8Return the hostname of a URL (with or without protocol).z://zhttp://)r   hostname)r   parseds     r   get_hostnamer   <   s*     Cuoc]F??r   c                    	 t        t        |             }|j                  |vry|j                  dv rt        |j                        S |j                  dv rt        |j
                        S 	 y# t        $ r Y yw xY 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").
    Fr   r	   )r
   r   )r   strschemeboolnetlocpath
ValueError)r   allowed_schemasresults      r   is_urlr)   G   sz     #c(#==/==--&&]]00$$ 1
   s   "A- "A- "A- -	A98A9c                b    | j                  d      } | rd| z   } |j                  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)base_urlr%   s     r   make_url_pathr/   f   s=     ~~c"H>;;sDZqr   )r   r!   returnr!   )r   r!   r0   z
str | None)r    )r   r!   r'   ztuple[UrlSchema, ...]r0   r#   )r.   r!   r%   r!   r0   r!   )
__future__r   retypingr   r   urllib.parser   typing_extensionsr   r   __annotations__compiler   r   r   r)   r/   r   r   r   <module>r8      sw    # 	 ! ! '@A	9 A  RZZU 2 .?	* 
> r   