
    -Phh                        d dl mZ d dlmZmZ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 er2d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZ d dlmZ d dlmZm Z  d dl!m"Z"  G d dede
f                   Z#dS )    )annotations)TYPE_CHECKINGAnySequenceN)ArrowSeries)	EagerExpr)!evaluate_output_names_and_aliases)Implementationgenerate_temporary_column_namenot_implemented)Self)ArrowDataFrameArrowNamespace)
AliasNames	EvalNames
EvalSeriesScalarKwargs)ExprMetadata)Version_FullContext)
RankMethodc                      e Zd ZU ej        Zded<   ddddBdZedddCd"            Z	edDd$            Z
dEd&ZdFd'Zd(d)dGd-ZdHd/ZdId1ZdJd5ZdHd6ZdHd7ZdHd8ZdHd9ZdKd=ZdLd@ZdMdAZ e            ZdS )N	ArrowExprr
   _implementationN)scalar_kwargsimplementationcall'EvalSeries[ArrowDataFrame, ArrowSeries]depthintfunction_namestrevaluate_output_namesEvalNames[ArrowDataFrame]alias_output_namesAliasNames | Nonebackend_versiontuple[int, ...]versionr   r   ScalarKwargs | Noner   Implementation | NonereturnNonec                   || _         || _        || _        || _        || _        || _        || _        || _        |pi | _        d | _        d S N)	_call_depth_function_name_evaluate_output_names_alias_output_names_backend_version_version_scalar_kwargs	_metadata)
selfr   r    r"   r$   r&   r(   r*   r   r   s
             T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_arrow/expr.py__init__zArrowExpr.__init__   sX     
+&;##5  /+1r.2     )r"   cls
type[Self]evaluate_column_namescontextr   r   c         	     H    dfd} | |d|d |j         |j                  S )	Ndfr   r-   list[ArrowSeries]c                     	  fd            D             S # t           $ r)}                                           x}r|| d }~ww xY w)Nc                `    g | ]*}t          j        |         |j        j                   +S ))namer(   r*   )r   nativer6   r7   ).0column_namerD   s     r;   
<listcomp>z=ArrowExpr.from_column_names.<locals>.func.<locals>.<listcomp>A   sR        $  	+.((*(; "	    r=   )KeyError_check_columns_exist)rD   eerrorrA   s   `  r;   funcz)ArrowExpr.from_column_names.<locals>.func?   s        (='<R'@'@       334I4I"4M4MNNN5 'Q&s    
A$A		Ar   r    r"   r$   r&   r(   r*   rD   r   r-   rE   )r6   r7   )r?   rA   rB   r"   rQ   s    `   r;   from_column_nameszArrowExpr.from_column_names6   sW    	 	 	 	 	 	  s'"7##4$
 
 
 	
r=   column_indicesc          	     n    d	fd} | |dd|                                d |j        |j                  S )
NrD   r   r-   rE   c                F      j          j         fdD             S )Nc                V    g | ]%}t          j        |         |                    &S ))rH   rB   )r   from_native)rJ   icolsrD   tbls     r;   rL   z?ArrowExpr.from_column_indices.<locals>.func.<locals>.<listcomp>^   sC        'AT!WbIII  r=   )rI   columns)rD   r[   r\   rU   s   `@@r;   rQ   z+ArrowExpr.from_column_indices.<locals>.func[   sI    )C:D     '   r=   r   nthrR   rS   )_eval_names_indicesr6   r7   )r?   rB   rU   rQ   s     ` r;   from_column_indiceszArrowExpr.from_column_indicesY   se    	 	 	 	 	 	 s"%"9"9."I"I##4$
 
 
 	
r=   r   c                <    ddl m}  || j        | j                  S )Nr   r   )r(   r*   )narwhals._arrow.namespacer   r6   r7   )r:   r   s     r;   __narwhals_namespace__z ArrowExpr.__narwhals_namespace__m   s7    <<<<<<~ 14=
 
 
 	
r=   c                    d S r0    r:   s    r;   __narwhals_expr__zArrowExpr.__narwhals_expr__t   s      r=   F)returns_scalarrh   booldict[str, Any]c                   |rddini S )N_return_py_scalarFre   )r:   rh   s     r;   _reuse_series_extra_kwargsz$ArrowExpr._reuse_series_extra_kwargsv   s     0>E#U++2Er=   reversec               0    |                      d|          S )Ncum_sumrn   _reuse_seriesr:   rn   s     r;   rp   zArrowExpr.cum_sum{       !!)W!===r=   nc                0    |                      d|          S )Nshift)rv   rr   )r:   rv   s     r;   rx   zArrowExpr.shift~   s    !!'Q!///r=   partition_bySequence[str]order_byc           	          j         J r j         j        sd}t          |          ssJ d fd}nd fd}                     | j        dz    j        d	z    j         j         j         j	        
          S )Nz[Only aggregation or literal operations are supported in grouped `over` context for PyArrow.rD   r   r-   Sequence[ArrowSeries]c                (   t          d| j                  } |                     |          j        ddd}  |                     |gd                    }t          j        |                     |          j                  fd|D             S )N   F)
descending
nulls_lastT)strictc                j    g | ]/}|                     |j                                                0S re   )_with_nativerI   take)rJ   ssorting_indicess     r;   rL   z0ArrowExpr.over.<locals>.func.<locals>.<listcomp>   s3    WWW1qx}}_'E'EFFWWWr=   )	r   r]   with_row_indexsortdroppcsort_indices
get_columnrI   )rD   tokenresultr   r{   r:   s      @r;   rQ   zArrowExpr.over.<locals>.func   s    6q"*EE2R&&u--2%E   bggugdg;;<< #%/"--2F2F2M"N"NWWWWPVWWWWr=   c                T   t          | g           \  }}t          |                                        x}rd| d}t          |          |                     d                                         | j                             dd          fd|D             S )	NzColumn names zV appear in both expression output names and in `over` keys.
This is not yet supported.F)drop_null_keysleft_right)howleft_onright_onsuffixc                :    g | ]}                     |          S re   )r   )rJ   aliastmps     r;   rL   z0ArrowExpr.over.<locals>.func.<locals>.<listcomp>   s%    CCC%u--CCCr=   )r	   setintersectionNotImplementedErrorgroup_byaggsimple_selectjoin)rD   output_namesaliasesoverlapmsgr   ry   r:   s        @r;   rQ   zArrowExpr.over.<locals>.func   s    (I$PRTV(W(W%g!,//<<\JJJ7 35 5 5 5  .c222kk,ukEEII$OO&b&5::()# ;   DCCC7CCCCr=      z->overrR   )rD   r   r-   r}   )
r9   is_scalar_liker   	__class__r2   r3   r4   r5   r6   r7   )r:   ry   r{   r   rQ   s   ```  r;   overzArrowExpr.over   s    ~))) 	+ = 	+oC%c*** %	D OOO
X 
X 
X 
X 
X 
X 
X 
XD D D D D D D* ~~+/-8"&"=#7 1M  
 
 	
r=   c               0    |                      d|          S )N	cum_countrq   rr   rt   s     r;   r   zArrowExpr.cum_count   s    !!+w!???r=   c               0    |                      d|          S )Ncum_minrq   rr   rt   s     r;   r   zArrowExpr.cum_min   ru   r=   c               0    |                      d|          S )Ncum_maxrq   rr   rt   s     r;   r   zArrowExpr.cum_max   ru   r=   c               0    |                      d|          S )Ncum_prodrq   rr   rt   s     r;   r   zArrowExpr.cum_prod   s    !!*g!>>>r=   methodr   r   c               2    |                      d||          S )Nrank)r   r   rr   )r:   r   r   s      r;   r   zArrowExpr.rank   s    !!&J!OOOr=   basefloatc                0    |                      d|          S )Nlog)r   rr   )r:   r   s     r;   r   zArrowExpr.log   s    !!%d!333r=   c                ,    |                      d          S )Nexprr   rf   s    r;   r   zArrowExpr.exp   s    !!%(((r=   )r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r   r   r+   r   r,   r-   r.   )
r?   r@   rA   r%   rB   r   r"   r#   r-   r   )rU   r!   rB   r   r-   r   )r-   r   )r-   r.   )rh   ri   r-   rj   )rn   ri   r-   r   )rv   r!   r-   r   )ry   rz   r{   rz   r-   r   )r   r   r   ri   r-   r   )r   r   r-   r   )r-   r   )__name__
__module____qualname__r
   PYARROWr   __annotations__r<   classmethodrT   r`   rc   rg   rm   rp   rx   r   r   r   r   r   r   r   r   r   ewm_meanre   r=   r;   r   r      s        &4&<O<<<< .2043 3 3 3 3 30    
  
  
  
  
 [ 
D 
 
 
 [
&
 
 
 
 -,,, ).F F F F F F
> > > >0 0 0 05
 5
 5
 5
n@ @ @ @> > > >> > > >? ? ? ?P P P P4 4 4 4) ) ) )   HHHr=   r   r   )$
__future__r   typingr   r   r   pyarrow.computecomputer   narwhals._arrow.seriesr   narwhals._compliantr   narwhals._expression_parsingr	   narwhals._utilsr
   r   r   typing_extensionsr   narwhals._arrow.dataframer   rb   r   narwhals._compliant.typingr   r   r   r   r   r   r   narwhals.typingr   r   re   r=   r;   <module>r      s   " " " " " " / / / / / / / / / /       . . . . . . ) ) ) ) ) ) J J J J J J           +&&&&&&888888888888ZZZZZZZZZZZZ99999955555555******r! r! r! r! r!	*K78 r! r! r! r! r!r=   