
    ZTh
                         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m	Z	m
Z
 d dlmZ dede	eee   ee   f   fdZde
eef   dee   dee   fd	Zd
edefdZ G d d      Zy)    N)Path)CallableListOptionalTupleUnion)	alive_barpathreturnc                 T    | j                   }t        j                  |       \  }}|||fS N)name	mimetypes
guess_type)r
   	file_namemimeencodings       _/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/data_import/_utils.pymime_and_content_type_from_pathr   
   s,    		I))$/ND(dH$$    valid_file_typesc           	         t        | t              rt        |       n| }|j                         st	        d|  d      t        |      \  }}}|st	        d| d      ||vr#t	        |  d| ddj                  |       d      |S )	NzProvided path, 'z$', does not point to a regular file.zThe MIME-type of 'z' could not be computed.z is not a valid file type (z). Must be z, .)
isinstancestrr   is_file	Exceptionr   join)r
   r   
posix_path_mimetypecontent_encodings         r   validate_file_typer#      s    )$4d$J*4&0TUVV$CJ$O!Ax!,ZL8PQRR''f/zTYYO_E`Daabc
 	
 r   objc                    dt         dt         fd}t        | t              r3| j                         D ci c]  \  }} ||      t	        |       c}}S t        | t
              r| D cg c]  }t	        |       c}S | S c c}}w c c}w )z?Recursively convert all dict keys from camelCase to snake_case.r   r   c                 z    t        j                  dd|       }t        j                  dd|      j                         S )z.Convert camelCase or PascalCase to snake_case.z(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))resublower)r   s1s     r   camel_to_snakez2convert_keys_to_snake_case.<locals>.camel_to_snake&   s2    VV&$7vv)8R8>>@@r   )r   r   dictitemsconvert_keys_to_snake_caselist)r$   r+   kvitems        r   r.   r.   #   s~    AS AS A
 #tMPYY[YTQq!#=a#@@YY	C	=@AT*40AA
	 ZAs   A?(Bc                   F    e Zd ZU dZeed<   d	deeef   fdZ	d Z
d Zd Zy)
ProgressFilez:Displays the status with alive_bar while reading the file._bar_contextr
   c                    || _         t        j                   j                  | j                         | _        | j                  dk(  rt	        | d      t        | j                   d      | _        t        | j                  d|d      | _        y )Nr   z is 0 bytesrb)modez bytesSI)unitdisablescale)	r
   osgetsize	file_sizer   open_filer	   _bar)selfr
   r;   s      r   __init__zProgressFile.__init__:   sh    	3>>QtfK011$))$/
dnn8WTXY	r   c                 r     | j                   j                  |i |}| j                  t        |             |S r   )rA   readr5   len)rC   argskwargschunks       r   rF   zProgressFile.readD   s2    

00#e*%r   c                 D    | j                   j                         | _        | S r   )rB   	__enter__r5   )rC   s    r   rL   zProgressFile.__enter__I   s     II//1r   c                 >    | j                   j                  d d d        y r   )rB   __exit__)rC   rH   rI   s      r   rN   zProgressFile.__exit__M   s    		4t,r   N)F)__name__
__module____qualname____doc__r   __annotations__r   r   r   rD   rF   rL   rN    r   r   r4   r4   3   s3    D ZU39- Z
r   r4   )r   r=   r'   pathlibr   typingr   r   r   r   r   alive_progressr	   r   r   r#   r,   r.   r4   rT   r   r   <module>rX      s     	 	  9 9 $%$ %5hsmXVY]9Z3[ %U39- c xX[} &D T   r   