§
    �Ÿjùs  ã                   ó>  — U d Z ddlZddlZddlZddl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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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/m0Z0 ddl1m2Z2 ddl1m3Z3 ddl4m5Z5 dd l6m7Z7 erddl8Z8d!Z9d"Z:d#Z;d$Z<d%Z=e9e:e;e<e=fZ>da?da@eed&                  eAd'<   d(e*d)dfd*„ZBdad+„ZCd,ed-e.d)eed.                  fd/„ZD eEejF         G                    d0¦  «        d         ¦  «        d1k     reDZHd-e.d)eed.                  fd2„ZDe3ZId3„ Z3d4ed)eJfd5„ZKd6e(d4ed-e.d)eJfd7„ZLd4ed)eJfd8„ZM G d9„ d:e"¦  «        ZN G d;„ d<eO¦  «        ZPd)ed=         fd>„ZQ	 	 	 	 dbd@ed&         dAeeJ         dBeEdCeJd)d=f
dD„ZR G dE„ dFejS        ¦  «        ZTd)eeUeEf         fdG„ZVdH„ ZWdI„ ZX G dJ„ dKejY        ¦  «        ZZdcdN„Z[dOe\d)eJfdP„Z]ed)edQ         fdR„¦   «         Z^ G dS„ dTejY        ¦  «        Z_dUeTd)e,fdV„Z`d)ed&         fdW„ZadddX„Zbd)eEfdY„Zcd)eEfdZ„Zdd)eEfd[„Zed\eUd)eEfd]„Zf ejg        d^¬_¦  «        d)eeUef         fd`„¦   «         ZhdS )ez6Discover and run ipdoctests in modules and test files.é    N)Úcontextmanager)ÚPath)ÚAny)ÚCallable)ÚDict)Ú	Generator)ÚIterable)ÚList)ÚOptional)ÚPattern)ÚSequence)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚUnion)Úoutcomes)ÚExceptionInfo)ÚReprFileLocation)ÚTerminalRepr)ÚTerminalWriter©Úsafe_getattr)ÚConfig)ÚParser)ÚFixtureRequest)Ú	Collector)ÚOutcomeException©Ú
fnmatch_ex)Úimport_path)Úapprox)ÚPytestWarningÚnoneÚcdiffÚndiffÚudiffÚonly_first_failureÚIPDoctestOutputCheckerÚCHECKER_CLASSÚparserÚreturnc                 óº  — |                       ddddg¬¦  «         |                       ddd¬	¦  «         |                      d
¦  «        }|                     ddddd¬¦  «         |                     dt          j        ddt
          d¬¦  «         |                     ddg ddd¬¦  «         |                     ddddd¬¦  «         |                     dddd d!¬¦  «         d S )"NÚipdoctest_optionflagszoption flags for ipdoctestsÚargsÚELLIPSIS)ÚtypeÚdefaultÚipdoctest_encodingz!encoding used for ipdoctest fileszutf-8)r1   Úcollectz--ipdoctest-modulesÚ
store_trueFz!run ipdoctests in all .py modulesÚipdoctestmodules)Úactionr1   ÚhelpÚdestz--ipdoctest-reportr&   z;choose another output format for diffs on ipdoctest failureÚipdoctestreport)r0   r1   r7   Úchoicesr8   z--ipdoctest-globÚappendÚpatz4ipdoctests file matching pattern, default: test*.txtÚipdoctestglob)r6   r1   Úmetavarr7   r8   z --ipdoctest-ignore-import-errorszignore ipdoctest ImportErrorsÚipdoctest_ignore_import_errorsz--ipdoctest-continue-on-failurez>for a given ipdoctest, continue to run after the first failureÚipdoctest_continue_on_failure)ÚaddiniÚgetgroupÚ	addoptionÚstrÚlowerÚDOCTEST_REPORT_CHOICES)r*   Úgroups     út/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/IPython/testing/plugin/pytest_ipdoctest.pyÚpytest_addoptionrI   H   sO  € Ø
‡M‚MØØ%ØØ�ð	 ñ ô ð ð ‡M‚MØÐAÈ7ð ñ ô ð ð �OŠO˜IÑ&Ô&€EØ	‡O‚OØØØØ0Øð ñ ô ð ð 
‡O‚OØÝŒYØØJÝ&Øð ñ ô ð ð 
‡O‚OØØØØØCØð ñ ô ð ð 
‡O‚OØ*ØØØ,Ø-ð ñ ô ð ð 
‡O‚OØ)ØØØMØ,ð ñ ô ð ð ð ó    c                  ó
   — d a d S ©N)ÚRUNNER_CLASS© rJ   rH   Úpytest_unconfigurerO   z   s   € ð €L€L€LrJ   Ú	file_pathÚparent)ÚIPDoctestModuleÚIPDoctestTextfilec                 ó4  — |j         }| j        dk    rV|j        j        rIt	          t          | ¦  «        t          | ¦  «        f¦  «        st                               || ¬¦  «        }|S n/t          || |¦  «        rt                               || ¬¦  «        }|S d S )Nz.py©Úpath)ÚconfigÚsuffixÚoptionr5   ÚanyÚ_is_setup_pyÚ_is_main_pyrR   Úfrom_parentÚ_is_ipdoctestrS   )rP   rQ   rW   ÚmodÚtxts        rH   Úpytest_collect_filera   €   s¥   € ð Œ]€FØÔ˜5Ò Ð ØŒ=Ô)ð 	µ#Ý˜)Ñ$Ô$¥k°)Ñ&<Ô&<Ð=ñ3
ô 3
ð 	õ $3×#>Ò#>¸vÈIÐ#>Ñ#VÔ#VˆCØˆJøÝ	�v˜y¨&Ñ	1Ô	1ð Ý!2×!>Ò!>¸vÈIÐ!>Ñ!VÔ!VˆØˆ
Øˆ4rJ   ú.é   c                 ó<   — t          t          | ¦  «        |¦  «        S rL   )Ú_collect_filer   )rV   rQ   s     rH   ra   ra   ”   s   € õ �T $™ZœZ¨Ñ0Ô0Ð0rJ   c                 óX   — dd l }t          |j                             | ¦  «        ¦  «        S )Nr   )Úpy.pathÚ_import_pathrV   Úlocal)rV   ÚrootÚpys      rH   r    r    œ   s'   € Øˆˆˆå˜BœGŸMšM¨$Ñ/Ô/Ñ0Ô0Ð0rJ   rV   c                 óT   — | j         dk    rdS |                      ¦   «         }d|v pd|v S )Nzsetup.pyFs
   setuptoolss	   distutils)ÚnameÚ
read_bytes)rV   Úcontentss     rH   r[   r[   ¢   s8   € Ø„y�JÒÐØˆuØ�ŠÑ Ô €HØ˜HÐ$Ð@¨¸Ð(@Ð@rJ   rW   c                 ó´   ‡— ‰j         dv r|j                             ‰¦  «        rdS |                      d¦  «        pdg}t	          ˆfd„|D ¦   «         ¦  «        S )N)z.txtz.rstTr=   z	test*.txtc              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S rL   r   )Ú.0ÚglobrV   s     €rH   ú	<genexpr>z _is_ipdoctest.<locals>.<genexpr>­   s-   øè è € Ð8Ð8¨$�z˜$ Ñ%Ô%Ð8Ð8Ð8Ð8Ð8Ð8rJ   )rX   ÚsessionÚ
isinitpathÚ	getoptionrZ   )rW   rV   rQ   Úglobss    `  rH   r^   r^   ©   sh   ø€ Ø„{Ð&Ð&Ð&¨6¬>×+DÒ+DÀTÑ+JÔ+JÐ&ØˆtØ×Ò˜_Ñ-Ô-Ð>°+°€EÝÐ8Ð8Ð8Ð8°%Ð8Ñ8Ô8Ñ8Ô8Ð8rJ   c                 ó   — | j         dk    S )Nz__main__.py)rm   rU   s    rH   r\   r\   °   s   € ØŒ9˜Ò%Ð%rJ   c                   óV   — e Zd Zdeeeee         f                  ddfd„Zdeddfd„Z	dS )ÚReprFailDoctestÚreprlocation_linesr+   Nc                 ó   — || _         d S rL   )r|   )Úselfr|   s     rH   Ú__init__zReprFailDoctest.__init__µ   s   € ð #5ˆÔÐÐrJ   Útwc                 ó~   — | j         D ]4\  }}|D ]}|                     |¦  «         Œ|                     |¦  «         Œ5d S rL   )r|   ÚlineÚ
toterminal)r~   r€   ÚreprlocationÚlinesr‚   s        rH   rƒ   zReprFailDoctest.toterminalº   sZ   € Ø#'Ô#:ð 	(ð 	(ÑˆL˜%Øð ð �Ø—’˜‘”��Ø×#Ò# BÑ'Ô'Ð'Ð'ð	(ð 	(rJ   )
Ú__name__Ú
__module__Ú__qualname__r   r   r   rD   r   r   rƒ   rN   rJ   rH   r{   r{   ´   sn   € € € € € ð5Ø"*¨5Ð1AÀ8ÈCÄ=Ð1PÔ+QÔ"Rð5à	ð5ð 5ð 5ð 5ð
(˜^ð (°ð (ð (ð (ð (ð (ð (rJ   r{   c                   ó4   ‡ — e Zd Zded         ddfˆ fd„Zˆ xZS )ÚMultipleDoctestFailuresÚfailureszdoctest.DocTestFailurer+   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S rL   )Úsuperr   r‹   )r~   r‹   Ú	__class__s     €rH   r   z MultipleDoctestFailures.__init__Â   s$   ø€ Ý‰Œ×ÒÑÔÐØ ˆŒˆˆrJ   )r†   r‡   rˆ   r   r   Ú__classcell__©rŽ   s   @rH   rŠ   rŠ   Á   sQ   ø€ € € € € ð! Ð*BÔ!Cð !Èð !ð !ð !ð !ð !ð !ð !ð !ð !ð !rJ   rŠ   ÚIPDocTestRunnerc                  ó<   ‡— dd l Šddlm}   G ˆfd„d| ¦  «        }|S )Nr   é   )r‘   c                   ó¼   •‡ — e Zd ZdZ	 	 	 	 dded         dee         ded	ed
df
ˆ fd„Zddddded
dfˆfd„Z	ddddde
ee         eej        f         d
dfˆ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.
        Nr   TÚcheckerr(   ÚverboseÚoptionflagsÚcontinue_on_failurer+   c                 ó^   •— t          ¦   «                              |||¬¦  «         || _        d S )N)r–   r—   r˜   )r�   r   r™   )r~   r–   r—   r˜   r™   rŽ   s        €rH   r   z8_init_runner_class.<locals>.PytestDoctestRunner.__init__Ò   s2   ø€ õ ‰GŒG×Ò W°gÈ;ÐÑWÔWÐWØ':ˆDÔ$Ð$Ð$rJ   Útestúdoctest.DocTestÚexamplezdoctest.ExampleÚgotc                 óh   •—  ‰j         |||¦  «        }| j        r|                     |¦  «         d S |‚rL   )ÚDocTestFailurer™   r;   )r~   Úoutr›   r�   rž   ÚfailureÚdoctests         €rH   Úreport_failurez>_init_runner_class.<locals>.PytestDoctestRunner.report_failureÜ   sC   ø€ ð -�gÔ,¨T°7¸CÑ@Ô@ˆGØÔ'ð Ø—
’
˜7Ñ#Ô#Ð#Ð#Ð#à�rJ   Úexc_infoc                 ó  •— t          |d         t          ¦  «        r|d         ‚t          |d         t          j        ¦  «        rt	          j        d¦  «          ‰j        |||¦  «        }| j        r|                     |¦  «         d S |‚)Nr“   zQuitting debugger)	Ú
isinstancer   ÚbdbÚBdbQuitr   ÚexitÚUnexpectedExceptionr™   r;   )r~   r¡   r›   r�   r¥   r¢   r£   s         €rH   Úreport_unexpected_exceptionzK_init_runner_class.<locals>.PytestDoctestRunner.report_unexpected_exceptioné   s�   ø€ õ ˜( 1œ+Õ'7Ñ8Ô8ð "Ø˜q”kÐ!Ý˜( 1œ+¥s¤{Ñ3Ô3ð 3Ý”Ð1Ñ2Ô2Ð2Ø1�gÔ1°$¸ÀÑJÔJˆGØÔ'ð Ø—
’
˜7Ñ#Ô#Ð#Ð#Ð#à�rJ   ©NNr   T)r†   r‡   rˆ   Ú__doc__r   ÚboolÚintr   rD   r¤   r   r   ÚBaseExceptionÚtypesÚTracebackTyper¬   r�   )rŽ   r£   s   @€rH   ÚPytestDoctestRunnerr•   Ë   s5  øø€ € € € € ð	ð 	ð ;?Ø&*Ø Ø(,ð	;ð 	;àÐ6Ô7ð	;ð ˜d”^ð	;ð ð		;ð
 "&ð	;ð ð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð	ð $ð	ð 'ð		ð
 ð	ð ð	ð 	ð 	ð 	ð 	ð 	ð	ð $ð	ð 'ð		ð
 ˜D Ô/°ÀÔ@SÐSÔTð	ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rJ   r´   )r£   Ú	ipdoctestr‘   )r‘   r´   r£   s     @rH   Ú_init_runner_classr¶   Ç   s[   ø€ Ø€N€N€NØ*Ð*Ð*Ð*Ð*Ð*ð-ð -ð -ð -ð -ð -ð -˜oñ -ô -ð -ð^ ÐrJ   Tr–   r—   r˜   r™   c                 óR   — t           €t          ¦   «         a t          | |||¬¦  «        S )N©r–   r—   r˜   r™   )rM   r¶   r¸   s       rH   Ú_get_runnerr¹   ý   s:   € õ ÐÝ)Ñ+Ô+ˆõ ØØØØ/ð	ñ ô ð rJ   c                   ó†  ‡ — e Zd Z	 	 ddeddded         ded         d	df
ˆ fd
„Zedddeddddfˆ fd„¦   «         Zdd„Zdd„Z	dd„Z
dd„Zdee         d	eeef         fˆ fd„Zd	eedef         ee         ef         fd„Z eej                             d¦  «        d         ¦  «        dk     red	efd„¦   «         Zˆ xZS ˆ xZS )ÚIPDoctestItemNrm   rQ   z)Union[IPDoctestTextfile, IPDoctestModule]Úrunnerr‘   Údtestrœ   r+   c                 ó„   •— t          ¦   «                              ||¦  «         || _        || _        d | _        d | _        d S rL   )r�   r   r¼   r½   ÚobjÚfixture_request)r~   rm   rQ   r¼   r½   rŽ   s        €rH   r   zIPDoctestItem.__init__  sB   ø€ õ 	‰Œ×Ò˜˜vÑ&Ô&Ð&ØˆŒØˆŒ
ØˆŒØ9=ˆÔÐÐrJ   c                óN   •— t          ¦   «                              ||||¬¦  «        S )zThe public named constructor.)rm   rQ   r¼   r½   )r�   r]   )ÚclsrQ   rm   r¼   r½   rŽ   s        €rH   r]   zIPDoctestItem.from_parent  s'   ø€ õ ‰wŒw×"Ò"¨°VÀFÐRWÐ"ÑXÔXÐXrJ   c                 ó®  — | j         ��Jt          | ¦  «        | _        t          | j        j        ¬¦  «        }| j                             d¦  «                             ¦   «         D ]
\  }}|||<   Œ| j         j                             |¦  «         ddlm	} t          | j         j        d         |¦  «        r¢i | _        | j                             t          j        ¦  «         t          j                             | j         j        ¦  «         t          j                             dd ¦  «         t           t          j        d<   t          j        | j         _        d S d S d S )N)Ú
getfixtureÚipdoctest_namespacer“   ©Ú	IPExampler   Ú_Ú__builtins__)r½   Ú_setup_fixturesrÀ   ÚdictÚgetfixturevalueÚitemsrx   Úupdaterµ   rÇ   r§   ÚexamplesÚ_user_ns_origÚ_ipÚuser_nsÚpopÚbuiltins)r~   rx   rm   ÚvaluerÇ   s        rH   ÚsetupzIPDoctestItem.setup,  s<  € ØŒ:Ñ!Ý#2°4Ñ#8Ô#8ˆDÔ Ý DÔ$8Ô$HÐIÑIÔIˆEØ#Ô3×CÒCØ%ñ ô  çŠe‰gŒgð$ð $‘��eð $��d‘�ØŒJÔ×#Ò# EÑ*Ô*Ð*à,Ð,Ð,Ð,Ð,Ð,å˜$œ*Ô-¨aÔ0°)Ñ<Ô<ð /ð &(�Ô"ØÔ"×)Ò)­#¬+Ñ6Ô6Ð6Ý”×"Ò" 4¤:Ô#3Ñ4Ô4Ð4õ ”—’  TÑ*Ô*Ð*Ý.6•”˜NÑ+Ý#&¤;�”
Ô Ð Ð ð- "Ð!ð/ð /rJ   c                 ó.  — ddl m} t          | j        j        d         |¦  «        rPi | j        _        t          j                             ¦   «          t          j         	                    | j
        ¦  «         | `
| j        j                             ¦   «          d S )Nr“   rÆ   r   )rµ   rÇ   r§   r½   rÏ   rx   rÑ   rÒ   ÚclearrÎ   rÐ   )r~   rÇ   s     rH   ÚteardownzIPDoctestItem.teardownE  sŒ   € Ø(Ð(Ð(Ð(Ð(Ð(õ �d”jÔ)¨!Ô,¨iÑ8Ô8ð 	#Ø!ˆDŒJÔÝŒK×ÒÑÔÐÝŒK×Ò˜tÔ1Ñ2Ô2Ð2ØÐ"àŒ
Ô×ÒÑ Ô Ð Ð Ð rJ   c                 ó  — | j         €J ‚| j        €J ‚t          | j         ¦  «         |                      ¦   «          g }t	          t
          d¦  «        }t          t
          dd ¦  «        }t          j        ¦   «         }t          j	        | j
        j        ¦  «         	 | j                             | j         |d¬¦  «         t          j	        |¦  «         |rt          t
          d|¦  «         nˆt	          t
          d¦  «        rt          t
          d¦  «         n]# t          j	        |¦  «         |rt          t
          d|¦  «         w t	          t
          d¦  «        rt          t
          d¦  «         w w xY w|rt          |¦  «        ‚d S )NrÈ   F)r¡   Úclear_globs)r½   r¼   Ú_check_all_skippedÚ$_disable_output_capturing_for_darwinÚhasattrrÔ   ÚgetattrÚosÚgetcwdÚchdirÚfspathÚdirnameÚrunÚsetattrÚdelattrrŠ   )r~   r‹   Úhad_underscore_valueÚunderscore_original_valueÚcurdirs        rH   ÚruntestzIPDoctestItem.runtestQ  s  € ØŒzÐ%Ð%Ð%ØŒ{Ð&Ð&Ð&Ý˜4œ:Ñ&Ô&Ð&Ø×1Ò1Ñ3Ô3Ð3Ø35ˆõ  '¥x°Ñ5Ô5ÐÝ$+­H°c¸4Ñ$@Ô$@Ð!õ
 ”‘”ˆÝ
Œ�”Ô$Ñ%Ô%Ð%ð		'ð ŒK�OŠO˜DœJ¨HÀ%ˆOÑHÔHÐHåŒH�VÑÔÐØ#ð 'Ý� #Ð'@ÑAÔAÐAÐAÝ� 3Ñ'Ô'ð 'Ý� #Ñ&Ô&Ð&øøõ	 ŒH�VÑÔÐØ#ð 'Ý� #Ð'@ÑAÔAÐAÐAÝ� 3Ñ'Ô'ð 'Ý� #Ñ&Ô&Ð&Ð&ð'øøøð ð 	4Ý)¨(Ñ3Ô3Ð3ð	4ð 	4s   Â"D ÄAE.c                 óT  — t          j        ¦   «         dk    rdS | j        j                             d¦  «        }|rm|                     d¬¦  «         |                     ¦   «         \  }}t          j         	                    |¦  «         t          j
         	                    |¦  «         dS dS )zNDisable output capturing. Otherwise, stdout is lost to ipdoctest (pytest#985).ÚDarwinNÚcapturemanagerT)Úin_)ÚplatformÚsystemrW   ÚpluginmanagerÚ	getpluginÚsuspend_global_captureÚread_global_captureÚsysÚstdoutÚwriteÚstderr)r~   Úcapmanr¡   Úerrs       rH   rÝ   z2IPDoctestItem._disable_output_capturing_for_darwino  s£   € åŒ?ÑÔ Ò(Ð(ØˆFØ”Ô*×4Ò4Ð5EÑFÔFˆØð 	"Ø×)Ò)¨dÐ)Ñ3Ô3Ð3Ø×1Ò1Ñ3Ô3‰HˆC�ÝŒJ×Ò˜SÑ!Ô!Ð!ÝŒJ×Ò˜SÑ!Ô!Ð!Ð!Ð!ð		"ð 	"rJ   Úexcinfoc                 ó  •‡— dd l }d }t          |j        |j        |j        f¦  «        r	|j        g}n&t          |j        t
          ¦  «        r|j        j        }|€!t          ¦   «                              |¦  «        S g }|D �]û}|j	        }|j
        Š‰j        }‰j        €d }n‰j        |j        z   dz   }t          |¦  «        j        }	t          |||	¦  «        }
t!          ¦   «         }t#          | j                             d¦  «        ¦  «        }|�z|j
        j        €J ‚|j
        j                             d¦  «        }‰j        €J ‚ˆfd„t-          |¦  «        D ¦   «         }|t/          |j        dz
  d¦  «        |j        dz   …         }n>dg}d}|j                             ¦   «         D ]}|                     d	|› d
|› �¦  «         d}Œ t          ||j        ¦  «        r3||                     ||j        |¦  «                             d¦  «        z  }nTt;          j        |j        ¦  «        }|dtA          |j        ¦  «        z  gz  }|d„ tC          j"        |j        Ž D ¦   «         z  }|                     |
|f¦  «         �ŒýtG          |¦  «        S )Nr   r“   r9   Fc                 ó:   •— g | ]\  }}d |‰j         z   dz   |fz  ‘ŒS )z%03d %sr“   )Úlineno)rr   ÚiÚxr›   s      €rH   ú
<listcomp>z.IPDoctestItem.repr_failure.<locals>.<listcomp>¡  s?   ø€ ð ð ð Ù=C¸aÀ�I  T¤[¡°1Ñ!4°aÐ 8Ñ8ðð ð rJ   é	   z?EXAMPLE LOCATION UNKNOWN, not showing all tests of that examplez>>>z??? ú z...ú
zUNEXPECTED EXCEPTION: %sc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )r  )Ústrip)rr   r  s     rH   r  z.IPDoctestItem.repr_failure.<locals>.<listcomp>µ  s/   € ð ð ð Ø&'�A—G’G˜D‘M”Mðð ð rJ   )$r£   r§   rÕ   r    r«   rŠ   r‹   r�   Úrepr_failurer�   r›   Úfilenamerÿ   r0   r†   r   Ú_get_checkerÚ_get_report_choicerW   rw   Ú	docstringÚ
splitlinesÚ	enumerateÚmaxÚsourcer;   Úoutput_differencerž   Úsplitr   Úfrom_exc_infor¥   ÚreprÚ	tracebackÚformat_exceptionr{   )r~   rü   r£   r‹   r|   r¢   r�   r	  rÿ   Úmessager„   r–   Úreport_choicer…   Úindentr‚   Úinner_excinfor›   rŽ   s                    @€rH   r  zIPDoctestItem.repr_failure{  sç  øø€ ð 	ˆˆˆð ð 	õ ØŒM˜GÔ2°GÔ4OÐPñ
ô 
ð 	.ð  œ�ˆHˆHÝ˜œÕ'>Ñ?Ô?ð 	.Ø”}Ô-ˆHàÐÝ‘7”7×'Ò'¨Ñ0Ô0Ð0àÐØð )	=ñ )	=ˆGØ”oˆGØ”<ˆDØ”}ˆHØŒ{Ð"Ø��àœ w¤~Ñ5¸Ñ9�Ý˜7‘m”mÔ,ˆGå+¨H°f¸gÑFÔFˆLÝ"‘n”nˆGÝ.¨t¬{×/DÒ/DÐEVÑ/WÔ/WÑXÔXˆMØÐ!Ø”|Ô-Ð9Ð9Ð9ØœÔ.×9Ò9¸%Ñ@Ô@�à”{Ð.Ð.Ð.ðð ð ð ÝGPÐQVÑGWÔGWðñ ô �ð �c '¤.°1Ñ"4°aÑ8Ô8¸7¼>ÈAÑ;MÐMÔN��ð Vð�ð �Ø#œN×5Ò5Ñ7Ô7ð #ð #�DØ—L’LÐ!7¨Ð!7Ð!7°Ð!7Ð!7Ñ8Ô8Ð8Ø"�F�FÝ˜' 7Ô#9Ñ:Ô:ð 	Ø˜×2Ò2Ø˜Wœ[¨-ñô ç’%˜‘+”+ñ��õ !.Ô ;¸GÔ<LÑ MÔ M�ØÐ4µt¸MÔ<OÑ7PÔ7PÑPÐQÑQ�Øð ð Ý+4Ô+EÀwÔGWÐ+Xðñ ô ñ �ð ×%Ò% |°UÐ&;Ñ<Ô<Ð<Ñ<ÝÐ1Ñ2Ô2Ð2rJ   zos.PathLike[str]c                 óL   — | j         €J ‚| j        | j         j        d| j        z  fS )Nz[ipdoctest] %s)r½   rV   rÿ   rm   ©r~   s    rH   Ú
reportinfozIPDoctestItem.reportinfo»  s,   € ØŒzÐ%Ð%Ð%ØŒy˜$œ*Ô+Ð-=ÀÄ	Ñ-IÐIÐIrJ   rb   r   rc   c                 ó*   — t          | j        ¦  «        S rL   ©r   rã   r  s    rH   rV   zIPDoctestItem.pathÁ  ó   € å˜œÑ$Ô$Ð$rJ   )NN©r+   N)r†   r‡   rˆ   rD   r   r   Úclassmethodr]   rÖ   rÙ   rë   rÝ   r   r±   r   r   r  r   r°   r  ÚpytestÚ__version__r  Úpropertyr   rV   r�   r�   s   @rH   r»   r»     s  ø€ € € € € ð
 /3Ø-1ð>ð >àð>ð <ð>ð Ð*Ô+ð	>ð
 Ð)Ô*ð>ð 
ð>ð >ð >ð >ð >ð >ð ð
Yà;ð
Yð ð	
Yð
 "ð
Yð !ð
Yð 
Yð 
Yð 
Yð 
Yñ „[ð
Yð/ð /ð /ð /ð2
!ð 
!ð 
!ð 
!ð4ð 4ð 4ð 4ð<	"ð 	"ð 	"ð 	"ð>3à˜}Ô-ð>3ð 
ˆs�LÐ Ô	!ð>3ð >3ð >3ð >3ð >3ð >3ð@J˜E %Ð(:¸CÐ(?Ô"@À(È3Ä-ÐQTÐ"TÔUð Jð Jð Jð Jð €sˆ6Ô×#Ò# CÑ(Ô(¨Ô+Ñ,Ô,¨qÒ0Ð0à	ð	%˜$ð 	%ð 	%ð 	%ñ 
Œð	%ð 	%ð 	%ð 	%ð 	%ð 1Ð0Ð0Ð0rJ   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    rH   Ú_get_flag_lookupr3  Æ  sa   € Ø€N€N€NåØ&Ô=Ø%Ô;Ø$Ô9ØÔ!Ø 'Ô ?Ø Ô1Ý-Ñ/Ô/Ý)Ñ+Ô+ÝÑ!Ô!ð
ñ 
ô 
ð 
rJ   c                 óz   — | j                              d¦  «        }t          ¦   «         }d}|D ]}|||         z  }Œ|S )Nr-   r   )rW   Úgetinir3  )rQ   Úoptionflags_strÚflag_lookup_tableÚflag_accÚflags        rH   Úget_optionflagsr:  Ö  sO   € Ø”m×*Ò*Ð+BÑCÔC€OÝ(Ñ*Ô*ÐØ€HØð ,ð ,ˆØÐ% dÔ+Ñ+ˆˆØ€OrJ   c                 ób   — |                       d¦  «        }|r|                       d¦  «        rd}|S )Nr@   ÚusepdbF)Úgetvalue)rW   r™   s     rH   Ú_get_continue_on_failurer>  ß  s?   € Ø Ÿ/š/Ð*IÑJÔJÐØð (ð �?Š?˜8Ñ$Ô$ð 	(Ø"'ÐØÐrJ   c                   óâ   ‡ — e Zd ZdZdee         fd„Z eej	         
                    d¦  «        d         ¦  «        dk     r,edefd„¦   «         Zedddœd	ee         fˆ fd
„¦   «         Zˆ xZS ˆ xZS )rS   Nr+   c              #   óð  K  — dd l }ddlm} | j                             d¦  «        }| j                             |¦  «        }t          | j        ¦  «        }| j        j        }ddi}t          | ¦  «        }t          d|t          ¦   «         t          | j        ¦  «        ¬¦  «        }	 |¦   «         }
|
                     ||||d¦  «        }|j        r't                               | |j        |	|¬	¦  «        V — d S d S )
Nr   r“   )ÚIPDocTestParserr2   r†   Ú__main__F©r—   r˜   r–   r™   ©rm   r¼   r½   )r£   rµ   rA  rW   r5  rV   Ú	read_textrD   rm   r:  r¹   r
  r>  Úget_doctestrÏ   r»   r]   )r~   r£   rA  ÚencodingÚtextr	  rm   rx   r˜   r¼   r*   r›   s               rH   r3   zIPDoctestTextfile.collectì  s#  è è € ØˆˆˆØ.Ð.Ð.Ð.Ð.Ð.ð ”;×%Ò%Ð&:Ñ;Ô;ˆØŒy×"Ò" 8Ñ,Ô,ˆÝ�t”y‘>”>ˆØŒyŒ~ˆØ˜ZÐ(ˆå% dÑ+Ô+ˆåØØ#Ý ‘N”NÝ 8¸¼Ñ EÔ Eð	
ñ 
ô 
ˆð !�Ñ"Ô"ˆØ×!Ò! $¨¨t°X¸qÑAÔAˆØŒ=ð 	Ý×+Ò+Ø˜4œ9¨V¸4ð ,ñ ô ð ð ð ð ð ð	ð 	rJ   rb   r   rc   c                 ó*   — t          | j        ¦  «        S rL   r  r  s    rH   rV   zIPDoctestTextfile.path
  r   rJ   ©rã   rV   rV   c                ó|   •— |�dd l }|j                             |¦  «        } t          ¦   «         j        d||dœ|¤ŽS ©Nr   )rQ   rã   rN   ©rg   rV   ri   r�   r]   ©rÂ   rQ   rã   rV   Úkwrk   rŽ   s         €rH   r]   zIPDoctestTextfile.from_parent  óK   ø€ ð ÐØ���àœŸš tÑ,Ô,�Ø&•5‘7”7Ô&ÐJ¨f¸VÐJÐJÀrÐJÐJÐJrJ   )r†   r‡   rˆ   r¿   r	   r»   r3   r°   r#  r$  r  r%  r   rV   r"  r   r]   r�   r�   s   @rH   rS   rS   é  sû   ø€ € € € € Ø
€Cð˜ -Ô0ð ð ð ð ð8 €sˆ6Ô×#Ò# CÑ(Ô(¨Ô+Ñ,Ô,¨qÒ0Ð0à	ð	%˜$ð 	%ð 	%ð 	%ñ 
Œð	%ð 
ð
 Ø#'ð	Kð 	Kð 	Kð
 ˜4”.ð	Kð 	Kð 	Kð 	Kð 	Kñ 
Œð	Kð 	Kð 	Kð 	Kð 	Kð 1Ð0Ð0Ð0rJ   rS   r›   rœ   c                 ó€   ‡— ddl Št          ˆfd„| j        D ¦   «         ¦  «        }|rt          j        d¦  «         dS dS )zVRaise pytest.skip() if all examples in the given DocTest have the SKIP
    option set.r   Nc              3   óX   •K  — | ]$}|j                              ‰j        d ¦  «        V — Œ%dS )FN)ÚoptionsÚgetÚSKIP)rr   r  r£   s     €rH   rt   z%_check_all_skipped.<locals>.<genexpr>#  s5   øè è € ÐPÐP¸Q�a”i—m’m G¤L°%Ñ8Ô8ÐPÐPÐPÐPÐPÐPrJ   z%all docstests skipped by +SKIP option)r£   ÚallrÏ   r#  Úskip)r›   Úall_skippedr£   s     @rH   rÜ   rÜ     s[   ø€ ð €N€N€NåÐPÐPÐPÐPÀ$Ä-ÐPÑPÔPÑPÔP€KØð =ÝŒÐ;Ñ<Ô<Ð<Ð<Ð<ð=ð =rJ   r¿   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    rH   Ú
_is_mockedr[  (  s!   € õ 	�SÐMÈtÑTÔTØð	ðrJ   )NNNc               #   ó  ‡K  — t           j        Šddœdt          dt          f         dt          t          t          gt          f                  dt          fˆfd„} | t           _        	 dV — ‰t           _        dS # ‰t           _        w xY w)z€Context manager which replaces ``inspect.unwrap`` with a version
    that's aware of mock objects and doesn't recurse into them.N©ÚstopÚfunc.r^  r+   c                óÒ   •‡ ‡— 	 |�	|t           u r ‰‰ t           ¬¦  «        S |Š ‰‰ ˆˆ fd„¬¦  «        S # t          $ r'}t          j        d|›d‰ ›d�t          ¦  «         ‚ d }~ww xY w)Nr]  c                 ó8   •— t          | ¦  «        p
 ‰‰¦  «        S rL   )r[  )r¿   Ú_stopr_  s    €€rH   ú<lambda>zF_patch_unwrap_mock_aware.<locals>._mock_aware_unwrap.<locals>.<lambda>>  s   ø€ µjÀ±o´oÐ6TÈÈÈtÉÌ€ rJ   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)r[  Ú	ExceptionÚwarningsÚwarnr"   )r_  r^  Úerb  Úreal_unwraps   `  @€rH   Ú_mock_aware_unwrapz4_patch_unwrap_mock_aware.<locals>._mock_aware_unwrap7  s«   øøø€ ð	Øˆ|˜t¥zÐ1Ð1Ø"�{ 4­jÐ9Ñ9Ô9Ð9ØˆEØ�;˜tÐ*TÐ*TÐ*TÐ*TÐ*TÐUÑUÔUÐUøÝð 	ð 	ð 	ÝŒMˆMð GHÀaÀaÈÈÈðOõ ñ	ô ð ð øøøøð	øøøs   …5 ¢5 µ
A&¿"A!Á!A&)ÚinspectÚunwrapr   r   r   )ri  rh  s    @rH   Ú_patch_unwrap_mock_awarerl  1  s¥   øè è € õ ”.€Kð MQðð ð Ý�s�C�xÔ ðÝ+3µH½c¸UÅC¸ZÔ4HÔ+Iðå	ðð ð ð ð ð ð" (…G„Nð%Øˆˆˆà$�Œˆˆø˜�ŒÐ$Ð$Ð$Ð$s   Á&A8 Á8Bc                   óÞ   ‡ — e Zd Zdee         fd„Z eej         	                    d¦  «        d         ¦  «        dk     r,e
defd„¦   «         Zedddœd	ee         fˆ fd
„¦   «         Zˆ xZS ˆ xZS )rR   r+   c              #   óê  K  — dd l }ddlm}m}  G d„ d|¦  «        }| j        j        dk    r¾t          t          j         	                    d¦  «        d         ¦  «        dk     r>| j
        j                             | j        | j
                             d	¦  «        ¦  «        }n´| j
        j                             | j        | j
                             d	¦  «        | j
        j        ¬
¦  «        }nj	 t          | j        | j
        j        ¬¦  «        }nH# t           $ r; | j
                             d¦  «        rt          j        d| j        z  ¦  «         n‚ Y nw xY w | |¦   «         ¬¦  «        }t'          | ¦  «        }t)          d|t+          ¦   «         t-          | j
        ¦  «        ¬¦  «        }|                     ||j        ¦  «        D ].}	|	j        r%t4                               | |	j        ||	¬¦  «        V — Œ/d S )Nr   r“   )ÚDocTestFinderrA  c                   ó2   ‡ — e Zd ZdZˆ fd„Z	 	 dˆ fd„Zˆ xZS )ú7IPDoctestModule.collect.<locals>.MockAwareDocTestFinderzÉA hackish ipdoctest finder that overrides stdlib internals to fix a stdlib bug.

            https://github.com/pytest-dev/pytest/issues/3456
            https://bugs.python.org/issue25532
            c                 óÜ   •— t          |t          ¦  «        rt          |d|¦  «        }t          |d¦  «        rt	          j        |¦  «        }t          ¦   «                              ||¦  «        S )a3  Doctest code does not take into account `@property`, this
                is a hackish way to fix it. https://bugs.python.org/issue17446

                Wrapped Doctests will need to be unwrapped so the correct
                line number is returned. This will be reported upstream. #8796
                ÚfgetÚ__wrapped__)r§   r%  rß   rÞ   rj  rk  r�   Ú_find_lineno)r~   r¿   Úsource_linesrŽ   s      €rH   ru  zDIPDoctestModule.collect.<locals>.MockAwareDocTestFinder._find_lineno[  sm   ø€ õ ˜c¥8Ñ,Ô,ð 4Ý! # v¨sÑ3Ô3�Cå˜3 Ñ.Ô.ð .å!œ.¨Ñ-Ô-�Cõ ‘w”w×+Ò+ØØ ñô ð rJ   r+   Nc           
      óÆ   •— t          |¦  «        rd S t          ¦   «         5  t          ¦   «                              |||||||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rL   )r[  rl  r�   Ú_find)	r~   Útestsr¿   rm   Úmodulerv  rx   ÚseenrŽ   s	           €rH   rx  z=IPDoctestModule.collect.<locals>.MockAwareDocTestFinder._findo  s±   ø€ õ ˜c‘?”?ð Ø�FÝ-Ñ/Ô/ð ð å‘G”G—M’MØ˜s D¨&°,ÀÀtñô ð ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¡(AÁAÁAr!  )r†   r‡   rˆ   r®   ru  rx  r�   r�   s   @rH   ÚMockAwareDocTestFinderrq  T  sh   ø€ € € € € ðð ðð ð ð ð ð(	àð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rJ   r|  zconftest.pyrb   rc   Ú
importmode)Úrootpath)rj   r?   zunable to import module %r)r*   FrC  rD  )r£   rµ   ro  rA  rV   rm   r°   r#  r$  r  rW   rò   Ú_importconftestrw   r~  r    ÚImportErrorr=  rW  r:  r¹   r
  r>  Úfindr†   rÏ   r»   r]   )
r~   r£   ro  rA  r|  rz  Úfinderr˜   r¼   r›   s
             rH   r3   zIPDoctestModule.collectP  s?  è è € ØˆˆˆØ=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð$	ð $	ð $	ð $	ð $	 ]ñ $	ô $	ð $	ðL Œ9Œ>˜]Ò*Ð*Ý•6Ô%×+Ò+¨CÑ0Ô0°Ô3Ñ4Ô4°qÒ8Ð8ØœÔ2×BÒBØ”IØ”K×)Ò)¨,Ñ7Ô7ñô ��ð
 œÔ2×BÒBØ”IØ”K×)Ò)¨,Ñ7Ô7Ø!œ[Ô1ð Cñ ô ��ðÝ$ T¤Y°T´[Ô5IÐJÑJÔJ��øÝð ð ð Ø”;×'Ò'Ð(HÑIÔIð Ý”KÐ <¸t¼yÑ HÑIÔIÐIÐIàð JÐIðøøøð (Ð'¨¨Ñ/@Ô/@ÐAÑAÔAˆÝ% dÑ+Ô+ˆÝØØ#Ý ‘N”NÝ 8¸¼Ñ EÔ Eð	
ñ 
ô 
ˆð —K’K ¨¬Ñ8Ô8ð 	ð 	ˆDØŒ}ð Ý#×/Ò/Ø˜tœy°¸tð 0ñ ô ð ð ð øð	ð 	s   Ã, D ÄAEÅErb   r   rc   c                 ó*   — t          | j        ¦  «        S rL   r  r  s    rH   rV   zIPDoctestModule.path   r   rJ   NrJ  rV   c                ó|   •— |�dd l }|j                             |¦  «        } t          ¦   «         j        d||dœ|¤ŽS rL  rM  rN  s         €rH   r]   zIPDoctestModule.from_parent¤  rP  rJ   )r†   r‡   rˆ   r	   r»   r3   r°   r#  r$  r  r%  r   rV   r"  r   r]   r�   r�   s   @rH   rR   rR   O  sü   ø€ € € € € ðL˜ -Ô0ð Lð Lð Lð Lð\ €sˆ6Ô×#Ò# CÑ(Ô(¨Ô+Ñ,Ô,¨qÒ0Ð0à	ð	%˜$ð 	%ð 	%ð 	%ñ 
Œð	%ð 
ð
 Ø#'ð	Kð 	Kð 	Kð
 ˜4”.ð	Kð 	Kð 	Kð 	Kð 	Kñ 
Œð	Kð 	Kð 	Kð 	Kð 	Kð 1Ð0Ð0Ð0rJ   rR   Údoctest_itemc                 óº   — dd„}i | _         | j        j        }|                     | |dd¬¦  «        | _        t          | d¬¦  «        }|                     ¦   «          |S )	zIUsed by IPDoctestTextfile and IPDoctestItem to setup fixture information.r+   Nc                  ó   — d S rL   rN   rN   rJ   rH   r_  z_setup_fixtures.<locals>.func·  s   € ØˆrJ   F)Únoder_  rÂ   ÚfuncargsT)Ú	_ispytestr!  )r‰  ru   Ú_fixturemanagerÚgetfixtureinfoÚ_fixtureinfor   Ú_fillfixtures)r…  r_  ÚfmrÀ   s       rH   rÊ   rÊ   ´  s}   € ðð ð ð ð €LÔØ	Ô	Ô	-€BØ "× 1Ò 1Ø ¨$¸ð !2ñ !ô !€LÔõ % \¸TÐBÑBÔB€OØ×!Ò!Ñ#Ô#Ð#ØÐrJ   c                  óD   ‡— dd l } dd lŠddlm}  G ˆfd„d|¦  «        }|S )Nr   r“   )r(   c                   óê   •‡ — e Zd Z”                     d”j        ¦  «        Z”                     d”j        ¦  «        Z”                     d”j        ¦  «        Zde	de	de
defˆ ˆfd„Zde	de	de	f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+)
              )
            )
            Úwantrž   r˜   r+   c                 ó  •— t          ¦   «                              |||¦  «        rdS |t          ¦   «         z  }|t          ¦   «         z  }|t	          ¦   «         z  }|s|s|sdS dt
          t                   dt          dt          fˆ	fd„}|r" || j        |¦  «        } || j        |¦  «        }|r" || j        |¦  «        } || j        |¦  «        }|r|  	                    ||¦  «        }t          ¦   «                              |||¦  «        S )NTFÚregexr`   r+   c                 ó2   •— ‰                      | d|¦  «        S )Nz\1\2)Úsub)r•  r`   Úres     €rH   Úremove_prefixeszX_init_checker_class.<locals>.LiteralsOutputChecker.check_output.<locals>.remove_prefixesò  s   ø€ Ø—v’v˜e W¨cÑ2Ô2Ð2rJ   )
r�   Úcheck_outputr/  r0  r1  r   rD   Ú_unicode_literal_reÚ_bytes_literal_reÚ_remove_unwanted_precision)
r~   r“  rž   r˜   Úallow_unicodeÚallow_bytesÚallow_numberr™  rŽ   r˜  s
           €€rH   rš  z?_init_checker_class.<locals>.LiteralsOutputChecker.check_outputç  sI  ø€ Ý‰wŒw×#Ò# D¨#¨{Ñ;Ô;ð Ø�tà'Õ*AÑ*CÔ*CÑCˆMØ%Õ(=Ñ(?Ô(?Ñ?ˆKØ&Õ)9Ñ);Ô);Ñ;ˆLà ð ¨ð ¸\ð Ø�uð3¥w­s¤|ð 3½#ð 3Å#ð 3ð 3ð 3ð 3ð 3ð 3ð ð EØ&� tÔ'?ÀÑFÔF�Ø%�o dÔ&>ÀÑDÔD�àð CØ&� tÔ'=¸tÑDÔD�Ø%�o dÔ&<¸cÑBÔB�àð AØ×5Ò5°d¸CÑ@Ô@�å‘7”7×'Ò'¨¨c°;Ñ?Ô?Ð?rJ   c                 óì  — t          | j                             |¦  «        ¦  «        }t          | j                             |¦  «        ¦  «        }t          |¦  «        t          |¦  «        k    r|S d}t	          ||¦  «        D �]o\  }}|                     d¦  «        }|                     d¦  «        }	|	€|                     d¦  «        }	|€dnt          |¦  «        }
|	�|
t          |	¦  «        z  }
t          |                     ¦   «         ¦  «        t          t          |                     ¦   «         ¦  «        d|
 z  ¬¦  «        k    rª|d | 	                    ¦   «         |z   …         |                     ¦   «         z   || 
                    ¦   «         |z   d …         z   }|| 
                    ¦   «         | 	                    ¦   «         z
  | 
                    ¦   «         | 	                    ¦   «         z
  z
  z  }�Œq|S )Nr   ÚfractionÚ	exponent1Ú	exponent2é
   )Úabs)ÚlistÚ
_number_reÚfinditerÚlenÚziprG   r°   Úfloatr!   ÚstartÚend)r~   r“  rž   ÚwantsÚgotsÚoffsetÚwÚgr¢  ÚexponentÚ	precisions              rH   r�  zM_init_checker_class.<locals>.LiteralsOutputChecker._remove_unwanted_precision  sª  € Ý˜œ×1Ò1°$Ñ7Ô7Ñ8Ô8ˆEÝ˜œ×0Ò0°Ñ5Ô5Ñ6Ô6ˆDÝ�5‰zŒz�S ™YœYÒ&Ð&Ø�
ØˆFÝ˜E 4Ñ(Ô(ð Jñ J‘��1Ø*+¯'ª'°*Ñ*=Ô*=�Ø*+¯'ª'°+Ñ*>Ô*>�ØÐ#Ø Ÿwšw {Ñ3Ô3�HØ!)Ð!1˜A˜Aµs¸8±}´}�	ØÐ'Ø¥ X¡¤Ñ.�IÝ˜Ÿš™œÑ#Ô#¥v­e°A·G²G±I´IÑ.>Ô.>ÀBÈÈ
ÁNÐ'SÑ'SÔ'SÒSÐSð
 Ð0˜aŸgšg™iœi¨&Ñ0Ð0Ô1°A·G²G±I´IÑ=ÀÀAÇEÂEÁGÄGÈfÑDTÐDVÐDVÔ@WÑWð ð ˜aŸeše™gœg¨¯ª©	¬	Ñ1°Q·U²U±W´W¸q¿wºw¹y¼yÑ5HÑIÑI�FùØˆJrJ   )r†   r‡   rˆ   ÚcompileÚUNICODEr›  rœ  ÚVERBOSEr¨  rD   r°   r¯   rš  r�  r�   )rŽ   r˜  s   @€rH   ÚLiteralsOutputCheckerr’  É  sâ   øø€ € € € € ð
 !ŸjšjÐ)CÀRÄZÑPÔPÐØŸJšJÐ'AÀ2Ä:ÑNÔNÐØ—Z’Zðð& ŒJñ)
ô 
ˆ
ð.	@ Sð 	@¨sð 	@Àð 	@Èð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð6	°3ð 	¸Sð 	ÀSð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rJ   r¹  )r£   r˜  rµ   r(   )r£   r(   r¹  r˜  s      @rH   Ú_init_checker_classrº  Ä  so   ø€ Ø€N€N€NØ€I€I€IØ1Ð1Ð1Ð1Ð1Ð1ðOð Oð Oð Oð Oð Oð OÐ 6ñ Oô Oð Oðb !Ð rJ   c                  óH   — t           €t          ¦   «         a t          ¦   «         S )aç  Return a IPDoctestOutputChecker 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
      ipdoctest should run in Python 2 and Python 3.

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

    An inner class is used to avoid importing "ipdoctest" at the module
    level.
    )r)   rº  rN   rJ   rH   r
  r
    s   € õ ÐÝ+Ñ-Ô-ˆÝ‰?Œ?ÐrJ   c                  ó*   — ddl }  | j        d¦  «        S )z+Register and return the ALLOW_UNICODE flag.r   Nr,  ©r£   Úregister_optionflagr2  s    rH   r/  r/  1  s   € à€N€N€Nà&ˆ7Ô& Ñ7Ô7Ð7rJ   c                  ó*   — ddl }  | j        d¦  «        S )z)Register and return the ALLOW_BYTES flag.r   Nr-  r½  r2  s    rH   r0  r0  8  s   € à€N€N€Nà&ˆ7Ô& }Ñ5Ô5Ð5rJ   c                  ó*   — ddl }  | j        d¦  «        S )z$Register and return the NUMBER flag.r   Nr.  r½  r2  s    rH   r1  r1  ?  s   € à€N€N€Nà&ˆ7Ô& xÑ0Ô0Ð0rJ   Úkeyc           
      óˆ   — ddl }t          |j        t          |j        t
          |j        t          |j        t          di|          S )z×Return the actual `ipdoctest` module flag value.

    We want to do it as late as possible to avoid importing `ipdoctest` 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)rÁ  r£   s     rH   r  r  F  sH   € ð €N€N€Nõ 	$ WÔ%9Ý# WÔ%9Ý# WÔ%9Ý0°'Ô2SÝ" Aðð 
ôð rJ   ru   )Úscopec                  ó   — t          ¦   «         S )zcFixture that returns a :py:class:`dict` that will be injected into the
    namespace of ipdoctests.)rË   rN   rJ   rH   rÅ   rÅ   W  s   € õ ‰6Œ6€MrJ   r!  r­   )r›   rœ   r+   N)r+   r(   )ir®   rÔ   r¨   rj  rà   rð   rö   r  r²   re  Ú
contextlibr   Úpathlibr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r#  Ú_pytestr   Ú_pytest._code.coder   r   r   Ú_pytest._ior   Ú_pytest.compatr   Ú_pytest.configr   Ú_pytest.config.argparsingr   Ú_pytest.fixturesr   Ú_pytest.nodesr   Ú_pytest.outcomesr   Ú_pytest.pathlibr   r    Ú_pytest.python_apir!   Ú_pytest.warning_typesr"   r£   rË  rÅ  rÇ  rÃ  rÉ  rF   rM   r)   Ú__annotations__rI   rO   ra   r°   r$  r  re   rh   r¯   r[   r^   r\   r{   rd  rŠ   r¶   r¹   ÚItemr»   rD   r3  r:  r>  ÚModulerS   rÜ   Úobjectr[  rl  rR   rÊ   rº  r
  r/  r0  r1  r  ÚfixturerÅ   rN   rJ   rH   ú<module>râ     s�  ðð =Ð <Ð <Ø €€€Ø 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø /Ð /Ð /Ð /Ð /Ð /Ø +Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø !Ð !Ð !Ð !Ð !Ð !Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø +Ð +Ð +Ð +Ð +Ð +Ø #Ð #Ð #Ð #Ð #Ð #Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /àð Ø€N€N€Nà#Ð Ø%Ð Ø%Ð Ø%Ð Ø+?Ð (ð ØØØØ,ðÐ ð €à:>€ˆx˜Ð5Ô6Ô7Ð >Ð >Ñ >ð/˜Vð /¨ð /ð /ð /ð /ðdð ð ð ðØðàðð ˆeÐ:Ô;Ô<ðð ð ð ð" €3€vÔ×Ò Ñ$Ô$ QÔ'Ñ(Ô(¨1Ò,Ð,Ø'€Mð1àð1ð 
�%Ð>Ô?Ô	@ð1ð 1ð 1ð 1ð €Lð1ð 1ð 1ðA�tð A ð Að Að Að Að9˜&ð 9¨ð 9°ið 9ÀDð 9ð 9ð 9ð 9ð&�dð &˜tð &ð &ð &ð &ð
(ð 
(ð 
(ð 
(ð 
(�lñ 
(ô 
(ð 
(ð!ð !ð !ð !ð !˜iñ !ô !ð !ð3˜DÐ!2Ô3ð 3ð 3ð 3ð 3ðn 37Ø"ØØ $ð	ð ØÐ.Ô/ðà�dŒ^ðð ðð ð	ð
 ðð ð ð ð(r%ð r%ð r%ð r%ð r%�F”Kñ r%ô r%ð r%ðj˜$˜s C˜xœ.ð ð ð ð ð ð ð ðð ð ð2Kð 2Kð 2Kð 2Kð 2K˜œñ 2Kô 2Kð 2Kðj=ð =ð =ð =ð�Fð ˜tð ð ð ð ð ð% )Ð,<Ô"=ð %ð %ð %ñ „ð%ð:bKð bKð bKð bKð bK�f”mñ bKô bKð bKðJ -ð °Nð ð ð ð ð V!˜TÐ":Ô;ð V!ð V!ð V!ð V!ðrð ð ð ð(8 ð 8ð 8ð 8ð 8ð6˜sð 6ð 6ð 6ð 6ð1˜#ð 1ð 1ð 1ð 1ð˜Cð  Cð ð ð ð ð" €„�iÐ Ñ Ô ð˜T # s (œ^ð ð ð ñ !Ô ðð ð rJ   