
    Lpj@                       % S SK Jr  S SKrS SKJr  S SKJrJrJr  S SK	r	S SK
Js  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rJrJrJrJrJrJr  S S	KJr  \(       a{  S S
K 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)r*S SK+r,S SK-J.r.  S SK/J0r0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7  S SK8J9r9  S SK:J;r;  S SKJ<r<  S SK=J>r>  S SK?J@r@  S SKAJBrC  S SKDJErEJFrFJGrG  SrHS\IS'    " S S\S   \5      rJg)     )annotationsN)BytesIO)TYPE_CHECKINGAnycastIbisExpr)evaluate_exprslitnative_to_narwhals_dtype)SQLLazyFrame)ImplementationValidateBackendVersionVersiongenerate_temporary_column_namenot_implementedparse_columns_to_dropto_pyarrow_table)InvalidOperationError)IterableIteratorMappingSequence)Path)
ModuleType)	TypeAlias)Binary)SelfTypeIs)CompliantDataFrameAnyIbisGroupByIbisNamespaceIbisInterchangeSeries)_EagerAllowedImpl)_LimitedContext)	LazyFrame)DType	DataFrame)AsofJoinStrategyJoinStrategyUniqueKeepStrategyz*Sequence[ir.BooleanColumn] | Sequence[str]r   JoinPredicatesc                     \ rS rSr\R
                  rSS.       S.S jjr\S/S j5       r	\
S0S j5       rS1S jrS2S jrS2S	 jrS3S
 jrS4S jrS5S jrS6S jr      S7S jrS8S jrS9S jrS:S jrS:S jrS;S jrS<S=S jjrS:S jrS>S jr\S?S j5       r\S@S j5       rSAS jrSBS jr SCS jr!SDS jr"      SES jr#SFS jr$\SGS  j5       r%            SHS! jr&                SIS" jr'        SJS# jr(S?S$ jr)        SKS% jr*SLS& jr+SMS' jr,SNS( jr-SOS) jr.          SPS* jr/SQS+ jr0SRS, jr1\2" 5       r3\2" 5       r4S-r5g)SIbisLazyFrame1   F)validate_backend_versionc               h    Xl         X l        S U l        S U l        U(       a  U R	                  5         g g N)_native_frame_version_cached_schema_cached_columns_validate_backend_version)selfdfversionr4   s       T/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_ibis/dataframe.py__init__IbisLazyFrame.__init__7   s3     (*7;15#**, $    c                6    [        U [        R                  5      $ r6   )
isinstanceirTable)objs    r?   
_is_nativeIbisLazyFrame._is_nativeA   s    #rxx((rB   c              "    U " XR                   S9$ Nr>   )r8   )clsdatacontexts      r?   from_nativeIbisLazyFrame.from_nativeE   s    4!1!122rB   c                    U R                   [        R                  L a  SSKJn  U" U SS9$ U R                   R                  U SS9$ )Nr   r+   interchange)levellazy)r8   r   V1narwhals.stable.v1r,   	lazyframe)r<   r,   s     r?   to_narwhalsIbisLazyFrame.to_narwhalsI   s<    ==GJJ&4T77}}&&t6&::rB   c                Z    U R                   [        R                  La  Sn[        U5      eU $ )Nz;__narwhals_dataframe__ is not implemented for IbisLazyFrame)r8   r   rV   AttributeError)r<   msgs     r?   __narwhals_dataframe__$IbisLazyFrame.__narwhals_dataframe__P   s'    ==

*OC %%rB   c                    U $ r6    r<   s    r?   __narwhals_lazyframe__$IbisLazyFrame.__narwhals_lazyframe__W   s    rB   c                    [         $ r6   )ibisrb   s    r?   __native_namespace__"IbisLazyFrame.__native_namespace__Z   s    rB   c                .    SSK Jn  U" U R                  S9$ )Nr   r#   rL   )narwhals._ibis.namespacer$   r8   )r<   r$   s     r?   __narwhals_namespace__$IbisLazyFrame.__narwhals_namespace__]   s    :T]]33rB   c                b    SSK Jn  U" U R                  R                  U5      U R                  S9$ )Nr   r%   rL   )narwhals._ibis.seriesr&   nativeselectr8   )r<   namer&   s      r?   
get_columnIbisLazyFrame.get_columnb   s%    ?$T[[%7%7%=t}}UUrB   c              #  T   #    U R                    H  nU R                  U   v   M     g 7fr6   )columnsro   )r<   rq   s     r?   _iter_columnsIbisLazyFrame._iter_columnsg   s"     LLD++d## !s   &(c                   Ub  U[         R                  L a:  SSKJn  U" [	        U R
                  R                  5       5      SU R                  SS9$ U[         R                  L a@  SSK	J
n  U" U R
                  R                  5       [         R                  SU R                  SS9$ U[         R                  L a0  SSKJn  U" U R
                  R                  5       SU R                  S9$ S	U 3n[!        U5      e)
Nr   )ArrowDataFrameT)r4   r>   validate_column_names)PandasLikeDataFrame)implementationr4   r>   rz   )PolarsDataFrame)r4   r>   zUnsupported `backend` value: )r   PYARROWnarwhals._arrow.dataframery   r   ro   
to_pyarrowr8   PANDASnarwhals._pandas_like.dataframer{   	to_pandasPOLARSnarwhals._polars.dataframer}   	to_polars
ValueError)r<   backendkwargsry   r{   r}   r]   s          r?   collectIbisLazyFrame.collectk   s     ?g)?)??@! !7!7!9:)-&*	  n+++K&%%'-44)-&*  n+++B"%%')-  .gY7orB   c                V    U R                  U R                  R                  U5      5      $ r6   )_with_nativero   head)r<   ns     r?   r   IbisLazyFrame.head   s"      !1!1!!455rB   c                R    U R                  U R                  R                  " U6 5      $ r6   )r   ro   rp   )r<   column_namess     r?   simple_selectIbisLazyFrame.simple_select   s"      !3!3\!BCCrB   c           
         [        U /UQ76  VVs/ s H   u  p#[        SUR                  U5      5      PM"     nnnU R                  U R                  R                  U5      5      $ s  snnf )Nz	ir.Scalar)r
   r   rq   r   ro   	aggregate)r<   exprsrq   val	selections        r?   r   IbisLazyFrame.aggregate   sf     ,D959
9	 chhtn-9 	 
   !6!6y!ABB	
s   'A$c                    [        U /UQ76  VVs/ s H  u  p#UR                  U5      PM     nnnU(       d  Sn[        U5      eU R                  R                  " U6 nU R                  U5      $ s  snnf )NzKAt least one expression must be provided to `select` with the Ibis backend.)r
   rq   r   ro   rp   r   )r<   r   rq   r   r   r]   ts          r?   rp   IbisLazyFrame.select   si    5CD5Q55QR5Q	SXXd^5Q	R_CS/!KK	*  ## Ss   A.c                  ^ [        XUS9mU4S jU R                   5       nU R                  U R                  R                  " U6 5      $ )Nstrictc              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7fr6   ra   ).0colcolumns_to_drops     r?   	<genexpr>%IbisLazyFrame.drop.<locals>.<genexpr>   s     OLS4NSSLs   		)r   ru   r   ro   rp   )r<   ru   r   r   r   s       @r?   dropIbisLazyFrame.drop   s=    /fMODLLO	  !3!3Y!?@@rB   Nc                &    Ub  Sn[        U5      eU $ )Nz,`backend` argument is not supported for Ibis)r   )r<   r   _r]   s       r?   rU   IbisLazyFrame.lazy   s    
 @CS/!rB   c                    [        [        U /UQ76 5      nU R                  U R                  R                  " S0 UD65      $ )Nra   )dictr
   r   ro   mutate)r<   r   new_columns_maps      r?   with_columnsIbisLazyFrame.with_columns   s9    ~d;U;<  !3!3!Fo!FGGrB   c                    [        SU" U 5      S   5      nU R                  U R                  R                  U5      5      $ )Nzir.BooleanValuer   )r   r   ro   filter)r<   	predicatemasks      r?   r   IbisLazyFrame.filter   s8    %yq'9:  !3!3D!9::rB   c           	         U R                   c`  U R                  R                  5       R                  R	                  5        VVs0 s H  u  pU[        X R                  5      _M     snnU l         U R                   $ s  snnf r6   )r9   ro   schemafieldsitemsr   r8   )r<   rq   dtypes      r?   r   IbisLazyFrame.schema   sp    &
 $(;;#5#5#7#>#>#D#D#F##FKD .ummDD#F#D """	#s   "A:c                    U R                   cF  U R                  b  [        U R                  5      O[        U R                  R
                  5      U l         U R                   $ r6   )r:   r9   listr   ro   ru   rb   s    r?   ru   IbisLazyFrame.columns   sR    ' &&2 T[[!$++--.  
 ###rB   c                6    U R                   R                  5       $ r6   )ro   r   rb   s    r?   r   IbisLazyFrame.to_pandas   s    {{$$&&rB   c                6    U R                   R                  5       $ r6   )ro   r   rb   s    r?   to_arrowIbisLazyFrame.to_arrow   s    {{%%''rB   c                6    U R                  U R                  US9$ rK   )	__class__ro   )r<   r>   s     r?   _with_versionIbisLazyFrame._with_version   s    ~~dkk7~;;rB   c                4    U R                  XR                  S9$ rK   )r   r8   )r<   r=   s     r?   r   IbisLazyFrame._with_native   s    ~~b--~88rB   c                   SSK Jn  U" XUS9$ )Nr   r!   )drop_null_keys)narwhals._ibis.group_byr"   )r<   keysr   r"   s       r?   group_byIbisLazyFrame.group_by   s     	84nEErB   c                h   ^ SU4S jjnU R                  U R                  R                  U5      5      $ )Nc                &   > TR                  X 5      $ r6   )get)r   mappings    r?   _rename%IbisLazyFrame.rename.<locals>._rename   s    ;;s((rB   )r   strreturnr   )r   ro   rename)r<   r   r   s    ` r?   r   IbisLazyFrame.rename   s*    	)   !3!3G!<==rB   c               z    [        U R                  5      R                  U5      nU(       a  U R                  " U6 $ U $ )zWIbis adds a suffix to the right table col, even when it matches the left during a join.)setru   intersectionr   )r=   ru   
duplicatess      r?   _join_drop_duplicate_columns*IbisLazyFrame._join_drop_duplicate_columns   s2     _11':
'1rww
#9r9rB   c                 ^ US:X  a  SOUnST-   nX:X  a)  U R                  UR                  R                  5       5      nUS:X  a5  U R                  R                  UR                  XgS9nU R                  U5      $ Uc   eUc   eU R	                  XU5      n	U R                  R                  UR                  XUS9nUS:X  a  U4S jU 5       n
U R                  X5      nS U	 5       n/ nU HW  nUR                  R                  nXR                  ;  d  M*  UR                  R                  U:w  d  MF  UR                  U5        MY     U(       a  UR                  " U6 nU R                  U5      $ )	Nfullouter{name}cross)howrnameleftc              3  ,   >#    U  H	  oT-   v   M     g 7fr6   ra   r   r   suffixs     r?   r   %IbisLazyFrame.join.<locals>.<genexpr>
       8x!v:x   c              3     #    U  H6  n[        U[        5      (       a  M  [        S UR                  5       5      v   M8     g7f)r   N)rD   r   r   op)r   ps     r?   r   r     s-     W*QJqRUDV($x((*s
   A !A )r   ro   viewjoin_convert_predicatesr   rightrq   ru   r   appendr   )r<   otherr   left_onright_onr   
how_nativer   joined
predicatesright_namesitto_droppredr   s        `         r?   r   IbisLazyFrame.join   sO    !$vW3
6!=%%ell&7&7&9:E [[%%ell
%PF$$V,,"""###--ehG
!!%,,
RW!X8x8K66vKFW*WBG

,51HNN5)	 
 g.  ((rB   c                 ^ ST-   n[         R                  [         R                  S.n	/ n
U	R                  U5      =n(       a$  U" U R                  U   UR                  U   5      nOSn[        U5      eUb  Ub  U R                  XU5      n
U R                  R                  UR                  XUS9nU R                  XT-   /5      nUb  U4S jU 5       nU R                  X5      nU R                  U5      $ )Nr   )backwardforwardzIOnly `backward` and `forward` strategies are currently supported for Ibis)r   c              3  ,   >#    U  H	  oT-   v   M     g 7fr6   ra   r   s     r?   r   *IbisLazyFrame.join_asof.<locals>.<genexpr>/  r   r   )
operatorgeler   ro   NotImplementedErrorr   	asof_joinr   r   )r<   r   r   r   by_leftby_rightstrategyr   r   strategy_opr   r   onr]   r   r   s          `        r?   	join_asofIbisLazyFrame.join_asof  s     6!#+;;8;;G%'
**2*#%dkk'&:ELL<R#SB]C%c**8#711%(KJ&&u||R5&Q226v<M;NO8x8K66vKF  ((rB   c           
         X#:X  a  U$ [        X#SS9 VVs/ s H.  u  pE[        SU R                  U   UR                  U   :H  5      PM0     snn$ s  snnf )NTr   zir.BooleanColumn)zipr   ro   )r<   r   r   r   r   r   s         r?   r   !IbisLazyFrame._convert_predicates3  s^     N  #7TB
B #dkk$&75<<;N&NPB
 	
 
s   5Ac                    U R                   $ r6   )r   rb   s    r?   collect_schemaIbisLazyFrame.collect_schema=  s    {{rB   c                  U=(       d    U R                   nU R                  U5      =n(       a  Ue[        SU R                   SS9nU(       a  US:X  a  [        R                  " USSS.6nO*U(       a  [        R                  " USSS.6nO[        S5      n[        R                  " XGS	9nUS
:X  a*  U R                  R                  5       R                  U5      n	O0[        R                  " 5       R                  U5      [        S5      -   n	U R                  R                  " S0 Xi0D6R                  [        R                  U   [        S5      :H  5      R                  U5      n
U R!                  U
5      $ )N   
row_index_)prefixlastT
descending
nulls_lastF   )r   order_bynonera   )ru   _check_columns_existr   r	   _sortr   rf   windowro   countover
row_numberr   r   r   r   r   )r<   subsetkeepr"  subset_errortmp_name	order_by_r&  exprr=   s              r?   uniqueIbisLazyFrame.unique@  s    (DLL--g6656K1!T\\,W TdSI UuUIAIgB6>;;$$&++F3D??$))&1CF:DKK2(!12VDFF8$A./T(^ 	
   $$rB   c                   SSK Jn  UR                  " X1US.6nU R                  U R                  R
                  " U6 5      $ )Nr   r   r  )narwhals._ibis.exprr	   r%  r   ro   r"  )r<   r  r   byr	   colss         r?   sortIbisLazyFrame.sort]  s5    0~~rZP  !5!5t!<==rB   c                  SSK Jn  [        U[        5      (       a  U(       + OU Vs/ s H	  oU(       + PM     snnUR                  " X&SS.6nU R                  U R                  R                  " U6 R                  U5      5      $ s  snf )Nr   r   Tr  )	r4  r	   rD   boolr%  r   ro   r"  r   )r<   kr5  reverser	   eldescr6  s           r?   top_kIbisLazyFrame.top_kc  sj    0($777{w=Wwfw=W~~rtD  !5!5t!<!A!A!!DEE >Xs   Bc                x    Ub  UOU R                   nU R                  U R                  R                  U5      5      $ r6   )ru   r   ro   	drop_null)r<   r*  r,  s      r?   
drop_nullsIbisLazyFrame.drop_nullsj  s2    ".&DLL  !6!6w!?@@rB   c                8   U R                   R                  nU R                  5       nU H'  nX4   nXRR                  :w  d  M  SU S3n[	        U5      e   [        U5      S:w  a  Sn[        U5      eU R                  U R                  R                  US   SS95      $ )Nz-`explode` operation not supported for dtype `z`, expected List typer!  zExploding on multiple columns is not supported with Ibis backend since we cannot guarantee that the exploded columns have matching element counts.r   T)
keep_empty)
r8   dtypesr  Listr   lenr
  r   ro   unnest)r<   ru   rG  r   r   r   r]   s          r?   explodeIbisLazyFrame.exploden  s    %%$$&CKE#CE7 K) )  ,C00  w<1^  &c**  !3!3GAJ4!3!PQQrB   c                J   SS K Jn  Uc  / OUnUc$  U R                   Vs/ s H  owU;  d  M
  UPM     snOUn[        [        R                  / UQUPUP5      5      n	U R                  R                  UR                  " U6 X4S9n
U R                  U
R                  " U	6 5      $ s  snf )Nr   )names_to	values_to)ibis.selectors	selectorsru   r   r   fromkeysro   pivot_longerr6  r   rp   )r<   r  indexvariable_name
value_namesindex_con_final_columns	unpivoteds              r?   unpivotIbisLazyFrame.unpivot  s     	#&+m<>J81Q8B 	
 T]]+OV+O]+OJ+OPQKK,,FFCL= - 
	   !1!1=!ABB 9s
   	B B c                   U(       d  Sn[        U5      eU(       a   [        [        R                  " USSS.65      OS n[        R
                  " 5       R                  [        R                  " US95      R                  U5      [        R                  R                  5       /nU R                  U R                  R                  " U6 5      $ )Nz1Must pass `order_by` to `with_row_index` for IbisFr  )r"  )	TypeErrorr   r	   r%  rf   r)  r(  r&  rq   rQ  allr   ro   rp   )r<   rq   r"  r]   	sort_cols	to_selects         r?   with_row_indexIbisLazyFrame.with_row_index  s    ECC.   eNO 	 OO""4;;	#BCHHNNN 
	   !3!3Y!?@@rB   c                ~    [        U[        5      (       a  Sn[        U5      eU R                  R	                  U5        g )Nz5Writing to BytesIO is not supported for Ibis backend.)rD   r   r
  ro   
to_parquet)r<   filer]   s      r?   sink_parquetIbisLazyFrame.sink_parquet  s1    dG$$IC%c**t$rB   )r:   r9   r7   r8   )r=   ir.Tabler>   r   r4   r:  r   None)rG   zir.Table | Anyr   zTypeIs[ir.Table])rN   rk  rO   r(   r   r   )r   +LazyFrame[ir.Table] | DataFrameV1[ir.Table])r   r   )r   r   )r   r$   )rq   r   r   r&   )r   zIterator[ir.Expr])r   z_EagerAllowedImpl | Noner   r   r   r    )r   intr   r   )r   r   r   r   )r   r	   r   r   )ru   Sequence[str]r   r:  r   r   r6   )r   rl  r   rl  r   r   )r   r	   r   r   )r   zdict[str, DType])r   z	list[str])r   zpd.DataFrame)r   zpa.Table)r>   r   r   r   )r=   rk  r   r   )r   z"Sequence[str] | Sequence[IbisExpr]r   r:  r   r"   )r   zMapping[str, str]r   r   )r=   rk  ru   Iterable[str]r   rk  )r   r   r   r.   r   Sequence[str] | Noner   rq  r   r   r   r   )r   r   r   r   r   r   r  rq  r  rq  r  r-   r   r   r   r   )r   r   r   ro  r   ro  r   r0   )r*  rq  r+  r/   r"  rq  r   r   )r5  r   r  bool | Sequence[bool]r   r:  r   r   )r;  rn  r5  rp  r<  rr  r   r   )r*  rq  r   r   )ru   ro  r   r   )
r  rq  rT  rq  rU  r   rV  r   r   r   )rq   r   r"  ro  r   r   )rh  zstr | Path | BytesIOr   rl  )6__name__
__module____qualname____firstlineno__r   IBIS_implementationr@   staticmethodrH   classmethodrP   rY   r^   rc   rg   rk   rr   rv   r   r   r   r   rp   r   rU   r   r   propertyr   ru   r   r   r   r   r   r   r   r   r  r   r  r1  r7  r?  rC  rK  r]  rd  ri  r   _evaluate_window_expr_filter__static_attributes__ra   rB   r?   r2   r2   1   s    %))O SX--(/-KO-	- ) ) 3 3;4
V
$"/";>"	"H6DC$A
H;
 # # $ $'(<9F6FKOF	F> : :
")") 	")
 &") '") ") 
")H)) 	)
 ) &) ') #) ) 
)8

$1
=J
	
%$% !	%
 '% 
%:>FAR,C C $C 	C
 C 
C,A% ,-GrB   r2   )r	   rk  rm  )K
__future__r   r  ior   typingr   r   r   rf   ibis.expr.typesr0  typesrE   r4  r	   narwhals._ibis.utilsr
   r   r   narwhals._sql.dataframer   narwhals._utilsr   r   r   r   r   r   r   narwhals.exceptionsr   collections.abcr   r   r   r   pathlibr   r   r   pandaspdpyarrowpaibis.expr.operationsr   typing_extensionsr   r   narwhals._compliant.typingr    r   r"   rj   r$   rn   r&   narwhals._typingr'   r(   narwhals.dataframer)   narwhals.dtypesr*   rW   r,   DataFrameV1narwhals.typingr-   r.   r/   r0   __annotations__r2   ra   rB   r?   <module>r     s    "   + +    ( N N 0   6EE  +.@36;2/,%;RR LNIL@ VW@ rB   