Ë
    7^(h•  ã                   óV   — d Z ddlZddlZg d¢Zg d¢Zd	d„Zd„ Z e«       Zdad
d„Z	d„ Z
y)zMSimple tools for timing functions' execution, when IPython is not available. é    N)g      ð?g     @�@g    €„.Ag    eÍÍA)ÚsÚmsu   Î¼sÚnsc           	      óœ  — t        j                  | |¬«      }d\  }}t        dd«      D ]&  }|j                  |«      dk\  r n|�||k\  r n|dz  }Œ( t        |j	                  ||«      «      |z  }|dkD  r@t        t        t        j                  t        j                  |«      «      dz  «       d«      }nd}|||t        |   z  t        |   fS )z1Adaptively measure execution time of a function. )Úsetup)é   é   r	   é
   gš™™™™™É?g        r   )ÚtimeitÚTimerÚrangeÚminÚrepeatÚintÚmathÚfloorÚlog10Ú_scalesÚ_units)	Úfuncr   ÚlimitÚtimerr   ÚnumberÚiÚtimeÚorders	            úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/utilities/timeutils.pyÚtimedr      sË   € ä�L‰L˜ UÔ+€EØ�N€FˆFä�1�b‹\ò ˆØ�<‰<˜Ó 3Ò&ÙØÐ 6¨U¢?Ùà�b‰L‰Fðô ˆu�|‰|˜F FÓ+Ó,¨vÑ5€Dàˆc‚zÜ”SœŸ™¤D§J¡J¨tÓ$4Ó5¸Ñ:Ó;Ð;¸QÓ?‰àˆà�D˜$œw u™~Ñ-¬v°e©}Ð=Ð=ó    c                  ó¦   — dd l } | j                  dd«      }|j                  d«      D �cg c]  }|j                  «       ‘Œ }}t	        |«      S c c}w )Nr   ÚSYMPY_TIMINGSÚ ú,)ÚosÚgetenvÚsplitÚstripÚset)r$   ÚresÚxs      r   Ú__do_timingsr+   %   sD   € ÛØ
�)‰)�O RÓ
(€CØ!Ÿi™i¨›nÖ
-˜ˆ1�7‰7�9Ð
-€CÐ
-Üˆs‹8€Oùò .s   ªAc                 ór   — t        d|z  d| d   | d   | d   fz  «       | d   D ]  }t        ||dz   «       Œ y )Nú-z	%.2f %s%sé   r   r   r	   )ÚprintÚ_print_timestack)ÚstackÚlevelr   s      r   r0   r0   /   sI   € Ü	ˆ#ˆe‰)�[ E¨!¡H¨e°A©h¸¸a¹Ð#AÑAÔBØ�1‰Xò 'ˆÜ˜˜E A™IÕ&ñ'r   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó(   •‡ — ‰t         vr‰ S ˆ fd„}|S )Nc                  óâ   •— ddl m } t        }‰j                  g d| ga |«       } ‰| i |¤Ž} |«       }||z
  t        d<   |�|d   j                  t        «       |a|S t	        t        «       d a|S )Nr   )r   r.   r	   )r   Ú
_timestackÚ	func_nameÚappendr0   )ÚargsÚkwargsr   ÚoldtimestackÚt1ÚrÚt2r   s          €r   Úwrapperz,timethis.<locals>.decorator.<locals>.wrapper:   s   ø€ Ý!ä%ˆLØŸ.™.¨"¨a°Ð6ˆJÙ“ˆBÙ�dÐ%˜fÑ%ˆAÙ“ˆBØ ™GŒJ�q‰MØÐ'Ø˜Q‘×&Ñ&¤zÔ2Ø)�
ð ˆHô !¤Ô,Ø!�
ØˆHr   )Ú_do_timings)r   r?   Únames   ` €r   Ú	decoratorztimethis.<locals>.decorator6   s   ù€ Ø”{Ñ"ØˆKô	ð  ˆr   © )rA   rB   s   ` r   ÚtimethisrD   5   s   ø€ ôð* Ðr   )ÚpassN)r	   )Ú__doc__r   r   r   r   r   r+   r@   r6   r0   rD   rC   r   r   ú<module>rG      s>   ðÙ Só Û ò €Ú	8€ó>ò2ñ ‹n€Ø€
ó'ór   