ó
    Eñi	  ã                  ó  • S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S S	KJr  S S
KJr  S SKJr  S SKJr  \(       a  S SKJr  SrSS jrSS jrSS jr\R4                   " S S5      5       r " S S5      rg)é    )ÚannotationsN)Údatetime)Ú	timedelta)ÚAny)ÚTYPE_CHECKING)Únodes)ÚCache)ÚConfig)ÚParser)ÚSession)Ú
TestReport)ÚSelfzcache/stepwisec           	     óž   • U R                  S5      nUR                  SSSSSSS9  UR                  S	S
SSSSS9  UR                  SSSSSSS9  g )NÚgeneralz--swz
--stepwiseÚ
store_trueFÚstepwisezBExit on test failure and continue from last failing test next time)ÚactionÚdefaultÚdestÚhelpz	--sw-skipz--stepwise-skipÚstepwise_skipz_Ignore the first failing test but stop on the next failing test. Implicitly enables --stepwise.z
--sw-resetz--stepwise-resetÚstepwise_resetzWResets stepwise state, restarting the stepwise workflow. Implicitly enables --stepwise.)ÚgetgroupÚ	addoption)ÚparserÚgroups     ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/_pytest/stepwise.pyÚpytest_addoptionr      s�   € Ø�O‰O˜IÓ&€EØ	‡O�OØØØØØØQð ñ ð 
‡O�OØØØØØð)ð ñ ð 
‡O�OØØØØØð)ð ò ó    c                ó
  • U R                   R                  (       d  U R                   R                  (       a  SU R                   l        U R	                  S5      (       a&  U R
                  R                  [        U 5      S5        g g )NTr   Ústepwiseplugin)Úoptionr   r   r   Ú	getoptionÚpluginmanagerÚregisterÚStepwisePlugin)Úconfigs    r   Úpytest_configurer(   5   sY   € à‡}�}×"×" f§m¡m×&B×&BØ!%ˆ�‰ÔØ×Ñ˜
×#Ñ#Ø×Ñ×%Ñ%¤n°VÓ&<Ð>NÕOð $r   c                ó°   • U R                   R                  S5      (       d6  U R                   R                  c   e[        U R                   S5      (       a  g g g )Nr   Úworkerinput)r'   r#   ÚcacheÚhasattr©Úsessions    r   Úpytest_sessionfinishr/   =   sM   € Ø�>‰>×#Ñ# J×/Ñ/Ø�~‰~×#Ñ#Ñ/Ð/Ð/Ü�7—>‘> =×1Ñ1ð ð 2ð 0r   c                  óf   • \ rS rSr% S\S'   S\S'   S\S'   \SS j5       r\SS	 j5       rSS
 jr	Sr
g)ÚStepwiseCacheInfoéF   z
str | NoneÚlast_failedz
int | NoneÚlast_test_countÚstrÚlast_cache_date_strc                óB   • [         R                  " U R                  5      $ ©N)r   Úfromisoformatr6   ©Úselfs    r   Úlast_cache_dateÚ!StepwiseCacheInfo.last_cache_dateS   s   € ä×%Ò% d×&>Ñ&>Ó?Ð?r   c                óT   • U " S S [         R                  " 5       R                  5       S9$ )N)r3   r4   r6   )r   ÚnowÚ	isoformat)Úclss    r   ÚemptyÚStepwiseCacheInfo.emptyW   s'   € áØØ Ü (§¢£× 8Ñ 8Ó :ñ
ð 	
r   c                óT   • [         R                  " 5       R                  5       U l        g r8   )r   r?   r@   r6   r:   s    r   Úupdate_date_to_nowÚ$StepwiseCacheInfo.update_date_to_now_   s   € Ü#+§<¢<£>×#;Ñ#;Ó#=ˆÕ r   )r6   N)Úreturnr   )rG   r   ©rG   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Úpropertyr<   ÚclassmethodrB   rE   Ú__static_attributes__© r   r   r1   r1   F   sG   ‡ ð Óð
  Óð Óàó@ó ð@ð ó
ó ð
÷>r   r1   c                  óf   • \ rS rSrSS jrSS jrSS jr      SS jrSS jrSS jr	SS jr
S	rg
)r&   éc   c                óî   • Xl         S U l        / U l        UR                  c   eUR                  U l        UR	                  S5      U l        UR	                  S5      U l        U R                  5       U l        g )Nr   r   )	r'   r.   Úreport_statusr+   r#   ÚskipÚresetÚ_load_cached_infoÚcached_info)r;   r'   s     r   Ú__init__ÚStepwisePlugin.__init__d   sg   € ØŒØ'+ˆŒØ(*ˆÔØ�|‰|Ñ'Ð'Ð'Ø"ŸL™LˆŒ
Ø ×*Ñ*¨?Ó;ˆŒ	Ø!×+Ñ+Ð,<Ó=ˆŒ
Ø×1Ñ1Ó3ˆÕr   c                óx  • U R                   R                  [        S 5      nU(       a   [        US   US   US   5      $ [        R                  5       $ ! [        [
        4 aV  n[        U5      R                   SU 3nU R                  R                  SU S35         S nA[        R                  5       $ S nAff = f)Nr3   r4   r6   z: z!error reading cache, discarding (Ú))r+   ÚgetÚSTEPWISE_CACHE_DIRr1   ÚKeyErrorÚ	TypeErrorÚtyperJ   rV   ÚappendrB   )r;   Úcached_dictÚeÚerrors       r   rY   Ú StepwisePlugin._load_cached_infon   sÀ   € Ø-1¯Z©Z¯^©^Ô<NÐPTÓ-UˆÞðXÜ(Ø Ñ.ØÐ 1Ñ2ØÐ 5Ñ6óð ô !×&Ñ&Ó(Ð(øô œiÐ(ó XÜ ›7×+Ñ+Ð,¨B¨q¨cÐ2�Ø×"Ñ"×)Ñ)Ð,MÈeÈWÐTUÐ*V×WÐWô !×&Ñ&Ó(Ð(ûðXús   ©A ÁB9Á#9B4Â4B9c                ó   • Xl         g r8   r-   )r;   r.   s     r   Úpytest_sessionstartÚ"StepwisePlugin.pytest_sessionstart~   s   € Ø�r   c                óÈ  • U R                   R                  n[        U5      U R                   l        U R                  (       a-  U R                  R                  S5        S U R                   l        g U R                   R                  (       d  U R                  R                  S5        g UbL  U[        U5      :w  a=  U R                  R                  S[        U5       SU S35        S U R                   l        g S n[        U5       H-  u  pVUR                  U R                   R                  :X  d  M+  Un  O   Uc  U R                  R                  S5        g [        R                  " 5       U R                   R                  -
  n[        [        UR                  5       5      S9nU R                  R                  SU S	U S
35        US U nUS U2	 UR                  R!                  US9  g )Nzresetting state, not skipping.z)no previously failed tests, not skipping.z&test count changed, not skipping (now z tests, previously z).z/previously failed test not found, not skipping.)Úsecondsz	skipping z" already passed items (cache from z! ago, use --sw-reset to discard).)Úitems)rZ   r4   ÚlenrX   rV   rd   r3   Ú	enumerateÚnodeidr   r?   r<   r   ÚintÚtotal_secondsÚhookÚpytest_deselected)	r;   r'   rn   r4   Úfailed_indexÚindexÚitemÚ	cache_ageÚ
deselecteds	            r   Úpytest_collection_modifyitemsÚ,StepwisePlugin.pytest_collection_modifyitems�   s²  € ð ×*Ñ*×:Ñ:ˆÜ+.¨u«:ˆ×ÑÔ(à�:�:Ø×Ñ×%Ñ%Ð&FÔGØ+/ˆD×ÑÔ(Øà×Ñ×+×+Ø×Ñ×%Ñ%Ð&QÔRØàÑ&¨?¼cÀ%»jÓ+HØ×Ñ×%Ñ%Ø8¼¸U»¸ÐDWÐXgÐWhÐhjÐkôð ,0ˆD×ÑÔ(Øð ˆÜ$ UÖ+‰KˆEØ�{‰{˜d×.Ñ.×:Ñ:Õ:Ø$�Ùñ ,ð ÑØ×Ñ×%Ñ%Ð&WÕXä Ÿš›¨×)9Ñ)9×)IÑ)IÑIˆIä!¬#¨i×.EÑ.EÓ.GÓ*HÑIˆIØ×Ñ×%Ñ%Ø˜L˜>Ð)KÈIÈ;ð W/ð 0ôð ˜} Ð-ˆJØ�m�|�mÐ$Ø�K‰K×)Ñ)°
Ð)Ò;r   c                óÈ  • UR                   (       aŠ  U R                  (       a=  UR                  U R                  R                  :X  a  S U R                  l        SU l        g UR                  U R                  l        U R
                  c   eSU R
                  l        g UR                  S:X  a7  UR                  U R                  R                  :X  a  S U R                  l        g g g )NFz0Test failed, continuing from this test next run.Úcall)ÚfailedrW   rq   rZ   r3   r.   Ú
shouldstopÚwhen)r;   Úreports     r   Úpytest_runtest_logreportÚ'StepwisePlugin.pytest_runtest_logreport®   s±   € Ø�=�=Ø�y�yð —=‘= D×$4Ñ$4×$@Ñ$@Ó@Ø37�D×$Ñ$Ô0à!�•	ð 06¯}©}�× Ñ Ô,Ø—|‘|Ñ/Ð/Ð/àFð —‘Õ'ð �{‰{˜fÓ$à—=‘= D×$4Ñ$4×$@Ñ$@Ó@Ø37�D×$Ñ$Õ0ð Að %r   c                ó¬   • U R                   R                  5       S:¼  a1  U R                  (       a   U R                   Vs/ s H  nSU 3PM
     sn$ g s  snf )Nr   z
stepwise: )r'   Úget_verbosityrV   )r;   Úxs     r   Úpytest_report_collectionfinishÚ-StepwisePlugin.pytest_report_collectionfinishÆ   sL   € Ø�;‰;×$Ñ$Ó&¨!Ó+°×0B×0BØ.2×.@Ò.@ÓAÒ.@¨�j  Ó$Ñ.@ÑAÐAØùò Bs   ¾Ac                óì   • [        U R                  S5      (       a  g U R                  R                  5         U R                  R                  [        [        R                  " U R                  5      5        g )Nr*   )	r,   r'   rZ   rE   r+   Úsetr`   ÚdataclassesÚasdictr:   s    r   r/   Ú#StepwisePlugin.pytest_sessionfinishË   sN   € Ü�4—;‘; ×.Ñ.ð Ø×Ñ×+Ñ+Ô-Ø�
‰
�‰Ô)¬;×+=Ò+=¸d×>NÑ>NÓ+OÕPr   )r+   rZ   r'   rV   rX   r.   rW   N©r'   r
   rG   rI   )rG   r1   ©r.   r   rG   rI   )r'   r
   rn   zlist[nodes.Item]rG   rI   )r‚   r   rG   rI   )rG   zlist[str] | NonerH   )rJ   rK   rL   rM   r[   rY   rj   r{   rƒ   rˆ   r/   rQ   rR   r   r   r&   r&   c   s?   † ô4ô)ô ð+<Øð+<Ø%5ð+<à	ô+<ôZ8ô0÷
Qr   r&   )r   r   rG   rI   r�   r�   )Ú
__future__r   rŒ   r   r   Útypingr   r   Ú_pytestr   Ú_pytest.cacheproviderr	   Ú_pytest.configr
   Ú_pytest.config.argparsingr   Ú_pytest.mainr   Ú_pytest.reportsr   Útyping_extensionsr   r`   r   r(   r/   Ú	dataclassr1   r&   rR   r   r   Ú<module>r›      st   ðÝ "ã Ý Ý Ý Ý  å Ý 'Ý !Ý ,Ý  Ý &ö Ý&à%Ð ôô<Pôð ×Ñ÷>ð >ó ð>÷8nQò nQr   