§ |<ˆjieã ó¦—UdZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddl mZddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*ddl)m+Z+ddl,m-Z-ddl,m.Z.ddl/m0Z0ddl/m1Z1dd l2m3Z3dd!l2m4Z4dd"l5m6Z6dd#l7m8Z8dd$l9m:Z:erddl;Z;d%Zd(Z?d)Z@ee?e@fZAdaBdaCeed*eDd+<d,e(d-dfd.„ZEdad/„ZFd0e d1e-d-eed2fd3„ZGd4e d-eHfd5„ZId6e&d4e d1e-d-eHfd7„ZJd4e d-eHfd8„ZKGd9„d:e ¦«ZLGd;„d„ZO dbd@ed*dAeeHdBePdCeHd-d=f dD„ZQGdE„dFe.¦«ZRd-eeSePffdG„ZTdH„ZUdI„ZVGdJ„dKe6¦«ZWdcdN„ZXdOeYd-eHfdP„ZZe d-edQfdR„¦«Z[GdS„dTe6¦«Z\dUeRd-e+fdV„Z]d-ed*fdW„Z^dddX„Z_d-ePfdY„Z`d-ePfdZ„Zad-ePfd[„Zbd\eSd-ePfd]„Zce*d^¬_¦«d-eeSeffd`„¦«ZddS)ez4Discover and run doctests 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)Úfixture)ÚFixtureRequest)Ú Collector)ÚItem)ÚOutcomeException)Úskip©Ú fnmatch_ex)Ú import_path)ÚModule)Úapprox)Ú PytestWarningÚnoneÚcdiffÚndiffÚudiffÚonly_first_failureúdoctest.OutputCheckerÚ CHECKER_CLASSÚparserÚreturncóº—| ddddg¬¦«| ddd¬ ¦«| d ¦«}| d d d dd¬¦«| dtjddt d¬¦«| ddgddd¬¦«| dd d dd¬¦«| dd d d d!¬¦«dS)"NÚdoctest_optionflagszOption flags for doctestsÚargsÚELLIPSIS)ÚtypeÚdefaultÚdoctest_encodingzEncoding used for doctest fileszutf-8)r5Úcollectz--doctest-modulesÚ store_trueFzRun doctests in all .py modulesÚdoctestmodules)Úactionr5ÚhelpÚdestz--doctest-reportr*z9Choose another output format for diffs on doctest failureÚ doctestreport)r4r5r;Úchoicesr<z--doctest-globÚappendÚpatz2Doctests file matching pattern, default: test*.txtÚ doctestglob)r:r5Úmetavarr;r<z--doctest-ignore-import-errorszIgnore doctest ImportErrorsÚdoctest_ignore_import_errorsz--doctest-continue-on-failurezz_is_doctest..™s-øèè€Ð8Ð8¨$�z˜$ Ñ%Ô%Ð8Ð8Ð8Ð8Ð8Ð8rN)r\ÚsessionÚ isinitpathÚ getoptionr^)r[rZrUÚglobss ` rLrbrb•shø€Ø „{Ð&Ð&Ð&¨6¬>×+DÒ+DÀTÑ+JÔ+JÐ&؈tØ × Ò ˜]Ñ +Ô +Ð <° ¨}€EÝ Ð8Ð8Ð8Ð8°%Ð8Ñ8Ô8Ñ 8Ô 8Ð8rNcó—|jdkS)Nz __main__.py)rgrYs rLr`r`œs€Ø Œ9˜ Ò %Ð%rNcóV—eZdZdeeeeefddfd„Zdeddfd„Z dS)ÚReprFailDoctestÚreprlocation_linesr/Ncó—||_dSrP)rv)Úselfrvs rLÚ__init__zReprFailDoctest.__init__¡s€ð#5ˆÔÐÐrNÚtwcó~—|jD]4\}}|D]}| |¦«Œ| |¦«Œ5dSrP)rvÚlineÚ toterminal)rxrzÚ reprlocationÚlinesr|s rLr}zReprFailDoctest.toterminal¦sZ€Ø#'Ô#:ð (ð (Ñ ˆL˜%Øð ð �Ø—’˜‘ ” � � Ø × #Ò # BÑ 'Ô 'Ð 'Ð 'ð (ð (rN) Ú__name__Ú __module__Ú __qualname__r rrrHryrr}rRrNrLruru sn€€€€€ð5Ø"*¨5Ð1AÀ8ÈCÄ=Ð1PÔ+QÔ"Rð5à ð5ð5ð5ð5ð (˜^ð(°ð(ð(ð(ð(ð(ð(rNrucó4‡—eZdZdedddfˆfd„ ZˆxZS)ÚMultipleDoctestFailuresÚfailureszdoctest.DocTestFailurer/NcóV•—t¦« ¦«||_dSrP)Úsuperryr…)rxr…Ú __class__s €rLryz MultipleDoctestFailures.__init__®s$ø€Ý ‰Œ×ÒÑÔÐØ ˆŒ ˆ ˆ rN)r€r�r‚r ryÚ __classcell__©rˆs@rLr„r„­sQø€€€€€ð! Ð*BÔ!Cð!Èð!ð!ð!ð!ð!ð!ð!ð!ð!ð!rNr„údoctest.DocTestRunnercó:‡—ddlŠGˆfd„d‰j¦«}|S)Nrc 󼕇—eZdZdZ ddeddeeded ed df ˆfd „ Zd d ddded dfˆfd„ Z d d ddde e e e e jfd dfˆfd„ ZˆxZS)ú/_init_runner_class..PytestDoctestRunnerzˆRunner to collect failures. Note that the out variable in this case is a list instead of a stdout-like object. NrTÚcheckerr,ÚverboseÚ optionflagsÚcontinue_on_failurer/có^•—t¦« |||¬¦«||_dS)N)r�r�r‘)r‡ryr’)rxr�r�r‘r’rˆs €rLryz8_init_runner_class..PytestDoctestRunner.__init__½s2ø€õ ‰GŒG× Ò  W°gÈ;Ð Ñ WÔ WÐ WØ':ˆDÔ $Ð $Ð $rNÚtestúdoctest.DocTestÚexamplezdoctest.ExampleÚgotcóh•—‰j|||¦«}|jr| |¦«dS|‚rP)ÚDocTestFailurer’r?)rxÚoutr”r–r—ÚfailureÚdoctests €rLÚreport_failurez>_init_runner_class..PytestDoctestRunner.report_failureÇsCø€ð-�gÔ,¨T°7¸CÑ@Ô@ˆGØÔ'ð Ø— ’ ˜7Ñ#Ô#Ð#Ð#Ð#à� rNÚexc_infocó•—t|dt¦«r|d‚t|dtj¦«rt jd¦«‰j|||¦«}|jr| |¦«dS|‚)NézQuitting debugger) Ú isinstancerÚbdbÚBdbQuitrÚexitÚUnexpectedExceptionr’r?)rxršr”r–ržr›rœs €rLÚreport_unexpected_exceptionzK_init_runner_class..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Ñ#Ô#Ð#Ð#Ð#à� rN©NNrT)r€r�r‚Ú__doc__r ÚboolÚintryrHr�rrÚ BaseExceptionÚtypesÚ TracebackTyper¦r‰)rˆrœs@€rLÚPytestDoctestRunnerr޶s5øø€€€€€ð ð ð:>Ø&*Ø Ø(,ð  ;ð ;àÐ5Ô6ð ;ð˜d”^ð ;ðð  ;ð "&ð  ;ð ð  ;ð ;ð ;ð ;ð ;ð ;ð ð$ð ð'ð ð ð ð ð ð ð ð ð ð ð ð$ð ð'ð  ð ˜D Ô/°ÀÔ@SÐSÔTð  ð ð  ð ð ð ð ð ð ð ð ð rNr®)rœÚ DebugRunner)r®rœs @rLÚ_init_runner_classr°³sLø€Ø€N€N€Nð-ð-ð-ð-ð-ð-ð-˜gÔ1ñ-ô-ð-ð^ ÐrNTr�r�r‘r’cóR—t€t¦«at||||¬¦«S)N©r�r�r‘r’)rQr°r²s rLÚ _get_runnerr³ès:€õÐÝ)Ñ+Ô+ˆ õ ØØØØ/ð  ñ ô ðrNc ó‡—eZdZ ddedddeddedd df ˆfd „ Zedddeddddfˆfd „ ¦«Zdd „Zdd „Z dd„Z de e d e eeffˆfd„ Zd ee defeeeffd„ZˆxZS)Ú DoctestItemNrgrUz%Union[DoctestTextfile, DoctestModule]Úrunnerr‹Údtestr•r/có„•—t¦« ||¦«||_||_d|_d|_dSrP)r‡ryr¶r·ÚobjÚfixture_request)rxrgrUr¶r·rˆs €rLryzDoctestItem.__init__ýsBø€õ ‰Œ×Ò˜˜vÑ&Ô&Ð&؈Œ ؈Œ ؈ŒØ9=ˆÔÐÐrNcóN•—t¦« ||||¬¦«S)zThe public named constructor.)rgrUr¶r·)r‡ra)ÚclsrUrgr¶r·rˆs €rLrazDoctestItem.from_parent s'ø€õ‰wŒw×"Ò"¨°VÀFÐRWÐ"ÑXÔXÐXrNcó —|j�†t|¦«|_t|jj¬¦«}|j d¦« ¦«D] \}}|||<Œ |jj |¦«dSdS)N)Ú getfixtureÚdoctest_namespace)r·Ú_setup_fixturesrºÚdictÚgetfixturevalueÚitemsrrÚupdate)rxrrrgÚvalues rLÚsetupzDoctestItem.setups–€Ø Œ:Ð !Ý#2°4Ñ#8Ô#8ˆDÔ Ý DÔ$8Ô$HÐIÑIÔIˆEØ#Ô3×CÒCØ#ñ ô çŠe‰gŒgð $ð $‘ ��eð$��d‘ � Ø ŒJÔ × #Ò # EÑ *Ô *Ð *Ð *Ð *ð "Ð !rNcóâ—|j€J‚|j€J‚t|j¦«| ¦«g}|j |j|¬¦«|rt |¦«‚dS)N)rš)r·r¶Ú_check_all_skippedÚ$_disable_output_capturing_for_darwinÚrunr„)rxr…s rLÚruntestzDoctestItem.runtest!s�€ØŒzÐ%Ð%Ð%ØŒ{Ð&Ð&Ð&ݘ4œ:Ñ&Ô&Ð&Ø ×1Ò1Ñ3Ô3Ð3Ø35ˆð Œ �Š˜œ ¨ˆÑ1Ô1Ð1Ø ð 4Ý)¨(Ñ3Ô3Ð 3ð 4ð 4rNcóT—tj¦«dkrdS|jj d¦«}|rm| d¬¦«| ¦«\}}tj  |¦«tj   |¦«dSdS)zFDisable output capturing. Otherwise, stdout is lost to doctest (#985).ÚDarwinNÚcapturemanagerT)Úin_) ÚplatformÚsystemr[Ú pluginmanagerÚ getpluginÚsuspend_global_captureÚread_global_captureÚsysÚstdoutÚwriteÚstderr)rxÚcapmanršÚerrs rLrÉz0DoctestItem._disable_output_capturing_for_darwin-s£€å Œ?Ñ Ô  Ò (Ð (Ø ˆFØ”Ô*×4Ò4Ð5EÑFÔFˆØ ð "Ø × )Ò )¨dÐ )Ñ 3Ô 3Ð 3Ø×1Ò1Ñ3Ô3‰HˆC�Ý ŒJ× Ò ˜SÑ !Ô !Ð !Ý ŒJ× Ò ˜SÑ !Ô !Ð !Ð !Ð !ð  "ð "rNÚexcinfoc󕇗ddl}d}t|j|j|jf¦«r |jg}n&t|jt ¦«r |jj}|€!t¦« |¦«Sg}|D�]û}|j }|j Љj }‰j €d}n‰j |j zdz}t|¦«j} t||| ¦«} t!¦«} t#|j d¦«¦«} |�z|j j€J‚|j j d¦«} ‰j €J‚ˆfd„t-| ¦«D¦«} | t/|j dz d¦«|j dz…} n>dg} d}|j ¦«D]}|  d |›d |›�¦«d }Œ t||j¦«r3| |  ||j| ¦« d ¦«z } nTt;j|j¦«}| d tA|j¦«zgz } | d„tCj"|jŽD¦«z } | | | f¦«�ŒýtG|¦«S)Nrr r=Fcó:•—g|]\}}d|‰jzdz|fz‘ŒS)z%03d %sr )Úlineno)rlÚiÚxr”s €rLú z,DoctestItem.repr_failure.._s?ø€ðððÙ=C¸aÀ�I  T¤[¡°1Ñ!4°aÐ 8Ñ8ðððrNé z?EXAMPLE LOCATION UNKNOWN, not showing all tests of that examplez>>>z??? ú z...ú zUNEXPECTED EXCEPTION: %scó8—g|]}| d¦«‘ŒS)rå)Ústrip)rlrás rLrâz,DoctestItem.repr_failure..ss/€ðððØ&'�A—G’G˜D‘M”MðððrN)$rœr¡rÅr™r¥r„r…r‡Ú repr_failurer–r”Úfilenamerßr4r€rÚ _get_checkerÚ_get_report_choicer[rqÚ docstringÚ splitlinesÚ enumerateÚmaxÚsourcer?Úoutput_differencer—ÚsplitrÚ from_exc_inforžÚreprÚ tracebackÚformat_exceptionru)rxrÜrœr…rvr›r–rérßÚmessager~r�Ú report_choicerÚindentr|Ú inner_excinfor”rˆs @€rLrèzDoctestItem.repr_failure9sæøø€ð ˆˆˆð ð õ Ø Œ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À_Ñ/UÔ/UÑVÔVˆ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Ôð >àð >ð8ð >ðÐ0Ô1ð >ð Ð)Ô*ð >ð ð >ð >ð >ð >ð >ð >ðð Yà7ð Yðð Yð (ð Yð !ð Yð Yð Yð Yð Yñ„[ð Yð+ð+ð+ð+ð 4ð 4ð 4ð 4ð "ð "ð "ð "ð>3à˜}Ô-ð>3ð ˆs�LÐ Ô !ð>3ð>3ð>3ð>3ð>3ð>3ð@H˜E %Ð(:¸CÐ(?Ô"@À(È3Ä-ÐQTÐ"TÔUðHðHðHðHðHðHðHðHrNrµc ó¾—ddl}t|j|j|j|j|j|jt¦«t¦«t¦«¬¦ « S)Nr) ÚDONT_ACCEPT_TRUE_FOR_1ÚDONT_ACCEPT_BLANKLINEÚNORMALIZE_WHITESPACEr3ÚIGNORE_EXCEPTION_DETAILÚCOMPARISON_FLAGSÚ ALLOW_UNICODEÚ ALLOW_BYTESÚNUMBER) rœrÁrrrr3rrÚ_get_allow_unicode_flagÚ_get_allow_bytes_flagÚ_get_number_flag©rœs rLÚ_get_flag_lookupr ~sa€Ø€N€N€Nå Ø&Ô=Ø%Ô;Ø$Ô9ØÔ!Ø 'Ô ?Ø Ô1Ý-Ñ/Ô/Ý)Ñ+Ô+ÝÑ!Ô!ð ñ ô ð rNcóz—|j d¦«}t¦«}d}|D] }|||z}Œ|S)Nr1r)r[Úgetinir )rUÚoptionflags_strÚflag_lookup_tableÚflag_accÚflags rLÚget_optionflagsrŽsO€Ø”m×*Ò*Ð+@ÑAÔA€OÝ(Ñ*Ô*ÐØ€HØð,ð,ˆØÐ% dÔ+Ñ+ˆˆØ €OrNcób—| d¦«}|r| d¦«rd}|S)NrDÚusepdbF)Úgetvalue)r[r’s rLÚ_get_continue_on_failurer—s?€Ø Ÿ/š/Ð*GÑHÔHÐØð(ð �?Š?˜8Ñ $Ô $ð (Ø"'Ð Ø ÐrNcó*—eZdZdZdeefd„ZdS)rWNr/c#óîK—ddl}|j d¦«}|j |¦«}t |j¦«}|jj}ddi}t|¦«}td|t¦«t|j¦«¬¦«}|j ¦«} |   ||||d¦«} | j r't || j|| ¬¦«V—dSdS)Nrr6r€Ú__main__F©r�r‘r�r’©rgr¶r·)rœr[rrZÚ read_textrHrgrr³rêrÚ DocTestParserÚ get_doctestÚexamplesrµra) rxrœÚencodingÚtextrérgrrr‘r¶r.r”s rLr7zDoctestTextfile.collect¤sèè€Øˆˆˆð”;×%Ò%Ð&8Ñ9Ô9ˆØŒy×"Ò" 8Ñ,Ô,ˆÝ�t”y‘>”>ˆØŒyŒ~ˆØ˜ZÐ(ˆå% dÑ+Ô+ˆ 娨#Ý ‘N”NÝ 8¸¼Ñ EÔ Eð  ñ ô ˆð'�Ô&Ñ(Ô(ˆØ×!Ò! $¨¨t°X¸qÑAÔAˆØ Œ=ð Ý×)Ò)ؘ4œ9¨V¸4ð*ñôð ð ð ð ð ð ð rN)r€r�r‚r¹r rµr7rRrNrLrWrW¡s9€€€€€Ø €Cð˜ +Ô.ððððððrNrWr”r•cóv‡—ddlŠtˆfd„|jD¦«¦«}|rtd¦«dSdS)zVRaise pytest.skip() if all examples in the given DocTest have the SKIP option set.rNc3óX•K—|]$}|j ‰jd¦«V—Œ%dS)FN)ÚoptionsÚgetÚSKIP)rlrárœs €rLrnz%_check_all_skipped..Ås5øèè€ÐPÐP¸Q�a”i—m’m G¤L°%Ñ8Ô8ÐPÐPÐPÐPÐPÐPrNz!all tests skipped by +SKIP option)rœÚallr r )r”Ú all_skippedrœs @rLrÈrÈÀsYø€ð€N€N€NåÐPÐPÐPÐPÀ$Ä-ÐPÑPÔPÑPÔP€KØð2Ý Ð 0Ñ1Ô1Ð1Ð1Ð1ð2ð2rNr¹có(—t|dd¦«duS)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 rLÚ _is_mockedr,Ês!€õ �SÐMÈtÑTÔTØð ðrN)NNNc#ó‡K—tjŠddœdtdtfdtttgtfdtfˆfd„}|t_ dV—‰t_dS#‰t_wxYw)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óÒ•‡‡— |� |tur‰‰t¬¦«S|Љ‰ˆˆfd„¬¦«S#t$r'}tjd|›d‰›d�t¦«‚d}~wwxYw)Nr.có8•—t|¦«p ‰‰¦«SrP)r,)r¹Ú_stopr0s €€rLúzF_patch_unwrap_mock_aware.._mock_aware_unwrap..àsø€µjÀ±o´oÐ6TÈÈÈtÉÌ€rNzGot 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&)r0r/Úer3Ú real_unwraps` @€rLÚ_mock_aware_unwrapz4_patch_unwrap_mock_aware.._mock_aware_unwrapÙs«øøø€ð ؈|˜t¥zÐ1Ð1Ø"�{ 4­jÐ9Ñ9Ô9Ð9؈EØ�;˜tÐ*TÐ*TÐ*TÐ*TÐ*TÐUÑUÔUÐ UøÝð ð ð Ý ŒMˆMðGHÀaÀaÈÈÈðOõñ  ô ð ð øøøøð øøøs…5¢5µ A&¿"A!Á!A&)ÚinspectÚunwraprrr )r:r9s @rLÚ_patch_unwrap_mock_awarer=Ós¥øèè€õ”.€KðMQðððÝ�s�C�xÔ ðÝ+3µH½c¸UÅC¸ZÔ4HÔ+Iðå ððððððð"(…G„Nð%Ø ˆˆˆà$�Œˆˆø˜�ŒÐ$Ð$Ð$Ð$s Á&A8Á8Bcó&—eZdZdeefd„ZdS)rVr/c#óK—ddl}Gd„d|j¦«}|jjdkrJ|jj |j|j d¦«|jj¬¦«}n~ t|j|jj|j d¦«¬¦«}nC#t$r6|j  d¦«rtd |jz¦«n‚YnwxYw|¦«}t|¦«}td |t¦«t!|j¦«¬ ¦«}| ||j¦«D].}|jr%t( ||j||¬ ¦«V—Œ/dS) Nrcó2‡—eZdZdZˆfd„Z dˆfd„ ZˆxZS)ú5DoctestModule.collect..MockAwareDocTestFinderzÇA hackish doctest 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¦«rt|d|¦«}t|d¦«rt j|¦«}t ¦« ||¦«S)a3Doctest 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¡ÚpropertyÚgetattrÚhasattrr;r<r‡Ú _find_lineno)rxr¹Ú source_linesrˆs €rLrHzBDoctestModule.collect..MockAwareDocTestFinder._find_linenoüsmø€õ˜c¥8Ñ,Ô,ð4Ý! # v¨sÑ3Ô3�Cå˜3  Ñ.Ô.ð.å!œ.¨Ñ-Ô-�Cõ‘w”w×+Ò+ØØ ñôðrNr/Nc óÆ•—t|¦«rdSt¦«5t¦« |||||||¦«ddd¦«dS#1swxYwYdSrP)r,r=r‡Ú_find) rxÚtestsr¹rgÚmodulerIrrÚseenrˆs €rLrKz;DoctestModule.collect..MockAwareDocTestFinder._finds±ø€õ˜c‘?”?ðØ�FÝ-Ñ/Ô/ððå‘G”G—M’Mؘs D¨&°,ÀÀtñôððððñôðððððððøøøððððððs¡(AÁAÁArý)r€r�r‚r¨rHrKr‰rŠs@rLÚMockAwareDocTestFinderrAõshø€€€€€ð ð ð  ð ð ð ð ð( àð ð ð ð ð ð ð ð ð ð rNrOz conftest.pyÚ importmode)Úrootpath)ÚrootÚmoderCzunable to import module %rFrr)rœÚ DocTestFinderrZrgr[rÒÚ_importconftestrqrQr#Ú ImportErrorrr rr³rêrÚfindr€r rµra)rxrœrOrMÚfinderr‘r¶r”s rLr7zDoctestModule.collectòsØèè€Øˆˆˆð$ ð$ ð$ ð$ ð$  WÔ%:ñ$ ô$ ð$ ðL Œ9Œ>˜]Ò *Ð *Ø”[Ô.×>Ò>Ø” Ø” ×%Ò% lÑ3Ô3ØœÔ-ð?ñôˆFˆFð Ý$Ø”IØœÔ-Øœ×.Ò.¨|Ñ<Ô<ðñô��øõ ð ð ð Ø”;×'Ò'Ð(FÑGÔGðÝÐ5¸¼ ÑAÑBÔBÐBÐBàðCÐBð øøøð (Ð'Ñ)Ô)ˆÝ% dÑ+Ô+ˆ ÝØØ#Ý ‘N”NÝ 8¸¼Ñ EÔ Eð  ñ ô ˆð—K’K ¨¬Ñ8Ô8ð ð ˆDØŒ}ð Ý!×-Ò-ؘtœy°¸tð.ñôðððøð ð sÁ59B/Â/=C/Ã.C/N)r€r�r‚r rµr7rRrNrLrVrVñs;€€€€€ðI˜ +Ô.ðIðIðIðIðIðIrNrVÚ doctest_itemcóº—dd„}i|_|jj}| ||dd¬¦«|_t |d¬¦«}| ¦«|S) zEUsed by DoctestTextfile and DoctestItem to setup fixture information.r/Ncó—dSrPrRrRrNrLr0z_setup_fixtures..funcAs€Ø ˆrNF)Únoder0r¼ÚfuncargsT)Ú _ispytestrý)r]roÚ_fixturemanagerÚgetfixtureinfoÚ _fixtureinforÚ _fillfixtures)rYr0Úfmrºs rLrÀrÀ>s}€ð ð ð ð ð€LÔØ Ô Ô -€BØ "× 1Ò 1Ø  ¨$¸ð!2ñ!ô!€LÔõ% \¸TÐBÑBÔB€OØ×!Ò!Ñ#Ô#Ð#Ø ÐrNcóB‡—ddl}ddlŠGˆfd„d|j¦«}|S)Nrcóꕇ—eZdZ” d”j¦«Z” d”j¦«Z” d”j¦«Zde de de de fˆˆfd„ Z de de de fd „Z ˆxZS) ú2_init_checker_class..LiteralsOutputCheckerz(\W|^)[uU]([rR]?[\'\"])z(\W|^)[bB]([rR]?[\'\"])aÍ (?P (?P (?P [+-]?\d*)\.(?P\d+) | (?P [+-]?\d+)\. ) (?: [Ee] (?P [+-]?\d+) )? | (?P [+-]?\d+) (?: [Ee] (?P [+-]?\d+) ) ) Úwantr—r‘r/có•—t¦« |||¦«rdS|t¦«z}|t¦«z}|t ¦«z}|s|s|sdSdt t dt dt fˆ fd„ }|r"||j|¦«}||j|¦«}|r"||j|¦«}||j|¦«}|r|  ||¦«}t¦« |||¦«S)NTFÚregexrdr/có2•—‰ |d|¦«S)Nz\1\2)Úsub)rirdÚres €rLÚremove_prefixeszX_init_checker_class..LiteralsOutputChecker.check_output..remove_prefixes{sø€Ø—v’v˜e W¨cÑ2Ô2Ð2rN) r‡Ú check_outputrr r r rHÚ_unicode_literal_reÚ_bytes_literal_reÚ_remove_unwanted_precision) rxrgr—r‘Ú allow_unicodeÚ allow_bytesÚ allow_numberrmrˆrls €€rLrnz?_init_checker_class..LiteralsOutputChecker.check_outputpsIø€Ý‰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°;Ñ?Ô?Ð ?rNcóì—t|j |¦«¦«}t|j |¦«¦«}t|¦«t|¦«kr|Sd}t ||¦«D�]o\}}| d¦«}| d¦«} | €| d¦«} |€dnt|¦«} | �| t | ¦«z} t| ¦«¦«tt| ¦«¦«d| z¬¦«krª|d|  ¦«|z…| ¦«z||  ¦«|zd…z}||  ¦«|  ¦«z |  ¦«|  ¦«z z z }�Œq|S)NrÚfractionÚ exponent1Ú exponent2é )Úabs) ÚlistÚ _number_reÚfinditerÚlenÚziprKrªÚfloatr%ÚstartÚend) rxrgr—ÚwantsÚgotsÚoffsetÚwÚgrvÚexponentÚ precisions rLrqzM_init_checker_class..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ù؈JrN)r€r�r‚ÚcompileÚUNICODErorpÚVERBOSEr|rHrªr©rnrqr‰)rˆrls@€rLÚLiteralsOutputCheckerrfRsâøø€€€€€ð !ŸjšjÐ)CÀRÄZÑPÔPÐØŸJšJÐ'AÀ2Ä:ÑNÔNÐØ—Z’Zð ð& ŒJñ) ô ˆ ð. @ Sð @¨sð @Àð @Èð @ð @ð @ð @ð @ð @ð @ð6 °3ð ¸Sð ÀSð ð ð ð ð ð ð ð rNr�)rœrlÚ OutputChecker)rœr�rls @rLÚ_init_checker_classr�Ns_ø€Ø€N€N€NØ €I€I€IðOðOðOðOðOðOðO Ô 5ñOôOðOðb !Ð rNcóH—t€t¦«at¦«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�rRrNrLrêrê¦s€õÐÝ+Ñ-Ô-ˆ Ý ‰?Œ?ÐrNcó*—ddl}|jd¦«S)z+Register and return the ALLOW_UNICODE flag.rNr©rœÚregister_optionflagr s rLrrºs€à€N€N€Nà &ˆ7Ô & Ñ 7Ô 7Ð7rNcó*—ddl}|jd¦«S)z)Register and return the ALLOW_BYTES flag.rNrr’r s rLr r Ás€à€N€N€Nà &ˆ7Ô & }Ñ 5Ô 5Ð5rNcó*—ddl}|jd¦«S)z$Register and return the NUMBER flag.rNrr’r s rLr r Ès€à€N€N€Nà &ˆ7Ô & xÑ 0Ô 0Ð0rNÚkeyc óˆ—ddl}t|jt|jt |jt|jtdi|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. rN) 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 rLrërëÏsH€ð €N€N€Nõ $ WÔ%9Ý# WÔ%9Ý# WÔ%9Ý0°'Ô2SÝ" Að  ð  ô  ð rNro)Ú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ÁrRrNrLr¿r¿às €õ ‰6Œ6€MrNrýr§)r”r•r/N)r/r,)er¨r¢r;ÚosrÐrÖrõr¬r6Ú contextlibrÚpathlibrÚtypingrrrrr r r r r rrrrÚ_pytestrÚ_pytest._code.coderrrÚ _pytest._iorÚ_pytest.compatrÚ_pytest.configrÚ_pytest.config.argparsingrÚ_pytest.fixturesrrÚ _pytest.nodesrrÚ_pytest.outcomesrr Ú_pytest.pathlibr"r#Ú_pytest.pythonr$Ú_pytest.python_apir%Ú_pytest.warning_typesr&rœr ršrœr˜ržrJrQr-Ú__annotations__rMrSrer©r_rbr`rur5r„r°rªr³rµrHr rrrWrÈÚobjectr,r=rVrÀr�rêrr r rër¿rRrNrLúr¶s9ðØ:Ð:Ð:Ø € € € Ø€€€Ø € € € Ø€€€Ø € € € ØÐÐÐØ € € € Ø€€€Ø%Ð%Ð%Ð%Ð%Ð%ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð ØÐÐÐÐÐàÐÐÐÐÐØ,Ð,Ð,Ð,Ð,Ð,Ø/Ð/Ð/Ð/Ð/Ð/Ø+Ð+Ð+Ð+Ð+Ð+Ø&Ð&Ð&Ð&Ð&Ð&Ø'Ð'Ð'Ð'Ð'Ð'Ø!Ð!Ð!Ð!Ð!Ð!Ø,Ð,Ð,Ð,Ð,Ð,Ø$Ð$Ð$Ð$Ð$Ð$Ø+Ð+Ð+Ð+Ð+Ð+Ø#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐØ-Ð-Ð-Ð-Ð-Ð-Ø!Ð!Ð!Ð!Ð!Ð!Ø&Ð&Ð&Ð&Ð&Ð&Ø'Ð'Ð'Ð'Ð'Ð'Ø!Ð!Ð!Ð!Ð!Ð!Ø%Ð%Ð%Ð%Ð%Ð%Ø/Ð/Ð/Ð/Ð/Ð/àðØ€N€N€Nà#ÐØ%ÐØ%ÐØ%ÐØ+?Ð(ðØØØØ,ð Ðð€ à9=€ ˆx˜Ð4Ô5Ô6Ð=Ð=Ñ=ð/˜Vð/¨ð/ð/ð/ð/ðdðððð Øðà ððˆeÐ6Ô7Ô8ððððð"A�tðA ðAðAðAðAð9˜ð9 dð9°Ið9À$ð9ð9ð9ð9ð&�dð&˜tð&ð&ð&ð&ð (ð (ð (ð (ð (�lñ (ô (ð (ð!ð!ð!ð!ð!˜iñ!ô!ð!ð 2˜DÐ!8Ô9ð2ð2ð2ð2ðl26Ø"ØØ $ð ðØ Ð-Ô .ðà �dŒ^ððððð ð ð ðððð(HðHðHðHðH�$ñHôHðHðD ˜$˜s C˜xœ.ð ð ð ð ð ðððððððððð�fñôðð>2ð2ð2ð2ð�Fð˜tðððððð% )Ð,<Ô"=ð%ð%ð%ñ„ð%ð:JðJðJðJðJ�FñJôJðJðZ  +ð °.ð ð ð ð ð U!˜TÐ"9Ô:ðU!ðU!ðU!ðU!ðpðððð(8 ð8ð8ð8ð8ð6˜sð6ð6ð6ð6ð1˜#ð1ð1ð1ð1ð ˜Cð  Cð ð ð ð ð" €ˆyÐÑÔð˜4  S œ>ðððñÔðððrN