
    jj                        d dl mZ d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ erd dlmZ d dlmZmZ d dlmZmZ ddd/dZ	 	 	 d0d1d Zd2d"Zd3d%Z d4d.Z!dS )5    )annotationsN)datetime)Path)TYPE_CHECKINGAny)_DELTALAKE_AVAILABLE	deltalake)eprint)NullTime)unpack_dtypes)POLARS_STORAGE_CONFIG_KEYS_get_path_scheme)
DeltaTable)	DataFrameDataType)
SchemaDictStorageOptionsDictT)strict	table_uri
str | Pathr   boolreturnstrc                   t          t          |           4t          |                                                               |          n|           }|S )N)r   r   r   
expanduserresolve)r   r   resolved_uris      [/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/polars/io/delta/_utils.py_resolve_delta_lake_urir       sR    I&&. 	Y""$$,,V444 L     
table_pathstr | Path | DeltaTableversionint | str | datetime | Nonestorage_optionsStorageOptionsDict | Nonedelta_table_optionsdict[str, Any] | Nonedeltalake.DeltaTablec                   t                       |d |                                D             }t          | t          j                  r6t          |du|du|dug          rt          j        dt          d           | S |i }t          |           }t          |t          t          f          st          j        |f||d|}n)t          j        | fd|i|}|                    |           |S )z
    Initialize a Delta lake table for use in read and scan operations.

    Notes
    -----
    Make sure to install deltalake>=0.8.0. Read the documentation
    `here <https://delta-io.github.io/delta-rs/usage/installation/>`_.
    Nc                ,    i | ]\  }}|t           v||S  )r   ).0kvs      r   
<dictcomp>z)_get_delta_lake_table.<locals>.<dictcomp>1   s4     
 
 
1222 q222r!   zWhen supplying a DeltaTable directly, `version`, `storage_options`, and `delta_table_options` are ignored.
                To silence this warning, don't supply those parameters.   )
stacklevel)r$   r&   r&   )_check_if_delta_availableitems
isinstancer	   r   anywarningswarnRuntimeWarningr    r   r   load_as_version)r"   r$   r&   r(   r   dl_tbls         r   _get_delta_lake_tabler=      s^    "
 
'--//
 
 
 *i233 t#t+#4/
 
 	 MK	    " *:66LgX// (%
+
 
 "	
 
 %
 
+
 "
 

 	w'''Mr!   Nonec                 6    t           sd} t          |           d S )Nz=deltalake is not installed

Please run: pip install deltalake)r   ModuleNotFoundError)msgs    r   r4   r4   [   s'     'O!#&&&' 'r!   dtypeslist[DataType]c                j    t          |  }t          t          h}||z  x}rd|}t          |          d S )Nz+dataframe contains unsupported data types: )r   r   r   	TypeError)rB   schema_dtypesunsupported_typesoverlaprA   s        r   _check_for_unsupported_typesrI   a   sN    !6*Mt
  "333w GGGGnn r!   add_actions_dfr   filter_columns	list[str]schemar   verboseDataFrame | Nonec                  dd l }d| vr|rt          d           d S d| d         i}d| v r3| d         j                                                            d          ni }d| v r3| d         j                                                            d          ni }d	| v r3| d	         j                                                            d          ni }|D ]}	|                    |	          x}
C|                    d g|                                
                              d| j	                  }
|                    |	          x}7|                    d g||	         
                              d| j	                  }|                    |	          x}7|                    d g||	         
                              d| j	                  }|
||	 d<   |||	 d<   |||	 d<   |
                    || j	                  S )Nr   num_recordszDscan_delta: statistics load failed: 'num_records' column not presentlen
null_countT)	as_seriesminmax)dtype_nc_min_max)height)polarsr
   structunnestto_dictgetSeriesget_index_typenew_from_indexr[   r   )rJ   rK   rM   rN   ploutnull_count_colsmin_colsmax_colscol_namecol_nccol_mincol_maxs                r   0_extract_table_statistics_from_delta_add_actionsrm   m   sj    N** 	V   t!&}(E FC >)) 	|$+2244<<t<LLL  N"" 	u$++--555EEE  N"" 	u$++--555EEE  # ) )%))(333F<YYvR->->-@-@YAAPP>( F  ||H---G6iifX.>i??NN>( G  ||H---G6iifX.>i??NN>( G !'x!(x!(x<<N$9<:::r!   )r   r   r   r   r   r   )NNN)
r"   r#   r$   r%   r&   r'   r(   r)   r   r*   )r   r>   )rB   rC   r   r>   )
rJ   r   rK   rL   rM   r   rN   r   r   rO   )"
__future__r   r8   r   pathlibr   typingr   r   polars._dependenciesr   r	   polars._utils.loggingr
   polars.datatypesr   r   polars.datatypes.convertr   polars.io.cloud._utilsr   r   r   r\   r   r   polars._typingr   r   r    r=   r4   rI   rm   r-   r!   r   <module>rw      s   " " " " " "              % % % % % % % % @ @ @ @ @ @ @ @ ( ( ( ( ( ( ' ' ' ' ' ' ' ' 2 2 2 2 2 2 O O O O O O O O >$$$$$$********======== FJ       ,01515	9 9 9 9 9x' ' ' '	 	 	 	6; 6; 6; 6; 6; 6;r!   