+
    yjW                    ,   R t ^ RIHt ^ RIt^ RIt^ RIt^ RI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 ^ R
IH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 ^ RIHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$ ^ RI#H%t% ^ RI&H't' Rt(Rt)]]PT                   ! R R4      4       4       t+ ! R R4      t, ! R R4      t- ! R R 4      t. ! R! R"4      t/R# R$ lt0R% R& lt1]! R'R(7      R) R* l4       t2]R+ R, l4       t3R- R. lt4R/ R0 lt5R# )1z%Implementation of the cache provider.)annotationsN)Path)final)	Generator)Iterable)resolve_from_str)rm_rf)CollectReport)nodes)TerminalWriter)Config)ExitCode)hookimpl)Parser)check_ispytest)fixture)FixtureRequest)Session)	Directory)File)
TestReporta.  # pytest cache directory #

This directory contains data from the pytest's cache plugin,
which provides the `--lf` and `--ff` options, as well as the `cache` fixture.

**Do not** commit this to version control.

See [the docs](https://docs.pytest.org/en/stable/how-to/cache.html) for more information.
s   Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by pytest.
# For information about cache directory tags, see:
#	https://bford.info/cachedir/spec.html
c                  J   ] tR t^7t$ Rt]P                  ! RR7      tR]R&   ]P                  ! RR7      t	R]R&   Rt
R	tR
R/R R llt]R
R/R R ll4       t]R#R R ll4       t]R
R/R R ll4       tR
R/R R lltR R ltR R ltR R ltR R ltR R ltR R  ltR!tR"# )$Cachez Instance of the `cache` fixture.F)reprr   	_cachedirr   _configdv	_ispytestc               (    V ^8  d   QhRRRRRRRR/# )	   cachedirr   configr   r   boolreturnNone )formats   "I/var/www/html/2rare/lib/python3.14/site-packages/_pytest/cacheprovider.py__annotate__Cache.__annotate__E   s,      &,<@	    c               	4    \        V4       Wn        W n        R # N)r   r   r   )selfr!   r"   r   s   &&&$r(   __init__Cache.__init__E   s     	y!!r+   c               $    V ^8  d   QhRRRRRR/# )r    r"   r   r   r#   r$   r   r&   )r'   s   "r(   r)   r*   M   s!     	5 	5 	5d 	5u 	5r+   c                   \        V4       V P                  VRR7      pVP                  R4      '       d*   VP                  4       '       d   V P	                  VRR7       V ! W1RR7      # )z8Create the Cache instance for a Config.

:meta private:
Tr   
cacheclear)r   cache_dir_from_config	getoptionis_dirclear_cache)clsr"   r   r!   s   &&$ r(   
for_configCache.for_configL   s[     	y!,,Vt,DL))hoo.?.?OOHO58t44r+   c               $    V ^8  d   QhRRRRRR/# )r    r!   r   r   r#   r$   r%   r&   )r'   s   "r(   r)   r*   Y   s!     	 	4 	D 	T 	r+   c                    \        V4       V P                  V P                  3 F.  pW,          pVP                  4       '       g   K#  \	        V4       K0  	  R# )zVClear the sub-directories used to hold cached directories and values.

:meta private:
N)r   _CACHE_PREFIX_DIRS_CACHE_PREFIX_VALUESr7   r   )r9   r!   r   prefixr   s   &&&  r(   r8   Cache.clear_cacheX   sB     	y!--s/G/GHF!Axxzza Ir+   c               $    V ^8  d   QhRRRRRR/# )r    r"   r   r   r#   r$   r   r&   )r'   s   "r(   r)   r*   e   s&     M Mf MD MT Mr+   c               b    \        V4       \        V P                  R4      V P                  4      # )zBGet the path to the cache directory for a Config.

:meta private:
	cache_dir)r   r   getinirootpath)r"   r   s   &$r(   r5   Cache.cache_dir_from_configd   s&     	y!k :FOOLLr+   c               (    V ^8  d   QhRRRRRRRR/# )	r    fmtstrr   r#   argsobjectr$   r%   r&   )r'   s   "r(   r)   r*   m   s(     
 
 
4 
 
D 
r+   c          	         \        V4       ^ RIp^ RIHp TP	                  T! V'       d   VP
                  ! R/ VB MT4      V P                  P                  ^R7       R# )z'Issue a cache warning.

:meta private:
N)PytestCacheWarning)
stacklevelr&   )r   warnings_pytest.warning_typesrN   warnr'   r   hook)r.   rI   r   rK   rP   rN   s   &&$,  r(   rR   
Cache.warnm   sK    
 	y!<Tszz1D1sCLL 	 	
r+   c                    V ^8  d   QhRRRR/# )r    pathr   r$   r%   r&   )r'   s   "r(   r)   r*   }   s     0 04 0D 0r+   c                	L    V P                  4        VP                  R R R7       R# )T)exist_okparentsN)&_ensure_cache_dir_and_supporting_filesmkdir)r.   rV   s   &&r(   _mkdirCache._mkdir}   s    335

D$
/r+   c                    V ^8  d   QhRRRR/# )r    namerJ   r$   r   r&   )r'   s   "r(   r)   r*      s      # $ r+   c                    \        V4      p\        VP                  4      ^8  d   \        R4      hV P                  P                  V P                  V4      pV P                  V4       V# )a  Return a directory path object with the given name.

If the directory does not yet exist, it will be created. You can use
it to manage files to e.g. store/retrieve database dumps across test
sessions.

.. versionadded:: 7.0

:param name:
    Must be a string not containing a ``/`` separator.
    Make sure the name contains your plugin or application
    identifiers to prevent clashes with other cache users.
z.name is not allowed to contain path separators)r   lenparts
ValueErrorr   joinpathr>   r\   )r.   r_   rV   ress   &&  r(   r[   Cache.mkdir   sV     Dztzz?QMNNnn%%d&=&=tDC
r+   c                    V ^8  d   QhRRRR/# )r    keyrJ   r$   r   r&   )r'   s   "r(   r)   r*      s     M M M Mr+   c                	`    V P                   P                  V P                  \        V4      4      # r-   )r   rd   r?   r   )r.   rh   s   &&r(   _getvaluepathCache._getvaluepath   s#    ~~&&t'@'@$s)LLr+   c                   V ^8  d   QhRR/# )r    rh   rJ   r&   )r'   s   "r(   r)   r*      s      s r+   c                    V P                  V4      p VP                  RRR7      ;_uu_ 4       p\        P                  ! V4      uuRRR4       #   + '       g   i     R# ; i  \        \
        3 d    Tu # i ; i)a\  Return the cached value for the given key.

If no value was yet cached or the value cannot be read, the specified
default is returned.

:param key:
    Must be a ``/`` separated value. Usually the first
    name is the name of your plugin or your application.
:param default:
    The value to return in case of a cache-miss or invalid cache value.
rUTF-8encodingN)rj   openjsonloadrc   OSError)r.   rh   defaultrV   fs   &&&  r(   get	Cache.get   s`     !!#&	311Qyy| 2111G$ 	N	s.   A# A
A# A 	A#  A# #A98A9c               $    V ^8  d   QhRRRRRR/# )r    rh   rJ   valuerL   r$   r%   r&   )r'   s   "r(   r)   r*      s!      s 6 d r+   c                   V P                  V4      p V P                  VP                  4       \
        P                  ! TR^R7      p TP                  RR	R
7      pT;_uu_ 4        TP                  T4       RRR4       R#   \         d%   pT P	                  RT RT 2RR7        Rp?R# Rp?ii ; i  + '       g   i     R# ; i  \         d%   pT P	                  RT RT 2RR7        Rp?R# Rp?ii ; i)a  Save value for the given key.

:param key:
    Must be a ``/`` separated value. Usually the first
    name is the name of your plugin or your application.
:param value:
    Must be of any combination of basic python types,
    including nested types like lists of dictionaries.
zcould not create cache path z: Tr3   NF)ensure_asciiindentwro   rp   zcache could not write path )	rj   r\   parentru   rR   rs   dumpsrr   write)r.   rh   r{   rV   excdatarw   s   &&&    r(   set	Cache.set   s     !!#&	KK$ zz%eA>				#	0A    	II.tfBse<   	   	II-dV2cU;   	s;   B C %B3B0B++B03C	C6C11C6c                   V ^8  d   QhRR/# r    r$   r%   r&   )r'   s   "r(   r)   r*      s     + + +r+   c           	        V P                   P                  4       '       d   R# V P                   P                  P                  RRR7       \        P
                  ! RV P                   P                  R7      ;_uu_ 4       p\        V4      p\        P                  ! ^4      p\        P                  ! V4       VP                  RV,
          4       \        VP                  R4      RR	R
7      ;_uu_ 4       pVP                  \        4       RRR4       \        VP                  R4      RR	R
7      ;_uu_ 4       pVP                  R4       RRR4       \        VP                  R4      R4      ;_uu_ 4       pVP                  \        4       RRR4        VP                  V P                   4       VP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Ll; i  \          d;   pTP"                  \"        P$                  \"        P&                  39  d   h  Rp?LRp?ii ; i  + '       g   i     R# ; i)z.Create the cache dir and its supporting files.NT)rY   rX   zpytest-cache-files-)r@   diri  z	README.mdxro   rp   z
.gitignorez%# Created by pytest automatically.
*
zCACHEDIR.TAGxb)r   r7   r   r[   tempfileTemporaryDirectoryr   osumaskchmodrr   rd   r   README_CONTENTCACHEDIR_TAG_CONTENTrenameru   errno	ENOTEMPTYEEXIST)r.   newpathrV   r   rw   es   &     r(   rZ   ,Cache._ensure_cache_dir_and_supporting_files   s   >>  ""##D4#@(((%%
 
 =D HHUOEHHUOJJuu}%dmmK0#HHA' IdmmL13IIQAB JdmmN3T::a,- ;DNN+" 

K
 
 IHII::
   775??ELL"AA B+
 
 
s   >A5I3G		-I6G	+I3G-		IH -IGIG*%I-G=8I I0I ;I III	)r   r   N)F)__name__
__module____qualname____firstlineno____doc__dataclassesfieldr   __annotations__r   r>   r?   r/   classmethodr:   r8   staticmethodr5   rR   r\   r[   rj   rx   r   rZ   __static_attributes__r&   r+   r(   r   r   7   s     +!''U3It3!''U3GV3  CH 	5U 	5 	5 	 	 M5 M M
% 
 0*M&>+ +r+   r   c                  F    ] tR t^tR R lt]! RR7      R R l4       tRtR# )	LFPluginCollWrapperc                    V ^8  d   QhRRRR/# r    lfpluginLFPluginr$   r%   r&   )r'   s   "r(   r)    LFPluginCollWrapper.__annotate__   s     5 5 5d 5r+   c                	     Wn         R V n        R# )FN)r   _collected_at_least_one_failurer.   r   s   &&r(   r/   LFPluginCollWrapper.__init__   s     /4,r+   T)wrapperc                    V ^8  d   QhRRRR/# )r    	collectornodes.Collectorr$   z-Generator[None, CollectReport, CollectReport]r&   )r'   s   "r(   r)   r      s     + +(+	6+r+   c              #  	  aa"   R x p\        V\        \        34      '       d?   V P                  P                  oR V3R llp\        VP                  VRR7      Vn        V# \        V\        4      '       Ed\   VP                  V P                  P                  9   Ed6   VP                  pV P                  P                  oV P                  '       g   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       g   V# V P                  P                  P                  P                  \        V P                  4      R4       RV n
        VP                   pV Uu. uFY  pVP"                  S9   gD   VP%                  VP                  4      '       g#   \        V\&        P(                  4      '       g   KW  VNK[  	  upVR&   V# u upi 5i)	Nc                    V ^8  d   QhRRRR/# )r    nodeznodes.Item | nodes.Collectorr$   r#   r&   )r'   s   "r(   r)   DLFPluginCollWrapper.pytest_make_collect_report.<locals>.__annotate__  s     - -; - -r+   c                "   < V P                   S9   # r-   )rV   )r   lf_pathss   &r(   sort_key@LFPluginCollWrapper.pytest_make_collect_report.<locals>.sort_key  s    yyH,,r+   Trh   reversec              3  @   <"   T F  qP                   S9   x  K  	  R # 5ir-   nodeid).0r   
lastfaileds   & r(   	<genexpr>ALFPluginCollWrapper.pytest_make_collect_report.<locals>.<genexpr>  s     Fv!xx:5vs   Fzlfplugin-collskipNNN)
isinstancer   r   r   _last_failed_pathssortedresultr   rV   r   r   anyr"   pluginmanagerregisterLFPluginCollSkipfilessessionr   
isinitpathr
   	Collector)	r.   r   re   r   r   r   r   r   r   s	   &&     @@r(   pytest_make_collect_report.LFPluginCollWrapper.pytest_make_collect_report   sn     i'9!566}}77H- -  

CJ> 
3 	4((~~!A!AA!]]55
 ;;;3FvF333FvFFF"
MM((66??-dmm<>Q <@D8#++ $#xx:-))!&&11!!U__5 A#q	 
s7   CG
GG6GAG06G'G	GG)r   r   Nr   r   r   r   r/   r   r   r   r&   r+   r(   r   r      s     5 d+ +r+   r   c                  8    ] tR tRtR R lt]R R l4       tRtR# )r   i-  c                    V ^8  d   QhRRRR/# r   r&   )r'   s   "r(   r)   "LFPluginCollSkipfiles.__annotate__.  s     ! ! !d !r+   c                	    Wn         R # r-   r   r   s   &&r(   r/   LFPluginCollSkipfiles.__init__.  s     r+   c                    V ^8  d   QhRRRR/# )r    r   r   r$   zCollectReport | Noner&   )r'   s   "r(   r)   r   2  s     
 
(
	
r+   c                	    \        V\        4      '       db   VP                  V P                  P                  9  d=   V P                  ;P
                  ^,          un        \        VP                  RR. R7      # R# )   passedN)longreprr   )r   r   rV   r   r   _skipped_filesr	   r   )r.   r   s   &&r(   r   0LFPluginCollSkipfiles.pytest_make_collect_report1  s]     i&&~~T]]%E%EE,,1,$$$hb  r+   r   Nr   r&   r+   r(   r   r   -  s    ! 
 
r+   r   c                      ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR R lt	]
! RRR7      R R l4       tR R ltRtR# )r   i?  z;Plugin which implements the --lf (run last-failing) option.c                    V ^8  d   QhRRRR/# r    r"   r   r$   r%   r&   )r'   s   "r(   r)   LFPlugin.__annotate__B  s      v $ r+   c                	  a SV n         Rp\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      V n        SP                  '       g   Q hSP                  P	                  R/ 4      V n        RV n        RV n        ^ V n        SP                  R 4      '       d=   V P                  4       V n        SP                  P                  \        V 4      R4       R# R# )lfc              3  F   <"   T F  pSP                  V4      x  K  	  R # 5ir-   )r6   )r   rh   r"   s   & r(   r   $LFPlugin.__init__.<locals>.<genexpr>E  s     G;C&**3//;s   !TFcache/lastfailedNzlfplugin-collwrapper)r   failedfirst)r"   r   activecacherx   r   _previously_failed_count_report_statusr   r6   get_last_failed_pathsr   r   r   r   )r.   r"   active_keyss   &f r(   r/   LFPlugin.__init__B  s    )cG;GcccG;GG||||+1<<+;+;<NPR+S48%*.D!!&*&@&@&BD#  ))#D)+A "r+   c                   V ^8  d   QhRR/# )r    r$   z	set[Path]r&   )r'   s   "r(   r)   r   R  s     	1 	1y 	1r+   c                X   V P                   P                  p\        4       pV P                   FM  pWP	                  R4      ^ ,          ,          pVP                  V4       VP                  VP                  4       KO  	  V Uu0 uF  qUP                  4       '       g   K  VkK  	  up# u upi )zOReturn a set with all Paths of the previously failed nodeids and
their parents.z::)	r"   rF   r   r   splitaddupdaterY   exists)r.   rF   r   r   rV   r   s   &     r(   r   LFPlugin.get_last_failed_pathsR  s|     ;;''ooFll4033DJJtMM$,,' & "06aXXZ6000s   B'B'c                   V ^8  d   QhRR/# )r    r$   
str | Noner&   )r'   s   "r(   r)   r   ]  s      
 r+   c                	    V P                   '       d0   V P                  P                  R 4      ^ 8  d   RV P                   2# R# )verbosezrun-last-failure: N)r   r"   r6   r   )r.   s   &r(   pytest_report_collectionfinish'LFPlugin.pytest_report_collectionfinish]  s8    ;;;4;;00;q@'(;(;'<==r+   c                    V ^8  d   QhRRRR/# )r    reportr   r$   r%   r&   )r'   s   "r(   r)   r   b  s     2 2z 2d 2r+   c                	   VP                   R 8X  d   VP                  '       g   VP                  '       d)   V P                  P	                  VP
                  R4       R# VP                  '       d   RV P                  VP
                  &   R# R# )callNT)whenr   skippedr   popr   failed)r.   r  s   &&r(   pytest_runtest_logreport!LFPlugin.pytest_runtest_logreportb  sV    KK6!fmmmOOt4]]]-1DOOFMM* r+   c                    V ^8  d   QhRRRR/# )r    r  r	   r$   r%   r&   )r'   s   "r(   r)   r   h  s     2 2= 2T 2r+   c                	F   VP                   R9   pV'       dq   VP                  V P                  9   dT   V P                  P                  VP                  4       V P                  P	                  R VP
                   4       4       R# R# RV P                  VP                  &   R# )r   c              3  <   "   T F  qP                   R 3x  K  	  R# 5i)TNr   r   items   & r(   r   0LFPlugin.pytest_collectreport.<locals>.<genexpr>m  s     &U}tT':}s   TN)r   r  )outcomer   r   r  r   r   )r.   r  r   s   && r(   pytest_collectreportLFPlugin.pytest_collectreporth  so    #88}}/##FMM2&&&Uv}}&UU 0 .2DOOFMM*r+   Tr   tryfirstc               $    V ^8  d   QhRRRRRR/# )r    r"   r   itemslist[nodes.Item]r$   Generator[None, None, None]r&   )r'   s   "r(   r)   r   r  s$     1 11%51	$1r+   c              #  	\  "   R x pV P                   '       g   V# V P                  '       Edz   . p. pV FB  pVP                  V P                  9   d   VP                  V4       K1  VP                  V4       KD  	  \	        V4      V n        V'       g$   R\	        V P                  4      3,          V n        MV P                  P                  R4      '       d"   WBR&   VP                  P                  VR7       MWE,           VR&   V P
                  ^8X  d   RMRpV P                  P                  R4      '       d   RMR	pR
V P
                   RV V 2V n        V P                  ^ 8  d@   V P                  ^8X  d   RMRp	V ;P                  RV P                   RV	 R2,          un        V# RV n        V P                  P                  R4      R8X  dD   V ;P                  R,          un        VP                  P                  VR,          R7       . VR&   V# V ;P                  R,          un        V# 5i)Nz'%d known failures not in selected testsr   r   )r  failurefailuresr   z first zrerun previous  filefilesz
 (skipped )zno previously failed tests, last_failed_no_failuresnonezdeselecting all items.znot deselecting items.)r   r   r   appendra   r   r   r"   r6   rS   pytest_deselectedr   )
r.   r"   r  re   previously_failedpreviously_passedr  nounsuffix
files_nouns
   &&&       r(   pytest_collection_modifyitems&LFPlugin.pytest_collection_modifyitemsq  s     {{{J??? " ";;$//1%,,T2%,,T2	 
 -00A,BD)$ 'P(S '# ;;((..0!HKK118I1J0DE!H$($A$AQ$FyJ%)[[%:%:=%I%Ir%d&C&C%DAdVF8T # ""Q&'+':':a'?VW
##D4G4G3H*UV'WW# 
 #AD{{$$%>?6I##'??#--E!H-=a 
 ##'??#
s   +H,B'H,A!H,8C4H,c                    V ^8  d   QhRRRR/# )r    r   r   r$   r%   r&   )r'   s   "r(   r)   r     s     B BG B Br+   c                	<   V P                   pVP                  R 4      '       g   \        VR4      '       d   R# VP                  f   Q hVP                  P	                  R/ 4      pW0P
                  8w  d)   VP                  P                  RV P
                  4       R# R# )	cacheshowworkerinputNr   )r"   r6   hasattrr   rx   r   r   )r.   r   r"   saved_lastfaileds   &&  r(   pytest_sessionfinishLFPlugin.pytest_sessionfinish  s{    K((GFM,J,J||'''!<<++,>C.LL/A /r+   )r   r   r   r   r   r"   r   N)r   r   r   r   r   r/   r   r   r  r  r   r*  r2  r   r&   r+   r(   r   r   ?  sF    E 	1
22 dT*1 +1fB Br+   r   c                  d    ] tR tRtRtR R lt]! RRR7      R R l4       tR	 R
 ltR R lt	Rt
R# )NFPlugini  z8Plugin which implements the --nf (run new-first) option.c                    V ^8  d   QhRRRR/# r   r&   )r'   s   "r(   r)   NFPlugin.__annotate__  s     I Iv I$ Ir+   c                	    Wn         VP                  P                  V n        VP                  f   Q h\        VP                  P                  R. 4      4      V n        R # )Ncache/nodeids)r"   optionnewfirstr   r   r   rx   cached_nodeidsr.   r"   s   &&r(   r/   NFPlugin.__init__  sF    mm,,||'''!&,,"2"2?B"GHr+   Tr  c                    V ^8  d   QhRRRR/# )r    r  r  r$   r  r&   )r'   s   "r(   r)   r7    s      %	$r+   c              #  	  "   R x pV P                   '       d   / p/ pV F<  pVP                  V P                  9  d   WSVP                  &   K.  WTVP                  &   K>  	  V P                  VP	                  4       4      V P                  VP	                  4       4      ,           VR&   V P                  P                  V4       V# V P                  P                  R V 4       4       V# 5i)Nr   c              3  8   "   T F  qP                   x  K  	  R # 5ir-   r   r  s   & r(   r   9NFPlugin.pytest_collection_modifyitems.<locals>.<genexpr>  s     &Eut{{us   )r   r   r<  _get_increasing_ordervaluesr   )r.   r  re   	new_itemsother_itemsr  s   &&    r(   r*  &NFPlugin.pytest_collection_modifyitems  s      ;;;/1I13K;;d&9&99-1dkk*/3,	  11  "**;+=+=+?@AE!H &&y1 
 &&&Eu&EE
s   C$C&c                    V ^8  d   QhRRRR/# )r    r  zIterable[nodes.Item]r$   r  r&   )r'   s   "r(   r)   r7    s      W W+? WDT Wr+   c                	     \        VR  RR7      # )c                J    V P                   P                  4       P                  # r-   )rV   statst_mtime)r  s   &r(   <lambda>0NFPlugin._get_increasing_order.<locals>.<lambda>  s    diinn.>.G.Gr+   Tr   )r   )r.   r  s   &&r(   rC  NFPlugin._get_increasing_order  s    e!GQUVVr+   c                   V ^8  d   QhRR/# r   r&   )r'   s   "r(   r)   r7    s     	G 	Gd 	Gr+   c                	$   V P                   pVP                  R 4      '       g   \        VR4      '       d   R# VP                  R4      '       d   R# VP                  f   Q hVP                  P	                  R\        V P                  4      4       R# )r.  r/  Ncollectonlyr9  )r"   r6   r0  r   r   r   r<  r=  s   & r(   r2  NFPlugin.pytest_sessionfinish  sn    K((GFM,J,JM**||'''&1D1D*EFr+   )r   r<  r"   N)r   r   r   r   r   r/   r   r*  rC  r2  r   r&   r+   r(   r5  r5    s8    BI dT* +.W	G 	Gr+   r5  c                    V ^8  d   QhRRRR/# )r    parserr   r$   r%   r&   )r'   s   "r(   r)   r)     s     ; ;V ; ;r+   c           
        V P                  R 4      pVP                  RRRRRR7       VP                  RRRR	R
R7       VP                  RRRRRR7       VP                  RRRRRR7       VP                  RRRRR7       RpR\        P                  9   d6   \        P                  P                  \        P                  R,          V4      pV P                  RVRR7       VP                  RRRR R%R!R"R#7       R$# )&generalz--lfz--last-failed
store_truer   zHRerun only the tests that failed at the last run (or all if none failed))actiondesthelpz--ffz--failed-firstr   zyRun all tests, but run the last failures first. This may re-order tests and thus lead to repeated fixture setup/teardown.z--nfz--new-firstr;  zORun tests from new files first, then the rest of the tests sorted by file mtimez--cache-showr#  ?r.  z_Show cache contents, don't perform collection or tests. Optional argument: glob (default: '*').)rY  nargsrZ  r[  z--cache-clearr4   z.Remove all cache contents at start of test run.pytest_cacheTOX_ENV_DIRrD   zCache directory path)rv   r[  z--lfnfz--last-failed-no-failuresstorer!  alla  With ``--lf``, determines whether to execute tests when there are no previously (known) failures or when no cached ``lastfailed`` data was found. ``all`` (the default) runs the full test suite again. ``none`` just emits a message about no known failures and exits successfully.)rY  rZ  choicesrv   r[  N)ra  r"  )getgroup	addoptionr   environrV   joinaddini)rU  groupcache_dir_defaults   &  r(   pytest_addoptionrj    s-   OOI&E	OO2   
OO+   
OO   
OO6  	 
OO=	   (

"GGLLM)BDUV
MM+'8?UMV	OO#&X  r+   c                    V ^8  d   QhRRRR/# )r    r"   r   r$   zint | ExitCode | Noner&   )r'   s   "r(   r)   r)     s       +@ r+   c                    V P                   P                  '       d0   V P                   P                  '       g   ^ RIHp V! V \        4      # R# )    )wrap_sessionN)r:  r.  r[  _pytest.mainrn  )r"   rn  s   & r(   pytest_cmdline_mainrp    s4    }}v}}'9'9'9-FI..r+   T)r  c                    V ^8  d   QhRRRR/# r   r&   )r'   s   "r(   r)   r)   '  s     @ @V @ @r+   c                    \         P                  V R R7      V n        V P                  P	                  \        V 4      R4       V P                  P	                  \        V 4      R4       R# )Tr3   r   nfpluginN)r   r:   r   r   r   r   r5  )r"   s   &r(   pytest_configurert  &  sO    ##Fd#;FL
!!(6"2J?
!!(6"2J?r+   c                    V ^8  d   QhRRRR/# )r    requestr   r$   r   r&   )r'   s   "r(   r)   r)   .  s        >  e  r+   c                b    V P                   P                  f   Q hV P                   P                  # )aJ  Return a cache object that can persist state between testing sessions.

cache.get(key, default)
cache.set(key, value)

Keys must be ``/`` separated strings, where the first part is usually the
name of your plugin or application to avoid clashes with other cache users.

Values can be any object handled by the json stdlib module.
)r"   r   )rv  s   &r(   r   r   -  s*     >>+++>>r+   c                    V ^8  d   QhRRRR/# )r    r"   r   r$   r   r&   )r'   s   "r(   r)   r)   =  s       J r+   c                   V P                   P                  ^ 8  g   V P                  R4      R8w  dH   V P                  f   Q hV P                  P                  p VP                  V P                  4      pRV 2# R#   \         d    Tp Li ; i)z6Display cachedir with --cache-show and if non-default.rD   r^  N
cachedir: )r:  r   rE   r   r   relative_torF   rc   )r"   r!   displaypaths   &  r(   pytest_report_headerr}  =  s    }}q FMM+$>/$Q||'''<<))	#"..v?K K=))  	#"K	#s   A; ;B
Bc               $    V ^8  d   QhRRRRRR/# )r    r"   r   r   r   r$   intr&   )r'   s   "r(   r)   r)   M  s!     ' 'f 'w '3 'r+   c                   ^ RI Hp V P                  f   Q h\        4       pVP	                  R\        V P                  P                  4      ,           4       V P                  P                  P                  4       '       g   VP	                  R4       ^ # V P                  P                  ^ ,          pVf   Rp\        4       pV P                  P                  pV\        P                  ,          pVP                  RRV: 24       \        R VP                  V4       4       4       F  p\        VP!                  V4      4      p	V P                  P#                  W4      p
WJ d   VP	                  V	 R24       KS  VP	                  V	 R	24       V! V
4      P%                  4        F  pVP	                  R
V,           4       K  	  K  	  V\        P&                  ,          pVP                  4       '       d   \        VP                  V4      4      pVP                  RRV: 24       V Fd  pVP)                  4       '       g   K  \        VP!                  V4      4      p	VP	                  V	 RVP+                  4       P,                  R 24       Kf  	  ^ # )rm  )pformatrz  zcache is empty*-zcache values for c              3  T   "   T F  qP                  4       '       g   K  Vx  K   	  R # 5ir-   )is_file)r   r   s   & r(   r   cacheshow.<locals>.<genexpr>`  s     E%5!!%5s   (
(z- contains unreadable content, will be ignoredz
 contains:z  zcache directories for z is a file of length r   )pprintr  r   r   linerJ   r   r7   r:  r.  rL   r   r?   sepr   rglobr{  rx   
splitlinesr>   r  rK  st_size)r"   r   r  twglobdummybasedirvdirvalpathrh   valr  ddircontentsps   &&             r(   r.  r.  M  s   <<###		BGGL3v||55667<<!!((**
 !==""1%D|HEll$$GU///DFF3#D8,-ETZZ%5EE'%%d+,lls*<GGseHIJGGse:&'//1t$ 2 F U---D{{}}$**T*+
s,TH56A yy{{!--013%4QVVX5E5Ea4HIJ  r+   )6r   
__future__r   r   r   rs   r   pathlibr   r   typingr   r   r   r   r   reportsr	   _pytestr
   _pytest._ior   _pytest.configr   r   r   _pytest.config.argparsingr   _pytest.deprecatedr   _pytest.fixturesr   r   ro  r   _pytest.nodesr   r   _pytest.reportsr   r   r   	dataclassr   r   r   r   r5  rj  rp  rt  r   r}  r.  r&   r+   r(   <module>r     s   + #    	      %  "  & ! # # , - $ +   #  &	  } }  }@1 1h $nB nBb-G -G`;| 
4@ @ 	  	  'r+   