o
    l¨Êh	  ã                   @   s’   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
 dd„ Zdd	„ Zd
d„ Zddd„ZG dd„ deƒZG dd„ deƒZdS )zE
Helpers for logging.

This module needs much love to become useful.
é    )Úprint_functionNé   )Úmkdirpc                 C   s   t j d¡rtd| d ƒS | S )z¢Remove .1s to the time under Windows: this is the time it take to
    stat files. This is needed to make results similar to timings under
    Unix, for tests
    Úwinr   gš™™™™™¹?)ÚsysÚplatformÚ
startswithÚmax©Út© r   ú?/var/www/html/env/lib/python3.10/site-packages/joblib/logger.pyÚ_squeeze_time   s   r   c                 C   s   t | ƒ} d| | d f S )Nz%.1fs, %.1fminç      N@©r   r
   r   r   r   Úformat_time"   s   r   c                 C   s$   t | ƒ} | dkrd| d  S d|  S )Né<   z%4.1fminr   z %5.1fsr   r
   r   r   r   Úshort_format_time'   s   r   é   c                 C   sX   dt jv rdd l}| ¡ }|jdddd� nd }tj| ||d�}|r*|jdi |¤Ž |S )	NÚnumpyr   é   é@   r   )Ú	precisionÚ	thresholdÚ	edgeitems)ÚdepthÚindentr   )r   Úmodulesr   Úget_printoptionsÚset_printoptionsÚpprintÚpformat)Úobjr   r   ÚnpÚprint_optionsÚoutr   r   r   r!   /   s   
r!   c                   @   s4   e Zd ZdZddd„Zdd„ Zdd„ Zdd
d„ZdS )ÚLoggerz& Base class for logging messages.
    r   c                 C   s
   || _ dS )z†
            Parameters
            ----------
            depth: int, optional
                The depth of objects printed.
        N)r   )Úselfr   r   r   r   Ú__init__C   s   
zLogger.__init__c                 C   ó   t  d| |f ¡ d S ©Nz[%s]: %s)ÚloggingÚwarning©r'   Úmsgr   r   r   ÚwarnL   s   zLogger.warnc                 C   r)   r*   )r+   Údebugr-   r   r   r   r0   O   s   zLogger.debugr   c                 C   s   t ||| jd�S )z2Return the formatted representation of the object.)r   r   )r!   r   )r'   r"   r   r   r   r   ÚformatS   s   zLogger.formatN)r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r/   r0   r1   r   r   r   r   r&   ?   s    
	r&   c                   @   s$   e Zd ZdZd	dd„Zd
dd„ZdS )Ú	PrintTimez9 Print and log messages while keeping track of time.
    Nc                 C   s,  |d ur|d urt dƒ‚t ¡ | _| j| _|d ur tj |d¡}|| _|d ur”ttj 	|¡ƒ tj 
|¡rctddƒD ]}zt |d|  |d|d   ¡ W q:   Y q:z
t ||d ¡ W n   Y z*t|dƒ�}| d¡ | d	t | j¡ ¡ W d   ƒ W d S 1 s†w   Y  W d S    Y d S d S )
Nz&Cannot specify both logfile and logdirz
joblib.logr   é	   z.%iz.1Úwz
Logging joblib python script
z

---%s---
)Ú
ValueErrorÚtimeÚ	last_timeÚ
start_timeÚosÚpathÚjoinÚlogfiler   ÚdirnameÚexistsÚrangeÚshutilÚmoveÚcopyÚopenÚwriteÚctime)r'   r@   ÚlogdirÚir   r   r   r(   _   s:   
ÿ
&þëzPrintTime.__init__Ú Fc                 C   s°   |st   ¡ | j }d|t|ƒf }nt   ¡ | j }d|||d f }t|tjd� | jdurQzt| jdƒ�}t||d� W d  ƒ n1 sFw   Y  W n   Y t   ¡ | _dS )zr Print the time elapsed between the last call and the current
            call, with an optional message.
        z%s: %sz%s: %.2fs, %.1f minr   )ÚfileNÚa)	r:   r;   r   r<   Úprintr   Ústderrr@   rG   )r'   r.   ÚtotalÚ
time_lapseÚfull_msgÚfr   r   r   Ú__call__„   s"   ÿ
ÿ€zPrintTime.__call__)NN)rL   F)r2   r3   r4   r5   r(   rU   r   r   r   r   r6   [   s    
%r6   )r   r   )r5   Ú
__future__r   r:   r   r=   rD   r+   r    Údiskr   r   r   r   r!   Úobjectr&   r6   r   r   r   r   Ú<module>   s    

