Ë
    æØjjPc  ã                  óJ  — U d Z 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ZddlZddlZdd	lmZ ddlZddlZddlZddlZddlZdd
lmZ 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+ ddl*m,Z, ddl-m.Z. ddl-m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 er
ddl8Z8ddl9m:Z: dZ;d Z<d!Z=d"Z>d#Z?e;e<e=e>e?fZ@daAdaBd$eCd%<   dGd&„ZDdHd'„ZE	 	 	 	 	 	 dId(„ZFdJd)„ZGdKd*„ZHdJd+„ZI G d,„ d-e«      ZJ G d.„ d/eK«      ZLdLd0„ZM	 	 	 	 dM	 	 	 	 	 	 	 	 	 dNd1„ZN G d2„ d3e,«      ZOdOd4„ZPdPd5„ZQdQd6„ZR G d7„ d8e3«      ZSdRd9„ZTdSd:„ZUe
dTd;„«       ZV G d<„ d=e3«      ZWdUd>„ZXdVd?„ZYdWd@„ZZdWdA„Z[dWdB„Z\dXdC„Z] e(dD¬E«      dYdF„«       Z^y)Zz4Discover and run doctests in modules and test files.é    )ÚannotationsN)ÚCallable)Ú	Generator)ÚIterable)ÚSequence)Úcontextmanager)ÚPath)ÚAny)ÚTYPE_CHECKING)Úoutcomes)ÚExceptionInfo)ÚReprFileLocation)ÚTerminalRepr)ÚTerminalWriter©Úsafe_getattr)ÚConfig)ÚParser)Úfixture)Ú
TopRequest)Ú	Collector)ÚItem)ÚOutcomeException)Úskip©Ú
fnmatch_ex)ÚModule)Úapprox)ÚPytestWarning)ÚSelfÚnoneÚcdiffÚndiffÚudiffÚonly_first_failurez"type[doctest.OutputChecker] | NoneÚCHECKER_CLASSc                ó~  — | j                  ddddg¬«       | j                  ddd¬	«       | j                  d
«      }|j                  ddddd¬«       |j                  dt        j                  ddt
        d¬«       |j                  ddg ddd¬«       |j                  ddddd¬«       |j                  dddd d!¬«       y )"NÚdoctest_optionflagszOption flags for doctestsÚargsÚELLIPSIS)ÚtypeÚdefaultÚdoctest_encodingzEncoding used for doctest fileszutf-8)r,   Úcollectz--doctest-modulesÚ
store_trueFzRun doctests in all .py modulesÚdoctestmodules)Úactionr,   ÚhelpÚdestz--doctest-reportr$   z9Choose another output format for diffs on doctest failureÚdoctestreport)r+   r,   r2   Úchoicesr3   z--doctest-globÚappendÚpatz2Doctests file matching pattern, default: test*.txtÚdoctestglob)r1   r,   Úmetavarr2   r3   z--doctest-ignore-import-errorsz Ignore doctest collection errorsÚdoctest_ignore_import_errorsz--doctest-continue-on-failurez<For a given doctest, continue to run after the first failureÚdoctest_continue_on_failure)ÚaddiniÚgetgroupÚ	addoptionÚstrÚlowerÚDOCTEST_REPORT_CHOICES)ÚparserÚgroups     úQ/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/doctest.pyÚpytest_addoptionrE   F   sþ   € Ø
‡M�MØØ#ØØ�ð	 ô ð ‡M�MØÐ=Àwð ô ð �O‰O˜IÓ&€EØ	‡O�OØØØØ.Øð ô ð 
‡O�OØÜ�Y‰YØØHÜ&Øð ô ð 
‡O�OØØØØØAØð ô ð 
‡O�OØ(ØØØ/Ø+ð ô ð 
‡O�OØ'ØØØKØ*ð õ ó    c                 ó   — d a y ©N)ÚRUNNER_CLASS© rF   rD   Úpytest_unconfigurerK   x   s	   € ð �LrF   c                ó  — |j                   }| j                  dk(  rM|j                  j                  r6t	        t        | «      t        | «      f«      st        j                  || ¬«      S y t        || |«      rt        j                  || ¬«      S y )Nz.py©Úpath)ÚconfigÚsuffixÚoptionr0   ÚanyÚ_is_setup_pyÚ_is_main_pyÚDoctestModuleÚfrom_parentÚ_is_doctestÚDoctestTextfile)Ú	file_pathÚparentrO   s      rD   Úpytest_collect_filer[   ~   s…   € ð �]‰]€FØ×Ñ˜5Ò Ø�=‰=×'Ò'´Ü˜)Ó$¤k°)Ó&<Ð=ô1
ô !×,Ñ,¨V¸)Ð,ÓDÐDð ô 
�V˜Y¨Ô	/Ü×*Ñ*¨6¸	Ð*ÓBÐBØrF   c                óV   — | j                   dk7  ry| j                  «       }d|v xs d|v S )Nzsetup.pyFs
   setuptoolss	   distutils)ÚnameÚ
read_bytes)rN   Úcontentss     rD   rS   rS   �   s2   € Ø‡y�y�JÒØØ�‰Ó €HØ˜HÐ$Ò@¨¸Ð(@Ð@rF   c                ó¬   ‡— ‰j                   dv r|j                  j                  ‰«      ry| j                  d«      xs dg}t	        ˆfd„|D «       «      S )N)z.txtz.rstTr8   z	test*.txtc              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wrH   r   )Ú.0ÚglobrN   s     €rD   ú	<genexpr>z_is_doctest.<locals>.<genexpr>˜   s   øè ø€ Ò8¨$Œz˜$ ×%Ñ8ùs   ƒ)rP   ÚsessionÚ
isinitpathÚ	getoptionrR   )rO   rN   rZ   Úglobss    `  rD   rW   rW   ”   sL   ø€ Ø‡{�{Ð&Ñ&¨6¯>©>×+DÑ+DÀTÔ+JØØ×Ñ˜]Ó+Ò<°¨}€EÜÓ8°%Ô8Ó8Ð8rF   c                ó    — | j                   dk(  S )Nz__main__.py)r]   rM   s    rD   rT   rT   ›   s   € Ø�9‰9˜Ñ%Ð%rF   c                  ó$   — e Zd Z	 	 	 	 dd„Zdd„Zy)ÚReprFailDoctestc                ó   — || _         y rH   )Úreprlocation_lines)Úselfrm   s     rD   Ú__init__zReprFailDoctest.__init__    s   € ð #5ˆÕrF   c                ó~   — | j                   D ].  \  }}|D ]  }|j                  |«       Œ |j                  |«       Œ0 y rH   )rm   ÚlineÚ
toterminal)rn   ÚtwÚreprlocationÚlinesrq   s        rD   rr   zReprFailDoctest.toterminal¥   sD   € Ø#'×#:Ñ#:ò 	(ÑˆL˜%Øò �Ø—‘˜•ðà×#Ñ# BÕ'ñ	(rF   N)rm   z0Sequence[tuple[ReprFileLocation, Sequence[str]]]ÚreturnÚNone)rs   r   rv   rw   )Ú__name__Ú
__module__Ú__qualname__ro   rr   rJ   rF   rD   rk   rk   Ÿ   s   „ ð5Ø"Rð5à	ó5ô
(rF   rk   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚMultipleDoctestFailuresc                ó0   •— t         ‰| �  «        || _        y rH   )Úsuperro   Úfailures)rn   r   Ú	__class__s     €rD   ro   z MultipleDoctestFailures.__init__­   s   ø€ Ü‰ÑÔØ ˆ�rF   )r   z Sequence[doctest.DocTestFailure]rv   rw   )rx   ry   rz   ro   Ú__classcell__©r€   s   @rD   r|   r|   ¬   s   ø„ ÷!ñ !rF   r|   c                 ó>   ‡— dd l Š G ˆfd„d‰j                  «      } | S )Nr   c                  óz   •‡ — e Zd ZdZ	 	 	 	 d	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dˆfd„Z	 	 	 	 	 	 	 	 dˆfd„Zˆ xZS )	ú/_init_runner_class.<locals>.PytestDoctestRunnerzˆRunner to collect failures.

        Note that the out variable in this case is a list instead of a
        stdout-like object.
        c                ó8   •— t         ‰| �  |||¬«       || _        y )N)ÚcheckerÚverboseÚoptionflags)r~   ro   Úcontinue_on_failure)rn   r‡   rˆ   r‰   rŠ   r€   s        €rD   ro   z8_init_runner_class.<locals>.PytestDoctestRunner.__init__¼   s!   ø€ ô ‰GÑ W°gÈ;ÐÔWØ':ˆDÕ$rF   c                ól   •—  ‰j                   |||«      }| j                  r|j                  |«       y |‚rH   )ÚDocTestFailurerŠ   r6   )rn   ÚoutÚtestÚexampleÚgotÚfailureÚdoctests         €rD   Úreport_failurez>_init_runner_class.<locals>.PytestDoctestRunner.report_failureÆ   s5   ø€ ð -�g×,Ñ,¨T°7¸CÓ@ˆGØ×'Ò'Ø—
‘
˜7Õ#à�rF   c                ó   •— t        |d   t        «      r|d   ‚t        |d   t        j                  «      rt	        j
                  d«        ‰j                  |||«      }| j                  r|j                  |«       y |‚)Né   zQuitting debugger)	Ú
isinstancer   ÚbdbÚBdbQuitr   ÚexitÚUnexpectedExceptionrŠ   r6   )rn   r�   rŽ   r�   Úexc_infor‘   r’   s         €rD   Úreport_unexpected_exceptionzK_init_runner_class.<locals>.PytestDoctestRunner.report_unexpected_exceptionÓ   sm   ø€ ô ˜( 1™+Ô'7Ô8Ø˜q‘kÐ!Ü˜( 1™+¤s§{¡{Ô3Ü—‘Ð1Ô2Ø1�g×1Ñ1°$¸ÀÓJˆGØ×'Ò'Ø—
‘
˜7Õ#à�rF   ©NNr   T)
r‡   údoctest.OutputChecker | Nonerˆ   úbool | Noner‰   ÚintrŠ   Úboolrv   rw   )rŽ   údoctest.DocTestr�   údoctest.Exampler�   r?   rv   rw   )rŽ   r¢   r�   r£   r›   z>tuple[type[BaseException], BaseException, types.TracebackType]rv   rw   )rx   ry   rz   Ú__doc__ro   r“   rœ   r�   )r€   r’   s   @€rD   ÚPytestDoctestRunnerr…   µ   s«   ù„ ñ	ð 59Ø#'Ø Ø(,ð	;à1ð	;ð !ð	;ð ð		;ð
 "&ð	;ð õ	;ð	ð "ð	ð %ð		ð
 ð	ð õ	ð	ð "ð	ð %ð		ð
 Uð	ð ÷	ñ 	rF   r¥   )r’   ÚDebugRunner)r¥   r’   s    @rD   Ú_init_runner_classr§   ²   s!   ø€ Ûö-˜g×1Ñ1ô -ð^ ÐrF   c                ó@   — t         €
t        «       a t        | |||¬«      S )N©r‡   rˆ   r‰   rŠ   )rI   r§   r©   s       rD   Ú_get_runnerrª   ç   s-   € ô ÐÜ)Ó+ˆô ØØØØ/ô	ð rF   c                  óš   ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 d	ˆ fd„Ze	 	 	 	 	 	 	 	 	 	 d
ˆ fd„«       Zdd„Zdd„Zdd„Zdd„Z		 	 	 	 dˆ fd„Z
dd„Zˆ xZS )ÚDoctestItemc                óô   •— t         ‰| �  ||«       || _        || _        d | _        | j
                  j                  }|j                  | d d ¬«      }|| _        |j                  | _
        | j                  «        y )N)ÚnodeÚfuncÚcls)r~   ro   ÚrunnerÚdtestÚobjre   Ú_fixturemanagerÚgetfixtureinfoÚ_fixtureinfoÚnames_closureÚfixturenamesÚ_initrequest)rn   r]   rZ   r±   r²   ÚfmÚfixtureinfor€   s          €rD   ro   zDoctestItem.__init__ü   ss   ø€ ô 	‰Ñ˜˜vÔ&ØˆŒØˆŒ
ð ˆŒØ�\‰\×)Ñ)ˆØ×'Ñ'¨T¸À$Ð'ÓGˆØ'ˆÔØ'×5Ñ5ˆÔØ×ÑÕrF   c               ó*   •— t         ‰| �  ||||¬«      S )zThe public named constructor.)r]   rZ   r±   r²   )r~   rV   )r°   rZ   r]   r±   r²   r€   s        €rD   rV   zDoctestItem.from_parent  s   ø€ ô ‰wÑ"¨°VÀFÐRWÐ"ÓXÐXrF   c                ó6   — i | _         t        | d¬«      | _        y )NT)Ú	_ispytest)Úfuncargsr   Ú_request©rn   s    rD   r¹   zDoctestItem._initrequest  s   € Ø+-ˆŒÜ" 4°4Ô8ˆ�rF   c                ó.  — | j                   j                  «        t        | j                   j                  ¬«      }| j                   j                  d«      j	                  «       D ]
  \  }}|||<   Œ | j
                  j                  j                  |«       y )N)Ú
getfixtureÚdoctest_namespace)rÀ   Ú_fillfixturesÚdictÚgetfixturevalueÚitemsr²   rh   Úupdate)rn   rh   r]   Úvalues       rD   ÚsetupzDoctestItem.setup   ss   € Ø�‰×#Ñ#Ô%Ü §¡× =Ñ =Ô>ˆØŸ=™=×8Ñ8Ð9LÓM×SÑSÓUò 	 ‰KˆD�%ØˆE�$ŠKð	 à�
‰
×Ñ×Ñ Õ&rF   c                óº   — t        | j                  «       | j                  «        g }| j                  j	                  | j                  |¬«       |rt        |«      ‚y )N)r�   )Ú_check_all_skippedr²   Ú$_disable_output_capturing_for_darwinr±   Úrunr|   )rn   r   s     rD   ÚruntestzDoctestItem.runtest'  sL   € Ü˜4Ÿ:™:Ô&Ø×1Ñ1Ô3Ø13ˆð 	�‰�‰˜Ÿ
™
¨ˆÔ1ÙÜ)¨(Ó3Ð3ð rF   c                óJ  — t        j                  «       dk7  ry| j                  j                  j	                  d«      }|rd|j                  d¬«       |j                  «       \  }}t        j                  j                  |«       t        j                  j                  |«       yy)zFDisable output capturing. Otherwise, stdout is lost to doctest (#985).ÚDarwinNÚcapturemanagerT)Úin_)ÚplatformÚsystemrO   ÚpluginmanagerÚ	getpluginÚsuspend_global_captureÚread_global_captureÚsysÚstdoutÚwriteÚstderr)rn   Úcapmanr�   Úerrs       rD   rÎ   z0DoctestItem._disable_output_capturing_for_darwin1  s~   € ä�?‰?Ó Ò(ØØ—‘×*Ñ*×4Ñ4Ð5EÓFˆÙØ×)Ñ)¨dÐ)Ô3Ø×1Ñ1Ó3‰HˆC�Ü�J‰J×Ñ˜SÔ!Ü�J‰J×Ñ˜SÕ!ð	 rF   c                óä  •— dd l }d }t        |j                  |j                  |j                  z  «      r|j                  g}n0t        |j                  t
        «      r|j                  j                  }|€t        ‰| �!  |«      S g }|D �]P  }|j                  }|j                  }|j                  }|j                  €d }	n|j                  |j                  z   dz   }	t        |«      j                  }
t        ||	|
«      }t!        «       }t#        | j$                  j'                  d«      «      }|	�¨|j                  j(                  €J ‚|j                  j(                  j+                  d«      }|j                  €J ‚t-        |«      D ��cg c]  \  }}||j                  z   dz   d›d|› �‘Œ }}}|t/        |j                  dz
  d«      |j                  dz    }n=dg}d	}|j0                  j+                  «       D ]  }|j3                  d
|› d|› �«       d}Œ t        ||j                  «      r0||j5                  ||j6                  |«      j9                  d«      z  }nnt;        j<                  |j>                  «      }|d|j                  ›�gz  }|tA        jB                  |j>                  Ž D �cg c]  }|jE                  d«      ‘Œ c}z  }|j3                  ||f«       �ŒS tG        |«      S c c}}w c c}w )Nr   r•   r4   FÚ03dú é	   z?EXAMPLE LOCATION UNKNOWN, not showing all tests of that examplez>>>z??? z...ú
zUNEXPECTED EXCEPTION: )$r’   r–   rÊ   rŒ   rš   r|   r   r~   Úrepr_failurer�   rŽ   ÚfilenameÚlinenor+   rx   r   Ú_get_checkerÚ_get_report_choicerO   rg   Ú	docstringÚ
splitlinesÚ	enumerateÚmaxÚsourcer6   Úoutput_differencer�   Úsplitr   Úfrom_exc_infor›   Ú	tracebackÚformat_exceptionÚstriprk   )rn   Úexcinfor’   r   rm   r‘   r�   rŽ   rç   rè   Úmessagert   r‡   Úreport_choiceru   ÚiÚxÚindentrq   Úinner_excinfor€   s                       €rD   ræ   zDoctestItem.repr_failure=  sÙ  ø€ ó 	ð ð 	ô Ø�M‰M˜7×1Ñ1°G×4OÑ4OÑOô
ð  Ÿ™�‰HÜ˜Ÿ™Ô'>Ô?Ø—}‘}×-Ñ-ˆHàÐÜ‘7Ñ'¨Ó0Ð0àÐØó )	=ˆGØ—o‘oˆGØ—<‘<ˆDØ—}‘}ˆHØ�{‰{Ð"Ø‘àŸ™ w§~¡~Ñ5¸Ñ9�Ü˜7“m×,Ñ,ˆGä+¨H°f¸gÓFˆLÜ"“nˆGÜ.¨t¯{©{×/DÑ/DÀ_Ó/UÓVˆMØÐ!Ø—|‘|×-Ñ-Ð9Ð9Ð9ØŸ™×.Ñ.×9Ñ9¸%Ó@�à—{‘{Ð.Ð.Ð.äCLÈUÓCS÷Ù9?¸!¸Q�q˜4Ÿ;™;‘¨Ñ*¨3Ð/¨q°°Ò4ð�ñ ð œc '§.¡.°1Ñ"4°aÓ8¸7¿>¹>ÈAÑ;MÐN‘ð Vð�ð �Ø#ŸN™N×5Ñ5Ó7ò #�DØ—L‘L 4¨ x¨q°°Ð!7Ô8Ø"‘Fð#ô ˜' 7×#9Ñ#9Ô:Ø˜×2Ñ2Ø˜WŸ[™[¨-óç‘%˜“+ñ‘ô !.× ;Ñ ;¸G×<LÑ<LÓ M�ØÐ2°=×3FÑ3FÐ2IÐJÐKÑK�ØÜ+4×+EÑ+EÀw×GWÑGWÐ+XöØ&'�A—G‘G˜D•Mòñ �ð ×%Ñ% |°UÐ&;Ö<ðS)	=ôT Ð1Ó2Ð2ùó1ùò(s   Æ"K'Ê)K-c                ób   — | j                   | j                  j                  d| j                  › �fS )Nz
[doctest] )rN   r²   rè   r]   rÁ   s    rD   Ú
reportinfozDoctestItem.reportinfo}  s(   € Ø�y‰y˜$Ÿ*™*×+Ñ+¨z¸$¿)¹)¸Ð-EÐEÐErF   )
r]   r?   rZ   úDoctestTextfile | DoctestModuler±   údoctest.DocTestRunnerr²   r¢   rv   rw   )
rZ   rÿ   r]   r?   r±   r   r²   r¢   rv   r    ©rv   rw   )rö   zExceptionInfo[BaseException]rv   zstr | TerminalRepr)rv   z.tuple[os.PathLike[str] | str, int | None, str])rx   ry   rz   ro   ÚclassmethodrV   r¹   rË   rÐ   rÎ   ræ   rþ   r�   r‚   s   @rD   r¬   r¬   û   sµ   ø„ ðàðð 0ðð &ð	ð
 ðð 
õð& ð
Yà/ð
Yð ð	
Yð
 &ð
Yð ð
Yð 
ô
Yó ð
Yó9ó'ó4ó	"ð>3à-ð>3ð 
õ>3÷@FrF   r¬   c                 óÚ   — dd l } t        | j                  | j                  | j                  | j
                  | j                  | j                  t        «       t        «       t        «       ¬«	      S )Nr   )	ÚDONT_ACCEPT_TRUE_FOR_1ÚDONT_ACCEPT_BLANKLINEÚNORMALIZE_WHITESPACEr*   ÚIGNORE_EXCEPTION_DETAILÚCOMPARISON_FLAGSÚALLOW_UNICODEÚALLOW_BYTESÚNUMBER)r’   rÆ   r  r  r  r*   r  r  Ú_get_allow_unicode_flagÚ_get_allow_bytes_flagÚ_get_number_flag©r’   s    rD   Ú_get_flag_lookupr  �  sZ   € ÛäØ&×=Ñ=Ø%×;Ñ;Ø$×9Ñ9Ø×!Ñ!Ø '× ?Ñ ?Ø ×1Ñ1Ü-Ó/Ü)Ó+ÜÓ!ô
ð 
rF   c                ó^   — | j                  d«      }t        «       }d}|D ]
  }|||   z  }Œ |S )Nr(   r   )Úgetinir  )rO   Úoptionflags_strÚflag_lookup_tableÚflag_accÚflags        rD   Úget_optionflagsr  ‘  sC   € Ø—m‘mÐ$9Ó:€OÜ(Ó*ÐØ€HØò ,ˆØÐ% dÑ+Ñ+‰ð,à€OrF   c                óR   — | j                  d«      }|r| j                  d«      rd}|S )Nr;   ÚusepdbF)Úgetvalue)rO   rŠ   s     rD   Ú_get_continue_on_failurer  š  s/   € Ø &§¡Ð0MÓ NÐÙð �?‰?˜8Ô$Ø"'ÐØÐrF   c                  ó   — e Zd ZdZdd„Zy)rX   Nc              #  ó  K  — dd l }| j                  j                  d«      }| j                  j	                  |«      }t        | j                  «      }| j                  j                  }ddi}t        | j                  «      }t        d|t        «       t        | j                  «      ¬«      } |j                  «       }	|	j                  ||||d«      }
|
j                  r&t        j                  | |
j                  ||
¬«      –— y y ­w)Nr   r-   rx   Ú__main__F©rˆ   r‰   r‡   rŠ   ©r]   r±   r²   )r’   rO   r  rN   Ú	read_textr?   r]   r  rª   ré   r  ÚDocTestParserÚget_doctestÚexamplesr¬   rV   )rn   r’   ÚencodingÚtextrç   r]   rh   r‰   r±   rB   rŽ   s              rD   r.   zDoctestTextfile.collect§  sâ   è ø€ Ûð —;‘;×%Ñ%Ð&8Ó9ˆØ�y‰y×"Ñ" 8Ó,ˆÜ�t—y‘y“>ˆØ�y‰y�~‰~ˆØ˜ZÐ(ˆä% d§k¡kÓ2ˆäØØ#Ü “NÜ 8¸¿¹Ó Eô	
ˆð '�×&Ñ&Ó(ˆØ×!Ñ! $¨¨t°X¸qÓAˆØ�=Š=Ü×)Ñ)Ø˜4Ÿ9™9¨V¸4ð *ó ó ð ùs   ‚DD©rv   zIterable[DoctestItem])rx   ry   rz   r³   r.   rJ   rF   rD   rX   rX   ¤  s   „ Ø
€CôrF   rX   c                óf   ‡— ddl Št        ˆfd„| j                  D «       «      }|rt        d«       yy)zVRaise pytest.skip() if all examples in the given DocTest have the SKIP
    option set.r   Nc              3  ój   •K  — | ]*  }|j                   j                  ‰j                  d «      –— Œ, y­w)FN)ÚoptionsÚgetÚSKIP)rb   rú   r’   s     €rD   rd   z%_check_all_skipped.<locals>.<genexpr>È  s$   øè ø€ ÒP¸Q�a—i‘i—m‘m G§L¡L°%×8ÑPùs   ƒ03z!all tests skipped by +SKIP option)r’   Úallr$  r   )rŽ   Úall_skippedr’   s     @rD   rÍ   rÍ   Ã  s-   ø€ ó äÓPÀ$Ç-Á-ÔPÓP€KÙÜÐ0Õ1ð rF   c                ó    — t        | dd«      duS )zmReturn if an object is possibly a mock object by checking the
    existence of a highly improbable attribute.Ú1pytest_mock_example_attribute_that_shouldnt_existNr   )r³   s    rD   Ú
_is_mockedr1  Í  s   € ô 	�SÐMÈtÓTØð	ðrF   c               #  ó    ‡K  — t         j                  Šddœ	 	 	 	 	 dˆfd„} | t         _        	 d–— ‰t         _        y# ‰t         _        w xY w­w)z€Context manager which replaces ``inspect.unwrap`` with a version
    that's aware of mock objects and doesn't recurse into them.N©Ústopc               óÀ   •‡ ‡— 	 |�|t         u r ‰‰ t         ¬«      S |Š ‰‰ ˆˆ fd„¬«      S # t        $ r'}t        j                  d|›d‰ ›d�t        «       ‚ d }~ww xY w)Nr3  c                ó.   •— t        | «      xs  ‰‰«      S rH   )r1  )r³   Ú_stopr¯   s    €€rD   ú<lambda>zF_patch_unwrap_mock_aware.<locals>._mock_aware_unwrap.<locals>.<lambda>ã  s   ø€ ´jÀ³oÒ6TÉÈtË€ rF   zGot z when unwrapping z.  This is usually caused by a violation of Python's object protocol; see e.g. https://github.com/pytest-dev/pytest/issues/5080)r1  Ú	ExceptionÚwarningsÚwarnr   )r¯   r4  Úer7  Úreal_unwraps   `  @€rD   Ú_mock_aware_unwrapz4_patch_unwrap_mock_aware.<locals>._mock_aware_unwrapÜ  st   ú€ ð	Øˆ|˜t¤zÑ1Ù" 4¬jÔ9Ð9ØˆEÙ˜tÔ*TÔUÐUøÜò 	Ü�M‰MØ�q�eÐ,¨T¨Hð 5Cð Cô ô	ð ûð	ús   …- �- ­	A¶"AÁA)r¯   zCallable[..., Any]r4  zCallable[[Any], Any] | Nonerv   r
   )ÚinspectÚunwrap)r>  r=  s    @rD   Ú_patch_unwrap_mock_awarerA  Ö  sU   øè ø€ ô —.‘.€Kð JNñØ ðØ+Fðà	õð" („G„Nð%Ûà$Œ�ø˜Œ�üs   ƒ*A®> ²A¾AÁAc                  ó   — e Zd Zdd„Zy)rU   c              #  ór  K  — dd l } G d„ d|j                  «      }	 | j                  }| j                  j                  j                  | «        |«       }t        | j
                  «      }t        d|t        «       t        | j
                  «      ¬«      }|j!                  |j"                  «      D ]4  }|j$                  sŒt&        j)                  | |j*                  ||¬«      –— Œ6 y # t        j                  $ r9 | j
                  j                  d«      rt        d| j                  ›�«       n‚ Y �Œ
w xY w­w)	Nr   c                  ó  ‡ — e Zd Zej                  dd Zedk  xsB edk(  xr ej                  j                  dk  xs  edk(  xr ej                  j                  dk  Zerˆ fd„Zej                  dk  r	ˆ fd	„Z	ˆ xZ
S ˆ xZ
S )
ú5DoctestModule.collect.<locals>.MockAwareDocTestFinderNé   )é   é   rä   )rG  é   rG  c                ó    •— t        |t        «      rt        |d|«      }t        |d«      rt	        j
                  |«      }t        ‰| �  ||«      S )a%  On older Pythons, doctest code does not take into account
                    `@property`. https://github.com/python/cpython/issues/61648

                    Moreover, wrapped Doctests need to be unwrapped so the correct
                    line number is returned. #8796
                    ÚfgetÚ__wrapped__)r–   ÚpropertyÚgetattrÚhasattrr?  r@  r~   Ú_find_lineno)rn   r³   Úsource_linesr€   s      €rD   rP  zBDoctestModule.collect.<locals>.MockAwareDocTestFinder._find_lineno  sO   ø€ ô " #¤xÔ0Ü% c¨6°3Ó7˜ä˜s MÔ2ä%Ÿn™n¨SÓ1˜ô !™7Ñ/ØØ$óð rF   )rG  é   c                óp   •— t        |t        j                  «      r|j                  }t        ‰| �  ||«      S )a>  `cached_property` objects are never considered a part
                    of the 'current module'. As such they are skipped by doctest.
                    Here we override `_from_module` to check the underlying
                    function instead. https://github.com/python/cpython/issues/107995
                    )r–   Ú	functoolsÚcached_propertyr¯   r~   Ú_from_module)rn   ÚmoduleÚobjectr€   s      €rD   rV  zBDoctestModule.collect.<locals>.MockAwareDocTestFinder._from_module  s2   ø€ ô " &¬)×*CÑ*CÔDØ!'§¡˜ô !™7Ñ/°¸Ó?Ð?rF   )rx   ry   rz   rÛ   Úversion_infoÚpy_ver_info_minorÚmicroÚis_find_lineno_brokenrP  rV  r�   r‚   s   @rD   ÚMockAwareDocTestFinderrE  ø  s–   ø„ Ø #× 0Ñ 0°°!Ð 4Ðà! GÑ+ò QØ%¨Ñ0ÒO°S×5EÑ5E×5KÑ5KÈaÑ5OòQà%¨Ñ0ÒO°S×5EÑ5E×5KÑ5KÈaÑ5Oð "ñ
 %ôð( ×Ñ 'Ò)÷
@ð 
@ó *rF   r]  r:   zunable to import module Fr  r   )r’   ÚDocTestFinderr³   r   ÚCollectErrorrO   r  r   rN   re   r´   Úparsefactoriesr  rª   ré   r  Úfindrx   r$  r¬   rV   r]   )rn   r’   r]  rW  Úfinderr‰   r±   rŽ   s           rD   r.   zDoctestModule.collectõ  s  è ø€ Ûô)	@ W×%:Ñ%:ô )	@ðV	Ø—X‘XˆFð 	�‰×$Ñ$×3Ñ3°DÔ9ñ (Ó)ˆÜ% d§k¡kÓ2ˆÜØØ#Ü “NÜ 8¸¿¹Ó Eô	
ˆð —K‘K ¨¯©Ó8ò 	ˆDØ�}‹}Ü!×-Ñ-Ø˜tŸy™y°¸tð .ó ó ñ	øô' ×%Ñ%ò 	Ø�{‰{×#Ñ#Ð$BÔCÜÐ/°·	±	¨}Ð=Õ>àò ?ð	üs/   ‚D7�C( ©BD7Ã (D7Ã(AD4Ä0D7Ä3D4Ä4D7Nr'  )rx   ry   rz   r.   rJ   rF   rD   rU   rU   ô  s   „ ôGrF   rU   c                 ó8   — dd l }  G d„ d| j                  «      }|S )Nr   c                  óÖ   ‡ — e Zd Z ej                  dej
                  «      Z ej                  dej
                  «      Z ej                  dej                  «      Z	dˆ fd„Z
dd„Zˆ xZS )ú2_init_checker_class.<locals>.LiteralsOutputCheckerz(\W|^)[uU]([rR]?[\'\"])z(\W|^)[bB]([rR]?[\'\"])aÍ  
            (?P<number>
              (?P<mantissa>
                (?P<integer1> [+-]?\d*)\.(?P<fraction>\d+)
                |
                (?P<integer2> [+-]?\d+)\.
              )
              (?:
                [Ee]
                (?P<exponent1> [+-]?\d+)
              )?
              |
              (?P<integer3> [+-]?\d+)
              (?:
                [Ee]
                (?P<exponent2> [+-]?\d+)
              )
            )
            c                óv  •— t         ‰| �  |||«      ry|t        «       z  }|t        «       z  }|t	        «       z  }|s|s|sydd„}|r& || j
                  |«      } || j
                  |«      }|r& || j                  |«      } || j                  |«      }|r| j                  ||«      }t         ‰| �  |||«      S )NTFc                ó0   — t        j                  | d|«      S )Nz\1\2)ÚreÚsub)ÚregexÚtxts     rD   Úremove_prefixeszX_init_checker_class.<locals>.LiteralsOutputChecker.check_output.<locals>.remove_prefixesk  s   € Ü—v‘v˜e W¨cÓ2Ð2rF   )rj  zre.Pattern[str]rk  r?   rv   r?   )r~   Úcheck_outputr  r  r  Ú_unicode_literal_reÚ_bytes_literal_reÚ_remove_unwanted_precision)	rn   Úwantr�   r‰   Úallow_unicodeÚallow_bytesÚallow_numberrl  r€   s	           €rD   rm  z?_init_checker_class.<locals>.LiteralsOutputChecker.check_output`  sÉ   ø€ Ü‰wÑ# D¨#¨{Ô;Øà'Ô*AÓ*CÑCˆMØ%Ô(=Ó(?Ñ?ˆKØ&Ô)9Ó);Ñ;ˆLá ©¹\Øó3ñ Ù& t×'?Ñ'?ÀÓF�Ù% d×&>Ñ&>ÀÓD�áÙ& t×'=Ñ'=¸tÓD�Ù% d×&<Ñ&<¸cÓB�áØ×5Ñ5°d¸CÓ@�ä‘7Ñ'¨¨c°;Ó?Ð?rF   c                ó2  — t        | j                  j                  |«      «      }t        | j                  j                  |«      «      }t        |«      t        |«      k7  r|S d}t	        ||d¬«      D �]!  \  }}|j                  d«      }|j                  d«      }	|	€|j                  d«      }	|€dn
t        |«      }
|	�|
t        |	«      z  }
t        |j                  «       «      t        t        |j                  «       «      d|
 z  ¬«      k(  sŒž|d |j                  «       |z    |j                  «       z   ||j                  «       |z   d  z   }||j                  «       |j                  «       z
  |j                  «       |j                  «       z
  z
  z  }�Œ$ |S )	Nr   T)ÚstrictÚfractionÚ	exponent1Ú	exponent2é
   )Úabs)ÚlistÚ
_number_reÚfinditerÚlenÚziprC   r    Úfloatr   ÚstartÚend)rn   rq  r�   ÚwantsÚgotsÚoffsetÚwÚgrw  ÚexponentÚ	precisions              rD   rp  zM_init_checker_class.<locals>.LiteralsOutputChecker._remove_unwanted_precision{  se  € Ü˜Ÿ™×1Ñ1°$Ó7Ó8ˆEÜ˜Ÿ™×0Ñ0°Ó5Ó6ˆDÜ�5‹zœS ›YÒ&Ø�
ØˆFÜ˜E 4°Ô5ó J‘��1Ø'(§w¡w¨zÓ':�Ø'(§w¡w¨{Ó';�ØÐ#Ø Ÿw™w {Ó3�HØ!)Ð!1™A´s¸8³}�	ØÐ'Ø¤ X£Ñ.�IÜ˜Ÿ™›Ó#¤v¬e°A·G±G³IÓ.>ÀBÈÈ
ÁNÔ'SÓSð
 Ð0˜aŸg™g›i¨&Ñ0Ð1°A·G±G³IÑ=ÀÀAÇEÁEÃGÈfÑDTÐDVÐ@WÑWð ð ˜aŸe™e›g¨¯©«	Ñ1°Q·U±U³W¸q¿w¹w»yÑ5HÑIÑI’FðJð  ˆJrF   )rq  r?   r�   r?   r‰   r    rv   r¡   )rq  r?   r�   r?   rv   r?   )rx   ry   rz   rh  ÚcompileÚUNICODErn  ro  ÚVERBOSEr}  rm  rp  r�   r‚   s   @rD   ÚLiteralsOutputCheckerre  B  s^   ø„ ð
 )˜bŸj™jÐ)CÀRÇZÁZÓPÐØ&˜BŸJ™JÐ'AÀ2Ç:Á:ÓNÐØ�R—Z‘Zðð& �J‰Jó)
ˆ
õ.	@÷6	rF   rŽ  )r’   ÚOutputChecker)r’   rŽ  s     rD   Ú_init_checker_classr�  ?  s"   € ÛôO × 5Ñ 5ô Oðb !Ð rF   c                 ó6   — t         €
t        «       a t        «       S )aà  Return a doctest.OutputChecker subclass that supports some
    additional options:

    * ALLOW_UNICODE and ALLOW_BYTES options to ignore u'' and b''
      prefixes (respectively) in string literals. Useful when the same
      doctest should run in Python 2 and Python 3.

    * NUMBER to ignore floating-point differences smaller than the
      precision of the literal number in the doctest.

    An inner class is used to avoid importing "doctest" at the module
    level.
    )r&   r�  rJ   rF   rD   ré   ré   –  s   € ô ÐÜ+Ó-ˆÜ‹?ÐrF   c                 ó.   — ddl }  | j                  d«      S )z+Register and return the ALLOW_UNICODE flag.r   Nr	  ©r’   Úregister_optionflagr  s    rD   r  r  ª  s   € ãà&ˆ7×&Ñ& Ó7Ð7rF   c                 ó.   — ddl }  | j                  d«      S )z)Register and return the ALLOW_BYTES flag.r   Nr
  r“  r  s    rD   r  r  ±  s   € ãà&ˆ7×&Ñ& }Ó5Ð5rF   c                 ó.   — ddl }  | j                  d«      S )z$Register and return the NUMBER flag.r   Nr  r“  r  s    rD   r  r  ¸  s   € ãà&ˆ7×&Ñ& xÓ0Ð0rF   c           
     ó    — ddl }t        |j                  t        |j                  t
        |j                  t        |j                  t        di|    S )zÓReturn the actual `doctest` module flag value.

    We want to do it as late as possible to avoid importing `doctest` and all
    its dependencies when parsing options, as it adds overhead and breaks tests.
    r   N)
r’   ÚDOCTEST_REPORT_CHOICE_UDIFFÚREPORT_UDIFFÚDOCTEST_REPORT_CHOICE_CDIFFÚREPORT_CDIFFÚDOCTEST_REPORT_CHOICE_NDIFFÚREPORT_NDIFFÚ(DOCTEST_REPORT_CHOICE_ONLY_FIRST_FAILUREÚREPORT_ONLY_FIRST_FAILUREÚDOCTEST_REPORT_CHOICE_NONE)Úkeyr’   s     rD   rê   rê   ¿  sN   € ó ô 	$ W×%9Ñ%9Ü# W×%9Ñ%9Ü# W×%9Ñ%9Ü0°'×2SÑ2SÜ" Aðð 
ñð rF   re   )Úscopec                 ó   — t        «       S )a€  Fixture that returns a :py:class:`dict` that will be injected into the
    namespace of doctests.

    Usually this fixture is used in conjunction with another ``autouse`` fixture:

    .. code-block:: python

        @pytest.fixture(autouse=True)
        def add_np(doctest_namespace):
            doctest_namespace["np"] = numpy

    For more details: :ref:`doctest_namespace`.
    )rÆ   rJ   rF   rD   rÄ   rÄ   Ð  s   € ô ‹6€MrF   )rB   r   rv   rw   r  )rY   r	   rZ   r   rv   z&DoctestModule | DoctestTextfile | None)rN   r	   rv   r¡   )rO   r   rN   r	   rZ   r   rv   r¡   )rv   ztype[doctest.DocTestRunner]r�   )
r‡   rž   rˆ   rŸ   r‰   r    rŠ   r¡   rv   r   )rv   zdict[str, int])rO   r   rv   r    )rO   r   rv   r¡   )rŽ   r¢   rv   rw   )r³   rX  rv   r¡   )rv   zGenerator[None])rv   ztype[doctest.OutputChecker])rv   zdoctest.OutputChecker)rv   r    )r¡  r?   rv   r    )rv   zdict[str, Any])_r¤   Ú
__future__r   r—   Úcollections.abcr   r   r   r   Ú
contextlibr   rT  r?  ÚosÚpathlibr	   rÕ   rh  rÛ   ró   ÚtypesÚtypingr
   r   r:  Ú_pytestr   Ú_pytest._code.coder   r   r   Ú_pytest._ior   Ú_pytest.compatr   Ú_pytest.configr   Ú_pytest.config.argparsingr   Ú_pytest.fixturesr   r   Ú_pytest.nodesr   r   Ú_pytest.outcomesr   r   Ú_pytest.pathlibr   Ú_pytest.pythonr   Ú_pytest.python_apir   Ú_pytest.warning_typesr   r’   Útyping_extensionsr    r   rš  rœ  r˜  rž  rA   rI   r&   Ú__annotations__rE   rK   r[   rS   rW   rT   rk   r9  r|   r§   rª   r¬   r  r  r  rX   rÍ   r1  rA  rU   r�  ré   r  r  r  rê   rÄ   rJ   rF   rD   ú<module>rº     sö  ðâ :å "ã 
Ý $Ý %Ý $Ý $Ý %Û Û Û 	Ý Û Û 	Û 
Û Û Ý Ý  Û å Ý ,Ý /Ý +Ý &Ý 'Ý !Ý ,Ý $Ý 'Ý #Ý Ý -Ý !Ý &Ý !Ý %Ý /ñ Ûå&à#Ð Ø%Ð Ø%Ð Ø%Ð Ø+?Ð (ð ØØØØ,ðÐ ð €à48€Ð1Ó 8ó/ódðØðàðð ,óóAó9ó&ô
(�lô 
(ô!˜iô !ó2ðl -1ØØØ $ð	Ø)ðàðð ðð ð	ð
 óô(CF�$ô CFóLó óô�fô ó>2óð ò%ó ð%ô:H�Fô HóVT!ónó(8ó6ó1óñ" 	ˆyÔòó ñrF   