
    a                        d Z ddlZddlZddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZ  ej        d	          Z ed
           G d d                      Z G d de          Z e            ZdS )z&Defines any IO utilities used by isort    N)contextmanager)BytesIOStringIOTextIOWrapper)Path)AnyCallableIteratorTextIOUnion)	dataclass)UnsupportedEncodings.   ^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)T)frozenc                   .   e Zd ZU eed<   eed<   eed<   edeeef         de	g e
f         defd            Zedededd fd	            Zedefd
            Zedeeef         defd            Zeedeeef         ded          fd                        ZdS )Filestreampathencodingfilenamereadlinereturnc                 r    	 t          j        |          d         S # t          $ r t          |           w xY w)Nr   )tokenizedetect_encoding	Exceptionr   )r   r   s     (lib/python3.11/site-packages/isort/io.pyr   zFile.detect_encoding   sF    	0+H55a88 	0 	0 	0%h///	0s    6contentsc                     t                               |t          |                     d                    j                  }t          t          |           t          |                                          |          S )Nzutf-8r   r   r   )r   r   r   encoder   r   r   resolve)r   r   r   s      r   from_contentszFile.from_contents   sf    '''(//':R:R2S2S2\]]H%%DNN,B,B,D,Dx
 
 
 	
    c                 @    | j         j                            d          S )N.)r   suffixlstrip)selfs    r   	extensionzFile.extension#   s    y&&s+++r#   c                    t          | d          }	 t                              | |j                  }|                    d           t          ||dd          }d|_        |S # t          $ r |                                  w xY w)z`Open a file in read only mode using the encoding detected by
        detect_encoding().
        rbr   T )line_bufferingnewliner)	openr   r   r   seekr   moder   close)r   bufferr   texts       r   _openz
File._open'   s    
 h%%	++HfoFFHKKNNN $PRSSSDDIK 	 	 	LLNNN	s   AA# # Bc              #      K   t          |                                           }d }	 t                              |          }t          |||j                  V  ||                                 d S d S # ||                                 w w xY w)Nr   )r   r!   r   r6   r   r3   )r   	file_pathr   s      r   readz	File.read7   s       NN**,,		ZZ	**Ff9vOOOOOO! "!v! "s   3A4 4BN)__name__
__module____qualname__r   __annotations__r   strstaticmethodr   r	   bytesr   r"   propertyr)   r   r6   r   r
   r9    r#   r   r   r      sP        NNN
JJJMMM0%T	"2 0hr5y>Q 0VY 0 0 0 \0 
 
s 
v 
 
 
 \
 ,3 , , , X, c4i( ]    \ uS$Y' HV,<    ^ \  r#   r   c                   "    e Zd ZdededdfdZdS )_EmptyIOargskwargsr   Nc                     d S )NrB   )r(   rE   rF   s      r   writez_EmptyIO.writeE   s    r#   )r:   r;   r<   r   rH   rB   r#   r   rD   rD   D   s=        3 # $      r#   rD   )__doc__rer   
contextlibr   ior   r   r   pathlibr   typingr   r	   r
   r   r   isort._futurer   isort.exceptionsr   compile_ENCODING_PATTERNr   rD   EmptyrB   r#   r   <module>rT      s>   , , 				  % % % % % % / / / / / / / / / /       9 9 9 9 9 9 9 9 9 9 9 9 9 9 # # # # # # 0 0 0 0 0 0BJQRR  $1 1 1 1 1 1 1 1h    x   
 	

r#   