§
    ×Ž’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 erd dlmZ dZdd„Zdd„Zd d„Zej         G d„ d¦  «        ¦   «         Z G d„ d¦  «        ZdS )!é    )ÚannotationsN)Údatetime)Ú	timedelta)ÚAny)ÚTYPE_CHECKING)Únodes)ÚCache)ÚConfig)ÚParser)ÚSession)Ú
TestReport)ÚSelfzcache/stepwiseÚparserr   ÚreturnÚNonec                óÒ   — |                       d¦  «        }|                     dddddd¬¦  «         |                     d	d
dddd¬¦  «         |                     dddddd¬¦  «         d S )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)r   Úgroups     ú>C:\Projects\DSCons\.venv\Lib\site-packages\_pytest\stepwise.pyÚpytest_addoptionr       s¬   € Ø�OŠO˜IÑ&Ô&€EØ	‡O‚OØØØØØØQð ñ ô ð ð 
‡O‚OØØØØØð)ð ñ ô ð ð 
‡O‚OØØØØØð)ð ñ ô ð ð ð ó    Úconfigr
   c                óÌ   — | j         j        s| j         j        rd| j         _        |                      d¦  «        r*| j                             t          | ¦  «        d¦  «         d S d S )NTr   Ústepwiseplugin)Úoptionr   r   r   Ú	getoptionÚpluginmanagerÚregisterÚStepwisePlugin)r"   s    r   Úpytest_configurer*   5   sp   € à„}Ô"ð & f¤mÔ&Bð &Ø!%ˆŒÔØ×Ò˜
Ñ#Ô#ð PØÔ×%Ò%¥n°VÑ&<Ô&<Ð>NÑOÔOÐOÐOÐOðPð Pr!   Úsessionr   c                óˆ   — | j                              d¦  «        s%| j         j        €J ‚t          | j         d¦  «        rd S d S d S )Nr   Úworkerinput)r"   r&   ÚcacheÚhasattr©r+   s    r   Úpytest_sessionfinishr1   =   sZ   € ØŒ>×#Ò# JÑ/Ô/ð ØŒ~Ô#Ð/Ð/Ð/Ý�7”> =Ñ1Ô1ð 	ð ˆFðð ð	ð 	r!   c                  óf   — 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dS )ÚStepwiseCacheInfoz
str | NoneÚlast_failedz
int | NoneÚlast_test_countÚstrÚlast_cache_date_strr   r   c                ó4   — t          j        | j        ¦  «        S ©N)r   Úfromisoformatr7   ©Úselfs    r   Úlast_cache_datez!StepwiseCacheInfo.last_cache_dateS   s   € åÔ% dÔ&>Ñ?Ô?Ð?r!   r   c                ód   —  | d d t          j        ¦   «                              ¦   «         ¬¦  «        S )N)r4   r5   r7   )r   ÚnowÚ	isoformat)Úclss    r   ÚemptyzStepwiseCacheInfo.emptyW   s6   € àˆsØØ Ý (¤¡¤× 8Ò 8Ñ :Ô :ð
ñ 
ô 
ð 	
r!   r   c                óZ   — t          j        ¦   «                              ¦   «         | _        d S r9   )r   r?   r@   r7   r;   s    r   Úupdate_date_to_nowz$StepwiseCacheInfo.update_date_to_now_   s"   € Ý#+¤<¡>¤>×#;Ò#;Ñ#=Ô#=ˆÔ Ð Ð r!   N)r   r   )r   r   ©r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Úpropertyr=   ÚclassmethodrB   rD   © r!   r   r3   r3   F   s–   € € € € € € ð ÐÐÑð
  ÐÐÑð ÐÐÑàð@ð @ð @ñ „Xð@ð ð
ð 
ð 
ñ „[ð
ð>ð >ð >ð >ð >ð >r!   r3   c                  óF   — 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	dS )r)   r"   r
   r   r   c                óô   — || _         d | _        g | _        |j        €J ‚|j        | _        |                     d¦  «        | _        |                     d¦  «        | _        |                      ¦   «         | _        d S )Nr   r   )	r"   r+   Úreport_statusr.   r&   ÚskipÚresetÚ_load_cached_infoÚcached_info)r<   r"   s     r   Ú__init__zStepwisePlugin.__init__d   st   € ØˆŒØ'+ˆŒØ(*ˆÔØŒ|Ð'Ð'Ð'Ø"œLˆŒ
Ø ×*Ò*¨?Ñ;Ô;ˆŒ	Ø!×+Ò+Ð,<Ñ=Ô=ˆŒ
Ø×1Ò1Ñ3Ô3ˆÔÐÐr!   r3   c                ój  — | j                              t          d ¦  «        }|ry	 t          |d         |d         |d         ¦  «        S # t          t
          f$ rA}t          |¦  «        j        › d|› �}| j         	                    d|› d�¦  «         Y d }~nd }~ww xY wt           
                    ¦   «         S )Nr4   r5   r7   z: z!error reading cache, discarding (ú))r.   ÚgetÚSTEPWISE_CACHE_DIRr3   ÚKeyErrorÚ	TypeErrorÚtyperF   rO   ÚappendrB   )r<   Úcached_dictÚeÚerrors       r   rR   z StepwisePlugin._load_cached_infon   sà   € Ø-1¬Z¯^ª^Õ<NÐPTÑ-UÔ-UˆØð 		XðXÝ(Ø Ô.ØÐ 1Ô2ØÐ 5Ô6ñô ð øõ
 �iÐ(ð Xð Xð XÝ ™7œ7Ô+Ð2Ð2¨qÐ2Ð2�ØÔ"×)Ò)Ð*VÈeÐ*VÐ*VÐ*VÑWÔWÐWÐWÐWÐWÐWÐWøøøøðXøøøõ
 !×&Ò&Ñ(Ô(Ð(s   ¤"A ÁBÁ7BÂBr+   r   c                ó   — || _         d S r9   r0   )r<   r+   s     r   Úpytest_sessionstartz"StepwisePlugin.pytest_sessionstart~   s   € ØˆŒˆˆr!   Úitemsúlist[nodes.Item]c                óp  — | j         j        }t          |¦  «        | j         _        | j        r(| j                             d¦  «         d | j         _        d S | j         j        s| j                             d¦  «         d S |�O|t          |¦  «        k    r<| j                             dt          |¦  «        › d|› d�¦  «         d | j         _        d S d }t          |¦  «        D ]\  }}|j        | j         j        k    r|} nŒ|€| j                             d¦  «         d S t          j
        ¦   «         | j         j        z
  }t          t          |                     ¦   «         ¦  «        ¬¦  «        }| j                             d|› d	|› d
�¦  «         |d |…         }|d |…= |j                             |¬¦  «         d S )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).)rb   )rS   r5   ÚlenrQ   rO   r\   r4   Ú	enumerateÚnodeidr   r?   r=   r   ÚintÚtotal_secondsÚhookÚpytest_deselected)	r<   r"   rb   r5   Úfailed_indexÚindexÚitemÚ	cache_ageÚ
deselecteds	            r   Úpytest_collection_modifyitemsz,StepwisePlugin.pytest_collection_modifyitems�   sù  € ð Ô*Ô:ˆÝ+.¨u©:¬:ˆÔÔ(àŒ:ð 	ØÔ×%Ò%Ð&FÑGÔGÐGØ+/ˆDÔÔ(ØˆFàÔÔ+ð 	ØÔ×%Ò%Ð&QÑRÔRÐRØˆFàÐ&¨?½cÀ%¹j¼jÒ+HÐ+HØÔ×%Ò%Øk½¸U¹¼ÐkÐkÐXgÐkÐkÐkñô ð ð ,0ˆDÔÔ(ØˆFð ˆÝ$ UÑ+Ô+ð 	ð 	‰KˆE�4ØŒ{˜dÔ.Ô:Ò:Ð:Ø$�Ø�ð ;ð ÐØÔ×%Ò%Ð&WÑXÔXÐXÐXÐXå œ™œ¨Ô)9Ô)IÑIˆIå!­#¨i×.EÒ.EÑ.GÔ.GÑ*HÔ*HÐIÑIÔIˆIØÔ×%Ò%ð0˜Lð 0ð 0ÈIð 0ð 0ð 0ñô ð ð ˜} ˜}Ô-ˆJØ�m�|�mÐ$ØŒK×)Ò)°
Ð)Ñ;Ô;Ð;Ð;Ð;r!   Úreportr   c                ó&  — |j         rY| j        r*|j        | j        j        k    rd | j        _        d| _        d S |j        | j        _        | j        €J ‚d| j        _        d S |j        dk    r#|j        | j        j        k    rd | j        _        d S d S d S )NFz0Test failed, continuing from this test next run.Úcall)ÚfailedrP   rh   rS   r4   r+   Ú
shouldstopÚwhen)r<   rs   s     r   Úpytest_runtest_logreportz'StepwisePlugin.pytest_runtest_logreport®   s²   € ØŒ=ð 	8ØŒyð ð ”= DÔ$4Ô$@Ò@Ð@Ø37�DÔ$Ô0à!�”	�	�	ð 06¬}�Ô Ô,Ø”|Ð/Ð/Ð/àFð ”Ô'Ð'Ð'ð Œ{˜fÒ$Ð$à”= DÔ$4Ô$@Ò@Ð@Ø37�DÔ$Ô0Ð0Ð0ð %Ð$à@Ð@r!   úlist[str] | Nonec                óp   — | j                              ¦   «         dk    r| j        rd„ | j        D ¦   «         S d S )Nr   c                ó   — g | ]}d |› �‘ŒS )z
stepwise: rL   )Ú.0Úxs     r   ú
<listcomp>zAStepwisePlugin.pytest_report_collectionfinish.<locals>.<listcomp>È   s!   € ÐAÐAÐA¨Ð$ Ð$Ð$ÐAÐAÐAr!   )r"   Úget_verbosityrO   r;   s    r   Úpytest_report_collectionfinishz-StepwisePlugin.pytest_report_collectionfinishÆ   s?   € ØŒ;×$Ò$Ñ&Ô&¨!Ò+Ð+°Ô0BÐ+ØAÐA¨dÔ.@ÐAÑAÔAÐAØˆtr!   c                óÔ   — t          | j        d¦  «        rd S | j                             ¦   «          | j                             t          t          j        | j        ¦  «        ¦  «         d S )Nr-   )	r/   r"   rS   rD   r.   ÚsetrX   ÚdataclassesÚasdictr;   s    r   r1   z#StepwisePlugin.pytest_sessionfinishË   s]   € Ý�4”; Ñ.Ô.ð 	ð ˆFØÔ×+Ò+Ñ-Ô-Ð-ØŒ
�ŠÕ)­;Ô+=¸dÔ>NÑ+OÔ+OÑPÔPÐPÐPÐPr!   N©r"   r
   r   r   )r   r3   ©r+   r   r   r   )r"   r
   rb   rc   r   r   )rs   r   r   r   )r   rz   rE   )
rF   rG   rH   rT   rR   ra   rr   ry   r�   r1   rL   r!   r   r)   r)   c   s§   € € € € € ð4ð 4ð 4ð 4ð)ð )ð )ð )ð ð ð ð ð+<ð +<ð +<ð +<ðZ8ð 8ð 8ð 8ð0ð ð ð ð
Qð Qð Qð Qð Qð Qr!   r)   )r   r   r   r   r†   r‡   )Ú
__future__r   r„   r   r   Útypingr   r   Ú_pytestr   Ú_pytest.cacheproviderr	   Ú_pytest.configr
   Ú_pytest.config.argparsingr   Ú_pytest.mainr   Ú_pytest.reportsr   Útyping_extensionsr   rX   r    r*   r1   Ú	dataclassr3   r)   rL   r!   r   ú<module>r’      s·  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø !Ð !Ð !Ð !Ð !Ð !Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &ð ð 'Ø&Ð&Ð&Ð&Ð&Ð&à%Ð ðð ð ð ð<Pð Pð Pð Pðð ð ð ð Ôð>ð >ð >ð >ð >ñ >ô >ñ Ôð>ð8nQð nQð nQð nQð nQñ nQô nQð nQð nQð nQr!   