
    Dh '                        U d Z ddlZddlZddlmZ dgZddlmZ ej                  eej                  ej                  e   eej                  ej                  df   f   ej                  d   edf   Zej                  ed<    ej                   d	      Z ej$                  d
d      Z G d dej(                        Z G d dej,                        Z G d de      Zy)aX  
This module provides a base class `LoggerBase` and a derived class `Logged`
for adding logging capabilities to classes. The `LoggerBase` class expects
a `logger` attribute to be a `logging.Logger` or compatible instance and
provides methods for logging at various levels. The `Logged` class
automatically adds a named logger to the class.

Classes:
    LoggerBase:
        A base class that adds logging utilities to a class.
    Logged:
        A derived class that automatically adds a named logger to a class.

Example:
    >>> class MyClass(Logged):
    ...     def __init__(self):
    ...         Logged.__init__(self)

    >>> my_class = MyClass()
    >>> my_class.debug('debug')
    >>> my_class.info('info')
    >>> my_class.warning('warning')
    >>> my_class.error('error')
    >>> my_class.exception('exception')
    >>> my_class.log(0, 'log')
    N   )
decoratorsLogged)types)NNN_ExcInfoType_P_TT)	covariantc                      e Zd Zddddddedededed	ed
ej                  ej                  e
ef   df   ddfdZddddddedededed	ed
ej                  ej                  e
ef   df   ddfdZddddddedededed	ed
ej                  ej                  e
ef   df   ddfdZddddddedededed	ed
ej                  ej                  e
ef   df   ddfdZddddddedededed	ed
ej                  ej                  e
ef   df   ddfdZddddddedededed	ed
ej                  ej                  e
ef   df   ddfdZddddddededededed	ed
ej                  ej                  e
ef   df   ddfdZy)LoggerProtocolNFr   exc_info
stack_info
stacklevelextramsgargsr   r   r   r   returnc                     y N selfr   r   r   r   r   r   s          u/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/python_utils/logger.pydebugzLoggerProtocol.debug7            c                     y r   r   r   s          r   infozLoggerProtocol.infoA   r   r   c                     y r   r   r   s          r   warningzLoggerProtocol.warningK   r   r   c                     y r   r   r   s          r   errorzLoggerProtocol.errorU   r   r   c                     y r   r   r   s          r   criticalzLoggerProtocol.critical_   r   r   c                     y r   r   r   s          r   	exceptionzLoggerProtocol.exceptioni   r   r   levelc                     y r   r   )r   r(   r   r   r   r   r   r   s           r   logzLoggerProtocol.logs   s     r   )__name__
__module____qualname__objectr   boolintr   UnionMappingstrr   r   r!   r#   r%   r'   r*   r   r   r   r   r   6   s*   
 "& ?C  	
   {{5==f5t;< 
 "& ?C  	
   {{5==f5t;< 
 "& ?C  	
   {{5==f5t;< 
 "& ?C  	
   {{5==f5t;< 
 "& ?C  	
   {{5==f5t;< 
 "& ?C  	
   {{5==f5t;< 
 "& ?C		 	 		
 	 	 	 {{5==f5t;<	 
	r   r   c                      e Zd ZU dZej
                  ed<   ededefd       Z	 e
j                  ej                  j                        eddddd	d
edededededej&                  ej(                  eef   df   ddfd              Z e
j                  ej                  j*                        eddddd	d
edededededej&                  ej(                  eef   df   ddfd              Z e
j                  ej                  j,                        eddddd	d
edededededej&                  ej(                  eef   df   ddfd              Z e
j                  ej                  j.                        eddddd	d
edededededej&                  ej(                  eef   df   ddfd              Z e
j                  ej                  j0                        eddddd	d
edededededej&                  ej(                  eef   df   ddfd              Z e
j                  ej                  j2                        eddddd	d
edededededej&                  ej(                  eef   df   ddfd              Z e
j                  ej                  j4                        eddddd	ded
edededededej&                  ej(                  eef   df   ddfd              Zy)
LoggerBasear  Class which automatically adds logging utilities to your class when
    interiting. Expects `logger` to be a logging.Logger or compatible instance.

    Adds easy access to debug, info, warning, error, exception and log methods

    >>> class MyClass(LoggerBase):
    ...     logger = logging.getLogger(__name__)
    ...
    ...     def __init__(self):
    ...         Logged.__init__(self)

    >>> my_class = MyClass()
    >>> my_class.debug('debug')
    >>> my_class.info('info')
    >>> my_class.warning('warning')
    >>> my_class.error('error')
    >>> my_class.exception('exception')
    >>> my_class.log(0, 'log')
    logger
name_partsr   c                 2    dj                  d |D              S )N.c              3   ^   K   | ]%  }|j                         s|j                          ' y wr   )strip).0ns     r   	<genexpr>z(LoggerBase.__get_name.<locals>.<genexpr>   s     Ca	Cs   --)joinclsr7   s     r   
__get_namezLoggerBase.__get_name   s     xxC:CCCr   NFr   r   r   r   r   r   r   r   c                H     | j                   j                  |g|||||dS Nr   )r6   r   rA   r   r   r   r   r   r   s          r   r   zLoggerBase.debug   ;      szz

 !!
 	
r   c                H     | j                   j                  |g|||||dS rD   )r6   r   rE   s          r   r   zLoggerBase.info   s9     szz

 !!
 	
r   c                H     | j                   j                  |g|||||dS rD   )r6   r!   rE   s          r   r!   zLoggerBase.warning   s;     "szz!!

 !!
 	
r   c                H     | j                   j                  |g|||||dS rD   )r6   r#   rE   s          r   r#   zLoggerBase.error   rF   r   c                H     | j                   j                  |g|||||dS rD   )r6   r%   rE   s          r   r%   zLoggerBase.critical   s;     #szz""

 !!
 	
r   c                H     | j                   j                  |g|||||dS rD   )r6   r'   rE   s          r   r'   zLoggerBase.exception  s;     $szz##

 !!
 	
r   r(   c                J     | j                   j                  ||g|||||dS rD   )r6   r*   )rA   r(   r   r   r   r   r   r   s           r   r*   zLoggerBase.log  s>     szz~~
 
 !!
 	
r   )r+   r,   r-   __doc__r   Any__annotations__classmethodr3   _LoggerBase__get_namer   wraps_classmethodloggingLoggerr   r.   r   r/   r0   r1   r2   r   r!   r#   r%   r'   r*   r   r   r   r5   r5      s   . II DD	D D
 "Z!!'.."6"67
 "& ?C

 
 	

 
 
 {{5==f5t;<
 

  8
$ "Z!!'.."5"56
 "& ?C

 
 	

 
 
 {{5==f5t;<
 

  7
$ "Z!!'.."8"89
 "& ?C

 
 	

 
 
 {{5==f5t;<
 

  :
$ "Z!!'.."6"67
 "& ?C

 
 	

 
 
 {{5==f5t;<
 

  8
$ "Z!!'.."9"9:
 "& ?C

 
 	

 
 
 {{5==f5t;<
 

  ;
$ "Z!!'..":":;
 "& ?C

 
 	

 
 
 {{5==f5t;<
 

  <
$ "Z!!'.."4"45 "& ?C

 
 	

 
 
 
 {{5==f5t;<
 

  6
r   r5   c                        e Zd ZU dZej
                  ed<   ededefd       Z	de
j                  de
j                  dd f fdZ xZS )	r   a)  Class which automatically adds a named logger to your class when
    interiting.

    Adds easy access to debug, info, warning, error, exception and log methods

    >>> class MyClass(Logged):
    ...     def __init__(self):
    ...         Logged.__init__(self)

    >>> my_class = MyClass()
    >>> my_class.debug('debug')
    >>> my_class.info('info')
    >>> my_class.warning('warning')
    >>> my_class.error('error')
    >>> my_class.exception('exception')
    >>> my_class.log(0, 'log')

    >>> my_class._Logged__get_name('spam')
    'spam'
    r6   r7   r   c                 V    t        j                  t        t        j                  |       S r   )r   castr3   r5   rQ   r@   s     r   rB   zLogged.__get_nameG  s$    zz,,j9
 	
r   r   kwargsc                     t        j                  | j                  | j                  | j                              | _        t        |   |       S )a9  
        Create a new instance of the class and initialize the logger.

        The logger is named using the module and class name.

        Args:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.

        Returns:
            An instance of the class.
        )rS   	getLogger_Logged__get_namer,   r+   r6   super__new__)rA   r   rX   	__class__s      r   r]   zLogged.__new__N  s>     &&NN3>>3<<8

 ws##r   )r+   r,   r-   rM   rS   rT   rO   rP   r3   r[   r   rN   r]   __classcell__)r^   s   @r   r   r   /  s[    * NN
S 
S 
 
$EII $ $x $ $r   )rM   abcrS    r   __all__r   r1   r/   TupleTypeBaseExceptionTracebackTyper   	TypeAliasrO   	ParamSpecr   TypeVarr	   Protocolr   ABCr5   r   r   r   r   <module>rl      s   6   *  !&	KK

=!E''-.	0
 
KK !

!eoo 
 U__TU]]44(FU^^ FRm
 m
`/$Z /$r   