+
    /O|j|  ã                  ó<  € R t ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ]
'       d   ^ R	IHt ]P                  ! R
R7       ! R R4      4       t]P                  ! R
R7       ! R R4      4       t]P                   ! R R4      4       t. ROtR# )zøIndirection for time functions.

We intentionally grab some "time" functions internally to avoid tests mocking "time" to affect
pytest runtime information (issue #185).

Fixture "mock_timing" also interacts with this module for pytest's own tests.
)ÚannotationsN)Údatetime)Útimezone©Úperf_counter)Úsleep©Útime)ÚTYPE_CHECKING)ÚMonkeyPatchT)Úfrozenc                  óœ   € ] tR t^t$ Rt]P                  ! R RR7      tR]R&   ]P                  ! R RR7      t	R]R&   R	 R
 lt
R R ltRtR# )ÚInstantz›
Represents an instant in time, used to both get the timestamp value and to measure
the duration of a time span.

Inspired by Rust's `std::time::Instant`.
c                 	ó   € \        4       # ©Nr   © ó    ÚGC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\_pytest/timing.pyÚ<lambda>ÚInstant.<lambda>$   s   € ¼D¼Fr   F)Údefault_factoryÚinitÚfloatr	   c                 	ó   € \        4       # r   r   r   r   r   r   r   )   s   € ¤¤r   Ú
perf_countc               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚDurationr   )Úformats   "r   Ú__annotate__ÚInstant.__annotate__-   s   € ÷ 4ñ 4˜ñ 4r   c                ó,   € \        V \        4       R7      # )z1Measure the duration since `Instant` was created.)ÚstartÚstop)r   r   ©Úselfs   &r   ÚelapsedÚInstant.elapsed-   s   € ä˜d¬«Ô3Ð3r   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r    r!   1   s   € ÷ ?ñ ?˜ñ ?r   c                ó`   € \         P                  ! V P                  \        P                  4      # )zInstant as UTC datetime.)r   Úfromtimestampr	   r   Úutcr%   s   &r   Úas_utcÚInstant.as_utc1   s   € ä×%Ò% d§i¡i´·±Ó>Ð>r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚdataclassesÚfieldr	   Ú__annotations__r   r'   r-   Ú__static_attributes__r   r   r   r   r      sN   ‡ ñð ×#Ò#±NÈÔO€Dˆ%ÓOð $×)Ò)Ù.Øô€J�ó õ
4÷?ñ ?r   r   c                  óF   € ] tR t^6t$ RtR]R&   R]R&   ]R R l4       tRtR# )	r   z2A span of time as measured by `Instant.elapsed()`.r   r#   r$   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r    ÚDuration.__annotate__>   s   € ÷ <ñ <˜ñ <r   c                ód   € V P                   P                  V P                  P                  ,
          # )zaElapsed time of the duration in seconds, measured using a performance counter for precise timing.)r$   r   r#   r%   s   &r   ÚsecondsÚDuration.seconds=   s#   € ð �y‰y×#Ñ# d§j¡j×&;Ñ&;Õ;Ð;r   r   N)	r/   r0   r1   r2   r3   r6   Úpropertyr=   r7   r   r   r   r   r   6   s!   ‡ á<àƒNØ
ƒMàô<ó ô<r   r   c                  ó€   € ] tR t^Ct$ Rt]! R^^^^^24      P                  4       tR]R&   R R lt	R R lt
R	 R
 ltRtR# )Ú
MockTimingaê  Mocks _pytest.timing with a known object that can be used to control timing in tests
deterministically.

pytest itself should always use functions from `_pytest.timing` instead of `time` directly.

This then allows us more control over time during testing, if testing code also
uses `_pytest.timing` functions.

Time is static, and only advances through `sleep` calls, thus tests might sleep over large
numbers and obtain accurate time() calls at the end, making tests reliable and instant.iä  r   Ú_current_timec               ó    € V ^8„  d   QhRRRR/# )r   r=   r   r   ÚNoner   )r   s   "r   r    ÚMockTiming.__annotate__R   s   € ÷ &ñ &˜Uð & tñ &r   c                	ó8   € V ;P                   V,          un         R # r   ©rB   )r&   r=   s   &&r   r   ÚMockTiming.sleepR   s   € Ø×Ò˜gÕ%×r   c               ó   € V ^8„  d   QhRR/# r:   r   )r   s   "r   r    rE   U   s   € ÷ "ñ "�eñ "r   c                	ó   € V P                   # r   rG   r%   s   &r   r	   ÚMockTiming.timeU   s   € Ø×!Ñ!Ð!r   c               ó    € V ^8„  d   QhRRRR/# )r   Úmonkeypatchr   r   rD   r   )r   s   "r   r    rE   X   s   € ÷ ?ñ ? ð ?°ñ ?r   c                	óÀ   € ^ RI Hp VP                  VRV P                  4       VP                  VRV P                  4       VP                  VRV P                  4       R# )é    )Útimingr   r	   r   N)Ú_pytestrP   Úsetattrr   r	   )r&   rM   rP   s   && r   ÚpatchÚMockTiming.patchX   sG   € å"à×Ñ˜F G¨T¯Z©ZÔ8Ø×Ñ˜F F¨D¯I©IÔ6Ø×Ñ˜F N°D·I±IÖ>r   r   N)r/   r0   r1   r2   r3   r   Ú	timestamprB   r6   r   r	   rS   r7   r   r   r   rA   rA   C   s@   ‡ ñ	_ñ $ D¨!¨R°°R¸Ó<×FÑFÓH€M�5ÓHõ&õ"÷?ñ ?r   rA   )r   r   r	   )r3   Ú
__future__r   r4   r   r   r	   r   r   Útypingr
   Úpytestr   Ú	dataclassr   r   rA   Ú__all__r   r   r   Ú<module>r[      sš   ðñõ #ã Ý Ý Ý Ý Ý Ý  ÷ Ý"ð ×Ò˜dÔ#÷?ð ?ó $ð?ð: ×Ò˜dÔ#÷	<ð 	<ó $ð	<ð ×Ñ÷?ð ?ó ð?ò: ,‚r   