o
    IAf&@                     @   s   	 d dl Z d dlZd dlZd dlmZ g dZdad$ddddddd	Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZG dd dZdddddZd%dd Zd!d" Zed#kree  dS dS )&    N)GenericAlias)inputclosenextfilefilenamelineno
filelinenofilenoisfirstlineisstdin	FileInputhook_compressedhook_encodedF rmodeopenhookencodingerrorsc             	   C   s.   	 t r
t jr
tdt| ||||||da t S )Nzinput() already activer   )_state_fileRuntimeErrorr   )filesinplacebackupr   r   r   r    r    /usr/lib/python3.10/fileinput.pyr   N   s   
r   c                  C   s   	 t } d a | r|   d S d S N)r   r   )stater   r   r   r   ]   s   r   c                   C      	 t stdt  S Nzno active input())r   r   r   r   r   r   r   r   e   s   	r   c                   C   r    r!   )r   r   r   r   r   r   r   r   s      r   c                   C   r    r!   )r   r   r   r   r   r   r   r   |      r   c                   C   r    r!   )r   r   r   r   r   r   r   r      r#   r   c                   C   r    r!   )r   r   r	   r   r   r   r   r	      r"   r	   c                   C   r    r!   )r   r   r
   r   r   r   r   r
      r"   r
   c                   C   r    r!   )r   r   r   r   r   r   r   r      r"   r   c                   @   s   e Zd Z	 d(dddddddZdd	 Zd
d Zdd Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' ZeeZdS ))r   NFr   r   r   c          	      C   sP  t |tr	|f}n!t |tjrt|f}n|d u r!tjdd  }|s&d}nt|}|| _|| _	|| _
d | _d | _d | _d| _d| _d | _d| _d | _|| _|| _tjjrld|vrl|d u rl|d u rldd l}|dtd |dvrttd	d
|v rdd l}|dtd || _d
|vr|ddnd| _|r|rtdt|std|| _ d S )N   )-r   Fbz"'encoding' argument not specified.   )r   ZrUUrbz=FileInput opening mode must be one of 'r', 'rU', 'U' and 'rb'r(   z'U' mode is deprecatedr   wz4FileInput cannot use an opening hook in inplace modez#FileInput openhook must be callable)!
isinstancestrosPathLikefspathsysargvtuple_files_inplace_backup_savestdout_output	_filename_startlineno_filelinenor   _isstdin_backupfilename	_encoding_errorsflagswarn_default_encodingwarningswarnEncodingWarning
ValueErrorDeprecationWarning_modereplace_write_modecallable	_openhook)	selfr   r   r   r   r   r   r   rA   r   r   r   __init__   sV   

zFileInput.__init__c                 C      |    d S r   r   rK   r   r   r   __del__      zFileInput.__del__c                 C   s   z
|    W d| _d S d| _w )Nr   )r   r3   rO   r   r   r   r      s   
zFileInput.closec                 C      | S r   r   rO   r   r   r   	__enter__      zFileInput.__enter__c                 C   rM   r   rN   )rK   typevalue	tracebackr   r   r   __exit__   rQ   zFileInput.__exit__c                 C   rR   r   r   rO   r   r   r   __iter__   rT   zFileInput.__iter__c                 C   s4   	 |   }|r|  jd7  _|S | jst|   qNTr$   )	_readliner:   r   StopIterationr   rK   liner   r   r   __next__      zFileInput.__next__c                 C   sN   dd l }|jdtdd ||  krtdz|  W S  ty&   tdw )Nr   zTSupport for indexing FileInput objects is deprecated. Use iterator protocol instead.r'   )
stacklevelzaccessing lines out of orderzend of input reached)rA   rB   rE   r   r   r_   r\   
IndexError)rK   irA   r   r   r   __getitem__	  s   
zFileInput.__getitem__c                 C   s  | j }d | _ |r|t_| j}d | _zm|r|  W | j}d | _z| `W n	 ty,   Y nw z+|r7| js7|  W | j	}d | _	|rT| j
sTzt| W n	 tyS   Y nw d| _d S | j	}d | _	|r{| j
s{z
t| W d| _w  tyz   Y d| _w w d| _w | j}d | _z| `W n	 ty   Y nw z0|r| js|  W | j	}d | _	|r| j
sz
t| W d| _w  ty   Y d| _w w d| _w | j	}d | _	|r| j
sz
t| W d| _w  ty   Y d| _w w d| _w )NF)r6   r0   stdoutr7   r   r   r[   AttributeErrorr;   r<   r5   r-   unlinkOSError)rK   Z
savestdoutoutputfileZbackupfilenamer   r   r   r     s   






zFileInput.nextfilec                 C   s4   	 |   }|r|  jd7  _|S | js|S |   qrZ   )r[   r:   r   r   r]   r   r   r   readline6  r`   zFileInput.readlinec              	   C   sP  | j sd| jv r
dS dS | j d | _| j dd  | _ |  | _d| _d | _d| _d| _d| jvr6| j	p4d}nd }| jdkrWd	| _d| jv rOt
tjd
tj| _ntj| _d| _n| jrt| j| jpcd | _zt| j W n	 tyw   Y nw t| j| j t| j| j|| jd| _zt| j j}W n ty   t| j| j|| jd| _Y n;w tjtjB tjB }ttdr|tjO }t| j||}tj || j|| jd| _z	t!| j| W n	 ty   Y nw tj"| _#| jt_"n/| j$r| j	d u r| $| j| j| _n| j$| j| j| j	| jd| _nt| j| j|| jd| _| jj%| _&| & S )Nr&       r   r   r$   Flocaler%   z<stdin>bufferTz.bakr   r   O_BINARY)'r3   rF   r8   r   r9   r:   r   r;   r<   r=   getattrr0   stdinr4   r-   r/   r5   rg   rh   renameopenr>   fstatr	   st_moderH   r7   O_CREATO_WRONLYO_TRUNChasattrrp   fdopenchmodre   r6   rJ   rk   r[   )rK   r   permr   fdr   r   r   r[   A  s|   












zFileInput._readlinec                 C      | j S r   )r8   rO   r   r   r   r        zFileInput.filenamec                 C   s   | j | j S r   )r9   r:   rO   r   r   r   r     rQ   zFileInput.linenoc                 C   r   r   r:   rO   r   r   r   r     r   zFileInput.filelinenoc                 C   s,   | j rz| j  W S  ty   Y dS w dS )N)r   r	   rD   rO   r   r   r   r	     s   zFileInput.filenoc                 C   s
   | j dkS )Nr$   r   rO   r   r   r   r
     s   
zFileInput.isfirstlinec                 C   r   r   )r;   rO   r   r   r   r     r   zFileInput.isstdinNFr   )__name__
__module____qualname__rL   rP   r   rS   rX   rY   r_   rd   r   rk   r[   r   r   r   r	   r
   r   classmethodr   __class_getitem__r   r   r   r   r      s,    4I	r   ro   c                C   s   |d u rd}t j| d }|dkrdd l}|| |}n|dkr,dd l}|| |}nt| |||dS d|vr@tj|||d}|S )Nrm   r$   z.gzr   z.bz2ro   r&   )	r-   pathsplitextgziprt   bz2BZ2FileioTextIOWrapper)r   r   r   r   extr   streamr   r   r   r   r     s   r   c                    s    fdd}|S )Nc                    s   t | | dS )Nro   )rt   )r   r   ro   r   r   r     s   zhook_encoded.<locals>.openhookr   )r   r   r   r   ro   r   r     s   r   c                  C   s   dd l } d}d}|  tjdd  d\}}|D ]\}}|dkr!d}|dkr'|}qt|||dD ]1}|d	d  d
kr?|d d	 }|d	d  dkrM|d d	 }tdt t t t rZdp[d|f  q/tdt t t f  d S )Nr   Fr$   zib:z-iTz-b)r   r   r   
z%d: %s[%d]%s %s*r   z
%d: %s[%d])	getoptr0   r1   r   printr   r   r   r
   )r   r   r   Zoptsargsoar^   r   r   r   _test  s   
r   __main__r   r   )r   r0   r-   typesr   __all__r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   <module>   s2    C	

			 {

