Ë
    •Kêj°  ã                  ó  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ erd dlmZ dZdd„Zdd„Zdd„Zej8                   G d„ d«      «       Z G d„ d«      Zy)é    )ÚannotationsN)Údatetime)Ú	timedelta)ÚAny)ÚTYPE_CHECKING)Únodes)ÚCache)ÚConfig)ÚParser)ÚSession)ÚNodeId)Ú
TestReport)ÚSelfzcache/stepwisec                ó°   — | j                  d«      }|j                  dddddd¬«       |j                  d	d
dddd¬«       |j                  dddddd¬«       y )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     úU/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/_pytest/stepwise.pyÚpytest_addoptionr      s�   € Ø�O‰O˜IÓ&€EØ	‡O�OØØØØØØQð ô ð 
‡O�OØØØØØð)ð ô ð 
‡O�OØØØØØð)ð õ ó    c                óì   — | j                   j                  s| j                   j                  rd| j                   _        | j	                  d«      r&| j
                  j                  t        | «      d«       y y )NTr   Ústepwiseplugin)Úoptionr   r   r   Ú	getoptionÚpluginmanagerÚregisterÚStepwisePlugin)Úconfigs    r   Úpytest_configurer)   6   sV   € à‡}�}×"Ò" f§m¡m×&BÒ&BØ!%ˆ�‰ÔØ×Ñ˜
Ô#Ø×Ñ×%Ñ%¤n°VÓ&<Ð>NÕOð $r    c                óš   — | j                   j                  d«      s0| j                   j                  €J ‚t        | j                   d«      ry y y )Nr   Úworkerinput)r(   r$   ÚcacheÚhasattr©Úsessions    r   Úpytest_sessionfinishr0   >   sG   € Ø�>‰>×#Ñ# JÔ/Ø�~‰~×#Ñ#Ð/Ð/Ð/Ü�7—>‘> =Ô1ð ð 2ð 0r    c                  óX   — e Zd ZU ded<   ded<   ded<   edd„«       Zedd„«       Zdd	„Zy
)ÚStepwiseCacheInfozNodeId | NoneÚlast_failedz
int | NoneÚlast_test_countÚstrÚlast_cache_date_strc                ó@   — t        j                  | j                  «      S ©N)r   Úfromisoformatr6   ©Úselfs    r   Úlast_cache_datez!StepwiseCacheInfo.last_cache_dateT   s   € ä×%Ñ% d×&>Ñ&>Ó?Ð?r    c                óX   —  | d d t        j                  «       j                  «       ¬«      S )N©r3   r4   r6   )r   ÚnowÚ	isoformat)Úclss    r   ÚemptyzStepwiseCacheInfo.emptyX   s'   € áØØ Ü (§¡£× 8Ñ 8Ó :ô
ð 	
r    c                óR   — t        j                  «       j                  «       | _        y r8   )r   r?   r@   r6   r:   s    r   Úupdate_date_to_nowz$StepwiseCacheInfo.update_date_to_now`   s   € Ü#+§<¡<£>×#;Ñ#;Ó#=ˆÕ r    N)Úreturnr   )rE   r   ©rE   ÚNone)	Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Úpropertyr<   ÚclassmethodrB   rD   © r    r   r2   r2   G   sG   … ð Óð
  Óð Óàò@ó ð@ð ò
ó ð
ô>r    r2   c                  óP   — e Zd Zd	d„Zd
d„Zdd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z	y)r'   c                óî   — || _         d | _        g | _        |j                  €J ‚|j                  | _        |j	                  d«      | _        |j	                  d«      | _        | j                  «       | _        y )Nr   r   )	r(   r/   Úreport_statusr,   r$   ÚskipÚresetÚ_load_cached_infoÚcached_info)r;   r(   s     r   Ú__init__zStepwisePlugin.__init__e   si   € ØˆŒØ'+ˆŒØ(*ˆÔØ�|‰|Ð'Ð'Ð'Ø"ŸL™LˆŒ
Ø ×*Ñ*¨?Ó;ˆŒ	Ø!×+Ñ+Ð,<Ó=ˆŒ
Ø×1Ñ1Ó3ˆÕr    c                óž  — | j                   j                  t        d «      }|r0	 |d   }t        |�t	        j
                  |«      nd |d   |d   «      S t        j                  «       S # t        t        f$ rV}t        |«      j                  › d|› �}| j                  j                  d|› d�«       Y d }~t        j                  «       S d }~ww xY w)Nr3   r4   r6   z: z!error reading cache, discarding (ú))r,   ÚgetÚSTEPWISE_CACHE_DIRr2   r   ÚparseÚKeyErrorÚ	TypeErrorÚtyperH   rQ   ÚappendrB   )r;   Úcached_dictr3   ÚeÚerrors        r   rT   z StepwisePlugin._load_cached_infoo   sÕ   € Ø-1¯Z©Z¯^©^Ô<NÐPTÓ-UˆÙð	XØ*5°mÑ*D�Ü(Ø1<Ð1H”F—L‘L Ô-ÈdØÐ 1Ñ2ØÐ 5Ñ6óð ô !×&Ñ&Ó(Ð(øô œiÐ(ò XÜ ›7×+Ñ+Ð,¨B¨q¨cÐ2�Ø×"Ñ"×)Ñ)Ð,MÈeÈWÐTUÐ*V×WÐWô !×&Ñ&Ó(Ð(ûðXús   ¤.A' Á'CÁ69CÃCc                ó   — || _         y r8   r.   )r;   r/   s     r   Úpytest_sessionstartz"StepwisePlugin.pytest_sessionstart€   s	   € Øˆ�r    c                ó´  — | j                   j                  }t        |«      | j                   _        | j                  r-| j                  j                  d«       d | j                   _        y | j                   j                  s| j                  j                  d«       y |�K|t        |«      k7  r=| j                  j                  dt        |«      › d|› d�«       d | j                   _        y d }t        |«      D ],  \  }}|j                  | j                   j                  k(  sŒ*|} n |€| j                  j                  d«       y t        j                  «       | j                   j                  z
  }t        t        |j                  «       «      ¬«      }| j                  j                  d|› d	|› d
�«       |d | }|d |…= |j                  j!                  |¬«       y )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)rU   r4   ÚlenrS   rQ   r_   r3   Ú	enumerateÚidr   r?   r<   r   ÚintÚtotal_secondsÚhookÚpytest_deselected)	r;   r(   rg   r4   Úfailed_indexÚindexÚitemÚ	cache_ageÚ
deselecteds	            r   Úpytest_collection_modifyitemsz,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�4Ø�w‰w˜$×*Ñ*×6Ñ6Ó6Ø$�Ùð	ð ÐØ×Ñ×%Ñ%Ð&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                ó¬  — |j                   rƒ| j                  r<|j                  | j                  j                  k(  rd | j                  _        d| _        y |j                  | j                  _        | j
                  €J ‚d| j
                  _        y |j                  dk(  r6|j                  | j                  j                  k(  rd | j                  _        y y y )NFz0Test failed, continuing from this test next run.Úcall)ÚfailedrR   rj   rU   r3   r/   Ú
shouldstopÚwhen)r;   Úreports     r   Úpytest_runtest_logreportz'StepwisePlugin.pytest_runtest_logreport°   s°   € Ø�=Š=Ø�yŠyð —9‘9 × 0Ñ 0× <Ñ <Ò<Ø37�D×$Ñ$Ô0à!�•	ð 06¯y©y�× Ñ Ô,Ø—|‘|Ð/Ð/Ð/àFð —‘Õ'ð �{‰{˜fÒ$à—9‘9 × 0Ñ 0× <Ñ <Ò<Ø37�D×$Ñ$Õ0ð =ð %r    c                óš   — | j                   j                  «       dk\  r)| j                  r| j                  D �cg c]  }d|› �‘Œ	 c}S y c c}w )Nr   z
stepwise: )r(   Úget_verbosityrQ   )r;   Úxs     r   Úpytest_report_collectionfinishz-StepwisePlugin.pytest_report_collectionfinishÈ   sF   € Ø�;‰;×$Ñ$Ó&¨!Ò+°×0BÒ0BØ.2×.@Ñ.@ÖA¨�j  Ò$ÒAÐAØùò Bs   ¸Ac                óD  — t        | j                  d«      ry | j                  j                  «        | j                  j                  }| j
                  j                  t        |�t        |«      nd | j                  j                  | j                  j                  dœ«       y )Nr+   r>   )r-   r(   rU   rD   r3   r,   ÚsetrZ   r5   r4   r6   )r;   r3   s     r   r0   z#StepwisePlugin.pytest_sessionfinishÍ   s~   € Ü�4—;‘; Ô.ð Ø×Ñ×+Ñ+Ô-Ø×&Ñ&×2Ñ2ˆØ�
‰
�‰Üà3>Ð3Jœs ;Ô/ÐPTØ#'×#3Ñ#3×#CÑ#CØ'+×'7Ñ'7×'KÑ'Kñõ	
r    N©r(   r
   rE   rG   )rE   r2   ©r/   r   rE   rG   )r(   r
   rg   zlist[nodes.Item]rE   rG   )rz   r   rE   rG   )rE   zlist[str] | NonerF   )
rH   rI   rJ   rV   rT   rd   rt   r{   r   r0   rN   r    r   r'   r'   d   s>   „ ó4ó)ó"ð+<Øð+<Ø%5ð+<à	ó+<óZ8ó0ô

r    r'   )r   r   rE   rG   r‚   rƒ   )Ú
__future__r   Údataclassesr   r   Útypingr   r   Ú_pytestr   Ú_pytest.cacheproviderr	   Ú_pytest.configr
   Ú_pytest.config.argparsingr   Ú_pytest.mainr   Ú_pytest.nodeidr   Ú_pytest.reportsr   Útyping_extensionsr   rZ   r   r)   r0   Ú	dataclassr2   r'   rN   r    r   ú<module>r�      su   ðÝ "ã Ý Ý Ý Ý  å Ý 'Ý !Ý ,Ý  Ý !Ý &ñ Ý&à%Ð óó<Póð ×Ñ÷>ð >ó ð>÷8w
ò w
r    