
    Yj                        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dS )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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     L/var/www/app.qaans.com/backend/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   r4   r   r1   )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   bytesr   r    propertyr'   r   r4   r   r   r7    r!   r   r   r      sH        NNN
JJJMMM0#* 0U8K 0PS 0 0 0 \0 a as av a a a \a ,3 , , , X, d
 }    \ sTz hv&6    ^ \  r!   r   c                   "    e Zd ZdededdfdZdS )_EmptyIOargskwargsr   Nc                     d S )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      sA   , ,     				  . . . . . . . . % % % % % % / / / / / / / / / /               0 0 0 0 0 0BJQRR  d###/ / / / / / / $#/d    x   
 	

r!   