Ë
    	êñis\  ã                  óÐ  — U d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ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' d dl(m)Z) er3d dl*m+Z+m,Z,m-Z- d dl.m/Z/m.Z. d dl0Z0d dl1Z0d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 nd dl:m0Z0 e"e#dœZ;de<d<   dZ=de<d<   dEd„Z>	 	 	 	 dF	 	 	 	 	 	 	 	 	 	 	 	 	 dGd„Z?dHd„Z@dId„ZAdJd„ZBedKd„«       ZCeCj‰                  e«      dLd„«       ZEeCj‰                  e«      dMd„«       ZEeCj‰                  e«      dNd „«       ZEeCj‰                  e«      dOd!„«       ZEeCj‰                  e	«      dPd"„«       ZEeCj‰                  e
«      dQd#„«       ZEeCj‰                  e«      dRd$„«       ZEeCj‰                  e«      dSd%„«       ZE G d&„ d'«      ZF G d(„ d)«      ZGe G d*„ d+«      «       ZHedTd,„«       ZI G d-„ d.ej”                  «      ZK G d/„ d0eK«      ZL G d1„ d2eK«      ZM G d3„ d4eK«      ZN G d5„ d6eK«      ZO G d7„ d8eK«      ZP G d9„ d:eK«      ZQ G d;„ d<eK«      ZR G d=„ d>eL«      ZS G d?„ d@eK«      ZT G dA„ dBeK«      ZU G dC„ dDeK«      ZVy)Ué    )ÚannotationsN)ÚGtEÚLtÚLtE)Ú	AttributeÚBinOpÚBitAndÚBitOrÚCallÚCompareÚConstantÚEqÚGtÚInvertÚListÚNameÚUnaryOp)Ú	dataclass)ÚcacheÚsingledispatch)ÚTYPE_CHECKINGÚAny)Ú
to_py_dateÚto_py_datetime)Úeprint)Úwrap_s)ÚComputeError)ÚCallableÚIteratorÚSequence)ÚdateÚdatetime)ÚDataFile)ÚTable)ÚIcebergType)Ú	DataFrame)Ú	pyicebergz)dict[str, Callable[..., datetime | date]]Ú_temporal_conversionsiè  ÚintÚICEBERG_TIME_TO_NSc                ór   — | j                  d«      r%| j                  d«      sd| j                  d«      › �S | S )Nzfile://zfile:///)Ú
startswithÚremoveprefix)Úpaths    úZ/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/io/iceberg/_utils.pyÚ#_normalize_windows_iceberg_file_urir0   7   s7   € Ø‡��yÔ!¨$¯/©/¸*Ô*EØ˜$×+Ñ+¨IÓ6Ð7Ð8Ð8à€Kó    c                ó¸   ‡— ddl mŠ | j                  ||¬«      }|� |j                  |Ž }|�|j	                  |«      }|j                  «       }ˆfd„|D «       dfS )a/  
    Take the projected columns and materialize an arrow table.

    Parameters
    ----------
    tbl
        pyarrow dataset
    with_columns
        Columns that are projected
    iceberg_table_filter
        PyIceberg filter expression
    n_rows:
        Materialize only n rows from the arrow dataset.
    snapshot_id:
        The snapshot ID to scan from.
    batch_size
        The maximum row count for scanned pyarrow record batches.
    kwargs:
        For backward compatibility

    Returns
    -------
    tuple[Iterator[DataFrame], bool]
    A generator over the DataFrames and a boolean indicating if the
    predicates could be parsed.
    This boolean is always `False` as there might be some predicates
    that could not be converted
    to pyarrow and need to be applied as post-predicate.
    r   )Ú
from_arrow)ÚlimitÚsnapshot_idc              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­w©N© )Ú.0Úbatchr3   s     €r/   ú	<genexpr>z-_scan_pyarrow_dataset_impl.<locals>.<genexpr>o   s   øè ø€ Ò4 5‰Z˜×Ñ4ùs   ƒF)Úpolarsr3   ÚscanÚselectÚfilterÚto_arrow_batch_reader)	ÚtblÚwith_columnsÚiceberg_table_filterÚn_rowsr5   Úkwargsr=   Úbatchesr3   s	           @r/   Ú_scan_pyarrow_dataset_implrG   >   sd   ø€ õJ "à�8‰8˜&¨kˆ8Ó:€DàÐØˆt�{‰{˜LÐ)ˆàÐ'Ø�{‰{Ð/Ó0ˆà×(Ñ(Ó*€Gã4¨GÔ4°eÐ<Ð<r1   c                ó  — | du rt         j                  j                  «       S | du rt         j                  j                  «       S t	        | t
        «      r1t        | «      dk(  r#t         j                  j                  | d   d«      S | S )zKConvert scalar booleans and bare fields into PyIceberg boolean expressions.TFé   r   )r'   ÚexpressionsÚ
AlwaysTrueÚAlwaysFalseÚ
isinstanceÚlistÚlenÚEqualTo)Úresults    r/   Ú_ensure_boolean_expressionrR   r   sq   € à��~Ü×$Ñ$×/Ñ/Ó1Ð1Ø��Ü×$Ñ$×0Ñ0Ó2Ð2Ü�&œ$Ô¤C¨£K°1Ò$4Ü×$Ñ$×,Ñ,¨V°A©Y¸Ó=Ð=Ø€Mr1   c                ó¢   — t        j                  t        «      5  t        | «      }t	        |«      }t        |«      cd d d «       S # 1 sw Y   y xY wr7   )Ú
contextlibÚsuppressÚ	ExceptionÚ_to_astÚ_convert_predicaterR   )Úpyarrow_predicateÚexpr_astrQ   s      r/   Útry_convert_pyarrow_predicater[   }   sG   € Ü	×	Ñ	œYÓ	'ñ 2ÜÐ,Ó-ˆÜ# HÓ-ˆÜ)¨&Ó1÷2÷ 2ñ 2ð
 ús   š!AÁAc                óD   — t        j                  | d¬«      j                  S )a<  
    Converts a Python string to an AST.

    This will take the Python Arrow expression (as a string), and it will
    be converted into a Python AST that can be traversed to convert it to a PyIceberg
    expression.

    The reason to convert it to an AST is because the PyArrow expression
    itself doesn't have any methods/properties to traverse the expression.
    We need this to convert it into a PyIceberg expression.

    Parameters
    ----------
    expr
        The string expression

    Returns
    -------
    The AST representing the Arrow expression
    Úeval)Úmode)ÚastÚparseÚbody)Úexprs    r/   rW   rW   †   s   € ô* �9‰9�T Ô'×,Ñ,Ð,r1   c                ó"   — d| › �}t        |«      ‚)zJWalks the AST to convert the PyArrow expression to a PyIceberg expression.zUnexpected symbol: )Ú
ValueError)ÚaÚmsgs     r/   rX   rX   ž   s   € ð   ˜sÐ
#€CÜ
�S‹/Ðr1   c                ó   — | j                   S r7   )Úvalue©re   s    r/   Ú_rj   ¥   s   € à�7‰7€Nr1   c                ó   — | j                   S r7   )Úidri   s    r/   rj   rj   ª   s   € à�4‰4€Kr1   c                óÐ   — t        | j                  t        «      r=t        t	        | j
                  «      «      }t        j                  j                  |«      S d| › �}t        |«      ‚)NzUnexpected UnaryOp: )
rM   Úopr   rR   rX   Úoperandr'   rJ   ÚNotÚ	TypeError)re   ro   rf   s      r/   rj   rj   ¯   sQ   € ä�!—$‘$œÔÜ,Ô-?ÀÇ	Á	Ó-JÓKˆÜ×$Ñ$×(Ñ(¨Ó1Ð1à$ Q CÐ(ˆÜ˜‹nÐr1   c                ó"  — | j                   D �cg c]  }t        |«      ‘Œ }}t        | j                  «      }|dk(  r|S |dk(  r|d   S |t        v rt        |   |Ž j	                  «       S t        | j                  j
                  «      d   }|dk(  r#t        j                  j                  ||d   «      S |dk(  rt        j                  j                  |«      S |dk(  rt        j                  j                  |«      S d|›�}t        |«      ‚c c}w )NÚfieldÚscalarr   ÚisinÚis_nullÚis_nanzUnknown call: )ÚargsrX   Úfuncr(   Ú	isoformatrh   r'   rJ   ÚInÚIsNullÚIsNaNrd   )re   Úargrx   ÚfÚrefrf   s         r/   rj   rj   ¹   sý   € à/0¯v©vÖ6¨Ô˜sÕ#Ð6€DÐ6Ü˜1Ÿ6™6Ó"€AØˆG‚|ØˆØ	
ˆhŠØ�A‰wˆØ	
Ô#Ñ	#ä$ QÑ'¨Ð.×8Ñ8Ó:Ð:ä  §¡§¡Ó.¨qÑ1ˆØ�Š;Ü×(Ñ(×+Ñ+¨C°°a±Ó9Ð9Ø�)Š^Ü×(Ñ(×/Ñ/°Ó4Ð4Ø�(Š]Ü×(Ñ(×.Ñ.¨sÓ3Ð3à˜1˜%Ð
 €CÜ
�S‹/Ðùò' 7s   �Dc                ó   — | j                   S r7   )Úattrri   s    r/   rj   rj   Ñ   s   € à�6‰6€Mr1   c                ó~  — t        t        | j                  «      «      }t        t        | j                  «      «      }| j                  }t        |t        «      r t        j                  j                  ||«      S t        |t        «      r t        j                  j                  ||«      S d|› d|› d|› �}t        |«      ‚)Nz	Unknown: ú )rR   rX   ÚleftÚrightrn   rM   r	   r'   rJ   ÚAndr
   ÚOrrq   )re   ÚlhsÚrhsrn   rf   s        r/   rj   rj   Ö   s›   € ä
$Ô%7¸¿¹Ó%?Ó
@€CÜ
$Ô%7¸¿¹Ó%@Ó
A€Cà	
�‰€BÜ�"”fÔÜ×$Ñ$×(Ñ(¨¨cÓ2Ð2Ü�"”eÔÜ×$Ñ$×'Ñ'¨¨SÓ1Ð1à˜#˜˜a ˜t 1 S EÐ*ˆÜ˜‹nÐr1   c                ó€  — | j                   d   }t        | j                  «      d   }t        | j                  d   «      }t	        |t
        «      r t        j                  j                  ||«      S t	        |t        «      r t        j                  j                  ||«      S t	        |t        «      r t        j                  j                  ||«      S t	        |t        «      r t        j                  j                  ||«      S t	        |t        «      r t        j                  j!                  ||«      S d|› �}t#        |«      ‚)Nr   zUnknown comparison: )ÚopsrX   r…   ÚcomparatorsrM   r   r'   rJ   ÚGreaterThanr   ÚGreaterThanOrEqualr   rP   r   ÚLessThanr   ÚLessThanOrEqualrq   )re   rn   r‰   rŠ   rf   s        r/   rj   rj   å   sú   € à	
�‰ˆq‰€BÜ
˜QŸV™VÓ
$ QÑ
'€CÜ
˜QŸ]™]¨1Ñ-Ó
.€Cä�"”bÔÜ×$Ñ$×0Ñ0°°cÓ:Ð:Ü�"”cÔÜ×$Ñ$×7Ñ7¸¸SÓAÐAÜ�"”bÔÜ×$Ñ$×,Ñ,¨S°#Ó6Ð6Ü�"”bÔÜ×$Ñ$×-Ñ-¨c°3Ó7Ð7Ü�"”cÔÜ×$Ñ$×4Ñ4°S¸#Ó>Ð>à$ R DÐ)ˆÜ˜‹nÐr1   c                óR   — | j                   D �cg c]  }t        |«      ‘Œ c}S c c}w r7   )ÚeltsrX   )re   Úes     r/   rj   rj   ú   s    € à+,¯6©6Ö2 aÔ˜qÕ!Ò2Ð2ùÒ2s   �$c                  ó@   — e Zd Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zy)Ú)IdentityTransformedPartitionValuesBuilderc                óŠ  — dd l }ddlm} ddlm} ddlm}m}m}m	}	 |j                  }
i | _        i | _        i | _        |j                  «       }|j                  «       D ]�  \  }}g }t!        |j"                  «      D ]a  \  }}|j$                  |
v sŒt'        |j(                  |«      sŒ,|j+                  ||j$                  f«       g | j                  |j$                  <   Œc || j                  |<   Œ‘ | j                  D �]5  }|j-                  |«      }|j.                  }t1        j2                   ||j4                  j3                  |«      «      «      j7                  «       \  }}|| j                  |<   |j8                  r|j;                  «       rd|›d|›�| j                  |<   |j=                  «       j?                  «       D ]o  }	 |j-                  |«      j.                  }||k(  rŒ%t'        ||	«      rt'        ||«      rŒ>t'        |||f«      rt'        |||f«      rŒ[d|› d|› �| j                  |<   Œq �Œ8 y # t@        $ r Y Œ�w xY w)	Nr   ©Úschema_to_pyarrow)ÚIdentityTransform)Ú
DoubleTypeÚ	FloatTypeÚIntegerTypeÚLongTypez%non-primitive type: projected_type = z output_dtype = zunsupported type change: from: z, to: )!Úpyiceberg.schemaÚpyiceberg.io.pyarrowr™   Úpyiceberg.transformsrš   Úpyiceberg.typesr›   rœ   r�   rž   Ú	field_idsÚpartition_valuesÚpartition_values_dtypesÚ(partition_spec_id_to_identity_transformsÚspecsÚitemsÚ	enumerateÚfieldsÚ	source_idrM   Ú	transformÚappendÚ
find_fieldÚ
field_typeÚplÚSchemaÚschemaÚpopitemÚis_primitiveÚ	is_nestedÚschemasÚvaluesrd   )ÚselfÚtableÚprojected_schemar'   r™   rš   r›   rœ   r�   rž   Úprojected_idsÚpartition_specsÚspec_idÚspecÚoutÚfield_indexrs   Úfield_idÚprojected_fieldÚprojected_typerj   Úoutput_dtyper²   Útype_this_schemas                           r/   Ú__init__z2IdentityTransformedPartitionValuesBuilder.__init__   s`  € ó
 	 Ý:Ý:÷	
ó 	
ð #3×"<Ñ"<ˆð =?ˆÔð @BˆÔ$ð
 ð 	Ô5ð  Ÿ+™+›-ˆà,×2Ñ2Ó4ò 
	I‰MˆG�TØˆCä&/°·±Ó&<ò @Ñ"�˜UØ—?‘? mÒ3¼
Ø—O‘OÐ%6õ9ð —J‘J ¨U¯_©_Ð=Ô>Ø=?�D×)Ñ)¨%¯/©/Ò:ð@ð FIˆD×9Ñ9¸'ÒBð
	Ið ×-Ñ-ó #	ˆHØ.×9Ñ9¸(ÓCˆOØ,×7Ñ7ˆNä Ÿi™iÙ! )×"2Ñ"2×"9Ñ"9¸/Ó"JÓKóç‰g‹iñ ˆAˆ|ð 6BˆD×(Ñ(¨Ñ2à!×.Ò.°,×2HÑ2HÔ2Jà<¨>Ð*=Ð=N¸|Ð>OÐPð ×%Ñ% hÑ/ð  Ÿ-™-›/×0Ñ0Ó2ò �ðØ'-×'8Ñ'8¸Ó'B×'MÑ'MÐ$ð
 #Ð&6Ó6ä" >°8Ô<Ü&Ð'7¸ÕEô # >°JÀ	Ð3JÔKÜ&Ð'7¸*ÀiÐ9PÕQð :Ð:JÐ9Kð LØ-Ð.ð0ð ×)Ñ)¨(Ò3ò#ñ#	øô$ "ò Ùðús   ÇH6È6	IÉIc          
     ól  — 	 | j                   |   }|D ]h  \  }}||   }t        | j                  |   x}t        «      sŒ+|j                  d„ t        |t        |«      z
  «      D «       «       |j                  |«       Œj y # t        $ r+ t        j                  | j                  d|› �«      | _        Y y w xY w)Nzpartition spec ID not found: c              3  ó    K  — | ]  }d –— Œ y ­wr7   r8   )r9   rj   s     r/   r;   zRIdentityTransformedPartitionValuesBuilder.push_partition_values.<locals>.<genexpr>g  s   è ø€ ÒO qœdÑOùs   ‚)r¦   ÚKeyErrorÚdictÚfromkeysr¤   rM   rN   ÚextendÚrangerO   r­   )	r¸   Úcurrent_indexÚpartition_spec_idr¤   Úidentity_transformsÚiÚsource_field_idÚpartition_valuer·   s	            r/   Úpush_partition_valuesz?IdentityTransformedPartitionValuesBuilder.push_partition_valuesO  s¿   € ð		Ø"&×"OÑ"OØ!ñ#Ðð #6ò 	/ÑˆAˆØ.¨qÑ1ˆOä D×$9Ñ$9¸/Ñ$JÐJ˜&ÌDÕQð —‘ÑO¬E°-Ä#ÀfÃ+Ñ2MÓ,NÔOÔOØ—‘˜oÕ.ñ	/øô ò 	Ü$(§M¡MØ×%Ñ%Ø/Ð0AÐ/BÐCó%ˆDÔ!ñ ð	ús   ‚A? Á?1B3Â2B3c                óô  — ddl m}m}m}m}m}m} i }| j                  j                  «       D ]ª  \  }}	t        |	t        «      r|	||<   Œ	 | j                  |   }
t        |
|||f«      r|nt        |
|«      r|n|
}t        j                  |	|¬«      }|j                  j                  «       rJ ‚t        |
|«      r	|t         z  }|j#                  |
«      }|||<   Œ¬ |S # t$        $ r}d|› �||<   Y d }~ŒÅd }~ww xY w)Nr   )ÚDateÚDatetimeÚDurationÚInt32ÚInt64ÚTime©Údtypez!failed to load partition values: )Úpolars.datatypesrÖ   r×   rØ   rÙ   rÚ   rÛ   r¤   r¨   rM   Ústrr¥   r°   ÚSeriesrÝ   rµ   r*   ÚcastrV   )r¸   rÖ   r×   rØ   rÙ   rÚ   rÛ   r¿   rÁ   ÚvrÄ   Úconstructor_dtypeÚsr”   s                 r/   Úfinishz0IdentityTransformedPartitionValuesBuilder.finishj  s  € ßQ×Qà*,ˆà×0Ñ0×6Ñ6Ó8ò 	L‰KˆH�aÜ˜!œSÔ!Ø !��H’ðLØ#'×#?Ñ#?ÀÑ#I�Lô & l°X¸xÈÐ4NÔOñ ô & l°DÔ9ñ #à)ð &ô Ÿ	™	 !Ð+<Ô=�Aà Ÿw™w×0Ñ0Ô2Ð2Ð2ä! ,°Ô5ð Ô 2Ñ2˜àŸ™˜|Ó,�Aà$%�C˜’Mð5	Lð> ˆ
øô !ò LØ&GÈÀsÐ$K�C˜–MûðLús   Á
BCÃ	C7Ã%C2Ã2C7N)r¹   r$   rº   úpyiceberg.schema.SchemaÚreturnÚNone)rÎ   r)   rÏ   r)   r¤   zpyiceberg.typedef.Recordrç   rè   )rç   údict[int, pl.Series | str])Ú__name__Ú
__module__Ú__qualname__rÆ   rÔ   rå   r8   r1   r/   r–   r–   ÿ   sZ   „ ðMàðMð 2ðMð 
ó	Mð^/ð ð/ð ð	/ð
 3ð/ð 
ó/ô6$r1   r–   c                  ó<   — e Zd Z	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 dd„Zy)ÚIcebergStatisticsLoaderc                óÚ  — dd l }ddlm} dd l}dd l}|j
                  j                  j                  «       }i | _        g | _	        g | _
        || _        |j                  D �]|  }t        «       }	|j                  «       j                  «       D ]X  }
t!        j"                  t$        «      5  |	j'                  |
j)                  |j*                  «      j,                  «       d d d «       ŒZ  |j.                   ||j0                  j/                  |«      «      «      j3                  «       \  }}t4        j7                  |j,                  |	|«      }|rT|�t9        |«      j:                  nd}t=        d|j>                  ›d|j*                  ›d|j,                  ›d|	›d|›d	|›�«       tA        |j*                  |j>                  ||g g g ¬
«      | j                  |j*                  <   �Œ y # 1 sw Y   �Œ_xY w)Nr   r˜   rè   z&IcebergStatisticsLoader: field.name = z, field.field_id = z, field.field_type = z, field_all_types = z, field_polars_dtype = z, _load_from_bytes_impl = )rÁ   Úcolumn_nameÚcolumn_dtypeÚload_from_bytes_implÚ
min_valuesÚ
max_valuesÚ
null_count)!rŸ   r    r™   r<   Úpolars._utils.loggingÚ_utilsÚloggingÚverboseÚfile_column_statisticsÚload_as_empty_statisticsÚfile_lengthsÚprojected_filter_schemarª   Úsetr¶   r·   rT   rU   rd   Úaddr®   rÁ   r¯   r±   r²   r³   ÚLoadFromBytesImplÚinit_for_field_typeÚtyperê   r   ÚnameÚIcebergColumnStatisticsLoader)r¸   r¹   rý   r'   r™   r°   r<   rù   rs   Úfield_all_typesr²   rj   Úfield_polars_dtyperò   Ú_load_from_bytes_impls                  r/   rÆ   z IcebergStatisticsLoader.__init__’  sî  € ó
 	 Ý:ãÛ$à—-‘-×'Ñ'×/Ñ/Ó1ˆàPRˆÔ#Ø35ˆÔ%Ø')ˆÔØ'>ˆÔ$à,×3Ñ3ó *	ˆEÜ!›eˆOàŸ-™-›/×0Ñ0Ó2ò V�Ü×(Ñ(¬Ó4ñ VØ#×'Ñ'¨×(9Ñ(9¸%¿.¹.Ó(I×(TÑ(TÔU÷Vð VðVð %. B§I¡IÙ! )×"2Ñ"2×"9Ñ"9¸%Ó"@ÓAó%ç‰g‹iñ "ˆAÐ!ô $5×#HÑ#HØ× Ñ ØØ"ó$Ð ñ ð ,Ð7ô Ð-Ó.×7Ò7àð &ô ð%Ø—z‘z�oð &)Ø—~‘~Ð)ð *+Ø×'Ñ'Ð+ð ,*Ø&Ð*ð +-Ø)Ð-ð .0Ø,Ð0ð2ôô ;XØŸ™Ø!ŸJ™JØ/Ø%9ØØØô;ˆD×'Ñ'¨¯©Ó7ñE*	÷Vñ Vús   Â'5G Ç G*c                ó®   — | j                   j                  |j                  «       | j                  j	                  «       D ]  }|j                  |«       Œ y r7   )rü   r­   Úrecord_countrú   r·   Úpush_file_statistics)r¸   ÚfileÚstatss      r/   r
  z,IcebergStatisticsLoader.push_file_statisticsÐ  sH   € Ø×Ñ× Ñ  ×!2Ñ!2Ô3à×0Ñ0×7Ñ7Ó9ò 	-ˆEØ×&Ñ& tÕ,ñ	-r1   c                ó’  — dd l } |j                  d| j                  |j                  ¬«      j	                  «       g}| j
                  j                  «       D ][  \  }}|j                  |«      x}� t        |t        «      rd|› �}t        |«      ‚|j                  ||«      }	|j                  |	«       Œ]  |j                  |d¬«      S )Nr   rO   rÜ   z+statistics load failure for filter column: Ú
horizontal)Úhow)r<   rà   rü   ÚUInt32Úto_framerú   r¨   ÚgetrM   rß   r   rå   r­   Úconcat)
r¸   Úexpected_heightÚidentity_transformed_valuesr°   r¿   rÁ   Ústat_builderÚprf   Úcolumn_stats_dfs
             r/   rå   zIcebergStatisticsLoader.finishÖ  sÄ   € ó
 	ð ˆB�I‰I�e˜T×.Ñ.°b·i±iÔ@×IÑIÓKð#
ˆð '+×&AÑ&A×&GÑ&GÓ&Iò 	(Ñ"ˆH�lØ0×4Ñ4°XÓ>Ð>�ÐKÜ˜a¤Ô%ØGÈÀsÐK�CÜ& sÓ+Ð+à*×1Ñ1°/À1ÓEˆOØ�J‰J�Õ'ð	(ð ˆr�y‰y˜ ,Ô/Ð/r1   N)r¹   r$   rý   ræ   rç   rè   ©r  r#   rç   rè   )r  r)   r  ré   rç   úpl.DataFrame)rê   rë   rì   rÆ   r
  rå   r8   r1   r/   rî   rî   ‘  sK   „ ð<àð<ð "9ð<ð 
ó	<ó|-ð0àð0ð &@ð0ð 
ô	0r1   rî   c                  óp   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   dd„Z	 	 	 	 	 	 dd„Zy)r  rß   rð   úpl.DataTyperñ   r)   rÁ   úLoadFromBytesImpl | Nonerò   zlist[int | None]rõ   úlist[bytes | None]ró   rô   c                ó’  — | j                   j                  |j                  j                  | j                  «      «       | j
                  �}| j                  j                  |j                  j                  | j                  «      «       | j                  j                  |j                  j                  | j                  «      «       y y r7   )
rõ   r­   Únull_value_countsr  rÁ   rò   ró   Úlower_boundsrô   Úupper_bounds)r¸   r  s     r/   r
  z2IcebergColumnStatisticsLoader.push_file_statistics÷  sˆ   € Ø�‰×Ñ˜t×5Ñ5×9Ñ9¸$¿-¹-ÓHÔIà×$Ñ$Ð0Ø�O‰O×"Ñ" 4×#4Ñ#4×#8Ñ#8¸¿¹Ó#GÔHØ�O‰O×"Ñ" 4×#4Ñ#4×#8Ñ#8¸¿¹Ó#GÕHð 1r1   c                ó   — dd l }| j                  }t        | j                  «      |k(  sJ ‚ |j                  |› d�| j                  |j
                  ¬«      j                  «       }| j                  €Y|�|n |j                  d || j                  ¬«      }|j                  |j                  |› d�«      |j                  |› d�«      «      S t        | j                  «      |k(  sJ ‚t        | j                  «      |k(  sJ ‚| j                  j                  «       rt        ‚| j                  j!                  | j                  «      }| j                  j!                  | j                  «      }|�`|j"                  | j                  k(  sJ ‚|j%                  d ||j                  «       z
  «      }|j'                  |«      }|j'                  |«      }|j                  |j                  |› d�«      |j                  |› d�«      «      S )Nr   Ú_ncrÜ   Ú_minÚ_max)r<   rð   rO   rõ   rà   r  r  rò   Úrepeatrñ   rB   Úaliasró   rô   rµ   ÚNotImplementedErrorÚload_from_bytesrÝ   Úextend_constantÚ	fill_null)	r¸   r  r  r°   Úcr¿   rä   ró   rô   s	            r/   rå   z$IcebergColumnStatisticsLoader.finishþ  sØ  € ó
 	à×ÑˆÜ�4—?‘?Ó# Ò6Ð6Ð6àˆb�i‰i˜1˜#˜S˜	 4§?¡?¸"¿)¹)ÔD×MÑMÓOˆà×$Ñ$Ð,ð /Ð:ñ ,à�R—Y‘Y˜t _¸D×<MÑ<MÔNð ð ×#Ñ# A§G¡G¨q¨c°¨JÓ$7¸¿¹ÀAÀ3ÀdÀÓ9LÓMÐMä�4—?‘?Ó# Ò6Ð6Ð6Ü�4—?‘?Ó# Ò6Ð6Ð6à×Ñ×&Ñ&Ô(Ü%Ð%à×.Ñ.×>Ñ>¸t¿¹ÓOˆ
Ø×.Ñ.×>Ñ>¸t¿¹ÓOˆ
à&Ð2Ø.×4Ñ4¸×8IÑ8IÒIÐIÐIà*E×*UÑ*UØ�oÐ(C×(GÑ(GÓ(IÑIó+Ð'ð 5×>Ñ>¸zÓJˆJØ4×>Ñ>¸zÓJˆJà×ÑØ×Ñ ˜s $˜ZÓ(¨*×*:Ñ*:¸a¸SÀ¸:Ó*Fó
ð 	
r1   Nr  )r  r)   r  zpl.Series | Nonerç   r  )rê   rë   rì   Ú__annotations__r
  rå   r8   r1   r/   r  r  í  sR   … àÓØÓØƒMØ2Ó2Ø Ó Ø"Ó"Ø"Ó"óIð*
àð*
ð &6ð*
ð 
ô	*
r1   r  c                 óî   — ddl m} m}m}m}m}m}m}m}m	}m
}	m}
 |t        |f|t        |f|
t        |
f|t        |f|	t         |	f|t"        |f|t$        ||ff|t&        |f| t(        | f|t*        |f|t,        |fiS )Nr   ©Ú
BinaryTypeÚBooleanTypeÚDateTypeÚDecimalTypeÚ	FixedTyper�   rž   Ú
StringTypeÚTimestampTypeÚTimestamptzTypeÚTimeType)r¢   r1  r2  r3  r4  r5  r�   rž   r6  r7  r8  r9  ÚLoadBooleanFromBytesÚLoadDateFromBytesÚLoadTimeFromBytesÚLoadTimestampFromBytesÚLoadTimestamptzFromBytesÚLoadInt32FromBytesÚLoadInt64FromBytesÚLoadStringFromBytesÚLoadBinaryFromBytesÚLoadDecimalFromBytesÚLoadFixedFromBytesr0  s              r/   Ú_bytes_loader_lookuprE  ,  s    € ÷
÷ ÷ ñ ð  	Ô*¨KÐ8ØÔ$ hÐ/ØÔ$ hÐ/ØÔ.°Ð>ØÔ2°OÐDØÔ(¨+Ð6ØÔ%¨°+Ð'>Ð?ØÔ(¨*Ð5ØÔ(¨*Ð5ØÔ*¨KÐ8ØÔ&¨	Ð2ðð r1   c                  ó\   — e Zd Zdd„Ze	 	 	 	 	 	 	 	 dd„«       Zej                  dd„«       Zy)r   c                ó   — || _         y r7   )Úpolars_dtype)r¸   rH  s     r/   rÆ   zLoadFromBytesImpl.__init__P  s
   € Ø(ˆÕr1   c                ó”   ‡— t        «       j                  t        | «      «      x}€y |\  }Št        ˆfd„|D «       «      r ||«      S d S )Nc              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr7   )rM   )r9   ÚxÚallowed_field_typess     €r/   r;   z8LoadFromBytesImpl.init_for_field_type.<locals>.<genexpr>a  s   øè ø€ ÒO¸!”:˜aÐ!4×5ÑOùs   ƒ)rE  r  r  Úall)Úcurrent_field_typeÚall_field_typesr  râ   Úloader_implrL  s        @r/   r  z%LoadFromBytesImpl.init_for_field_typeS  s\   ø€ ô &Ó'×+Ñ+¬DÐ1CÓ,DÓEÐEˆAÐNØà+,Ñ(ˆÐ(ô ÓO¸ÔOÔOñ Ð*Ó+ð	
ð ð	
r1   c                 ó   — y)z(`bytes_values` should be of binary type.Nr8   )r¸   Úbyte_valuess     r/   r*  z!LoadFromBytesImpl.load_from_bytese  s   � r1   N)rH  r  rç   rè   )rN  r%   rO  zset[IcebergType]r  r  rç   r  ©rR  r  rç   z	pl.Series)	rê   rë   rì   rÆ   Ústaticmethodr  ÚabcÚabstractmethodr*  r8   r1   r/   r   r   O  s[   „ ó)ð ð
Ø'ð
ð *ð
ð (ð	
ð
 
"ò
ó ð
ð" 	×Ñò7ó ñ7r1   r   c                  ó   — e Zd Zdd„Zy)rB  c                óF   — dd l } |j                  ||j                  ¬«      S ©Nr   rÜ   )r<   rà   ÚBinary©r¸   rR  r°   s      r/   r*  z#LoadBinaryFromBytes.load_from_bytesk  s   € Ûàˆr�y‰y˜¨B¯I©IÔ6Ð6r1   NrS  ©rê   rë   rì   r*  r8   r1   r/   rB  rB  j  s   „ ô7r1   rB  c                  ó   — e Zd Zdd„Zy)r;  c                óÂ   — dd l } |j                  ||j                  ¬«      j                  j	                  |j
                  d¬«      j                  |j                  «      S ©Nr   rÜ   Úlittle©rÝ   Ú
endianness)r<   rà   rZ  ÚbinÚreinterpretrÙ   rá   rÖ   r[  s      r/   r*  z!LoadDateFromBytes.load_from_bytesr  sC   € Ûð ˆB�I‰I�k¨¯©Ô3ß‰S—‘ 2§8¡8¸�ÓAß‰T�"—'‘'‹]ð	
r1   NrS  r\  r8   r1   r/   r;  r;  q  ó   „ ô
r1   r;  c                  ó   — e Zd Zdd„Zy)r<  c                óÐ   — dd l } |j                  ||j                  ¬«      j                  j	                  |j
                  d¬«      t        z  j                  |j                  «      S r_  )	r<   rà   rZ  rc  rd  rÚ   r*   rá   rÛ   r[  s      r/   r*  z!LoadTimeFromBytes.load_from_bytes}  sY   € Ûð ˆB�I‰I�k¨¯©Ô3×7Ñ7×CÑCØ—h‘h¨8ð Dó ô !ñ!÷ ‰$ˆr�w‰w‹-ð	r1   NrS  r\  r8   r1   r/   r<  r<  |  s   „ ôr1   r<  c                  ó   — e Zd Zdd„Zy)r=  c                óÎ   — dd l } |j                  ||j                  ¬«      j                  j	                  |j
                  d¬«      j                   |j                  d«      «      S )Nr   rÜ   r`  ra  Úus©r<   rà   rZ  rc  rd  rÚ   rá   r×   r[  s      r/   r*  z&LoadTimestampFromBytes.load_from_bytes‰  sK   € Ûð ˆB�I‰I�k¨¯©Ô3ß‰S—‘ 2§8¡8¸�ÓAß‰T�+�"—+‘+˜dÓ#Ó$ð	
r1   NrS  r\  r8   r1   r/   r=  r=  ˆ  re  r1   r=  c                  ó   — e Zd Zdd„Zy)r>  c                óÒ   — dd l } |j                  ||j                  ¬«      j                  j	                  |j
                  d¬«      j                   |j                  dd¬«      «      S )Nr   rÜ   r`  ra  rj  ÚUTC)Ú	time_zonerk  r[  s      r/   r*  z(LoadTimestamptzFromBytes.load_from_bytes”  sM   € Ûð ˆB�I‰I�k¨¯©Ô3ß‰S—‘ 2§8¡8¸�ÓAß‰T�+�"—+‘+˜d¨eÔ4Ó5ð	
r1   NrS  r\  r8   r1   r/   r>  r>  “  re  r1   r>  c                  ó   — e Zd Zdd„Zy)r:  c                óÂ   — dd l } |j                  ||j                  ¬«      j                  j	                  |j
                  d¬«      j                  |j                  «      S r_  )r<   rà   rZ  rc  rd  ÚUInt8rá   ÚBooleanr[  s      r/   r*  z$LoadBooleanFromBytes.load_from_bytesŸ  sD   € Ûð ˆB�I‰I�k¨¯©Ô3ß‰S—‘ 2§8¡8¸�ÓAß‰T�"—*‘*Óð	
r1   NrS  r\  r8   r1   r/   r:  r:  ž  re  r1   r:  c                  ó   — e Zd Zdd„Zy)rC  c                óÜ   — dd l }ddlm} | j                  }t	        ||j
                  «      sJ ‚|j                  €J ‚t        |j                  ||j                  |j                  ¬«      «      S )Nr   )ÚPySeries)Ú
bytes_listÚ	precisionÚscale)
r<   Úpolars._plrrv  rH  rM   ÚDecimalrx  r   Ú(_import_decimal_from_iceberg_binary_reprry  )r¸   rR  r°   rv  rÝ   s        r/   r*  z$LoadDecimalFromBytes.load_from_bytesª  sh   € ÛÝ(à×!Ñ!ˆÜ˜% §¡Ô,Ð,Ð,Ø�‰Ð*Ð*Ð*äØ×=Ñ=Ø&ØŸ/™/Ø—k‘kð >ó ó
ð 	
r1   NrS  r\  r8   r1   r/   rC  rC  ©  s   „ ô
r1   rC  c                  ó   — e Zd Zy)rD  N)rê   rë   rì   r8   r1   r/   rD  rD  »  s   … r1   rD  c                  ó   — e Zd Zdd„Zy)r?  c                ó�   — dd l } |j                  ||j                  ¬«      j                  j	                  |j
                  d¬«      S r_  )r<   rà   rZ  rc  rd  rÙ   r[  s      r/   r*  z"LoadInt32FromBytes.load_from_bytes¿  s>   € Ûàˆr�y‰y˜¨B¯I©IÔ6×:Ñ:×FÑFØ—(‘( xð Gó 
ð 	
r1   NrS  r\  r8   r1   r/   r?  r?  ¾  s   „ ô
r1   r?  c                  ó   — e Zd Zdd„Zy)r@  c                ó.  — dd l } |j                  ||j                  ¬«      }|j                  j	                  |j
                  d¬«      j                  |j                  j	                  |j                  d¬«      j                  |j
                  «      «      S r_  )	r<   rà   rZ  rc  rd  rÚ   r,  rÙ   rá   )r¸   rR  r°   rä   s       r/   r*  z"LoadInt64FromBytes.load_from_bytesÈ  sp   € ÛàˆB�I‰I�k¨¯©Ô3ˆà�u‰u× Ñ  r§x¡x¸HÐ ÓE×OÑOØ�E‰E×Ñ B§H¡H¸ÐÓB×GÑGÈÏÉÓQó
ð 	
r1   NrS  r\  r8   r1   r/   r@  r@  Ç  re  r1   r@  c                  ó   — e Zd Zdd„Zy)rA  c                óx   — dd l } |j                  ||j                  ¬«      j                  |j                  «      S rY  )r<   rà   rZ  rá   ÚStringr[  s      r/   r*  z#LoadStringFromBytes.load_from_bytesÓ  s+   € Ûàˆr�y‰y˜¨B¯I©IÔ6×;Ñ;¸B¿I¹IÓFÐFr1   NrS  r\  r8   r1   r/   rA  rA  Ò  s   „ ôGr1   rA  )r.   rß   rç   rß   )NNNN)rA   r$   rB   zlist[str] | NonerC   ú
Any | NonerD   ú
int | Noner5   r†  rE   r   rç   z tuple[Iterator[DataFrame], bool])rQ   r   rç   r   )rY   rß   rç   r…  )rb   rß   rç   zast.expr)re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )re   r   rç   r   )rç   zhdict[type[IcebergType], tuple[type[LoadFromBytesImpl], type[IcebergType] | Sequence[type[IcebergType]]]])WÚ
__future__r   rU  r_   rT   Ú_astr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Údataclassesr   Ú	functoolsr   r   Útypingr   r   Úpolars._reexportÚ	_reexportr°   Úpolars._utils.convertr   r   rö   r   Úpolars._utils.wrapr   Úpolars.exceptionsr   Úcollections.abcr   r   r    r"   r!   r'   rŸ   Úpyiceberg.manifestr#   Úpyiceberg.tabler$   r¢   r%   r<   r&   Úpolars._dependenciesr(   r.  r*   r0   rG   rR   r[   rW   rX   Úregisterrj   r–   rî   r  rE  ÚABCr   rB  r;  r<  r=  r>  r:  rC  rD  r?  r@  rA  r8   r1   r/   ú<module>r—     sê  ðÞ "ã 
Û 
Û ß Ñ ÷÷ ÷ õ õ "ß +ß %å ß <Ý (Ý %Ý *áß<Ñ<ß'ãÛÝ+Ý%Ý+æ å.ð Ø$ñDÐ Ð@ó ð
 Ð �CÓ óð &*Ø'+ØØ"ð1=Ø	ð1=à"ð1=ð %ð1=ð ð	1=ð
 ð1=ð ð1=ð &ó1=óhóó-ð0 òó ðð ×Ñ˜XÓ&òó 'ðð ×Ñ˜TÓ"òó #ðð ×Ñ˜WÓ%òó &ðð ×Ñ˜TÓ"òó #ðð. ×Ñ˜YÓ'òó (ðð ×Ñ˜UÓ#òó $ðð ×Ñ˜WÓ%òó &ðð( ×Ñ˜TÓ"ò3ó #ð3÷Oñ O÷dY0ñ Y0ðx ÷:
ð :
ó ð:
ð| òó ðôD7˜Ÿ™ô 7ô67Ð+ô 7ô
Ð)ô 
ô	Ð)ô 	ô
Ð.ô 
ô
Ð0ô 
ô
Ð,ô 
ô
Ð,ô 
ô$ 3Ð,Ô 2ô
Ð*ô 
ô
Ð*ô 
ôGÐ+õ Gr1   