
    -Phne                       d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ d dlm Z m!Z! erod dl"m#c m$Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dlm4Z4m5Z5 d dl6m7Z7m8Z8m9Z9  ede%j:                  Z;e,e1e%j:        f         Z<ee%j:                 Z= G d ded                   Z>dS )    )annotationsN)partial)TYPE_CHECKINGAnyCallableIteratorLiteralSequenceTypeVarcast)LazyExpr)WindowInputsIbisExprDateTimeNamespaceIbisExprListNamespaceIbisExprStringNamespaceIbisExprStructNamespace)is_floatinglitnarwhals_to_native_dtype)Implementationnot_implemented)Self)
AliasNames	EvalNames
EvalSeriesWindowFunction)ExprKindExprMetadata)IbisLazyFrameIbisNamespace)Version_FullContext)	IntoDType
RankMethodRollingInterpolationMethodExprT)boundc                  ~   e Zd Zej        Z	 dddZedd            ZddZ	ddZ
ddZddZdddd'Zdd+Zd,d,d-dd3Zedd9            Zedd;            Zdd?ZddAZddBZeddG            ZddIZddJZddKZddLZddMZddNZddOZddPZddQZddRZ ddSZ!ddTZ"ddUZ#ddVZ$ddWZ%ddXZ&ddYZ'ddZZ(dd[Z)dd\Z*dd]Z+dd^Z,dd_Z-dd`Z.ddaZ/ddbZ0ddgZ1ddkZ2ddlZ3ddmZ4ddnZ5ddoZ6ddpZ7ddqZ8ddrZ9ddsZ:ddtZ;ddxZ<ddyZ=ddzZ>dd{Z?dd}Z@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSedd            ZTedd            ZUedd            ZVedd            ZW eX            ZY eX            ZZ eX            Z[ eX            Z\dS )IbisExprNcall#EvalSeries[IbisLazyFrame, ir.Value]window_functionIbisWindowFunction | Noneevaluate_output_namesEvalNames[IbisLazyFrame]alias_output_namesAliasNames | Nonebackend_versiontuple[int, ...]versionr&   returnNonec               h    || _         || _        || _        || _        || _        d | _        || _        d S N)_call_evaluate_output_names_alias_output_names_backend_version_version	_metadata_window_function)selfr/   r1   r3   r5   r7   r9   s          S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_ibis/expr.py__init__zIbisExpr.__init__3   s?     
&;##5  /.2;J    IbisWindowFunctionc                "     d fd} j         p|S )	Ndfr#   window_inputsIbisWindowInputsr:   list[ir.Value]c                F    j         rJ fd |           D             S )Nc                j    g | ]/}|                     t          j        j                             0S )group_by)overibiswindowpartition_by).0exprrL   s     rF   
<listcomp>zIIbisExpr.window_function.<locals>.default_window_func.<locals>.<listcomp>K   sE        		$+}/IJJJKK  rH   order_by)rK   rL   rE   s    `rF   default_window_funcz5IbisExpr.window_function.<locals>.default_window_funcG   sH     %----    DHH   rH   )rK   r#   rL   rM   r:   rN   )rD   )rE   r\   s   ` rF   r1   zIbisExpr.window_functionE   s2    	 	 	 	 	 	 $;(;;rH   rK   r#   Sequence[ir.Value]c                ,    |                      |          S r=   )r>   )rE   rK   s     rF   __call__zIbisExpr.__call__R   s    zz"~~rH   c                    d S r=    rE   s    rF   __narwhals_expr__zIbisExpr.__narwhals_expr__U   s      rH   r%   c                <    ddl m}  || j        | j                  S )Nr   r$   )r7   r9   )narwhals._ibis.namespacer%   rA   rB   )rE   r%   s     rF   __narwhals_namespace__zIbisExpr.__narwhals_namespace__W   s.    ::::::}T-BDMZZZZrH   reversebool	func_name%Literal['sum', 'max', 'min', 'count']c                    d fd}|S )	NrK   r#   inputsrM   r:   r]   c           	         t          j        t          |j                   j        |j        dd d          fd |           D             S )N
descending
nulls_lastr   rR   r[   	preceding	followingc                f    g | ]-} t          |                                                    .S ra   )getattrrS   )rW   rX   ri   rU   s     rF   rY   z;IbisExpr._cum_window_func.<locals>.func.<locals>.<listcomp>j   s:    QQQ,GD),,..33F;;QQQrH   rT   rU   listrV   _sortr[   )rK   rl   rU   ri   rg   rE   s     @rF   funcz'IbisExpr._cum_window_func.<locals>.func`   sw    [f122#_W     F RQQQQRQQQQrH   rK   r#   rl   rM   r:   r]   ra   )rE   rg   ri   ry   s   ``` rF   _cum_window_funczIbisExpr._cum_window_func]   s<    
	R 
	R 
	R 
	R 
	R 
	R 
	R 
	R rH   )ddof$Literal['sum', 'mean', 'std', 'var']centerwindow_sizeintmin_samplesr|   
int | Nonec               b    	 g d	|r|dz  |z
  dz
  n|dz
  dd 	fd}|S )N)summeanstdvar      r   rK   r#   rl   rM   r:   r]   c                    t          j        t          |j                   	j        |j                   d
fdfd 	|           D             S )	Nrq   rX   ir.NumericColumnr:   ir.Valuec                   dv r t          |                       }ndk    rdk    r|                     d          }ndv rdk    r|                     d          }nwdk    rdk    r|                     d          }nTdk    rdk    r|                     d          }n1d	v rd
 d}t          |          d d d}t          |          |                    	          }|                                                     	          }t          j        |t          j                  k    |ft          j	                              S )N>   r   r   r   r   pophowr   sampler   >   r   r   z;Only ddof=0 and ddof=1 are currently supported for rolling_.z,Only the following functions are supported: z.
Got: else_)
ru   r   r   
ValueErrorrS   countrT   casesliteralnull)
rX   func_msgrolling_calcvalid_countr|   ri   r   supported_funcsrU   s
        rF   inner_fz<IbisExpr._rolling_window_func.<locals>.func.<locals>.inner_f   sy   //4GD)4466EE%''DAII HHH//EE%''DAII HHH22EE%''DAII HHH//EE%''DAII HHH22EE.00dXadddC$S//)nnnbknnnC$S//)$zz&11"jjll//77z DL$=$==|L)++   rH   c                B    g | ]} t          d |                    S )r   r   )rW   rX   r   s     rF   rY   z?IbisExpr._rolling_window_func.<locals>.func.<locals>.<listcomp>   s.    QQQGGD!3T::;;QQQrH   rX   r   r:   r   rv   )rK   rl   r   rU   r|   rs   ri   r   rr   rE   r   s     @@rF   ry   z+IbisExpr._rolling_window_func.<locals>.func   s    [f122#V_5##	  F         2 RQQQRQQQQrH   rz   ra   )
rE   ri   r~   r   r   r|   ry   rs   rr   r   s
   ``  `` @@@rF   _rolling_window_funczIbisExpr._rolling_window_funcn   s     877 	#q(I#i/!3II#aII!	R !	R !	R !	R !	R !	R !	R !	R !	R !	R !	R !	RF rH   kind/Literal[ExprKind.AGGREGATION, ExprKind.LITERAL]r   c                    | S r=   ra   )rE   r   s     rF   	broadcastzIbisExpr.broadcast   s    rH   Frn   colsir.Column | strro   rp   Iterator[ir.Column]c             '    K   t          t          j        d          t          t          j        d          t          t          j        d          t          t          j        d          d}|||f         fd|D             E d {V  d S )NT)nulls_firstF))FF)FT)TF)TTc              3  J   K   | ]}t          d  |                    V  dS )	ir.ColumnNr   )rW   colsorts     rF   	<genexpr>z!IbisExpr._sort.<locals>.<genexpr>   s5      AASDdd3ii00AAAAAArH   )r   rT   ascdesc)rE   ro   rp   r   mappingr   s        @rF   rx   zIbisExpr._sort   s       $DH$???"48???"49$???!$)???	
 
 
J/0AAAADAAAAAAAAAAAArH   cls
type[Self]evaluate_column_namescontextr'   c              D    dfd} | |d |j         |j                  S )NrK   r#   r:   list[ir.Column]c                4      fd            D             S )Nc                *    g | ]}j         |         S ra   native)rW   namerK   s     rF   rY   z<IbisExpr.from_column_names.<locals>.func.<locals>.<listcomp>   s    JJJBIdOJJJrH   ra   )rK   r   s   `rF   ry   z(IbisExpr.from_column_names.<locals>.func   s*    JJJJ0E0Eb0I0IJJJJrH   r3   r5   r7   r9   rK   r#   r:   r   )rA   rB   )r   r   r   ry   s    `  rF   from_column_nameszIbisExpr.from_column_names   sW    	K 	K 	K 	K 	K 	K s"7##4$
 
 
 	
rH   column_indicesc               j    dfd} | ||                                d |j        |j                  S )NrK   r#   r:   r   c                "      fdD             S )Nc                *    g | ]}j         |         S ra   r   )rW   irK   s     rF   rY   z>IbisExpr.from_column_indices.<locals>.func.<locals>.<listcomp>   s    999QBIaL999rH   ra   )rK   r   s   `rF   ry   z*IbisExpr.from_column_indices.<locals>.func   s    9999.9999rH   r   r   )_eval_names_indicesrA   rB   )r   r   r   ry   s     ` rF   from_column_indiceszIbisExpr.from_column_indices   s_    	: 	: 	: 	: 	: 	: s"%"9"9."I"I##4$
 
 
 	
rH   Callable[..., ir.Value]expressifiable_args
Self | Anyc               t     d fd}                      | j         j         j         j                  S )aN  Create expression from callable.

        Arguments:
            call: Callable from compliant DataFrame to native Expression
            expr_name: Expression name
            expressifiable_args: arguments pass to expression which should be parsed
                as expressions (e.g. in `nw.col('a').is_between('b', 'c')`)
        rK   r#   r:   rN   c                ~                 } fd                                 D             fd|D             S )Nc                p    i | ]2\  }}|                     |          r                    |          n|3S ra   )_is_expr_evaluate_expr)rW   keyvaluerK   rE   s      rF   
<dictcomp>z9IbisExpr._with_callable.<locals>.func.<locals>.<dictcomp>   sS     # # #C u1E1EPR&&u---5# # #rH   c                "    g | ]} |fi S ra   ra   )rW   native_seriesr/   other_native_seriess     rF   rY   z9IbisExpr._with_callable.<locals>.func.<locals>.<listcomp>   s<       ! ]::&9::  rH   )items)rK   native_series_listr   r/   r   rE   s   ` @rF   ry   z%IbisExpr._with_callable.<locals>.func   s}    !%b# # # # #"5";";"="=# # #    %7   rH   r   )rK   r#   r:   rN   	__class__r?   r@   rA   rB   )rE   r/   r   ry   s   ``` rF   _with_callablezIbisExpr._with_callable   sd    		 		 		 		 		 		 		 		 ~~"&"=#7 1M  
 
 	
rH   ry   c               p     t          |           | j        | j        | j        || j        | j                  S Nr   )typer>   rD   r?   rA   rB   rE   ry   s     rF   _with_alias_output_namesz!IbisExpr._with_alias_output_names   s@    tDzzJ!"&"=# 1M
 
 
 	
rH   c                j    |                      | j        || j        | j        | j        | j                  S r   )r   r>   r?   r@   rA   rB   )rE   r1   s     rF   _with_window_functionzIbisExpr._with_window_function   s<    ~~J"&"=#7 1M  
 
 	
rH   rX   r+   r   strc               H    t          d|                    |                    S )Nr+   )r   r   )r   rX   r   s      rF   _alias_nativezIbisExpr._alias_native  s    GTYYt__---rH   otherc                2    |                      d |          S )Nc                    | |z  S r=   ra   rX   r   s     rF   <lambda>z"IbisExpr.__and__.<locals>.<lambda>  
    te| rH   r   r   rE   r   s     rF   __and__zIbisExpr.__and__      ""#C#C5"QQQrH   c                2    |                      d |          S )Nc                    | |z  S r=   ra   r   s     rF   r   z!IbisExpr.__or__.<locals>.<lambda>  r   rH   r   r   r   s     rF   __or__zIbisExpr.__or__  r   rH   c                2    |                      d |          S )Nc                    | |z   S r=   ra   r   s     rF   r   z"IbisExpr.__add__.<locals>.<lambda>  r   rH   r   r   r   s     rF   __add__zIbisExpr.__add__  r   rH   c                2    |                      d |          S )Nc                    | |z  S r=   ra   r   s     rF   r   z&IbisExpr.__truediv__.<locals>.<lambda>  r   rH   r   r   r   s     rF   __truediv__zIbisExpr.__truediv__  r   rH   c                X    |                      d |                              d          S )Nc                ,    |                      |          S r=   )__rtruediv__r   s     rF   r   z'IbisExpr.__rtruediv__.<locals>.<lambda>       1 1% 8 8 rH   r   r   r   aliasr   s     rF   r   zIbisExpr.__rtruediv__  s4    ""88 # 
 

%	

	rH   c                2    |                      d |          S )Nc                ,    |                      |          S r=   )__floordiv__r   s     rF   r   z'IbisExpr.__floordiv__.<locals>.<lambda>  r   rH   r   r   r   s     rF   r  zIbisExpr.__floordiv__  s'    ""88 # 
 
 	
rH   c                X    |                      d |                              d          S )Nc                ,    |                      |          S r=   )__rfloordiv__r   s     rF   r   z(IbisExpr.__rfloordiv__.<locals>.<lambda>$  s     2 25 9 9 rH   r   r   r   r   s     rF   r  zIbisExpr.__rfloordiv__"  s4    ""99 # 
 

%	

	rH   c                2    |                      d |          S )Nc                ,    |                      |          S r=   )__mod__r   s     rF   r   z"IbisExpr.__mod__.<locals>.<lambda>(  s    t||E7J7J rH   r   r   r   s     rF   r	  zIbisExpr.__mod__'  s     ""#J#JRW"XXXrH   c                X    |                      d |                              d          S )Nc                ,    |                      |          S r=   )__rmod__r   s     rF   r   z#IbisExpr.__rmod__.<locals>.<lambda>,      e 4 4 rH   r   r   r   r   s     rF   r  zIbisExpr.__rmod__*  4    ""44E # 
 

%	

	rH   c                2    |                      d |          S )Nc                    | |z
  S r=   ra   r   s     rF   r   z"IbisExpr.__sub__.<locals>.<lambda>0  r   rH   r   r   r   s     rF   __sub__zIbisExpr.__sub__/  r   rH   c                X    |                      d |                              d          S )Nc                ,    |                      |          S r=   )__rsub__r   s     rF   r   z#IbisExpr.__rsub__.<locals>.<lambda>4  r  rH   r   r   r   r   s     rF   r  zIbisExpr.__rsub__2  r  rH   c                2    |                      d |          S )Nc                    | |z  S r=   ra   r   s     rF   r   z"IbisExpr.__mul__.<locals>.<lambda>8  r   rH   r   r   r   s     rF   __mul__zIbisExpr.__mul__7  r   rH   c                2    |                      d |          S )Nc                    | |z  S r=   ra   r   s     rF   r   z"IbisExpr.__pow__.<locals>.<lambda>;  s
    tU{ rH   r   r   r   s     rF   __pow__zIbisExpr.__pow__:  s    ""#B#B%"PPPrH   c                X    |                      d |                              d          S )Nc                ,    |                      |          S r=   )__rpow__r   s     rF   r   z#IbisExpr.__rpow__.<locals>.<lambda>?  r  rH   r   r   r   r   s     rF   r  zIbisExpr.__rpow__=  r  rH   c                2    |                      d |          S )Nc                    | |k     S r=   ra   r   s     rF   r   z!IbisExpr.__lt__.<locals>.<lambda>C  
    te| rH   r   r   r   s     rF   __lt__zIbisExpr.__lt__B  r   rH   c                2    |                      d |          S )Nc                    | |k    S r=   ra   r   s     rF   r   z!IbisExpr.__gt__.<locals>.<lambda>F  r   rH   r   r   r   s     rF   __gt__zIbisExpr.__gt__E  r   rH   c                2    |                      d |          S )Nc                    | |k    S r=   ra   r   s     rF   r   z!IbisExpr.__le__.<locals>.<lambda>I  
    tu} rH   r   r   r   s     rF   __le__zIbisExpr.__le__H      ""#D#DE"RRRrH   c                2    |                      d |          S )Nc                    | |k    S r=   ra   r   s     rF   r   z!IbisExpr.__ge__.<locals>.<lambda>L  r'  rH   r   r   r   s     rF   __ge__zIbisExpr.__ge__K  r)  rH   c                2    |                      d |          S )Nc                    | |k    S r=   ra   r   s     rF   r   z!IbisExpr.__eq__.<locals>.<lambda>O  r'  rH   r   r   r   s     rF   __eq__zIbisExpr.__eq__N  r)  rH   c                2    |                      d |          S )Nc                    | |k    S r=   ra   r   s     rF   r   z!IbisExpr.__ne__.<locals>.<lambda>R  r'  rH   r   r   r   s     rF   __ne__zIbisExpr.__ne__Q  r)  rH   c                `    t          dt          j                  }|                     |          S )Nr   )r   operatorinvertr   )rE   r5  s     rF   
__invert__zIbisExpr.__invert__T  s(    /AA""6***rH   c                .    |                      d           S )Nc                *    |                                  S r=   )absrX   s    rF   r   zIbisExpr.abs.<locals>.<lambda>Y      

 rH   r   rb   s    rF   r9  zIbisExpr.absX      ""#:#:;;;rH   c                .    |                      d           S )Nc                *    |                                  S r=   )r   r:  s    rF   r   zIbisExpr.mean.<locals>.<lambda>\  s    		 rH   r   rb   s    rF   r   zIbisExpr.mean[  s    ""#;#;<<<rH   c                .    |                      d           S )Nc                *    |                                  S r=   )medianr:  s    rF   r   z!IbisExpr.median.<locals>.<lambda>_       rH   r   rb   s    rF   rA  zIbisExpr.median^      ""#=#=>>>rH   c                .    |                      d           S )Nc                j    |                                                      t          d                    S )NT)all	fill_nullr   r:  s    rF   r   zIbisExpr.all.<locals>.<lambda>b  s"    

0D0DSYY0O0O rH   r   rb   s    rF   rF  zIbisExpr.alla  s    ""#O#OPPPrH   c                .    |                      d           S )Nc                j    |                                                      t          d                    S NF)anyrG  r   r:  s    rF   r   zIbisExpr.any.<locals>.<lambda>e  s"    

0D0DSZZ0P0P rH   r   rb   s    rF   rK  zIbisExpr.anyd  s    ""#P#PQQQrH   quantilefloatinterpolationr*   c                b    |dk    rd}t          |          |                     fd          S )NlinearzBOnly linear interpolation methods are supported for Ibis quantile.c                .    |                                S r=   )rL  )rX   rL  s    rF   r   z#IbisExpr.quantile.<locals>.<lambda>m  s    h0G0G rH   NotImplementedErrorr   )rE   rL  rN  r   s    `  rF   rL  zIbisExpr.quantileg  sA     H$$VC%c***""#G#G#G#GHHHrH   lower_boundr   upper_boundc                :    d	d}|                      |||          S )
NrX   ir.NumericValuelowerr   upperr:   c                0    |                      ||          S )NrX  rY  )clip)rX   rX  rY  s      rF   _clipzIbisExpr.clip.<locals>._clipp  s    9959666rH   r[  )rX   rW  rX  r   rY  r   r:   rW  r   )rE   rT  rU  r]  s       rF   r\  zIbisExpr.clipo  s3    	7 	7 	7 	7 ""5;"OOOrH   c                .    |                      d           S )Nc                j    |                                                      t          d                    S )Nr   )r   rG  r   r:  s    rF   r   zIbisExpr.sum.<locals>.<lambda>v  s"    

0D0DSVV0L0L rH   r   rb   s    rF   r   zIbisExpr.sumu  s    ""#L#LMMMrH   c                .    |                      d           S )Nc                    |                                  |                                                                                     d          z   S )Nint8)nuniqueisnullrK  r   r:  s    rF   r   z#IbisExpr.n_unique.<locals>.<lambda>z  s5    $++--*;*;*=*=*B*B6*J*JJ rH   r   rb   s    rF   n_uniquezIbisExpr.n_uniquex  s     ""JJ
 
 	
rH   c                .    |                      d           S )Nc                *    |                                  S r=   )r   r:  s    rF   r   z IbisExpr.count.<locals>.<lambda>~  s    

 rH   r   rb   s    rF   r   zIbisExpr.count}  s    ""#<#<===rH   c                f    dd}|                      || j        | j        | j        | j                  S )NrK   r#   r:   list[ir.IntegerScalar]c                6    | j                                         gS r=   )r   r   )rK   s    rF   ry   zIbisExpr.len.<locals>.func  s    IOO%%&&rH   r   )rK   r#   r:   ri  r   r   s     rF   lenzIbisExpr.len  sM    	' 	' 	' 	' ~~"&"=#7 1M  
 
 	
rH   c                @    d	d|                      fd          S )
NrX   r   r|   r   r:   r   c                h   |dk    r|                      d          S |dk    r|                      d          S |                                 }|                      d          }t          dt          j        |                    }||                                z  ||z
                                  z  S Nr   r   r   r   r   ir.IntegerScalar)r   r   r   rT   r   sqrt)rX   r|   	n_samplesstd_popddof_lits        rF   _stdzIbisExpr.std.<locals>._std  s    qyyxxEx***xxHx--- JJLL	((u(-- 2DL4F4FGG!1!11Y5I4O4O4Q4QQQrH   c                     |           S r=   ra   )rX   rt  r|   s    rF   r   zIbisExpr.std.<locals>.<lambda>      T40@0@ rH   rX   r   r|   r   r:   r   r   )rE   r|   rt  s    `@rF   r   zIbisExpr.std  s?    		R 		R 		R 		R ""#@#@#@#@#@AAArH   c                @    d	d|                      fd          S )
NrX   r   r|   r   r:   r   c                    |dk    r|                      d          S |dk    r|                      d          S |                                 }|                      d          }t          dt          j        |                    }||z  ||z
  z  S rn  )r   r   r   rT   r   )rX   r|   rq  var_poprs  s        rF   _varzIbisExpr.var.<locals>._var  s    qyyxxEx***xxHx--- JJLL	((u(-- 2DL4F4FGG*i(.BCCrH   c                     |           S r=   ra   )rX   r{  r|   s    rF   r   zIbisExpr.var.<locals>.<lambda>  rv  rH   rw  r   )rE   r|   r{  s    `@rF   r   zIbisExpr.var  s?    		D 		D 		D 		D ""#@#@#@#@#@AAArH   c                .    |                      d           S )Nc                *    |                                  S r=   )maxr:  s    rF   r   zIbisExpr.max.<locals>.<lambda>  r;  rH   r   rb   s    rF   r  zIbisExpr.max  r<  rH   c                .    |                      d           S )Nc                *    |                                  S r=   )minr:  s    rF   r   zIbisExpr.min.<locals>.<lambda>  r;  rH   r   rb   s    rF   r  zIbisExpr.min  r<  rH   c                .    |                      d           S )Nc                N    |                                                                  S r=   )rd  r   r:  s    rF   r   z%IbisExpr.null_count.<locals>.<lambda>  s    0A0A0C0C rH   r   rb   s    rF   
null_countzIbisExpr.null_count  s    ""#C#CDDDrH   rV   Sequence[str]r[   c                t     d fd}                      | j         j         j         j                  S )NrK   r#   r:   r]   c                L                         | t                              S r=   )r1   r   )rK   r[   rV   rE   s    rF   ry   zIbisExpr.over.<locals>.func  s#    ''Lx,P,PQQQrH   r   rK   r#   r:   r]   r   )rE   rV   r[   ry   s   ``` rF   rS   zIbisExpr.over  sl    	R 	R 	R 	R 	R 	R 	R 	R ~~"&"=#7 1M  
 
 	
rH   c                .    |                      d           S )Nc                *    |                                  S r=   )rd  r:  s    rF   r   z"IbisExpr.is_null.<locals>.<lambda>  rB  rH   r   rb   s    rF   is_nullzIbisExpr.is_null  rC  rH   c                4    dd}|                      |          S )NrX   ir.FloatingValue | Anyr:   r   c                    t          |                                           r|                                 nd}t          j        |                                 d |          S rJ  )r   r   isnanrT   ifelserd  )rX   	otherwises     rF   ry   zIbisExpr.is_nan.<locals>.func  sD    (3DIIKK(@(@K

eI;t{{}}dI>>>rH   )rX   r  r:   r   r   r   s     rF   is_nanzIbisExpr.is_nan  s,    	? 	? 	? 	? ""4(((rH   c                .    |                      d           S )Nc                V    |                                  |                                 z   S r=   )isinfr  r:  s    rF   r   z$IbisExpr.is_finite.<locals>.<lambda>  s    $**,,2M0N rH   r   rb   s    rF   	is_finitezIbisExpr.is_finite  s    ""#N#NOOOrH   Sequence[Any]c                4    |                      fd          S )Nc                .    |                                S r=   )isinr   s    rF   r   z IbisExpr.is_in.<locals>.<lambda>  s    		%0@0@ rH   r   r   s    `rF   is_inzIbisExpr.is_in  s!    ""#@#@#@#@AAArH   decimalsc                4    |                      fd          S )Nc                .    |                                S r=   )round)rX   r  s    rF   r   z IbisExpr.round.<locals>.<lambda>  s    

80D0D rH   r   )rE   r  s    `rF   r  zIbisExpr.round  s!    ""#D#D#D#DEEErH   nc                >     d fd}                      |          S )	NrK   r#   rl   rM   r:   r]   c                8    fd |           D             S )Nc           
         g | ]P}|                                                   t          j        j         j        j                              QS )rR   r[   lagrS   rT   rU   rV   rx   r[   )rW   rX   rl   r  rE   s     rF   rY   z1IbisExpr.shift.<locals>._func.<locals>.<listcomp>  sm           K!'!4!+V_!=     rH   ra   )rK   rl   r  rE   s    `rF   _funczIbisExpr.shift.<locals>._func  sC          !DHH   rH   rz   r   )rE   r  r  s   `` rF   shiftzIbisExpr.shift  s=    		 		 		 		 		 		 		 ))%000rH   c                :     d fd}                      |          S )	NrK   r#   rl   rM   r:   Sequence[ir.BooleanValue]c                6    fd |           D             S )Nc           
         g | ]c}t          j                                        t          j        g j        | j        j                              t          d          k    dS )r  r   rT   
row_numberrS   rU   rV   rx   r[   r   rW   rX   rl   rE   s     rF   rY   z<IbisExpr.is_first_distinct.<locals>.func.<locals>.<listcomp>  s     	 	 	  !!&&K!=6#6!=!=!+V_!=    q66	 	 	rH   ra   rK   rl   rE   s    `rF   ry   z(IbisExpr.is_first_distinct.<locals>.func  s>    	 	 	 	 	 !DHH	 	 	 	rH   rK   r#   rl   rM   r:   r  r  r   s   ` rF   is_first_distinctzIbisExpr.is_first_distinct  s7    	 	 	 	 	 	 ))$///rH   c                :     d fd}                      |          S )	NrK   r#   rl   rM   r:   r  c                6    fd |           D             S )Nc                    g | ]g}t          j                                        t          j        g j        | j        j        d d d                    t          d          k    hS )Trn   r  r   r  r  s     rF   rY   z;IbisExpr.is_last_distinct.<locals>.func.<locals>.<listcomp>  s         !!&&K!=6#6!=!=!+#_$" " "    q66  rH   ra   r  s    `rF   ry   z'IbisExpr.is_last_distinct.<locals>.func  s>         !DHH   rH   r  r  r   s   ` rF   is_last_distinctzIbisExpr.is_last_distinct  s7    	 	 	 	 	 	" ))$///rH   c                :     d fd}                      |          S )	NrK   r#   rl   rM   r:   r]   c                6    fd |           D             S )Nc                    g | ]S}||                                                     t          j        d j         j        j                             z
  TS )r   )rs   rR   r[   r  r  s     rF   rY   z0IbisExpr.diff.<locals>._func.<locals>.<listcomp>  st     
 
 
  ((**//K"#!'!4!+V_!=   
 
 
rH   ra   r  s    `rF   r  zIbisExpr.diff.<locals>._func  s>    
 
 
 
 
 !DHH
 
 
 
rH   rz   r  )rE   r  s   ` rF   diffzIbisExpr.diff  s7    	 	 	 	 	 	 ))%000rH   c               V    |                      |                     |d                    S )Nr   rg   ri   r   r{   rE   rg   s     rF   cum_sumzIbisExpr.cum_sum  0    ))!!'U!CC
 
 	
rH   c               V    |                      |                     |d                    S )Nr  r  r  r  s     rF   cum_maxzIbisExpr.cum_max  r  rH   c               V    |                      |                     |d                    S )Nr  r  r  r  s     rF   cum_minzIbisExpr.cum_min  r  rH   c               V    |                      |                     |d                    S )Nr   r  r  r  s     rF   	cum_countzIbisExpr.cum_count#  s0    ))!!'W!EE
 
 	
rH   c               Z    |                      |                     d|||                    S )Nr   ri   r~   r   r   r   r   rE   r   r   r~   s       rF   rolling_sumzIbisExpr.rolling_sum(  s>    ))%%''	 &  
 
 	
rH   c               Z    |                      |                     d|||                    S )Nr   r  r  r  s       rF   rolling_meanzIbisExpr.rolling_mean2  s>    ))%% ''	 &  
 
 	
rH   c          	     \    |                      |                     d||||                    S )Nr   ri   r~   r   r   r|   r  rE   r   r   r~   r|   s        rF   rolling_varzIbisExpr.rolling_var<  C     ))%%'' &  
 
 	
rH   c          	     \    |                      |                     d||||                    S )Nr   r  r  r  s        rF   rolling_stdzIbisExpr.rolling_stdI  r  rH   r   strategylimitc                    |d}t          |          |d}t          |          d
d}|                     ||	          S )Nz0`strategy` is not supported for the Ibis backendz-`limit` is not supported for the Ibis backendrX   r   r   	ir.Scalarr:   c                ,    |                      |          S r=   )rG  )rX   r   s     rF   
_fill_nullz&IbisExpr.fill_null.<locals>._fill_null`  s    >>%(((rH   )r   )rX   r   r   r  r:   r   rR  )rE   r   r  r  r   r  s         rF   rG  zIbisExpr.fill_nullV  se     DC%c***AC%c***	) 	) 	) 	) "":U";;;rH   dtyper(   c                >     d fd}                      |          S )NrX   r   r:   r   c                X    t          j                  }|                     |          S r=   )r   rB   r   )rX   native_dtyper  rE   s     rF   r  zIbisExpr.cast.<locals>._funcf  s&    3E4=IIL99\***rH   )rX   r   r:   r   r   )rE   r  r  s   `` rF   r   zIbisExpr.caste  s=    	+ 	+ 	+ 	+ 	+ 	+ 	+
 ""5)))rH   c                .    |                      d           S )Nc                    |                                                                                      t          j        |                     dk    S )NrQ   r   )rd  r   rS   rT   rU   r:  s    rF   r   z$IbisExpr.is_unique.<locals>.<lambda>o  s;    ,,..33DK$4P4P4PQQUVV rH   r   rb   s    rF   	is_uniquezIbisExpr.is_uniquem  s     ""VV
 
 	
rH   methodr)   c               B     d fd}                      |          S )NrX   r   r:   c           
     
   t          	                    | d                    }t          j        |          }dk    r|                                }nOdk    r5t          dt          j                                        |                    }n|                                }|t          dt          d                    z   }d	k    rot          j        | g
          }t          d| 
                                                    |                    }||z   t          dt          d                    z
  }ndk    rt          j        | g
          }t          d| 
                                                    |                    }t          d|t          dt          d                    z
  t          d          z            }||z   }t          dt          j        |                                 |f                    S )NTrn   rZ   denseordinalzir.IntegerColumnzir.IntegerValuer   r  rQ   averagerW  ro  g       @r   )nextrx   rT   rU   
dense_rankr   r  rS   rankr   r   r   notnull)
rX   r[   rU   rank_	partitioncntavgro   r  rE   s
          rF   _rankzIbisExpr.rank.<locals>._ranks  s   DJJt
tJTTUUH[(333F   ++--9$$/1B1B1G1G1O1OPP  D!2CFF;;;E  K$888	,djjll.?.?	.J.JKKd+<c!ff&E&EE9$$ K$888	,djjll.?.?	.J.JKK%d3Es1vv.N.N(NRUVYRZRZ'Z  TZ0G%H%HIIIrH   )rX   r   r:   r   r   )rE   r  ro   r  s   ``` rF   r  zIbisExpr.rankr  sK    	J 	J 	J 	J 	J 	J 	J 	J< ""5)))rH   basec                :    dfd}|                      |          S )NrX   r   r:   r   c           	     F   |                      t          dt                                        }t          j        | t          d          k     t          t          d                    f| t          d          k    t          t          d                    f|          S )NrW  r   nanz-infr   )logr   r   rT   r   rM  )rX   r  r  s     rF   _logzIbisExpr.log.<locals>._log  s    &7T!C!CDDI:AE%LL 1 12QU6]]!3!34   rH   r   r   )rE   r  r  s    ` rF   r  zIbisExpr.log  s7    	 	 	 	 	 	 ""4(((rH   c                4    dd}|                      |          S )NrX   r   r:   r   c                *    |                                  S r=   )expr:  s    rF   _expzIbisExpr.exp.<locals>._exp  s    88::rH   r   r   )rE   r  s     rF   r  zIbisExpr.exp  s,    	 	 	 	 ""4(((rH   r   c                     t          |           S r=   r   rb   s    rF   r   zIbisExpr.str      &t,,,rH   r   c                     t          |           S r=   r   rb   s    rF   dtzIbisExpr.dt  s    (...rH   r   c                     t          |           S r=   r   rb   s    rF   rw   zIbisExpr.list  s    $T***rH   r   c                     t          |           S r=   r   rb   s    rF   structzIbisExpr.struct  r  rH   r=   )r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r&   r:   r;   )r:   rI   r  )r:   r;   )r:   r%   )rg   rh   ri   rj   r:   rI   )ri   r}   r~   rh   r   r   r   r   r|   r   r:   rI   )r   r   r:   r   )r   r   ro   rh   rp   rh   r:   r   )r   r   r   r4   r   r'   r:   r   )r   r   r   r'   r:   r   )r/   r   r   r   r:   r   )ry   r6   r:   r   )r1   rI   r:   r   )rX   r+   r   r   r:   r+   )r   r.   r:   r   )r:   r   )rL  rM  rN  r*   r:   r   )rT  r   rU  r   r:   r   )r|   r   r:   r   )rV   r  r[   r  r:   r   )r   r  r:   r   )r  r   r:   r   )r  r   r:   r   )rg   rh   r:   r   )r   r   r   r   r~   rh   r:   r   )
r   r   r   r   r~   rh   r|   r   r:   r   )r   r   r  r   r  r   r:   r   )r  r(   r:   r   )r  r)   ro   rh   r:   r   )r  rM  r:   r   )r:   r   )r:   r   )r:   r   )r:   r   )]__name__
__module____qualname__r   IBIS_implementationrG   propertyr1   r_   rc   rf   r{   r   r   rx   classmethodr   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r!  r$  r(  r,  r/  r2  r6  r9  r   rA  rF  rK  rL  r\  r   re  r   rk  r   r   r  r  r  rS   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rG  r   r  r  r  r  r   r   rw   r  r   cum_prod
drop_nullsskewuniquera   rH   rF   r.   r.   0   s       $)O
 6:K K K K K$ 
< 
< 
< X
<    -,,,[ [ [ [   0  5 5 5 5 5 5n   
 :?SX
B 
B 
B 
B 
B 
B 
 
 
 [
$ 

 

 

 [


 
 
 
>
 
 
 

 
 
 
 . . . [.R R R RR R R RR R R RR R R R   

 
 
 

   
Y Y Y Y   
R R R R   
R R R RQ Q Q Q   
R R R RR R R RS S S SS S S SS S S SS S S S+ + + +< < < <= = = =? ? ? ?Q Q Q QR R R RI I I IP P P PN N N N
 
 
 

> > > >

 

 

 

B B B BB B B B< < < << < < <E E E E

 

 

 

? ? ? ?) ) ) )P P P PB B B BF F F F1 1 1 10 0 0 0$0 0 0 0(1 1 1 1 
 
 
 


 
 
 


 
 
 


 
 
 


 
 
 

 
 
 

 
 
 

 
 
 
< < < <* * * *
 
 
 

* * * *B	) 	) 	) 	)) ) ) ) - - - X- / / / X/ + + + X+ - - - X-   H ""J ?D_FFFrH   r.   )r#   r   )?
__future__r   r4  	functoolsr   typingr   r   r   r   r	   r
   r   r   rT   narwhals._compliantr   narwhals._compliant.windowr   narwhals._ibis.expr_dtr   narwhals._ibis.expr_listr   narwhals._ibis.expr_strr   narwhals._ibis.expr_structr   narwhals._ibis.utilsr   r   r   narwhals._utilsr   r   ibis.expr.typesrX   typesirtyping_extensionsr   narwhals._compliant.typingr   r   r   r    narwhals._expression_parsingr!   r"   narwhals._ibis.dataframer#   re   r%   r&   r'   narwhals.typingr(   r)   r*   Valuer+   rI   rM   r.   ra   rH   rF   <module>r#     s   " " " " " "       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  ( ( ( ( ( ( 3 3 3 3 3 3 < < < < < < : : : : : : ; ; ; ; ; ; > > > > > > K K K K K K K K K K ; ; ; ; ; ; ; ; .         &&&&&&            DCCCCCCC66666666666655555555QQQQQQQQQQGG28,,,E'rx(?@#BH-J
 J
 J
 J
 J
x45 J
 J
 J
 J
 J
rH   