ó
    Eñi†c  ã                  óz  • % S r 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rSSKrSSKrSS	KJr  SSKrSSKrSSKrSSKrSSKrSS
KJr  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)  SSK*J+r+  SSK*J,r,  SSK-J.r.  SSK-J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  \(       a
  SSK8r8SSK9J:r:  Sr;S r<S!r=S"r>S#r?\;\<\=\>\?4r@SqASqBS$\CS%'   SGS& jrDSHS' jrE      SIS( jrFSJS) jrGSKS* jrHSJS+ jrI " S, S-\5      rJ " S. S/\K5      rLSLS0 jrM    SM         SNS1 jjrN " S2 S3\,5      rOSOS4 jrPSPS5 jrQSQS6 jrR " S7 S8\35      rSSRS9 jrTSSS: jrU\
STS; j5       rV " S< S=\35      rWSUS> jrXSVS? jrYSWS@ jrZSWSA jr[SWSB jr\SXSC jr]\(" SDSE9SYSF j5       r^g)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           	     óT  • U R                  SSSS/S9  U R                  SSSS	9  U R                  S
5      nUR                  SSSSSS9  UR                  S[        R                  SS[
        SS9  UR                  SS/ SSSS9  UR                  SSSSSS9  UR                  SSSS S!S9  g )"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     ÚL/home/mande/repo/quber/.venv/lib/python3.13/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                 ó   • S q g ©N)ÚRUNNER_CLASS© rF   rD   Úpytest_unconfigurerK   x   s	   € ð �LrF   c                ó*  • UR                   nU R                  S:X  aS  UR                  R                  (       a7  [	        [        U 5      [        U 5      45      (       d  [        R                  XS9$ g [        X U5      (       a  [        R                  XS9$ g )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
ñ 1
ô !×,Ñ,¨VÐ,ÐDÐDð ô 
�V¨×	/Ñ	/Ü×*Ñ*¨6Ð*ÐBÐBØrF   c                óf   • U R                   S:w  a  gU R                  5       nSU;   =(       d    SU;   $ )Nzsetup.pyFs
   setuptoolss	   distutils)ÚnameÚ
read_bytes)rN   Úcontentss     rD   rS   rS   �   s2   € Ø‡y�y�JÓØØ�‰Ó €HØ˜HÑ$×@¨¸Ñ(@Ð@rF   c                óÆ   ^• TR                   S;   a!  UR                  R                  T5      (       a  gU R                  S5      =(       d    S/n[	        U4S jU 5       5      $ )N)z.txtz.rstTr8   z	test*.txtc              3  ó<   >#   • U  H  n[        UT5      v •  M     g 7frH   r   )Ú.0ÚglobrN   s     €rD   Ú	<genexpr>Ú_is_doctest.<locals>.<genexpr>˜   s   øé € Ð8²%¨$Œz˜$ ×%Ð%²%ùs   ƒ)rP   ÚsessionÚ
isinitpathÚ	getoptionrR   )rO   rN   rZ   Úglobss    `  rD   rW   rW   ”   sO   ø€ Ø‡{�{Ð&Ó&¨6¯>©>×+DÑ+DÀT×+JÑ+JØØ×Ñ˜]Ó+×<°¨}€EÜÔ8±%Ó8Ó8Ð8rF   c                ó    • U R                   S:H  $ )Nz__main__.py)r]   rM   s    rD   rT   rT   ›   s   € Ø�9‰9˜Ñ%Ð%rF   c                  ó0   • \ rS rSr    SS jrSS jrSrg)ÚReprFailDoctestéŸ   c                ó   • Xl         g rH   ©Úreprlocation_lines)Úselfrp   s     rD   Ú__init__ÚReprFailDoctest.__init__    s
   € ð #5ÕrF   c                ó„   • U R                    H0  u  p#U H  nUR                  U5        M     UR                  U5        M2     g rH   )rp   ÚlineÚ
toterminal)rq   ÚtwÚreprlocationÚlinesru   s        rD   rv   ÚReprFailDoctest.toterminal¥   s8   € Ø#'×#:Ô#:ÑˆLÛ�Ø—‘˜–ñ à×#Ñ# BÖ'ò $;rF   ro   N)rp   z0Sequence[tuple[ReprFileLocation, Sequence[str]]]ÚreturnÚNone)rw   r   r{   r|   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rr   rv   Ú__static_attributes__rJ   rF   rD   rl   rl   Ÿ   s   † ð5Ø"Rð5à	ô5÷
(rF   rl   c                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚMultipleDoctestFailuresé¬   c                ó.   >• [         TU ]  5         Xl        g rH   )Úsuperrr   Úfailures)rq   r‡   Ú	__class__s     €rD   rr   Ú MultipleDoctestFailures.__init__­   s   ø€ Ü‰ÑÔØ �rF   )r‡   )r‡   z Sequence[doctest.DocTestFailure]r{   r|   )r}   r~   r   r€   rr   r�   Ú__classcell__©rˆ   s   @rD   rƒ   rƒ   ¬   s   ø† ÷!õ !rF   rƒ   c                 ó@   ^• SS K m " U4S jSTR                  5      n U $ )Nr   c                  ó�   >^ • \ rS rSrSr    S         SU 4S jjjr        S	U4S jjr        S
U4S jjrSrU =r	$ )Ú/_init_runner_class.<locals>.PytestDoctestRunneréµ   zpRunner to collect failures.

Note that the out variable in this case is a list instead of a
stdout-like object.
c                ó.   >• [         TU ]  XUS9  X@l        g )N)ÚcheckerÚverboseÚoptionflags)r†   rr   Úcontinue_on_failure)rq   r‘   r’   r“   r”   rˆ   s        €rD   rr   Ú8_init_runner_class.<locals>.PytestDoctestRunner.__init__¼   s   ø€ ô ‰GÑ WÈ;ÐÑWØ':Õ$rF   c                ót   >• TR                   " X#U5      nU R                  (       a  UR                  U5        g UerH   )ÚDocTestFailurer”   r6   )rq   ÚoutÚtestÚexampleÚgotÚfailureÚdoctests         €rD   Úreport_failureÚ>_init_runner_class.<locals>.PytestDoctestRunner.report_failureÆ   s1   ø€ ð ×,Ò,¨T¸CÓ@ˆGØ×'×'Ø—
‘
˜7Õ#à�rF   c                ó  >• [        US   [        5      (       a  US   e[        US   [        R                  5      (       a  [        R
                  " S5        TR                  " X#U5      nU R                  (       a  UR                  U5        g Ue)Né   zQuitting debugger)	Ú
isinstancer   ÚbdbÚBdbQuitr   ÚexitÚUnexpectedExceptionr”   r6   )rq   r˜   r™   rš   Úexc_inforœ   r�   s         €rD   Úreport_unexpected_exceptionÚK_init_runner_class.<locals>.PytestDoctestRunner.report_unexpected_exceptionÓ   so   ø€ ô ˜( 1™+Ô'7×8Ñ8Ø˜q‘kÐ!Ü˜( 1™+¤s§{¡{×3Ñ3Ü—’Ð1Ô2Ø×1Ò1°$ÀÓJˆGØ×'×'Ø—
‘
˜7Õ#à�rF   )r”   ©NNr   T)
r‘   údoctest.OutputChecker | Noner’   úbool | Noner“   Úintr”   Úboolr{   r|   )r™   údoctest.DocTestrš   údoctest.Exampler›   r?   r{   r|   )r™   r¯   rš   r°   r§   z>tuple[type[BaseException], BaseException, types.TracebackType]r{   r|   )
r}   r~   r   r€   Ú__doc__rr   rž   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                ó<   • [         c
  [        5       q [        U UUUS9$ )N©r‘   r’   r“   r”   )rI   r´   r¶   s       rD   Ú_get_runnerr·   ç   s-   € ô ÑÜ)Ó+ˆô ØØØØ/ñ	ð rF   c                  ó¸   ^ • \ rS rSr          SU 4S jjr\          SU 4S jj5       rSS jrSS jrSS jr	SS jr
    SU 4S jjrSS	 jrS
rU =r$ )ÚDoctestIteméû   c                óæ   >• [         TU ]  X5        X0l        X@l        S U l        U R
                  R                  nUR                  U S S S9nX`l        UR                  U l
        U R                  5         g )N)ÚnodeÚfuncÚcls)r†   rr   ÚrunnerÚdtestÚobjrf   Ú_fixturemanagerÚgetfixtureinfoÚ_fixtureinfoÚnames_closureÚfixturenamesÚ_initrequest)rq   r]   rZ   r¿   rÀ   ÚfmÚfixtureinforˆ   s          €rD   rr   ÚDoctestItem.__init__ü   sk   ø€ ô 	‰Ñ˜Ô&ØŒØŒ
ð ˆŒØ�\‰\×)Ñ)ˆØ×'Ñ'¨T¸À$Ð'ÐGˆØ'ÔØ'×5Ñ5ˆÔØ×ÑÕrF   c               ó    >• [         TU ]  X!X4S9$ )zThe public named constructor.)r]   rZ   r¿   rÀ   )r†   rV   )r¾   rZ   r]   r¿   rÀ   rˆ   s        €rD   rV   ÚDoctestItem.from_parent  s   ø€ ô ‰wÑ"¨ÀFÐ"ÐXÐXrF   c                ó0   • 0 U l         [        U SS9U l        g )NT)Ú	_ispytest)Úfuncargsr   Ú_request©rq   s    rD   rÇ   ÚDoctestItem._initrequest  s   € Ø+-ˆŒÜ" 4°4Ñ8ˆ�rF   c                ó(  • U R                   R                  5         [        U R                   R                  S9nU R                   R                  S5      R	                  5        H	  u  p#X1U'   M     U R
                  R                  R                  U5        g )N)Ú
getfixtureÚdoctest_namespace)rÐ   Ú_fillfixturesÚdictÚgetfixturevalueÚitemsrÀ   ri   Úupdate)rq   ri   r]   Úvalues       rD   ÚsetupÚDoctestItem.setup   sk   € Ø�‰×#Ñ#Ô%Ü §¡× =Ñ =Ñ>ˆØŸ=™=×8Ñ8Ð9LÓM×SÑSÖU‰KˆDØ�$‹Kñ Và�
‰
×Ñ×Ñ Õ&rF   c                ó¾   • [        U R                  5        U R                  5         / nU R                  R	                  U R                  US9  U(       a  [        U5      eg )N)r˜   )Ú_check_all_skippedrÀ   Ú$_disable_output_capturing_for_darwinr¿   Úrunrƒ   )rq   r‡   s     rD   ÚruntestÚDoctestItem.runtest'  sL   € Ü˜4Ÿ:™:Ô&Ø×1Ñ1Ô3Ø13ˆð 	�‰�‰˜Ÿ
™
¨ˆÑ1ÞÜ)¨(Ó3Ð3ð rF   c                óP  • [         R                  " 5       S:w  a  gU R                  R                  R	                  S5      nU(       a`  UR                  SS9  UR                  5       u  p#[        R                  R                  U5        [        R                  R                  U5        gg)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)rq   Úcapmanr˜   Úerrs       rD   rà   Ú0DoctestItem._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                ó  >• SS K nS n[        UR                  UR                  UR                  -  5      (       a  UR                  /nO5[        UR                  [
        5      (       a  UR                  R                  nUc  [        TU ]!  U5      $ / nU GH_  nUR                  nUR                  nUR                  nUR                  c  S n	OUR                  UR                  -   S-   n	[        U5      R                  n
[        X‰U
5      n[!        5       n[#        U R$                  R'                  S5      5      nU	b¬  UR                  R(                  c   eUR                  R(                  R+                  S5      nUR                  c   e[-        U5       VVs/ s H  u  nnX÷R                  -   S-   S SU 3PM     nnnU[/        UR                  S-
  S5      UR                  S-    nO?S/nS	nUR0                  R+                  5        H  nUR3                  S
U SU 35        SnM     [        XRR                  5      (       a.  XìR5                  XeR6                  U5      R9                  S5      -  nOt[:        R<                  " UR>                  5      nUSUR                  < 3/-  nU[@        RB                  " UR>                  6  Vs/ s H  nURE                  S5      PM     sn-  nUR3                  X¾45        GMb     [G        U5      $ s  snnf s  snf )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+   r}   r   Ú_get_checkerÚ_get_report_choicerO   rh   Ú	docstringÚ
splitlinesÚ	enumerateÚmaxÚsourcer6   Úoutput_differencer›   Úsplitr   Úfrom_exc_infor§   Ú	tracebackÚformat_exceptionÚstriprl   )rq   Úexcinfor�   r‡   rp   rœ   rš   r™   rû   rü   Úmessagerx   r‘   Úreport_choicery   ÚiÚxÚindentru   Úinner_excinforˆ   s                       €rD   rú   Ú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¸gÓFˆLÜ"“nˆGÜ.¨t¯{©{×/DÑ/DÀ_Ó/UÓVˆMØÑ!Ø—|‘|×-Ñ-Ñ9Ð9Ð9ØŸ™×.Ñ.×9Ñ9¸%Ó@�à—{‘{Ñ.Ð.Ð.äCLÈUÔCSôÚCS¹¸!¸Q�qŸ;™;‘¨Ñ*¨3Ð/¨q°°Ó4ÑCSð ñ ð œc '§.¡.°1Ñ"4°aÓ8¸7¿>¹>ÈAÑ;MÐN‘ð Vð�ð �Ø#ŸN™N×5Ñ5Ö7�DØ—L‘L 4¨ x¨q°°Ð!7Ô8Ø"’Fñ 8ô ˜'×#9Ñ#9×:Ñ:Ø×2Ñ2ØŸ[™[¨-óç‘%˜“+ñ‘ô !.× ;Ò ;¸G×<LÑ<LÓ M�ØÐ2°=×3FÑ3FÑ2IÐJÐKÑK�ØÜ+4×+EÒ+EÀw×GWÑGWÑ+XóÚ+X a�A—G‘G˜D–MÑ+Xññ �ð ×%Ñ% |Ð&;×<ñS  ôT Ð1Ó2Ð2ùó1ùò(s   Æ$LË Lc                ób   • U R                   U R                  R                  SU R                   34$ )Nz
[doctest] )rN   rÀ   rü   r]   rÑ   s    rD   Ú
reportinfoÚDoctestItem.reportinfo}  s(   € Ø�y‰y˜$Ÿ*™*×+Ñ+¨z¸$¿)¹)¸Ð-EÐEÐErF   )rÄ   rÐ   rÀ   rÆ   rÏ   rÁ   r¿   )
r]   r?   rZ   úDoctestTextfile | DoctestModuler¿   údoctest.DocTestRunnerrÀ   r¯   r{   r|   )
rZ   r  r]   r?   r¿   r  rÀ   r¯   r{   r    ©r{   r|   )r
  zExceptionInfo[BaseException]r{   zstr | TerminalRepr)r{   z.tuple[os.PathLike[str] | str, int | None, str])r}   r~   r   r€   rr   ÚclassmethodrV   rÇ   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ò FrF   r¹   c                 óÔ   • SS K n [        U R                  U R                  U R                  U R
                  U R                  U R                  [        5       [        5       [        5       S9	$ )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                ó`   • U R                  S5      n[        5       nSnU H
  nX2U   -  nM     U$ )Nr(   r   )Úgetinir&  )rO   Úoptionflags_strÚflag_lookup_tableÚflag_accÚflags        rD   Úget_optionflagsr-  ‘  s;   € Ø—m‘mÐ$9Ó:€OÜ(Ó*ÐØ€HÛˆØ dÑ+Ñ+Šñ  à€OrF   c                óf   • U R                  S5      nU(       a  U R                  S5      (       a  SnU$ )Nr;   ÚusepdbF)Úgetvalue)rO   r”   s     rD   Ú_get_continue_on_failurer1  š  s2   € Ø &§¡Ð0MÓ NÐÞð �?‰?˜8×$Ñ$Ø"'ÐØÐrF   c                  ó"   • \ rS rSrSrSS jrSrg)rX   i¤  Nc              #  ó  #   • SS K nU R                  R                  S5      nU R                  R	                  U5      n[        U R                  5      nU R                  R                  nSS0n[        U R                  5      n[        SU[        5       [        U R                  5      S9nUR                  " 5       n	U	R                  X6XTS5      n
U
R                  (       a!  [        R                  X
R                  XŠS9v •  g g 7f)Nr   r-   r}   Ú__main__F©r’   r“   r‘   r”   ©r]   r¿   rÀ   )r�   rO   r(  rN   Ú	read_textr?   r]   r-  r·   rý   r1  ÚDocTestParserÚget_doctestÚexamplesr¹   rV   )rq   r�   ÚencodingÚtextrû   r]   ri   r“   r¿   rB   r™   s              rD   r.   ÚDoctestTextfile.collect§  s×   é € Ûð —;‘;×%Ñ%Ð&8Ó9ˆØ�y‰y×"Ñ" 8Ó,ˆÜ�t—y‘y“>ˆØ�y‰y�~‰~ˆØ˜ZÐ(ˆä% d§k¡kÓ2ˆäØØ#Ü “NÜ 8¸¿¹Ó Eñ	
ˆð ×&Ò&Ó(ˆØ×!Ñ! $¨t¸qÓAˆØ�=�=Ü×)Ñ)ØŸ9™9¨Vð *ð ó ð ùs   ‚C=C?rJ   ©r{   zIterable[DoctestItem])r}   r~   r   r€   rÁ   r.   r�   rJ   rF   rD   rX   rX   ¤  s   † Ø
€C÷rF   rX   c                ór   ^• SSK m[        U4S jU R                   5       5      nU(       a  [        S5        gg)zRRaise pytest.skip() if all examples in the given DocTest have the SKIP
option set.r   Nc              3  ón   >#   • U  H*  oR                   R                  TR                  S 5      v •  M,     g7f)FN)ÚoptionsÚgetÚSKIP)rb   r  r�   s     €rD   rd   Ú%_check_all_skipped.<locals>.<genexpr>È  s%   øé € ÐPÂ-¸Q—i‘i—m‘m G§L¡L°%×8Ð8Â-ùs   ƒ25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                ó    • [        U SS5      SL$ )ziReturn 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_mockedrI  Í  s   € ô 	�SÐMÈtÓTØð	ðrF   c               #  ó¦   ^#   • [         R                  mSS.     SU4S jjjn U [         l         Sv •  T[         l        g! T[         l        f = f7f)z|Context manager which replaces ``inspect.unwrap`` with a version
that's aware of mock objects and doesn't recurse into them.N©Ústopc               óÂ   >^ ^•  Ub	  U[         L a  T" T [         S9$ UmT" T UU 4S jS9$ ! [         a*  n[        R                  " SU< ST < S3[        5        e S nAff = f)NrK  c                ó8   >• [        U 5      =(       d    T" T5      $ rH   )rI  )rÁ   Ú_stopr½   s    €€rD   Ú<lambda>ÚF_patch_unwrap_mock_aware.<locals>._mock_aware_unwrap.<locals>.<lambda>ã  s   ø€ ´jÀ³o×6TÉÈtËÐ6TrF   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)rI  Ú	ExceptionÚwarningsÚwarnr   )r½   rL  ÚerO  Úreal_unwraps   `  @€rD   Ú_mock_aware_unwrapÚ4_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]rL  zCallable[[Any], Any] | Noner{   r
   )ÚinspectÚunwrap)rW  rV  s    @rD   Ú_patch_unwrap_mock_awarer[  Ö  sY   øé € ô —.‘.€Kð JNñØ ðØ+Fðà	÷ð ð" („G„Nð%Ûà$Œ�ø˜Œ�üs   ƒ-A±A µAÁAÁAc                  ó   • \ rS rSrSS jrSrg)rU   iô  c              #  ó~  #   • SS K n " S SUR                  5      n U R                  nU R                  R                  R                  U 5        U" 5       n[        U R
                  5      n[        SU[        5       [        U R
                  5      S9nUR!                  WUR"                  5       H6  nUR$                  (       d  M  [&        R)                  XR*                  XgS9v •  M8     g ! [        R                   a>    U R
                  R                  S5      (       a  [        SU R                  < 35         GNe f = f7f)	Nr   c                  óF  ^ • \ rS rSr\R
                  SS r\S:  =(       dQ    \S:H  =(       a    \R
                  R                  S:  =(       d%    \S:H  =(       a    \R
                  R                  S:  r\(       a  U 4S jr	\R
                  S	:  a  U 4S
 jr
SrU =r$ SrU =r$ )Ú5DoctestModule.collect.<locals>.MockAwareDocTestFinderiø  Né   )é   é   rø   )ra  é   ra  c                ó¶   >• [        U[        5      (       a  [        USU5      n[        US5      (       a  [        R
                  " U5      n[        TU ]  UU5      $ )zÕ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ÚhasattrrY  rZ  r†   Ú_find_lineno)rq   rÁ   Úsource_linesrˆ   s      €rD   rj  ÚBDoctestModule.collect.<locals>.MockAwareDocTestFinder._find_lineno  sU   ø€ ô " #¤x×0Ñ0Ü% c¨6°3Ó7˜ä˜s M×2Ñ2ä%Ÿnšn¨SÓ1˜ô !™7Ñ/ØØ$óð rF   )ra  é   c                óx   >• [        U[        R                  5      (       a  UR                  n[        TU ]  X5      $ )zî`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)rq   ÚmoduleÚobjectrˆ   s      €rD   rq  ÚBDoctestModule.collect.<locals>.MockAwareDocTestFinder._from_module  s3   ø€ ô " &¬)×*CÑ*C×DÑDØ!'§¡˜ô !™7Ñ/°Ó?Ð?rF   rJ   )r}   r~   r   r€   rî   Úversion_infoÚpy_ver_info_minorÚmicroÚis_find_lineno_brokenrj  rq  r�   rŠ   r‹   s   @rD   ÚMockAwareDocTestFinderr_  ø  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   ry  r:   zunable to import module Fr5  r6  )r�   ÚDocTestFinderrÁ   r   ÚCollectErrorrO   r0  r   rN   rf   rÂ   Úparsefactoriesr-  r·   rý   r1  Úfindr}   r:  r¹   rV   r]   )rq   r�   ry  rr  Úfinderr“   r¿   r™   s           rD   r.   ÚDoctestModule.collectõ  s  é € Ûô)	@ W×%:Ñ%:ô )	@ðV	Ø—X‘XˆFð 	�‰×$Ñ$×3Ñ3°DÔ9ñ (Ó)ˆÜ% d§k¡kÓ2ˆÜØØ#Ü “NÜ 8¸¿¹Ó Eñ	
ˆð —K‘K ¨¯©Ö8ˆDØ�}�}‰}Ü!×-Ñ-ØŸy™y°ð .ð ô ò 9øô) ×%Ñ%ó 	Ø�{‰{×#Ñ#Ð$B×CÑCÜÐ/°·	±	©}Ð=×>àð		üs/   ‚D=�C( ©BD=Ã%D=Ã(AD:Ä5D=Ä8D:Ä:D=rJ   Nr>  )r}   r~   r   r€   r.   r�   rJ   rF   rD   rU   rU   ô  s   † ÷HrF   rU   c                 ó8   • SS K n  " S SU R                  5      nU$ )Nr   c                  óä   ^ • \ rS rSr\R
                  " S\R                  5      r\R
                  " S\R                  5      r\R
                  " S\R                  5      r
SU 4S jjrS	S jrSrU =r$ )
Ú2_init_checker_class.<locals>.LiteralsOutputCheckeriC  z(\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                ó¸  >• [         TU ]  XU5      (       a  gU[        5       -  nU[        5       -  nU[	        5       -  nU(       d  U(       d  U(       d  gSS jnU(       a&  U" U R
                  U5      nU" U R
                  U5      nU(       a&  U" U R                  U5      nU" U R                  U5      nU(       a  U R                  X5      n[         TU ]  XU5      $ )NTFc                ó2   • [         R                  " U SU5      $ )Nz\1\2)ÚreÚsub)ÚregexÚtxts     rD   Úremove_prefixesÚX_init_checker_class.<locals>.LiteralsOutputChecker.check_output.<locals>.remove_prefixesl  s   € Ü—v’v˜e W¨cÓ2Ð2rF   )r‡  zre.Pattern[str]rˆ  r?   r{   r?   )r†   Úcheck_outputr"  r#  r$  Ú_unicode_literal_reÚ_bytes_literal_reÚ_remove_unwanted_precision)	rq   Úwantr›   r“   Úallow_unicodeÚallow_bytesÚallow_numberr‰  rˆ   s	           €rD   r‹  Ú?_init_checker_class.<locals>.LiteralsOutputChecker.check_outputa  sÆ   ø€ Ü‰wÑ# D¨{×;Ñ;Øà'Ô*AÓ*CÑCˆMØ%Ô(=Ó(?Ñ?ˆKØ&Ô)9Ó);Ñ;ˆLæ ®¾\Øô3ö Ù& t×'?Ñ'?ÀÓF�Ù% d×&>Ñ&>ÀÓD�æÙ& t×'=Ñ'=¸tÓD�Ù% d×&<Ñ&<¸cÓB�æØ×5Ñ5°dÓ@�ä‘7Ñ'¨°;Ó?Ð?rF   c                ó.  • [        U R                  R                  U5      5      n[        U R                  R                  U5      5      n[        U5      [        U5      :w  a  U$ Sn[	        X4SS9 GH!  u  pgUR                  S5      nUR                  S5      n	U	c  UR                  S5      n	Uc  SO
[        U5      n
U	b  U
[        U	5      -  n
[        UR                  5       5      [        [        UR                  5       5      SU
* -  S9:X  d  MŸ  US UR                  5       U-    UR                  5       -   X'R                  5       U-   S  -   nXVR                  5       UR                  5       -
  UR                  5       UR                  5       -
  -
  -  nGM$     U$ )	Nr   T)ÚstrictÚfractionÚ	exponent1Ú	exponent2é
   )Úabs)ÚlistÚ
_number_reÚfinditerÚlenÚziprC   r­   Úfloatr   ÚstartÚend)rq   r�  r›   ÚwantsÚgotsÚoffsetÚwÚgr–  ÚexponentÚ	precisions              rD   rŽ  ÚM_init_checker_class.<locals>.LiteralsOutputChecker._remove_unwanted_precision|  sV  € Ü˜Ÿ™×1Ñ1°$Ó7Ó8ˆEÜ˜Ÿ™×0Ñ0°Ó5Ó6ˆDÜ�5‹zœS ›YÓ&Ø�
ØˆFÜ˜E°Õ5‘�Ø'(§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Ñ=ÀÇEÁEÃGÈfÑDTÐDVÐ@WÑWð ð Ÿe™e›g¨¯©«	Ñ1°Q·U±U³W¸q¿w¹w»yÑ5HÑIÑI“Fñ 6ð  ˆJrF   rJ   )r�  r?   r›   r?   r“   r­   r{   r®   )r�  r?   r›   r?   r{   r?   )r}   r~   r   r€   r…  ÚcompileÚUNICODErŒ  r�  ÚVERBOSErœ  r‹  rŽ  r�   rŠ   r‹   s   @rD   ÚLiteralsOutputCheckerr‚  C  s]   ø† ð
 !ŸjšjÐ)CÀRÇZÁZÓPÐØŸJšJÐ'AÀ2Ç:Á:ÓNÐØ—Z’Zðð& �J‰Jó)
ˆ
÷.	@÷6	ò 	rF   r®  )r�   ÚOutputChecker)r�   r®  s     rD   Ú_init_checker_classr°  @  s"   € ÛôO × 5Ñ 5ô Oðb !Ð rF   c                 ó8   • [         c
  [        5       q [        5       $ )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                 ó.   • SSK n U R                  " S5      $ )z+Register and return the ALLOW_UNICODE flag.r   Nr  ©r�   Úregister_optionflagr%  s    rD   r"  r"  «  s   € ãà×&Ò& Ó7Ð7rF   c                 ó.   • SSK n U R                  " S5      $ )z)Register and return the ALLOW_BYTES flag.r   Nr   r³  r%  s    rD   r#  r#  ²  s   € ãà×&Ò& }Ó5Ð5rF   c                 ó.   • SSK n U R                  " S5      $ )z$Register and return the NUMBER flag.r   Nr!  r³  r%  s    rD   r$  r$  ¹  s   € ãà×&Ò& xÓ0Ð0rF   c           
     ó    • SSK n[        UR                  [        UR                  [
        UR                  [        UR                  [        S0U    $ )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   rf   )Úscopec                 ó   • [        5       $ )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   r{   r|   r  )rY   r	   rZ   r   r{   z&DoctestModule | DoctestTextfile | None)rN   r	   r{   r®   )rO   r   rN   r	   rZ   r   r{   r®   )r{   ztype[doctest.DocTestRunner]rª   )
r‘   r«   r’   r¬   r“   r­   r”   r®   r{   r  )r{   zdict[str, int])rO   r   r{   r­   )rO   r   r{   r®   )r™   r¯   r{   r|   )rÁ   rs  r{   r®   )r{   zGenerator[None])r{   ztype[doctest.OutputChecker])r{   zdoctest.OutputChecker)r{   r­   )rÁ  r?   r{   r­   )r{   zdict[str, Any])_r±   Ú
__future__r   r£   Úcollections.abcr   r   r   r   Ú
contextlibr   ro  rY  ÚosÚpathlibr	   rè   r…  rî   r  ÚtypesÚtypingr
   r   rS  Ú_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   rl   rR  rƒ   r´   r·   r¹   r&  r-  r1  rX   rß   rI  r[  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ôð ó%ó ð%ô:I�Fô IôXT!ônô(8ô6ô1ôñ" 	ˆyÑóó ñrF   