a
    SG5d                     @   sV   d Z ddlZddlZg dZg dZdddZdd	 Ze adadddZ	dd Z
dS )zMSimple tools for timing functions' execution, when IPython is not available.     N)g      ?g     @@g    .Ag    eA)smsu   μsnspassc           	      C   s   t j| |d}d\}}tddD ]6}| |dkr8 qXq |durN||krN qXq |d9 }q t|||| }|dkrtttt|d  d}nd}|||t	|  t
| fS )	z1Adaptively measure execution time of a function. )setup)      r   
   g?Ng        r   )timeitTimerrangeminrepeatintmathfloorlog10_scales_units)	funcr   limittimerr   numberitimeorder r   U/var/www/html/django/DPS/env/lib/python3.9/site-packages/sympy/utilities/timeutils.pytimed   s    
"r   c                  C   s0   dd l } | dd}dd |dD }t|S )Nr   ZSYMPY_TIMINGS c                 S   s   g | ]}|  qS r   )strip).0xr   r   r   
<listcomp>(       z __do_timings.<locals>.<listcomp>,)osgetenvsplitset)r&   resr   r   r   __do_timings%   s    r+   r   c                 C   sD   t d| d| d | d | d f  | d D ]}t||d  q,d S )N-z	%.2f %s%s   r   r   r   )print_print_timestack)stacklevelr   r   r   r   r/   /   s    $r/   c                    s    fdd}|S )Nc                    s   t vr S  fdd}|S )Nc                     sp   ddl m } t} jg d| ga| } | i |}| }|| td< |d ur`|d t |antt d a|S )Nr   )r   r-   r   )r   
_timestack	func_nameappendr/   )argskwargsr   Zoldtimestackt1rt2r   r   r   wrapper;   s    z,timethis.<locals>.decorator.<locals>.wrapper)_do_timings)r   r;   namer:   r   	decorator6   s    ztimethis.<locals>.decoratorr   )r>   r?   r   r=   r   timethis5   s    r@   )r   N)r   )__doc__r
   r   r   r   r   r+   r<   r2   r/   r@   r   r   r   r   <module>   s   

