
    1yi                         d Z ddlZddlZddlZddlmZm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 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)CallableIterator)contextmanager)BytesIOStringIOTextIOWrapper)Path)AnyTextIO)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z  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z  defd       Zeedeez  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     J/var/www/html/content_weaver/venv/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   r4   r   r1   )r   	file_pathr   s      r   readz	File.read7   sm      N**,		ZZ	*Ff9vOO! "v! "s   A:/A" A:"A77A:N)__name__
__module____qualname__r   __annotations__r	   strstaticmethodr   bytesr   r    propertyr'   r   r4   r   r   r7    r!   r   r   r      s    N
JM0#* 0U8K 0PS 0 0 a as av a a ,3 , , d
 }   sTz hv&6   r!   r   c                        e Zd ZdededdfdZy)_EmptyIOargskwargsr   Nc                      y )Nr@   )r&   rC   rD   s      r   writez_EmptyIO.writeE   s    r!   )r8   r9   r:   r
   rF   r@   r!   r   rB   rB   D   s    3 # $ r!   rB   )__doc__dataclassesrer   collections.abcr   r   
contextlibr   ior   r   r   pathlibr	   typingr
   r   isort.exceptionsr   compile_ENCODING_PATTERN	dataclassr   rB   Emptyr@   r!   r   <module>rT      st    ,  	  . % / /   0BJJQR  d#/ / $/dx 
 	
r!   