§ |<ˆj±‡ã ó —dZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl%m'Z'ddl(m)Z)ddl(m*Z*ddl(m+Z+erddl,m-Z-dd l,m.Z.e.d!Z/d"e"d#dfd$„Z0d\d%„Z1d&ed#dfd'„Z2e d(¬)¦«d*efd+„¦«Z3Gd,„d-ej4¦«Z5Gd.„d/ej4¦«Z6Gd0„d1e6¦«Z7Gd2„d3e¦«Z8Gd4„d5ej9ee¦«Z:d6d7d8d9œZ;Gd:„d;e:e<¦«Z=Gd<„d=e:e¦«Z>Gd>„d?e>e?¦«Z@Gd@„dAe>e<¦«ZAGdB„dCe:e¦«ZBGdD„dEeBe?¦«ZCGdF„dGeBe<¦«ZDejEdHksereGdI„dJeee¦«¦«ZFn&GdK„dJejGdJdLdMg¦«ee¦«ZFGdN„dOee¦«ZHdPdQd#eHe<fdR„ZIGdS„dT¦«ZJGdU„dVee¦«ZKe&dWe'd#eeKe<ddffdX„¦«ZLe&dWe'd#eeKe?ddffdY„¦«ZMe&dWe'd#eeKe<ddffdZ„¦«ZNe&dWe'd#eeKe?ddffd[„¦«ZOdS)]z+Per-test stdout/stderr capturing mechanism.éN©ÚUnsupportedOperation)Ú TemporaryFile)Ú TracebackType)ÚAny)ÚAnyStr)ÚBinaryIO)Ú Generator)ÚGeneric)ÚIterable)ÚIterator)ÚList)Ú NamedTuple)ÚOptional)ÚTextIO)ÚTuple)ÚType)Ú TYPE_CHECKING)ÚUnion)Úfinal)ÚConfig)Úhookimpl)ÚParser)Úcheck_ispytest)Úfixture)Ú SubRequest)Ú Collector)ÚFile)ÚItem)ÚFinal)ÚLiteral©ÚfdÚsysÚnoútee-sysÚparserÚreturncóž—| d¦«}| ddddgd¢d¬¦«| d d d d d ¬¦«dS)NÚgeneralz --captureÚstorer#Úmethodr"z3Per-test capturing method: one of fd|sys|no|tee-sys)ÚactionÚdefaultÚmetavarÚchoicesÚhelpz-sÚ store_constr%ÚcapturezShortcut for --capture=no)r-ÚconstÚdestr1)ÚgetgroupÚ _addoption)r'Úgroups úa/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/_pytest/capture.pyÚpytest_addoptionr:-s€€Ø �OŠO˜IÑ &Ô &€EØ ×ÒØØØØØ.Ð.Ð.Ø Bð ñôðð ×ÒØ ØØØ Ø (ð ñôðððócót—tj d¦«r ddl}dS#t$rYdSwxYwdS)a Ensure colorama is imported so that it attaches to the correct stdio handles on Windows. colorama uses the terminal on import time. So if something does the first import of colorama while I/O capture is active, colorama will fail in various ways. Úwin32rN)r$ÚplatformÚ startswithÚcoloramaÚ ImportError)r@s r9Ú_colorama_workaroundrB@sZ€õ „|×Ò˜wÑ'Ô'ðð Ø ˆOˆOˆOˆOˆOøÝð ð ð Ø ˆDˆDð øøøððs ¡'§ 5´5Ústreamcótj d¦«rttd¦«rdSt|d¦«sdSt|jd¦«Š‰r |jjn|j}t |tj¦«sdSˆfd„}|tj d¦«t_ |tj d¦«t_ |tj d¦«t_ dS) aùWorkaround for Windows Unicode console handling. Python 3.6 implemented Unicode console handling for Windows. This works by reading/writing to the raw console handle using ``{Read,Write}ConsoleW``. The problem is that we are going to ``dup2`` over the stdio file descriptors when doing ``FDCapture`` and this will ``CloseHandle`` the handles used by Python to write to the console. Though there is still some weirdness and the console handle seems to only be closed randomly and not on the first call to ``CloseHandle``, or maybe it gets reopened with the same handle value when we suspend capturing. The workaround in this case will reopen stdio with a different fd which also means a different handle by replicating the logic in "Py_lifecycle.c:initstdio/create_stdio". :param stream: In practice ``sys.stdout`` or ``sys.stderr``, but given here as parameter for unittesting purposes. See https://github.com/pytest-dev/py/issues/103. r=Úpypy_version_infoNÚbufferÚrawcóè•—‰s|ddkrd}nd}tjttj| ¦«¦«||¦«|j|j|j|j ¦«S)NrÚwéÿÿÿÿ) ÚioÚ TextIOWrapperÚopenÚosÚdupÚfilenoÚencodingÚerrorsÚnewlinesÚline_buffering)ÚfÚmodeÚ bufferingÚbuffereds €r9Ú _reopen_stdioz3_windowsconsoleio_workaround.._reopen_stdiotsnø€Øð ˜D œG sšN˜N؈IˆIàˆIåÔÝ •”˜Ÿš™ œ Ñ#Ô# T¨9Ñ 5Ô 5Ø ŒJØ ŒHØ ŒJØ Ô ñ  ô ð r;ÚrbÚwb) r$r>r?ÚhasattrrFrGÚ isinstancerKÚ_WindowsConsoleIOÚstdinÚstdoutÚstderr)rCÚ raw_stdoutrYrXs @r9Ú_windowsconsoleio_workaroundrcOsìø€õ0 Œ<× "Ò " 7Ñ +Ô +ð­wµsЀݘ$œ+¥r¤zÑ2Ô2Ð2Ð2Ð2ØŒ{×#Ò#Ñ%Ô%×,Ò,¨WÑ5Ô5Ð5r;©r(N)r‡rˆr‰r”rŒr˜Ú __classcell__©r–s@r9rŽrޱs^ø€€€€€ðYðYðYðYðYðYð6˜#ð6ð6ð6ð6ð6ð6ð6ð6r;rŽcó<‡—eZdZdeddfˆfd„ Zdedefˆfd„ ZˆxZS)Ú TeeCaptureIOÚotherr(NcóV•—||_t¦« ¦«dSr~)Ú_otherr“r”)r�rŸr–s €r9r”zTeeCaptureIO.__init__»s&ø€ØˆŒ Ý ‰Œ×ÒÑÔÐÐÐr;Úscóz•—t¦« |¦«|j |¦«Sr~)r“rsr¡)r�r¢r–s €r9rszTeeCaptureIO.write¿s/ø€Ý ‰Œ� Š �aÑÔÐØŒ{× Ò  Ñ#Ô#Ð#r;) r‡rˆr‰rr”rŒÚintrsr›rœs@r9ržržºswø€€€€€ð˜fð¨ððððððð$�sð$˜sð$ð$ð$ð$ð$ð$ð$ð$ð$ð$r;ržcó²—eZdZedefd„¦«Zd"dedefd„ZeZdefd„Z d"de ede efd„Z de efd „Zdefd „Zd#d „Zdefd „Zd#d„Zdefd„Zd$dededefd„Zdefd„Zdefd„Zd%de edefd„Zdedefd„Zdeedd fd„Zdefd„Zd&d„Zde eede ede e dd fd „Z!ede"fd!„¦«Z#d S)'ÚDontReadFromInputr(có$—tjjSr~)r$Ú __stdin__rQr€s r9rQzDontReadFromInput.encodingÅs €åŒ}Ô%Ð%r;rJÚsizecó —td¦«‚©NzJpytest: reading from stdin while output is captured! Consider using `-s`.©ÚOSError©r�r©s r9ÚreadzDontReadFromInput.readÉó€ÝØ Xñ ô ð r;có*—| ¦«Sr~)Úreadliner€s r9Ú__next__zDontReadFromInput.__next__Ðs€Ø�}Š}‰ŒÐr;Úhintcó —td¦«‚r«r¬)r�r´s r9Ú readlineszDontReadFromInput.readlinesÓr°r;có—|Sr~r|r€s r9Ú__iter__zDontReadFromInput.__iter__Øó€Øˆ r;có —td¦«‚)Nz/redirected stdin is pseudofile, has no fileno()rr€s r9rPzDontReadFromInput.filenoÛs€Ý"Ð#TÑUÔUÐUr;Ncó —td¦«‚)Nz.redirected stdin is pseudofile, has no flush()rr€s r9ÚflushzDontReadFromInput.flushÞs€Ý"Ð#SÑTÔTÐTr;có—dS©NFr|r€s r9ÚisattyzDontReadFromInput.isattyáó€Øˆur;có—dSr~r|r€s r9ÚclosezDontReadFromInput.closeäó€Ø ˆr;có—dSr¾r|r€s r9ÚreadablezDontReadFromInput.readableçrÀr;rÚoffsetÚwhencecó —td¦«‚)Nz0redirected stdin is pseudofile, has no seek(int)r)r�rÆrÇs r9ÚseekzDontReadFromInput.seekês€Ý"Ð#UÑVÔVÐVr;có—dSr¾r|r€s r9ÚseekablezDontReadFromInput.seekableírÀr;có —td¦«‚)Nz-redirected stdin is pseudofile, has no tell()rr€s r9ÚtellzDontReadFromInput.tellðs€Ý"Ð#RÑSÔSÐSr;có —td¦«‚)Nzcannot truncate stdinrr®s r9ÚtruncatezDontReadFromInput.truncateóó€Ý"Ð#:Ñ;Ô;Ð;r;Údatacó —td¦«‚)Nzcannot write to stdinr©r�rÑs r9rszDontReadFromInput.writeörÐr;Úlinescó —td¦«‚)NzCannot write to stdinr)r�rÔs r9Ú writelineszDontReadFromInput.writelinesùrÐr;có—dSr¾r|r€s r9ÚwritablezDontReadFromInput.writableürÀr;có—|Sr~r|r€s r9Ú __enter__zDontReadFromInput.__enter__ÿr¹r;ÚtypeÚvalueÚ tracebackcó—dSr~r|)r�rÛrÜrÝs r9Ú__exit__zDontReadFromInput.__exit__s €ð ˆr;có—|Sr~r|r€s r9rFzDontReadFromInput.buffer s €ðˆ r;)rJrš)rr~)r(r¦)$r‡rˆr‰r‹rŒrQr¤r¯r²r³rrr¶r r¸rPr¼Úboolr¿rÂrÅrÉrËrÍrÏrsr rÖrØrÚrÚ BaseExceptionrrßr rFr|r;r9r¦r¦ÄsÚ€€€€€Ø ð&˜#ð&ð&ð&ñ„Xð&ð ð ˜ð  cð ð ð ð ð €Hð˜#ððððð ð ˜h sœmð °T¸#´Yð ð ð ð ð ˜( 3œ-ðððððV˜ðVðVðVðVðUðUðUðUð˜ððððð ð ð ð ð˜$ðððððWðW˜3ðW¨ðW°CðWðWðWðWð˜$ðððððT�cðTðTðTðTð<ð<˜X cœ]ð<°cð<ð<ð<ð<ð<˜#ð< #ð<ð<ð<ð<ð< ¨¤ ð<°$ð<ð<ð<ð<ð˜$ððððððððð à�t˜MÔ*Ô+ð ð˜ Ô&ð ð˜MÔ*ð  ð ð  ð ð ð ðð˜ðððñ„Xðððr;r¦có—eZdZUeed<ejdeddfd„¦«Zejd d„¦«Z ejd d„¦«Z ejd d„¦«Z ejd d „¦«Z ejd eddfd „¦«Z ejdefd „¦«ZdS)Ú CaptureBaseÚ EMPTY_BUFFERr#r(Ncó—t¦«‚r~©ÚNotImplementedError©r�r#s r9r”zCaptureBase.__init__ó€å!Ñ#Ô#Ð#r;có—t¦«‚r~rçr€s r9ÚstartzCaptureBase.startrêr;có—t¦«‚r~rçr€s r9ÚdonezCaptureBase.donerêr;có—t¦«‚r~rçr€s r9ÚsuspendzCaptureBase.suspend"rêr;có—t¦«‚r~rçr€s r9ÚresumezCaptureBase.resume&rêr;rÑcó—t¦«‚r~rçrÓs r9ÚwriteorgzCaptureBase.writeorg*rêr;có—t¦«‚r~rçr€s r9ÚsnapzCaptureBase.snap.rêr;rš)r‡rˆr‰rÚ__annotations__ÚabcÚabstractmethodr¤r”rìrîrðròrôrör|r;r9räräs?€€€€€€ØÐÐÑàÔð$˜3ð$ 4ð$ð$ð$ñÔð$ð Ôð$ð$ð$ñÔð$ð Ôð$ð$ð$ñÔð$ð Ôð$ð$ð$ñÔð$ð Ôð$ð$ð$ñÔð$ð Ôð$˜Vð$¨ð$ð$ð$ñÔð$ð Ôð$�fð$ð$ð$ñÔð$ð$ð$r;rär_r`ra)réécó^—eZdZdZdeddfd„Zd d„Zd d„Zd d„Zd d „Z de fd „Z d e ddfd „Z dS)Ú NoCapturer…r#r(Ncó—dSr~r|rés r9r”zNoCapture.__init__9rÃr;có—dSr~r|r€s r9rìzNoCapture.start<rÃr;có—dSr~r|r€s r9rîzNoCapture.done?rÃr;có—dSr~r|r€s r9rðzNoCapture.suspendBrÃr;có—dSr~r|r€s r9ròzNoCapture.resumeErÃr;có—dS©Nr…r|r€s r9rözNoCapture.snapHs€Øˆrr;rÑcó—dSr~r|rÓs r9rôzNoCapture.writeorgKrÃr;rš) r‡rˆr‰rår¤r”rìrîrðròrŒrörôr|r;r9rýrý6sÈ€€€€€Ø€Lð ˜3ð  4ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð�cððððð ˜Sð  Tð ð ð ð ð ð r;rýc óœ—eZdZ dddœdedeededdfd„Zd edefd „Z defd „Z d ed e edfddfd„Z dd„Z dd„Zdd„Zdd„ZdS)ÚSysCaptureBaseNF©Úteer#Útmpfiler r(cóô—t|}tt|¦«|_||_|€9|dkrt ¦«}n$|st ¦«nt|j¦«}||_d|_ dS)Nr_Ú initialized) Ú patchsysdictÚgetattrr$Ú_oldr‚r¦rŽržr Ú_state)r�r#r r r‚s r9r”zSysCaptureBase.__init__Pso€õ˜BÔˆÝ#¥C¨Ñ.Ô.ˆŒ ؈Œ Ø ˆ?Ø�wŠˆÝ+Ñ-Ô-��à-0ÐM�)™+œ+˜+µlÀ4Ä9Ñ6MÔ6M�؈Œ Ø#ˆŒ ˆ ˆ r;Ú class_namecóš—d ||jt|d¦«rt|j¦«pd|j|j¦«S©Nz(<{} {} _old={} _state={!r} tmpfile={!r}>rz)Úformatr‚r\rrrr )r�rs r9rzSysCaptureBase.repr^sK€Ø9×@Ò@Ø Ø ŒIÝ �D˜&Ñ !Ô !Ð 5¥d¨4¬9¡o¤oÐ B¸Ø ŒKØ ŒLñ  ô ð r;có®—d |jj|jt |d¦«rt |j¦«pd|j|j¦«Sr) rr–r‡r‚r\rrrr r€s r9Ú__repr__zSysCaptureBase.__repr__gsP€Ø9×@Ò@Ø ŒNÔ #Ø ŒIÝ �D˜&Ñ !Ô !Ð 5¥d¨4¬9¡o¤oÐ B¸Ø ŒKØ ŒLñ  ô ð r;ÚopÚstates.có†—|j|vs7Jd ||jd |¦«¦«¦«‚dS©Nz+cannot {} in state {!r}: expected one of {}z, ©rrÚjoin©r�rrs r9Ú _assert_statezSysCaptureBase._assert_statepóK€à ŒK˜6Ð !Ð !Ð !Ø 8× ?Ò ?Ø �” ˜TŸYšY vÑ.Ô.ñ ô ñ "Ô !Ð !Ð !Ð !r;có€—| dd¦«tt|j|j¦«d|_dS)Nrì©r Ústarted)rÚsetattrr$r‚r rr€s r9rìzSysCaptureBase.startws:€Ø ×Ò˜7Ð$4Ñ5Ô5Ð5Ý•�T”Y ¤ Ñ-Ô-Ð-؈Œ ˆ ˆ r;cóЗ| dd¦«|jdkrdStt|j|j¦«|`|j ¦«d|_dS)Nrî©r r"Ú suspendedrî)rrr#r$r‚rr rÂr€s r9rîzSysCaptureBase.done|se€Ø ×Ò˜6Ð#RÑSÔSÐSØ Œ;˜&Ò Ð Ø ˆFÝ•�T”Y ¤ Ñ*Ô*Ð*Ø ˆIØ Œ ×ÒÑÔÐØˆŒ ˆ ˆ r;có€—| dd¦«tt|j|j¦«d|_dS©Nrð©r"r&r&)rr#r$r‚rrr€s r9rðzSysCaptureBase.suspend…s:€Ø ×Ò˜9Ð&>Ñ?Ô?Ð?Ý•�T”Y ¤ Ñ*Ô*Ð*Ø!ˆŒ ˆ ˆ r;cóš—| dd¦«|jdkrdStt|j|j¦«d|_dS©Nròr)r")rrr#r$r‚r r€s r9ròzSysCaptureBase.resumeŠsL€Ø ×Ò˜8Ð%=Ñ>Ô>Ð>Ø Œ;˜)Ò #Ð #Ø ˆFÝ•�T”Y ¤ Ñ-Ô-Ð-؈Œ ˆ ˆ r;r~rš)r‡rˆr‰r¤rrrár”rŒrrrrrìrîrðròr|r;r9rrOs €€€€€à37ð $ØHMð $ð $ð $Øð $Ø (¨Ô 0ð $ØAEð $à ð $ð $ð $ð $ð ˜sð  sð ð ð ð ð ˜#ð ð ð ð ð  ð ¨U°3¸°8¬_ð Àð ð ð ð ð ð ð ð ð ðððð"ð"ð"ð"ð  ð ð ð ð ð r;rcó.—eZdZdZdefd„Zdeddfd„ZdS)ÚSysCaptureBinaryr;r(có—| dd¦«|j d¦«|jj ¦«}|j d¦«|j ¦«|S©Nrör)r©rr rÉrFr¯rÏ©r�Úress r9rözSysCaptureBinary.snap•ót€Ø ×Ò˜6Ð#;Ñ<Ô<Ð<Ø Œ ×Ò˜!ÑÔÐØŒlÔ!×&Ò&Ñ(Ô(ˆØ Œ ×Ò˜!ÑÔÐØ Œ ×ÒÑÔÐØˆ r;rÑNcóÞ—| dd¦«|j ¦«|jj |¦«|jj ¦«dS©Nrôr))rrr¼rFrsrÓs r9rôzSysCaptureBinary.writeorg�sa€Ø ×Ò˜:Ð'?Ñ@Ô@Ð@Ø Œ �ŠÑÔÐØ Œ Ô×Ò˜tÑ$Ô$Ð$Ø Œ Ô×ÒÑ Ô Ð Ð Ð r;)r‡rˆr‰råÚbytesrörôr|r;r9r-r-’sV€€€€€Ø€Lð�eððððð!˜Uð! tð!ð!ð!ð!ð!ð!r;r-có.—eZdZdZdefd„Zdeddfd„ZdS)Ú SysCapturer…r(có—| dd¦«t|jt¦«sJ‚|j ¦«}|j d¦«|j ¦«|Sr/)rr]r rŽr˜rÉrÏr1s r9rözSysCapture.snap§ss€Ø ×Ò˜6Ð#;Ñ<Ô<Ð<ݘ$œ,­ Ñ2Ô2Ð2Ð2Ð2ØŒl×#Ò#Ñ%Ô%ˆØ Œ ×Ò˜!ÑÔÐØ Œ ×ÒÑÔÐØˆ r;rÑNcó˜—| dd¦«|j |¦«|j ¦«dSr5)rrrsr¼rÓs r9rôzSysCapture.writeorg¯sE€Ø ×Ò˜:Ð'?Ñ@Ô@Ð@Ø Œ �Š˜ÑÔÐØ Œ �ŠÑÔÐÐÐr;)r‡rˆr‰rårŒrörôr|r;r9r8r8¤sV€€€€€Ø€Lð�cððððð˜Sð Tððððððr;r8cón—eZdZdeddfd„Zdefd„Zdedeedfddfd „Zdd „Z dd „Z dd „Z dd „Z dS)Ú FDCaptureBaseÚtargetfdr(Ncór—||_ tj|¦«d|_nX#t$rKtjtjtj¦«|_tj|j|¦«YnwxYwtj |¦«|_ |dkr5t tjd¬¦«|_ t|¦«|_ n_ttd¬¦«dddd¬¦«|_ |t vrt||j ¦«|_ nt#|¦«|_ d |_dS) Nrúutf-8)rQ)rWr†r…T)rQrRr‘r’r )r=rNÚfstatÚtargetfd_invalidr­rMÚdevnullÚO_RDWRÚdup2rOÚ targetfd_saver r8Ú syscapturer{rr rýr)r�r=s r9r”zFDCaptureBase.__init__¶s-€Ø ˆŒ ð )Ý ŒH�XÑ Ô Ð ð %)ˆDÔ !Ð !øõð 5ð 5ð 5õ46´7½2¼:ÅrÄyÑ3QÔ3QˆDÔ !Ý ŒG�DÔ)¨8Ñ 4Ô 4Ð 4Ð 4Ð 4ð 5øøøõ  œV HÑ-Ô-ˆÔà �qŠ=ˆ=Ý¥¤ °WÐ=Ñ=Ô=ˆDŒLÝ0:¸8Ñ0DÔ0DˆDŒOˆOå&ݨÐ*Ñ*Ô*Ø Ø ØØ"ð ñôˆDŒLð�<Ð'Ð'Ý",¨X°t´|Ñ"DÔ"D�”�å"+¨HÑ"5Ô"5�”à#ˆŒ ˆ ˆ s‰%¥AA:Á9A:cóp—d |jj|j|j|j|j¦«S)Nz)<{} {} oldfd={} _state={!r} tmpfile={!r}>)rr–r‡r=rErr r€s r9rzFDCaptureBase.__repr__ßs7€Ø:×AÒAØ ŒNÔ #Ø ŒMØ Ô Ø ŒKØ ŒLñ  ô ð r;rr.có†—|j|vs7Jd ||jd |¦«¦«¦«‚dSrrrs r9rzFDCaptureBase._assert_stateèrr;cóÔ—| dd¦«tj|j ¦«|j¦«|j ¦«d|_dS)z4Start capturing on targetfd using memorized tmpfile.rìr!r"N) rrNrDr rPr=rFrìrr€s r9rìzFDCaptureBase.startïsZ€à ×Ò˜7Ð$4Ñ5Ô5Ð5Ý Œ�” ×#Ò#Ñ%Ô% t¤}Ñ5Ô5Ð5Ø Œ×ÒÑÔÐØˆŒ ˆ ˆ r;cóÀ—| dd¦«|jdkrdStj|j|j¦«tj|j¦«|j�B|j|jkrtj|j¦«tj|j¦«|j  ¦«|j  ¦«d|_dS)z_Stop capturing, restore streams, return original capture file, seeked to position zero.rîr%N) rrrNrDrEr=rÂrArFrîr r€s r9rîzFDCaptureBase.doneösÈ€ð ×Ò˜6Ð#RÑSÔSÐSØ Œ;˜&Ò Ð Ø ˆFÝ Œ�Ô" D¤MÑ2Ô2Ð2Ý Œ�Ô#Ñ$Ô$Ð$Ø Ô Ð ,ØÔ$¨¬ Ò5Ð5Ý”˜œÑ'Ô'Ð'Ý ŒH�TÔ*Ñ +Ô +Ð +Ø Œ×ÒÑÔÐØ Œ ×ÒÑÔÐØˆŒ ˆ ˆ r;cóÊ—| dd¦«|jdkrdS|j ¦«t j|j|j¦«d|_dSr()rrrFrðrNrDrEr=r€s r9rðzFDCaptureBase.suspendsa€Ø ×Ò˜9Ð&>Ñ?Ô?Ð?Ø Œ;˜+Ò %Ð %Ø ˆFØ Œ×ÒÑ!Ô!Ð!Ý Œ�Ô" D¤MÑ2Ô2Ð2Ø!ˆŒ ˆ ˆ r;cóî—| dd¦«|jdkrdS|j ¦«t j|j ¦«|j¦«d|_dSr+) rrrFròrNrDr rPr=r€s r9ròzFDCaptureBase.resumesl€Ø ×Ò˜8Ð%=Ñ>Ô>Ð>Ø Œ;˜)Ò #Ð #Ø ˆFØ Œ×ÒÑ Ô Ð Ý Œ�” ×#Ò#Ñ%Ô% t¤}Ñ5Ô5Ð5؈Œ ˆ ˆ r;rš) r‡rˆr‰r¤r”rŒrrrrìrîrðròr|r;r9r<r<µsÓ€€€€€ð'$ ð'$¨ð'$ð'$ð'$ð'$ðR ˜#ð ð ð ð ð  ð ¨U°3¸°8¬_ð Àð ð ð ð ð ð ð ð ððððð "ð"ð"ð"ð ð ð ð ð ð r;r<có2—eZdZdZdZdefd„Zdeddfd„ZdS)ÚFDCaptureBinaryzWCapture IO to/from a given OS-level file descriptor. snap() produces `bytes`. r;r(có—| dd¦«|j d¦«|jj ¦«}|j d¦«|j ¦«|Sr/r0r1s r9rözFDCaptureBinary.snapr3r;rÑNcóf—| dd¦«tj|j|¦«dS)ú"Write to original file descriptor.rôr)N)rrNrsrErÓs r9rôzFDCaptureBinary.writeorg's4€à ×Ò˜:Ð'?Ñ@Ô@Ð@Ý Œ�Ô# TÑ*Ô*Ð*Ð*Ð*r;)r‡rˆr‰Ú__doc__rår6rörôr|r;r9rNrNsb€€€€€ððð €Lð�eððððð+˜Uð+ tð+ð+ð+ð+ð+ð+r;rNcó2—eZdZdZdZdefd„Zdeddfd„ZdS)Ú FDCapturezTCapture IO to/from a given OS-level file descriptor. snap() produces text. r…r(cóþ—| dd¦«|j d¦«|j ¦«}|j d¦«|j ¦«|Sr/)rr rÉr¯rÏr1s r9rözFDCapture.snap5sq€Ø ×Ò˜6Ð#;Ñ<Ô<Ð<Ø Œ ×Ò˜!ÑÔÐØŒl×ÒÑ!Ô!ˆØ Œ ×Ò˜!ÑÔÐØ Œ ×ÒÑÔÐØˆ r;rÑNcóŒ—| dd¦«tj|j| d¦«¦«dS)rQrôr)r?N)rrNrsrEÚencoderÓs r9rôzFDCapture.writeorg=s@€à ×Ò˜:Ð'?Ñ@Ô@Ð@å Œ�Ô# T§[¢[°Ñ%9Ô%9Ñ:Ô:Ð:Ð:Ð:r;)r‡rˆr‰rRrårŒrörôr|r;r9rTrT-sb€€€€€ððð €Lð�cððððð;˜Sð; Tð;ð;ð;ð;ð;ð;r;rT)éé có(—eZdZUdZeed<eed<dS)Ú CaptureResultú2The result of :method:`CaptureFixture.readouterr`.rwrxN)r‡rˆr‰rRrr÷r|r;r9r[r[Js(€€€€€€à@Ð@à ˆ ˆ ‰ Ø ˆ ˆ ‰ ˆ ˆ r;r[có—eZdZdZdZdS)r[r\r|N)r‡rˆr‰rRrŠr|r;r9r[r[Ss€€€€€ð AÐ@àˆ ˆ ˆ r;rwrxcóì—eZdZdZdZdeeedeeedeeeddfd„Zde fd„Z dd „Z de eeffd „Z ddeddfd „Zdd „Zdd „Zdefd„Zdeefd„ZdS)Ú MultiCaptureNFÚin_rwrxr(có0—||_||_||_dSr~©r`rwrx)r�r`rwrxs r9r”zMultiCapture.__init___s€ð 36ˆŒØ25ˆŒØ25ˆŒˆˆr;cóf—d |j|j|j|j|j¦«S)NzH)rrwrxr`rÚ _in_suspendedr€s r9rzMultiCapture.__repr__is4€ØY×`Ò`Ø ŒHØ ŒHØ ŒHØ ŒKØ Ô ñ  ô ð r;cóØ—d|_|jr|j ¦«|jr|j ¦«|jr|j ¦«dSdS)Nr")rr`rìrwrxr€s r9Ústart_capturingzMultiCapture.start_capturingrsm€ØˆŒ Ø Œ8ð Ø ŒH�NŠNÑ Ô Ð Ø Œ8ð Ø ŒH�NŠNÑ Ô Ð Ø Œ8ð Ø ŒH�NŠNÑ Ô Ð Ð Ð ð ð r;cóÌ—| ¦«\}}|r#|j€J‚|j |¦«|r#|j€J‚|j |¦«||fS)z?Pop current snapshot out/err capture and flush to orig streams.)Ú readouterrrwrôrx©r�rwrxs r9Úpop_outerr_to_origzMultiCapture.pop_outerr_to_orig{sv€à—?’?Ñ$Ô$‰ˆˆSØ ð #Ø”8Ð'Ð'Ð'Ø ŒH× Ò ˜cÑ "Ô "Ð "Ø ð #Ø”8Ð'Ð'Ð'Ø ŒH× Ò ˜cÑ "Ô "Ð "Ø�Cˆxˆr;cóî—d|_|jr|j ¦«|jr|j ¦«|r)|jr$|j ¦«d|_dSdSdS)Nr&T)rrwrðrxr`rd©r�r`s r9Úsuspend_capturingzMultiCapture.suspend_capturing†sŒ€Ø!ˆŒ Ø Œ8ð Ø ŒH× Ò Ñ Ô Ð Ø Œ8ð Ø ŒH× Ò Ñ Ô Ð Ø ð &�4”8ð &Ø ŒH× Ò Ñ Ô Ð Ø!%ˆDÔ Ð Ð ð &ð &ð &ð &r;cóø—d|_|jr|j ¦«|jr|j ¦«|jr+|j€J‚|j ¦«d|_dSdS)Nr"F)rrwròrxrdr`r€s r9Úresume_capturingzMultiCapture.resume_capturing�s„€ØˆŒ Ø Œ8ð Ø ŒH�OŠOÑ Ô Ð Ø Œ8ð Ø ŒH�OŠOÑ Ô Ð Ø Ô ð 'Ø”8Ð'Ð'Ð'Ø ŒH�OŠOÑ Ô Ð Ø!&ˆDÔ Ð Ð ð 'ð 'r;có —|jdkrtd¦«‚d|_|jr|j ¦«|jr|j ¦«|jr|j ¦«dSdS)z+Stop capturing and reset capturing streams.Ústoppedzwas already stoppedN)rÚ ValueErrorrwrîrxr`r€s r9Ústop_capturingzMultiCapture.stop_capturing›s~€à Œ;˜)Ò #Ð #ÝÐ2Ñ3Ô3Ð 3؈Œ Ø Œ8ð Ø ŒH�MŠM‰OŒOˆOØ Œ8ð Ø ŒH�MŠM‰OŒOˆOØ Œ8ð Ø ŒH�MŠM‰OŒOˆOˆOˆOð ð r;có—|jdkS)z7Whether actively capturing -- not suspended or stopped.r")rr€s r9Ú is_startedzMultiCapture.is_started§s€àŒ{˜iÒ'Ð'r;cóª—|jr|j ¦«nd}|jr|j ¦«nd}t||¦«Sr)rwrörxr[ris r9rhzMultiCapture.readouterr«sF€Ø!%¤Ð1ˆdŒh�mŠm‰oŒoˆo¨rˆØ!%¤Ð1ˆdŒh�mŠm‰oŒoˆo¨rˆå˜S #Ñ&Ô&Ð&r;rš©F)r‡rˆr‰rrdrrärr”rŒrrfrrjrármrorsrur[rhr|r;r9r_r_[sS€€€€€Ø €FØ€Mð6à �k &Ô)Ô *ð6ð�k &Ô)Ô *ð6ð�k &Ô)Ô *ð 6ð ð 6ð6ð6ð6ð ˜#ð ð ð ð ððððð  E¨&°&¨.Ô$9ð ð ð ð ð&ð& Tð&°dð&ð&ð&ð&ð 'ð 'ð 'ð 'ð ð ð ð ð(˜Dð(ð(ð(ð(ð'˜M¨&Ô1ð'ð'ð'ð'ð'ð'r;r_r,Ú_CaptureMethodcó¾—|dkr9ttd¦«td¦«td¦«¬¦«S|dkr9ttd¦«td¦«td¦«¬¦«S|dkrtddd¬¦«S|dkr0tdtdd ¬ ¦«tdd ¬ ¦«¬¦«Std |›�¦«‚) Nr#rrúrûrbr$r%r&Trzunknown capturing method: )r_rTr8rr)r,s r9Ú_get_multicapturerz²sÝ€Ø �‚~€~Ý¥ ¨!¡ ¤ µ)¸A±,´,ÅIÈaÁLÄLÐQÑQÔQÐQØ �5ŠˆÝ¥ ¨1¡ ¤ µ:¸a±=´=ÅjÐQRÁmÄmÐTÑTÔTÐTØ �4ŠˆÝ ¨$°DÐ9Ñ9Ô9Ð9Ø �9Ò Ð ÝØ�* Q¨DÐ1Ñ1Ô1µzÀ!ÈÐ7NÑ7NÔ7Nð ñ ô ð õ Ð<°&Ð<Ð<Ñ =Ô =Ð=r;cóŽ—eZdZdZd*d„Zdefd„Zdeeeffd„Z defd „Z d+d „Z d+d „Z d+d „Z d,deddfd„Zd,deddfd„Zd+d„Zdeefd„Zd-d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zejdedfd„¦«Zejdedededfd„¦«Zed ¬!¦«d"e fd#„¦«Z!ed ¬!¦«dededfd$„¦«Z"ed ¬!¦«dededfd%„¦«Z#ed ¬!¦«dededfd&„¦«Z$ed ¬'¦«d+d(„¦«Z%ed ¬'¦«d+d)„¦«Z&dS).rka¹The capture plugin. Manages that the appropriate capture method is enabled/disabled during collection and each test phase (setup, call, teardown). After each of those points, the captured output is obtained and attached to the collection/runtest report. There are two levels of capture: * global: enabled by default and can be suppressed by the ``-s`` option. This is always enabled/disabled during collection and each test phase. * fixture: when a test function or one of its fixture depend on the ``capsys`` or ``capfd`` fixtures. In this case special handling is needed to ensure the fixtures take precedence over the global capture. r,rxr(Ncó0—||_d|_d|_dSr~)Ú_methodÚ_global_capturingÚ_capture_fixture)r�r,s r9r”zCaptureManager.__init__Ös€Ø$ˆŒ Ø>BˆÔØ?CˆÔÐÐr;cóN—d |j|j|j¦«S)NzJ)rr}r~rr€s r9rzCaptureManager.__repr__Ûs)€Ø[×bÒbØ ŒL˜$Ô0°$Ô2Gñ ô ð r;cóh—| ¦«rdS|jrd|jjjzSdS)NÚglobalz fixture %sF)Úis_globally_capturingrÚrequestÚ fixturenamer€s r9Ú is_capturingzCaptureManager.is_capturingàs@€Ø × %Ò %Ñ 'Ô 'ð Ø�8Ø Ô ð LØ $Ô"7Ô"?Ô"KÑKÐ K؈ur;có—|jdkS)Nr%)r}r€s r9rƒz$CaptureManager.is_globally_capturingés€ØŒ|˜tÒ#Ð#r;có|—|j�J‚t|j¦«|_|j ¦«dSr~)r~rzr}rfr€s r9roz%CaptureManager.start_global_capturingìs>€ØÔ%Ð-Ð-Ð-Ý!2°4´<Ñ!@Ô!@ˆÔØ Ô×.Ò.Ñ0Ô0Ð0Ð0Ð0r;cóŠ—|j�;|j ¦«|j ¦«d|_dSdSr~)r~rjrsr€s r9rnz$CaptureManager.stop_global_capturingñsK€Ø Ô !Ð -Ø Ô "× 5Ò 5Ñ 7Ô 7Ð 7Ø Ô "× 1Ò 1Ñ 3Ô 3Ð 3Ø%)ˆDÔ "Ð "Ð "ð .Ð -r;cóJ—|j�|j ¦«dSdSr~)r~ror€s r9Úresume_global_capturez$CaptureManager.resume_global_capture÷s0€ð Ô !Ð -Ø Ô "× 3Ò 3Ñ 5Ô 5Ð 5Ð 5Ð 5ð .Ð -r;Fr`cóN—|j�|j |¬¦«dSdS)N©r`)r~rmrls r9rpz%CaptureManager.suspend_global_captureýs3€Ø Ô !Ð -Ø Ô "× 4Ò 4¸Ð 4Ñ =Ô =Ð =Ð =Ð =ð .Ð -r;cóX—| ¦«| |¦«dSr~)Úsuspend_fixturerprls r9rðzCaptureManager.suspends.€à ×ÒÑÔÐØ ×#Ò# CÑ(Ô(Ð(Ð(Ð(r;cóV—| ¦«| ¦«dSr~)r‹Úresume_fixturer€s r9ròzCaptureManager.resumes,€Ø ×"Ò"Ñ$Ô$Ð$Ø ×ÒÑÔÐÐÐr;cóF—|j€J‚|j ¦«Sr~)r~rhr€s r9rrz"CaptureManager.read_global_capture s&€ØÔ%Ð1Ð1Ð1ØÔ%×0Ò0Ñ2Ô2Ð2r;Úcapture_fixtureúCaptureFixture[Any]có¸—|jrK|jjj}|jj}|j d ||¦«¦«||_dS)Nz%cannot use {} and {} at the same time)rr„r…Ú raiseerrorr)r�r“Úcurrent_fixtureÚrequested_fixtures r9Ú set_fixturezCaptureManager.set_fixturesj€Ø Ô ð Ø"Ô3Ô;ÔGˆOØ /Ô 7Ô CÐ Ø Ô #× .Ò .Ø7×>Ò>Ø% ñôñ ô ð ð !0ˆÔÐÐr;có—d|_dSr~)rr€s r9Ú unset_fixturezCaptureManager.unset_fixtures€Ø $ˆÔÐÐr;cóJ—|jr|j ¦«dSdS)z|If the current item is using ``capsys`` or ``capfd``, activate them so they take precedence over the global capture.N)rÚ_startr€s r9Úactivate_fixturezCaptureManager.activate_fixtures4€ð Ô ð +Ø Ô !× (Ò (Ñ *Ô *Ð *Ð *Ð *ð +ð +r;cóJ—|jr|j ¦«dSdS)zDDeactivate the ``capsys`` or ``capfd`` fixture of this item, if any.N)rrÂr€s r9Údeactivate_fixturez!CaptureManager.deactivate_fixture$s2€à Ô ð *Ø Ô !× 'Ò 'Ñ )Ô )Ð )Ð )Ð )ð *ð *r;cóJ—|jr|j ¦«dSdSr~)rÚ_suspendr€s r9r�zCaptureManager.suspend_fixture)s2€Ø Ô ð -Ø Ô !× *Ò *Ñ ,Ô ,Ð ,Ð ,Ð ,ð -ð -r;cóJ—|jr|j ¦«dSdSr~)rÚ_resumer€s r9r‘zCaptureManager.resume_fixture-s2€Ø Ô ð ,Ø Ô !× )Ò )Ñ +Ô +Ð +Ð +Ð +ð ,ð ,r;©NNNc#ó¬K—|jo|j ¦«}|r| ¦«|jo|j ¦«}|r| ¦« dV—|r| ¦«|r| ¦«dSdS#|r| ¦«|r| ¦«wwxYw)zLContext manager to temporarily disable global and current fixture capturing.N)rÚ _is_startedr�r~rurpr‹r‘)r�Ú do_fixtureÚ do_globals r9Úglobal_and_fixture_disabledz*CaptureManager.global_and_fixture_disabled3sèè€ðÔ*ÐR¨tÔ/D×/PÒ/PÑ/RÔ/Rˆ Ø ð #Ø × Ò Ñ "Ô "Ð "ØÔ*ÐR¨tÔ/E×/PÒ/PÑ/RÔ/Rˆ Ø ð *Ø × 'Ò 'Ñ )Ô )Ð )ð &Ø ˆEˆEˆEàð -Ø×*Ò*Ñ,Ô,Ð,Øð &Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ð &ð &øðð -Ø×*Ò*Ñ,Ô,Ð,Øð &Ø×#Ò#Ñ%Ô%Ð%Ð%ð &øøøs Á0B$Â$/CÚwhenÚitemc#ó¢K—| ¦«| ¦« dV—| ¦«| d¬¦«n/#| ¦«| d¬¦«wxYw| ¦«\}}| |d|¦«| |d|¦«dS)NFr�r`ra)r‹ržr rprrÚadd_report_section)r�r«r¬rwrxs r9Ú item_capturezCaptureManager.item_captureDsáèè€à ×"Ò"Ñ$Ô$Ð$Ø ×ÒÑÔÐð 3Ø ˆEˆEˆEà × #Ò #Ñ %Ô %Ð %Ø × 'Ò '¨EÐ 'Ñ 2Ô 2Ð 2Ð 2øð × #Ò #Ñ %Ô %Ð %Ø × 'Ò '¨EÐ 'Ñ 2Ô 2Ð 2Ð 2øøøà×+Ò+Ñ-Ô-‰ˆˆSØ ×Ò  h°Ñ4Ô4Ð4Ø ×Ò  h°Ñ4Ô4Ð4Ð4Ð4s ¬AÁ,BTrdÚ collectorc#ójK—t|t¦«r—| ¦«dV—}| ¦«| ¦«\}}| ¦«}|r|j d|f¦«|r|j d|f¦«dSdSdV—dS)NzCaptured stdoutzCaptured stderr)r]rr‹rprrÚ get_resultÚsectionsÚappend)r�r°rvrwrxÚreps r9Úpytest_make_collect_reportz)CaptureManager.pytest_make_collect_reportTsÒèè€å �i¥Ñ &Ô &ð Ø × &Ò &Ñ (Ô (Ð (Ø�e�eˆGØ × 'Ò 'Ñ )Ô )Ð )Ø×/Ò/Ñ1Ô1‰HˆC�Ø×$Ò$Ñ&Ô&ˆCØð >Ø” ×#Ò#Ð%6¸Ð$<Ñ=Ô=Ð=Øð >Ø” ×#Ò#Ð%6¸Ð$<Ñ=Ô=Ð=Ð=Ð=ð >ð >ð ˆEˆEˆEˆEˆEr;c#ópK—| d|¦«5dV—ddd¦«dS#1swxYwYdS)NÚsetup©r¯©r�r¬s r9Úpytest_runtest_setupz#CaptureManager.pytest_runtest_setupcs‰èè€à × Ò ˜w¨Ñ -Ô -ð ð Ø ˆEˆEˆEð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ó ™+«/²/c#ópK—| d|¦«5dV—ddd¦«dS#1swxYwYdS)NÚcallr¹rºs r9Úpytest_runtest_callz"CaptureManager.pytest_runtest_callhs‰èè€à × Ò ˜v tÑ ,Ô ,ð ð Ø ˆEˆEˆEð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð r¼c#ópK—| d|¦«5dV—ddd¦«dS#1swxYwYdS)NÚteardownr¹rºs r9Úpytest_runtest_teardownz&CaptureManager.pytest_runtest_teardownms‰èè€à × Ò ˜z¨4Ñ 0Ô 0ð ð Ø ˆEˆEˆEð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð r¼)Útryfirstcó.—| ¦«dSr~©rnr€s r9Úpytest_keyboard_interruptz(CaptureManager.pytest_keyboard_interruptró€à ×"Ò"Ñ$Ô$Ð$Ð$Ð$r;có.—| ¦«dSr~rÅr€s r9Úpytest_internalerrorz#CaptureManager.pytest_internalerrorvrÇr;)r,rxr(Nršrw)r“r”r(N)'r‡rˆr‰rRr”rŒrrrár†rƒrornr‹rprðròr[rrr™r›ržr r�r‘Ú contextlibÚcontextmanagerr rªrr¯rrr¶r»r¿rÂrÆrÉr|r;r9rkrkÃs�€€€€€ððð$DðDðDðDð  ˜#ð ð ð ð ð ˜e C¨ IÔ.ððððð$ tð$ð$ð$ð$ð1ð1ð1ð1ð *ð*ð*ð*ð 6ð6ð6ð6ð >ð>¨$ð>¸4ð>ð>ð>ð>ð)ð)˜4ð)¨Dð)ð)ð)ð)ð ðððð3 ]°3Ô%7ð3ð3ð3ð3ð 0ð 0ð 0ð 0ð%ð%ð%ð%ð+ð+ð+ð+ð *ð*ð*ð*ð -ð-ð-ð-ð,ð,ð,ð,ð Ôð&¨YÐ7GÔ-Hð&ð&ð&ñÔð&ð Ôð 5 ð 5¨Dð 5°YÐ?OÔ5Pð 5ð 5ð 5ñÔð 5ð€X˜$ÐÑÔð °Ið ð ð ñ Ôð ð€X˜$ÐÑÔð¨ð°)ÐTemporarily disable capturing while inside the ``with`` block.rhN)r„ÚconfigrjÚ getpluginrª)r�Ú capmanagers r9ÚdisabledzCaptureFixture.disabled¿s©èè€ð&*¤\Ô%8Ô%F×%PÒ%PØ ñ& ô& ˆ ð× 3Ò 3Ñ 5Ô 5ð ð Ø ˆEˆEˆEð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s»A Á AÁArš)r‡rˆr‰rRrrärrrár”r�rÂr[rhr¢r¤r§rÊrËr rár|r;r9rÍrÍ{s7€€€€€ð=ð=ð ð Dð Dð Dà˜; vÔ.Ô/ð Dðð Dð ð Dð ð Dð Dð Dð Dð,ð,ð,ð,ð!ð!ð!ð!ð9˜M¨&Ô1ð9ð9ð9ð9ð".ð.ð.ð.ð -ð-ð-ð-ð ˜Tððððð Ôð˜)Ð$4Ô5ðððñÔðððr;rÍr„c#ó K—|jj d¦«}tt|d¬¦«}| |¦«| ¦«|V—| ¦«| ¦«dS)aEnable text capturing of writes to ``sys.stdout`` and ``sys.stderr``. The captured output is made available via ``capsys.readouterr()`` method calls, which return a ``(out, err)`` namedtuple. ``out`` and ``err`` will be ``text`` objects. Returns an instance of :class:`CaptureFixture[str] `. Example: .. code-block:: python def test_output(capsys): print("hello") captured = capsys.readouterr() assert captured.out == "hello\n" rhTrÎN) rÞrjrßrÍr8r™r�rÂr›©r„rur“s r9ÚcapsysräÌs‘èè€ð&%œ^Ô9×CÒCÐDTÑUÔU€FÝ$¥Z°ÀDÐIÑIÔI€OØ ×Ò�Ñ'Ô'Ð'Ø×ÒÑÔÐØ ÐÐÐØ×ÒÑÔÐØ ×ÒÑÔÐÐÐr;c#ó K—|jj d¦«}tt|d¬¦«}| |¦«| ¦«|V—| ¦«| ¦«dS)a'Enable bytes capturing of writes to ``sys.stdout`` and ``sys.stderr``. The captured output is made available via ``capsysbinary.readouterr()`` method calls, which return a ``(out, err)`` namedtuple. ``out`` and ``err`` will be ``bytes`` objects. Returns an instance of :class:`CaptureFixture[bytes] `. Example: .. code-block:: python def test_output(capsysbinary): print("hello") captured = capsysbinary.readouterr() assert captured.out == b"hello\n" rhTrÎN) rÞrjrßrÍr-r™r�rÂr›rãs r9Ú capsysbinaryræès’èè€ð&%œ^Ô9×CÒCÐDTÑUÔU€FÝ$Õ%5°wÈ$ÐOÑOÔO€OØ ×Ò�Ñ'Ô'Ð'Ø×ÒÑÔÐØ ÐÐÐØ×ÒÑÔÐØ ×ÒÑÔÐÐÐr;c#ó K—|jj d¦«}tt|d¬¦«}| |¦«| ¦«|V—| ¦«| ¦«dS)aEnable text capturing of writes to file descriptors ``1`` and ``2``. The captured output is made available via ``capfd.readouterr()`` method calls, which return a ``(out, err)`` namedtuple. ``out`` and ``err`` will be ``text`` objects. Returns an instance of :class:`CaptureFixture[str] `. Example: .. code-block:: python def test_system_echo(capfd): os.system('echo "hello"') captured = capfd.readouterr() assert captured.out == "hello\n" rhTrÎN) rÞrjrßrÍrTr™r�rÂr›rãs r9Úcapfdrès‘èè€ð&%œ^Ô9×CÒCÐDTÑUÔU€FÝ$¥Y°À4ÐHÑHÔH€OØ ×Ò�Ñ'Ô'Ð'Ø×ÒÑÔÐØ ÐÐÐØ×ÒÑÔÐØ ×ÒÑÔÐÐÐr;c#ó K—|jj d¦«}tt|d¬¦«}| |¦«| ¦«|V—| ¦«| ¦«dS)a-Enable bytes capturing of writes to file descriptors ``1`` and ``2``. The captured output is made available via ``capfd.readouterr()`` method calls, which return a ``(out, err)`` namedtuple. ``out`` and ``err`` will be ``byte`` objects. Returns an instance of :class:`CaptureFixture[bytes] `. Example: .. code-block:: python def test_system_echo(capfdbinary): os.system('echo "hello"') captured = capfdbinary.readouterr() assert captured.out == b"hello\n" rhTrÎN) rÞrjrßrÍrNr™r�rÂr›rãs r9Ú capfdbinaryrê s‘èè€ð(%œ^Ô9×CÒCÐDTÑUÔU€FÝ$¥_°gÈÐNÑNÔN€OØ ×Ò�Ñ'Ô'Ð'Ø×ÒÑÔÐØ ÐÐÐØ×ÒÑÔÐØ ×ÒÑÔÐÐÐr;rš)PrRrøÚ collectionsrÊrKrNr$rÚtempfilerÚtypesrÚtypingrrr r r r r rrrrrrrrÚ_pytest.compatrÚ_pytest.configrrÚ_pytest.config.argparsingrÚ_pytest.deprecatedrÚ_pytest.fixturesrrÚ _pytest.nodesrrrÚtyping_extensionsr r!rxr:rBrcryrLr{rŽržr¦ÚABCrär rŒrýrr6r-r8r<rNrTÚ version_infor[Ú namedtupler_rzrkrÍrärærèrêr|r;r9úrùsÀðØ1Ð1Ø € € € ØÐÐÐØÐÐÐØ € € € Ø € € € Ø € € € Ø#Ð#Ð#Ð#Ð#Ð#Ø"Ð"Ð"Ð"Ð"Ð"ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð ØÐÐÐÐÐà Ð Ð Ð Ð Ð Ø!Ð!Ð!Ð!Ð!Ð!Ø#Ð#Ð#Ð#Ð#Ð#Ø,Ð,Ð,Ð,Ð,Ð,Ø-Ð-Ð-Ð-Ð-Ð-Ø$Ð$Ð$Ð$Ð$Ð$Ø'Ð'Ð'Ð'Ð'Ð'Ø#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐØÐÐÐÐÐàð;Ø'Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)àÐ9Ô:€Nð˜Vð¨ððððð& ð ð ð ð51¨ð51°Dð51ð51ð51ð51ðp €�dÐÑÔð°ðððñÔðð2 1ð 1ð 1ð 1ð 1�"Ô"ñ 1ô 1ð 1ð 6ð6ð6ð6ð6�Ô ñ6ô6ð6ð$ð$ð$ð$ð$�9ñ$ô$ð$ðIðIðIðIðI˜ñIôIðIð^$ð$ð$ð$ð$�#”'˜7 6œ?ñ$ô$ð$ð@˜x¨HÐ5Ð5€ ð ð ð ð ð � ˜CÔ ñ ô ð ð2@ ð@ ð@ ð@ ð@ �[ Ô(ñ@ ô@ ð@ ðF!ð!ð!ð!ð!�~ eÔ,ñ!ô!ð!ð$ðððð� Ô$ñôðð"_ ð_ ð_ ð_ ð_ �K Ô'ñ_ ô_ ð_ ðD+ð+ð+ð+ð+�m EÔ*ñ+ô+ð+ð,;ð;ð;ð;ð;� ˜cÔ"ñ;ô;ð;ð6Ô�wÒР-Ðà ðððð𘠠G¨F¤Oñôñ „UðððððððØˆ Ô˜°¸°Ñ?Ô?ÀÈÄñôððT'ðT'ðT'ðT'ðT'�7˜6”?ñT'ôT'ðT'ðn >Ð.ð >°<ÀÔ3Dð >ð >ð >ð >ð"u%ðu%ðu%ðu%ðu%ñu%ôu%ðu%ðpKðKðKðKðK�W˜V”_ñKôKðKðb ð�Jð 9¨^¸CÔ-@À$ÈÐ-LÔ#Mðððñ „ðð6 ð˜*ð¨°>À%Ô3HÈ$ÐPTÐ3TÔ)Uðððñ „ðð6 ð�:ð )¨N¸3Ô,?ÀÀtÐ,KÔ"Lðððñ „ðð6 ð˜ð¨ °.ÀÔ2GÈÈtÐ2SÔ(Tðððñ „ðððr;