
    ;ej                        	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	 d dl	Z	n# e
$ r dZ	Y nw xY w	 d dlZn# e
$ r dZY nw xY wd dl mZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  G d d          Z G d d          Z G d deej                  Z G d d          Z  G d deej                  Z! G d d          Z" G d dej                  Z# G d de#          Z$ G d de#          Z% G d de#          Z& G d d e#          Z' G d! d"e#          Z( G d# d$e#          Z) G d% d&e#          Z* G d' d(e#          Z+ G d) d*e#          Z, G d+ d,          Z- G d- d.ej                  Z. G d/ d0ej                  Z/ G d1 d2ej                  Z0e1d3k    r ej2                     dS dS )4    N)BytesIOStringIO)	FileInputhook_encoded)Path)verbose)TESTFN)unlink)	os_helper)support)mockc                       e Zd ZdddZdS )	BaseTestswmodec                    t          j                    \  }}|                     t          j        |           d|v rd nd}t          |||          5 }|                    |           d d d            n# 1 swxY w Y   |S )Nbutf-8encoding)tempfilemkstemp
addCleanupr   r
   openwrite)selfcontentr   fdnamer   fs          */usr/lib/python3.11/test/test_fileinput.pywriteTmpzBaseTests.writeTmp+   s    #%%D	($///$;;44G"dX... 	!GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A33A7:A7N)__name__
__module____qualname__r#        r"   r   r   (   s2         ),       r(   r   c                   F    e Zd Zd Zed             Zd Zd	dZd
dZd Z	dS )
LineReaderc                     g | _         d S N
_linesreadr   s    r"   __init__zLineReader.__init__5   s    r(   c                 H    	 | j         d d          g | _         S # g | _         w xY wr,   r-   r/   s    r"   	linesreadzLineReader.linesread8   s1    	!?111% DOObDO    s    	!c                 T    t          |                    d                    | _        | S NT)iter
splitlinesit)r   filenamer   s      r"   openhookzLineReader.openhook?   s$    x**40011r(   Nc                 d    t          | j        d          }| j                            |           |S )N )nextr7   r.   append)r   sizelines      r"   readlinezLineReader.readlineC   s.    DGR  t$$$r(   c                     g }d}	 |                                  }|s|S |                    |           |t          |          z  }||k    r|S HNr   )r@   r=   len)r   hintlinesr>   r?   s        r"   	readlineszLineReader.readlinesH   s`    	==??D LLCIIDt||	r(   c                     d S r,   r'   r/   s    r"   closezLineReader.closeT   s    r(   r,   )rA   )
r$   r%   r&   r0   propertyr2   r9   r@   rG   rI   r'   r(   r"   r*   r*   3   s           ! ! X!     

 
 
 
    r(   r*   c                       e Zd Zd ZdS )BufferSizesTestsc                    |                      d                    d t          d          D                                 }|                      d                    d t          d          D                                 }|                      d                    d t          d          D                                 }|                      d                    d t          d	          D                                 }t          j        d
          }t
          rt          d           t          ||||fd          }t          |          }|	                                 | 
                    t          |          d           | 
                    |d         d           | 
                    |d         d           | 
                    |                                d           | 
                    |                                |           t
          rt          d           t          ||||fd          }d}|r"|dk    r|                                }|r|dk    | 
                    |                                |           | 
                    |                                d           | 
                    |                                d           |                     |                                           |                     |                                           t
          rt          d           |                                 | 
                    |                                d           | 
                    |                                d           |	                                 t
          rt          d           t          ||||dfd          }t(          j        }		 t-          d          t(          _        t          |          }| 
                    t          |          d           | 
                    |d         d            | 
                    |                                d!           |                                 |	t(          _        n# |	t(          _        w xY wt
          rt          d"           t          ||||fd          }| 
                    |                                d#           | 
                    |                                d            |                                 | 
                    |                                d#           | 
                    |                                d            t
          rt          d$           t(          j        }
	 t          ||||fd	d%          }|D ]-}|d d&                                         }t          |           .|	                                 |
t(          _        n# |
t(          _        w xY wt          ||||fd          }|D ]}| 
                    |d&         d'           |                    |d d&                   }|                     |d            | 
                    t7          |                    d	                    |                                           |	                                 d S )(Nr;   c              3   &   K   | ]}d |dz   z  V  dS )zLine %s of file 1
   Nr'   .0is     r"   	<genexpr>z5BufferSizesTests.test_buffer_sizes.<locals>.<genexpr>Z   ,      "T"TQ#8AaC#@"T"T"T"T"T"Tr(      c              3   &   K   | ]}d |dz   z  V  dS )zLine %s of file 2
rO   Nr'   rP   s     r"   rS   z5BufferSizesTests.test_buffer_sizes.<locals>.<genexpr>[   rT   r(   
   c              3   &   K   | ]}d |dz   z  V  dS )zLine %s of file 3
rO   Nr'   rP   s     r"   rS   z5BufferSizesTests.test_buffer_sizes.<locals>.<genexpr>\   ,      "S"SQ#8AaC#@"S"S"S"S"S"Sr(      c              3   &   K   | ]}d |dz   z  V  dS )zLine %s of file 4
rO   Nr'   rP   s     r"   rS   z5BufferSizesTests.test_buffer_sizes.<locals>.<genexpr>]   rY   r(   rO   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. Inplacer]   inplacer   rA   
)r#   joinrangerecompiler   printr   listrI   assertEqualrD   linenor8   r@   
filelinenoassertFalseisfirstlineisstdinnextfilesysstdinr   stdoutuppermatchassertNotEqualintgroup)r   t1t2t3t4patfirF   s	savestdin
savestdoutr?   ms                r"   test_buffer_sizesz"BufferSizesTests.test_buffer_sizesX   s   ]]277"T"T%PR))"T"T"TTTUU]]277"T"T%PR))"T"T"TTTUU]]277"S"S%PQ(("S"S"SSSTT]]277"S"S%PQ(("S"S"SSSTTj455 	)'(((b"b"-@@@R



UR(((q#7888r$8999b)))+++ 	)'(((b"b"-@@@ 	A---A  	A---+++b)))!,,,))***&&& 	!-   
(<===b)))



 	*b"b"c2WEEEI		" !EFFCIHHESZZ,,,U2Y(;<<<R[[]]I666KKMMM!CII	CI!!!! 	,*+++b"b"-@@@a(((---
a(((--- 	 ,Z
	$"b"b!11wOOOB  CRCy((dHHJJJ#CJJCJ####b"b"-@@@ 	? 	?DT"Xt,,,		$ss)$$A4(((S__bmmoo>>>>





s   (B#R R&+AX X N)r$   r%   r&   r   r'   r(   r"   rL   rL   W   s(        P P P P Pr(   rL   c                       e Zd Zd Zd ZdS )UnconditionallyRaisec                 "    || _         d| _        d S NF)exception_typeinvoked)r   r   s     r"   r0   zUnconditionallyRaise.__init__   s    ,r(   c                 8    d| _         |                                 r4   )r   r   r   argskwargss      r"   __call__zUnconditionallyRaise.__call__   s    !!###r(   Nr$   r%   r&   r0   r   r'   r(   r"   r   r      s2          $ $ $ $ $r(   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )FileInputTestsc                    |                      d          }|                      d          }|                      d          }|                      d          }t          ||||fd          }|                                }|                     |d           |                     |                                d           |                     |                                d           |                     |                                |           |                                }|                     |           |                     |                                d           |                     |                                d           |                     |                                |           |                                 d S )Nr;   zThe only line there is.
r   r\   rO   r   )	r#   r   r@   rq   rr   rs   r8   rt   rI   )r   r   r   r   r   r   r?   s          r"   test_zero_byte_filesz#FileInputTests.test_zero_byte_files   sl   ]]2]]2]]677]]2b"b"-@@@{{}}:;;;a(((!,,,+++{{}}a(((!,,,+++





r(   c                 n   |                      d          }|                      d          }t          ||fd          }t          |          }|                     |g d           |                     |                                d           |                     |                                d           d S )NA
B
CD
E
Fr   r\   A
B
CzD
zE
F   rc   )r#   r   rp   rq   rs   rr   r   r   r   r   rF   s        r"   %test_files_that_dont_end_with_newlinez4FileInputTests.test_files_that_dont_end_with_newline   s    ]]9%%]]9%%b"X888R F F FGGG!,,,a(((((r(   c                 $   |                      d          }|                      d          }t          ||fd          }|                     |                                d           t	          |          }|                     |                                d           |                                 |                     |                                d           t          |          }|                     |                                d           d S )NzA
BzC
Dr   r\   rA   )r#   r   rq   filenor<   r}   rw   rp   )r   r   r   r   r?   s        r"   test_filenozFileInputTests.test_fileno   s    ]]6""]]6""b"X888b)))BxxBIIKK,,,
b)))Bxxb)))))r(   c                     dD ]r}|                      |          5  |                     t                    5  t          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   sd S )N)r   rUUr   )subTestassertRaises
ValueErrorr   )r   r   s     r"   test_invalid_opening_modez(FileInputTests.test_invalid_opening_mode   s    $ 	) 	)D4(( ) )&&z22 ) )4(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	)s4   A*AA*AA*AA**A.	1A.	c                     t          j        d          5 }t          d          |_        t	          dgd          }t          |          }|                     |dg           d d d            d S # 1 swxY w Y   d S )Nz	sys.stdin   spam, bacon, sausage, and spamre   rbr]   r   )r   patchr   bufferr   rp   rq   )r   m_stdinr   rF   s       r"   test_stdin_binary_modez%FileInputTests.test_stdin_binary_mode   s    Z$$ 	I$%FGGGN#T222BHHEU%F$GHHH		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   AA//A36A3c                 V   t           j        }	 t          d          t           _        |                     t	          t           j        d                     t          dgd          }t          |          }|                     |dg           |t           _        d S # |t           _        w xY w)Nr   r   re   r   r   )rx   ry   r   rt   hasattrr   rp   rq   )r   
orig_stdinr   rF   s       r"   test_detached_stdin_binary_modez.FileInputTests.test_detached_stdin_binary_mode   s    Y
	# ABBCIWSY99:::#T222BHHEU%F$GHHH"CIII
CI""""s   A>B B(c                    	 t          dd           }|                     d           n# t          $ r Y nw xY w	 t          d          }|                     d           n# t          $ r Y nw xY w G d d          }|                     d	          } |            }t          |g|          5 }|                                 d d d            n# 1 swxY w Y   |                     |j        d
           d S )NrO   c                     d S r,   r'   )r!   r   s     r"   <lambda>z7FileInputTests.test_file_opening_hook.<locals>.<lambda>  s    D r(   )ri   r9   zGFileInput should raise if both inplace and openhook arguments are givenr9   z2FileInput should check openhook for being callablec                       e Zd Zd Zd ZdS )=FileInputTests.test_file_opening_hook.<locals>.CustomOpenHookc                     d| _         d S r   )r   r/   s    r"   r0   zFFileInputTests.test_file_opening_hook.<locals>.CustomOpenHook.__init__  s    $r(   c                 (    d| _         t          |ddiS )NTr   r   )r   r   )r   r   kargss      r"   r   zFFileInputTests.test_file_opening_hook.<locals>.CustomOpenHook.__call__  s    #T4G444r(   Nr   r'   r(   r"   CustomOpenHookr     s2        % % %5 5 5 5 5r(   r   rj   zopenhook not invoked)r   failr   r#   r@   
assertTruer   )r   r   r   tcustom_open_hooks        r"   test_file_opening_hookz%FileInputTests.test_file_opening_hook   s   	1/@/@AAABII @ A A A A 	 	 	D		A&&&BIIJKKKK 	 	 	D		5 	5 	5 	5 	5 	5 	5 	5 MM$)>++s%5666 	"KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(02HIIIIIs/   '* 
77%A! !
A.-A./CCCc                    t          t          d          5 }|                    d           |                    ddz             |                    d           d d d            n# 1 swxY w Y   |                     t          t                     t          t          t          d                    5 }	 |                     |                                d           |                     |                                d	           |                     |                                d
           n%# t          $ r | 
                    d           Y nw xY w|                     t                    5  t          |           d d d            n# 1 swxY w Y   |                     |                                d           |                     |                                d           d d d            d S # 1 swxY w Y   d S )Nwbs   A
B
Cs
   123456789
i     asciir]   r9   r   r   C
zRead to end of filer;   )r   r	   r   r   safe_unlinkr   r   rq   r@   UnicodeDecodeErrorr   r   rp   r   r!   r   s      r"   test_readlinezFileInputTests.test_readline  s   &$ 	1GGN###GGNT)***GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V,,,V ,W 5 57 7 7 	0:<1  666  666  6666% 1 1 1		/000001""#566  R               R[[]]B///R[[]]B///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sn   AA%%A),A)3G15A8D.-G1.EG1EG1-F	=G1	F	G1F	AG11G58G5c                    t          t          d          5 }|                    d           d d d            n# 1 swxY w Y   |                     t          t                     t          t          d          5 }|                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           d d d            d S # 1 swxY w Y   d S )	Nr   s   A
B
CDr   r   s   A
s   B
s   CDr(   )r   r	   r   r   r   r   rq   r@   r   s      r"   test_readline_binary_modez(FileInputTests.test_readline_binary_mode2  s   &$ 	%1GGO$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%V,,,V$/// 	12R[[]]F333R[[]]H555R[[]]G444R[[]]C000R[[]]C000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   8<<9C	EEEc                    |                      dd          }t          |dd          5 }|                                }|                     |d           t          j                            d           d d d            n# 1 swxY w Y   t          |d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Ns   Initial text.r   r   r   T)r   ri   s	   New line.)	r#   r   r@   rq   rx   rz   r   r   readr   	temp_filefobjr?   r!   s        r"   test_inplace_binary_write_modez-FileInputTests.test_inplace_binary_write_mode?  sJ   MM"2M>>	ytT::: 	+d==??DT#3444J\***		+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 )T"" 	5aQVVXX|444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s$   A
B  BB)CCCc                    |                      dd          }t          |ddd          5 }|                                }|                     |d           t	          d	           d d d            n# 1 swxY w Y   t          |d
          5 }|                     |                                                    d          d           d d d            d S # 1 swxY w Y   d S )Ns   Initial text r   r   Tr   replace)ri   r   errorsu   Initial text �u   New line r   s   
s
   New line ?)r#   r   r@   rq   ro   r   r   rstripr   s        r"   test_inplace_encoding_errorsz+FileInputTests.test_inplace_encoding_errorsI  sk   MM"6TMBB	y$ '	; ; ; 	#>B==??DT#8999/"""		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 )T"" 	FaQVVXX__W55}EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs#   :A11A58A5<CCCc                     d }|                      d          }t          |g|          5 }|                                }d d d            n# 1 swxY w Y   |                     |d           d S )Nc                 *    t          j        d          S )N(I used to receive only filename and mode)ior   r8   r   s     r"   old_hookzFFileInputTests.test_file_hook_backward_compatibility.<locals>.old_hookT  s    ;IJJJr(   rj   r   r   )r#   r   r@   rq   )r   r   r   r   results        r"   %test_file_hook_backward_compatibilityz4FileInputTests.test_file_hook_backward_compatibilityS  s    	K 	K 	KMM$sX... 	#"[[]]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#!KLLLLLs   AAAc                    |                      d          }|                      d          }t          ||fd          5 }t          |          }d d d            n# 1 swxY w Y   |                     |g d           |                     |                                d           |                     |                                d           |                     |j        d           d S )	Nr   r   r   r\   r   r   rc   r'   )r#   r   rp   rq   rs   rr   _filesr   s        r"   test_context_managerz#FileInputTests.test_context_manager[  s   ]]9%%]]9%%b"X888 	BHHE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 F F FGGG!,,,a(((B'''''s   AA!Ac                     |                      d          }	 t          |d          5 }t          # 1 swxY w Y   d S # t          $ r |                     |j        d           Y d S w xY w)Nr;   r   r\   r'   )r#   r   OSErrorrq   r   )r   r   r   s      r"   test_close_on_exceptionz&FileInputTests.test_close_on_exceptione  s    ]]2	,g666 "          	, 	, 	,RY++++++	,s#   = 04= 4= %A&%A&c                     t          g d          5 }|                     |j        d           d d d            d S # 1 swxY w Y   d S )Nr   r\   )re   )r   rq   r   )r   r   s     r"   .test_empty_files_list_specified_to_constructorz=FileInputTests.test_empty_files_list_specified_to_constructorm  s    R'222 	0bRY///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   ;??c                    	 t           j        }t          t                    }	 |                     d          }|                     t          |dz              t          |gdd          5 }t          |           |t           _        |	                                 d d d            n# 1 swxY w Y   |t           _        n# |t           _        w xY w| 
                    |j        d           d S )Nrj   z.bakTr   rh   zos.unlink() was not invoked)osr
   r   r   r#   r   r   r   r<   rw   r   r   )r   os_unlink_origos_unlink_replacementr   r   s        r"   %test_nextfile_oserror_deleting_backupz4FileInputTests.test_nextfile_oserror_deleting_backupq  s   	  4W = =	'd##AOOKV444!dWEEE R1	              
 'BIIBI&&&& 	-55	7 	7 	7 	7 	7s0   AB= )0B%B= %B))B= ,B)-B= =Cc                 |   	 t           j        }t          t                    }	 |                     d          }t          |gdd          5 }|t           _        |                                 d d d            n# 1 swxY w Y   |t           _        n# |t           _        w xY w|                     |j        d           d S Nrj   Tr   rh   zos.fstat() was not invoked)	r   fstatr   r   r#   r   r@   r   r   )r   os_fstat_origos_fstat_replacementr   r   s        r"   %test_readline_os_fstat_raises_OSErrorz4FileInputTests.test_readline_os_fstat_raises_OSError      	; 3G<<	%d##A!dWEEE /               %BHH}BH$$$$ 	,44	6 	6 	6 	6 	6/   (B !A8,B 8A<<B ?A< B Bc                 |   	 t           j        }t          t                    }	 |                     d          }t          |gdd          5 }|t           _        |                                 d d d            n# 1 swxY w Y   |t           _        n# |t           _        w xY w|                     |j        d           d S r   )	r   chmodr   r   r#   r   r@   r   r   )r   os_chmod_origos_chmod_replacementr   r   s        r"   %test_readline_os_chmod_raises_OSErrorz4FileInputTests.test_readline_os_chmod_raises_OSError  r   r   c                     G d dt                     } |            }|                     d          }t          |gd          5 }|j        }	 ||_        |                                }||_        n# ||_        w xY w	 d d d            n# 1 swxY w Y   |                     |j        d           |                     |dd           d S )	Nc                       e Zd Zd Zd ZdS )QFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueErrorc                 F    t                               | t                     d S r,   )r   r0   r   r/   s    r"   r0   zZFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueError.__init__  s    $--dJ?????r(   c                 .    |                                   d S r,   )r   r/   s    r"   r   zXFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueError.fileno  s    r(   N)r$   r%   r&   r0   r   r'   r(   r"   FilenoRaisesValueErrorr    s5        @ @ @         r(   r	  rj   r   r\   z_file.fileno() was not invokedrA   zfileno() should return -1)r   r#   r   _filer   r   r   rq   )r   r	   unconditionally_raise_ValueErrorr   r   file_backupr   s          r"   "test_fileno_when_ValueError_raisedz1FileInputTests.test_fileno_when_ValueError_raised  s7   	  	  	  	  	 %9 	  	  	  ,B+A+C+C(MM$aS7333 	'r(K';&;&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	8@8	: 	: 	: 	%@AAAAAs*   B
A1)B
1	A::B

BBc                 b   t                      }t          ddg|j                  5 }|                     |j        g            |                     |                                d           |                     |j        dg           |                     |                                d           |                     |j        dg           |                     |                                d           |                     |j        ddg           |                     |                                d           |                     |j        dg           |                     |                                d           |                     |j        g            d d d            d S # 1 swxY w Y   d S Nzline1
line2zline3
r   zline1
line2r;   )r*   r   r9   rq   r2   r@   r   srcr   s      r"   test_readline_bufferingz&FileInputTests.test_readline_buffering  s   llni8 #. . . 	013S]B///R[[]]I666S]YK888R[[]]G444S]WI666R[[]]I666S]RO<<<R[[]]B///S]RD111R[[]]B///S]B///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   E0F$$F(+F(c                 (   t                      }t          ddg|j                  5 }|                     |j        g            |                     t          |          d           |                     |j        dg           |                     t          |          d           |                     |j        dg           |                     t          |          d           |                     |j        ddg           |                     t          t
          |           |                     |j        dg           |                     t          t
          |           |                     |j        g            d d d            d S # 1 swxY w Y   d S r  )r*   r   r9   rq   r2   r<   r   StopIterationr  s      r"   test_iteration_bufferingz'FileInputTests.test_iteration_buffering  s   llni8 #. . . 	013S]B///T"XXy111S]YK888T"XXw///S]WI666T"XXy111S]RO<<<mT2666S]RD111mT2666S]B///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   EFFFc                    t          |                     d                    }t          |d          5 }|                                }|                     |d           |                     |                                d           |                     |                                d           |                     |                                t          j	        |                     d d d            d S # 1 swxY w Y   d S )NPathlib file.r   r   rO   )
r   r#   r   r@   rq   rr   rs   r8   r   fspath)r   r   r   r?   s       r"   test_pathlib_filez FileInputTests.test_pathlib_file  s   $--0011rG,,, 	;;;==DT?333RYY[[!,,,R]]__a000R[[]]BIbMM:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   B5C66C:=C:c                    t          |                     d                    }t          |dd          5 }|                                }|                     |d           t          d|z             d d d            n# 1 swxY w Y   t          |d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr  Tr   )ri   r   zModified %sr   zModified Pathlib file.
)r   r#   r   r@   rq   ro   r   r   )r   r   r   r?   r!   s        r"   test_pathlib_file_inplacez(FileInputTests.test_pathlib_file_inplace  s`   $--0011r4'::: 	(b;;==DT?333-$&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( "w''' 	C1QVVXX'ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs#   =A>>BB)CCCN)r$   r%   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r'   r(   r"   r   r      s         () ) )(
* 
* 
*) ) )I I I	# 	# 	#J J J60 0 0.1 1 15 5 5F F FM M M( ( (, , ,0 0 07 7 7*6 6 6$6 6 6$B B B.0 0 0 0 0 0 ; ; ;C C C C Cr(   r   c                   T    e Zd Z	 dddddddZd Zd Zd	 Zd
 Zd Zd Z	d Z
d ZdS )MockFileInputNFr;   r)r   r9   r   r   c                    || _         || _        || _        || _        || _        || _        || _        d | _        t          j	        d           | _
        i | _        d S )Nc                      dS rC   r'   r'   r(   r"   r   z(MockFileInput.__init__.<locals>.<lambda>  s     r(   )r]   ri   backupr   r9   r   r   r
  collectionsdefaultdictinvocation_countsreturn_values)r   r]   ri   r"  r   r9   r   r   s           r"   r0   zMockFileInput.__init__  s]    
	  
!,!8!C!Cr(   c                 0    | j         dxx         dz  cc<   d S )NrI   rO   )r%  r/   s    r"   rI   zMockFileInput.close  s'    w'''1,'''''r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nrw   rO   r%  r&  r/   s    r"   rw   zMockFileInput.nextfile  /    z***a/***!*--r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nr8   rO   r)  r/   s    r"   r8   zMockFileInput.filename  r*  r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nrr   rO   r)  r/   s    r"   rr   zMockFileInput.lineno  /    x(((A-(((!(++r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nrs   rO   r)  r/   s    r"   rs   zMockFileInput.filelineno  s/    |,,,1,,,!,//r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nr   rO   r)  r/   s    r"   r   zMockFileInput.fileno  r-  r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nru   rO   r)  r/   s    r"   ru   zMockFileInput.isfirstline  s/    }---2---!-00r(   c                 F    | j         dxx         dz  cc<   | j        d         S )Nrv   rO   r)  r/   s    r"   rv   zMockFileInput.isstdin  s/    y)))Q.)))!),,r(   )NFr;   )r$   r%   r&   r0   rI   rw   r8   rr   rs   r   ru   rv   r'   r(   r"   r  r    s        N D4         - - -. . .. . ., , ,0 0 0, , ,1 1 1- - - - -r(   r  c                   "    e Zd Z	 d Zd Zd ZdS )BaseFileInputGlobalMethodsTestc                 l    t           j        | _        t           j        | _        t
          t           _        d S r,   )	fileinput_state_orig_stater   _orig_FileInputr  r/   s    r"   setUpz$BaseFileInputGlobalMethodsTest.setUp'  s&    $+(2+	r(   c                 J    | j         t          _        | j        t          _        d S r,   )r8  r5  r   r7  r6  r/   s    r"   tearDownz'BaseFileInputGlobalMethodsTest.tearDown,  s    "2	+	r(   c                     |j         |         }|                     |d|           t          |j                   }|                     |d           d S )NrO   )r%  rq   rD   )r   mock_file_inputmethod_nameactual_countactual_total_counts        r"   assertExactlyOneInvocationz9BaseFileInputGlobalMethodsTest.assertExactlyOneInvocation0  sU    &8Eq+666 !BCC+Q/////r(   N)r$   r%   r&   r9  r;  rA  r'   r(   r"   r3  r3  #  sF         , , ,
, , ,0 0 0 0 0r(   r3  c                   (    e Zd Z	 d Zd Zd Zd ZdS )Test_fileinput_inputc                 n   	 t                      }t                      |_        |t          _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j	        j
                   |                     |t          j        d           d S )N)zinput() already activefileinput._state)r  objectr
  r5  r6  r   RuntimeErrorinputrq   	exceptionr   assertIs)r   instancecms      r"   1test_state_is_not_None_and_state_file_is_not_NonezFTest_fileinput_input.test_state_is_not_None_and_state_file_is_not_None;  s    	$ !??#	|,, 	O	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4bl6GHHHh	 02DEEEEEs   	A))A-0A-c                 r    	 t                      }d |_        |t          _        |                                  d S r,   )r  r
  r5  r6  do_test_call_inputr   rK  s     r"   -test_state_is_not_None_and_state_file_is_NonezBTest_fileinput_input.test_state_is_not_None_and_state_file_is_NoneH  s:    	@
 !??#	!!!!!r(   c                 H    	 d t           _        |                                  d S r,   )r5  r6  rO  r/   s    r"   test_state_is_Nonez'Test_fileinput_input.test_state_is_NoneS  s)    	
  	!!!!!r(   c                 >   	 t                      }t                      }t                      }t                      }t                      }t                      }t          j        ||||||          }|                     |t          j        d           |                     ||j        d           |                     ||j        d           |                     ||j        d           |                     ||j        d           |                     ||j	        d           d S )N)r]   ri   r"  r   r9   r   rE  r]   ri   r"  r   r9   )
rF  r5  rH  rJ  r6  r]   ri   r"  r   r9   )r   r]   ri   r"  r   r9   r   r   s           r"   rO  z'Test_fileinput_input.do_test_call_input\  s   	F ((xx8888 ugf8= = = 	fi.0BCCC 	eV\7333gv~y999ffmX666dFK000h<<<<<r(   N)r$   r%   r&   rM  rQ  rS  rO  r'   r(   r"   rC  rC  8  sV        *F F F	" 	" 	"" " "= = = = =r(   rC  c                       e Zd Z	 d Zd ZdS )Test_fileinput_closec                     	 d t           _        t          j                     |                     t           j                   d S r,   )r5  r6  rI   assertIsNoner/   s    r"   rS  z'Test_fileinput_close.test_state_is_Nonez  s:    		)*+++++r(   c                     	 t                      }|t          _        t          j                     |                     |d           |                     t          j                   d S )NrI   )r  r5  r6  rI   rA  rX  rP  s     r"   test_state_is_not_Nonez+Test_fileinput_close.test_state_is_not_None  sY    	# ??#	''':::)*+++++r(   Nr$   r%   r&   rS  rZ  r'   r(   r"   rV  rV  w  s5        *, , ,, , , , ,r(   rV  c                       e Zd Z	 d Zd ZdS )Test_fileinput_nextfilec                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S N)zno active input())	r5  r6  r   rG  rw   rq   rI  r   rX  r   rL  s     r"   rS  z*Test_fileinput_nextfile.test_state_is_None      	3  	|,, 	!   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!/1BCCC)*+++++   AAAc                 *   	 t                      }t                      }||j        d<   |t          _        t          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nrw   )rF  r  r&  r5  r6  rw   rA  rJ  )r   nextfile_retvalrK  retvals       r"   rZ  z.Test_fileinput_nextfile.test_state_is_not_None      	. !(( ??-<z*#	#%%''*===fo...i&11111r(   Nr[  r'   r(   r"   r]  r]    5        -, , ,2 2 2 2 2r(   r]  c                       e Zd Z	 d Zd ZdS )Test_fileinput_filenamec                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S r_  )	r5  r6  r   rG  r8   rq   rI  r   rX  r`  s     r"   rS  z*Test_fileinput_filename.test_state_is_None  ra  rb  c                 *   	 t                      }t                      }||j        d<   |t          _        t          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nr8   )rF  r  r&  r5  r6  r8   rA  rJ  )r   filename_retvalrK  re  s       r"   rZ  z.Test_fileinput_filename.test_state_is_not_None  rf  r(   Nr[  r'   r(   r"   ri  ri    rg  r(   ri  c                       e Zd Z	 d Zd ZdS )Test_fileinput_linenoc                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S r_  )	r5  r6  r   rG  rr   rq   rI  r   rX  r`  s     r"   rS  z(Test_fileinput_lineno.test_state_is_None      	3  	|,, 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	/1BCCC)*+++++rb  c                 *   	 t                      }t                      }||j        d<   |t          _        t          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nrr   )rF  r  r&  r5  r6  rr   rA  rJ  )r   lineno_retvalrK  re  s       r"   rZ  z,Test_fileinput_lineno.test_state_is_not_None  s    	.  ??+8x(#	!##''(;;;fm,,,i&11111r(   Nr[  r'   r(   r"   rn  rn    s5        +, , ,2 2 2 2 2r(   rn  c                       e Zd Z	 d Zd ZdS )Test_fileinput_filelinenoc                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S r_  )	r5  r6  r   rG  rs   rq   rI  r   rX  r`  s     r"   rS  z,Test_fileinput_filelineno.test_state_is_None  s    	3  	|,, 	# """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#/1BCCC)*+++++rb  c                 *   	 t                      }t                      }||j        d<   |t          _        t          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nrs   )rF  r  r&  r5  r6  rs   rA  rJ  )r   filelineno_retvalrK  re  s       r"   rZ  z0Test_fileinput_filelineno.test_state_is_not_None  s    	. #HH ??/@|,#	%'''',???f/000i&11111r(   Nr[  r'   r(   r"   rt  rt    s5        /, , ,2 2 2 2 2r(   rt  c                       e Zd Z	 d Zd ZdS )Test_fileinput_filenoc                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S r_  )	r5  r6  r   rG  r   rq   rI  r   rX  r`  s     r"   rS  z(Test_fileinput_fileno.test_state_is_None  rp  rb  c                 8   	 t                      }t                      }||j        d<   ||_        |t          _        t	          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nr   )	rF  r  r&  fileno_retvalr5  r6  r   rA  rJ  )r   r|  rK  re  s       r"   rZ  z,Test_fileinput_fileno.test_state_is_not_None  s    	.  ??+8x(!.#	!##''(;;;fm,,,i&11111r(   Nr[  r'   r(   r"   ry  ry    s5        +, , ,2 2 2 2 2r(   ry  c                       e Zd Z	 d Zd ZdS )Test_fileinput_isfirstlinec                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S r_  )	r5  r6  r   rG  ru   rq   rI  r   rX  r`  s     r"   rS  z-Test_fileinput_isfirstline.test_state_is_None  s    	3  	|,, 	$!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$/1BCCC)*+++++rb  c                 *   	 t                      }t                      }||j        d<   |t          _        t          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nru   )rF  r  r&  r5  r6  ru   rA  rJ  )r   isfirstline_retvalrK  re  s       r"   rZ  z1Test_fileinput_isfirstline.test_state_is_not_None  s    	. $XX ??0B}-#	&((''-@@@f0111i&11111r(   Nr[  r'   r(   r"   r~  r~    s5        0, , ,2 2 2 2 2r(   r~  c                       e Zd Z	 d Zd ZdS )Test_fileinput_isstdinc                 (   	 d t           _        |                     t                    5 }t          j                     d d d            n# 1 swxY w Y   |                     d|j        j                   |                     t           j                   d S r_  )	r5  r6  r   rG  rv   rq   rI  r   rX  r`  s     r"   rS  z)Test_fileinput_isstdin.test_state_is_None0  s    	3  	|,, 	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 /1BCCC)*+++++rb  c                 *   	 t                      }t                      }||j        d<   |t          _        t          j                    }|                     |d           |                     ||           |                     t          j        |           d S )Nrv   )rF  r  r&  r5  r6  rv   rA  rJ  )r   isstdin_retvalrK  re  s       r"   rZ  z-Test_fileinput_isstdin.test_state_is_not_None:  s    	.   ??,:y)#	"$$'')<<<fn---i&11111r(   Nr[  r'   r(   r"   r  r  -  s5        ,, , ,2 2 2 2 2r(   r  c                       e Zd Zd Zd ZdS )InvocationRecorderc                     d| _         d S rC   )invocation_countr/   s    r"   r0   zInvocationRecorder.__init__J  s     !r(   c                 \    | xj         dz  c_         ||f| _        t          j        d          S )NrO   s
   some bytes)r  last_invocationr   r   r   s      r"   r   zInvocationRecorder.__call__M  s2    " $f~z-(((r(   Nr   r'   r(   r"   r  r  H  s2        " " ") ) ) ) )r(   r  c                       e Zd Z	 d Zd Zd Z ej        ed          d             Z	 ej        ed          d             Z
 ej        ed          d             Zd	 Zd
 Zd Zd Zd Zd Zd Zed             ZdS )Test_hook_compressedc                 ,    t                      | _        d S r,   )r  	fake_openr/   s    r"   r9  zTest_hook_compressed.setUpV  s    +--r(   c                 2    |                      dd           d S )Nr;   r  do_test_use_builtin_open_textr/   s    r"   test_empty_stringz&Test_hook_compressed.test_empty_stringY  s    **2s33333r(   c                 2    |                      dd           d S Nabcdr  r  r/   s    r"   test_no_extz Test_hook_compressed.test_no_ext\      **6377777r(   zRequires gzip and zlibc                 ,   t           j        }| j        t           _        	 t          j        dd          }|t           _        n# |t           _        w xY w|                     | j        j        d           |                     | j        j        di f           d S )Ntest.gzr  rO   )r  r  )gzipr   r  r5  hook_compressedrq   r  r  r   original_openr   s      r"   test_gz_ext_fakez%Test_hook_compressed.test_gz_ext_fake_  s    	N		&.y#>>F%DIIDI%%%%8!<<<7:JB9OPPPPP   A Ac                     t           j        }d t           _        	 t          j        ddd          }|t           _        n# |t           _        w xY w|                     t          |          dg           d S )Nc                 *    t          j        d          S )Ns   Ex-binary string)r   r   r   s     r"   r   zATest_hook_compressed.test_gz_with_encoding_fake.<locals>.<lambda>n  s    2:6I+J+J r(   r  r  r   r   zEx-binary string)r  r   r5  r  rq   rp   r  s      r"   test_gz_with_encoding_fakez/Test_hook_compressed.test_gz_with_encoding_fakek  sq    	JJ		&.y#PPPF%DIIDI%%%%f(:';<<<<<s	   ? AzRequires bz2c                 ,   t           j        }| j        t           _        	 t          j        dd          }|t           _        n# |t           _        w xY w|                     | j        j        d           |                     | j        j        di f           d S )Ntest.bz2r  rO   )r  r  )bz2BZ2Filer  r5  r  rq   r  r  r  s      r"   test_bz2_ext_fakez&Test_hook_compressed.test_bz2_ext_fakeu  s    n	(.z3??F'CKK-CK''''8!<<<7:KR9PQQQQQr  c                 2    |                      dd           d S )Nz	abcd.blahr   do_test_use_builtin_open_binaryr/   s    r"   test_blah_extz"Test_hook_compressed.test_blah_ext  s    ,,[$?????r(   c                 2    |                      dd           d S )Nzabcd.Gzr   r  r/   s    r"   test_gz_ext_builtinz(Test_hook_compressed.test_gz_ext_builtin  s    ,,Y=====r(   c                 2    |                      dd           d S )Nzabcd.Bz2r   r  r/   s    r"   test_bz2_ext_builtinz)Test_hook_compressed.test_bz2_ext_builtin  s    ,,Z>>>>>r(   c                 2    |                      dd           d S )Nr  r   r  r/   s    r"   test_binary_mode_encodingz.Test_hook_compressed.test_binary_mode_encoding  s    ,,VT:::::r(   c                 2    |                      dd           d S r  r  r/   s    r"   test_text_mode_encodingz,Test_hook_compressed.test_text_mode_encoding  r  r(   c                 T   |                      | j                  }	 t          j        ||          }|                      |           n# |                      |           w xY w|                     | j        j        d           |                     | j        j        ||fd d df           d S )NrO   r   r   replace_builtin_openr  r5  r  rq   r  r  r   r8   r   r  r   s        r"   r  z4Test_hook_compressed.do_test_use_builtin_open_binary  s    11$.AA	5.x>>F%%m4444D%%m44448!<<<7#T*,N,NO	Q 	Q 	Q 	Q 	Q   A Ac                 T   |                      | j                  }	 t          j        ||          }|                      |           n# |                      |           w xY w|                     | j        j        d           |                     | j        j        ||fdd df           d S )NrO   localer  r  r  s        r"   r  z2Test_hook_compressed.do_test_use_builtin_open_text  s    11$.AA	5.x>>F%%m4444D%%m44448!<<<7#T*T,R,RS	U 	U 	U 	U 	Ur  c                 6    t           j        }| t           _        |S r,   )builtinsr   )new_open_funcr  s     r"   r  z)Test_hook_compressed.replace_builtin_open  s     %r(   N)r$   r%   r&   r9  r  r  unittest
skipUnlessr  r  r  r  r  r  r  r  r  r  r  r  staticmethodr  r'   r(   r"   r  r  S  sZ       4. . .4 4 48 8 8 X788	Q 	Q 98	Q X788= = 98= Xn--	R 	R .-	R@ @ @> > >? ? ?; ; ;8 8 8	Q 	Q 	Q	U 	U 	U   \  r(   r  c                   "    e Zd Z	 d Zd Zd ZdS )Test_hook_encodedc                    t                      }t                      }t          j        ||          }t                      }t          j        }|t          _        	 t                      }t                      } |||          }|t          _        n# |t          _        w xY w|                     |j        d           |j        \  }	}
| 	                    |	d         |           | 	                    |	d         |           | 	                    |

                    d          |           | 	                    |

                    d          |           |                     |
           d S )Nr   rO   r   r   r   )rF  r5  r   r  r  r   rq   r  r  rJ  poprt   )r   r   r   r   r  r  r8   r   open_resultr   r   s              r"   testzTest_hook_encoded.test  s5   88'@@@&((	 !	*xxH88D &400K)HMMMHM))))3Q777 0fd1gx(((d1gt$$$fjj,,h777fjj**F333     s   (B Bc                     t          t          d          5 }|                    d           d d d            n# 1 swxY w Y                        t          t                      fd} |ddg                                t                    5   |ddg           d d d            n# 1 swxY w Y    |ddg            |d	d
g           d S )Nr   s   abcc                     t          t          dt          d|                     5 }t          |          }d d d            n# 1 swxY w Y                       ||           d S )Nr  r   r  r]   r   r9   r   r	   r   rp   rq   )r   expected_linesr   rF   r   s       r"   checkz,Test_hook_encoded.test_errors.<locals>.check  s    c$0$H$H$HJ J J !MOR! ! ! ! ! ! ! ! ! ! ! ! ! ! ! UN33333s   AAAignoreabcstrictr   u   �abcbackslashreplacez\x80abc)r   r	   r   r   r   r   r   r   r!   r  s   `  r"   test_errorszTest_hook_encoded.test_errors  sg   &$ 	 1GGJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 V,,,	4 	4 	4 	4 	4 	h   122 	% 	%E(UG$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%i+''' :,/////s   9= =B**B.1B.c                 t    t          t          d          5 }|                    d           d d d            n# 1 swxY w Y                        t          t                      fd} |dg d                                t                    5   |dg d           d d d            d S # 1 swxY w Y   d S )Nr   s   A
B
CD+IKw-c                     t          t          | t          d                    5 }t          |          }d d d            n# 1 swxY w Y                       ||           d S )Nzutf-7r  r  )r   r  r   rF   r   s       r"   r  z+Test_hook_encoded.test_modes.<locals>.check  s    d$0$9$9; ; ; !>@R! ! ! ! ! ! ! ! ! ! ! ! ! ! ! UN33333s   AA	Ar  )r   r   r      D€r   )r   zB
zCr  )r   r	   r   r   r   r   r   r  s   `  r"   
test_modeszTest_hook_encoded.test_modes  sS   &$ 	*1GG()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	V,,,	4 	4 	4 	4 	4 	c333444z** 	< 	<E$:::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   9= =B--B14B1N)r$   r%   r&   r  r  r  r'   r(   r"   r  r    sD        1! ! !00 0 0"< < < < <r(   r  c                       e Zd Zd ZdS )MiscTestc                 :    t          j        | t                     d S r,   )r   check__all__r5  r/   s    r"   test_allzMiscTest.test_all  s    T9-----r(   N)r$   r%   r&   r  r'   r(   r"   r  r    s#        . . . . .r(   r  __main__)3r   r   rx   rm   r5  r#  r  r   r  r  ImportErrorr  r   r   r   r   pathlibr   test.supportr   test.support.os_helperr	   r
   r   r   r  r   r   r   r*   TestCaserL   r   r   r  r3  rC  rV  r]  ri  rn  rt  ry  r~  r  r  r  r  r  r$   mainr'   r(   r"   <module>r     s%   
			 				 



 				           JJJJ   
CCCKKKK   DDD !               - - - - - - - -                   ) ) ) ) ) ) 8 8 8 8 8 8 " " " " " "            	 	 	 	 	 	 	 	" " " " " " " "HQ Q Q Q Qy("3 Q Q Qf$ $ $ $ $ $ $ $C C C C CY 1 C C CD
-- -- -- -- -- -- -- --^0 0 0 0 0X%6 0 0 0*== == == == ==9 == == ==~, , , , ,9 , , ,&2 2 2 2 2< 2 2 262 2 2 2 2< 2 2 262 2 2 2 2: 2 2 262 2 2 2 2 > 2 2 262 2 2 2 2: 2 2 282 2 2 2 2!? 2 2 262 2 2 2 2; 2 2 26) ) ) ) ) ) ) )W W W W W8, W W Wr:< :< :< :< :<) :< :< :<z. . . . .x  . . . zHMOOOOO s   , 66? A	A	