
    yIf                        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dS )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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     </var/www/piapp/venv/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   s^    '''(//':R:R2S2S2\]]8H--DNN4J4J4L4LW_````    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   r5   r   r2   )r   	file_pathr   s      r   readz	File.read5   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   r5   r   r
   r8    r"   r   r   r      sW        NNN
JJJMMM0%T	"2 0hr5y>Q 0VY 0 0 0 \0 a as av a a a \a ,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 )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      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  d###/ / / / / / / $#/d    x   
 	

r"   