a
    ijW                     @   s   d Z ddlZddlZddlmZmZ ejZdd Ze	eej
_ej
jej
_ejej
_ejej
_ejej
_ej ej
_ej
_eredej G dd deZG d	d
 d
eZG dd deZdd ZdS )zFix missing-API problems in logging module (circa Python 2.3)

Adds constants to the log objects.
Adds getException(err) to log objects to retrieve 
formatted exception or err if traceback not available.
    N)ERROR_LOGGINGFULL_LOGGINGc              
   C   s@   zt jddW S  ty: } zt| W  Y d}~S d}~0 0 dS )z&Get formatted traceback from exception
   )limitN)	traceback
format_exc	Exceptionstr)errorerr r   I/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/logs.pygetException   s    r   OpenGL.calltracec                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	_LoggedFunctionz.Proxy that overrides __call__ to log argumentsc                 C   s   || j d< || j d< d S )N log)__dict__)selfbaser   r   r   r   __init__   s    
z_LoggedFunction.__init__c                 C   s*   |dkrt | jd || n
|| jd< d S Nr   )setattrr   )r   keyvaluer   r   r   __setattr__!   s    z_LoggedFunction.__setattr__c                 C   s&   |dkr| j d S t| j d |S d S r   )r   getattr)r   r   r   r   r   __getattr__&   s    
z_LoggedFunction.__getattr__N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s   r   c                   @   s    e Zd ZdZedZdd ZdS )_FullLoggedFunctionzHFully-logged function wrapper (logs all call params to OpenGL.calltrace)r   c           	   
   O   s   g }t | d}|D ]}|t| q| D ]\}}|d|t|f  q.d|}| jd|j| z||i |W S  ty } z(| j	
d|j| j	|  W Y d }~n
d }~0 0 d S )Nr   z%s = %s,z%s( %s )Failure on %s: %s)r   appendrepritemsjoin
_callTraceinfor   r   r   warningr   )	r   argsnamedZargReprfunctionargr   r   r   r   r   r   __call__.   s    

z_FullLoggedFunction.__call__N)r   r   r    r!   getLogr)   r0   r   r   r   r   r"   +   s   r"   c                   @   s   e Zd ZdZdd ZdS )_ErrorLoggedFunctionz On-error-logged function wrapperc              
   O   s`   t | d}z||i |W S  tyZ } z(| jd|j| j|  W Y d }~n
d }~0 0 d S )Nr   r$   )r   r   r   r+   r   r   )r   r,   r-   r.   r   r   r   r   r0   @   s    
z_ErrorLoggedFunction.__call__N)r   r   r    r!   r0   r   r   r   r   r2   >   s   r2   c                 C   s.   t str&trt| |}n
t| |}|S | S dS )zProduce possible log-wrapped version of function

    function -- callable object to be wrapped
    log -- the log to which to log information
    
    Uses ERROR_LOGGING and FULL_LOGGING
    to determine whether/how to wrap the function.
    N)r   r   r"   r2   )r.   r   ZloggedFunctionr   r   r   	logOnFailK   s    	
r3   )r!   r   loggingZOpenGL._configflagsr   r   	getLoggerr1   r   staticmethodLoggerr
   r   DEBUGWARNINFOERRORZERRsetLevelobjectr   r"   r2   r3   r   r   r   r   <module>   s    


