§
     Mºfâ#  ã                   óŽ   — d dl Z d dlZd dlZd dlmZ d dlmZmZ  G d„ de¦  «        Z G d„ de	¦  «        Z
 G d„ d	e
¦  «        ZdS )
é    N)ÚEnum)ÚListÚNoReturnc                   ó   — e Zd ZdZdZdZdS )ÚTimeTypeÚsÚmsÚnsN)Ú__name__Ú
__module__Ú__qualname__ÚsecondÚmillisecondÚ
nanosecond© ó    úT/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/TimeConvert/stopwatch.pyr   r      s   € € € € € à€Fà€Kà€J€J€Jr   r   c                   óN   — e Zd Zededefd„¦   «         Zededefd„¦   «         ZdS )Ú	BaseWatchÚtÚreturnc                 ó@   — t          t          | dz  ¦  «        ¦  «        S )Ni@B ©ÚintÚround©r   s    r   Ú_timestamp_to_nanoszBaseWatch._timestamp_to_nanos   s   € õ •5˜˜W™Ñ%Ô%Ñ&Ô&Ð&r   c                 ó@   — t          t          | dz  ¦  «        ¦  «        S )Niè  r   r   s    r   Ú_timestamp_to_milliszBaseWatch._timestamp_to_millis   s   € õ •5˜˜T™‘?”?Ñ#Ô#Ð#r   N)r   r   r   ÚstaticmethodÚfloatr   r   r   r   r   r   r   r      sn   € € € € € àð'˜uð '¨ð 'ð 'ð 'ñ „\ð'ð ð$ ð $¨#ð $ð $ð $ñ „\ð$ð $ð $r   r   c                   ó¬  — e Zd ZU  G d„ de¦  «        ZdZepded<   dZe	ed<   dZ
e	ed<   dZeed<   dZee         ed	<   dZeed
<   dej        fdededefd„Zd$dedefd„Zdefd„Zdefd„Zedepdfd„¦   «         Zdefd„Zdefd„Zde	fd„Zdefd„Zdefd„Zdefd„Zdefd„Z de	fd„Z!defd„Z"dee         fd „Z#d%dedefd!„Z$d%dedefd"„Z%d#„ Z&dS )&Ú	StopWatchc                   óB   — e Zd Zdedefd„Zdefd„Zdefd„Zdefd„Z	dS )	úStopWatch.TaskInfoÚ	task_nameÚ	timestampc                 ó"   — || _         || _        d S ©N)r&   r'   )Úselfr&   r'   s      r   Ú__init__zStopWatch.TaskInfo.__init__!   s   € Ø&ˆDŒNØ&ˆDŒNˆNˆNr   r   c                 ó6   — |                       | j        ¦  «        S r)   )r   r'   ©r*   s    r   Úget_time_nanosz!StopWatch.TaskInfo.get_time_nanos%   s   € Ø×+Ò+¨D¬NÑ;Ô;Ð;r   c                 ó6   — |                       | j        ¦  «        S r)   )r   r'   r-   s    r   Úget_time_millisz"StopWatch.TaskInfo.get_time_millis(   s   € Ø×,Ò,¨T¬^Ñ<Ô<Ð<r   c                 ó   — | j         S r)   )r'   r-   s    r   Úget_time_secondsz#StopWatch.TaskInfo.get_time_seconds+   s
   € Ø”>Ð!r   N)
r   r   r   Ústrr!   r+   r   r.   r0   r2   r   r   r   ÚTaskInfor%      s‡   € € € € € ð	' cð 	'°eð 	'ð 	'ð 	'ð 	'ð	< Cð 	<ð 	<ð 	<ð 	<ð	= Sð 	=ð 	=ð 	=ð 	=ð	" eð 	"ð 	"ð 	"ð 	"ð 	"ð 	"r   r4   NÚ_StopWatch__current_task_nameÚ _StopWatch__start_time_timestampg        Ú _StopWatch__total_time_timestampÚ_StopWatch__last_task_infoÚ_StopWatch__task_infoÚ_StopWatch__task_countTÚ	unique_idÚkeep_task_listÚ	time_typec                 ód   — || _         || _        || _        t          ¦   «         | _        d| _        dS )u>  
        stop_watchè®¡æ—¶å™¨
        **çº¿ç¨‹ä¸�å®‰å…¨** è¯·åœ¨ä½¿ç”¨æ—¶ å®žä¾‹åŒ–æ–°å¯¹è±¡è¿›è¡Œè®¡æ—¶
        :param unique_id: è®¡æ—¶å™¨çš„å”¯ä¸€æ ‡è¯†ï¼Œä¸€èˆ¬èµ·æ¯”è¾ƒæœ‰ç‰¹ç‚¹çš„å��ç§°
        :param keep_task_list: æ˜¯å�¦ä¿�å­˜å�•ä¸ªè®¡æ—¶ç‚¹(è®¡æ—¶ä»»åŠ¡)çš„ä¿¡æ�¯
        :param time_type: è®¡æ—¶å™¨è¾“å‡ºçš„æ—¶é—´å�•ä½� é»˜è®¤æ¯«ç§’
        eg:
            sw = StopWatch('è®¡æ—¶å™¨å”¯ä¸€å��ç§°', time_type=TimeType.second)
            sw.start('æˆ‘æ˜¯è®¡æ—¶ç‚¹1')
            time.sleep(1)
            # è®¡æ—¶ç‚¹1è®¡æ—¶ç»“æ�Ÿ
            sw.stop()

            sw.start('æˆ‘æ˜¯è®¡æ—¶ç‚¹2')
            time.sleep(2)
            # è®¡æ—¶ç‚¹2è®¡æ—¶ç»“æ�Ÿ
            sw.stop()
            print(sw.pretty_print())

        output:
            stopWatch [æˆ‘æ˜¯ä¸€ä¸ªè®¡æ—¶å™¨]: running time = 3.0048 s
            ---------------------------------------------
            s             %         Task name
            ---------------------------------------------
            0000001.0043  033.42%  æˆ‘æ˜¯è®¡æ—¶ç‚¹1
            0000002.0005  066.58%  æˆ‘æ˜¯è®¡æ—¶ç‚¹2
        r   N)Ú_StopWatch__unique_idÚ_StopWatch__keep_task_listÚ_StopWatch__time_typeÚlistr9   r:   )r*   r;   r<   r=   s       r   r+   zStopWatch.__init__7   s7   € ðB %ˆÔØ .ˆÔØ$ˆÔå™6œ6ˆÔØˆÔÐÐr   Ú r&   r   c                 óp   — | j         �t          d¦  «        ‚|| _         t          j        ¦   «         | _        dS )ui   
        å¼€å§‹è®¡æ—¶
        :param task_name: è®¡æ—¶ä»»åŠ¡(è®¡æ—¶ç‚¹)çš„å��ç§°
        :return
        Nz+Can't start StopWatch: it's already running)r5   Ú
ValueErrorÚtimer6   )r*   r&   s     r   ÚstartzStopWatch.start_   s8   € ð Ô#Ð/ÝÐLÑMÔMÐMà#,ˆÔ Ý&*¤i¡k¤kˆÔ#Ð#Ð#r   c                 óL  — | j         €t          d¦  «        ‚t          j        ¦   «         | j        z
  }| xj        |z  c_        |                      | j         |¦  «        | _        | j        r| j         	                    | j        ¦  «         | xj
        | j
        z  c_
        d| _         dS )u4   
        å�œæ­¢ä»»åŠ¡è®¡æ—¶
        :return
        Nz&Can't stop StopWatch: it's not running)r5   rE   rF   r6   r7   r4   r8   r@   r9   Úappendr:   )r*   Ú	last_times     r   ÚstopzStopWatch.stopk   s¦   € ð
 Ô#Ð+ÝÐGÑHÔHÐHåœ9™;œ;¨Ô)DÑDˆ	ØÐ#Ô# yÑ0Ð#Ô#Ø $§¢¨dÔ.FÈ	Ñ RÔ RˆÔØÔ ð 	;ØÔ×#Ò# DÔ$9Ñ:Ô:Ð:àÐÔ˜TÔ.Ñ.ÐÔØ#'ˆÔ Ð Ð r   c                 ó   — | j         du S )u'   
        è®¡æ—¶å™¨æ˜¯å�¦è¿�è¡Œ
        N©r5   r-   s    r   Ú
is_runningzStopWatch.is_running|   s   € ð Ô'¨4Ð/Ð/r   c                 ó   — | j         S )u;   
        è¿”å›žå½“å‰�ä»»åŠ¡å��ç§°
        :return:
        rM   r-   s    r   Úcurrent_task_namezStopWatch.current_task_name‚   s   € ð Ô'Ð'r   c                 ól   — | j         €t          d¦  «        ‚|                      | j         j        ¦  «        S )uR   
        èŽ·å�–æœ€å�Žä¸€æ¬¡è®¡æ—¶ä»»åŠ¡çš„æ—¶é—´(å¾®ç§’)
        :return:
        Nú*No tasks run: can't get last task interval)r8   rE   r   r'   r-   s    r   Úget_last_task_time_nanosz"StopWatch.get_last_task_time_nanosŠ   s6   € ð
 Ô Ð(ÝÐJÑKÔKÐKà×'Ò'¨Ô(=Ô(GÑHÔHÐHr   c                 ól   — | j         €t          d¦  «        ‚|                      | j         j        ¦  «        S )uR   
        èŽ·å�–æœ€å�Žä¸€æ¬¡è®¡æ—¶ä»»åŠ¡çš„æ—¶é—´(æ¯«ç§’)
        :return:
        NrR   )r8   rE   r   r'   r-   s    r   Úget_last_task_time_millisz#StopWatch.get_last_task_time_millis”   s6   € ð
 Ô Ð(ÝÐJÑKÔKÐKà×(Ò(¨Ô)>Ô)HÑIÔIÐIr   c                 óF   — | j         €t          d¦  «        ‚| j         j        S )uO   
        èŽ·å�–æœ€å�Žä¸€æ¬¡è®¡æ—¶ä»»åŠ¡çš„æ—¶é—´(ç§’)
        :return:
        NrR   )r8   rE   r'   r-   s    r   Úget_last_task_time_secondsz$StopWatch.get_last_task_time_secondsž   s(   € ð
 Ô Ð(ÝÐJÑKÔKÐKàÔ$Ô.Ð.r   c                 óF   — | j         €t          d¦  «        ‚| j         j        S )uJ   
        èŽ·å�–æœ€å�Žä¸€æ¬¡è®¡æ—¶ä»»åŠ¡çš„å��ç§°
        :return:
        Nz&No tasks run: can't get last task name)r8   rE   r&   r-   s    r   Úget_last_task_namezStopWatch.get_last_task_name¨   s(   € ð
 Ô Ð(ÝÐFÑGÔGÐGàÔ$Ô.Ð.r   c                 ó   — | j         S )u;   
        è¿”å›žæœ€å�Žä¸€ä¸ªä»»åŠ¡
        :return:
        )r8   r-   s    r   Úget_last_task_infozStopWatch.get_last_task_info²   s   € ð
 Ô$Ð$r   c                 ó6   — |                       | j        ¦  «        S )uS   
        èŽ·å�–å½“å‰�stop_watchæ€»è®¡æ—¶çš„æ—¶é—´(å¾®ç§’)
        :return:
        )r   r7   r-   s    r   Úget_total_time_nanoszStopWatch.get_total_time_nanos¹   s   € ð
 ×'Ò'¨Ô(CÑDÔDÐDr   c                 ó6   — |                       | j        ¦  «        S )uS   
        èŽ·å�–å½“å‰�stop_watchæ€»è®¡æ—¶çš„æ—¶é—´(æ¯«ç§’)
        :return:
        )r   r7   r-   s    r   Úget_total_time_milliszStopWatch.get_total_time_millisÀ   s   € ð
 ×(Ò(¨Ô)DÑEÔEÐEr   c                 ó   — | j         S )uP   
        èŽ·å�–å½“å‰�stop_watchæ€»è®¡æ—¶çš„æ—¶é—´(ç§’)
        :return:
        )r7   r-   s    r   Úget_total_time_secondsz StopWatch.get_total_time_secondsÇ   s   € ð
 Ô*Ð*r   c                 ó   — | j         S )uQ   
        èŽ·å�–å½“å‰�stop_watchå¯¹è±¡è®°å½•çš„ä»»åŠ¡æ•°
        :return:
        )r:   r-   s    r   Úget_task_countzStopWatch.get_task_countÎ   s   € ð
 Ô Ð r   c                 ó`   — | j         st          d¦  «        ‚t          j        | j        ¦  «        S )uT   
        èŽ·å�–å½“å‰�stop_watchå¯¹è±¡è®°å½•çš„å…¨éƒ¨ä»»åŠ¡
        :return:
        ztask info is not being kept!)r@   ÚRuntimeErrorÚcopyÚdeepcopyr9   r-   s    r   Úget_task_infozStopWatch.get_task_infoÕ   s1   € ð
 Ô$ð 	?ÝÐ=Ñ>Ô>Ð>ÝŒ}˜TÔ-Ñ.Ô.Ð.r   c                 ó  — |p| j         }|t          j        k    r|                      ¦   «         }nG|t          j        k    r|                      ¦   «         }n"t          |                      ¦   «         d¦  «        }d| j        › d|› d|j	        › �S )uÈ   
        èŽ·å�–å½“å‰�ç»Ÿè®¡æ—¶é—´æ•°æ�®ç®€è¿°
        :param time_type: è®¡æ—¶å™¨è¾“å‡ºçš„æ—¶é—´å�•ä½�, å¦‚æžœåœ¨æ­¤ä¼ å…¥ï¼Œåˆ™è¦†ç›–æŽ‰ç±»æž„é€ å‡½æ•°ä¸­ä¼ å…¥çš„ time_type
        :return:
        é   zStopWatch [z]: running time = ú )
rA   r   r   r_   r   r]   r   ra   r?   Úvalue)r*   r=   Úrunning_times      r   Úshort_summaryzStopWatch.short_summaryÞ   s“   € ð Ð1 Ô!1ˆ	Ø�Ô,Ò,Ð,Ø×5Ò5Ñ7Ô7ˆLˆLØ�(Ô-Ò-Ð-Ø×4Ò4Ñ6Ô6ˆLˆLå  ×!<Ò!<Ñ!>Ô!>ÀÑBÔBˆLØa˜TÔ-ÐaÐaÀÐaÐaÐPYÔP_ÐaÐaÐar   c           	      óÜ  — |p| j         }t          j        ¦   «         }|                     |                      ¦   «         ¦  «         |                     d¦  «         | j        s|                     d¦  «         �nã|                     d¦  «         |                     |j        › d�¦  «         |                     d¦  «         | j        D �]“}|t          j	        k    rK|                     t          |                     ¦   «         ¦  «                             d¦  «        › d�¦  «         n¦|t          j        k    rK|                     t          |                     ¦   «         ¦  «                             d¦  «        › d�¦  «         nK|                     t          |                     ¦   «         d¦  «                             d¦  «        › d�¦  «         |                     ¦   «         |                      ¦   «         z  }|                     t          t          |dz  d	¦  «        ¦  «                             d
¦  «        › d�¦  «         |                     |j        › d�¦  «         �Œ•|                     ¦   «         S )uÛ   
        èŽ·å�–å½“å‰�ç»Ÿè®¡æ—¶é—´æ•°æ�®è¯¦æƒ… å¹¶ç”Ÿæˆ�å­—ç¬¦ä¸²
        :param time_type: è®¡æ—¶å™¨è¾“å‡ºçš„æ—¶é—´å�•ä½�, å¦‚æžœåœ¨æ­¤ä¼ å…¥ï¼Œåˆ™è¦†ç›–æŽ‰ç±»æž„é€ å‡½æ•°ä¸­ä¼ å…¥çš„ time_type
        :return:
        ú
zNo task info keptz.---------------------------------------------
z             %         Task name
é   z  z.4féd   z.2fé   z%  )rA   ÚioÚStringIOÚwritern   r@   rl   r9   r   r   r3   r0   Úzfillr   r.   Úformatr2   ra   r&   Úgetvalue)r*   r=   ÚsbÚ	task_infoÚpercents        r   Úpretty_printzStopWatch.pretty_printí   s+  € ð Ð1 Ô!1ˆ	ÝŒ[‰]Œ]ˆØ
�Š�×#Ò#Ñ%Ô%Ñ&Ô&Ð&Ø
�Š�‰ŒˆØÔ$ð 	5Ø�HŠHÐ(Ñ)Ô)Ð)Ñ)à�HŠHÐFÑGÔGÐGØ�HŠH˜	œÐJÐJÐJÑKÔKÐKØ�HŠHÐFÑGÔGÐGØ!Ô-ð 	5ñ 	5�	Ø¥Ô 4Ò4Ð4Ø—H’H¥ I×$=Ò$=Ñ$?Ô$?Ñ @Ô @× FÒ FÀrÑ JÔ JÐNÐNÐNÑOÔOÐOÐOØ¥(Ô"5Ò5Ð5Ø—H’H¥ I×$<Ò$<Ñ$>Ô$>Ñ ?Ô ?× EÒ EÀbÑ IÔ IÐMÐMÐMÑNÔNÐNÐNà—H’H¥ y×'AÒ'AÑ'CÔ'CÀUÑ KÔ K× QÒ QÐRTÑ UÔ UÐYÐYÐYÑZÔZÐZØ#×4Ò4Ñ6Ô6¸×9TÒ9TÑ9VÔ9VÑV�Ø—’�C¥ w°¡}°eÑ <Ô <Ñ=Ô=×CÒCÀAÑFÔFÐKÐKÐKÑLÔLÐLØ—’˜IÔ/Ð3Ð3Ð3Ñ4Ô4Ð4Ñ4Ø�{Š{‰}Œ}Ðr   c           	      óf  — t          j        ¦   «         }|                     |                      ¦   «         ¦  «         | j        s|                     d¦  «         nÇ| j        D ]¿}|                     d¦  «         |                     |j        › ¦  «         |                     d¦  «         |                     |                     ¦   «         › d�¦  «         |                     dt          | 	                    ¦   «         |  
                    ¦   «         z  d¦  «        › d�¦  «         ŒÀ|                     ¦   «         S )Nz; no task info keptz; [z] took z nsz = é   ú%)rt   ru   rv   rn   r@   r9   r&   r.   r   r2   ra   ry   )r*   rz   r{   s      r   Ú__str__zStopWatch.__str__	  s  € ÝŒ[‰]Œ]ˆØ
�Š�×#Ò#Ñ%Ô%Ñ&Ô&Ð&ØÔ$ð 	jØ�HŠHÐ*Ñ+Ô+Ð+Ð+à!Ô-ð jð j�	Ø—’˜Ñ Ô Ð Ø—’˜IÔ/Ð1Ñ2Ô2Ð2Ø—’˜Ñ#Ô#Ð#Ø—’˜I×4Ò4Ñ6Ô6Ð;Ð;Ð;Ñ<Ô<Ð<Ø—’Ðh�u Y×%?Ò%?Ñ%AÔ%AÀD×D_ÒD_ÑDaÔDaÑ%aÐcdÑeÔeÐhÐhÐhÑiÔiÐiÐiØ�{Š{‰}Œ}Ðr   )rC   r)   )'r   r   r   r   r4   r5   r3   Ú__annotations__r6   r!   r7   r8   r9   r   r:   r   r   r   Úboolr+   r   rG   rK   rN   ÚpropertyrP   rS   rU   rW   rY   r[   r]   r_   ra   rc   rh   rn   r}   r�   r   r   r   r#   r#      s  € € € € € € ð"ð "ð "ð "ð "�9ñ "ô "ð "ð (,Ð˜˜ Ð+Ð+Ñ+Ø$(Ð˜EÐ(Ð(Ñ(Ø$'Ð˜EÐ'Ð'Ñ'Ø!%Ð�hÐ%Ð%Ñ%à"&€K��h”Ð&Ð&Ñ&à€L�#ÐÐÑð
 $(Ø"*Ô"6ð	&ð &àð&ð !ð&ð  ð	&ð &ð &ð &ðP
2ð 
2˜sð 
2¨Hð 
2ð 
2ð 
2ð 
2ð(�hð (ð (ð (ð (ð"0˜Dð 0ð 0ð 0ð 0ð ð( 3 ;¨$ð (ð (ð (ñ „Xð(ðI¨#ð Ið Ið Ið IðJ¨3ð Jð Jð Jð Jð/¨Eð /ð /ð /ð /ð/ Cð /ð /ð /ð /ð% Hð %ð %ð %ð %ðE cð Eð Eð Eð EðF sð Fð Fð Fð Fð+¨ð +ð +ð +ð +ð! ð !ð !ð !ð !ð/˜t Hœ~ð /ð /ð /ð /ðbð b xð b¸3ð bð bð bð bðð  hð ¸#ð ð ð ð ð8ð ð ð ð r   r#   )rf   rt   rF   Úenumr   Útypingr   r   r   Úobjectr   r#   r   r   r   ú<module>rˆ      sÜ   ðØ €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ˆtñ ô ð ð
$ð 
$ð 
$ð 
$ð 
$�ñ 
$ô 
$ð 
$ðwð wð wð wð w�	ñ wô wð wð wð wr   