
    >ie                    V    d dl mZ d dlZd dlmZ d dlmZmZ  G d d          Z	d Z
dS )    )annotationsN)_get_pyarrow_dtypes_meta_from_dtypesc                  f    e Zd Zed             Zed             Zed             Zed             ZdS )ArrowORCEnginec                B   t          |          dk    r6|                    |d                   s|                    |d                   }d }g }	d }
|r-d}|D ]&}|                    |d          5 }t	          j        |          }||j        }n||j        k    rt          d          t          t          |j
                            }|r |	                    ||d|         fg           ||j
        k     rM|	                    ||||t          |          z            fg           |t          |          z  }||j
        k     M|rt          |          dk    r||j
        z  }nd}d d d            n# 1 swxY w Y   (nn|D ]k}|O|                    |d         d          5 }t	          j        |          }|j        }d d d            n# 1 swxY w Y   |	                    |d fg           lt          |d           }|Dt          |          t          |          z
  }|r#t          d| dt          |           d	          |                     |||	          }	|t          |          n|}t!          |t"                    r|gn|}t%          |||g           }|	||fS )
N   r   c                N    || j         }n|| j         k    rt          d          |S )N,Incompatible schemas while parsing ORC files)schema
ValueError)_or   s     ;lib/python3.11/site-packages/dask/dataframe/io/orc/arrow.py_get_schemaz1ArrowORCEngine.read_metadata.<locals>._get_schema   s1    ~29$$ !OPPPM    rbr   )
categorieszRequested columns (z) not in schema ())lenisfilefindopenorcORCFiler   r   listrangenstripesappendintr   set_aggregate_files
isinstancestrr   )clsfspathscolumnsindexsplit_stripesaggregate_fileskwargsr   partsr   offsetpathfo_stripesexmetas                     r   read_metadatazArrowORCEngine.read_metadata
   sk    u::??299U1X#6#6?GGE!H%%E	 	 	  	-F # #WWT4(( #AAA~!"18++()WXXX#E!*$5$566H CtXah-?&@%ABBB 1:--"HVfs=?Q?Q6Q-Q$RST   #m"4"44	 !1:--
 ' #3}+=+=+A+A!*,!"## # # # # # # # # # # # # # ##(  - ->q400 *AKNN!"* * * * * * * * * * * * * * * tTl^,,,,$V===WF+B  M"MMs6{{MMM  
 $$_mUKK")/$v,,,w%eS11<u &%<<fd""s%   1C6E33E7	:E7	#GG	G	c                   |du rt          |          dk    rt          |          dk    rg }|d         }t          |d         d                   }|dd          D ]`}t          |d         d                   }||z   |k    r!|                    |d                    ||z  }G|                    |           |}|}a|                    |           |S |S )NTr	   r   )r   r   r   )	r$   r*   r)   r,   	new_partsnew_partr   partnext_nstripess	            r   r!   zArrowORCEngine._aggregate_filesQ   s    d""s='9'9A'='=#e**q..IQxH8A;q>**Habb	 - - #DGAJ 8+}<<OODG,,,-HH$$X...#H,HHX&&&Lr   c           	         g }|D ]\  }}|t          |||||          z  }t          j                            |                              d          S )NF)date_as_object)_read_orc_stripespaTablefrom_batches	to_pandas)	r$   r%   r,   r   r'   r+   batchesr.   stripess	            r   read_partitionzArrowORCEngine.read_partitione   s`    " 	M 	MMD'(T7FGLLLGGx$$W--77u7MMMr   c                    t           j                            |          }|                    |j                            ||g          d          5 }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nwb)r=   r>   from_pandasr   sepjoinr   write_table)r$   dfr.   r%   filenamer+   tabler/   s           r   write_partitionzArrowORCEngine.write_partitionl   s    $$R((WWRV[[$!122D99 	&QOE1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   A33A7:A7N)__name__
__module____qualname__classmethodr4   r!   rC   rM    r   r   r   r   	   s        D# D# [D#L   [& N N [N & & [& & &r   r   c                >   |t          |          }g }|                     |d          5 }t          j        |          }|t	          |j                  n|}|D ]+}	|                    |                    |	|                     ,	 d d d            n# 1 swxY w Y   |S )Nr   )r   r   r   r   r   r   r   read_stripe)
r%   r.   rB   r   r'   rA   r/   r0   r1   stripes
             r   r<   r<   s   s     v,,G	t		 ;KNN(/5$$$W 	; 	;FNN1==99::::	;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 Ns   ABBB)
__future__r   pyarrowr=   pyarrow.orcr   dask.dataframe.io.utilsr   r   r   r<   rR   r   r   <module>rZ      s    " " " " " "           J J J J J J J Jg& g& g& g& g& g& g& g&T    r   