
    /hhu                     b   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKr S SK	r	 S SKrS SK JrJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S S	KJr   " S
 S5      r " S S5      r " S S\\R:                  5      r " S S5      r " S S\\R:                  5      r  " S S5      r! " S S\R:                  5      r" " S S\"5      r# " S S\"5      r$ " S S\"5      r% " S S\"5      r& " S  S!\"5      r' " S" S#\"5      r( " S$ S%\"5      r) " S& S'\"5      r* " S( S)\"5      r+ " S* S+5      r, " S, S-\R:                  5      r- " S. S/\R:                  5      r. " S0 S1\R:                  5      r/\0S2:X  a  \Rb                  " 5         gg! \
 a    Sr	 GNtf = f! \
 a    Sr GN~f = f)3    N)BytesIOStringIO)	FileInputhook_encoded)verbose)TESTFNFakePath)unlink)	os_helper)support)mockc                   "    \ rS rSrSS.S jrSrg)	BaseTests'   wmodec                    [         R                  " 5       u  p4U R                  [        R                  U5        SU;   a  S OSn[        X2US9 nUR                  U5        S S S 5        U$ ! , (       d  f       U$ = f)Nbutf-8encoding)tempfilemkstemp
addCleanupr   r
   openwrite)selfcontentr   fdnamer   fs          </opt/python-3.13.8/usr/lib/python3.13/test/test_fileinput.pywriteTmpBaseTests.writeTmp*   sc    ##%	(($/$;4G"X.!GGG / /.s   A((
A7 N)__name__
__module____qualname____firstlineno__r$   __static_attributes__r&       r#   r   r   '   s     ),  r,   r   c                   J    \ rS rSrS r\S 5       rS rS
S jrSS jr	S r
S	rg)
LineReader2   c                     / U l         g N
_linesreadr   s    r#   __init__LineReader.__init__4   s	    r,   c                 H     U R                   S S  / U l         $ ! / U l         f = fr1   r2   r4   s    r#   	linesreadLineReader.linesread7   s"    	!??1% DObDOs    	!c                 D    [        UR                  S5      5      U l        U $ NT)iter
splitlinesit)r   filenamer   s      r#   openhookLineReader.openhook>   s    x**401r,   Nc                 h    [        U R                  S5      nU R                  R                  U5        U$ )N )nextr>   r3   append)r   sizelines      r#   readlineLineReader.readlineB   s)    DGGR t$r,   c                     / nSn U R                  5       nU(       d  U$ UR                  U5        U[        U5      -  nX1:  a  U$ MA  Nr   )rH   rE   len)r   hintlinesrF   rG   s        r#   	readlinesLineReader.readlinesG   sK    ==?DLLCID| r,   c                     g r1   r&   r4   s    r#   closeLineReader.closeS   s    r,   )r3   r>   r1   ))r'   r(   r)   r*   r5   propertyr8   r@   rH   rO   rR   r+   r&   r,   r#   r.   r.   2   s/     ! !

r,   r.   c                       \ rS rSrS rSrg)BufferSizesTestsV   c                 8   U R                  SR                  S [        S5       5       5      5      nU R                  SR                  S [        S5       5       5      5      nU R                  SR                  S [        S5       5       5      5      nU R                  SR                  S [        S	5       5       5      5      n[        R                  " S
5      n[
        (       a  [        S5        [        XX44SS9n[        U5      nUR                  5         U R                  [        U5      S5        U R                  US   S5        U R                  US   S5        U R                  UR                  5       S5        U R                  UR                  5       U5        [
        (       a  [        S5        [        XX44SS9nSnU(       a%  US:w  a  UR                  5       nU(       a  US:w  a  M  U R                  UR                  5       U5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R!                  UR#                  5       5        U R!                  UR%                  5       5        [
        (       a  [        S5        UR'                  5         U R                  UR                  5       S5        U R                  UR                  5       S5        UR                  5         [
        (       a  [        S5        [        XX4S4SS9n[(        R*                  n	 [-        S5      [(        l        [        U5      nU R                  [        U5      S5        U R                  US   S 5        U R                  UR                  5       S!5        UR'                  5         U	[(        l        [
        (       a  [        S"5        [        XX44SS9nU R                  UR                  5       S#5        U R                  UR                  5       S 5        UR'                  5         U R                  UR                  5       S#5        U R                  UR                  5       S 5        [
        (       a  [        S$5        [(        R.                  n
 [        XX44S%SS&9nU H!  nUS S' R1                  5       n[        U5        M#     UR                  5         U
[(        l        [        XX44SS9nU Hv  nU R                  US'   S(5        UR3                  US S' 5      nU R5                  US 5        U R                  [7        UR9                  S	5      5      UR                  5       5        Mx     UR                  5         g ! U	[(        l        f = f! U
[(        l        f = f))NrC   c              3   2   #    U  H  nS US-   -  v   M     g7f)zLine %s of file 1
   Nr&   .0is     r#   	<genexpr>5BufferSizesTests.test_buffer_sizes.<locals>.<genexpr>Y        "T)Q#8AaC#@)      c              3   2   #    U  H  nS US-   -  v   M     g7f)zLine %s of file 2
r[   Nr&   r\   s     r#   r_   r`   Z   ra   rb   
   c              3   2   #    U  H  nS US-   -  v   M     g7f)zLine %s of file 3
r[   Nr&   r\   s     r#   r_   r`   [        "S(Q#8AaC#@(rb      c              3   2   #    U  H  nS US-   -  v   M     g7f)zLine %s of file 4
r[   Nr&   r\   s     r#   r_   r`   \   rg   rb   r[   zLINE (\d+) OF FILE (\d+)z1. Simple iterationr   filesr         zLine 5 of file 1
   zLine 1 of file 4
z2. Status variablesxzLine 6 of file 2
      z3. NextfilezLine 1 of file 3
   z4. Stdin-z Line 1 of stdin
Line 2 of stdin
!       zLine 2 of stdin
z<stdin>z5. Boundary conditionsr   z
6. InplaceTrk   inplacer   rT   
)r$   joinrangerecompiler   printr   listrR   assertEqualrL   linenor?   rH   
filelinenoassertFalseisfirstlineisstdinnextfilesysstdinr   stdoutuppermatchassertNotEqualintgroup)r   t1t2t3t4patfirN   s	savestdin
savestdoutrG   ms                r#   test_buffer_sizes"BufferSizesTests.test_buffer_sizesW   s=   ]]277"T%PR)"TTU]]277"T%PR)"TTU]]277"S%PQ("SST]]277"S%PQ("SSTjj457'(bb-@R

UR(q#78r$89b)+7'(bb-@A--A A--+b)!,)*&7- 
(<=b)

7*bbc2WEII		" !EFCIHESZ,U2Y(;<R[[]I6KKM!CI7*+bb-@a(-
a(-7,ZZ
	$""!14'RBCRy(d  HHJ#CJbb-@DT"Xt,		$s)$A4(S_bmmo>	 
 	
; "CI* $CJs   1A?U< AV <V	Vr&   N)r'   r(   r)   r*   r   r+   r&   r,   r#   rW   rW   V   s    Pr,   rW   c                        \ rS rSrS rS rSrg)UnconditionallyRaise   c                     Xl         SU l        g NFexception_typeinvoked)r   r   s     r#   r5   UnconditionallyRaise.__init__   s    ,r,   c                 0    SU l         U R                  5       er;   )r   r   r   argskwargss      r#   __call__UnconditionallyRaise.__call__   s    !!##r,   r   Nr'   r(   r)   r*   r5   r   r+   r&   r,   r#   r   r      s    $r,   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)FileInputTests   c                    U R                  S5      nU R                  S5      nU R                  S5      nU R                  S5      n[        XX44SS9nUR                  5       nU R                  US5        U R                  UR	                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       U5        UR                  5       nU R                  U5        U R                  UR	                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       U5        UR                  5         g )NrC   zThe only line there is.
r   rj   r[   r   )	r$   r   rH   r   r   r   r?   r   rR   )r   r   r   r   r   r   rG   s          r#   test_zero_byte_files#FileInputTests.test_zero_byte_files   s   ]]2]]2]]67]]2bb-@{{}:;a(!,+{{}a(!,+

r,   c                    U R                  S5      nU R                  S5      n[        X4SS9n[        U5      nU R                  U/ SQ5        U R                  UR	                  5       S5        U R                  UR                  5       S5        g )NA
B
CD
E
Fr   rj   A
B
CzD
zE
F   rq   )r$   r   r~   r   r   r   r   r   r   r   rN   s        r#   %test_files_that_dont_end_with_newline4FileInputTests.test_files_that_dont_end_with_newline   sr    ]]9%]]9%bX8R FG!,a(r,   c                    U R                  S5      nU R                  S5      n[        X4SS9nU R                  UR                  5       S5        [	        U5      nU R                  UR                  5       S5        UR                  5         U R                  UR                  5       S5        [        U5      nU R                  UR                  5       S5        g )NzA
BzC
Dr   rj   rT   )r$   r   r   filenorD   r   r   r~   )r   r   r   r   rG   s        r#   test_filenoFileInputTests.test_fileno   s    ]]6"]]6"bX8b)BxBIIK,
b)Bxb)r,   c                     S HB  nU R                  US9   U R                  [        5         [        US9  S S S 5        S S S 5        MD     g ! , (       d  f       N= f! , (       d  f       Mg  = f)N)r   rUUr   )subTestassertRaises
ValueErrorr   )r   r   s     r#   test_invalid_opening_mode(FileInputTests.test_invalid_opening_mode   sM    $D4(&&z24( 3 )( %22 )(s!   A
A
A

AA
A*	c                     [         R                  " S5       n[        S5      Ul        [	        S/SS9n[        U5      nU R                  US/5        S S S 5        g ! , (       d  f       g = f)Nz	sys.stdin   spam, bacon, sausage, and spamrs   rbrk   r   )r   patchr   bufferr   r~   r   )r   m_stdinr   rN   s       r#   test_stdin_binary_mode%FileInputTests.test_stdin_binary_mode   sT    ZZ$$%FGGN#T2BHEU%F$GH	 %$$s   :A
A(c                 (   [         R                  n [        S5      [         l        U R                  [	        [         R                  S5      5        [        S/SS9n[        U5      nU R                  US/5        U[         l        g ! U[         l        f = f)Nr   r   rs   r   r   )r   r   r   r   hasattrr   r~   r   )r   
orig_stdinr   rN   s       r#   test_detached_stdin_binary_mode.FileInputTests.test_detached_stdin_binary_mode   sp    YY
	# ABCIWSYY9:#T2BHEU%F$GH"CI
CIs   A&B Bc                     [        SS S9nU R                  S5         [        SS9nU R                  S5         " S S	5      nU R                  S
5      nU" 5       n[        U/US9 nUR	                  5         S S S 5        U R                  UR                  S5        g ! [         a     Nf = f! [         a     Nf = f! , (       d  f       NK= f)NTc                     g r1   r&   )r"   r   s     r#   <lambda>7FileInputTests.test_file_opening_hook.<locals>.<lambda>  s    tr,   )rw   r@   zGFileInput should raise if both inplace and openhook arguments are givenr[   r@   z2FileInput should check openhook for being callablec                        \ rS rSrS rS rSrg)=FileInputTests.test_file_opening_hook.<locals>.CustomOpenHooki  c                     SU l         g r   r   r4   s    r#   r5   FFileInputTests.test_file_opening_hook.<locals>.CustomOpenHook.__init__  s	    $r,   c                 &    SU l         [        USS06$ )NTr   r   )r   r   )r   r   kargss      r#   r   FFileInputTests.test_file_opening_hook.<locals>.CustomOpenHook.__call__  s    #T4G44r,   r   Nr   r&   r,   r#   CustomOpenHookr     s    %5r,   r   rx   zopenhook not invoked)r   failr   r$   rH   
assertTruer   )r   r   r   tcustom_open_hooks        r#   test_file_opening_hook%FileInputTests.test_file_opening_hook   s    	42CDBII @ A	A&BIIJK	5 	5 MM$)+s%56"KKM 7(002HI'  		
  		 76s.   B B, &B<
B)(B),
B98B9<
C
c                 T   [        [        S5       nUR                  S5        UR                  SS-  5        UR                  S5        S S S 5        U R                  [        [        5        [        [        [        S5      S9 n U R                  UR                  5       S5        U R                  UR                  5       S	5        U R                  UR                  5       S
5        U R                  [        5         [        U5        S S S 5        U R                  UR                  5       S5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       GN= f! [         a    U R                  S5         Nf = f! , (       d  f       N= f! , (       d  f       g = f)Nwbs   A
B
Cs
   123456789
     asciirk   r@   r   r   C
zRead to end of filerC   )r   r   r   r   safe_unlinkr   r   r   rH   UnicodeDecodeErrorr   r   r~   r   r"   r   s      r#   test_readlineFileInputTests.test_readline  s5   &$1GGN#GGNT)*GGG   	V,V ,W 57:<1  6  6  6 ""#56R 7 R[[]B/R[[]B/7 7   & 1		/01667 7sU   7EFA E'#F8FAF
E$'FFFF
F	F
F'c                 >   [        [        S5       nUR                  S5        S S S 5        U R                  [        [        5        [        [        SS9 nU R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   s   A
B
CDr   r   s   A
s   B
s   CDr,   )r   r   r   r   r   r   r   rH   r   s      r#   test_readline_binary_mode(FileInputTests.test_readline_binary_mode1  s    &$1GGO$  V,V$/2R[[]F3R[[]H5R[[]G4R[[]C0R[[]C0 0/	   0/s   C=B!D=
D
Dc                 |   U R                  SSS9n[        USSS9 nUR                  5       nU R                  US5        [        R
                  R                  S5        S S S 5        [        US5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Ns   Initial text.r   r   r   T)r   rw   s	   New line.)	r$   r   rH   r   r   r   r   r   readr   	temp_filefobjrG   r"   s        r#   test_inplace_binary_write_mode-FileInputTests.test_inplace_binary_write_mode>  s    MM"2M>	ytT:d==?DT#34JJ\*	 ;
 )T"aQVVX|4 #" ;:
 #"s   AB2!B-
B*-
B;c                 t   U R                  SSS9n[        USSSS9 nUR                  5       nU R                  US5        [	        S	5        S S S 5        [        US
5       nU R                  UR                  5       R                  S5      S5        S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Ns   Initial text r   r   Tr   replace)rw   r   errorsu   Initial text �u   New line r   s   
s
   New line ?)r$   r   rH   r   r}   r   r   rstripr   s        r#   test_inplace_encoding_errors+FileInputTests.test_inplace_encoding_errorsH  s    MM"6TMB	y$ '	;>B==?DT#89/"	;
 )T"aQVVX__W5}E #"; ;
 #"s   .B0B)
B&)
B7c                     S nU R                  S5      n[        U/US9 nUR                  5       nS S S 5        U R                  WS5        g ! , (       d  f       N!= f)Nc                 .    [         R                  " S5      $ )N(I used to receive only filename and mode)ior   r?   r   s     r#   old_hookFFileInputTests.test_file_hook_backward_compatibility.<locals>.old_hookS  s    ;;IJJr,   rx   r   r  )r$   r   rH   r   )r   r  r   r   results        r#   %test_file_hook_backward_compatibility4FileInputTests.test_file_hook_backward_compatibilityR  sN    	KMM$sX."[[]F /!KL /.s   A
Ac                    U R                  S5      nU R                  S5      n[        X4SS9 n[        U5      nS S S 5        U R                  W/ SQ5        U R                  WR	                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        g ! , (       d  f       N= f)	Nr   r   r   rj   r   r   rq   r&   )r$   r   r~   r   r   r   _filesr   s        r#   test_context_manager#FileInputTests.test_context_managerZ  s    ]]9%]]9%bX8BHE 9 FG!,a(B' 98s   B33
Cc                     U R                  S5      n [        USS9 n[        e! , (       d  f       g = f! [         a    U R                  WR                  S5         g f = f)NrC   r   rj   r&   )r$   r   OSErrorr   r  )r   r   r   s      r#   test_close_on_exception&FileInputTests.test_close_on_exceptiond  sQ    ]]2	,g6" 76 	,RYY+	,s   
5 $
25 5 &AAc                     [        / SS9 nU R                  UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   rj   )rs   )r   r   r  )r   r   s     r#   .test_empty_files_list_specified_to_constructor=FileInputTests.test_empty_files_list_specified_to_constructorl  s.    R'2bRYY/ 322s   1
?c                    [         R                  n[        [        5      n U R	                  S5      nU R                  [        US-   5        [        U/SSS9 n[        U5        U[         l        UR                  5         S S S 5        U[         l        U R                  UR                  S5        g ! , (       d  f       N6= f! U[         l        f = f)Nrx   z.bakTr   rv   zos.unlink() was not invoked)osr
   r   r  r$   r   r   r   rD   r   r   r   )r   os_unlink_origos_unlink_replacementr   r   s        r#   %test_nextfile_oserror_deleting_backup4FileInputTests.test_nextfile_oserror_deleting_backupp  s    
  4W =	'd#AOOKV4!dWER1	 F
 'BI 	-555	7 FE
 'BIs#   6B? 'B.>B? .
B<8B? ?Cc                 V   [         R                  n[        [        5      n U R	                  S5      n[        U/SSS9 nU[         l        UR                  5         S S S 5        U[         l        U R                  UR                  S5        g ! , (       d  f       N6= f! U[         l        f = fNrx   Tr   rv   zos.fstat() was not invoked)	r  fstatr   r  r$   r   rH   r   r   )r   os_fstat_origos_fstat_replacementr   r   s        r#   %test_readline_os_fstat_raises_OSError4FileInputTests.test_readline_os_fstat_raises_OSError       3G<	%d#A!dWE/ F %BH 	,444	6 FE %BH"   B B
B 

BB B(c                 V   [         R                  n[        [        5      n U R	                  S5      n[        U/SSS9 nU[         l        UR                  5         S S S 5        U[         l        U R                  UR                  S5        g ! , (       d  f       N6= f! U[         l        f = fr"  )	r  chmodr   r  r$   r   rH   r   r   )r   os_chmod_origos_chmod_replacementr   r   s        r#   %test_readline_os_chmod_raises_OSError4FileInputTests.test_readline_os_chmod_raises_OSError  r(  r)  c                 d    " S S[         5      nU" 5       nU R                  S5      n[        U/SS9 nUR                  n X$l        UR	                  5       nXTl         S S S 5        U R                  UR                  S5        U R                  WSS5        g ! XTl        f = f! , (       d  f       NI= f)	Nc                        \ rS rSrS rS rSrg)QFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueErrori  c                 8    [         R                  U [        5        g r1   )r   r5   r   r4   s    r#   r5   ZFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueError.__init__  s    $--dJ?r,   c                 $    U R                  5         g r1   )r   r4   s    r#   r   XFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueError.fileno  s    r,   r&   N)r'   r(   r)   r*   r5   r   r+   r&   r,   r#   FilenoRaisesValueErrorr2    s    @ r,   r7  rx   r   rj   z_file.fileno() was not invokedrT   zfileno() should return -1)r   r$   r   _filer   r   r   r   )r   r7   unconditionally_raise_ValueErrorr   r   file_backupr  s          r#   "test_fileno_when_ValueError_raised1FileInputTests.test_fileno_when_ValueError_raised  s    	 %9 	  ,B+C(MM$aS73r((K';& 4 	8@@8	: 	%@A ' 43s#   B!BB!BB!!
B/c                    [        5       n[        SS/UR                  S9 nU R                  UR                  / 5        U R                  UR                  5       S5        U R                  UR                  S/5        U R                  UR                  5       S5        U R                  UR                  S/5        U R                  UR                  5       S5        U R                  UR                  SS/5        U R                  UR                  5       S5        U R                  UR                  S/5        U R                  UR                  5       S5        U R                  UR                  / 5        S S S 5        g ! , (       d  f       g = fNzline1
line2zline3
r   zline1
line2rC   )r.   r   r@   r   r8   rH   r   srcr   s      r#   test_readline_buffering&FileInputTests.test_readline_buffering  s"   lni8 #.13S]]B/R[[]I6S]]YK8R[[]G4S]]WI6R[[]I6S]]RO<R[[]B/S]]RD1R[[]B/S]]B/. . .s   EE88
Fc                    [        5       n[        SS/UR                  S9 nU R                  UR                  / 5        U R                  [        U5      S5        U R                  UR                  S/5        U R                  [        U5      S5        U R                  UR                  S/5        U R                  [        U5      S5        U R                  UR                  SS/5        U R                  [        [
        U5        U R                  UR                  S/5        U R                  [        [
        U5        U R                  UR                  / 5        S S S 5        g ! , (       d  f       g = fr>  )r.   r   r@   r   r8   rD   r   StopIterationr@  s      r#   test_iteration_buffering'FileInputTests.test_iteration_buffering  s   lni8 #.13S]]B/T"Xy1S]]YK8T"Xw/S]]WI6T"Xy1S]]RO<mT26S]]RD1mT26S]]B/. . .s   D5E
E-c                    [        U R                  S5      5      n[        USS9 nUR                  5       nU R	                  US5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       [        R                  " U5      5        S S S 5        g ! , (       d  f       g = f)NPath-like file.r   r   r[   )
r	   r$   r   rH   r   r   r   r?   r  fspath)r   r   r   rG   s       r#   test_pathlike_file!FileInputTests.test_pathlike_file  s    dmm$567rG,;;=DT#45RYY[!,R]]_a0R[[]BIIbM: -,,s   BC
Cc                 j   [        U R                  S5      5      n[        USSS9 nUR                  5       nU R	                  US5        [        SU-  5        S S S 5        [        USS9 nU R	                  UR                  5       S5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)NrI  Tr   )rw   r   zModified %sr   zModified Path-like file.
)r	   r$   r   rH   r   r}   r   r   )r   r   r   rG   r"   s        r#   test_pathlike_file_inplace)FileInputTests.test_pathlike_file_inplace  s    dmm$567r4':b;;=DT#45-$&' ; "w'1QVVX'CD ('	 ;: ('s   1B)!B$
B!$
B2r&   N)r'   r(   r)   r*   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r&  r.  r;  rB  rF  rK  rN  r+   r&   r,   r#   r   r      s{    ()(
*)I	#J60.15FM(,07*6$6$B.0 0 ;Er,   r   c                   \    \ rS rSrSSSSSS.S jjrS rS rS rS	 rS
 r	S r
S rS rSrg)MockFileInputi  Nr)r   r@   r   r  c                    Xl         X l        X0l        X@l        XPl        X`l        Xpl        S U l        [        R                  " S 5      U l
        0 U l        g )Nc                      grK   r&   r&   r,   r#   r   (MockFileInput.__init__.<locals>.<lambda>   s    r,   )rk   rw   backupr   r@   r   r  r8  collectionsdefaultdictinvocation_countsreturn_values)r   rk   rw   rV  r   r@   r   r  s           r#   r5   MockFileInput.__init__  sG    
	  
!,!8!8!Cr,   c                 2    U R                   S==   S-  ss'   g )NrR   r[   )rY  r4   s    r#   rR   MockFileInput.close  s    w'1,'r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr   r[   rY  rZ  r4   s    r#   r   MockFileInput.nextfile  )    z*a/*!!*--r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr?   r[   r_  r4   s    r#   r?   MockFileInput.filename
  ra  r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr   r[   r_  r4   s    r#   r   MockFileInput.lineno  )    x(A-(!!(++r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr   r[   r_  r4   s    r#   r   MockFileInput.filelineno  s)    |,1,!!,//r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr   r[   r_  r4   s    r#   r   MockFileInput.fileno  rf  r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr   r[   r_  r4   s    r#   r   MockFileInput.isfirstline  s)    }-2-!!-00r,   c                 N    U R                   S==   S-  ss'   U R                  S   $ )Nr   r[   r_  r4   s    r#   r   MockFileInput.isstdin  s)    y)Q.)!!),,r,   )
r8  rV  r   r  rk   rw   rY  r   r@   rZ  )NFrC   )r'   r(   r)   r*   r5   rR   r   r?   r   r   r   r   r   r+   r&   r,   r#   rQ  rQ    s=     D4 -..,0,1-r,   rQ  c                   &    \ rS rSrS rS rS rSrg)BaseFileInputGlobalMethodsTesti"  c                 v    [         R                  U l        [         R                  U l        [
        [         l        g r1   )	fileinput_state_orig_stater   _orig_FileInputrQ  r4   s    r#   setUp$BaseFileInputGlobalMethodsTest.setUp&  s&    $++(22+	r,   c                 X    U R                   [        l        U R                  [        l        g r1   )ru  rr  r   rt  rs  r4   s    r#   tearDown'BaseFileInputGlobalMethodsTest.tearDown+  s    "22	++	r,   c                     UR                   U   nU R                  USU5        [        UR                   5      nU R                  US5        g )Nr[   )rY  r   rL   )r   mock_file_inputmethod_nameactual_countactual_total_counts        r#   assertExactlyOneInvocation9BaseFileInputGlobalMethodsTest.assertExactlyOneInvocation/  sF    &88Eq+6 !B!BC+Q/r,   )ru  rt  N)r'   r(   r)   r*   rv  ry  r  r+   r&   r,   r#   rp  rp  "  s    ,
,0r,   rp  c                   ,    \ rS rSrS rS rS rS rSrg)Test_fileinput_inputi7  c                 b   [        5       n[        5       Ul        U[        l        U R                  [        5       n[        R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  U[        R                  S5        g ! , (       d  f       NV= f)N)zinput() already activefileinput._state)rQ  objectr8  rr  rs  r   RuntimeErrorinputr   	exceptionr   assertIs)r   instancecms      r#   1test_state_is_not_None_and_state_file_is_not_NoneFTest_fileinput_input.test_state_is_not_None_and_state_file_is_not_None:  sv    
 !?#	|,OO -4bll6G6GHh	 0 02DE -,s   B  
B.c                 \    [        5       nS Ul        U[        l        U R	                  5         g r1   )rQ  r8  rr  rs  do_test_call_inputr   r  s     r#   -test_state_is_not_None_and_state_file_is_NoneBTest_fileinput_input.test_state_is_not_None_and_state_file_is_NoneG  s&     !?#	!r,   c                 :    S [         l        U R                  5         g r1   )rr  rs  r  r4   s    r#   test_state_is_None'Test_fileinput_input.test_state_is_NoneR  s      	!r,   c           	         [        5       n[        5       n[        5       n[        5       n[        5       n[        5       n[        R                  " XUXEUS9nU R                  U[        R                  S5        U R                  XR
                  S5        U R                  X'R                  S5        U R                  X7R                  S5        U R                  XGR                  S5        U R                  XWR                  S5        g )N)rk   rw   rV  r   r@   r   r  rk   rw   rV  r   r@   )
r  rr  r  r  rs  rk   rw   rV  r   r@   )r   rk   rw   rV  r   r@   r   r  s           r#   r  'Test_fileinput_input.do_test_call_input[  s    
 (x88 uf8= 	fi..0BC 	e\\73g~~y9fmmX6dKK0h<r,   r&   N)	r'   r(   r)   r*   r  r  r  r  r+   r&   r,   r#   r  r  7  s    F	""=r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_closeiv  c                     S [         l        [         R                  " 5         U R                  [         R                  5        g r1   )rr  rs  rR   assertIsNoner4   s    r#   r  'Test_fileinput_close.test_state_is_Noney  s*      	)**+r,   c                     [        5       nU[        l        [        R                  " 5         U R	                  US5        U R                  [        R                  5        g )NrR   )rQ  rr  rs  rR   r  r  r  s     r#   test_state_is_not_None+Test_fileinput_close.test_state_is_not_None  sA     !?#	''':)**+r,   r&   Nr'   r(   r)   r*   r  r  r+   r&   r,   r#   r  r  v  s    ,,r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_nextfilei  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fN)zno active input())	rr  rs  r   r  r   r   r  r   r  r   r  s     r#   r  *Test_fileinput_nextfile.test_state_is_None  e      	|,  -/1B1BC)**+ -,   B
Bc                    [        5       n[        5       nXR                  S'   U[        l        [        R
                  " 5       nU R                  US5        U R                  X15        U R                  [        R                  U5        g )Nr   )r  rQ  rZ  rr  rs  r   r  r  )r   nextfile_retvalr  retvals       r#   r  .Test_fileinput_nextfile.test_state_is_not_None  f    
 !( ?-<z*#	##%''*=f.i&&1r,   r&   Nr  r&   r,   r#   r  r        ,2r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_filenamei  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fr  )	rr  rs  r   r  r?   r   r  r   r  r  s     r#   r  *Test_fileinput_filename.test_state_is_None  r  r  c                    [        5       n[        5       nXR                  S'   U[        l        [        R
                  " 5       nU R                  US5        U R                  X15        U R                  [        R                  U5        g )Nr?   )r  rQ  rZ  rr  rs  r?   r  r  )r   filename_retvalr  r  s       r#   r  .Test_fileinput_filename.test_state_is_not_None  r  r,   r&   Nr  r&   r,   r#   r  r    r  r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_linenoi  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fr  )	rr  rs  r   r  r   r   r  r   r  r  s     r#   r  (Test_fileinput_lineno.test_state_is_None  e      	|, -/1B1BC)**+ -,r  c                    [        5       n[        5       nXR                  S'   U[        l        [        R
                  " 5       nU R                  US5        U R                  X15        U R                  [        R                  U5        g )Nr   )r  rQ  rZ  rr  rs  r   r  r  )r   lineno_retvalr  r  s       r#   r  ,Test_fileinput_lineno.test_state_is_not_None  sf    
  ?+8x(#	!!#''(;f,i&&1r,   r&   Nr  r&   r,   r#   r  r    r  r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_filelinenoi  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fr  )	rr  rs  r   r  r   r   r  r   r  r  s     r#   r  ,Test_fileinput_filelineno.test_state_is_None  se      	|,  " -/1B1BC)**+ -,r  c                    [        5       n[        5       nXR                  S'   U[        l        [        R
                  " 5       nU R                  US5        U R                  X15        U R                  [        R                  U5        g )Nr   )r  rQ  rZ  rr  rs  r   r  r  )r   filelineno_retvalr  r  s       r#   r  0Test_fileinput_filelineno.test_state_is_not_None  sg    
 #H ?/@|,#	%%''',?f0i&&1r,   r&   Nr  r&   r,   r#   r  r    r  r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_filenoi  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fr  )	rr  rs  r   r  r   r   r  r   r  r  s     r#   r  (Test_fileinput_fileno.test_state_is_None  r  r  c                    [        5       n[        5       nXR                  S'   Xl        U[        l        [        R                  " 5       nU R                  US5        U R                  X15        U R                  [        R
                  U5        g )Nr   )	r  rQ  rZ  fileno_retvalrr  rs  r   r  r  )r   r  r  r  s       r#   r  ,Test_fileinput_fileno.test_state_is_not_None  sl    
  ?+8x(!.#	!!#''(;f,i&&1r,   r&   Nr  r&   r,   r#   r  r    s    ,2r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_isfirstlinei  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fr  )	rr  rs  r   r  r   r   r  r   r  r  s     r#   r  -Test_fileinput_isfirstline.test_state_is_None  se      	|,!!# -/1B1BC)**+ -,r  c                    [        5       n[        5       nXR                  S'   U[        l        [        R
                  " 5       nU R                  US5        U R                  X15        U R                  [        R                  U5        g )Nr   )r  rQ  rZ  rr  rs  r   r  r  )r   isfirstline_retvalr  r  s       r#   r  1Test_fileinput_isfirstline.test_state_is_not_None  sg    
 $X ?0B}-#	&&(''-@f1i&&1r,   r&   Nr  r&   r,   r#   r  r    r  r,   r  c                        \ rS rSrS rS rSrg)Test_fileinput_isstdini,  c                 ,   S [         l        U R                  [        5       n[         R                  " 5         S S S 5        U R                  SWR                  R                  5        U R                  [         R                  5        g ! , (       d  f       NT= fr  )	rr  rs  r   r  r   r   r  r   r  r  s     r#   r  )Test_fileinput_isstdin.test_state_is_None/  se      	|, -/1B1BC)**+ -,r  c                    [        5       n[        5       nXR                  S'   U[        l        [        R
                  " 5       nU R                  US5        U R                  X15        U R                  [        R                  U5        g )Nr   )r  rQ  rZ  rr  rs  r   r  r  )r   isstdin_retvalr  r  s       r#   r  -Test_fileinput_isstdin.test_state_is_not_None9  sf    
   ?,:y)#	""$'')<f-i&&1r,   r&   Nr  r&   r,   r#   r  r  ,  r  r,   r  c                        \ rS rSrS rS rSrg)InvocationRecorderiG  c                     SU l         g rK   )invocation_countr4   s    r#   r5   InvocationRecorder.__init__I  s
     !r,   c                 h    U =R                   S-  sl         X4U l        [        R                  " S5      $ )Nr[   s
   some bytes)r  last_invocationr	  r   r   s      r#   r   InvocationRecorder.__call__L  s,    " $~zz-((r,   )r  r  Nr   r&   r,   r#   r  r  G  s    ")r,   r  c                       \ rS rSrS rS rS r\R                  " \	S5      S 5       r
\R                  " \	S5      S 5       r\R                  " \S5      S	 5       rS
 rS rS rS rS rS rS r\S 5       rSrg)Test_hook_compressediR  c                 "    [        5       U l        g r1   )r  	fake_openr4   s    r#   rv  Test_hook_compressed.setUpU  s    +-r,   c                 (    U R                  SS5        g )NrC   rR  do_test_use_builtin_open_textr4   s    r#   test_empty_string&Test_hook_compressed.test_empty_stringX  s    **2s3r,   c                 (    U R                  SS5        g NabcdrR  r  r4   s    r#   test_no_ext Test_hook_compressed.test_no_ext[      **637r,   zRequires gzip and zlibc                 P   [         R                  nU R                  [         l         [        R                  " SS5      nU[         l        U R                  U R                  R                  S5        U R                  U R                  R                  S0 45        g ! U[         l        f = f)Ntest.gzrR  r[   )r  rR  )gzipr   r  rr  hook_compressedr   r  r  r   original_openr  s      r#   test_gz_ext_fake%Test_hook_compressed.test_gz_ext_fake^  sy    		NN		&..y#>F%DI88!<77:JB9OP &DI   B B%c                     [         R                  nS [         l         [        R                  " SSSS9nU[         l        U R	                  [        U5      S/5        g ! U[         l        f = f)Nc                 .    [         R                  " S5      $ )Ns   Ex-binary string)r	  r   r
  s     r#   r   ATest_hook_compressed.test_gz_with_encoding_fake.<locals>.<lambda>m  s    2::6I+Jr,   r  rR  r   r   zEx-binary string)r  r   rr  r  r   r~   r  s      r#   test_gz_with_encoding_fake/Test_hook_compressed.test_gz_with_encoding_fakej  sU    		J		&..y#PF%DIf(:';< &DIs   A A)zRequires bz2c                 P   [         R                  nU R                  [         l         [        R                  " SS5      nU[         l        U R                  U R                  R                  S5        U R                  U R                  R                  S0 45        g ! U[         l        f = f)Ntest.bz2rR  r[   )r  rR  )bz2BZ2Filer  rr  r  r   r  r  r  s      r#   test_bz2_ext_fake&Test_hook_compressed.test_bz2_ext_faket  sy    nn	(..z3?F'CK88!<77:KR9PQ (CKr  c                 (    U R                  SS5        g )Nz	abcd.blahr   do_test_use_builtin_open_binaryr4   s    r#   test_blah_ext"Test_hook_compressed.test_blah_ext  s    ,,[$?r,   c                 (    U R                  SS5        g )Nzabcd.Gzr   r  r4   s    r#   test_gz_ext_builtin(Test_hook_compressed.test_gz_ext_builtin  s    ,,Y=r,   c                 (    U R                  SS5        g )Nzabcd.Bz2r   r  r4   s    r#   test_bz2_ext_builtin)Test_hook_compressed.test_bz2_ext_builtin  s    ,,Z>r,   c                 (    U R                  SS5        g )Nr  r   r  r4   s    r#   test_binary_mode_encoding.Test_hook_compressed.test_binary_mode_encoding  s    ,,VT:r,   c                 (    U R                  SS5        g r  r  r4   s    r#   test_text_mode_encoding,Test_hook_compressed.test_text_mode_encoding  r  r,   c                 Z   U R                  U R                  5      n [        R                  " X5      nU R                  U5        U R	                  U R                  R
                  S5        U R	                  U R                  R                  X4S S S.45        g ! U R                  U5        f = f)Nr[   r   r  replace_builtin_openr  rr  r  r   r  r  r   r?   r   r  r  s        r#   r	  4Test_hook_compressed.do_test_use_builtin_open_binary  s    11$..A	5..x>F%%m488!<77#*,NO	Q %%m4   B B*c                 Z   U R                  U R                  5      n [        R                  " X5      nU R                  U5        U R	                  U R                  R
                  S5        U R	                  U R                  R                  X4SS S.45        g ! U R                  U5        f = f)Nr[   localer  r  r  s        r#   r  2Test_hook_compressed.do_test_use_builtin_open_text  s    11$..A	5..x>F%%m488!<77#*T,RS	U %%m4r  c                 <    [         R                  nU [         l        U$ r1   )builtinsr   )new_open_funcr  s     r#   r  )Test_hook_compressed.replace_builtin_open  s     %r,   )r  N)r'   r(   r)   r*   rv  r  r  unittest
skipUnlessr  r  r  r  r  r
  r  r  r  r  r	  r  staticmethodr  r+   r&   r,   r#   r  r  R  s    .48 78	Q 9	Q 78= 9= n-	R .	R@>?;8	Q	U  r,   r  c                   &    \ rS rSrS rS rS rSrg)Test_hook_encodedi  c                 \   [        5       n[        5       n[        R                  " XS9n[        5       n[        R
                  nU[        l         [        5       n[        5       nU" Xg5      nU[        l        U R                  UR                  S5        UR                  u  pU R                  U	S   U5        U R                  U	S   U5        U R                  U
R                  S5      U5        U R                  U
R                  S5      U5        U R                  U
5        g ! U[        l        f = f)Nr  r[   r   r   r  )r  rr  r   r  r#  r   r   r  r  r  popr   )r   r   r  r  r  r  r?   r   open_resultr   r   s              r#   testTest_hook_encoded.test  s    8''@&(	 !	*xH8D 0K)HM33Q7 00d1gx(d1gt$fjj,h7fjj*F3  *HMs   D D+c                 j  ^  [        [        S5       nUR                  S5        S S S 5        T R                  [        [        5        U 4S jnU" SS/5        T R                  [        5         U" SS/5        S S S 5        U" SS/5        U" S	S
/5        g ! , (       d  f       Nu= f! , (       d  f       N4= f)Nr   s   abcc           	         > [        [        S[        SU S9S9 n[        U5      nS S S 5        TR	                  WU5        g ! , (       d  f       N!= f)NrR  r   r,  rk   r   r@   r   r   r   r~   r   )r  expected_linesr   rN   r   s       r#   check,Test_hook_encoded.test_errors.<locals>.check  sK    c$0$HJMORJ UN3J Js   A  
Aignoreabcstrictr  u   �abcbackslashreplacez\x80abc)r   r   r   r   r   r   r   r   r"   r6  s   `  r#   test_errorsTest_hook_encoded.test_errors  s    &$1GGJ  V,	4 	h 12(UG$ 3i+' :,/   32s   B+B$
B!$
B2c                 F  ^  [        [        S5       nUR                  S5        S S S 5        T R                  [        [        5        U 4S jnU" S/ SQ5        T R                  [        5         U" S/ SQ5        S S S 5        g ! , (       d  f       Nc= f! , (       d  f       g = f)Nr   s   A
B
CD+IKw-c                    > [        [        U [        S5      S9 n[        U5      nS S S 5        TR	                  WU5        g ! , (       d  f       N!= f)Nzutf-7r3  r4  )r   r5  r   rN   r   s       r#   r6  +Test_hook_encoded.test_modes.<locals>.check  sE    d$0$9;>@R; UN3; ;s   A
ArR  )r   r   r      D€r   )r   zB
zCrB  )r   r   r   r   r   r   r   r<  s   `  r#   
test_modesTest_hook_encoded.test_modes  sv    &$1GG()   	V,	4 	c34z*$:; +*   +*s   B,B
B
B r&   N)r'   r(   r)   r*   r/  r=  rC  r+   r&   r,   r#   r*  r*    s    !00"<r,   r*  c                       \ rS rSrS rSrg)MiscTestr   c                 :    [         R                  " U [        5        g r1   )r   check__all__rr  r4   s    r#   test_allMiscTest.test_all  s    T9-r,   r&   N)r'   r(   r)   r*   rI  r+   r&   r,   r#   rF  rF    s    .r,   rF  __main__)2r	  r  r   r{   rr  rW  r#  r   r&  r  ImportErrorr  r   r   r   r   test.supportr   test.support.os_helperr   r	   r
   r   r   r/  r   r   r   r.   TestCaserW   r   r   rQ  rp  r  r  r  r  r  r  r  r  r  r  r  r*  rF  r'   mainr&   r,   r#   <module>rQ     s  
 
 	 
 	      ! -   3 8 "  	 	" "HQy("3"3 Qf$ $EY 1 1 ED
-- --^0X%6%6 0*==9 ==~,9 ,&2< 262< 262: 262 > 262: 282!? 262; 26) )W8,, Wr:<)) :<z.x   . zMMO {  
C  Ds"   F F" FF"F.-F.