U
    ARd                     @   s   U d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	 e	e
ZdZeed< daee ed< daee ed	< ee d
ddZee d
ddZdeeee dddZee edddZdS )    N)Optional)Final)util)
get_loggerzhttp://checkip.amazonaws.com_AWS_CHECK_IP_external_ip_internal_ip)returnc                  C   s<   t dk	rt S ttdd} t| r&| a ntdtj da t S )zGet the *external* IP address of the current machine.

    Returns
    -------
    string
        The external IPv4 address of the current machine.

    N   timeoutzEDid not auto detect external IP.
Please go to %s for debugging hints.)r   _make_blocking_http_getr   _looks_like_an_ip_adressLOGGERwarningr   ZHELP_DOC)response r   6/tmp/pip-unpacked-wheel-b9et7o5g/streamlit/net_util.pyget_external_ip!   s    r   c               	   C   s`   t dk	rt S ttjtj:} z| d |  d a W n tk
rP   da Y nX W 5 Q R X t S )zGet the *local* IP address of the current machine.

    From: https://stackoverflow.com/a/28950776

    Returns
    -------
    string
        The local IPv4 address of the current machine.

    N)z8.8.8.8   r   z	127.0.0.1)r   socketAF_INET
SOCK_DGRAMconnectgetsockname	Exception)sr   r   r   get_internal_ip@   s    
r   r
   )urlr   r	   c                 C   sD   z(t j| |dj}t|tr$| }|W S  tk
r>   Y d S X d S )Nr   )requestsgettext
isinstancestrstripr   )r   r   r!   r   r   r   r   [   s    
r   )addressr	   c              	   C   sl   | d krdS zt t j|  W dS  ttfk
r8   Y nX zt t j|  W dS  ttfk
rf   Y nX dS )NFT)r   	inet_ptonr   AttributeErrorOSErrorAF_INET6)r%   r   r   r   r   e   s    r   )r
   )r   typingr   r   Ztyping_extensionsr   Z	streamlitr   Zstreamlit.loggerr   __name__r   r   __annotations__r   r#   r   r   r   floatr   boolr   r   r   r   r   <module>   s    
