a 5êdgŸ–ã@s¨ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZmZddlmZmZddlmZddlmZmZmZddlmZddlZddlZddl Z!z ddl"Z"Wne#y dd„Z$Yn0d d„Z$Gd d „d e"j%ƒZ&e  'd ¡p6d Z(e  'd¡pFd Z)de(vpXde)vZ*e+edƒplej,j-Z.dd„Z/Gdd„dƒZ0Gdd„de0ej1ƒZ2Gdd„de0e!j1ƒZ3Gdd„de0ƒZ4Gdd„de4ej1ƒZ5Gdd„de4e!j1ƒZ6Gd d!„d!e4ƒZ7Gd"d#„d#e7ej1ƒZ8Gd$d%„d%e7e!j1ƒZ9Gd&d'„d'e4ƒZ:Gd(d)„d)e:ej1ƒZ;Gd*d+„d+e:e!j1ƒZGd0d1„d1e=e!j1ƒZ?Gd2d3„d3ƒZ@Gd4d5„d5e@ejAƒZBGd6d7„d7e@e!jAƒZCGd8d9„d9ƒZDGd:d;„d;eDejAƒZEGdd?„d?ƒZGGd@dA„dAeGej1ƒZHGdBdC„dCeGe!j1ƒZIGdDdE„dEe jJƒZKGdFdG„dGeKƒZLGdHdI„dIeKƒZMejNGdJdK„dKe jJƒƒZOGdLdM„dMƒZPGdNdO„dOƒZQGdPdQ„dQe jJePƒZRGdRdS„dSeReQƒZSGdTdU„dUeRƒZTGdVdW„dWe jJePƒZUGdXdY„dYeUeQƒZVGdZd[„d[eUƒZWGd\d]„d]e jJƒZXGd^d_„d_eXƒZYGd`da„daeXƒZZGdbdc„dceReUƒZ[Gddde„dee[eQƒZ\Gdfdg„dge[ƒZ]Gdhdi„diej^ƒZ_e `e_ja¡Gdjdk„dke jJƒZbGdldm„dme jJƒZcGdndo„doejAƒZddpdq„ZeGdrds„dsecƒZfGdtdu„duecƒZgGdvdw„dwe jJƒZhGdxdy„dyehƒZiGdzd{„d{ehƒZjGd|d}„d}e jJƒZkGd~d„dekƒZlGd€d„dekƒZme  nejod‚kdƒ¡Gd„d…„d…e jJƒƒZpGd†d‡„d‡epƒZqGdˆd‰„d‰epƒZrdŠd‹„ZsetdŒkr¤e  u¡dS)éN)ÚdequeÚUserList)ÚcycleÚcount)Úsupport)Úassert_python_okÚassert_python_failureÚrun_python_until_end)ÚFakePathcOst dt|i|¤Ž¡S)NÚb)ÚarrayÚbytes)ÚposÚkw©rú(/usr/local/lib/python3.9/test/test_io.pyÚ byteslike4srcOs>t|i|¤Ž}tƒ}t |t|ƒ¡|t|ƒ d¡dd…<|S)NÚB)r Ú EmptyStructÚctypesZresizeÚlenÚ memoryviewÚcast)rrÚdataÚobjrrrr7s c@s eZdZdS)rN©Ú__name__Ú __module__Ú __qualname__rrrrr>srZCFLAGSÚZ CONFIG_ARGSz-fsanitize=memoryz--with-memory-sanitizerZgettotalrefcountcCs8ttddd}|jWdƒS1s*0YdS)NÚrúlatin-1©Úencoding)ÚopenÚ__file__Ú _CHUNK_SIZE©ÚfrrrÚ_default_chunk_sizeMsr)c@s`eZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z ddd„Z dS)ÚMockRawIOWithoutReadrcCs t|ƒ|_g|_d|_d|_dS©Nr)ÚlistÚ _read_stackÚ _write_stackÚ_readsÚ_extraneous_reads)ÚselfZ read_stackrrrÚ__init__Ws zMockRawIOWithoutRead.__init__cCs|j t|ƒ¡t|ƒS©N)r.Úappendr r©r1r rrrÚwrite]szMockRawIOWithoutRead.writecCsdS©NTr©r1rrrÚwritableaszMockRawIOWithoutRead.writablecCsdS©Né*rr8rrrÚfilenodszMockRawIOWithoutRead.filenocCsdSr7rr8rrrÚreadablegszMockRawIOWithoutRead.readablecCsdSr7rr8rrrÚseekablejszMockRawIOWithoutRead.seekablecCsdSr+r©r1rÚwhencerrrÚseekmszMockRawIOWithoutRead.seekcCsdSr+rr8rrrÚtellpszMockRawIOWithoutRead.tellcCs¶|jd7_t|ƒ}z|jd}Wn"tyF|jd7_YdS0|dur\|jd=dSt|ƒ}t|ƒ|krˆ|jd=||d|…<|S|d|…|dd…<||d…|jd<|SdS©Nér)r/rr-Ú IndexErrorr0)r1ÚbufZmax_lenrÚnrrrÚreadintoss$   zMockRawIOWithoutRead.readintoNcCs|Sr3r)r1rrrrÚtruncateˆszMockRawIOWithoutRead.truncate)r)N) rrrr2r6r9r<r=r>rArBrHrIrrrrr*Ss r*c@s eZdZdS)ÚCMockRawIOWithoutReadNrrrrrrJ‹srJc@s eZdZdS)ÚPyMockRawIOWithoutReadNrrrrrrKŽsrKc@seZdZddd„ZdS)Ú MockRawIONcCs>|jd7_z|j d¡WS|jd7_YdS0dS)NrDró)r/r-Úpopr0©r1rGrrrÚread”s zMockRawIO.read)N©rrrrPrrrrrL’srLc@s eZdZdS)Ú CMockRawIONrrrrrrRœsrRc@s eZdZdS)Ú PyMockRawIONrrrrrrSŸsrScsFeZdZ‡fdd„Zd ‡fdd„ Zdd„Zdd „Z‡fd d „Z‡ZS) ÚMisbehavedRawIOcstƒ |¡dS©Né)Úsuperr6r5©Ú __class__rrr6¤szMisbehavedRawIO.writeNcstƒ |¡dSrU)rWrPrOrXrrrP§szMisbehavedRawIO.readcCsdS)Ni…ÿÿÿrr?rrrrAªszMisbehavedRawIO.seekcCsdS)Ni8þÿÿrr8rrrrB­szMisbehavedRawIO.tellcstƒ |¡t|ƒdS©Né)rWrHr)r1rFrXrrrH°s zMisbehavedRawIO.readinto)N) rrrr6rPrArBrHÚ __classcell__rrrXrrT£s  rTc@s eZdZdS)ÚCMisbehavedRawIONrrrrrr]´sr]c@s eZdZdS)ÚPyMisbehavedRawIONrrrrrr^·sr^cs$eZdZ‡fdd„Zdd„Z‡ZS)ÚSlowFlushRawIOcstƒ ¡t ¡|_dSr3)rWr2Ú threadingÚEventÚin_flushr8rXrrr2¼s zSlowFlushRawIO.__init__cCs|j ¡t d¡dS)NgÐ?)rbÚsetÚtimeÚsleepr8rrrÚflushÀs zSlowFlushRawIO.flush)rrrr2rfr\rrrXrr_»s r_c@s eZdZdS)ÚCSlowFlushRawIONrrrrrrgÄsrgc@s eZdZdS)ÚPySlowFlushRawIONrrrrrrhÇsrhc@seZdZdZdd„ZdS)ÚCloseFailureIOrcCs|jsd|_t‚dS©NrD©ÚclosedÚOSErrorr8rrrÚcloseÎszCloseFailureIO.closeN)rrrrlrnrrrrriËsric@s eZdZdS)ÚCCloseFailureIONrrrrrroÓsroc@s eZdZdS)ÚPyCloseFailureIONrrrrrrpÖsrpcs6eZdZ‡fdd„Zd‡fdd„ Z‡fdd„Z‡ZS) Ú MockFileIOcsg|_tƒ |¡dSr3)Ú read_historyrWr2©r1rrXrrr2ÜszMockFileIO.__init__Ncs,tƒ |¡}|j |durdnt|ƒ¡|Sr3)rWrPrrr4r)r1rGÚresrXrrrPàs zMockFileIO.readcstƒ |¡}|j |¡|Sr3)rWrHrrr4)r1r rtrXrrrHås  zMockFileIO.readinto)N)rrrr2rPrHr\rrrXrrqÚs rqc@s eZdZdS)Ú CMockFileIONrrrrrruêsruc@s eZdZdS)Ú PyMockFileIONrrrrrrvísrvc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚMockUnseekableIOcCsdS©NFrr8rrrr>òszMockUnseekableIO.seekablecGs| d¡‚dS©Nz not seekable©ÚUnsupportedOperation©r1ÚargsrrrrAõszMockUnseekableIO.seekcGs| d¡‚dSryrzr|rrrrBøszMockUnseekableIO.tellcGs| d¡‚dSryrzr|rrrrIûszMockUnseekableIO.truncateN)rrrr>rArBrIrrrrrwñsrwc@seZdZejZdS)ÚCMockUnseekableION)rrrÚior{rrrrr~þsr~c@seZdZejZdS)ÚPyMockUnseekableION)rrrÚpyior{rrrrr€sr€c@sNeZdZdd„Zdd„Zdd„Zdd„Zd d „Zdd d „Zdd„Z dd„Z dS)ÚMockNonBlockWriterIOcCsg|_d|_dSr3)r.Ú _blocker_charr8rrrr2szMockNonBlockWriterIO.__init__cCsd |j¡}g|jdd…<|S)NrM)Újoinr.)r1ÚsrrrÚ pop_written s z MockNonBlockWriterIO.pop_writtencCs ||_dSr3)rƒ)r1ÚcharrrrÚblock_onszMockNonBlockWriterIO.block_oncCsdSr7rr8rrrr=szMockNonBlockWriterIO.readablecCsdSr7rr8rrrr>szMockNonBlockWriterIO.seekablercCsdSr+rr?rrrrAszMockNonBlockWriterIO.seekcCsdSr7rr8rrrr9szMockNonBlockWriterIO.writablecCstt|ƒ}d}|jr`z| |j¡}Wnty4Yn,0|dkrV|j |d|…¡|Sd|_dS|j |¡t|ƒS)Néÿÿÿÿr)r rƒÚindexÚ ValueErrorr.r4r)r1r rGrrrr6!s  zMockNonBlockWriterIO.writeN)r) rrrr2r†rˆr=r>rAr9r6rrrrr‚s r‚c@seZdZejZdS)ÚCMockNonBlockWriterION)rrrrÚBlockingIOErrorrrrrrŒ5srŒc@seZdZejZdS)ÚPyMockNonBlockWriterION)rrrrrrrrrrŽ8srŽc@sŠeZdZdd„Zdd„Zdd„Zdbdd „Zd Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0d]d^„Z1d_d`„Z2daS)cÚIOTestcCst tj¡dSr3©rÚunlinkÚTESTFNr8rrrÚsetUp>sz IOTest.setUpcCst tj¡dSr3rr8rrrÚtearDownAszIOTest.tearDowncCsD| | d¡d¡| d¡| | ¡d¡| d¡| | d¡d¡| | d¡d¡| | d¡d¡| | ¡d¡| | dd¡d¡| | ¡d¡tdƒ}| | |¡d ¡d |dd…<| | d¡d¡| | d ¡d¡| | dd ¡d ¡| | ¡d ¡| | d¡d¡| | ¡d ¡| t|jd¡dS)Nsblah.r[rsHello.ér‰rDs world é s *********óhrVé é ç)Ú assertEqualr6rIrBrAÚ bytearrayÚ assertRaisesÚ TypeError)r1r(ÚbufferrrrÚ write_opsDs(   zIOTest.write_opsFcCsÞ| d¡}| |d¡t|ƒ}| | |¡d¡| t|ƒd¡tdƒ}| | |¡d¡| t|ƒd¡| |dd…d¡| | d¡d¡| | d¡d¡| | d ¡d ¡| | td ƒ¡d¡| | d d¡d ¡| | d¡d¡| | d¡d ¡| | tƒ¡d¡| | d d ¡d¡| | d¡d¡| | ¡d¡|  t |jd¡|rÚ| d¡| | ¡d¡| d ¡| | ¡d¡| | ¡d ¡| d¡tdƒ}| |  |¡d¡| t|ƒd¡dS)Nr[shellos worlrVód réó hello world rDrMóxiúÿÿÿr•sworldé ršsworld ) rPr›rrHr rœrrArBrržÚ readinto1)r1r(ZbufferedrrrrÚread_ops\s>     zIOTest.read_opslc CsPz| | |j¡|j¡Wn ttfy:| d¡Yn0| | ¡|j¡| | d¡d¡| | ¡|jd¡| | dd¡|jd¡| | ¡|jd¡| | ¡|jd¡| | dd¡|jd¡| | |jd¡|jd¡| | ¡|jd¡| | dd¡|jd¡| | dd¡|j¡| |  d¡d¡dS) Nzno largefile supportóxxxér‰rDrVrr¤) r›rAÚLARGEÚ OverflowErrorr‹ÚskipTestrBr6rIrP©r1r(rrrÚlarge_file_opss zIOTest.large_file_opsc CsÌ|j}dD]N}| tj|¡,}| ||j¡| ||j¡Wdƒq 1sN0Yq |jtjddd,}| ||j¡| ||j¡Wdƒn1sž0Y|jtjddd2}| ||jd¡| ||jdg¡Wdƒn1sò0Y| tjd¡2}| ||jd¡| ||jdg¡Wdƒn1sD0Y| tjd¡Z}| ||jd ¡| ||jd g¡| ||j d |j ¡| ||j d |j ¡Wdƒn1s¾0YdS) N)ÚwÚwbr°r©Ú bufferingÚrbsblahsblah r Zblahzblah rDr‰) r{r$rr’rrPÚreadliner6Ú writelinesrAÚSEEK_CURÚSEEK_END)r1ÚexcÚmodeÚfprrrÚtest_invalid_operations“s&.,02zIOTest.test_invalid_operationsc s¸‡fdd„}‡fdd„}‡fdd„}‡fdd„}‡fd d „}‡fd d „}‡fd d„}‡fdd„}|df|df|df|df|df|df|df|dfˆjdfˆjdff } | D]\} } ˆ | ¡â| ƒ¸} d| v} ˆ |  ¡| ¡d| v}ˆ |  ¡|¡t| ˆjƒrd}n$t| ˆjˆj fƒr(d}n ˆ  d¡d| vrF|   ¡nˆ  t | j ¡| rn|  d¡|  ¡nˆ  t | jd¡ˆ  t | j¡|rž|  |¡nˆ  t | j|¡tj d¡rä| ||fvräWdƒWdƒq¨d| v}ˆ |  ¡|¡|r|  ¡|  d¡nˆ  t | j¡ˆ  t | jd¡|rT|rT|  ¡|  d¡nˆ  t | j¡ˆ  t | jd¡Wdƒn1sˆ0YWdƒq¨1s¨0Yq¨dS)Ncs"t ¡\}}t |¡ˆ |d¡S)Nr )ÚosÚpipernÚFileIO)r r¯r8rrÚ pipe_reader°s  z3IOTest.test_optional_abilities..pipe_readercsNt ¡\}}ˆ tj|¡tjtj|dfd}| ¡ˆ |j¡ˆ  |d¡S)Néd©Útargetr}r¯) r¼r½Ú addCleanuprnr`ÚThreadrPÚstartr„r¾)r r¯Úthreadr8rrÚ pipe_writerµs   z3IOTest.test_optional_abilities..pipe_writercsˆ ˆ ¡¡Sr3)ÚBufferedReaderrwrr8rrÚbuffered_reader¾sz7IOTest.test_optional_abilities..buffered_readercsˆ ˆ ¡¡Sr3)ÚBufferedWriterrwrr8rrÚbuffered_writerÁsz7IOTest.test_optional_abilities..buffered_writercsˆ ˆ ¡¡Sr3)ÚBufferedRandomÚBytesIOrr8rrÚbuffered_randomÄsz7IOTest.test_optional_abilities..buffered_randomcsˆ ˆ ¡ˆ ¡¡Sr3)ÚBufferedRWPairrwrr8rrÚbuffered_rw_pairÇs ÿz8IOTest.test_optional_abilities..buffered_rw_paircs$G‡fdd„dˆjƒ}ˆ |ƒd¡S)NcseZdZ”jjZ”jjZdS)zMIOTest.test_optional_abilities..text_reader..UnseekableReaderN)rrrÚBufferedIOBaser9r6rr8rrÚUnseekableReaderÌsrÒÚascii©rwÚ TextIOWrapper)rÒr8rrÚ text_readerËsz3IOTest.test_optional_abilities..text_readercs$G‡fdd„dˆjƒ}ˆ |ƒd¡S)NcseZdZ”jjZ”jjZdS)zMIOTest.test_optional_abilities..text_writer..UnseekableWriterN)rrrrÑr=rPrr8rrÚUnseekableWriterÒsr×rÓrÔ)r×r8rrÚ text_writerÑsz3IOTest.test_optional_abilities..text_writerÚfrÚfwr r¯ZrwsÚrwÚ3ó3zUnknown base classr(rDÚwinr…r)rÍÚStringIOÚsubTestr›r=r9Ú isinstanceÚ TextIOBaserÑÚ RawIOBaseÚfailr<rrmrPr6ÚsysÚplatformÚ startswithr>rBrArI)r1r¿rÇrÉrËrÎrÐrÖrØÚtestsÚtestZ abilitiesrr=r9rr>rr8rÚtest_optional_abilitiesªsh           û      ÿ   zIOTest.test_optional_abilitiescCsjd}| t|j|d¡t|dƒ}t ¡.t dt¡| t|j|d¡Wdƒn1s\0YdS)Nzfoobarr¯rÓÚignore)rr‹r$r ÚwarningsÚcatch_warningsÚ simplefilterÚDeprecationWarning)r1Z fn_with_NULZbytes_fnrrrÚtest_open_handles_NUL_charss    z"IOTest.test_open_handles_NUL_charscCsÜ|jtjdddJ}| | ¡d¡| | ¡d¡| | ¡d¡| |¡Wdƒn1sb0Y|jtjdddJ}| | ¡d¡| | ¡d¡| | ¡d¡| |¡Wdƒn1sÎ0YdS)Nr°rr±FTr³© r$rr’r›r=r9r>r r§r­rrrÚtest_raw_file_ios(zIOTest.test_raw_file_iocCsÖ| tjd¡J}| | ¡d¡| | ¡d¡| | ¡d¡| |¡Wdƒn1s^0Y| tjd¡L}| | ¡d¡| | ¡d¡| | ¡d¡| |d¡Wdƒn1sÈ0YdS)Nr°FTr³rñr­rrrÚtest_buffered_file_io's(zIOTest.test_buffered_file_iocCs"| tjd¡}| d¡Wdƒn1s.0Y| tjd¡ˆ}| | ¡d¡| | d¡d¡| | d¡d¡| | d ¡d ¡| | ¡d ¡| | d¡d ¡| t|jd ¡Wdƒn1sÔ0Y| tjd¡ }| t|jd ¡Wdƒn1s0YdS)Nr°s"abc def xyzzy foobar another liner³óabc r¥ódef rVóxyészzy sfoobar s another lineg333333@r )r$rr’r6r›r´rržr­rrrÚ test_readline3s(.zIOTest.test_readlinecCs*Gdd„d|jƒ}| ttft|ƒ¡dS)Nc@seZdZdd„ZdS)z+IOTest.test_readline_nonsizeable..RcSsdSr3rr8rrrr´Esz4IOTest.test_readline_nonsizeable..R.readlineN)rrrr´rrrrÚRDsrù)ÚIOBaserržÚ StopIterationÚnext©r1rùrrrÚtest_readline_nonsizeableAsz IOTest.test_readline_nonsizeablecCs(Gdd„d|jƒ}| t|ƒjd¡dS)Nc@seZdZdd„ZdS)z'IOTest.test_next_nonsizeable..RcSsdSr3rr8rrrÚ__next__Msz0IOTest.test_next_nonsizeable..R.__next__N)rrrrÿrrrrrùLsrùrD)rúrržÚ readlinesrýrrrÚtest_next_nonsizeableIszIOTest.test_next_nonsizeablecCs@| ¡}| |¡| ¡}| |d¡| |¡}| |d¡dS)Nr£T)rÍr Úgetvaluer›r§)r1r(rrrrÚtest_raw_bytes_ioQs    zIOTest.test_raw_bytes_iocCs¤tjdd…dkstjdkr.t dd|j¡| tjdd¡}| |¡Wdƒn1s^0Y| tjd¡}| |¡Wdƒn1s–0YdS)Nr©rÞÚdarwinZ largefilez-test requires %s bytes and a long time to runúw+br)rårærZrequiresrªr$r’r®r­rrrÚtest_large_file_opsYsþ(zIOTest.test_large_file_opsc CsÆdD]¼}d}| tjd|¡}| d¡Wdƒn1s<0Y| |jd¡d}z<| tjd|¡}ddWdƒn1sˆ0YWn ty´| |jd¡Yq0| d¡qdS)N)rrÀr°r¨TrDrz1/0 didn't raise an exception)r$rr’r6r›rlÚZeroDivisionErrorrä)r1Úbufsizer(rrrÚtest_with_openfs(* zIOTest.test_with_opencCsú| tjd¡}| d¡Wdƒn1s.0Y|jtjddd }| | ¡d¡Wdƒn1sp0Y| tjd¡ }| | ¡d¡Wdƒn1s®0Y| tjd¡ }| | ¡d¡Wdƒn1sì0YdS)Nr°r¨Úabrr±r©Úa)r$rr’r6r›rBÚ assertGreaterr­rrrÚtest_append_mode_tellvs(..zIOTest.test_append_mode_tellc sºg‰G‡fdd„d|jƒ}t dtf¡~|tjdƒ}| d¡~t ¡| ˆgd¢¡| tjd¡ }| |  ¡d¡Wdƒn1sŽ0YWdƒn1s¬0YdS)Ncs:eZdZ‡‡fdd„Z‡‡fdd„Z‡‡fdd„Z‡ZS)z(IOTest.test_destructor..MyFileIOcs4ˆ d¡z tƒj}Wnty(Yn0|ƒdSrj©r4rWÚ__del__ÚAttributeErrorr­©rYÚrecordrrrƒs    z0IOTest.test_destructor..MyFileIO.__del__csˆ d¡tƒ ¡dSrU©r4rWrnr8rrrrn‹s z.IOTest.test_destructor..MyFileIO.closecsˆ d¡tƒ ¡dS©Nr©©r4rWrfr8rrrrfŽs z.IOTest.test_destructor..MyFileIO.flush©rrrrrnrfr\r©rrXrÚMyFileIO‚srrr°r¨©rDrVr©r³) r¾rÚcheck_warningsÚResourceWarningr’r6Ú gc_collectr›r$rP)r1rr(rrrÚtest_destructor€s  zIOTest.test_destructorcs<g‰G‡fdd„d|ƒ}|ƒ}~t ¡| ˆgd¢¡dS)NcsBeZdZdd„Z‡‡fdd„Z‡‡fdd„Z‡‡fdd„Z‡ZS) z+IOTest._check_base_destructor..MyIOcSsd|_d|_d|_dS)NrDrVr©)Úon_delÚon_closeÚon_flushr8rrrr2sz4IOTest._check_base_destructor..MyIO.__init__cs6ˆ |j¡z tƒj}Wnty*Yn0|ƒdSr3)r4rrWrrr­rrrr¥s    z3IOTest._check_base_destructor..MyIO.__del__csˆ |j¡tƒ ¡dSr3)r4rrWrnr8rrrrn­s z1IOTest._check_base_destructor..MyIO.closecsˆ |j¡tƒ ¡dSr3)r4r rWrfr8rrrrf°s z1IOTest._check_base_destructor..MyIO.flush)rrrr2rrnrfr\rrrXrÚMyIOœsr!r)rrr›)r1Úbaser!r(rrrÚ_check_base_destructoršs zIOTest._check_base_destructorcCs| |j¡dSr3)r#rúr8rrrÚtest_IOBase_destructor¸szIOTest.test_IOBase_destructorcCs| |j¡dSr3)r#rãr8rrrÚtest_RawIOBase_destructor»sz IOTest.test_RawIOBase_destructorcCs| |j¡dSr3)r#rÑr8rrrÚtest_BufferedIOBase_destructor¾sz%IOTest.test_BufferedIOBase_destructorcCs| |j¡dSr3)r#râr8rrrÚtest_TextIOBase_destructorÁsz!IOTest.test_TextIOBase_destructorcCsz| tjd¡}| d¡Wdƒn1s.0Y| tjd¡ }| | ¡d¡Wdƒn1sl0YdS)Nr°r¨r³©r$rr’r6r›rPr­rrrÚtest_close_flushesÄs(zIOTest.test_close_flushescsŠt dtdƒ¡‰tˆ ¡ƒ‰‡‡‡fdd„}|ˆ ¡ƒ|ˆ tjd¡ƒ|ˆ ˆ  ¡¡ƒ|ˆ  ˆ  ¡¡ƒ|ˆ  ˆ  ¡ˆ  ¡¡ƒdS)NÚir¥csF|.ˆ | ˆ¡ˆ¡| ˆf¡Wdƒn1s80YdSr3)r›r6rµr'©r rGr1rrÚcheckÍsz'IOTest.test_array_writes..checkr¯) r ÚrangerÚtobytesrÍr¾rr’rÊrLrÌrÏ)r1r,rr+rÚtest_array_writesÊs  zIOTest.test_array_writescCs|jt|jtjddddS)Nr¯F©Úclosefd©rr‹r$rr’r8rrrÚ test_closefd×sÿzIOTest.test_closefdcCs&| tjd¡}| d¡Wdƒn1s.0Y| tjd¡T}|j| ¡ddd}| | ¡d¡| d¡| ¡|  t |j¡Wdƒn1s 0Y| tjd¡X}|j| ¡ddd}| | ¡dd…d ¡| ¡|  t |j t d ƒ¡Wdƒn1s0YdS) Nr¯úegg r Fr0rr³r©seggrD) r$rr’r6r<r›rPrArnrr‹rHrœ©r1r(ÚfilerrrÚtest_read_closedÛs( ,zIOTest.test_read_closedcCs|jt|jtjddddS)Nr Fr0r2r8rrrÚtest_no_closefd_with_filenameêsz$IOTest.test_no_closefd_with_filenamecCs¢| tjd¡}| d¡Wdƒn1s.0Y| tjd¡H}| |jjjd¡|j| ¡ddd}| |jjjd¡Wdƒn1s”0YdS)Nr°segg r TFr0) r$rr’r6r›rŸÚrawr1r<r5rrrÚtest_closefd_attrîs (zIOTest.test_closefd_attrcCs°t dtf¡B| tjd¡}| d¡||_t |¡}~t  ¡Wdƒn1sV0Y|  |ƒ|¡|  tjd¡ }|  |  ¡d¡Wdƒn1s¢0YdS)Nrr°sabcxxxr³)rrrr¾r’r6r(ÚweakrefÚrefrÚ assertIsNoner$r›rP)r1r(ÚwrrrrÚtest_garbage_collectionös  &zIOTest.test_garbage_collectioncCsd}tj |¡s | d |¡¡tjdkr4| d¡tjtj krJ| d¡|j |ddd}|  t |j ¡Wdƒn1s~0Y|  |d¡}|  t |j ¡Wdƒn1s¸0Y|  |d ¡}|  t |j ¡Wdƒn1sò0YdS) Nz /dev/zeroz{0} does not existéÿÿÿz+test can only run in a 32-bit address spacez&test requires at least 2 GiB of memoryr³rr±r )r¼ÚpathÚexistsr¬ÚformatråÚmaxsizerZreal_max_memuseZ_2Gr$rr«rP)r1Zzeror(rrrÚtest_unbounded_files     ,,zIOTest.test_unbounded_filecsh|j|i|¤Ž‰g‰‡‡fdd„}|ˆ_| tˆj¡| ˆj¡| ˆ¡| ˆd¡dd„ˆ_dS)Ncsˆjgˆdd…<tƒ‚dSr3rkr©rlr(rrÚ bad_flushsz4IOTest.check_flush_error_on_close..bad_flushrcSsdSr3rrrrrÚ!rMz3IOTest.check_flush_error_on_close..)r$rfrrmrnÚ assertTruerlÚ assertFalse)r1r}ÚkwargsrGrrFrÚcheck_flush_error_on_closes  z!IOTest.check_flush_error_on_closecCs.|jtjdddt tjtjtjB¡}|j|dddt tjtjtjB¡}|j|ddddt |¡| tjd¡t tjtjtjB¡}| |d¡t tjtjtjB¡}|j|dddt |¡| tjd¡t tjtjtjB¡}| |d¡t tjtjtjB¡}|j|dddt |¡dS)Nr°rr±F)r²r1r0r¯)rLrr’r¼r$ÚO_WRONLYÚO_CREATrn)r1ÚfdrrrÚtest_flush_error_on_close#s$    z IOTest.test_flush_error_on_closecCs<|jtjddd}| ¡| ¡| ¡| t|j¡dS)Nr°rr±)r$rr’rnrr‹rfr­rrrÚtest_multi_close;s zIOTest.test_multi_closecCsž| d¡}| | d¡d¡| | d¡d¡| | d¡d¡| | d¡d¡| | d¡d¡| | d¡d¡| | d¡d¡| | d¡d¡dS) N)óabcódNóefgNrVóabócrSóefógrM)r*r›rP©r1ÚrawiorrrÚtest_RawIOBase_readBs zIOTest.test_RawIOBase_readcCs@| ¡| ¡| ¡| ¡| ¡f}|D]}| t|dƒ¡q&dS)NÚ__dict__)rúrãrârßrÍrIÚhasattr)r1rérrrrÚtest_types_have_dictOsûzIOTest.test_types_have_dictcs˜| tjd¡}| d¡Wdƒn1s.0Yt tjtj¡‰‡fdd„}|jdd|d }| | ¡d¡Wdƒn1sŠ0YdS)Nr¯r4csˆSr3r)rAÚflags©rOrrÚopener^sz"IOTest.test_opener..openerú non-existentr ©ra)r$rr’r6r¼ÚO_RDONLYr›rP)r1r(rarr`rÚ test_openerZs ( zIOTest.test_openercCsVdd„}| t¡}tdd|dWdƒn1s60Y| t|jƒd¡dS)NcSsdS)Nr‰r©Zfnamer_rrrÚ badopeneresz4IOTest.test_bad_opener_negative_1..badopenerrbr rczopener returned -1©rr‹r$r›ÚstrÚ exception©r1rgÚcmrrrÚtest_bad_opener_negative_1cs ,z!IOTest.test_bad_opener_negative_1cCsVdd„}| t¡}tdd|dWdƒn1s60Y| t|jƒd¡dS)NcSsdS)Néþÿÿÿrrfrrrrgmsz8IOTest.test_bad_opener_other_negative..badopenerrbr rczopener returned -2rhrkrrrÚtest_bad_opener_other_negativeks ,z%IOTest.test_bad_opener_other_negativec Cs˜| td¡x}| td¡L}|j| ¡dd}|j| ¡dd| ¡| ¡| ¡Wdƒn1sl0YWdƒn1sŠ0YdS)Nr³Fr0)r$r%r¾r<r2r´rn)r1Úf1Úf2ZfileiorrrÚtest_fileio_closefdss ÿzIOTest.test_fileio_closefdc Csjt |¡L| t¡"|jtjdddWdƒn1s>0YWdƒn1s\0YdS)Nr¯rr±©rÚcheck_no_resource_warningrr‹r$r’r8rrrÚtest_nonbuffered_textios  zIOTest.test_nonbuffered_textioc Csjt |¡L| t¡"|jtjdddWdƒn1s>0YWdƒn1s\0YdS)Nr¯Úinvalid©Únewlinersr8rrrÚtest_invalid_newline„s  zIOTest.test_invalid_newlinec Cs~Gdd„d|jƒ}|ƒ}dD]\}| |¡>tdƒ}| t||ƒ|ƒd¡| t|ƒd¡Wdƒq1sn0YqdS)Nc@seZdZdd„ZeZdS)z3IOTest.test_buffered_readinto_mixin..StreamcSsdS)Nó12345r©r1ÚsizerrrrPŒsz8IOTest.test_buffered_readinto_mixin..Stream.readN)rrrrPÚread1rrrrÚStream‹sr~©rHr¦r[rz)rÑràrr›Úgetattrr )r1r~ÚstreamÚmethodrŸrrrÚtest_buffered_readinto_mixin‰s z#IOTest.test_buffered_readinto_mixinc s`‡fdd„}|ttjƒƒ|tt tj¡ƒƒˆ tjd¡R}t| ¡ƒ}ˆ t¡ˆ |d¡Wdƒn1sv0YWdƒn1s”0Ytdƒ}ˆ t¡ˆ |d¡Wdƒn1sÒ0Ytt ƒ}ˆ t ¡ˆ |d¡Wdƒn1s0Yˆ  t d¡"ˆ ttjƒd¡Wdƒn1sR0YdS)Ncsvˆ |d¡}| d¡Wdƒn1s,0Yˆ |d¡ }ˆ | ¡d¡Wdƒn1sh0YdS)Nr¯r4r )r$r6r›rP)rAr(r8rrÚcheck_path_succeeds—s(z7IOTest.test_fspath_support..check_path_succeedsr¯zread/write/append modeZrwxa) r rr’r¼Úfsencoder$r<rržÚFloatingPointErrorÚassertRaisesRegexr‹)r1r„r(Zbad_pathrr8rÚtest_fspath_support–s   H * ,zIOTest.test_fspath_supportcCs8| d¡}| | ¡d¡| d¡}| | ¡d¡dS©N©rRrSrTóabcdefg)r*r›rPÚreadallrYrrrÚtest_RawIOBase_readall²s  zIOTest.test_RawIOBase_readallc CsöGdd„d|jƒ}d}d}|D]Ò}| |¡´|\}}}}|tt|ƒƒƒ} t|f|ƒ} t| |ƒ}| || ƒ|¡| t| ƒ|¡| | d|…t|ƒ¡|f||} | | |d…| ¡| t| j ƒ||¡Wdƒq1sæ0YqdS)Nc@s$eZdZdd„Zdd„Zdd„ZdS)z3IOTest.test_BufferedIOBase_readinto..ReadercSs ||_dSr3©Úavail)r1rrrrr2¾sz.Reader.__init__cSs"|jd|…}|j|d…|_|Sr3rŽ)r1r|ÚresultrrrrPÀsz8IOTest.test_BufferedIOBase_readinto..Reader.readcSs| t|dƒ¡SrZ)rPÚminr{rrrr}Äsz9IOTest.test_BufferedIOBase_readinto..Reader.read1N)rrrr2rPr}rrrrÚReader½sr’) )rHr¥r[r[)rHr¥r•r•)rHr[r•r[)rHr•ér•)rHr¥rr)r¦r¥r[r[)r¦r¥r•r[)r¦r[r•r[)r¦r•r“r[)r¦r¥rré) rÑràr r-rœr€r›rZassertSequenceEqualr) r1r’rèZ UNUSED_BYTErér‚rZrequestrÚreaderrŸZunusedrrrÚtest_BufferedIOBase_readintoºs    z#IOTest.test_BufferedIOBase_readintocCs4Gdd„d|jƒ}|ƒ}| t|j¡dd„|_dS)Nc@seZdZdd„Zdd„ZdS)z#IOTest.test_close_assert..RcSsdSr3r)r1ÚnameÚvaluerrrÚ __setattr__åsz/IOTest.test_close_assert..R.__setattr__cSs tƒ‚dSr3©rmr8rrrrfçsz)IOTest.test_close_assert..R.flushN)rrrr™rfrrrrrùäsrùcSsdSr3rr8rrrrHîrMz*IOTest.test_close_assert..)rúrrmrnrf)r1rùr(rrrÚtest_close_assertãszIOTest.test_close_assertN)F)3rrrr“r”r r§rªr®r»rêrðròrórørþrrrr r rr#r$r%r&r'r)r/r3r7r8r:r?rErLrPrQr[r^rermrorrruryrƒrˆrr–r›rrrrr<s` !h           )rc@seZdZdd„ZdS)ÚCIOTestcCsLGdd„d|jƒ}|ƒ|ƒ}||_t |¡}~~t ¡| |ƒ|¡dS)Nc@seZdZdd„ZdS)z*CIOTest.test_IOBase_finalize..MyIOcSsdSr3rr8rrrrnøsz0CIOTest.test_IOBase_finalize..MyIO.closeN©rrrrnrrrrr!÷sr!)rúrr;r<rrr=)r1r!rr>rrrÚtest_IOBase_finalizeós zCIOTest.test_IOBase_finalizeN)rrrržrrrrrœñsrœc@s eZdZdS)ÚPyIOTestNrrrrrrŸsrŸc@seZdZdd„Zdd„ZdS)ÚAPIMismatchTestcCs*tjtjtjdd}|j|tƒdddS)N)Ú __weakref__)rëz6Python RawIOBase does not have all C RawIOBase methods©Úmsg)rÚdetect_api_mismatchrrãrr›rc©r1ZmismatchrrrÚtest_RawIOBase_io_in_pyio_match s ÿz/APIMismatchTest.test_RawIOBase_io_in_pyio_matchcCs&t tjtj¡}|j|tƒdddS)Nz6C RawIOBase does not have all Python RawIOBase methodsr¢)rr¤rrãrr›rcr¥rrrÚtest_RawIOBase_pyio_in_io_matchsz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)rrrr¦r§rrrrr  sr c@s|eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)ÚCommonBufferedTestscCs<| ¡}| |¡}| | ¡|¡| t|j¡t|ƒdSr3)rLÚtpÚassertIsÚdetachrr‹Úrepr©r1r9rFrrrÚ test_detachs  zCommonBufferedTests.test_detachcCs&| ¡}| |¡}| d| ¡¡dSr:)rLr©r›r<©r1rZÚbufiorrrÚ test_fileno#s zCommonBufferedTests.test_filenocCs:| ¡}| |¡}| t|jdd¡| t|jdd¡dS)Nrr‰r–)rLr©rr‹rAr¯rrrÚtest_invalid_args)s z%CommonBufferedTests.test_invalid_argscsL|j}g‰G‡fdd„d|ƒ}| ¡}||ƒ}~t ¡| ˆgd¢¡dS)Ncs:eZdZ‡‡fdd„Z‡‡fdd„Z‡‡fdd„Z‡ZS)zBCommonBufferedTests.test_override_destructor..MyBufferedIOcs4ˆ d¡z tƒj}Wnty(Yn0|ƒdSrjrr­rrrr4s    zJCommonBufferedTests.test_override_destructor..MyBufferedIO.__del__csˆ d¡tƒ ¡dSrUrr8rrrrn<s zHCommonBufferedTests.test_override_destructor..MyBufferedIO.closecsˆ d¡tƒ ¡dSrrr8rrrrf?s zHCommonBufferedTests.test_override_destructor..MyBufferedIO.flushrrrrXrÚ MyBufferedIO3sr³r)r©rLrrr›)r1r©r³rZr°rrrÚtest_override_destructor0sz,CommonBufferedTests.test_override_destructorcs4| ¡}| |¡‰‡fdd„}|ƒ| t|¡dS)Ncs(ˆWdƒn1s0YdSr3rr©r°rrÚ_withLsz7CommonBufferedTests.test_context_manager.._with)rLr©rr‹)r1rZr¶rrµrÚtest_context_managerHs   z(CommonBufferedTests.test_context_managerc Cs–| ¡}t ¡r}| t¡| |¡jWdƒn1s>0YtsZ| |j ¡n|j durt|  |j j t ¡Wdƒn1sˆ0YdSr3) rirÚcatch_unraisable_exceptionrrr©ÚxyzzyÚIOBASE_EMITS_UNRAISABLEr=Ú unraisabler›Úexc_typerm©r1rZrlrrrÚtest_error_through_destructorTs  * z1CommonBufferedTests.test_error_through_destructorcCsr| ¡}| |¡}d|jj|jjf}| t|ƒd|¡d|_| t|ƒd|¡d|_| t|ƒd|¡dS)Nz (%s\.)?%sz<%s>Údummyz<%s name='dummy'>ódummyz<%s name=b'dummy'>)rLr©rrÚ assertRegexr¬r—)r1r9r ZclsnamerrrÚ test_repras zCommonBufferedTests.test_reprc Csd| ¡}| |¡}t |d|¡0z t|ƒWnty@Yn0Wdƒn1sV0YdS©Nr—)rLr©rÚ swap_attrr¬Ú RuntimeError©r1r9r rrrÚtest_recursive_reprks   z'CommonBufferedTests.test_recursive_reprcs†| ¡‰g‰‡‡‡fdd„}|ˆ_| ˆ¡‰| tˆj¡| ˆj¡| ˆj¡| ˆ¡| ˆd¡| ˆd¡dd„ˆ_dS)Ncsˆjˆjgˆdd…<tƒ‚dSr3rkr©r rlr9rrrGzsz@CommonBufferedTests.test_flush_error_on_close..bad_flushrrDcSsdSr3rrrrrrH…rMz?CommonBufferedTests.test_flush_error_on_close..) rLrfr©rrmrnrIrlrJ©r1rGrrÈrrPus    z-CommonBufferedTests.test_flush_error_on_closecCs¶| ¡}dd„}dd„}||_| |¡}||_| t¡}| ¡Wdƒn1sV0Y| |jjd¡|  |jj t¡| |jj jd¡|  |j ¡dd„|_d d„|_dS) NcSs tdƒ‚dS©NrfršrrrrrG‰sz@CommonBufferedTests.test_close_error_on_close..bad_flushcSs tdƒ‚dS©NrnršrrrrÚ bad_close‹sz@CommonBufferedTests.test_close_error_on_close..bad_close©rn©rfcSsdSr3rrrrrrH˜rMz?CommonBufferedTests.test_close_error_on_close..cSsdSr3rrrrrrH™rM) rLrnr©rfrrmr›rjr}ÚassertIsInstanceÚ __context__rJrl©r1r9rGrÌr ÚerrrrrÚtest_close_error_on_close‡s  &  z-CommonBufferedTests.test_close_error_on_closecCsº| ¡}dd„}dd„}||_| |¡}||_| t¡}| ¡Wdƒn1sV0Y| dt|jƒ¡|  |jj t¡| dt|jj ƒ¡|  |j ¡dd„|_d d„|_dS) NcSst‚dSr3©Únon_existing_flushrrrrrGžszNCommonBufferedTests.test_nonnormalized_close_error_on_close..bad_flushcSst‚dSr3©Únon_existing_closerrrrrÌ szNCommonBufferedTests.test_nonnormalized_close_error_on_close..bad_closer×rÕcSsdSr3rrrrrrH­rMzMCommonBufferedTests.test_nonnormalized_close_error_on_close..cSsdSr3rrrrrrH®rM) rLrnr©rfrÚ NameErrorÚassertInrirjrÏrÐrJrlrÑrrrÚ'test_nonnormalized_close_error_on_close›s  &  z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<| ¡}| |¡}| ¡| ¡| ¡| t|j¡dSr3)rLr©rnrr‹rfrÆrrrrQ°s  z$CommonBufferedTests.test_multi_closecCs6| | d¡¡}| |j|j¡| |j|jd¡dS)Nó AAAAAAAAAAr)r©rwrr{rBrA©r1r°rrrÚtest_unseekable¸sz#CommonBufferedTests.test_unseekablecCsN| ¡}| |¡}| ¡}| t¡||_Wdƒn1s@0YdSr3)rLr©rrr9)r1r9rFÚxrrrÚtest_readonly_attributes½s   z,CommonBufferedTests.test_readonly_attributesN)rrrr®r±r²r´r·r¾rÂrÇrPrÓrÚrQrÝrßrrrrr¨s    r¨c@s(eZdZejdd„ƒZejdd„ƒZdS)Ú SizeofTestcCs\d}d}| ¡}|j||d}t |¡|}| ¡}|j||d}| t |¡||¡dS)Néé ©Ú buffer_size)rLr©råÚ getsizeofr›)r1Zbufsize1Zbufsize2rZr°r|rrrÚ test_sizeofÇszSizeofTest.test_sizeofcCsFd}| ¡}|j||d}t |¡|}| ¡| t |¡|¡dS)Nrárã)rLr©rårårnr›)r1rrZr°r|rrrÚtest_buffer_freeingÒs zSizeofTest.test_buffer_freeingN)rrrrÚ cpython_onlyrærçrrrrràÅs ràc@sºeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Ze d¡dd „ƒZd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+S),ÚBufferedReaderTestr³cCs²| dg¡}| |¡}| |¡|j|dd|j|dd| d| ¡¡|jt|j|dd|jt|j|dd|jt|j|dd| dg¡}| |¡| d| ¡¡dS)NrRérãéréðÿÿÿr‰)rLr©r2r›rPrr‹r¯rrrÚtest_constructorÞs     z#BufferedReaderTest.test_constructorcCsX|j |j¡}~|j |j¡}| ttfd|jd¡| | ¡¡| | d¡d¡dS©Núuninitialized|has no attributerrM) r©Ú__new__r‡r‹rrPr2rLr›rÜrrrÚtest_uninitializedìs þz%BufferedReaderTest.test_uninitializedcCsDdD]*}| d¡}| |¡}| d| |¡¡q| t|jd¡dS)N)Nr“rŠr‹rn)rLr©r›rPrr‹)r1ÚargrZr°rrrÚ test_readös   zBufferedReaderTest.test_readcCsÜ| d¡}| |¡}| d| d¡¡| d| d¡¡| |jd¡| d| d¡¡| d| d¡¡| |jd¡| d | d¡¡| |jd ¡| d | d¡¡| |jd ¡| d| d¡¡| |jd ¡dS)NrŠóarDóbrMrrVrÀrSrVrTr©r÷©rLr©r›rPr}r/r¯rrrÚ test_read1þs  zBufferedReaderTest.test_read1cCsˆ| d¡}| |¡}| d| d¡¡| d| ¡¡| d| ¡¡| d| d¡¡| |jd¡| d | ¡¡| |jd ¡dS) NrŠrôrDsbcrSrTr‰r©rMr÷rör¯rrrÚtest_read1_arbitrarys  z'BufferedReaderTest.test_read1_arbitrarycCs| d¡}| |¡}tdƒ}| | |¡d¡| |d¡| | |¡d¡| |d¡| | |¡d¡| |d¡| | |¡d¡| |d¡| | |¡d¡| |d¡| d ¡}| |¡}| | |¡d¡| |d¡| | |¡d¡| |d ¡dS) NrŠrVrUócdrWrDsgfr)rRNscb)rLr©rœr›rH)r1rZr°r rrrÚ test_readintos&          z BufferedReaderTest.test_readintocCs4d}| d¡}|j||d}tdƒ}| | d¡d¡| |jd¡| | |¡d¡| |d¡| |jd¡| | |¡d¡| |dd…d ¡| |jd¡| | |¡d¡| |d ¡| |jd¡td|ƒ}| | d¡d ¡| |jd¡| | |¡d ¡| |dd …d ¡| |jd¡dS)Nr¥)rRódeófghsjklrãrVr©rRrDrUrVrûrür•sfghjklr÷)rLr©rœr›Úpeekr/r¦)r1rärZr°r rrrÚtest_readinto1.s*    z!BufferedReaderTest.test_readinto1cCsªd}d}| |f¡}|j||d}t dd¡}| |¡}| |t|ƒ¡t|ƒ d¡}| |t|ƒ¡|  |d|…|d|…¡|  ||d…dt||d…ƒ¡dS©Né<saaaaaaaaaaaaaaaaaaaaaaaaaarãr*s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr¤) rLr©r rHr rrrÚ assertLessr›©r1rärrZr°r rGZbmrrrÚtest_readinto_arrayEs   z&BufferedReaderTest.test_readinto_arraycCsªd}d}| |f¡}|j||d}t dd¡}| |¡}| |t|ƒ¡t|ƒ d¡}| |t|ƒ¡|  |d|…|d|…¡|  ||d…dt||d…ƒ¡dSrÿ) rLr©r r¦r rrrrr›rrrrÚtest_readinto1_arrayZs   z'BufferedReaderTest.test_readinto1_arraycsV‡fdd„}ˆ |ƒ ¡gd¢¡ˆ |ƒ d¡ddg¡ˆ |ƒ d¡gd¢¡dS)Ncsˆ d¡}ˆ |¡S)N©rôr¡rW)rLr©)rZr8rrr°ps z0BufferedReaderTest.test_readlines..bufiorr[rôr¡©r›rrÜrr8rÚtest_readlinesos z!BufferedReaderTest.test_readlinesc Cs¬d}t|ƒ}dgd¢|dggdgd¢|ggdgd¢gd¢gg}|D]d\}}}| |¡}|j||d }d} |D]*} | | | ¡|| | | …¡| | 7} ql| |j|¡qBdS) Nó abcdefghirÀ)r©rDr÷ér)r©r©r©r÷)rDrVr÷rV)r÷r÷rDrã)rrqr©r›rPrr) r1rZdlenrèrZbuf_read_sizesZraw_read_sizesrZr°rÚnbytesrrrÚtest_bufferingwsý  z!BufferedReaderTest.test_bufferingcCs¤| d¡}| |¡}| d| d¡¡| d| d¡¡| d| ¡¡| d| d¡¡| | ¡¡| d| ¡¡| d¡}| d | ¡¡| | ¡¡dS) N)rRrSNrTNNNóabcdr•óerDsfgrM)rôNNrô)rLr©r›rPrýr=rŒr¯rrrÚtest_read_non_blocking‹s   z)BufferedReaderTest.test_read_non_blockingcCs*| d¡}| |¡}| d| d¡¡dS)NrŠr‹i(#©rLr©r›rPr¯rrrÚtest_read_past_eofšs  z%BufferedReaderTest.test_read_past_eofcCs(| d¡}| |¡}| d| ¡¡dSr‰rr¯rrrÚ test_read_all s  z BufferedReaderTest.test_read_allÚcpuc svz`d}ttdƒƒ|}t |¡tt|ƒƒ}| tjd¡‰ˆ  |¡Wdƒn1s\0Y|jtj|j ddÈ}|  |d¡‰g‰g‰‡‡‡fdd„‰‡fd d „td ƒDƒ}t  |¡t  d ¡Wdƒn1sà0Y| ˆd ˆ¡d ˆ¡}tdƒD]&}tt|gƒƒ}| | |¡|¡q Wdƒn1sJ0YWt tj¡nt tj¡0dS)Néèér°rr±r c shz2tddgƒD] }ˆ |¡}|s$q0ˆ |¡qWn0tyb}zˆ |¡‚WYd}~n d}~00dS)NrDé)rrPr4Ú Exception)rGr…Úe)r°ÚerrorsÚresultsrrr(¶s  z*BufferedReaderTest.test_threads..fcsg|]}tjˆd‘qS©©r©r`rÄ©Ú.0rÞr'rrÚ ÂrMz3BufferedReaderTest.test_threads..r¢ç{®Gáz”?ú(the following exceptions were caught: %rrM)r,r-ÚrandomÚshuffler rœr$rr’r6Ú read_moder©Ú start_threadsrdrerJr„r›rr‘)r1ÚNÚlr…r9Úthreadsr*Úcr)r°rr(rrÚ test_threads¦s.  (   (ÿ  8zBufferedReaderTest.test_threadscCsb| | d¡¡}| |j|j¡| |j|jd¡| d¡| |j|jd¡| |j|j¡dS)NrÛrrD)r©rwrr{rBrArPrÜrrrrÝÎs  z"BufferedReaderTest.test_unseekablecCs@| d¡}| |¡}| t|jd¡| t|j¡dd„|_dS)NrŠrcSsdSr3rrrrrrHÝrMz7BufferedReaderTest.test_misbehaved_io..)rTr©rrmrArBrnr¯rrrÚtest_misbehaved_ioÖs   z%BufferedReaderTest.test_misbehaved_ioc CsÆd}d|d||d|dfD]¢}| d|g¡}| ||¡}| | |¡d|¡| |jdd ||j¡¡| d|ddg¡}| ||¡}| | |¡d|¡| |jdd ||j¡¡qdS)NrërVrDr¤rzfailed for {}: {} != 0)rLr©r›rPr0rC)r1rrGrZr°rrrÚtest_no_extraneous_readßs   ÿ   ÿz*BufferedReaderTest.test_no_extraneous_readcCsDt t d¡¡}| d¡| ¡| t|j¡| t|jd¡dS)Nó12rD) rrÈrÍrPrnrr‹rýr}r5rrrÚtest_read_on_closedós  z&BufferedReaderTest.test_read_on_closedcCsH| d¡}| |¡}| | ¡¡| |j|j¡| |j|jd¡dS)NrRr)rqr©rJr9rr{rIr¯rrrÚtest_truncate_on_read_onlyûs   z-BufferedReaderTest.test_truncate_on_read_onlyN)rrrr$rírñrór÷rørúrþrrrr rrrrÚrequires_resourcer*rÝr+r,r.r/rrrrréÛs,   ' réc@sFeZdZejZe ed¡dd„ƒZ dd„Z dd„Z dd „Z d d „Z d S) ÚCBufferedReaderTestúGMSan defaults to crashing instead of returning NULL for malloc failure.cCsDt |¡tjdkr@| ¡}| |¡}| ttt f|j |tj¡dS©Nr@) rérírårDrLr©rr«Ú MemoryErrorr‹r2r¯rrrrís     ÿz$CBufferedReaderTest.test_constructorcCs€| dg¡}| |¡}|jt|j|dd| t|j¡|jt|j|dd| t|j¡|jt|j|dd| t|j¡dS)NrRrrãrìr‰)rLr©rr‹r2rPr¯rrrÚtest_initializations  z'CBufferedReaderTest.test_initializationcCs(| d¡}| |¡}| t|jd¡dS)NrŠr¥)rTr©rrmrPr¯rrrÚtest_misbehaved_io_reads  z+CBufferedReaderTest.test_misbehaved_io_readcCs‚| tjtj¡t dtf¡B| tjd¡}| |¡}||_t   |¡}~t  ¡Wdƒn1sf0Y|  |ƒ|¡dS)Nrr) rÃrr‘r’rrr¾r©r(r;r<rr=©r1rZr(r>rrrr?#s  &z+CBufferedReaderTest.test_garbage_collectioncCsD| td¡$| t ¡ddd¡Wdƒn1s60YdS)NrÈrê©r‡ržr©rrÍr8rrrÚtest_args_error0sz#CBufferedReaderTest.test_args_errorN)rrrrrÈr©ÚunittestÚskipIfÚMEMORY_SANITIZERrír5r6r?r9rrrrr1s    r1c@seZdZejZdS)ÚPyBufferedReaderTestN)rrrrrÈr©rrrrr=6sr=c@sÚeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Ze d(¡d)d*„ƒZd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3S)4ÚBufferedWriterTestr°cCsÊ| ¡}| |¡}| |¡|j|dd|j|dd| d| d¡¡| ¡|jt|j|dd|jt|j|dd|jt|j|dd| |¡| d| d ¡¡| ¡| d  |j ¡d ¡dS) Nrêrãrër©rRrrìr‰óghirMsabcghi) rLr©r2r›r6rfrr‹r„r.r¯rrrrí=s   z#BufferedWriterTest.test_constructorcCsX|j |j¡}~|j |j¡}| ttfd|jd¡| | ¡¡| | d¡d¡dS)NrïrMr) r©rðr‡r‹rr6r2rLr›rÜrrrrñMs þz%BufferedWriterTest.test_uninitializedcCsD| ¡}| |¡}| d¡| |j¡| ¡| |jdg¡dS)Nshowdy!)rLr©r6rJr.r«r›r­rrrÚtest_detach_flushWs    z$BufferedWriterTest.test_detach_flushcCsh| ¡}| |d¡}| d¡| |j¡tdƒ}| |¡d|dd…<| ¡| d |j¡d¡dS)Nr rRódefó***rMóabcdef) rLr©r6rJr.rœrfr›r„)r1Úwriterr°rŸrrrÚ test_write_s     zBufferedWriterTest.test_writecCsn| ¡}| |d¡}d}tdt|ƒdƒD]}| |||d…¡q(d |j¡}| | |dd…¡|¡dS)Nr sabcdefghijklmnoprr©rMiøÿÿÿ) rLr©r-rr6r„r.rIrç)r1rDr°ÚcontentsrGZflushedrrrÚtest_write_overflowks  z&BufferedWriterTest.test_write_overflowc Cs¨ttdƒƒd}d}| ¡}| |d¡}dd„}|ƒ}|t|ƒkrˆtt|ƒt|ƒ|ƒ}| | ||||…¡|¡||ƒ||7}q6|  ¡| |d  |j ¡¡dS)Nrrrr˜css&tdƒD]}tdƒD] }|VqqdS)NrDé)rr-)r|r*rrrÚ gen_sizes}s  z2BufferedWriterTest.check_writes..gen_sizesrM) r r-rLr©rr‘rür›r6rfr„r.) r1Zintermediate_funcrFrGrDr°rIÚsizesr|rrrÚ check_writesvs   zBufferedWriterTest.check_writescCs| dd„¡dS)NcSsdSr3rrµrrrrH‹rMz0BufferedWriterTest.test_writes..©rKr8rrrÚ test_writesŠszBufferedWriterTest.test_writescCs| dd„¡dS)NcSs| ¡Sr3rÎrµrrrrHŽrMz.rLr8rrrÚtest_writes_and_flushessz*BufferedWriterTest.test_writes_and_flushescCs(dd„}| |¡dd„}| |¡dS)NcSs8| ¡}| |dd¡| |dd¡| |d¡dSrC)rBrA©r°rrrrÚ_seekabs‘sz:BufferedWriterTest.test_writes_and_seeks.._seekabscSs4| dd¡}| dd¡| dd¡| |d¡dS)NrrDr‰)rArOrrrÚ_seekrel—s   z:BufferedWriterTest.test_writes_and_seeks.._seekrelrL)r1rPrQrrrÚtest_writes_and_seekss z(BufferedWriterTest.test_writes_and_seekscCs| dd„¡dS)NcSs| | ¡¡Sr3)rIrBrµrrrrHŸrMz>BufferedWriterTest.test_writes_and_truncates..rLr8rrrÚtest_writes_and_truncatesžsz,BufferedWriterTest.test_writes_and_truncatesc Csð| ¡}| |d¡}| | d¡d¡| | d¡d¡| d¡| | d¡d¡| d¡z| d ¡Wn,|jy˜}z|j}WYd}~nd}~00| d ¡| |d ¡| | ¡d ¡| | d ¡d¡| ¡}|  |  d¡|¡dS)Nr r r÷sefghir[óksjklmnó0sopqrwxyz0123456789z'BlockingIOError should have been raisedrësabcdefghijklmnopqrwxyzs ABCDEFGHIr–s 01234567A) r‚r©r›r6rˆrÚcharacters_writtenrär†rIrç)r1r9r°rÚwrittenr…rrrÚtest_write_non_blocking¡s&      ÿz*BufferedWriterTest.test_write_non_blockingcCsžt ¡}| |d¡}| | d¡d¡| | ¡d¡| dd¡| | d¡d¡| dd¡| | ¡d¡| | d¡d¡| ¡| | ¡d ¡dS) Nr÷rCr•rsXYrVsXYcdefs123456s XYcdef123456) rrÍr©r›r6rBrArrf©r1r9r°rrrÚtest_write_and_rewind¼s   z(BufferedWriterTest.test_write_and_rewindcCs<| ¡}| |d¡}| d¡| ¡| d|jd¡dS©Nr rRr)rLr©r6rfr›r.©r1rDr°rrrÚ test_flushÉs   zBufferedWriterTest.test_flushcCsFgd¢}| ¡}| |d¡}| |¡| ¡| d |j¡d¡dS©N)rUrùrWr rMrC)rLr©rµrfr›r„r.©r1r'rDr°rrrÚtest_writelinesÐs   z"BufferedWriterTest.test_writelinescCsJtgd¢ƒ}| ¡}| |d¡}| |¡| ¡| d |j¡d¡dSr^)rrLr©rµrfr›r„r.r_rrrÚtest_writelines_userlistØs    z+BufferedWriterTest.test_writelines_userlistcCsL| ¡}| |d¡}| t|jgd¢¡| t|jd¡| t|jd¡dS)Nr rÚabc)rLr©rržrµr\rrrÚtest_writelines_erroràs  z(BufferedWriterTest.test_writelines_errorcCs>| ¡}| |d¡}| d¡~t ¡| d|jd¡dSr[)rLr©r6rrr›r.r\rrrrçs   z"BufferedWriterTest.test_destructorcCsÂ| tjtj¡|jtj|jddH}| |d¡}| d¡| |  d¡d¡| |  ¡d¡Wdƒn1sr0Y|jtjddd }| |  ¡d¡Wdƒn1s´0YdS) Nrr±r rCr©r•r³rR) rÃrr‘r’r$Ú write_moder©r6r›rIrBrP)r1r9r°r(rrrÚ test_truncateïs  .z BufferedWriterTest.test_truncatec CsÌ| tjtj¡| tjd¡}| dd¡Wdƒn1sB0Ygd¢}|D]n}|jtjd|dH}| d|d¡| d¡| ¡| |  ¡|d¡WdƒqX1s¼0YqXdS) Nr°ói')râráéÈzr+br±rDrV) rÃrr‘r’r$r6rPrIr›rB)r1r(Z buffer_sizesrärrrÚtest_truncate_after_writeús, z,BufferedWriterTest.test_truncate_after_writerc sžzˆd}ttdƒƒ|}tddgƒ}d}tƒ‰|t|ƒkrbt|ƒ}ˆ ||||…¡||7}q.~|jtj |j dd’}|  |d¡‰g‰‡‡‡fdd „‰‡fd d „td ƒDƒ}t  |¡t  d ¡Wdƒn1sÚ0Y| ˆdˆ¡ˆ ¡Wdƒn1s0Y| tj d¡‰ˆ ¡}Wdƒn1sJ0YtdƒD]} | | t| gƒ¡|¡q\Wt tj ¡nt tj ¡0dS)NrrrDrrr±r c sjz4z ˆ ¡}Wnty$YWdS0ˆ |¡qWn0tyd}zˆ |¡‚WYd}~n d}~00dSr3)ÚpopleftrEr6rr4)r…r)r°rÚqueuerrr(#s    z*BufferedWriterTest.test_threads..fcsg|]}tjˆd‘qSrrrr'rrr.rMz3BufferedWriterTest.test_threads..r¢r r!r³)r r-rrrrür4r$rr’rdr©r%rdrerJrnrPr›rr‘) r1r&rFrJrGr|r9r(r…r*r)r°rr(rjrr* s6      (ÿ(( zBufferedWriterTest.test_threadscCsP| ¡}| |d¡}| t|jd¡| t|j¡| t|jd¡dd„|_dS)Nr[rrCcSsdSr3rrrrrrHCrMz7BufferedWriterTest.test_misbehaved_io..)rTr©rrmrArBr6rnr¯rrrr+;s  z%BufferedWriterTest.test_misbehaved_iocCs@| t¡"| | ¡dd¡Wdƒn1s20YdS©Nr r™©rržr©rLr8rrrÚtest_max_buffer_size_removalEs z/BufferedWriterTest.test_max_buffer_size_removalcCsH| ¡}dd„}||_| |¡}| d¡| t|j¡| |j¡dS)NcSs tƒ‚dSr3rš)r rrrÚ bad_writeKsz?BufferedWriterTest.test_write_error_on_close..bad_writeóspam)rLr6r©rrmrnrIrl)r1r9rnr rrrÚtest_write_error_on_closeIs  z,BufferedWriterTest.test_write_error_on_closecCs\| ¡}| |d¡}tj|jd}| ¡|j ¡| t |j d¡|  |j ¡|  ¡dS)Nr rro)r_r©r`rÄrnrÅrbÚwaitrr‹r6rIrlr„)r1rZr°ÚtrrrÚtest_slow_close_from_threadSs   z.BufferedWriterTest.test_slow_close_from_threadN)rrrrdrírñr@rErGrKrMrNrRrSrXrZr]r`rarcrrerhrr0r*r+rmrprsrrrrr>:s4      .  r>c@s>eZdZejZe ed¡dd„ƒZ dd„Z dd„Z dd „Z d S) ÚCBufferedWriterTestr2cCsDt |¡tjdkr@| ¡}| |¡}| ttt f|j |tj¡dSr3) r>rírårDrLr©rr«r4r‹r2r¯rrrrícs     ÿz$CBufferedWriterTest.test_constructorcCs‚| ¡}| |¡}|jt|j|dd| t|jd¡|jt|j|dd| t|jd¡|jt|j|dd| t|jd¡dS)NrrãrArìr‰)rLr©rr‹r2r6r¯rrrr5os z'CBufferedWriterTest.test_initializationcCsÊ| tjtj¡t dtf¡L| tjd¡}| |¡}| d¡||_ t   |¡}~t  ¡Wdƒn1sp0Y|  |ƒ|¡| tjd¡ }| | ¡d¡Wdƒn1s¼0YdS)Nrrs123xxxr³)rÃrr‘r’rrr¾r©r6rÞr;r<rr=r$r›rPr7rrrr?ys   &z+CBufferedWriterTest.test_garbage_collectioncCsD| td¡$| t ¡ddd¡Wdƒn1s60YdS)NrÊrêr8r8rrrr9Šsz#CBufferedWriterTest.test_args_errorN) rrrrrÊr©r:r;r<rír5r?r9rrrrrt`s    rtc@seZdZejZdS)ÚPyBufferedWriterTestN)rrrrrÊr©rrrrrusruc@s´eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+S),ÚBufferedRWPairTestcCs$| | ¡| ¡¡}| |j¡dSr3)r©rLrJrl©r1Úpairrrrrí•sz#BufferedRWPairTest.test_constructorcCs†|j |j¡}~|j |j¡}| ttfd|jd¡| ttfd|jd¡| | ¡| ¡¡|  | d¡d¡|  | d¡d¡dSrî) r©rðr‡r‹rrPr6r2rLr›rwrrrrñ™s þ þz%BufferedRWPairTest.test_uninitializedcCs(| | ¡| ¡¡}| |j|j¡dSr3)r©rLrr{r«rwrrrr®§szBufferedRWPairTest.test_detachcCsF| t¡(| | ¡| ¡dd¡Wdƒn1s80YdSrkrlr8rrrÚ(test_constructor_max_buffer_size_removal«s z;BufferedRWPairTest.test_constructor_max_buffer_size_removalcCs,Gdd„dtƒ}| t|j|ƒ| ¡¡dS)Nc@seZdZdd„ZdS)zJBufferedRWPairTest.test_constructor_with_not_readable..NotReadablecSsdSrxrr8rrrr=±szSBufferedRWPairTest.test_constructor_with_not_readable..NotReadable.readableN©rrrr=rrrrÚ NotReadable°sr{©rLrrmr©)r1r{rrrÚ"test_constructor_with_not_readable¯sz5BufferedRWPairTest.test_constructor_with_not_readablecCs,Gdd„dtƒ}| t|j| ¡|ƒ¡dS)Nc@seZdZdd„ZdS)zLBufferedRWPairTest.test_constructor_with_not_writeable..NotWriteablecSsdSrxrr8rrrr9¸szUBufferedRWPairTest.test_constructor_with_not_writeable..NotWriteable.writableN)rrrr9rrrrÚ NotWriteable·sr~r|)r1r~rrrÚ#test_constructor_with_not_writeable¶sz6BufferedRWPairTest.test_constructor_with_not_writeablecCsv| | d¡| ¡¡}| | d¡d¡| | d¡d¡| | ¡d¡| | d¡| ¡¡}| | d¡d¡dS)NrCr©rRrDrSrW)r©rÍrLr›rPrwrrrró½s zBufferedRWPairTest.test_readcsT‡fdd„}ˆ |ƒ ¡gd¢¡ˆ |ƒ ¡gd¢¡ˆ |ƒ d¡ddg¡dS)Ncsˆ ˆ d¡ˆ ¡¡S)Ns abc def h)r©rÍrLrr8rrrHÇrMz3BufferedRWPairTest.test_readlines..)rôrõr—r[rôrõrrwrr8rrÆs z!BufferedRWPairTest.test_readlinescCs<| | d¡| ¡¡}| | d¡d¡| | ¡d¡dS)NrCr©rRrA)r©rÍrLr›r}rwrrrr÷ÌszBufferedRWPairTest.test_read1c Cs|dD]r}| |¡T| | d¡| ¡¡}tdƒ}| t||ƒ|ƒd¡| t|ƒd¡Wdƒq1sl0YqdS)NrrCsr[sabcde)ràr©rÍrLrr›r€r )r1r‚rxrrrrrúÔs  z BufferedRWPairTest.test_readintocCsf| ¡}| | ¡|¡}| d¡| ¡tdƒ}| |¡d|dd…<| ¡| |jddg¡dS)NrRrArB)rLr©r6rfrœr›r.)r1r¯rxrŸrrrrEÝs   zBufferedRWPairTest.test_writecCsB| | d¡| ¡¡}| | d¡ d¡¡| | d¡d¡dS)NrCr©rR)r©rÍrLrIrýrçr›rPrwrrrÚ test_peekészBufferedRWPairTest.test_peekcCs&| | ¡| ¡¡}| | ¡¡dSr3)r©rLrIr=rwrrrÚ test_readableïsz BufferedRWPairTest.test_readablecCs&| | ¡| ¡¡}| | ¡¡dSr3)r©rLrIr9rwrrrÚtest_writeableósz!BufferedRWPairTest.test_writeablecCs&| | ¡| ¡¡}| | ¡¡dSr3)r©rLrJr>rwrrrÚ test_seekable÷sz BufferedRWPairTest.test_seekablecCs8| | ¡| ¡¡}| |j¡| ¡| |j¡dSr3)r©rLrJrlrnrIrwrrrÚtest_close_and_closeds z(BufferedRWPairTest.test_close_and_closedcCs dd„}| ¡}||_| ¡}| ||¡}| t¡}| ¡Wdƒn1sR0Y| dt|jƒ¡| |j ¡|  |j ¡| |j ¡dd„|_dS)NcSstdSr3©Úreader_non_existingrrrrÚ reader_closeszIBufferedRWPairTest.test_reader_close_error_on_close..reader_closer†cSsdSr3rrrrrrHrMzEBufferedRWPairTest.test_reader_close_error_on_close..) rLrnr©rrØrÙrirjrIrlrJ)r1r‡r•rDrxrÒrrrÚ test_reader_close_error_on_closes  &   z3BufferedRWPairTest.test_reader_close_error_on_closec Csdd„}| ¡}| ¡}||_| ||¡}| t¡}| ¡Wdƒn1sR0Y| dt|jƒ¡| |j ¡|  |j ¡| |j ¡dd„|_d}t   ¡Lt   ¡d}t   ¡Wdƒn1sÔ0Yt   ¡Wdƒn1sú0YdS)NcSstdSr3©Úwriter_non_existingrrrrÚ writer_closeszIBufferedRWPairTest.test_writer_close_error_on_close..writer_closerŠcSsdSr3rrrrrrH&rMzEBufferedRWPairTest.test_writer_close_error_on_close..)rLrnr©rrØrÙrirjrJrlrIrr¸r)r1r‹r•rDrxrÒrrrÚ test_writer_close_error_on_closes$  &      &z3BufferedRWPairTest.test_writer_close_error_on_closecCsÜdd„}dd„}| ¡}||_| ¡}||_| ||¡}| t¡}| ¡Wdƒn1s`0Y| dt|jƒ¡| |jj t¡| dt|jj ƒ¡|  |j ¡|  |j ¡|  |j ¡dd„|_d d„|_dS) NcSstdSr3r…rrrrr‡2szPBufferedRWPairTest.test_reader_writer_close_error_on_close..reader_closecSstdSr3r‰rrrrr‹4szPBufferedRWPairTest.test_reader_writer_close_error_on_close..writer_closer†rŠcSsdSr3rrrrrrHErMzLBufferedRWPairTest.test_reader_writer_close_error_on_close..cSsdSr3rrrrrrHFrM) rLrnr©rrØrÙrirjrÏrÐrJrl)r1r‡r‹r•rDrxrÒrrrÚ'test_reader_writer_close_error_on_close1s"  &    z:BufferedRWPairTest.test_reader_writer_close_error_on_closecCsœGdd„dtƒ}| |dƒ|dƒ¡}| | ¡¡| |dƒ|dƒ¡}| | ¡¡| |dƒ|dƒ¡}| | ¡¡| |dƒ|dƒ¡}| | ¡¡dS)Nc@seZdZdd„Zdd„ZdS)z8BufferedRWPairTest.test_isatty..SelectableIsAttycSst |¡||_dSr3)rLr2Ú_isatty)r1Úisattyrrrr2Js zABufferedRWPairTest.test_isatty..SelectableIsAtty.__init__cSs|jSr3)rŽr8rrrrNsz?BufferedRWPairTest.test_isatty..SelectableIsAtty.isattyN)rrrr2rrrrrÚSelectableIsAttyIsrFT)rLr©rJrrI)r1rrxrrrÚ test_isattyHszBufferedRWPairTest.test_isattycCs*| | ¡| ¡¡}t |¡}d}d}dSr3)r©rLr;r<)r1Zbrwr<rrrÚtest_weakref_clearing]s z(BufferedRWPairTest.test_weakref_clearingN)rrrrírñr®ryr}rrórr÷rúrEr€rr‚rƒr„rˆrŒrr‘r’rrrrrv“s*    rvc@seZdZejZdS)ÚCBufferedRWPairTestN)rrrrrÏr©rrrrr“csr“c@seZdZejZdS)ÚPyBufferedRWPairTestN)rrrrrÏr©rrrrr”fsr”c@s¼eZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+Zd+Zd+S),ÚBufferedRandomTestúrb+zwb+cCst |¡t |¡dSr3)rérír>r8rrrríns z#BufferedRandomTest.test_constructorcCst |¡t |¡dSr3)rérñr>r8rrrrñrs z%BufferedRandomTest.test_uninitializedcCsn| d¡}| |d¡}| d| d¡¡| d¡| d¡| |j¡| d| ¡¡| d|jd ¡dS) N)óasdfóghjkr óasrVsdddseeer˜sdddeeer)rLr©r›rPr6rJr.©r1r9rÛrrrÚtest_read_and_writevs     z&BufferedRandomTest.test_read_and_writecCs| d¡}| |¡}| d| d¡¡| d| ¡¡| dd¡| d| d¡¡| d¡| dd¡| d| ¡¡| d | ¡¡| d d¡| d | ¡¡| dd ¡| d | ¡¡| d| d¡¡| ¡| d| ¡¡|  t |jd¡dS)Ns asdfghjklr™rVrr—r÷s123fs asdf123flr–éüÿÿÿr[rDr“sflé rš) rÍr©r›rPrBrAr6rfrrržršrrrÚtest_seek_and_tells$       z%BufferedRandomTest.test_seek_and_tellcCsº| d¡}| |¡}| d||dƒ¡| d¡| d||dƒ¡| d| ¡¡| ¡| d| ¡¡| d||ƒ¡| dd¡| d ¡| ¡| dd¡| d ||d ƒ¡dS) NrrUrVr-rWr•r?rsXYZr©)rÍr©r›r6rBrfrA)r1Z read_funcr9r°rrrÚcheck_flush_and_read˜s      z'BufferedRandomTest.check_flush_and_readcCs| dd„¡dS)NcWs |j|ŽSr3)rP)r°r}rrrrH«rMz8BufferedRandomTest.test_flush_and_read..©rŸr8rrrÚtest_flush_and_readªsz&BufferedRandomTest.test_flush_and_readcCsddd„}| |¡dS)Nr‰cSs.t|dkr|ndƒ}| |¡}t|d|…ƒS)Nré')rœrHr ©r°rGr rrrÚ _readinto®s z=BufferedRandomTest.test_flush_and_readinto.._readinto)r‰r )r1r¤rrrÚtest_flush_and_readinto­s z*BufferedRandomTest.test_flush_and_readintocCsddd„}| |¡dS)Nr‰cSs2| |¡}|dkr|d|…}| t|ƒd¡|S©Nr‰rD)rýrArr£rrrÚ_peekµs   z5BufferedRandomTest.test_flush_and_peek.._peek)r‰r ©r1r§rrrÚtest_flush_and_peek´s z&BufferedRandomTest.test_flush_and_peekcCsh| d¡}| |¡}| d¡| ¡| d¡| ¡| dd¡| d| ¡¡| d| ¡¡dS)Nró123s45rs 12345fghi)rÍr©r6rfrAr›rrPrYrrrÚtest_flush_and_write¿s     z'BufferedRandomTest.test_flush_and_writecCst |¡t |¡dSr3)rér*r>r8rrrr*Ës zBufferedRandomTest.test_threadscCs(dd„}| |¡dd„}| |¡dS)NcSs| d¡dSrj)rýrµrrrr§Ðsz6BufferedRandomTest.test_writes_and_peek.._peekcSs.| ¡}| dd¡| d¡| |d¡dS)Nr‰rDr)rBrArýrOrrrr§Ós  rLr¨rrrÚtest_writes_and_peekÏs z'BufferedRandomTest.test_writes_and_peekcCsdd„}| |¡dS)NcSs| dd¡| d¡dSr¦)rArPrµrrrÚ_readÛs z7BufferedRandomTest.test_writes_and_reads.._readrL©r1r­rrrÚtest_writes_and_readsÚsz(BufferedRandomTest.test_writes_and_readscCsdd„}| |¡dS)NcSs| dd¡| d¡dSr¦)rAr}rµrrrÚ_read1ás z9BufferedRandomTest.test_writes_and_read1s.._read1rL)r1r°rrrÚtest_writes_and_read1sàsz)BufferedRandomTest.test_writes_and_read1scCsdd„}| |¡dS)NcSs| dd¡| tdƒ¡dSr¦)rArHrœrµrrrr­çs z;BufferedRandomTest.test_writes_and_readintos.._readrLr®rrrÚtest_writes_and_readintosæsz,BufferedRandomTest.test_writes_and_readintoscCs¬dD]¢}| d¡}| |d¡}| | d¡d¡| | ¡d¡| d|¡| | ¡|d¡| ¡| | ¡|d¡| ¡}| |dd|dd|¡qdS)N)rDr[rÛr÷rDóAóBr–)rÍr©r›rPrBr6rfr)r1Zoverwrite_sizer9r°r…rrrÚtest_write_after_readaheadìs  ÿz-BufferedRandomTest.test_write_after_readaheadc Cs”dd„}d}tdt|ƒƒD]t}t|t|ƒƒD]`}| |¡}| |d¡}||||ƒ| ¡t|ƒ}d||<d||<| | ¡|d||f¡q,qdS) NcSs:| |¡| ||¡| d¡| |¡| d¡dS)Nóó)rArPr6)r°Zpos1Zpos2rrrÚmutate s    z:BufferedRandomTest.test_write_rewind_write..mutates€‚ƒ„rrÀrVrDzfailed result for i=%d, j=%d)r-rrÍr©rfrœr›r)r1r¸r r*Újr9r°ÚexpectedrrrÚtest_write_rewind_write s      ÿz*BufferedRandomTest.test_write_rewind_writecCs^| d¡}| |d¡}| | d¡d¡| | ¡d¡| | d¡d¡| | ¡d¡dS)NrÛrÀrVsAAsBBr÷)rÍr©r›rPrIr6rYrrrÚ!test_truncate_after_read_or_write s   z4BufferedRandomTest.test_truncate_after_read_or_writecCst |¡t |¡dSr3)rér+r>r8rrrr+" s z%BufferedRandomTest.test_misbehaved_ioc CsŽ| d¡Ð}| |d¡¤}| d¡| | d¡d¡| d¡| | d¡d¡| d¡tdƒ}| |¡| |d ¡| d ¡| | d¡d ¡|  ¡| |  ¡d ¡Wdƒn1sÂ0YWdƒn1sà0Y| d ¡„}| |d¡V}| | d¡d¡| d¡| | d¡d¡|  ¡| |  ¡d¡Wdƒn1s`0YWdƒn1s€0YdS)NsabcdefghrÀó1rDrõó2rSrÝófó4r—s1b2d3f4hrRrôrVsa2c) rÍr©r6r›rPr}rœrHrýrfr)r1r9r(rFrrrÚtest_interleaved_read_write& s*       L  z.BufferedRandomTest.test_interleaved_read_writec Cs¾| d¡ }| |¡v}| d¡| | ¡d¡| d¡| | ¡d¡| d¡| | ¡d¡| ¡| | ¡d¡Wdƒn1s’0YWdƒn1s°0YdS) Ns ab cdef g r½sb r¾rõrÝó s 1b 2def 3 )rÍr©r6r›r´rfr)r1r9r(rrrÚtest_interleaved_readline_write? s     z2BufferedRandomTest.test_interleaved_readline_writeN)rrrr$rdrírñr›ržrŸr¡r¥r©r«r*r¬r¯r±r²rµr»r¼r+rÁrÃrÝr/rrrrr•js0     r•c@s6eZdZejZe ed¡dd„ƒZ dd„Z dd„Z dS) ÚCBufferedRandomTestr2cCsDt |¡tjdkr@| ¡}| |¡}| ttt f|j |tj¡dSr3) r•rírårDrLr©rr«r4r‹r2r¯rrrríV s     ÿz$CBufferedRandomTest.test_constructorcCst |¡t |¡dSr3)r1r?rtr8rrrr?b s z+CBufferedRandomTest.test_garbage_collectioncCsD| td¡$| t ¡ddd¡Wdƒn1s60YdS)NrÌrêr8r8rrrr9f sz#CBufferedRandomTest.test_args_errorN) rrrrrÌr©r:r;r<rír?r9rrrrrÄS s   rÄc@seZdZejZdS)ÚPyBufferedRandomTestN)rrrrrÌr©rrrrrÅl srÅc@sXeZdZddd„Zdd„Zdd„Zdd „Zd d „Zdd d„Zdd„Z d Z e dd„ƒZ dS)ÚStatefulIncrementalDecoderÚstrictcCstj ||¡| ¡dSr3)ÚcodecsÚIncrementalDecoderr2Úreset)r1rrrrr2 sz#StatefulIncrementalDecoder.__init__cCs dt|ƒS)Nz)Úidr8rrrÚ__repr__‘ sz#StatefulIncrementalDecoder.__repr__cCsd|_d|_tƒ|_dSrj)r*ÚorœrŸr8rrrrÊ” sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|jƒ|d|fS)NrDrÀ)r*rÍr rŸ)r1r*rÍrrrÚgetstate™ sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|ƒ|_t|dƒ\}}|dA|dA|_|_dS)NrÀrD)rœrŸÚdivmodr*rÍ)r1ÚstaterŸrr*rÍrrrÚsetstate s z#StatefulIncrementalDecoder.setstateFcCsˆd}|D]d}|jdkrD|tdƒkr6|jrB|| ¡7}ql|j |¡q|j |¡t|jƒ|jkr|| ¡7}q|r„|jr„|| ¡7}|S)NrrÚ.)r*ÚordrŸÚ process_wordr4r)r1ÚinputÚfinalÚoutputr rrrÚdecode£ s     z!StatefulIncrementalDecoder.decodecCs¸d}|jdtdƒkr6tdt|jdd…p,dƒƒ|_nv|jdtdƒkrhtdt|jdd…p^dƒƒ|_nD|j d¡}t|ƒ|jkr|d|j7}|jr¤|d|j…}|d 7}tƒ|_|S) Nrrr*écrDrÍrÓú-rÒ) rŸrÓr‘Úintr*rÍrØrrœ)r1r×rrrrÔ´ s   z'StatefulIncrementalDecoder.process_wordc Cs6|jr2|dkr2t d¡}tjd|jdddd|dSdS)NÚ test_decoderr!)r—ÚencoderØÚincrementalencoderÚ streamreaderÚ streamwriterÚincrementaldecoder)Ú codecEnabledrÈÚlookupÚ CodecInforÝ)Úclsr—Úlatin1rrrÚlookupTestDecoderÆ s üz,StatefulIncrementalDecoder.lookupTestDecoderN)rÇ)F) rrrr2rÌrÊrÎrÑrØrÔrâÚ classmethodrçrrrrrÆ{ s  rÆc@seZdZgd¢Zdd„ZdS)ÚStatefulIncrementalDecoderTest))r Fza.b.c.d.)óoiabcdTúabcd.)s oi...abcd...Trë)si.o6.x.xyz.toolongtofit.Fzx-----.xyz---.toolon.)s i.i2.o6xyzTzxy----.z-----.)si.o3.i6.abcdefghijklmnopTz abc.ghi.mno.)s;i.o29.a.b.cde.o15.abcdefghijabcdefghij.i3.a.b.c.d.ei00k.l.mTzÊa----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.l--------------.m--------------.cCs\|jD]$\}}}tƒ}| | ||¡|¡qtƒ}| | d¡d¡| | dd¡d¡dS)NrêrrMrDrë)Ú test_casesrÆr›rØ)r1rÕÚeofr×ÚdrrrrÜõ s z+StatefulIncrementalDecoderTest.test_decoderN)rrrrìrÜrrrrréÕ sréc@s€eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z e  ejjd¡dd„ƒZeje  ejjd¡dd„ƒƒZdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Z d0d1„Z!d2d3„Z"d4d5„Z#d6d7„Z$d8d9„Z%d:d;„Z&dd?„Z(d@dA„Z)dBdC„Z*dDdE„Z+dFdG„Z,dHdI„Z-dJdK„Z.dLdM„Z/dNdO„Z0dPdQ„Z1dRdS„Z2dTdU„Z3dVdW„Z4dXdY„Z5dZd[„Z6d\d]„Z7d^d_„Z8ej9d`da„ƒZ:dbdc„Z;ddde„Zdjdk„Z?dldm„Z@dndo„ZAdpdq„ZBdrds„ZCdtdu„ZDdvdw„ZEdxdy„ZFdzd{„ZGd|d}„ZHd~d„ZId€d„ZJd‚dƒ„ZKd„d…„ZLd†d‡„ZMdˆd‰„ZNdŠd‹„ZOdŒd„ZPdŽd„ZQdd‘„ZRd’d“„ZSd”S)•ÚTextIOWrapperTestcCs"d|_d d¡|_t tj¡dS)NsAAA BBB CCC DDD EEE sAAA BBB CCC DDD EEE rÓ)ÚtestdatarØÚ normalizedrr‘r’r8rrrr“ s zTextIOWrapperTest.setUpcCst tj¡dSr3rr8rrrr” szTextIOWrapperTest.tearDowncCs´| d¡}| |d¡}| |¡}|j|ddd| |jd¡| |jd¡|j|ddd | |jd¡| |jd¡| d | ¡¡|jt |j|d d |jt |j|d d dS)Nóé rr!ú ©r#rxFúutf-8T)r#Úline_bufferingõé r;rwr¹) rÍrÈrÕr2r›r#rör´rržr‹©r1r r rrrrrrí s   z"TextIOWrapperTest.test_constructorcCsf|j |j¡}~|j |j¡}| tt|¡| ttfd|jd¡|  |  ¡¡|  | d¡d¡dS)Nrïrr) rÕrðrrr¬r‡r‹rrPr2rLr›©r1rrrrrrñ s þz$TextIOWrapperTest.test_uninitializedcCsP| ¡}| |¡}| td¡|j|ddWdƒn1sB0YdS)Nzis not a text encodingÚhexr")rÍrÊr‡Ú LookupErrorrÕ)r1r r rrrÚ*test_non_text_encoding_codecs_are_rejected# s zr¿z4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>r z=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>rÀz><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>) rÍrÝrÈrÕrrÁr¬r—r¹rŸr«)r1r9r rrÚmodnamerrrrÂ@ s*  ÿ ÿ ÿ ÿ zTextIOWrapperTest.test_reprc Csd| ¡}| |¡}t |d|¡0z t|ƒWnty@Yn0Wdƒn1sV0YdSrÃ)rÍrÕrrÄr¬rÅ©r1r9rrrrrrÇT s   z%TextIOWrapperTest.test_recursive_reprcCsv| ¡}| |d¡}|j|ddd}| d¡| | ¡d¡| d¡| | ¡d¡| d ¡| | ¡d ¡dS) NrÚ T©rxröÚXrMzY ZsXY ZzA BsXY ZA B)rÍrÊrÕr6r›rrørrrÚtest_line_buffering^ s    z%TextIOWrapperTest.test_line_bufferingcCs| ¡}| |d¡}|j|ddd}| d¡| | ¡d¡|jdd| | ¡d ¡| d ¡| | ¡d ¡| d ¡| | ¡d ¡|jdd| | ¡d ¡| d¡| | ¡d ¡| ¡|jdd| |jd¡|jdd| ¡|jdd| |jd¡dS)NrrFrzAB CrMT)rösAB CzDEF Gs AB CDEF GÚHs AB CDEF GHZIJ)rÍrÊrÕr6r›rÚ reconfigurerörørrrÚtest_reconfigure_line_bufferingi s,          z1TextIOWrapperTest.test_reconfigure_line_bufferingzutf-8 mode is enabledc Csˆttjƒ}z`dD]}|tjvrtj|=qt d¡}| ¡}| |¡}| |j|¡Wtj  ¡tj  |¡ntj  ¡tj  |¡0dS)N)ÚLC_ALLÚLANGÚLC_CTYPEF) Údictr¼ÚenvironÚlocaleÚgetpreferredencodingrÍrÕr›r#ÚclearÚupdate)r1Z old_environÚkeyZcurrent_locale_encodingr rrrrrÚtest_default_encoding„ s      ÿ z'TextIOWrapperTest.test_default_encodingcsPddl‰| ¡}‡fdd„|_| t|j|¡‡fdd„|_| t|j|¡dS)Nrcs ˆjdSrj)ZINT_MAXr©Ú _testcapirrrH rMz8TextIOWrapperTest.test_device_encoding..cs ˆjdSrj)ZUINT_MAXrrrrrHŸ rM)rrÍr<rr«rÕr5rrrÚtest_device_encoding— s z&TextIOWrapperTest.test_device_encodingcCsJ| ¡}|j|dd}| |jd¡| |¡}| |j¡t |j¡dS)Nrõr")rÍrÕr›r#ÚassertIsNotNonerÈrã©r1r rrrrrÚ test_encoding¢ s   zTextIOWrapperTest.test_encodingcCs¦| d¡}|j|dd}| t|j¡| d¡}|j|ddd}| t|j¡| d¡}|j|ddd}| | ¡d¡| d¡}|j|ddd}| | ¡d ¡dS) Nsabc ÿ rÓr"rÇ©r#rrëzabc Úreplaceuabc � )rÍrÕrÚ UnicodeErrorrPr›rrrrÚtest_encoding_errors_reading« s    z.TextIOWrapperTest.test_encoding_errors_readingcCsÊ| ¡}|j|dd}| t|jd¡| ¡}|j|ddd}| t|jd¡| ¡}|j|dddd}| d ¡| ¡| | ¡d ¡| ¡}|j|dd dd}| d ¡| ¡| | ¡d ¡dS) NrÓr"õÿrÇrrër)r#rrxu abcÿdef sabcdef rsabc?def )rÍrÕrrr6rfr›rrrrrÚtest_encoding_errors_writing½ s( ÿ  ÿ z.TextIOWrapperTest.test_encoding_errors_writingc Cs(gd¢}dgd¢gd|gdgd¢gdddggd gd ¢gg}d }|D]à}td |¡ |¡ƒ}d D]Â}td dƒD]²}|D]¨\}} | | |¡|¡} |j| ||d} |ràg} |  d¡} | dkrºqè| t | ƒd¡|   | |   ¡¡q¦nt | ƒ} t | | ƒD]\}}| ||¡qò| t | ƒt | ƒ¡qtqlq^qBdS)N)úunix ú windows zos9 úlast Únonl)rzwindows zos9 r r!rr)rrz os9 last r!rózunix windows z os9 last nonlú )z unix windows z os9 z last nonl)rõr!úutf-16ú utf-16-leú utf-16-beúutf-32ú utf-32-leú utf-32-be)FTrDr¥©rxr#rV)r r„rÝr-rÈrÍrÕrPr›rr4r´r,Úzip)r1Z input_linesrèÚ encodingsr#rZdo_readsrrxZ exp_linesr°ÚtextioZ got_linesÚc2Zgot_lineZexp_linerrrÚ test_newlinesÕ s8    û ÿ zTextIOWrapperTest.test_newlinescCsºd}| dd¡ dd¡}d| d¡jddfd| d¡jddfd gd ¢fd gd ¢fd gd¢ffD]R\}}| |¡}|j|d|d}| | ¡|¡| d¡| | ¡d  |¡¡qbdS)NsAAA BBB CCC DDD EEE FFF GGGs rÂó rÓT)Úkeependsrr)zAAA zBBB z CCC DDD EEE úFFF ÚGGGró)zAAA BBB CCC DDD EEE r1r2r")z AAA BBB CCC zDDD zEEE z FFF z GGGrôr) rrØÚ splitlinesrÍrÕr›rrArPr„)r1rðrñrxrºrFÚtxtrrrÚtest_newlines_inputÿ s   û   z%TextIOWrapperTest.test_newlines_inputcCs˜dddddœ}d|tjfgt| ¡ƒ}|D]d\}}| ¡}|j|d|d}| d¡| d¡| d ¡| ¡| |j d ¡| |  ¡|¡q.dS) NsAAA BBB CCC X Y ZsAAA BBB CCC X Y ZsAAA BBB CCC X Y Z)rrr"rórÓrôzAAA BzBB CCC zX Y ZF) r¼ÚlinesepÚsortedÚitemsrÍrÕr6rfr›rlr)r1ZtestdictrèrxrºrFr4rrrÚtest_newlines_output sü    z&TextIOWrapperTest.test_newlines_outputcsZg‰|j‰G‡‡fdd„dˆƒ}|ƒ}|j|dd}| d¡~t ¡| dgˆ¡dS)NcseZdZ‡‡fdd„ZdS)z4TextIOWrapperTest.test_destructor..MyBytesIOcsˆ | ¡¡ˆ |¡dSr3)r4rrnr8©r"r'rrrn% sz:TextIOWrapperTest.test_destructor..MyBytesIO.closeNrrr:rrÚ MyBytesIO$ sr;rÓr"rbrR)rÍrÕr6rrr›)r1r;r rrrr:rr! s z!TextIOWrapperTest.test_destructorcsLg‰G‡fdd„d|jƒ}| ¡}||dd}~t ¡| ˆgd¢¡dS)Ncs:eZdZ‡‡fdd„Z‡‡fdd„Z‡‡fdd„Z‡ZS)z.MyTextIOcs4ˆ d¡z tƒj}Wnty(Yn0|ƒdSrjrr­rrrr2 s    zDTextIOWrapperTest.test_override_destructor..MyTextIO.__del__csˆ d¡tƒ ¡dSrUrr8rrrrn: s zBTextIOWrapperTest.test_override_destructor..MyTextIO.closecsˆ d¡tƒ ¡dSrrr8rrrrf= s zBTextIOWrapperTest.test_override_destructor..MyTextIO.flushrrrrXrÚMyTextIO1 sr<rÓr"r)rÕrÍrrr›)r1r<r rrrrrr´/ s z*TextIOWrapperTest.test_override_destructorc Cs–| ¡}t ¡r}| t¡| |¡jWdƒn1s>0YtsZ| |j ¡n|j durt|  |j j t ¡Wdƒn1sˆ0YdSr3) rirr¸rrrÕr¹rºr=r»r›r¼rmr½rrrr¾F s  * z/TextIOWrapperTest.test_error_through_destructorcCsŒdD]€}dD]t}|jtjd|d}||_| | d¡d¡| ¡|jtjd|d}||_| | ¡d¡| | ¡d¡| ¡}| |  d¡d¡| | d¡d¡|  d¡| | d ¡d ¡| | d ¡d ¡| | d ¡d ¡| | ¡d ¡| | ¡|¡| |  d¡d¡| |  dd ¡|¡| | d¡d¡| |  |¡|¡| | ¡d¡|  d¡r||  ||¡| ¡qqdS)N)rDrVr©r÷r[rHrëééé é!é?é@éA)rÓr!rõúw+r"rbr©úr+rrVr rDr)rÚdefÚutf) r$rr’r&r›r6rnrBrPrArçÚmulti_line_test)r1Ú chunksizeÚencr(ÚcookierrrÚ test_basic_ioU s6     zTextIOWrapperTest.test_basic_ioc Csº| d¡| ¡d}g}dD]V}g}t|ƒD]}| ||t|ƒ¡q.d |¡d}| | ¡|f¡| |¡q| d¡g} | ¡} | ¡}|sšqª|  | |f¡q„|  | |¡dS)Nru sÿ࿿￿)rrDrVr©r÷r[ér>r?r@é>rArBrCrrr) rArIr-r4rr„rBr6r´r›) r1r(rJÚsampleZwlinesr|Úcharsr*ÚlineZrlinesrrrrrHr s&    z!TextIOWrapperTest.multi_line_testcCsâ|jtjddd}| ¡}| d¡| ¡}| d¡| ¡}| d¡| | ¡|¡| | ¡d¡| | ¡|¡| | ¡d¡| | ¡|¡| d¡|D]}| |d¡| t |j¡q¦| | ¡|¡|  ¡dS)NrDrõr"uÿ r) r$rr’rBr6rAr›r´rrmrn)r1r(Úp0Úp1Zp2rQrrrÚ test_tellingˆ s$     zTextIOWrapperTest.test_tellingc Cstƒ}|d}d|}t| d¡ƒ}| t|ƒt|ƒ¡d}t| d¡ƒ}||}| tjd¡}| |d¡Wdƒn1s„0Y|jtjdddL}|  |¡} | | t |dƒ¡| |  ¡|¡| |  ¡|¡Wdƒn1sò0YdS) NrVr rõõ袈 r°r r"rÓ) r)r rÝr›rr$rr’r6rPrirBr´) r1Ú chunk_sizeZ prefix_sizeZu_prefixÚprefixZu_suffixÚsuffixrQr(r…rrrÚ test_seekingœ s, zTextIOWrapperTest.test_seekingcCsŽd}| tjd¡}| |¡Wdƒn1s20Y|jtjddd,}|jd|_| ¡| ¡Wdƒn1s€0YdS)Nsà¿¿ r°r rõr"rV)r$rr’r6r&r´rB)r1rr(rrrÚtest_seeking_too­ s(z"TextIOWrapperTest.test_seeking_toocsŒd‰d‡‡fdd„ }dt_zdtjD]\}}}||ƒq"tjD]8\}}}ˆt|ƒd}d|}|d}||||ƒq.test_seek_and_tell_with_datarDrVó.)r)rÆrârérìr)r1r^rÕÚ_ÚoffsetrWr\rr]rrž¸ s z$TextIOWrapperTest.test_seek_and_tellcCsœ|jtjddd}| d¡| ¡|jtjddd}| | ¡d¡| ¡}| | ¡d¡| ¡}| |¡| | ¡d¡| | ¡|¡| ¡dS)Nr¯Úeuc_jpr"u AB ã†ãˆ r zAB uã†ãˆ ) r$rr’r6rnr›r´rBrA)r1r(rRrSrrrÚtest_multibyte_seek_and_tellç s  z.TextIOWrapperTest.test_multibyte_seek_and_tellcCsx|jtjddd}| d¡| ¡}| d¡| |¡| d¡| ¡|jtjddd}| | ¡d¡| ¡dS) Nr¯Ú euc_jis_2004r"uæ̀õæuÌ€r uæ̀̀) r$rr’r6rBrArnr›r´)r1r(rRrrrÚtest_seek_with_encoder_stateö s    z.TextIOWrapperTest.test_seek_with_encoder_statecCs–d}d}|D]„}| ¡}|j||d}| |¡| |¡| d¡| | ¡|d¡| d¡| | ¡|d¡| | ¡|d |¡¡q dS)NZ 1234567890)r#r$r%r&r'r(r"rrV)rÍrÕr6rAr›rPrrÝ)r1rrèr#rFr(rrrÚtest_encoded_writes s    z%TextIOWrapperTest.test_encoded_writescCs0Gdd„d|jƒ}| |ƒ¡}| t|j¡dS)Nc@seZdZdd„ZdS)z5TextIOWrapperTest.test_unreadable..UnReadablecSsdSrxrr8rrrr= sz>TextIOWrapperTest.test_unreadable..UnReadable.readableNrzrrrrÚ UnReadable srh)rÍrÕrrmrP)r1rhr4rrrÚtest_unreadable s z!TextIOWrapperTest.test_unreadablecCs>| | d¡¡}d}| d¡}|s$q.||7}q| |d¡dS)NsAA BBrrDzAA BB©rÕrÍrPr›©r1r4Úreadsr)rrrÚtest_read_one_by_one s  z&TextIOWrapperTest.test_read_one_by_onecCsh| | d¡¡}| | ¡gd¢¡| d¡| | d¡gd¢¡| d¡| | d¡ddg¡dS)NsAA BB CC)úAA úBB ZCCrr[rnro)rÕrÍr›rrA©r1r4rrrr( s   z TextIOWrapperTest.test_readlinescCs>| | d¡¡}d}| d¡}|s$q.||7}q| |d¡dS)Ns‚AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Brr[zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BrjrkrrrÚtest_read_by_chunk1 s  z$TextIOWrapperTest.test_read_by_chunkcCs@gd¢}| ¡}| |¡}| |¡| ¡| | ¡d¡dS©N)r ZcdZefrC)rÍrÕrµrfr›r©r1r'rFr4rrrr`< s   z!TextIOWrapperTest.test_writelinescCsDtgd¢ƒ}| ¡}| |¡}| |¡| ¡| | ¡d¡dSrr)rrÍrÕrµrfr›rrsrrrraD s    z*TextIOWrapperTest.test_writelines_userlistcCsF| | ¡¡}| t|jgd¢¡| t|jd¡| t|jd¡dS)NrrR)rÕrÍrržrµrprrrrcL sz'TextIOWrapperTest.test_writelines_errorcCsF|j| |j¡dd}d}| d¡}|s*q4||7}q| ||j¡dS)NrÓr"rrD)rÕrÍrðrPr›rñrkrrrÚtest_issue1395_1R s  z"TextIOWrapperTest.test_issue1395_1cCsL|j| |j¡dd}d|_d}| d¡}|s0q:||7}q | ||j¡dS)NrÓr"r÷r©rÕrÍrðr&rPr›rñrkrrrÚtest_issue1395_2^ s  z"TextIOWrapperTest.test_issue1395_2cCsj|j| |j¡dd}d|_| d¡}|| d¡7}|| ¡7}|| ¡7}|| ¡7}| ||j¡dS©NrÓr"r÷)rÕrÍrðr&rPr´r›rñ©r1r4rlrrrÚtest_issue1395_3j s    z"TextIOWrapperTest.test_issue1395_3cCsD|j| |j¡dd}d|_| d¡}|| ¡7}| ||j¡dSrwrurxrrrÚtest_issue1395_4u s   z"TextIOWrapperTest.test_issue1395_4cCsX|j| |j¡dd}d|_| d¡}| ¡}| d¡| |¡| | d¡d¡dS)NrÓr"r÷rzBBB )rÕrÍrðr&rPrBrAr›)r1r4rlrrrrÚtest_issue1395_5} s   z"TextIOWrapperTest.test_issue1395_5cCs2| |j¡}|j|dd}| | ¡| ¡¡dS©NrÓr")rÍrðrÕr›r>)r1rŸr4rrrÚtest_issue2282‡ s z TextIOWrapperTest.test_issue2282c Cstj}dD]}|j|d|d"}| d¡| ¡}Wdƒn1sH0Y| |d¡&}| | ¡d |¡¡Wdƒn1sŠ0Y|j|d|d}| d¡Wdƒn1sÄ0Y| |d¡&}| | ¡d |¡¡Wdƒq 1s0Yq dS) N©ú utf-8-sigr#r&r¯r"Úaaar³r ÚxxxÚaaaxxx)rr’r$r6rBr›rPrÝ©r1ÚfilenameÚcharsetr(rrrrÚtest_append_bom s  &4(z!TextIOWrapperTest.test_append_bomc Csðtj}dD]à}|j|d|d"}| d¡| ¡}Wdƒn1sF0Y|j|d|d8}| |¡| d¡| d¡| d¡Wdƒn1sž0Y| |d ¡&}| | ¡d  |¡¡Wdƒq 1sà0Yq dS) Nr~r¯r"r€rEZzzzrÚbbbr³Zbbbzzz) rr’r$r6rBrAr›rPrÝrƒrrrÚ test_seek_bomœ s &   (zTextIOWrapperTest.test_seek_bomc Csâtj}dD]Ò}|j|d|d}| d¡Wdƒn1s>0Y|j|d|d2}| d¡| d|j¡| d¡Wdƒn1s0Y| |d¡&}| | ¡d  |¡¡Wdƒq 1sÒ0Yq dS) Nr~r¯r"r€r rrr³r‚) rr’r$r6rAr·r›rPrÝ)r1r„r…r(rrrÚtest_seek_append_bom« s( (z&TextIOWrapperTest.test_seek_append_bomcCs€| tjd¡}| |jd¡Wdƒn1s20Y|jtjddd}| |jd¡Wdƒn1sr0YdS)Nr¯rÇr©r)r$rr’r›rr­rrrÚtest_errors_property¸ s,z&TextIOWrapperTest.test_errors_propertyc sòt ¡‰|jtjdddl‰‡‡fdd„‰‡fdd„tdƒDƒ}t |ˆj¡t  d ¡Wdƒn1sn0YWdƒn1sŒ0Y| tj¡<‰ˆ  ¡}tdƒD]}|  |  d |¡d¡q´Wdƒn1sä0YdS) Nr¯rDr±csd|}ˆ ¡ˆ |¡dS)Nú Thread%03d )rqr6)rGÚtext)Úeventr(rrÚrunà sz1TextIOWrapperTest.test_threads_write..runcsg|]}tjˆ|fd‘qS)rÁrr)rrrrÇ sÿz8TextIOWrapperTest.test_threads_write..r¢r rŒ) r`rar$rr’r-r%rcrdrerPr›r)r1r(ZcontentrGr)rŽr(rrÚtest_threads_write¾ s ÿF z$TextIOWrapperTest.test_threads_writecsŠ|j| |j¡dd‰g‰‡‡fdd„}|ˆ_| tˆj¡| ˆj¡| ˆj j¡| ˆ¡|  ˆd¡|  ˆd¡dd„ˆ_dS) NrÓr"cs ˆjˆjjgˆdd…<tƒ‚dSr3)rlrŸrmr©rlr4rrrGÕ sz>TextIOWrapperTest.test_flush_error_on_close..bad_flushrrDcSsdSr3rrrrrrHß rMz=TextIOWrapperTest.test_flush_error_on_close..) rÕrÍrðrfrrmrnrIrlrŸrJrÉrr‘rrPÐ s  z+TextIOWrapperTest.test_flush_error_on_closecCs¾| |j¡}dd„}dd„}||_|j|dd}||_| t¡}| ¡Wdƒn1s^0Y| |jj d¡|  |jj t¡| |jj j d¡|  |j ¡d d „|_d d „|_dS) NcSs tdƒ‚dSrÊršrrrrrGã sz>TextIOWrapperTest.test_close_error_on_close..bad_flushcSs tdƒ‚dSrËršrrrrrÌå sz>TextIOWrapperTest.test_close_error_on_close..bad_closerÓr"rÍrÎcSsdSr3rrrrrrHò rMz=TextIOWrapperTest.test_close_error_on_close..cSsdSr3rrrrrrHó rM)rÍrðrnrÕrfrrmr›rjr}rÏrÐrJrl©r1rŸrGrÌr4rÒrrrrÓá s  &  z+TextIOWrapperTest.test_close_error_on_closecCsÂ| |j¡}dd„}dd„}||_|j|dd}||_| t¡}| ¡Wdƒn1s^0Y| dt|j ƒ¡|  |j j t¡| dt|j j ƒ¡|  |j ¡d d „|_d d „|_dS) NcSst‚dSr3rÔrrrrrGø szLTextIOWrapperTest.test_nonnormalized_close_error_on_close..bad_flushcSst‚dSr3rÖrrrrrÌú szLTextIOWrapperTest.test_nonnormalized_close_error_on_close..bad_closerÓr"r×rÕcSsdSr3rrrrrrH rMzKTextIOWrapperTest.test_nonnormalized_close_error_on_close..cSsdSr3rrrrrrH rM)rÍrðrnrÕrfrrØrÙrirjrÏrÐrJrlr’rrrrÚõ s  &  z9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j| |j¡dd}| ¡| ¡| ¡| t|j¡dSr|)rÕrÍrðrnrr‹rfrprrrrQ s z"TextIOWrapperTest.test_multi_closecCs8| | |j¡¡}| |j|j¡| |j|jd¡dSr+)rÕrwrðrr{rBrArprrrrÝ sz!TextIOWrapperTest.test_unseekablecCsV|j| |j¡dd}| |j¡}| t¡||_Wdƒn1sH0YdSr|)rÕrÍrðrrrŸ)r1r4rFrrrrß s  z*TextIOWrapperTest.test_readonly_attributescCsX| gd¢¡}|j|ddd}| | d¡d¡| | ¡d¡| t|ƒdd g¡dS) N©rRrAs ghi jkl opq rÓrrôr÷Zabcdzefghi zjkl zopq )rLrÕr›rPr´r,©r1r9r4rrrÚ test_rawio s zTextIOWrapperTest.test_rawiocCsV| gd¢¡}|j|dddd}| d¡| d¡| d¡| d  |j¡d ¡dS) Nr“rÓrT)r#rxrýÚ1z23 4Ú5rMs123 45)rLrÕr6r›r„r.r”rrrÚtest_rawio_write_through' s ÿ   z*TextIOWrapperTest.test_rawio_write_throughcs¼gg‰‰G‡‡fdd„d|jƒ}| ¡}d}||t|ƒdƒ}|j|ddd}| d¡}| |¡| ˆ¡| ˆ¡| |  ¡d¡g‰| |d ¡| ˆ¡| |  ¡|d ¡dS) Ncs,eZdZ‡‡fdd„Z‡‡fdd„Z‡ZS)zBTextIOWrapperTest.test_bufio_write_through..BufferedWritercsˆ d¡tƒj|i|¤ŽSr7r©r1r}rK)rYÚ flush_calledrrrf6 s zHTextIOWrapperTest.test_bufio_write_through..BufferedWriter.flushcsˆ d¡tƒj|i|¤ŽSr7)r4rWr6r™)rYÚ write_calledrrr69 s zHTextIOWrapperTest.test_bufio_write_through..BufferedWriter.write)rrrrfr6r\r©ršr›rXrrÊ5 srÊrôrVrÓT)r#rýrMr¥r) rÊrÍrrÕrØr6rJrIr›r)r1rÊrZrr°r,rrrœrÚtest_bufio_write_through1 s" ÿ     z*TextIOWrapperTest.test_bufio_write_throughcCs| g¡}|j|ddd}| d¡|jdd| |jd¡| d |j¡d¡| d ¡| d |j¡d ¡|jd d| |jd ¡| d ¡| ¡| d |j¡d ¡| ¡|jdd| |jd ¡|jdd| ¡|jdd| |jd¡dS)NrÓrrôr–T)rýrMr½Z23rªFZ45rz) rLrÕr6rr›rýr„r.rfrÿrrrÚtest_reconfigure_write_throughQ s(         z0TextIOWrapperTest.test_reconfigure_write_throughcCs`| | d¡¡}| t|jd¡| | d¡¡}| t|j¡| | d¡¡}| t|j¡dS)Nr rD)rÕrßrržrPr´rùrrrÚtest_read_nonbytesh s z$TextIOWrapperTest.test_read_nonbytescCs`t d¡}t |dd¡$tjt d¡dd}Wdƒn1sB0Y| t|j d¡dS)NÚrot13Ú_is_text_encodingTófoor"Zbar) rÈrãrrÄrrÕrÍrržr6)r1r rrrrrÚtest_illegal_encoderr s 2z&TextIOWrapperTest.test_illegal_encodercs¢‡fdd„‰ˆƒ}ˆ t|jd¡ˆƒ}ˆ t|j¡ˆƒ}ˆ t|j¡‡fdd„}|dƒ}ˆ t|jd¡|dƒ}ˆ t|jd¡|dƒ}ˆ t|jd¡dS) Ncs>t d¡}d|_z ˆjˆ d¡ddd}Wd|_nd|_0|S)NÚquopriTsaaaaaarr)F)rÈrãr¡rÕrÍ)r¤rrr8rrÚ_make_illegal_wrapper} s  ÿzETextIOWrapperTest.test_illegal_decoder.._make_illegal_wrapperrDcs`G‡fdd„dƒ‰‡fdd„}t d¡}t |d|¡ˆƒWdƒS1sR0YdS)NcseZdZ‡fdd„ZdS)z^TextIOWrapperTest.test_illegal_decoder.._make_very_illegal_wrapper..BadDecodercsˆSr3rr8©Úgetstate_ret_valrrrΓ szgTextIOWrapperTest.test_illegal_decoder.._make_very_illegal_wrapper..BadDecoder.getstateN)rrrrÎrr¦rrÚ BadDecoder’ sr¨csˆƒSr3r)r¿)r¨rrÚ_get_bad_decoder• szdTextIOWrapperTest.test_illegal_decoder.._make_very_illegal_wrapper.._get_bad_decoderr¤rá)rÈrãrrÄ)r§r©r¤)r¥)r¨r§rÚ_make_very_illegal_wrapper‘ s  ÿzJTextIOWrapperTest.test_illegal_decoder.._make_very_illegal_wrapperr;r)rDrV)rržrPr´)r1rrrªr)r¥r1rÚtest_illegal_decoderz s  z&TextIOWrapperTest.test_illegal_decodercKs |jj}dj||d}td|ƒS)Na›if 1: import codecs import {iomod} as io # Avoid looking up codecs at shutdown codecs.lookup('utf-8') class C: def __init__(self): self.buf = io.BytesIO() def __del__(self): io.TextIOWrapper(self.buf, **{kwargs}) print("ok") c = C() )ÚiomodrKú-c)rrrCr)r1rKr¬ÚcoderrrÚ_check_create_at_shutdown¢ s òz+TextIOWrapperTest._check_create_at_shutdowncCs>| ¡\}}}|r&| |j| ¡¡n| d| ¡ ¡¡dS)NÚok)r¯rÙÚshutdown_errorrØr›Ústrip©r1ÚrcÚoutrÒrrrÚ(test_create_at_shutdown_without_encoding· sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd\}}}| |¡| d| ¡ ¡¡dS)NrõrÇrr°)r¯rJr›rØr²r³rrrÚ%test_create_at_shutdown_with_encodingÀ s ÿ  z7TextIOWrapperTest.test_create_at_shutdown_with_encodingcCs@tdƒ}| |d¡}t| ¡ƒ ¡}| | d¡| d¡¡dS)NsJust some random string rõrg)ÚMemviewBytesIOrÕÚ_to_memoryviewrr.r›rPrØ)r1r rrZ bytes_valrrrÚtest_read_byteslikeÆ s z%TextIOWrapperTest.test_read_byteslikec CsdGdd„dtƒ}tdƒD],}z|j|ƒddWqtyBYq0qdd„|_|j|ƒdd}dS)Nc@s$eZdZdd„Zdd„Zdd„ZdS)z,TextIOWrapperTest.test_issue22849..FcSsdSr7rr8rrrr=Ó rMz5TextIOWrapperTest.test_issue22849..F.readablecSsdSr7rr8rrrr9Ô rMz5TextIOWrapperTest.test_issue22849..F.writablecSsdSr7rr8rrrr>Õ rMz5TextIOWrapperTest.test_issue22849..F.seekableN)rrrr=r9r>rrrrÚFÒ sr»r¥rõr"cSsdSr+r©rÞrrrrHÝ rMz3TextIOWrapperTest.test_issue22849..)Úobjectr-rÕrrB)r1r»r*rrrrrÚtest_issue22849Ñ s   z!TextIOWrapperTest.test_issue22849cCs²d d¡d d¡}| |¡}|j|ddd}| | ¡d¡| |j¡|jddWdƒn1sl0Y| |j¡|jdd Wdƒn1s¤0YdS) Nõabcé ræõdéf Úutf8rrôrõr"rw)rÝrÍrÕr›r´rr{r)r1rr9r4rrrÚtest_reconfigure_encoding_readà s *z0TextIOWrapperTest.test_reconfigure_encoding_readcCsT| ¡}|j|ddd}| d¡|jdd| d¡| ¡| | ¡d¡dS) NrÓrrôzfoo rr"r÷sfoo é )rÍrÕr6rrfr›rr”rrrÚ test_reconfigure_write_fromasciiì s   z2TextIOWrapperTest.test_reconfigure_write_fromasciicCs´| ¡}|j|ddd}| d¡|jdd| | ¡d¡| d¡| ¡| | ¡d ¡| ¡}|j|d dd}| d ¡|jd d| d¡| ¡| | ¡d ¡dS)Nrærrôr¿rõr"sabcé rÀs abcé déf rÓúabc rs abc déf )rÍrÕr6rr›rrfr”rrrÚtest_reconfigure_writeø s      z(TextIOWrapperTest.test_reconfigure_writecCsd| ¡}dd„|_d|_|j|ddd}| d¡|jdd| d ¡| ¡| | ¡d ¡dS) NcSsdSrxrrrrrrHrMzGTextIOWrapperTest.test_reconfigure_write_non_seekable..rÓrrôrÄrr"rÀs abc déf ) rÍr>rArÕr6rrfr›rr”rrrÚ#test_reconfigure_write_non_seekable s    z5TextIOWrapperTest.test_reconfigure_write_non_seekablecCsî| | ¡ddd¡}|jdd| |jd¡| |jd¡| d¡|jdd| |jd¡| |jd¡|jdd | |jd¡| |jd¡| d ¡|jd dd | |jd ¡| d¡| | ¡d¡| |  ¡  ¡d¡dS)NrÓrrr"úLF rórwrërŠúCRLF rõrôrÇrzLF CRLF s LF CRLF ) rÕrÍrr›r#rr6rArPr«rrprrrÚtest_reconfigure_defaultss"      z+TextIOWrapperTest.test_reconfigure_defaultscCs¼| d¡}|j|ddd}|jdd| | ¡d¡| d¡}|j|ddd}|jdd| | ¡d¡| d¡}|j|dd d}|jdd| | ¡d ¡| d ¡}|j|ddd}|jd d| | ¡d ¡| d ¡}|j|dd d}|jdd| | ¡d¡|j| ¡dd d}|jdd| d¡|jdd| d¡|jdd| d¡|jd d| d¡|jdd| d¡dtjd}| | ¡  ¡  d¡|¡dS)NsCR EOFrÓrrwzCR rzCR s CR LF EOFr"zCR LF s LF CR EOFzLF CR s CR CRLF EOFróz CR CRLF zlinesep rÇrÈr6zLF LF CR CRLF ) rÍrÕrr›r´r6r¼r6r«rrØ)r1r9r4rºrrrÚtest_reconfigure_newline1sB                    z*TextIOWrapperTest.test_reconfigure_newlinecCsb|j| d¡dd}| d¡| ¡| ¡|j| d¡dd}| d¡| d¡| ¡dS)NstestrÓr"rDrÞ)rÕrÍrPrBr6rùrrrÚtest_issue25862Us   z!TextIOWrapperTest.test_issue25862N)Trrrr“r”rírñrür®rÂrÇrrr:r;rår_Ú utf8_moderrrèrrrrr.r5r9rr´r¾rLrHrTrYrZržrcrfrgrirmrrqr`rarcrtrvryrzr{r}r†rˆr‰r‹Ú no_tracingrrPrÓrÚrQrÝrßr•r˜rržrŸr£r«r¯r¶r·rºr¾rÂrÃrÅrÆrÉrÊrËrrrrrï sš       * /              (     $rïcs(eZdZ‡fdd„Z‡fdd„Z‡ZS)r¸csttƒ |¡ƒSr3)r¹rWr}©r1Zlen_rXrrr}eszMemviewBytesIO.read1csttƒ |¡ƒSr3)r¹rWrPrÎrXrrrPhszMemviewBytesIO.read)rrrr}rPr\rrrXrr¸as r¸cCs:t d¡}t|ƒt|ƒ|j}| |d|…¡t|ƒS)Nr*)r rÚitemsizeÚ frombytesr)rFZarrÚidxrrrr¹ks r¹c@s<eZdZeZdZdd„Zdd„Zdd„Zdd „Zd d „Z d S) ÚCTextIOWrapperTestú$LookupError: unknown encoding: asciicCsb| d¡}| |d¡}| |¡}|jt|j|dd| t|j¡|j |j¡}| tt |¡dS)Nròrr¹rw) rÍrÈrÕrr‹r2rPrðrr¬rørrrr5xs   z&CTextIOWrapperTest.test_initializationcCsÈt dtf¡Zt tjd¡}| |¡}|j|dd}| d¡||_ t   |¡}~t  ¡Wdƒn1sn0Y|  |ƒ|¡| tjd¡ }| | ¡d¡Wdƒn1sº0YdS)Nrr°rÓr"Z456defr³s456def)rrrrr¾r’rÊrÕr6rÞr;r<rr=r$r›rP)r1rZr rrr>r(rrrr?‚s   &z*CTextIOWrapperTest.test_garbage_collectioncCsjtdƒD]T}| | ¡| ¡¡}|j|dd}| | ¡| ¡¡}|j|dd}||_||_qt ¡dS)NrrÓr")r-rÏrLrÕZbuddyrr)r1r*Úb1Út1Úb2Út2rrrÚ!test_rwpair_cleared_before_textio“s z4CTextIOWrapperTest.test_rwpair_cleared_before_textiocCsD|j| ¡dd}| t¡|`Wdƒn1s60YdSr|)rÕrÍrrr&rùrrrÚ test_del__CHUNK_SIZE_SystemError¡s z3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemErrorcsÖd‰G‡fdd„d|jƒ}|ƒ}|j|dd}|j‰| d¡| d¡| g|j¡| t¡"| dˆd ¡Wdƒn1sˆ0Y| d g|j¡| d ¡| dˆ¡| d d d ˆg|j¡dS)NrâcseZdZ‡‡fdd„Z‡ZS)z.MockIOcst|ƒˆkrt‚tƒ |¡Sr3)rrÅrWr6rs)rYrVrrr6¬s zBCTextIOWrapperTest.test_internal_buffer_size..MockIO.write)rrrr6r\r©rVrXrÚMockIO«srÛrÓr"rbrFrÞrDrCZghir?r¤)rLrÕr&r6r›r.rrÅ)r1rÛrFrrrrÚrÚtest_internal_buffer_size¦s   0 z,CTextIOWrapperTest.test_internal_buffer_sizeN) rrrrr±r5r?rØrÙrÜrrrrrÒts rÒc@seZdZeZdZdS)ÚPyTextIOWrapperTestrÓN)rrrrrr±rrrrrÝÂsrÝc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚIncrementalNewlineDecoderTestcs‡‡fdd„}|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|ddƒˆjtˆjd d d ˆ ¡|d d ƒ|ddƒ|d d d d |dd d d |ddƒ|ddƒ|ddƒ|ddƒ|dd ƒ|ddƒ|ddƒ|ddƒ|d d ƒ|ddƒ|d d ƒdS)NcsJˆ ¡}ˆ ˆj|fi|¤Ž|¡ˆ |¡ˆ ˆj|fi|¤Ž|¡dSr3)rÎr›rØrÑ)r r…rKrЩÚdecoderr1rrÚ _check_decodeËs zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.._check_decodes袈u袈óèró¢óˆrMT)rÖrÂrr/rôz aó z s as袈 rUs袈 )rÚUnicodeDecodeErrorrØrÊ)r1ràrárrßrÚcheck_newline_decoding_utf8És4                    z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8csg‰|dur*t |¡ƒ‰‡‡‡fdd„}nd‰‡‡fdd„}| ˆjd¡|dƒ| ˆjd¡|dƒ| ˆjd¡|dƒ| ˆjd¡|d ƒ| ˆjd ¡|dƒ| d  ˆ¡d ¡ˆ ¡d }ˆdur∠¡ˆ |¡}| ˆ |¡d ¡| ˆjd¡dS) Ncs*ˆ |¡D]}ˆ ˆ t|gƒ¡¡q dSr3)rÝr4rØr )r…r ©ràÚencoderrrrÚ_decode_bytewise÷szNIncrementalNewlineDecoderTest.check_newline_decoding.._decode_bytewisecs|D]}ˆ ˆ |¡¡qdSr3)r4rØ)r…r))ràrrrrêýszabc rz abc)rrózabc rb)r"rrórzabc abcabc abcabc)rÈÚgetincrementalencoderr›Únewlinesr„rÊrÝrØ)r1ràr#rêrÕrrèrÚcheck_newline_decodingós0  z4IncrementalNewlineDecoderTest.check_newline_decodingcCspd}|D].}|ot |¡ƒ}|j|dd}| ||¡qt d¡ƒ}|j|dd}| |¡| t|jd¡dS)N) Nrõr!r#r$r%r&r'r(T©Ú translaterõr;)rÈÚgetincrementaldecoderÚIncrementalNewlineDecoderrírçrržrÑ)r1r+rJràrrrÚtest_newline_decoders  z2IncrementalNewlineDecoderTest.test_newline_decodercs<‡fdd„}ˆjddd}||ƒˆjddd}||ƒdS)NcsRˆ |jd¡ˆ | d¡d¡ˆ |jd¡ˆ | d¡d¡ˆ |jd¡dS)Nuà´€u਀)r›rìrØ)Údecr8rrÚ_check's z@IncrementalNewlineDecoderTest.test_newline_bytes.._checkFrîT)rñ)r1rôrórr8rÚtest_newline_bytes%s  z0IncrementalNewlineDecoderTest.test_newline_bytescCs\dD]&}t d¡ƒ}| ||¡}| |¡qt d¡ƒ}|j|dd}| | d¡d¡dS)N)rnr‰rDrVrõrrîråz )rÈrðrñrçr›rØ)r1rïràrrrÚtest_translate2s    z,IncrementalNewlineDecoderTest.test_translateN)rrrrçríròrõrörrrrrÞÇs *! rÞc@s eZdZdS)ÚCIncrementalNewlineDecoderTestNrrrrrr÷<sr÷c@s eZdZdS)ÚPyIncrementalNewlineDecoderTestNrrrrrrø?srøc@sÎeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Ze eed#ƒd$¡d%d&„ƒZd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/S)0Ú MiscIOTestcCst tj¡dSr3rr8rrrr”GszMiscIOTest.tearDowncCs||jjD]n}t|j|dƒ}| ||¡|dvr2qqd| ¡vsF|dkrZ| t|tƒ|¡q| d¡s| t||j ƒ¡qdS)N)r$Ú open_codeÚerrorr{ZSEEK_) rÚ__all__r€rÚlowerrIÚ issubclassrrçrú)r1r—rrrrÚ test___all__Js   zMiscIOTest.test___all__cCs||jtjddd}| |jd¡| ¡t dtf¡| tjd¡}Wdƒn1sZ0Y| |jtj¡| |j jtj¡| |j j jtj¡| |jd¡| |j jd¡| |j j jd¡| ¡| tjd¡}| |jd¡| |j jd¡| |j j jd¡|j|  ¡dd d }| |jd¡| |j jd¡| |j|  ¡¡| |j j|  ¡¡| ¡| ¡dS) Nr°rr±rÚUr³rDr–Fr0) r$rr’r›r¹rnrrïr—rŸr9r<)r1r(ÚgrrrÚtest_attributesUs.,zMiscIOTest.test_attributescCsNt ¡\}}| tj|¡| |d¡}| |j¡tjdkrJ| | ¡¡dS)Nr Úwin32) r¼r½rÃrnr$rårærJr>)r1r r¯r(rrrÚtest_open_pipe_with_appendqs     z%MiscIOTest.test_open_pipe_with_appendcCsddiddidddœdddœdddœddidd idddœdddœd ddœdd idd id ddœd ddœd ddœfD]œ}|jtjfi|¤Ž}| ¡| t|j¡| t|j¡| t|j¡| t|j ¡t |d ƒrä| t|j d¡| t|j ¡t |d ƒr| t|j d¡| t|j ¡t |dƒr6| t|j¡t |dƒrV| t|jtdƒ¡t |dƒrv| t|jtdƒ¡| t|j¡| t|j¡| t|jd¡| t|jd¡| t|j¡| t|j¡| t|jd|dvrêdnd¡| t|jg¡| tt|¡qpdS)Nr¹r¯r°rD©r¹r²rVrr r³rDrrýr}rêrŒrHr¦r rMr)r$rr’rnrr‹rfr<rÚ__iter__r]rýrPr}rŒrHrœr¦r´rrArBrIr6rµrü)r1rKr(rrrÚtest_io_after_close|sZñ       ÿzMiscIOTest.test_io_after_closecCsXGdd„dtƒ}|dƒ}| d|¡}||_||_t |¡}~~t ¡| |ƒ|¡dS)Nc@s eZdZdS)z*MiscIOTest.test_blockingioerror..CNrrrrrÚC­srrrD) rirr r)r;r<rrr=)r1rr)r r>rrrÚtest_blockingioerror«s  zMiscIOTest.test_blockingioerrorcCsD| |jtj¡| |jtj¡| |jtj¡| |jtj¡dSr3)rÏrúrbÚABCMetarãrÑrâr8rrrÚ test_abcs¸szMiscIOTest.test_abcscCs<|jtjdddH}| ||j¡| ||j¡| ||j¡| ||j¡Wdƒn1s`0Y| tjd¡H}| ||j¡| ||j¡| ||j¡| ||j¡Wdƒn1sÆ0Y| tjd¡H}| ||j¡| ||j¡| ||j¡| ||j¡Wdƒn1s.0YdS©Nr°rr±r¯) r$rr’rÏrúrãZassertNotIsInstancerÑrâ)r1Z abcmoduler(rrrÚ_check_abc_inheritance¿s,,z!MiscIOTest._check_abc_inheritancecCs| |¡dSr3)r r8rrrÚtest_abc_inheritanceÐszMiscIOTest.test_abc_inheritancecCs| t¡dSr3)r rr8rrrÚtest_abc_inheritance_officialÔsz(MiscIOTest.test_abc_inheritance_officialcOsht|i|¤Ž}t|ƒ}| t¡}d}t ¡Wdƒn1sB0Y| |t|jj dƒ¡dSr+) r$r¬Z assertWarnsrrrrÙriÚwarningr})r1r}rKr(r rlrrrÚ_check_warn_on_deallocÙs  &z!MiscIOTest._check_warn_on_dealloccCs2|jtjddd| tjd¡| tjd¡dSr )rrr’r8rrrÚtest_warn_on_deallocászMiscIOTest.test_warn_on_dealloccsªg‰‡fdd„}| |¡t ¡\}}ˆ||f7‰|j|g|¢Ri|¤Žt ¡\}}ˆ||f7‰t |¡*t|g|¢Rddi|¤ŽWdƒn1sœ0YdS)Nc sPˆD]F}zt |¡WqtyH}z|jtjkr4‚WYd}~qd}~00qdSr3)r¼rnrmÚerrnoÚEBADF)rOr©ÚfdsrrÚ cleanup_fdsès  z9MiscIOTest._check_warn_on_dealloc_fd..cleanup_fdsr1F)rÃr¼r½rrrtr$)r1r}rKrr r¯rrrÚ_check_warn_on_dealloc_fdæs       z$MiscIOTest._check_warn_on_dealloc_fdcCs&|jddd| d¡| d¡dS)Nr³rr±r )rr8rrrÚtest_warn_on_dealloc_fdùs z"MiscIOTest.test_warn_on_dealloc_fdc Cs¤ddiddidddœddiddidddœddidd id ddœf D]^}ttjd ƒD]J}|jtjfi|¤Ž"}| ttj||¡WdƒqR1s’0YqRq@dS) Nr¹r¯r°rrr r³rDrrD) r-ÚpickleÚHIGHEST_PROTOCOLr$rr’rržÚdumps)r1rKÚprotocolr(rrrÚ test_picklingÿs÷ zMiscIOTest.test_picklingcCs| d¡dS)Ni@©Ú_test_nonblock_pipe_writer8rrrÚtest_nonblock_pipe_write_bigbufsz*MiscIOTest.test_nonblock_pipe_write_bigbufcCs| d¡dS)Nrêrr8rrrÚ!test_nonblock_pipe_write_smallbufsz,MiscIOTest.test_nonblock_pipe_write_smallbufÚ set_blockingz(os.set_blocking() required for this testc CsFg}g}t ¡\}}t |d¡t |d¡|j|dd|d}|j|dd|d}| |xdD]Î}z.BadReaderr‰cSsddS)Nr¤i@BrrOrrrrPszACMiscIOTest.test_readinto_buffer_overflow..BadReader.readN)r‰rQrrrrÚ BadReaderŽsr6rV)rrÑrœrr‹rH)r1r6r°r rrrÚtest_readinto_buffer_overflowŒsz)CMiscIOTest.test_readinto_buffer_overflowcCs\d tƒ¡}td|ƒ\}}|j ¡}|jdkrHd tƒ¡}| ||¡n| | d¡¡dS)Na‰if 1: import sys import time import threading from test.support import SuppressCrashReport file = sys.{stream_name} def run(): while True: file.write('.') file.flush() crash = SuppressCrashReport() crash.__enter__() # don't call __exit__(): the crash occurs at Python shutdown thread = threading.Thread(target=run) thread.daemon = True thread.start() time.sleep(0.5) file.write('!') file.flush() r­rz¬Fatal Python error: _enter_buffered_busy: could not acquire lock for <(_io\.)?BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!) Ú format_mapÚlocalsr rÒrØr´rÁrJr²)r1Z stream_namer®rtr`rÒÚpatternrrrÚ&check_daemon_threads_shutdown_deadlock•sè  üz2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCs| d¡dS)NÚstdout©r;r8rrrÚ,test_daemon_threads_shutdown_stdout_deadlock¾sz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCs| d¡dS)NÚstderrr=r8rrrÚ,test_daemon_threads_shutdown_stderr_deadlockÁsz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)rrrrr7r;r>r@rrrrr5‰s  )r5c@seZdZeZdS)Ú PyMiscIOTestN)rrrrrrrrrrAÅsrAÚntz%POSIX signals required for this test.c@s’eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e j dd„ƒZ dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!S)"Ú SignalsTestcCst tj|j¡|_dSr3)ÚsignalÚSIGALRMÚalarm_interruptÚoldalrmr8rrrr“ÌszSignalsTest.setUpcCst tj|j¡dSr3)rDrErGr8rrrr”ÏszSignalsTest.tearDowncCs dddSrCr)r1ÚsigÚframerrrrFÒszSignalsTest.alarm_interruptc  sØg‰‡‡fdd„}tj|d}d|_t ¡\‰}d|d<|tjt|ƒd}z(|jj |fi|¤Ž}t t dƒržt   t j t jg¡| ¡t   t jt jg¡n| ¡t  d¡z&| t|j|¡Wt  d ¡| ¡nt  d ¡| ¡0ˆ t ˆd¡¡| ˆ|d d…|dd …g¡Wt |¡t ˆ¡z | ¡Wn6tyv} z| jtjkrb‚WYd} ~ n d} ~ 00nZt |¡t ˆ¡z | ¡Wn6tyÐ} z| jtjkr¼‚WYd} ~ n d} ~ 000dS) Ncst ˆd¡}ˆ |¡dSrj)r¼rPr4)r…©r Ú read_resultsrrr­Ús z2SignalsTest.check_interrupted_write.._readrTFr1rDÚpthread_sigmaskrrV)r`rÄÚdaemonr¼r½rÚ PIPE_MAX_SIZErrr$r]rDrLÚ SIG_BLOCKrErÅÚ SIG_UNBLOCKÚalarmrrr6r„r4rPr›rnrmrr) r1Úitemr Ú fdopen_kwargsr­rrr¯Ú large_dataÚwiorrrJrÚcheck_interrupted_writeÕsJ      ÿ  "   ÷   z#SignalsTest.check_interrupted_writecCs|jddddddS)Nrör°rr©rVr8rrrÚ!test_interrupted_write_unbuffered sz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddddS©Nrör°©r¹rWr8rrrÚtest_interrupted_write_buffered sz+SignalsTest.test_interrupted_write_bufferedcCs|jddddddS)NÚxyrör¯rÓ©r¹r#rWr8rrrÚtest_interrupted_write_textsz'SignalsTest.test_interrupted_write_textc s‡‡fdd„}t tj|¡t ¡\}}|jj|fi|¤Ž‰z¸t d¡| tt f¡F}t dƒD]}ˆ  ˆ¡ˆ  ¡q`t  |tˆƒd¡qXWdƒn1s¢0Y|j}t|t ƒrÖ| t|ƒ d¡t|ƒ¡Wt d¡ˆ ¡t |¡nt d¡ˆ ¡t |¡0dS)Ncsˆ ˆ¡dddSrC)r6)r}©rrUrrÚon_alarms z3SignalsTest.check_reentrant_write..on_alarmrDrÀzreentrant callr)rDrEr¼r½rr$rQrrrÅr-r6rfrPrrjrárIrirçrn) r1rrSr`r r¯rlr*r¸rr_rÚcheck_reentrant_writes(     4   þ z!SignalsTest.check_reentrant_writecCs|jddddSrY©rar8rrrÚtest_reentrant_write_buffered.sz)SignalsTest.test_reentrant_write_bufferedcCs|jdddddS)Nr\r¯rÓr]rbr8rrrÚtest_reentrant_write_text1sz%SignalsTest.test_reentrant_write_textc sÆt ¡\}‰d|d<‡fdd„}t tj|¡zj|jj|fi|¤Ž}t ˆd¡t d¡| ||  d¡ƒd¡Wt d ¡|  ¡t  ˆ¡t  |¡n(t d ¡|  ¡t  ˆ¡t  |¡0dS) NFr1cst ˆd¡dS)Nsbar)r¼r6©rHrI©r¯rrÚ alarm_handler:sz?SignalsTest.check_interrupted_read_retry..alarm_handlerr¢rDr•Zfoobarr) r¼r½rDrErr$r6rQr›rPrn)r1rØrSr rgZriorrfrÚcheck_interrupted_read_retry4s"       ý  z(SignalsTest.check_interrupted_read_retrycCs|jdd„dddS)NcSs | d¡S)Nræ)rØr¼rrrrHMrMzBSignalsTest.test_interrupted_read_retry_buffered..r³rZ©rhr8rrrÚ$test_interrupted_read_retry_bufferedLs ÿz0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd„dddS)NcSs|Sr3rr¼rrrrHQrMz>SignalsTest.test_interrupted_read_retry_text..r rZrir8rrrÚ test_interrupted_read_retry_textPs ÿz,SignalsTest.test_interrupted_read_retry_textc  sÈt d¡‰tj}t ¡\‰}d|d<g‰d‰d‰‡‡‡‡‡fdd„}tj|d‰dˆ_‡fdd „}‡fd d „‰||}t tj |¡zÖ|j j |fi|¤Ž}t  d ¡|  |¡} | || ¡| ¡d‰ˆ ¡| ˆ¡| |td d„ˆDƒƒ¡Wt  d¡d‰t |¡t ˆ¡z | ¡Wn6tyX} z| jtjkrD‚WYd} ~ n d} ~ 00nht  d¡d‰t |¡t ˆ¡z | ¡Wn6tyÀ} z| jtjkr¬‚WYd} ~ n d} ~ 000dS)NÚselectFr1c sjz<ˆs:ˆˆ ˆgggd¡dvrt ˆd¡}ˆ |¡qqWn(tyd}z|‰WYd}~n d}~00dS)Ngð?rrê)rlr¼rPr4Ú BaseException)r…r¸)rûr rKrlÚwrite_finishedrrr­fs z8SignalsTest.check_interrupted_write_retry.._readrTcst tjˆ¡t d¡dSrj)rDrErQre)Úalarm2rrÚalarm1qsz9SignalsTest.check_interrupted_write_retry..alarm1cs ˆ ¡dSr3)rÅre)rrrrrotsz9SignalsTest.check_interrupted_write_retry..alarm2rDcss|]}t|ƒVqdSr3)rrrrrÚ ‰rMz.r)rÚ import_modulerNr¼r½r`rÄrMrDrErr$rQr6r›rfr„r=Úsumrnrmrr) r1rRrSr&r¯r­rprTrUrWrr)rorûr rKrlrrrnrÚcheck_interrupted_write_retryTsT             õ    z)SignalsTest.check_interrupted_write_retrycCs|jddddS)Nr¤r°rZ©rtr8rrrÚ%test_interrupted_write_retry_buffered˜sz1SignalsTest.test_interrupted_write_retry_bufferedcCs|jdddddS)NrÞr¯rær]rur8rrrÚ!test_interrupted_write_retry_text›sz-SignalsTest.test_interrupted_write_retry_textN)rrrr“r”rFrVrXr[r^rrÍrarcrdrhrjrkrtrvrwrrrrrCÉs"4 DrCc@seZdZeZdS)Ú CSignalsTestN)rrrrrrrrrxŸsrxc@seZdZeZdZdZdS)Ú PySignalsTestN)rrrrrrcrdrrrrry¢sryc s tttttttttt t t t t ttttttf}ttttttttf}tjdg}dd„|Dƒ}dd„|Dƒ}tƒ‰| ‡fdd„|Dƒ¡| ‡fdd„|Dƒ¡t j!|d<|D]Z}|j" #d ¡rÜ| $¡D]\}}t%|||ƒqÄq¬|j" #d ¡r¬| $¡D]\}}t%|||ƒqðq¬t& 'd d „|Dƒ¡} | S) NrñcSsi|]}|tt|ƒ“qSr)r€r©rr—rrrÚ ¾rMzload_tests..cSsi|]}|tt|ƒ“qSr)r€rrzrrrr{¿rMc3s"|]}|jˆd|jfVqdS)rN©rr©ZglobsrrrqÁrMzload_tests..c3s"|]}|jˆd|jfVqdS)ÚPyNr|rr}rrrqÂrMr$rr~cSsg|]}t |¡‘qSr)r:Z makeSuite)rrérrrrÍrMzload_tests..)(rœrŸr r1r=rtrur“r”rÄrÅrér÷rørÒrÝr5rArxryrLrTrqrir‚rwr*r_rrüÚglobalsrrÚ OpenWrapperrrçr8Úsetattrr:Z TestSuite) r}rèZmocksZ all_membersZc_io_nsZpy_io_nsrér—rZsuiterr}rÚ load_tests«s>÷þ    r‚Ú__main__)vrbr rr r¼rr"rDråZ sysconfigr0r`rdr:rìr;Ú collectionsrrÚ itertoolsrrrérZtest.support.script_helperrrr Z test.supportr rÈrZ_pyiorrÚ ImportErrorrZ StructurerZget_config_varZ_cflagsZ _config_argsr<r]r_Údev_moderºr)r*rãrJrKrLrRrSrTr]r^r_rgrhrirorprqrÍrurvrwr~r€r‚rŒrŽZTestCaserrœrŸrèr r¨ràrér1r=r>rtrurvr“r”r•rÄrÅrÉrÆÚregisterrçrérïr¸r¹rÒrÝrÞr÷rørùr5rAr;r—rCrxryr‚rÚmainrrrrÚsö    þ8   0:.*3(0QjW +i  NuF<V %