
    hA                    x   S SK J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
  S SKJr  S SKJrJr  S SKJr  S SKJrJrJr  S SKJr  S SKJs  Jr  S S	KJr  S S
K J!r!J"r"J#r#J$r$J%r%  S SK J&r'  S SK J(r)  S SK J*r+  S SK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  S SK5J6r6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrC  S SKDJErEJFrF  S SKGJHrH  \R                  " \J5         S SKKJLrL  SSS5        \(       a"  S SKJMrMJNrN  S SKJOrOJPrP  S SKKJQrQ  S SKRJSrSJTrTJUrUJVrV  SrW SCSSSSS.             SDS jjjrXSSSS.         SES jjrY SCSS.       SFS  jjjrZ  SGSS!.           SHS" jjjr[SSSSS#.           SIS$ jjr\SS!.       SJS% jjr] SCSSS\;SS&.               SKS' jjjr^\SSS(.                 SLS) jj5       r_\_R                  \a5      SS*.                 SMS+ jj5       rb              SNS, jrc\_R                  \d5      SS*.                 SOS- jj5       re\_R                  \5      \_R                  \f5                      SPS. j5       5       rg\_R                  \h5                    SQS/ j5       ri      SRS0 jrj              SSS1 jrkSS!.               STS2 jjrl                STS3 jrm          SUS4 jrn      SVS5 jro SCSSSS\;SS6.                 SWS7 jjjrpSXS8 jrq SCSSSSSS9.               SYS: jjjrrSZS; jrs SCSSSS<.           S[S= jjjrt SCSSSSS>.             S\S? jjjru  SGSS!.         S]S@ jjjrv SCSSSA.         S^SB jjjrwg! , (       d  f       GN= f)_    )annotationsN)	GeneratorMappingSequence)datedatetimetime	timedelta)singledispatch)islicezip_longest)
itemgetter)TYPE_CHECKINGAnyCallable)	functions)_NUMPY_AVAILABLE_PYARROW_AVAILABLE_check_for_numpy_check_for_pandasdataclasses)numpy)pandas)pyarrow)contains_nestedget_first_non_noneis_namedtupleis_pydantic_model$is_simple_numpy_backed_pandas_seriesis_sqlalchemy_row	nt_unpacktry_get_type_hints)_is_generatorarrlenissue_warningparse_version)	N_INFER_DEFAULTCategoricalEnumStringStructUnknownis_polars_dtypeparse_into_dtypetry_parse_into_dtype)DataOrientationWarning
ShapeError)thread_pool_size)PyDataFrame)IterableMutableMapping)	DataFrameSeries)PySeries)OrientationPolarsDataTypeSchemaDefinition
SchemaDict  TF)schema_overridesstrictnan_to_nullallow_multithreadedc                 ^^^ [        T[        5      (       aB  U (       a;  [        U4S jU  5       5      (       d  Sn[        U5      eT Vs0 s H  owX   _M	     n n[	        TU R                  5       US9u  pU(       d  [        U 5      nU (       a  [        (       a  [        UU4S jU R                  5        5       5      n	U	S:  as   SSK
n
[        5       nU
R                  R                  U5       n[        [        UUR!                  U4S j[        U R#                  5       5      5      5      5      n SSS5        U (       dI  U(       aB  U Vs/ s H4  n[(        R*                  " U/ UR-                  U5      UTS9R.                  PM6     nnO4[1        U UUTS9R                  5        Vs/ s H  nUR.                  PM     nn[3        XSS9n[5        U5      nU(       a6  UR7                  5       [        UR                  5       5      :w  a  [9        UXUS9nU$ s  snf ! , (       d  f       N= f! [$         a    ['        U TUUTS	S
9s $ f = fs  snf s  snf )z7Construct a PyDataFrame from a dictionary of sequences.c              3  ,   >#    U  H	  oT;   v   M     g 7fN ).0colschemas     ^/home/james-whalen/.local/lib/python3.13/site-packages/polars/_utils/construction/dataframe.py	<genexpr>dict_to_pydf.<locals>.<genexpr>W   s     3ds6Md   z>the given column-schema names do not match the data dictionary)lookup_namesr>   c              3  L  >#    U  H  n[        T=(       a    [        U5      =(       ap    [        U[        R                  5      =(       aO    [        U5      [        :  =(       a6    T=(       a-    UR                  [        R                  [        R                  4;   5      v   M     g 7frD   )
intr   
isinstancenpndarraylen"_MIN_NUMPY_SIZE_FOR_MULTITHREADINGdtypefloat32float64)rF   valrA   r@   s     rI   rJ   rK   d   s      
 % # :$S):sBJJ/: HAA:
  : II"**bjj!99  %s   B!B$   r   Nc                   > [        U S   [        R                  5      (       a  [        R                  " U S   U S   TS9$ U S   $ )N   r   r@   )rP   rQ   rR   plr7   )tr@   s    rI   <lambda>dict_to_pydf.<locals>.<lambda>   sC    '1!A$

'C'C %'IIadAaDk$R %.)*1%.    F)datarH   r>   r?   r@   rA   rU   r?   r@   )r>   r?   r@   T)columns	from_dictr>   r?   )rP   r   all
ValueError_unpack_schemakeyslistr   sumvaluesmultiprocessing.dummyr2   dummyPooldictzipmapitemsFileNotFoundErrordict_to_pydfr]   r7   get_s_expand_dict_values_handle_columns_argr3   dtypes_post_apply_columns)rb   rH   r>   r?   r@   rA   msgrG   column_namescount_numpymultiprocessing	pool_sizepoolnamedata_seriesspydfs    `  ``           rI   rv   rv   L   sH    &'""t3d333RCS/!*01&3TY&1%3TYY[;K&"L Dz   
 {{}
 
 !,,.	$**//	:d( HH!"
 !%TZZ\ 2
D ;0 $ %	
 % II&**40' b % 	 	
 )!1'	
 fh
 DD 	 
 &kSWXK{#DDKKMT2B2I2I2K-LL",&
 Kk 2@ ;: % #!%5! +(- 	

sC   H)H% .AH/H% 	;I#I
H"H% "H% %I ?I )r>   
n_expectedrM   c               V  ^ SS jm S   S	U4S jjjnU" U5      nU (       d'  Ub  [        U5       Vs/ s H  nSU 3PM
     snO/ nXa4$ [        U [        5      (       a%  [        U 5      n[        U R	                  5       5      n Ob/ n[        U 5       HQ  u  pX[        U[        5      (       a!  U(       + =(       a    X;  n	U	(       a  SU 3OUnOUS   nUR                  U5        MS     Ub  [        U5      U:w  a  Sn
[        U
5      eU(       a%  [        Xs5       VVs0 s H  u  pUc  M
  X_M     snnOSn0 nU  HI  n[        U[        5      (       a  M  Uu  pUc  M#  T" U5      nU(       a  UR                  X5      OUnXU'   MK     U(       a  UR                  U5        X}4$ s  snf s  snnf )
z
Unpack column names and create dtype lookup.

Works for any (name, dtype) pairs or schema dict input,
overriding any inferred dtypes with explicit dtypes if supplied.
c                :    [        U SS9(       a  U $ [        U 5      $ )z1Parse non-Polars data types as Polars data types.T)include_unknown)r-   r.   )rU   s    rI   _normalize_dtype(_unpack_schema.<locals>._normalize_dtype   s    5$7L#E**ra   Nc                r   > U c  0 $ U R                  5        VVs0 s H  u  pUT" U5      _M     snn$ s  snnf )zCParse schema overrides as a dictionary of name to Polars data type.)rt   )r>   r   rU   r   s      rI   _parse_schema_overrides/_unpack_schema.<locals>._parse_schema_overrides   sK     #I >N=S=S=U
=UkdD"5))=U
 	
 
s   3column_r   z)data does not match the number of columns)rU   r   returnr:   rD   )r>   SchemaDict | Noner   zdict[str, PolarsDataType])rangerP   r   rk   rt   	enumeratestrappendrS   r1   r   rw   update)rH   r>   r   rM   r   ird   r~   rG   unnamedr}   r   lookupcolumn_dtypesrU   r   s                  @rI   ri   ri      s   + /3	
+	
	"	
 	
 //?@ :D:PE*$56$5qwqc]$56VX 	 (( &'"""&v,flln%'FA#s##!'Ac&A'.smC!f$ ( #l"3z"A9o  )D	
D	 CID	
   02Mc3=$U+E)/vzz$%T#d  -.&&e 70	
s   F 	F%(F%)re   c               n  ^ Uc  U $ U (       d/  U Vs/ s H!  n[         R                  " US9R                  PM#     sn$ [        U 5      [        U5      :w  a&  S[        U5       S[        U 5       S3n[	        U5      eU(       aQ  U  Vs0 s H  oUR                  5       U_M     snm[        U4S jU 5       5      (       a  U Vs/ s H  nTU   PM
     sn$ [        U5       HD  u  psX0U   R                  5       :w  d  M  X   R                  5       X'   X   R                  U5        MF     U $ s  snf s  snf s  snf )z*Rename data according to columns argument.)r   zdimensions of columns arg () must match data dimensions ()c              3  ,   >#    U  H	  oT;   v   M     g 7frD   rE   )rF   rG   
series_maps     rI   rJ   &_handle_columns_arg.<locals>.<genexpr>  s     6gsz!grL   )
r]   r7   rx   rS   rh   r   rg   r   clonerename)	rb   rd   re   cr}   r   rG   r   r   s	           @rI   rz   rz     s    .56g		q!$$g66	Tc'l	"+CL>9WX[\`XaWbbcdo+/04affhk40
6g666/67wJsOw77'"QgmmoDGGNN1 #
 K 7 17s   (D(D-D2r?   c               :   U R                  5       U R                  5       pe[        U=(       d    UUS9u  p/ nX:w  a=  [        U5      [        U5      :  a  XS[        U5       :X  a  UnOU R	                  U5        / n	[        U5       GH~  u  pUR                  U5      nXj   nU[        s=:X  a  U:w  aF  O  OCU	R                  [        R                  " U5      R                  [        US9R                  5        Mr  U[        s=:X  a  U:w  aA  O  O>U	R                  [        R                  " U5      R                  XS9R                  5        M  U(       a\  UR                  U5      =n(       aD  X:w  a?  U	R                  [        R                  " U5      R                  XS9R                  5        GM'  Uc  GM-  U[        :w  d  GM:  X:w  d  GMB  U	R                  [        R                  " U5      R                  XS9R                  5        GM     U	(       d  U(       a  U R                  5       nU	(       a  UR!                  U	5      nU(       a@  UR#                  U Vs/ s H#  n[        R                  " U5      R                  PM%     sn5      nUR%                  SSS9n U $ s  snf )zGApply 'columns' param *after* PyDataFrame creation (if no alternative).r>   Nr   z	in-memory)enginelambda_post_opt)rd   r{   ri   rS   set_column_namesr   rw   r(   r   FrG   cast_pyexprr)   r,   lazywith_columnsselectcollect)r   rd   structsr>   r?   pydf_columnspydf_dtypesr{   column_subsetcolumn_castsr   rG   rU   
pydf_dtypestructpyldfs                   rI   r|   r|   (  s    !%+$		 L4DOG  "Mw<#l++#g,;W0W#M!!'*LG$

3 ^
K-:-c
F K S STd(j(c
 E M MNGKK$44&4&:Nc
 F N NO5G#38Kc
 E M MN % }		&&|4ELL!N!%%*"4"4!NOE}}K}FK "Os   *J)r>   r?   orderr@   c                  0 nU (       Ga  [        S U R                  5        5       5      (       a  Sn[        U5      eU=(       d    0 n[        XUS9n [	        S U R                  5        5       5      nUS:  GaB  U R                  5        GH,  u  pUR                  U	5      n[        U
[        5      (       a  U[        :w  a  [        R                  " XS9nUR                  S:X  a  US:  a  [        S UR                  R                  5        5       5      (       a]  U
R                  5        VVs0 s H  u  pXU   R                  XS-
  S9_M     nnn[        R                  " U5      R!                  U	5      nOUR!                  U	5      nUXY'   GM  [        U
[        R"                  5      (       aO  XR$                  :w  a  U
R'                  U	5      OU
nU(       a  UUR(                  :w  a  UR+                  XS9nUXY'   GMr  [-        U
5      c  [/        U
5      (       a  [        R"                  " U	U
UUUS	9XY'   GM  U
b9  [        U
[0        [2        [4        [6        [8        [:        [<        [>        45      (       a*  [@        RB                  " XUS
S9RE                  U	5      XY'   GM  [        R"                  " X/U-  XS9XY'   GM/     O[        S U R                  5        5       5      (       aA  U R                  5        H,  u  p[        R"                  " XUR                  U	5      US9XY'   M.     Oy[        S U R                  5        5       5      (       aT  U R                  5        H@  u  p[        R"                  " U	[/        U
5      (       a  U
OU
/UR                  U	5      US9XY'   MB     U(       a2  [G        U5      U:w  a#  U Vs0 s H  nUURI                  U5      _M     sn$ U$ s  snnf s  snf )zCExpand any scalar values in dict data (propagate literal as array).c              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7frD   )rP   r]   ExprrF   rX   s     rI   rJ   &_expand_dict_values.<locals>.<genexpr>_  s     A=Cz#rww''=s   ')zpassing Expr objects to the DataFrame constructor is not supported

Hint: Try evaluating the expression first using `select`, or if you meant to create an Object column containing expressions, pass a list of Expr objects instead.r   c              3  J   #    U  H  n[        U5      =(       d    S v   M     g7fr   Nr$   r   s     rI   rJ   r   j  s     Dms))m   !#r   r[   c              3  J   #    U  H  oR                  5       (       + v   M     g 7frD   )	is_nested)rF   ds     rI   rJ   r   s  s     O;NaKKM 1 1;Nr   )nr   rm   rU   r?   r@   T)rU   eager)r   rm   rU   r?   c              3  >   #    U  H  n[        U5      S :H  v   M     g7fr   r   r   s     rI   rJ   r     s     =}&+"}s   )rm   rU   r?   c              3  <   #    U  H  n[        U5      S L v   M     g 7frD   r   r   s     rI   rJ   r     s     @-3&+%-s   )%anyrm   	TypeError_expand_dict_datamaxrt   rw   rP   rq   r+   r]   r6   heightrg   rH   extend_constant	to_structr7   r   r   rU   r   r$   r#   rO   floatr   boolr   r   r	   r
   r   repeataliasrk   pop)rb   r>   r?   r   r@   updated_datar}   r{   	array_lenr   rX   rU   vdfnmvs_valsstr   rG   s                      rI   ry   ry   T  s8    LA4;;=AAA8  C. !'R f=DdkkmDD	q=!ZZ\	

4(c4((Uf_,,s:C

a%MO3::;L;L;NOOO *-")4 B 7 7!m 7 MM)4  "  \\&1;;DA ]]40)+L&RYY//,0HH,<

4(#A!''!1FF5F8)*L&C[,c0B0B)+!"#%$/*L& [J#uc4xyQ% % *+e4*eDk !& *,!%)*;5*L&O *V =t{{}===!ZZ\	%'YYFJJt,<V&" *
 @$++-@@@!ZZ\	%'YY#0#5#5CC5 **T*!	&" * l#u,6;<es\%%c**e<<e"b =s   +!O4Oc                   0 nU R                  5        H>  u  pE[        U5      (       a%  [        R                  " XEUR	                  U5      US9OUX4'   M@     U$ )zs
Expand any unsized generators/iterators.

(Note that `range` is sized, and will take a fast-path on Series init).
r   )rt   r#   r]   r7   rw   )rb   r{   r?   expanded_datar   rX   s         rI   r   r     sV     MZZ\	 S!! IIdD!1&A 	 " ra   )r>   r?   orientinfer_schema_lengthr@   c               V    U (       d
  [        0 XS9$ [        [        U 5      U UUUUUUS9$ )z(Construct a PyDataFrame from a sequence.)rH   r>   rb   rH   r>   r?   r   r   r@   )rv   _sequence_to_pydf_dispatcherr   r   s          rI   sequence_to_pydfr     s>     BvQQ'4 )/	 	ra   )r?   r@   c               x   UUUUUUUS.nSn	[        U [        5      (       a*  [        n
U Vs/ s H  n[        U5      PM     nnUS   n Sn	GO9[        U [        R
                  5      (       a  [        n
GO[        U 5      (       a&  [        U [        R                  5      (       a  [        n
O[        U 5      (       aE  [        U [        R
                  [        R                  [        R                  45      (       a  [        n
O[         R"                  " U 5      (       a  [$        n
Oe['        U 5      (       a  [(        n
ON[+        U 5      (       a  [,        n
O7[        U [.        5      (       a  [        U [0        5      (       d  [        n
O[2        n
U	(       a  [4        R7                  [9        U 5      U
5        XS'   U
" S0 UD6$ s  snf )Nr   Tr   Ffirst_elementrE   )rP   r   _sequence_of_sequence_to_pydfrk   r]   r7   _sequence_of_series_to_pydfr   rQ   rR   _sequence_of_numpy_to_pydfr   pdIndexDatetimeIndex_sequence_of_pandas_to_pydfr   is_dataclass _sequence_of_dataclasses_to_pydfr   $_sequence_of_pydantic_models_to_pydfr    _sequence_of_tuple_to_pydfr   r   _sequence_of_elements_to_pydfr   registertype)r   rb   rH   r>   r?   r   r   r@   common_paramsregister_with_singledispatchto_pydfrows               rI   r   r     s\   $ ,2"M $( -++/%)*TcS	T*Q',$	M299	-	--	-	(	(Zrzz-R-R,	=	)	)j		288R-=-=>/ / .		!	!-	0	02	=	)	)6	=	)	),	M8	,	,Zs5S5S//#$--d=.A7K%2/"#]##C +s   F7r\   c               >   Uc]  Uc  SnOW[        U5      [        U 5      :H  =(       a    [        U5      [        U5      :g  nU(       a  SOSnU(       a  [        S[        5        US:X  Ga   [        X#[        U 5      S9u  pU(       a  [	        X95      O0 n
SnU
R                  5        Hl  u  pU[        [        4;   a
  [        X'   M  U(       a  M(  UR                  5       [        [        4;   d  MH  [        [        XS 5      R                  [        5      nMn     U(       a4  U Vs/ s H  n[!        U5      PM     nn["        R$                  " US S UUS9nO["        R&                  " UU
=(       d    S US9nU	(       d  U(       a  [)        UXUS9nU$ US:X  au  [        X#[        U5      S9u  p[+        U5       VVs/ s H=  u  nn[,        R.                  " U	U   UUR1                  U	U   5      UUS	9R2                  PM?     nnn[#        U5      $ S
U< 3n[5        U5      es  snf s  snnf )NrG   r   zRow orientation inferred during DataFrame construction. Explicitly specify the orientation by passing `orient="row"` to silence this warning.r>   r   FrH   r>   r?   r   rH   r   rf   rc   2`orient` must be one of {'col', 'row', None}, got )rS   r%   r0   ri   _include_unknownsrt   r(   r)   r*   	base_typer,   r+   r   getattr	__class__r   r!   r3   
from_dicts	from_rowsr|   r   r]   r7   rw   rx   rh   )r   rb   rH   r>   r?   r   r   r@   is_row_orientedr~   local_schema_overrideunpack_nestedrG   tpr   dictsr   r   elementr   r}   s                        rI   r   r     s+    ~>F  #6{c-.@@ Fs4y(  .U5Fm* )7#mBT*
&
   .= 	 ,224GCk4((-3%*"]7F:K(K /M5??!	 5 +/04aYq\4E0))!%$7D ((,4$7D
 +&lfD 	5)7#d)*
& (o	'
 .
7 IIQ&**<?;' b . 	 	'
 ;'' EVJOoM 10	'
s   H1AHc                  U Vs/ s H  ofR                   PM     nn[        U=(       d    UU[        U5      S9u  p/ n	[        U5       H}  u  pUR                   (       d  UR	                  X   5      nUR                  X   5      nU(       a  XR                  :w  a  UR                  XSS9nU	R                  UR                  5        M     [        XS9n	[        U	5      $ s  snf )Nr   Fr?   wrap_numericalrd   )r   ri   rS   r   r   rw   rU   r   r   rx   rz   r3   )r   rb   rH   r>   r?   kwargsr   series_namesr~   r   r   	new_dtypes               rI   r   r   v  s     %))DqFFDL)%3,)t9&"L
 #%K$vv(A$((9	gg-yFA144    &kHK{##! *s   Cc               t   [        U R                  5      (       d  [        U 5      (       ay  Ucq  U R                  n[	        U SS 5      nU(       aQ  [        U5      [        U5      :X  a9  U R                  R                  5        V	V
s/ s H  u  pU	[        U
5      4PM     nn	n
Uc  Sn[        U UUUUUUUS9$ s  sn
n	f )N__annotations__r   r   )
r   r  r    _fieldsr  rS   r  rt   r/   r   )r   rb   rH   r>   r?   r   r   r@   r   r   r	  s              rI   r   r     s     ],,--1B=1Q1Q>"**F!-1BDIKs;/3v;> %2$A$A$G$G$I$I /34$I   >F ))/	 	s   B4c                   [        X#S9u  psU(       a  [        X7=(       d    [        U5      5      OS n[        R                  " UUUUUS9n	U(       a
  [        XX4S9n	U	$ )Nr   )r?   r   )rd   r>   r?   )ri   r   rk   r3   r  r|   )
r   rb   rH   r>   r?   r   r  r~   dicts_schemar   s
             rI   _sequence_of_dict_to_pydfr    st     &4&"L
  	*,RDAQ<RS  !!/D "9I
 Kra   c                   [        X#SS9u  pc[        R                  " US   UUR                  US   5      US9R                  /n[        XvS9n[        U5      $ )Nr[   r   r   r   r  )ri   r]   r7   rw   rx   rz   r3   )r   rb   rH   r>   r?   r  r~   r   s           rI   r   r     sh     &4a&"L 			O  a1		

 "#K &kHK{##ra   c                R    U R                   S:X  a  [        U 40 UD6$ [        U 40 UD6$ )Nr[   )ndimr   r   )r   r  s     rI   r   r     s2     Q,]EfEE,]EfEEra   c               d   Uc  / nO[        X#SS9u  pcU=(       d    0 n/ n[        U5       Hx  u  pU(       a  Xh   OU	R                  n
[        R                  " XS9nUR                  U
5      nUb#  XR                  5       :w  a  UR                  XSS9nUR                  U5        Mz     [        U5      $ )Nr[   r   )r   rm   Fr  )
ri   r   r   plcpandas_to_pyseriesrw   rU   r   r   r3   )r   rb   rH   r>   r?   r  r~   r   r   r   r   pyseriesrU   s                rI   r   r     s     ~"$)7!*
& (-2"$K$".|AFF))t> $$T*..*:!:}}U%}PH8$   {##ra   c                  SSK JnJn  [        XUSS9u  n	n
nnU	(       a0  U Vs/ s H
  o" U5      PM     nn[        R
                  " USSUUS9nO6U Vs/ s H
  o" U5      PM     nn[        R                  " UU=(       d    SUS9nU(       aH  UR                  5        VVs0 s H   u  nn[        U[        5      (       d  M  UU_M"     nnn[        XUX5S9nU$ s  snf s  snf s  snnf )z-Initialize DataFrame from Python dataclasses.r   )asdictastupleN)model_fieldsr   r   r   )r   r!  r"  $_establish_dataclass_or_model_schemar3   r  r  rt   rP   r+   r|   )r   rb   rH   r>   r   r?   r  r!  r"  r  r~   	overridesmdr
  r   dcrowsr   r	  r   s                       rI   r   r     s     , 	-/d	 &*+dd+%%! 3
 '++dd+$$$ 3
 &/oo&7R&7UQ:b&;Q51b5&7R")9
 K- , , Ss   CC C! C!c               f   SSK n[        UR                  5      S:  n[        U(       a  U R                  OU R
                  R                  5      n	[        XX95      u  n
nnnU
(       a_  U(       a   U Vs/ s H  oR                  5       PM     snOU Vs/ s H  oR                  SS9PM     snn[        R                  " USSUUS9nO[        U	5      S:  a@  [        U	6 nU Vs/ s H  nU" UR                  5      PM     nn[        R                  " UXS9nO3U Vs/ s H  oR                  PM     nn[        R                  " UUSUUS9nU(       aH  UR!                  5        VVs0 s H   u  nn[#        U[$        5      (       d  M  UU_M"     nnn['        XUX5S	9nU$ s  snf s  snf s  snf s  snf s  snnf )
z1Initialise DataFrame from pydantic model objects.r   N)   r   python)moder   2   r   r   )pydanticr&   __version__rk   
__fields__r  r#  r$  rq   
model_dumpr3   r  rS   r   __dict__r  rt   rP   r+   r|   )r   rb   rH   r>   r   r?   r  r.  old_pydanticr#  r  r~   r%  r&  r
  r   
get_valuesr(  r   r	  r   s                        rI   r   r   M  s     !5!56?L 	  $$11L 	-/	 
  "&&2WWY&9=>2--X-.> 	
 %%! 3
 
\	R	.
267$B
2;;'$7$$

 (,,tt,%%! 3
 &/oo&7R&7UQ:b&;Q51b5&7R")9
 KI '> 8 - Ss$   2FF!F#F("F-F-c                   SSK Jn  SnU(       a2  [        XS9u  pbU Vs0 s H  owUR                  U[        5      _M     nnO/ n[        U R                  5      R                  5        VV	s0 s H5  u  pyU(       a  Xs;   d  M  OUS:w  d  M  U[        U	5      =(       d    [        _M7     nnn	U(       a  UR                  U5        OHU(       d?  [        U" U 5      5      n
UR                  5        VV	s0 s H  u  pX;   d  M  X_M     sn	n=p(OUnUR                  5        Hy  u  pyU	[        [        4;   a
  [        X'   M  U(       a  M(  U	R                  5       [        [        4;   d  MH  [!        [#        XS5      U(       a  [$        O[         R&                  5      nM{     U(       a:  [)        U5      [)        U5      :X  a"  [+        [-        X8R/                  5       5      5      nXVX(4$ s  snf s  sn	nf s  sn	nf )zLShared utility code for establishing dataclasses/pydantic model cols/schema.r   )r!  Fr   	__slots__N)r   r!  ri   rw   r,   r"   r  rt   r/   r   setr(   r)   r*   r  r+   r   r  r   r   rS   rq   rr   rm   )r   rH   r>   r#  r!  r  r~   rG   r%  r	  	dc_fieldsr   s               rI   r$  r$    s    #M)7*
& IUU*..sG<<	U	 .m.E.EFLLN
N)5$ 6$C;<N 6C&r*5g5N 	 

 -.F=12I%.__%6,%662"/%6, y  )??$+t$$#INBLLNw6G$G+D1%1!{7O7OM	 % L)S^;\+;+;+=>?	(8CC= V
,s#    G*G! G!	G!-G'<G'c                t    U Vs0 s H&  nX R                  U[        5      =(       d    [        _M(     sn$ s  snf )z7Complete partial schema dict by including Unknown type.)rw   r,   )rH   colsrG   s      rI   r   r     s<     C 	jjg&1'1  s   -5)r>   r?   r   
chunk_sizer   rechunkc               2  ^^ Un/ n	0 n
Ub  [        XS9u  pOU(       a  [        XS9u  p[        U [        5      (       d  [        U 5      n US:X  a  U	(       a:  U(       a3  [	        U	5       VVs0 s H  u  pXR                  U[        5      _M     n
nn[        R                  " [	        U 5       VVs0 s H9  u  pU	(       a  X   OSU 3[        R                  " UU
R                  U5      TS9_M;     snn5      R                  $ SUU4S jjnSnSnU(       a  UnOU	(       a  U[        U	5      -  nOSnSnTc  SO[        TU=(       d    S	5      n [        [        X5      5      nU(       d  OoU" UU5      nUcL  UnU(       d#  [        UR                  R!                  5       5      nUU:w  a  UR"                  =nS:  a  UU-  =nnOUR%                  US
S9  US-  nM  Uc	  U" / U5      nUS:  a  U(       a  UR'                  5       nUR                  $ s  snnf s  snnf )z3Construct a PyDataFrame from an iterable/generator.Nr   rG   r   )rU   r?   c                4   > [         R                  " U UTSTS9$ )Nr   )rb   rH   r?   r   r   )r]   r6   )rm   rH   r   r?   s     rI   to_frame_chunk(iterable_to_pydf.<locals>.to_frame_chunk  s#    || 3
 	
ra   r   i@B r=   T)in_placer[   )rm   z	list[Any]rH   SchemaDefinition | Noner   r6   )ri   rP   r   iterr   rw   r,   r]   r6   r7   _dfrS   r   rk   r   rH   rt   widthvstackr<  )rb   rH   r>   r?   r   r;  r   r<  original_schemar~   dtypes_by_idx_idxrG   coldatar?  n_chunksn_chunk_elemsadaptive_chunk_sizedfrm   frame_chunk	n_columnss      `  `                rI   iterable_to_pydfrR    s:    O L/1M)7*
&& 
,VWdI&&Dz, !*, 7 7HC ))#w77 7  
 || %.dO %4LC '3"'#"))'++C0!K 
 %4	
 #		
 
 HM(	+s</@@"B & 	$&9&ATB 
 fT./$V_=:B""&ryy'8"900!#)IQ.7D	7QQJ!4IIkDI1MH   
zB0!|ZZ\66Ms   ,"H/A H
c                  U R                    Vs1 s H  n[        U5      iM     nnU(       a0  U R                  R                   Vs1 s H  n[        U5      iM     snO	[	        5       n[        U5      [        U R                   5      :  nU(       a+  [        U5      [        U R                  R                  5      :  OSnU(       d  U(       a  Sn[        U5      eX5-  n	[        U	5      S:  a  Sn[        U5      egs  snf s  snf )z:Check pandas dataframe columns can be converted to polars.Fz|Pandas dataframe contains non-unique indices and/or column names. Polars dataframes require unique string names for columns.r   z1Pandas indices and column names must not overlap.N)rd   r   indexnamesr7  rS   rh   )
rb   include_indexrG   stringified_colsrJ  stringified_indexnon_unique_colsnon_unique_indicesr}   overlapping_cols_and_indicess
             rI   _check_pandas_columnsr\  )  s    6:ll!Cls#c(l!C2?TZZ--.-cS-.SU    01C4EEO<I	#djj&6&6"7	7u  ,I 	 o-=-Q 
'(1,Ao -# "D.s   C8C=)r>   r?   r<  r@   rV  c               $  ^  [        T US9  U=(       a    [        T 5      (       + nU(       d|  [        U 4S jT R                   5       5      (       aX  [        R
                  " T R                   Vs0 s H   n[        U5      T U   R                  5       _M"     snUUUUS9R                  $ [        (       d  Sn	[        U	5      e0 n
T R                  S   nU(       aX  T R                  R                   H>  n[        R                  " T R                  R!                  U5      UUS9U
[        U5      '   M@     T R#                  5        H&  u  p[        R                  " XUS9U
[        U5      '   M(     [$        R&                  " U
5      n[)        UUUUUS9$ s  snf )z0Construct a PyDataFrame from a pandas DataFrame.)rV  c              3  @   >#    U  H  n[        TU   5      v   M     g 7frD   )r   )rF   rG   rb   s     rI   rJ   !pandas_to_pydf.<locals>.<genexpr>O  s!      !COC,T#Y77<s   )rH   r?   r>   r@   zpyarrow is required for converting a pandas dataframe to Polars, unless each of its columns is a simple numpy-backed one (e.g. 'int64', 'bool', 'float32' - not 'Int64')r   )r@   length)rH   r>   r?   r<  )r\  _pandas_has_default_indexrg   rd   r]   r6   r   to_numpyrD  r   ImportErrorshaperT  rU  r  pandas_series_to_arrowget_level_valuesrt   patablearrow_to_pydf)rb   rH   r>   r?   r<  r@   rV  convert_indexrG   r}   
arrow_dictr`  idxcolcol_idxcol_dataarrow_tables   `               rI   pandas_to_pydfrp  A  su    $m<!I*CD*I&IMS !CG<<!   ||7;||D|SXtCy))++|D-#
 #	 > 	
 #JZZ]Fjj&&F&)&@&@ 

++F3''Js6{# ' "ZZ\#&#=#=f$

3w<  *
 ((:&K) C Es   .'Fc                   SSK Jn  U R                  R                  n[	        U5      S:  d
  US/S/4;  a  gU R                  R                  U" S[	        U 5      SS95      (       a  g[        U R                  R                  5      R                  S	5      =(       aH    U R                  R                  5       [        R                  " [	        U 5      5      :H  R                  5       $ )
zFIdentify if the pandas frame only has a default (or equivalent) index.r   )
RangeIndexr[   N F)startstopstepTrO   )pandas.core.indexes.rangerr  rT  rU  rS   equalsr   rU   
startswithsort_valuesrQ   arangerg   )rO  rr  
index_colss      rI   ra  ra  ~  s    4J
:j$">	!#b'B	C	C
 **51 E%%'299SW+==BBD	
ra   )r>   r?   r<  c                  [        U=(       d    U R                  R                  US9u  pR XPR                  R                  :w  a  U R                  U5      n [        U [        R                  5      (       a  U /nOU R                  5       n[        R                  " XR                  5      n	U(       a  U	R                  5       n	Ub  [        U	UUUS9n	U	$ ! [        R
                   a  nSn[        U5      UeSnAff = f)z;Construct a PyDataFrame from an Arrow Table or RecordBatch.r   z4dimensions of columns arg must match data dimensionsNrf   )ri   rH   rU  rename_columnsrg  ArrowInvalidrh   rP   RecordBatch
to_batchesr3   from_arrow_record_batchesr<  r|   )
rb   rH   r>   r?   r<  r~   er}   batchesr   s
             rI   ri  ri    s     &4		$4;;$$8H&"L%;;,,,&&|4D $''&//# 00++FD||~#"-	
 K1 ?? %Do1$%s   *C C7$C22C7)r>   r   r?   r@   c                  U R                   n[        U5      S:H  nU R                  R                  bO  Su  p[	        U R                  R                  5      n	[        U	5      n
U	 H  nX   R                   nM     U(       d  U	nOS/ pUS:X  a  Sn
O[        U5      S:X  a  Sn
O[        U5      S:X  a  Uc  Uc  US   n
SnOUcS  UbP  [        U5      nXS   :X  a  XS   :w  a  S	nUS   n
OoU R
                  S
   (       a  US   US   :X  a  S	nUn
OJSnUS   n
OBUS:X  a  US   n
O6US	:X  a  US   n
O*SU< 3n[        U5      eUS:X  a  SnOSU 3n[        U5      eUb6  [        U5      U
:w  a'  [        U5      =nS:w  a  SU SU
 S3n[        U5      eUn
[        XU
S9u  pU(       aT  [        X5       VVs/ s H:  u  nn[        R                  " UU U   UR                  U5      UUS9R                  PM<     nnnGO9US:X  a
  U
S:X  a  / nGO)[        U5      S:X  a9  [        R                  " US   U UR                  US   5      UUS9R                  /nOUS:X  ap  [        U
5       Vs/ s HY  n[        R                  " UU   U(       a  U
S:X  a  US   S:  a  U OU SS2U4   UR                  UU   5      UUS9R                  PM[     nnOk[        U
5       Vs/ s HU  n[        R                  " UU   U(       a  U
S:X  a  US   S:  a  U OU U   UR                  UU   5      UUS9R                  PMW     nn[        UUS9n[        U5      $ s  snnf s  snf s  snf )zMConstruct a PyDataFrame from a NumPy ndarray (including structured ndarrays).r*  N)TrG   F)r   r   r[   r   rG   F_CONTIGUOUSr   rE   z3cannot create DataFrame from zero-dimensional arrayzJcannot create DataFrame from array with more than two dimensions; shape = zdimensions of `schema` (r   r   r   r   r  )rd  rS   rU   rU  rk   flagsrh   ri   rr   r]   r7   rw   rx   r   rz   r3   )rb   rH   r>   r   r?   r@   rd  two_dstructured_arrayrecord_namesrQ  r   n_schema_colsr}   r~   series_namerecord_namer   r   s                      rI   numpy_to_pydfr    s    JJEJ!OEzz##. DJJ,,-%	BHNNE !F */,D=IZ1_IZ1_~&.!!H	F$6 !$F !H,(1J"F %aIZZ/E!Ha4H"F -I"F %aI5!!H	5!!H	LVJW o%{KbchbijS/!c&kY6 [(MQ.,]O;YZcYddefCS/!!	%3i&"L
  -0,K	
 -L([ II K(&**;7' b -L 	 	
 
$9>	UqII!!_&**<?;' b
 U? y) *A 		%a !Y!^a1 !!Q$Z*..|A?! +
 "
 *  K2 y) *A 		%a %)q.U1X\tTUw*..|A?! + " *   &k<HK{##m	
2s   .AMA MAMc                  Uc  Uc  [        U R                  /5      $ U R                  /nU Vs/ s H  oUR                  5       PM     nn[        U=(       d    UUSS9u  prU(       aG  [	        [        UR                  5       5      5      nXR                  :w  a  US   R                  XSS9US'   [        XGS9n[        U5      $ s  snf )z-Construct a PyDataFrame from a Polars Series.r[   r   r   Fr  r  )
r3   rx   r   ri   nextrC  rm   rU   r   rz   )	rb   rH   r>   r?   r   r   r  r~   r  s	            rI   series_to_pydfr  B  s     ~*2DGG9%%77)K%01[668[K1%3+0@Q&"L .55789	

"(^00 1 KN &kHK{## 2s   Crf   c                  Uc  Uc  U R                   R                  5       $ U  Vs0 s H  oDR                  UR                  _M     nn[	        U=(       d    U R
                  US9u  pbU(       aC  U R                  nUR                  5        H#  u  pXU   :w  d  M  XX   R                  XSS9XX'   M%     [        [        UR                  5       5      US9n
[        U
5      $ s  snf )z:Construct a PyDataFrame from an existing Polars DataFrame.r   Fr  r  )rD  r   r   rx   ri   rd   rH   rt   r   rz   rk   rm   r3   )rb   rH   r>   r?   r   r   r~   existing_schemar   r  series_colss              rI   dataframe_to_pydfr  ]  s     ~*2xx~~)-.A66144<K.%3$,,1A&"L ++/557ODD11$/$5$:$:U %; %!  8 &d;+=+=+?&@,WK{## /s    CrD   )rb   HMapping[str, Sequence[object] | Mapping[str, Sequence[object]] | Series]rH   rB  r>   r   r?   r   r@   r   rA   r   r   r3   )
rH   rB  r>   r   r   
int | NonerM   zIterable[str] | Noner   ztuple[list[str], SchemaDict])rb   list[PySeries]rd   Sequence[str] | Nonere   r   r   r  )NN)r   r3   rd   rB  r   zdict[str, Struct] | Noner>   r   r?   r   r   r3   )rb   r  r>   r   r?   r   r   r  r@   r   r   zdict[str, Series])rb   r  r{   r<   r?   r   r   r  )rb   Sequence[Any]rH   rB  r>   r   r?   r   r   Orientation | Noner   r  r@   r   r   r3   )r   r   rb   r  rH   rB  r>   r   r?   r   r   r  r   r  r@   r   r   r3   )r   z$Sequence[Any] | np.ndarray[Any, Any]rb   r  rH   rB  r>   r   r?   r   r   r  r   r  r@   r   r   r3   )r   r7   rb   r  rH   rB  r>   r   r?   r   r  r   r   r3   )r   ztuple[Any, ...]rb   r  rH   rB  r>   r   r?   r   r   r  r   r  r@   r   r   r3   )r   zdict[str, Any]rb   r  rH   rB  r>   r   r?   r   r   r  r  r   r   r3   )r   r   rb   r  rH   rB  r>   r   r?   r   r  r   r   r3   )r   np.ndarray[Any, Any]r  r   r   r3   )r   z1pd.Series[Any] | pd.Index[Any] | pd.DatetimeIndexrb   r  rH   rB  r>   r   r?   r   r  r   r   r3   )r   r   rb   r  rH   rB  r>   r   r   r  r?   r   r  r   r   r3   )
r   r   rH   rB  r>   r   r#  zlist[str] | Noner   z.tuple[bool, list[str], SchemaDict, SchemaDict])rH   r<   r:  zSequence[str]r   z#MutableMapping[str, PolarsDataType])rb   zIterable[Any]rH   rB  r>   r   r?   r   r   r  r;  r  r   r  r<  r   r   r3   )rb   pd.DataFramerV  r   r   None)rb   r  rH   rB  r>   r   r?   r   r<  r   r@   r   rV  r   r   r3   )rO  r  r   r   )rb   zpa.Table | pa.RecordBatchrH   rB  r>   r   r?   r   r<  r   r   r3   )rb   r  rH   rB  r>   r   r   r  r?   r   r@   r   r   r3   )
rb   r7   rH   rB  r>   r   r?   r   r   r3   )
rb   r6   rH   rB  r>   r   r?   r   r   r3   )x
__future__r   
contextlibcollections.abcr   r   r   r   r   r	   r
   	functoolsr   	itertoolsr   r   operatorr   typingr   r   r   polars._reexport	_reexportr]   polars._utils.construction_utilsconstructionr  polarsr   r   polars._dependenciesr   r   r   r   r   r   rQ   r   r   r   rg   polars._utils.construction.utilsr   r   r   r   r   r    r!   r"   polars._utils.variousr#   r$   r%   r&   polars.datatypesr'   r(   r)   r*   r+   r,   r-   r.   r/   polars.exceptionsr0   r1   polars.metar2   suppressrc  polars._plrr3   r4   r5   r6   r7   r8   polars._typingr9   r:   r;   r<   rT   rv   ri   rz   r|   ry   r   r   r   r   rk   r   r   tupler   rq   r  r   r   r   r   r   r   r$  r   rR  r\  rp  ra  ri  r  r  r  rE   ra   rI   <module>r     s9	   "  8 8 4 4 $ )    ( ( !  - - .	 	 	 
 
 
 A (%' & 8($  &* "
 '+c +/ $c
Rc#c (	c
 c c c cR +/!)-W'#W' (W' 	W'
 'W' "W'x %) 	
! 	
 > )-*.	) )
)$) &) (	) ) )^ +/"&S
RS (S 	S
  S S St 	
R 	
 N. '+ +/!%&5
# (	
   $  4   ?$?$
?$ $?$
 (?$ ?$ ?$ $?$ ?$ ?$ ?$D &&t, V7V
V $V
 (V V V $V V V -Vr$$
$ $$
 ($ $ $ $8 &&u- """
" $"
 (" " " $" " " ."J &&w/&&t,!!!
! $!
 (! ! $! ! ! - 0!H &&s+$$
$ $$ (	$ $ $ $ ,$0F'FF F$D$
$ $$ (	$ $ $ $H ,,
, $, (	,
 $, , , ,^CC
C $C (	C
 $C C C CL,D,D#,D (,D #	,D
 4,D^+( '+Z +/!%!&5Z
Z#Z (	Z
 Z Z Z $Z Z Zz4 '+: +/:
:#: (	:
 : : : : :z
. '+' +/'
#'#' (	'
 ' ' 'X '+B$ +/!%B$
B$#B$ (	B$
 B$ B$ B$ B$N '+*.$
 $
$#$ ($
 $ $: '+$ +/$
$#$ (	$
 $ $G) &%s   
N**
N9