o
    /h                     @   sT   d Z dgZddlZddlZddlZddlZddlZG dd dZ	G dd de	Z
dS )af  cssutils ErrorHandler

ErrorHandler
    used as log with usual levels (debug, info, warn, error)

    if instanciated with ``raiseExceptions=True`` raises exeptions instead
    of logging

log
    defaults to instance of ErrorHandler for any kind of log message from
    lexerm, parser etc.

    - raiseExceptions = [False, True]
    - setloglevel(loglevel)
ErrorHandler    Nc                   @   sH   e Zd ZdZejdfddZdd Zddej	j
d	dfd
dZdd ZdS )_ErrorHandlerz-
    handles all errors and log messages
    Tc                 C   sh   d| _ |r	|| _n&ddl}td| _t|j}td}|| | j	| | j
| || _dS )a  
        inits log if none given

        log
            for parse messages, default logs to sys.stderr
        defaultloglevel
            if none give this is logging.DEBUG
        raiseExceptions
            - True: Errors will be raised e.g. during building
            - False: Errors will be written to the log, this is the
              default behaviour when parsing
        Tr   NCSSUTILSz%(levelname)s	%(message)s)enabled_logsyslogging	getLoggerStreamHandlerstderr	FormattersetFormatter
addHandlersetLevelraiseExceptions)selflogdefaultloglevelr   r   hdlr	formatter r   I/var/www/html/myenv/lib/python3.10/site-packages/cssutils/errorhandler.py__init__   s   


z_ErrorHandler.__init__c                 C   sP   d}d}||v r|dkrd}t | j|| _| jS ||v r"t | j|S td| )zuse self._log items)debuginfowarnerrorcriticalfatal)r   getEffectiveLevelr   removeHandlerr   warningz$(errorhandler) No Attribute %r found)getattrr   _logcall_ErrorHandler__handleAttributeError)r   namecallsotherr   r   r   __getattr__=   s   z_ErrorHandler.__getattr__ NFc           	      C   s   | j rl|du rtjj}d\}}|r>t|tr%|d |d |d }}}n|j|j|j}}}| d| d| d| d	}|re| j	re|set|t
jjsSt|t
jjrT t|tjjra||_||_||| | dS dS )
zD
        handles all calls
        logs or raises exception
        N)NN         z [:z: ])r   xmldom	SyntaxErr
isinstancetuplevaluelinecolr   urllibr   	HTTPErrorURLError
issubclassDOMExceptionr#   )	r   msgtokenr   
neverraiseargsr6   r7   r5   r   r   r   __handleL   s(   
z_ErrorHandler.__handlec                 C   s
   || _ dS )zset log of errorhandler's logN)r   )r   r   r   r   r   setLogk   s   
z_ErrorHandler.setLog)__name__
__module____qualname____doc__r   INFOr   r)   r0   r1   r2   r$   rB   r   r   r   r   r      s    
r   c                   @   s&   e Zd ZdZdZdejdfddZdS )r   zSingleton, see _ErrorHandlerNTc                 C   s(   t jd u rt|||dt _t jj| _d S )N)r   r   r   )r   instancer   __dict__)r   r   r   r   r   r   r   r   u   s   
zErrorHandler.__init__)rC   rD   rE   rF   rH   r   rG   r   r   r   r   r   r   p   s    )rF   __all__r   urllib.errorr8   urllib.parseurllib.requestxml.domr0   r   r   r   r   r   r   <module>   s    V