
    \j                         d Z ddl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  ej(                  d      Z ej,                  d	
       G d d             Z G d de      Z e       Zy)z&Defines any IO utilities used by isort    N)contextmanager)BytesIOStringIOTextIOWrapper)Path)AnyCallableIteratorTextIOUnion)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y)Filestreampathencodingfilenamereadlinereturnc                 d    	 t        j                  |      d   S # t        $ r t        |       w xY w)Nr   )tokenizedetect_encoding	Exceptionr   )r   r   s     2/root/env/lib/python3.12/site-packages/isort/io.pyr   zFile.detect_encoding   s7    	0++H5a88 	0%h//	0s    /contentsc                     t         j                  |t        | j                  d            j                        }t        t        |       t        |      j                         |      S )Nzutf-8r   r   r   )r   r   r   encoder   r   r   resolve)r   r   r   s      r   from_contentszFile.from_contents   sJ    '''(//':R2S2\2\]8H-DN4J4J4LW_``    c                 L    | j                   j                  j                  d      S )N.)r   suffixlstrip)selfs    r   	extensionzFile.extension!   s    yy&&s++r"   c                     t        | d      }	 t        j                  | |j                        }|j	                  d       t        ||dd      }d|_        |S # t        $ r |j                           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%   sn    
 h%	++HfooFHKKN $PRSDDIK 	LLN	s   AA A2c              #      K   t        |       j                         }d }	 t        j                  |      }t        |||j                         ||j                          y y # ||j                          w w xY ww)Nr   )r   r    r   r5   r   r2   )r   	file_pathr   s      r   readz	File.read5   sm      N**,		ZZ	*Ff9vOO! "v! "s   A:/A" A:"A77A:N)__name__
__module____qualname__r   __annotations__r   strstaticmethodr   r	   bytesr   r!   propertyr(   r   r5   r   r
   r8    r"   r   r   r      s    N
JM0%T	"2 0hr5y>Q 0VY 0 0 a as av a a ,3 , , c4i( ]   uS$Y' HV,<   r"   r   c                        e Zd ZdededdfdZy)_EmptyIOargskwargsr   Nc                      y )NrA   )r'   rD   rE   s      r   writez_EmptyIO.writeC   s    r"   )r9   r:   r;   r   rG   rA   r"   r   rC   rC   B   s    3 # $ r"   rC   )__doc__dataclassesrer   
contextlibr   ior   r   r   pathlibr   typingr   r	   r
   r   r   isort.exceptionsr   compile_ENCODING_PATTERN	dataclassr   rC   EmptyrA   r"   r   <module>rT      st    ,  	  % / /  9 9 0BJJQR  d#/ / $/dx 
 	
r"   