U
    ARd                     @   s   U d Z ddlZddlZddlmZmZ ddlmZ dZee	d< i Z
eeejf e	d< ejaeeef ddd	d
ZejddddZddddZddddZeejdddZdS )zLogging module.    N)DictUnion)Finalz2%(asctime)s %(levelname) -7s %(name)s: %(message)sDEFAULT_LOG_MESSAGE_loggers)levelreturnc                 C   s   t t}t| tr|  } | dks,| tjkr4tj}n| dksF| tjkrNtj}nj| dks`| tjkrhtj}nP| dksz| tj	krtj	}n6| dks| tj
krtj
}nd|  }|| td t D ]}|| q|adS )	zSet log level.CRITICALERRORWARNINGINFODEBUGzundefined log level "%s"   N)
get_logger__name__
isinstancestrupperloggingr	   r
   r   r   r   criticalsysexitr   valuessetLevel_global_log_level)r   loggerZ	log_levelmsglog r   4/tmp/pip-unpacked-wheel-b9et7o5g/streamlit/logger.pyset_log_level    s&    


r    )r   r   c                 C   sp   t | dr| | j t | _ddlm} |jr>|d}nt	}tj
|d}d|_| j| | | j dS )z0Set up the console formatter for a given logger.streamlit_console_handlerr   )configzlogger.messageFormat)fmtz%s.%03dN)hasattrremoveHandlerr!   r   StreamHandler	streamlitr"   Z_config_options
get_optionr   	Formatterdefault_msec_formatsetFormatter
addHandler)r   r"   Zmessage_format	formatterr   r   r   setup_formatter<   s    

r.   )r   c                  C   s   t  D ]} t|  qd S )N)r   r   r.   r   r   r   r   update_formatterV   s    r0   c                  C   s   dD ]} t d|   qdS )zSet Tornado log levels.

    This function does not import any Tornado code, so it's safe to call even
    when Server is not running.
    )accessZapplicationZgeneralztornado.N)r   r/   r   r   r   init_tornado_logs[   s    r2   )namer   c                 C   sV   | t  krt |  S | dkr(td}n
t| }|t d|_t| |t | < |S )zReturn a logger.

    Parameters
    ----------
    name : str
        The name of the logger to use. You should just pass in __name__.

    Returns
    -------
    Logger

    rootr'   F)r   keysr   	getLoggerr   r   	propagater.   )r3   r   r   r   r   r   g   s    

r   )__doc__r   r   typingr   r   Ztyping_extensionsr   r   __annotations__r   r   Loggerr   r   intr    r.   r0   r2   r   r   r   r   r   <module>   s   