o
    Zh0h                      @   sn   d Z ddlZddlZedZejseej ee	  edZ
G dd dejZejd	ddZdS )
a(  Logging setup.

The rest of the code gets the logger through this module rather than
``logging.getLogger`` to make sure that it is configured.

Logging levels are used for specific purposes:

- errors are used in ``LOGGER`` for unreachable or unusable external resources,
  including unreachable stylesheets, unreachables images and unreadable images;
- warnings are used in ``LOGGER`` for unknown or bad HTML/CSS syntaxes,
  unreachable local fonts and various non-fatal problems;
- infos are used in ``PROCESS_LOGGER`` to advertise rendering steps.

    N
weasyprintweasyprint.progressc                   @   s   e Zd ZdZdd ZdS )CallbackHandlerz:A logging handler that calls a function for every message.c                 C   s   t j|  || _d S )N)loggingHandler__init__emit)selfcallback r   G/var/www/html/rh/venv/lib/python3.10/site-packages/weasyprint/logger.pyr      s   
zCallbackHandler.__init__N)__name__
__module____qualname____doc__r   r   r   r   r   r      s    r   c              	   #   s     du rt j t | } g  fdd}| j}| j}g | _| t| | t j zV  W || _| | dS || _| | w )z;Return a context manager that captures all logged messages.Nc                    s>   | j dkrd S | j k rd S | j  d|    d S )Nr   z: )namelevelnoappend	levelnameupper
getMessage)recordlevelmessagesr   r   r   *   s
   

"zcapture_logs.<locals>.emit)	r   INFO	getLoggerhandlersr   
addHandlerr   setLevelDEBUG)loggerr   r   previous_handlersprevious_levelr   r   r   capture_logs"   s"   
r$   )r   N)r   
contextlibr   r   LOGGERr   r   WARNINGr   NullHandlerPROGRESS_LOGGERr   r   contextmanagerr$   r   r   r   r   <module>   s    

