o
    Nrf&                     @  s   U d dl mZ d dlZd dlZd dlmZmZmZ eed  Zda	de
d< i aejejejejejejdZejdejd	ejd
ejd ejdejdiZddddejddddf	d3d%d&Zd4d(d)Zd5d*d+Zd6d,d-Zd7d.d/Zd8d9d1d2ZdS ):    )annotationsN)IOLiteralOptional)clilibLoggingContext_logging_context)r         r
   r   r   r   r   z{levelname}:{name}:{message}z%Y-%m-%d %I:%M:%S %p{Floggerlogging.LoggerstreamIO[str] | Nonefilename
str | Noneopen_kwsdict | Nonehandlerslist[logging.Handler] | Nonelevelintformatstrdatefmtstyle	propagateboolreturnNonec
                 C  s6  |du r|dur|durt dn|dus|durt d|durU|du r'i n|}|dd d|d v r>d|d< d|d< n|dd	 |dd
 tj|fi |g}n
|dur_t|g}| jdd D ]}
| |
 |
  qft|||}|D ]}
|
j	du r|

| | |
 q{|dur| | |	| _dS )a  
    Configure a logger for a stream or file or a custom set of handlers.

    Based on `logging.basicConfig` but works on any logger, not just the root one.

    Parameters
    ----------
    logger : :class:`logging.Logger`
        A logger.
    stream : file-like, optional
        A stream, like ``sys.stdout``.
    filename : str, optional
        Path to a file, instead of a stream.
    open_kws : dict, optionsl
        Keyword args to ``open`` if using a filename instead of a stream.
        Defaults to using mode='a' and for text streams: encoding='utf-8' and
        errors='backslashreplace'.
    handlers : sequence of logging Handlers
        Arbitrary logging handlers to register. Cannot be used with ``filename``
        or ``stream``.
    level : int, optional
        The log level.
    format : str, optional
        A format string for log records.
    datefmt : str, optional
        A format string for the ``asctime`` variable when used in log records.
    style : {"{", "$", "%"}, optional
        The templating style of the log record format string.
    propagate : bool, optional
        Whether the logger should propagate log records up to its parent.

    Notes
    -----
    Any of the logger's existing handlers will be closed and destroyed.

    For logging level values, see
    https://docs.python.org/3/howto/logging.html#logging-levels

    For a list of variables that can go into log records, see
    https://docs.python.org/3/library/logging.html#logrecord-attributes

    Nz8'stream' and 'filename' should not be specified togetherzG'stream' or 'filename' should not be specified together with 'handlers'modeabencodingerrorszutf-8backslashreplace)
ValueError
setdefaultloggingFileHandlerStreamHandlerr   removeHandlerclose	Formatter	formattersetFormatter
addHandlersetLevelr    )r   r   r   r   r   r   r   r   r   r    handlerr2    r7   X/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/cooler/_logging.py	configure   s<   6






r9   ctxc                 C  s   t d}t| krY| dkrt|tjt jdd t d n8| dkr0t|tjt j	d t d n%| d u rM|j
d d  D ]}|| |  q;t d ntd	|  d
| ad S d S )Ncoolerr   z	{message})r   r   r   Fr   )r   r   TzUnknown logging context: '')r,   	getLoggerr	   r9   sysstdoutWARNINGcaptureWarningsstderrINFOr   r/   r0   r*   )r:   r   r6   r7   r7   r8   set_logging_context~   s$   


rD   c                   C  s   t S )N)r	   r7   r7   r7   r8   get_logging_context   s   rE   c                 C  sF   t d}zt|  }W n ty   td|  dd w || d S )Nr;   z6Verbosity level must be one of: -2, -1, 0, 1, 2; got 'z'.)r,   r=   verbosity_to_loglevelKeyErrorr*   r5   )r   r   Zloglevelr7   r7   r8   set_verbosity_level   s   

rH   c                  C  s   t d} t| j S )Nr;   )r,   r=   loglevel_to_verbosityr   )r   r7   r7   r8   get_verbosity_level   s   

rJ   r;   c                 C  s@   t d u rtd | tvrt| t| < t|  t  t|  S )Nr   )r	   rD   _loggersr,   r=   r4   NullHandler)namer7   r7   r8   
get_logger   s   rN   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )r:   r   r"   r#   )r"   r   )r   r   r"   r#   )r"   r   )r;   )r"   r   )
__future__r   r,   r>   typingr   r   r   r   r	   __annotations__rK   NOTSETCRITICALERRORr@   rC   DEBUGrF   rI   r9   rD   rE   rH   rJ   rN   r7   r7   r7   r8   <module>   sH    

`


