
    tf&                       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		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZddZddZdddZy)    )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{Fc
                z   |||t        d      ||t        d      |f|i n|}|j                  dd       d|d   v rd|d<   d|d<   n$|j                  dd	       |j                  dd
       t        j                  |fi |g}n|t        j                  |      g}| j
                  dd D ]#  }
| j                  |
       |
j                          % t        j                  |||      }|D ]0  }
|
j                  |
j                  |       | j                  |
       2 || j                  |       |	| _        y)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StreamHandlerhandlersremoveHandlerclose	Formatter	formattersetFormatter
addHandlersetLevel	propagate)loggerstreamfilenameopen_kwsr   levelformatdatefmtstyler%   handlerr!   s               Y/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/cooler/_logging.py	configurer0      sp   l ("6WXX!5  !)2xFC((6""#'HZ !%HX
G4*<=''=H=>		))&12 ??1% W%
 !!&'59I #$  +'"#
  F    c                   t        j                  d      }t        | k7  r| dk(  rAt        |t        j
                  t         j                  d       t        j                  d       n| dk(  r@t        |t        j                  t         j                         t        j                  d       n\| K|j                  d d  D ]#  }|j                  |       |j                          % t        j                  d       nt        d	|  d
      | ay y )Ncoolerr   z	{message})r'   r*   r+   Fr   )r'   r*   TzUnknown logging context: '')r   	getLoggerr
   r0   sysstdoutWARNINGcaptureWarningsstderrINFOr   r   r   r   )ctxr&   r.   s      r/   set_logging_contextr=   ~   s     x(F3%<szz ##E*E\fSZZw||D##D)[!??1-  $$W-  ##E*9#a@AA! r1   c                     t         S )N)r
    r1   r/   get_logging_contextr@      s    r1   c                    t        j                  d      }	 t        |    }|j                  |       y # t        $ r t	        d|  d      d w xY w)Nr3   z6Verbosity level must be one of: -2, -1, 0, 1, 2; got 'z'.)r   r5   verbosity_to_loglevelKeyErrorr   r$   )r*   r&   loglevels      r/   set_verbosity_levelrE      s\    x(F(/
 OOH	  DUG2N
	s	   	2 Ac                 R    t        j                  d      } t        | j                     S )Nr3   )r   r5   loglevel_to_verbosityr*   )r&   s    r/   get_verbosity_levelrH      s!    x(F ..r1   c                    t         t        d       | t        vrFt        j                  |       t        | <   t        |    j                  t        j                                t        |    S )Nr   )r
   r=   _loggersr   r5   r#   NullHandler)names    r/   
get_loggerrM      sU     E"8 **40 	!!'"5"5"78D>r1   )r&   logging.Loggerr'   zIO[str] | Noner(   z
str | Noner)   zdict | Noner   zlist[logging.Handler] | Noner*   intr+   strr,   rP   r-   rP   r%   boolreturnNone)r<   r	   rR   rS   )rR   r	   )r*   rO   rR   rS   )rR   rO   )r3   )rR   rN   )
__future__r   r   r6   typingr   r   r   r	   r
   __annotations__rJ   NOTSETCRITICALERRORr8   r;   DEBUGrB   rG   r0   r=   r@   rE   rH   rM   r?   r1   r/   <module>r[      sa   "  
 ( (',/0#' . ' 	||}}  NNBbMM2OOQLL!MM1  " -10)]!]!]! ]! 	]!
 +]! ]! ]! ]! ]! ]! 
]!@0/
r1   