
    hZV                       % S SK Jr  S SKrS SKrS SKrS SKJrJrJr  S SKJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJrJr  S SKJrJrJr  S SKJ r!  S SK"J#r#J$r$  S S	K%J&r&  S S
K'J(r(  S SK)J*r*  \(       a1  S SK+J,r,  S SK-J.r.J-r-  S SK/r/S SK0r/S SK1J2r2  S SK3J4r4  S SK5J6r6  S SK7J8r8J9r9  OS SK:J/r/  \#\$S.r;S\<S'   Sr=S\<S'       SB             SCS jjr>SDS jr?\SES j5       r@\@R                  \5      SFS j5       rB\@R                  \5      SGS j5       rB\@R                  \5      SHS j5       rB\@R                  \5      SIS j5       rB\@R                  \	5      SJS j5       rB\@R                  \
5      SKS  j5       rB\@R                  \5      SLS! j5       rB\@R                  \5      SMS" j5       rB " S# S$5      rC " S% S&5      rD\ " S' S(5      5       rE\SNS) j5       rF " S* S+\R                  5      rH " S, S-\H5      rI " S. S/\H5      rJ " S0 S1\H5      rK " S2 S3\H5      rL " S4 S5\H5      rM " S6 S7\H5      rN " S8 S9\H5      rO " S: S;\I5      rP " S< S=\H5      rQ " S> S?\H5      rR " S@ SA\H5      rSg)O    )annotationsN)GtELtLtE)	AttributeBinOpBitAndBitOrCallCompareConstantEqGtInvertListNameUnaryOp)	dataclass)cachesingledispatch)TYPE_CHECKINGAnyCallable)
to_py_dateto_py_datetime)eprint)wrap_s)ComputeError)Sequence)datedatetime)DataFile)Table)IcebergType)	DataFrameSeries)	pyicebergz)dict[str, Callable[..., datetime | date]]_temporal_conversionsi  intICEBERG_TIME_TO_NSc                   SSK Jn  U R                  X4S9nUb  UR                  " U6 nUb(   [	        U5      n[        U5      n	UR                  U	5      nU" UR                  5       5      $ ! [         a  n
SU 3n[        U5      U
eSn
A
ff = f)a  
Take the projected columns and materialize an arrow table.

Parameters
----------
tbl
    pyarrow dataset
with_columns
    Columns that are projected
predicate
    pyarrow expression that can be evaluated with eval
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
-------
DataFrame
r   )
from_arrow)limitsnapshot_idNz*Could not convert predicate to PyIceberg: )	polarsr,   scanselect_to_ast_convert_predicate
ValueErrorfilterto_arrow)tblwith_columns	predicaten_rowsr.   kwargsr,   r0   expr_astpyiceberg_expremsgs               R/home/james-whalen/.local/lib/python3.13/site-packages/polars/io/iceberg/_utils.py_scan_pyarrow_dataset_implrA   6   s    @ "88&8:D{{L)	)y)H/9N
 {{>*dmmo&&  	)>ykJCS/q(	)s   A) )
B	3BB	c                @    [         R                  " U SS9R                  $ )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@   r2   r2   j   s    * 99T',,,    c                "    SU  3n[        U5      e)zJWalks the AST to convert the PyArrow expression to a PyIceberg expression.zUnexpected symbol: )r4   ar?   s     r@   r3   r3      s      s
#C
S/rI   c                    U R                   $ N)valuerL   s    r@   _rQ      s    77NrI   c                    U R                   $ rN   )idrP   s    r@   rQ   rQ      s    44KrI   c                    [        U R                  [        5      (       a2  [        R                  R                  [        U R                  5      5      $ SU  3n[        U5      e)NzUnexpected UnaryOp: )	
isinstanceopr   r'   expressionsNotr3   operand	TypeErrorrK   s     r@   rQ   rQ      sJ    !$$$$(();AII)FGG$QC(nrI   c                8   U R                    Vs/ s H  n[        U5      PM     nn[        U R                  5      nUS:X  a  U$ US:X  a  US   $ U[        ;   a  [        U   " U6 R	                  5       $ [        U R                  R
                  5      S   nUS:X  a"  [        R                  R                  XBS   5      $ US:X  a  [        R                  R                  U5      $ US:X  a  [        R                  R                  U5      $ SU< 3n[        U5      es  snf )Nfieldscalarr   isinis_nullis_nanzUnknown call: )argsr3   funcr(   	isoformatrO   r'   rW   InIsNullIsNaNr4   )rL   argra   frefr?   s         r@   rQ   rQ      s    /0vv6vs#vD6166"AG|	
hAw	
#	#$Q'.88:: .q1;((++Ca99)^((//44(]((..s331%
 C
S/' 7s   Dc                    U R                   $ rN   )attrrP   s    r@   rQ   rQ      s    66MrI   c                j   [        U R                  5      n[        U R                  5      nU R                  n[	        U[
        5      (       a  [        R                  R                  X5      $ [	        U[        5      (       a  [        R                  R                  X5      $ SU SU SU 3n[        U5      e)Nz	Unknown:  )r3   leftrightrV   rU   r	   r'   rW   Andr
   OrrZ   )rL   lhsrhsrV   r?   s        r@   rQ   rQ      s    
QVV
$C
QWW
%C	
B"f$$((22"e$$''11#at1SE*nrI   c                   U R                   S   n[        U R                  5      S   n[        U R                  S   5      n[	        U[
        5      (       a  [        R                  R                  X#5      $ [	        U[        5      (       a  [        R                  R                  X#5      $ [	        U[        5      (       a  [        R                  R                  X#5      $ [	        U[        5      (       a  [        R                  R                  X#5      $ [	        U[        5      (       a  [        R                  R!                  X#5      $ SU 3n[#        U5      e)Nr   zUnknown comparison: )opsr3   rn   comparatorsrU   r   r'   rW   GreaterThanr   GreaterThanOrEqualr   EqualTor   LessThanr   LessThanOrEqualrZ   )rL   rV   rr   rs   r?   s        r@   rQ   rQ      s    	
qB
QVV
$Q
'C
Q]]1-
.C"b$$00::"c$$77AA"b$$,,S66"b$$--c77"c$$44S>>$RD)nrI   c                X    U R                    Vs/ s H  n[        U5      PM     sn$ s  snf rN   )eltsr3   )rL   r>   s     r@   rQ   rQ      s$    +,6626aq!6222s   'c                  N    \ rS rSr      SS jr        SS jrS	S jrSrg)
)IdentityTransformedPartitionValuesBuilder   c                   SS K nSSKJn  SSKJn  SSKJnJnJnJ	n	  UR                  n
0 U l        0 U l        0 U l        UR                  5       nUR                  5        H  u  p/ n[!        UR"                  5       Hk  u  nnUR$                  U
;   d  M  ['        UR(                  U5      (       d  M5  UR+                  UUR$                  45        / U R                  UR$                  '   Mm     XR                  U'   M     U R                   GH[  nUR-                  U5      nUR.                  n[0        R2                  " U" UR4                  R3                  U5      5      5      R7                  5       u  nnUU R                  U'   UR8                  (       a  UR;                  5       (       a  SU< SU< 3U R                  U'   UR=                  5       R?                  5        H  n UR-                  U5      R.                  nUU:X  a  M'  ['        UU	5      (       a  ['        UU5      (       a  MK  ['        UXg45      (       a  ['        UXg45      (       a  Mq  SU SU 3U R                  U'   M     GM^     g ! [@         a     M  f = f)	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_idrU   	transformappend
find_field
field_typeplSchemaschemapopitemis_primitive	is_nestedschemasvaluesr4   )selftableprojected_schemar'   r   r   r   r   r   r   projected_idspartition_specsspec_idspecoutfield_indexr\   field_idprojected_fieldprojected_typerQ   output_dtyper   type_this_schemas                           r@   __init__2IdentityTransformedPartitionValuesBuilder.__init__   sT   
 	 ::	
 	
 #3"<"< =? @B$
  	5  ++-,224MGC&/&<"U??m3
OO%69 9 JJU__=>=?D))%//: '= FI99'B 5 --H.99(CO,77N ii!)"2"2"9"9/"JKgi A| 6BD((2!..,2H2H2J2J<>*==N|>OP %%h/  --/002'-'8'8'B'M'M$
 #&66">8<<&'7EE #>J3JKK&'7*9PQQ ::J9K L-.0 ))(3# 3 .$ " s   I((
I65I6c          
         U R                   U   nU Hm  u  pgX6   n[        U R                  U   =n	[        5      (       d  M/  U	R                  S [        U[        U	5      -
  5       5       5        U	R                  U5        Mo     g ! [         a/    U R                   Vs0 s H	  nUSU 3_M     Os  snf snU l         g f = f)Nzpartition spec ID not found: c              3  &   #    U  H  nS v   M	     g 7frN    ).0rQ   s     r@   	<genexpr>RIdentityTransformedPartitionValuesBuilder.push_partition_values.<locals>.<genexpr>J  s     O,Nqd,Ns   )	r   KeyErrorr   rU   listextendrangelenr   )
r   current_indexpartition_spec_idr   identity_transformskisource_field_idpartition_valuer   s
             r@   push_partition_values?IdentityTransformedPartitionValuesBuilder.push_partition_values2  s    		"&"O"O!# #6A.1OD$9$9/$JJ&DQQ OE-#f+2M,NOOo. #6  	 ..%.A 23D2EFF.%D! 	s   B B>B.-B>=B>c                   SSK JnJnJnJnJnJn  0 nU R                  R                  5        H  u  p[        U	[        5      (       a  XU'   M    U R                  U   n
[        XX645      (       a  UO[        X5      (       a  UOU
n[        R                  " XS9nUR                  R                  5       (       a   e[        X5      (       a	  U[         -  nUR#                  U
5      nXU'   M     U$ ! [$         a  nSU 3Xx'    S nAM  S nAff = f)Nr   )DateDatetimeDurationInt32Int64Timedtypez!failed to load partition values: )polars.datatypesr   r   r   r   r   r   r   r   rU   strr   r   r&   r   r   r*   cast	Exception)r   r   r   r   r   r   r   r   r   vr   constructor_dtypesr>   s                 r@   finish0IdentityTransformedPartitionValuesBuilder.finishM  s   QQ*,00668KH!S!! !HL#'#?#?#IL &lx4NOO  &l99 #) & 		!=A ww002222!,55  22|,A$%M5 9> 
 ! L&Gs$KCMLs   BC..
D
8DD
)r   r   r   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____firstlineno__r   r   r   __static_attributes__r   rI   r@   r   r      sZ    MM 2M 
	M^/ / 	/
 3/ 
/6$rI   r   c                  J    \ rS rSr      SS jrSS jr      S	S jrSrg)
IcebergStatisticsLoaderit  c                   SS K nSSKJn  SS KnSS KnUR
                  R                  R                  5       n0 U l        / U l	        / U l
        X l        UR                   GH  n[        5       n	UR                  5       R                  5        HZ  n
[         R"                  " [$        5         U	R'                  U
R)                  UR*                  5      R,                  5        S S S 5        M\     UR.                  " U" UR0                  R/                  U5      5      5      R3                  5       u  p[4        R7                  UR,                  U	U5      nU(       a[  Ub  [9        U5      R:                  OSn[=        SUR>                  < SUR*                  < SUR,                  < SU	< SU< S	U< 35        [A        UR*                  UR>                  UU/ / / S
9U R                  UR*                  '   GM     g ! , (       d  f       GMr  = f)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   
contextlibsuppressr4   addr   r   r   r   r   r   LoadFromBytesImplinit_for_field_typetyper   r   nameIcebergColumnStatisticsLoader)r   r   r   r'   r   r   r/   r   r\   field_all_typesr   rQ   field_polars_dtyper   _load_from_bytes_impls                  r@   r    IcebergStatisticsLoader.__init__u  s   
 	 :$--''//1PR#35%')'>$,33E!eO--/002((4#''(9(9%..(I(T(TU 54 3 %'II!)"2"2"9"9%"@A%gi "A $5#H#H  "$   ,7 -.77 & %zzo &)~~) *+''+ ,*&* +-)- .0,02 ;X!JJ/%9;D''7E 4 54s   '5G,,
G<c                    U R                   R                  UR                  5        U R                  R	                  5        H  nUR                  U5        M     g rN   )r   r   record_countr   r   push_file_statistics)r   filestatss      r@   r  ,IcebergStatisticsLoader.push_file_statistics  sC      !2!2300779E&&t, :rI   c                   SS K nUR                  " SU R                  UR                  S9R	                  5       /nU R
                  R                  5        H`  u  pVUR                  U5      =nb%  [        U[        5      (       a  SU 3n[        U5      eUR                  X5      n	UR                  U	5        Mb     UR                  " USS9$ )Nr   r   r   z+statistics load failure for filter column: 
horizontal)how)r/   r&   r   UInt32to_framer   r   getrU   r   r   r   r   concat)
r   expected_heightidentity_transformed_valuesr   r   r   stat_builderpr?   column_stats_dfs
             r@   r   IcebergStatisticsLoader.finish  s    
 	 IIeT..bii@IIK#
 '+&A&A&G&G&I"H044X>>Ka%%GsKC&s++*11/EOJJ' 'J yy,//rI   )r   r   r   r   N)r   r#   r   r   r   r   r  r"   r   r   )r  r)   r  r   r   pl.DataFrame)r   r   r   r   r   r  r   r   r   rI   r@   r   r   t  sK    << "9< 
	<|-00 &@0 
	0rI   r   c                  |    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   SS jr      SS jrSrg)r   i  r   r   pl.DataTyper   r)   r   LoadFromBytesImpl | Noner   zlist[int | None]r   list[bytes | None]r   r   c                   U R                   R                  UR                  R                  U R                  5      5        U R
                  b}  U R                  R                  UR                  R                  U R                  5      5        U R                  R                  UR                  R                  U R                  5      5        g g rN   )
r   r   null_value_countsr
  r   r   r   lower_boundsr   upper_bounds)r   r  s     r@   r  2IcebergColumnStatisticsLoader.push_file_statistics  s    t5599$--HI$$0OO""4#4#4#8#8#GHOO""4#4#4#8#8#GH 1rI   c                   SS K nU R                  n[        U R                  5      U:X  d   eUR                  " U S3U R                  UR
                  S9R                  5       nU R                  cV  Ub  UOUR                  " S XR                  S9nUR                  UR                  U S35      UR                  U S35      5      $ [        U R                  5      U:X  d   e[        U R                  5      U:X  d   eU R                  R                  5       (       a  [        eU R                  R!                  U R                  5      nU R                  R!                  U R                  5      nUb`  UR"                  U R                  :X  d   eUR%                  S XR                  5       -
  5      nUR'                  U5      nUR'                  U5      nUR                  UR                  U S35      UR                  U S35      5      $ )Nr   _ncr   _min_max)r/   r   r   r   r&   r  r	  r   repeatr   r8   aliasr   r   r   NotImplementedErrorload_from_bytesr   extend_constant	fill_null)	r   r  r  r   cr   r   r   r   s	            r@   r   $IcebergColumnStatisticsLoader.finish  s   
 	4??#666ii1#S	4??"))DMMO$$, /: ,YYt_<M<MN  ##AGGqcJ$7A3d9LMM4??#6664??#666&&((%%..>>tO
..>>tO
&2.448I8IIII*E*U*Uo(G(G(II+' 5>>zJJ4>>zJJs$Z(**:*:aS:*F
 	
rI   r   Nr  )r  r)   r  zpl.Series | Noner   r  )r   r   r   r   __annotations__r  r   r   r   rI   r@   r   r     sR    M22  """"I*
*
 &6*
 
	*
rI   r   c                     SSK Jn JnJnJnJnJnJnJnJ	nJ
n	Jn
  U[        U4U[        U4U
[        U
4U[        U4U	[         U	4U["        U4U[$        Xe44U[&        U4U [(        U 4U[*        U4U[,        U40$ )Nr   
BinaryTypeBooleanTypeDateTypeDecimalType	FixedTyper   r   
StringTypeTimestampTypeTimestamptzTypeTimeType)r   r,  r-  r.  r/  r0  r   r   r1  r2  r3  r4  LoadBooleanFromBytesLoadDateFromBytesLoadTimeFromBytesLoadTimestampFromBytesLoadTimestamptzFromBytesLoadInt32FromBytesLoadInt64FromBytesLoadStringFromBytesLoadBinaryFromBytesLoadDecimalFromBytesLoadFixedFromBytesr+  s              r@   _bytes_loader_lookupr@    s    
     	*K8$h/$h/.>2OD(+6%'>?(*5(*5*K8&	2 rI   c                  j    \ rS rSrSS jr\        SS j5       r\R                  S	S j5       r	Sr
g)
r   i2  c                    Xl         g rN   polars_dtype)r   rD  s     r@   r   LoadFromBytesImpl.__init__3  s    (rI   c                   ^ [        5       R                  [        U 5      5      =nc  g Uu  nm[        U4S jU 5       5      (       a  U" U5      $ S $ )Nc              3  <   >#    U  H  n[        UT5      v   M     g 7frN   )rU   )r   xallowed_field_typess     r@   r   8LoadFromBytesImpl.init_for_field_type.<locals>.<genexpr>D  s     O!:a!455s   )r@  r
  r   all)current_field_typeall_field_typesr   r   loader_implrI  s        @r@   r   %LoadFromBytesImpl.init_for_field_type6  s_     &'++D1C,DEEAN+,(( OOOO *+	
 	
rI   c                    g)z(`bytes_values` should be of binary type.Nr   )r   byte_valuess     r@   r$  !LoadFromBytesImpl.load_from_bytesH  s    rI   rC  N)rD  r  r   r   )rL  r$   rM  zset[IcebergType]r   r  r   r  rQ  r  r   z	pl.Series)r   r   r   r   r   staticmethodr   abcabstractmethodr$  r   r   rI   r@   r   r   2  s[    ) 
'
 *
 (	

 
"
 
" 	7 7rI   r   c                      \ rS rSrSS jrSrg)r=  iM  c                >    SS K nUR                  " XR                  S9$ Nr   r   )r/   r&   Binaryr   rQ  r   s      r@   r$  #LoadBinaryFromBytes.load_from_bytesN  s    yyII66rI   r   NrS  r   r   r   r   r$  r   r   rI   r@   r=  r=  M  s    7rI   r=  c                      \ rS rSrSS jrSrg)r6  iT  c                    SS K nUR                  " XR                  S9R                  R	                  UR
                  SS9R                  UR                  5      $ Nr   r   littler   
endianness)r/   r&   rZ  binreinterpretr   r   r   r[  s      r@   r$  !LoadDateFromBytes.load_from_bytesU  s?     IIk3S288AT"'']	
rI   r   NrS  r]  r   rI   r@   r6  r6  T      
rI   r6  c                      \ rS rSrSS jrSrg)r7  i_  c                    SS K nUR                  " XR                  S9R                  R	                  UR
                  SS9[        -  R                  UR                  5      $ r`  )	r/   r&   rZ  rd  re  r   r*   r   r   r[  s      r@   r$  !LoadTimeFromBytes.load_from_bytes`  sU     IIk377CChh8 D  !! $rww-	rI   r   NrS  r]  r   rI   r@   r7  r7  _  s    rI   r7  c                      \ rS rSrSS jrSrg)r8  ik  c                    SS K nUR                  " XR                  S9R                  R	                  UR
                  SS9R                  UR                  " S5      5      $ )Nr   r   ra  rb  usr/   r&   rZ  rd  re  r   r   r   r[  s      r@   r$  &LoadTimestampFromBytes.load_from_bytesl  sE     IIk3S288AT"++d#$	
rI   r   NrS  r]  r   rI   r@   r8  r8  k  rg  rI   r8  c                      \ rS rSrSS jrSrg)r9  iv  c                    SS K nUR                  " XR                  S9R                  R	                  UR
                  SS9R                  UR                  " SSS95      $ )Nr   r   ra  rb  rm  UTC)	time_zonern  r[  s      r@   r$  (LoadTimestamptzFromBytes.load_from_bytesw  sG     IIk3S288AT"++de45	
rI   r   NrS  r]  r   rI   r@   r9  r9  v  rg  rI   r9  c                      \ rS rSrSS jrSrg)r5  i  c                    SS K nUR                  " XR                  S9R                  R	                  UR
                  SS9R                  UR                  5      $ r`  )r/   r&   rZ  rd  re  UInt8r   Booleanr[  s      r@   r$  $LoadBooleanFromBytes.load_from_bytes  s@     IIk3S288AT"**	
rI   r   NrS  r]  r   rI   r@   r5  r5    rg  rI   r5  c                      \ rS rSrSS jrSrg)r>  i  c                    SS K nSSKJn  U R                  n[	        XBR
                  5      (       d   eUR                  c   e[        UR                  UUR                  UR                  S95      $ )Nr   )PySeries)
bytes_list	precisionscale)
r/   polars._plrr|  rD  rU   Decimalr~  r   (_import_decimal_from_iceberg_binary_reprr  )r   rQ  r   r|  r   s        r@   r$  $LoadDecimalFromBytes.load_from_bytes  si    (!!%,,,,***==&//kk > 
 	
rI   r   NrS  r]  r   rI   r@   r>  r>    s    
rI   r>  c                      \ rS rSrSrg)r?  i  r   N)r   r   r   r   r   r   rI   r@   r?  r?    s    srI   r?  c                      \ rS rSrSS jrSrg)r:  i  c                    SS K nUR                  " XR                  S9R                  R	                  UR
                  SS9$ r`  )r/   r&   rZ  rd  re  r   r[  s      r@   r$  "LoadInt32FromBytes.load_from_bytes  s:    yyII6::FF((x G 
 	
rI   r   NrS  r]  r   rI   r@   r:  r:    s    
rI   r:  c                      \ rS rSrSS jrSrg)r;  i  c                   SS K nUR                  " XR                  S9nUR                  R	                  UR
                  SS9R                  UR                  R	                  UR                  SS9R                  UR
                  5      5      $ r`  )	r/   r&   rZ  rd  re  r   r&  r   r   )r   rQ  r   r   s       r@   r$  "LoadInt64FromBytes.load_from_bytes  sl    IIk3uu  rxxH EOOEEBHHBGGQ
 	
rI   r   NrS  r]  r   rI   r@   r;  r;    rg  rI   r;  c                      \ rS rSrSS jrSrg)r<  i  c                p    SS K nUR                  " XR                  S9R                  UR                  5      $ rY  )r/   r&   rZ  r   Stringr[  s      r@   r$  #LoadStringFromBytes.load_from_bytes  s'    yyII6;;BIIFFrI   r   NrS  r]  r   rI   r@   r<  r<    s    GrI   r<  )NNNN)r7   r#   r8   zlist[str] | Noner9   z
str | Noner:   
int | Noner.   r  r;   r   r   zDataFrame | Series)rH   r   r   zast.expr)rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )rL   r   r   r   )r   zhdict[type[IcebergType], tuple[type[LoadFromBytesImpl], type[IcebergType] | Sequence[type[IcebergType]]]])T
__future__r   rU  rE   r   _astr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   dataclassesr   	functoolsr   r   typingr   r   r   polars._reexport	_reexportr   polars._utils.convertr   r   r   r   polars._utils.wrapr   polars.exceptionsr   collections.abcr   r!   r    r'   r   pyiceberg.manifestr"   pyiceberg.tabler#   r   r$   r/   r%   r&   polars._dependenciesr(   r)  r*   rA   r2   r3   registerrQ   r   r   r   r@  ABCr   r=  r6  r7  r8  r9  r5  r>  r?  r:  r;  r<  r   rI   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0x :
 :
 :
|  D7 767+ 7
) 
	) 	
. 

0 

, 

, 
$ 3, 2
* 

* 
G+ GrI   