
    Lpj$                       S SK Jr  S SKJrJrJr  S SKrS SKJ	r
  S SKJr  S SKJr  S SKJrJr  S SKJrJrJr  S SKJr  \(       a*  S S	K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$  S SKJ%r%J&r&   " S S\S\4   5      r'g)    )annotations)TYPE_CHECKINGAnycastN)ArrowSeries)	EagerExpr)evaluate_nodes!evaluate_output_names_and_aliases)Implementationgenerate_temporary_column_namenot_implemented)col)Sequence)Self)ArrowDataFrameArrowNamespace)
AliasNames	EvalNames
EvalSeries)Version_LimitedContextc                      \ rS rSr% \R
                  rS\S'   \R
                  S.           SS jjr\	        SS j5       r
\	SS j5       rSS jrS	S
.   SS jjrSS jrSS jr\" 5       rSrg)	ArrowExpr   r   _implementation)implementationc               4    Xl         X l        X0l        X@l        g )N)_call_evaluate_output_names_alias_output_names_version)selfcallevaluate_output_namesalias_output_namesversionr   s         P/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_arrow/expr.py__init__ArrowExpr.__init__    s     
&;##5     c              :   ^ SU4S jjnU " UTS UR                   S9$ )Nc           	        >  T" U 5       Vs/ s H$  n[        U R                  U   XR                  S9PM&     sn$ s  snf ! [         a&  nU R	                  T" U 5      5      =n(       a  X2ee S nAff = f)N)namer'   )r   nativer"   KeyError_check_columns_exist)dfcolumn_nameeerrorevaluate_column_namess       r(   func)ArrowExpr.from_column_names.<locals>.func6   s    

 (=R'@	 (A  		+.[++ (A	    334I"4MNN5N&s%   
A  +;A  A   
A0
!A++A0r%   r&   r'   r2   r   returnzlist[ArrowSeries])r"   )clsr6   contextr7   s    `  r(   from_column_namesArrowExpr.from_column_names.   s)    	 "7#$$	
 	
r+   c               X   ^ SU4S jjnU " UU R                  T5      S UR                  S9$ )Nc           	        > U R                   nU R                  nT Vs/ s H  n[        R                  " X   X#   U S9PM     sn$ s  snf )N)r.   r=   )r/   columnsr   from_native)r2   tblcolsicolumn_indicess       r(   r7   +ArrowExpr.from_column_indices.<locals>.funcL   sO    ))C::D ('A ''TWbI'  s   $Ar9   r:   )_eval_names_indicesr"   )r<   r=   rG   r7   s     ` r(   from_column_indicesArrowExpr.from_column_indicesJ   s4    	 "%"9"9."I#$$	
 	
r+   c                .    SSK Jn  U" U R                  S9$ )Nr   r   )r'   )narwhals._arrow.namespacer   r"   )r#   r   s     r(   __narwhals_namespace__ ArrowExpr.__narwhals_namespace__[   s    <dmm44r+   F)returns_scalarc                   U(       a  SS0$ 0 $ )N_return_py_scalarF )r#   rP   s     r(   _reuse_series_extra_kwargs$ArrowExpr._reuse_series_extra_kwargs`   s     0>#U+E2Er+   c                   ^ ^^ T(       d   eT R                   mSUUU 4S jjnT R                  UT R                  T R                  T R                  S9$ )Nc           	     L  > [        SU R                  5      nU R                  US S9R                  " TSSS.6n T" U R	                  U/SS95      nTb`  TR
                  (       aO  [        U 5      nU Vs/ s H6  oDR                  [        R                  " UR                  5       U5      5      PM8     sn$ [        R                  " U R                  U5      R                  5      nU Vs/ s H,  oDR                  UR                  R                  U5      5      PM.     sn$ s  snf s  snf )N   )order_byF
descending
nulls_lastTstrict)r   rB   with_row_indexsortdropis_scalar_likelen_with_nativeparepeatitempcsort_indices
get_columnr/   take)	r2   tokenresultssizessorting_indicesmetarY   r#   s	         r(   r7   2ArrowExpr._over_without_partition_by.<locals>.funck   s    21bjjAE""54"8==eB 277E74789GD$7$7 2wKRS7aryy4'@A7SS
 !oobmmE.B.I.IJOLSTGqNN188==#ABGTT T Us   3=D&3D!r9   r2   r   r;   zSequence[ArrowSeries])	_metadata	__class__r    r!   r"   )r#   rY   r7   rq   s   `` @r(   _over_without_partition_by$ArrowExpr._over_without_partition_bye   sU     x~~	U 	U$ ~~"&"="=#77MM	  
 	
r+   c                
  ^ ^^^^ T(       d  T(       d   eT R                  T5      $ T R                  mT(       aZ  TR                  R                  R                  (       a(  TR
                  b(  TR
                  R                  (       d  Sn[        U5      e[        [        [        T R                  R                  5       5      5      5      mSUUUUU 4S jjnT R                  UT R                  T R                  T R                  S9$ )NzOnly elementary aggregations are supported for `.over` in PyArrow backend when `partition_by` is specified.

Please see: https://narwhals-dev.github.io/narwhals/concepts/improve_group_by_operation/c           
     .  > TR                  5       nTR                  bk  U R                  [        S[	        TS S U5      5      5      n [        TU / 5      u  p#[        S[        U6 R                  TS   5      R                  U5      5      nO[        TU / 5      u  p#TnT(       a  U R                  " TSSS.6n [        U5      R                  T5      =n(       a  SU S3n[        U5      eU R                  " T6 nUR                  R                   Vs/ s H  oR                   S:  PM     n	n[#        U	5      (       dS  U R%                  TSS9R'                  U5      n
UR)                  U
S	TTS
S9n
U Vs/ s H  oR+                  U5      PM     sn$ U R                  U R                  pTR                  5       n/ n/ n[-        UR                  U	SS9 H  u  nnU(       d  UR/                  U5        M   [1        SU5      nUR/                  U5        UR/                  U5        UR2                  R5                  UR7                  U5      R9                  S5      R;                  5       R<                  UUS9nUR/                  UR>                  RA                  U5      5        M     U R                  " U6 nUR%                  USS9R'                  U5      nUR                  " U6 R)                  UUUSS
S9nU Vs/ s H  nUR+                  U5      PM     sn$ s  snf s  snf s  snf )Nr   FrZ   zColumn names zV appear in both expression output names and in `over` keys.
This is not yet supported.r   )drop_null_keysleft_right)howleft_onright_onsuffixr]   rX   encode)r=   r.   inner)r   r   r~   r   )!rN   prevwith_columnsr   r	   r
   nw_col_append_node_to_compliant_exprr`   setintersectionNotImplementedErrorsimple_selectr/   rB   
null_countanygroup_byaggjoinrj   zipappendr   _seriesrC   columndictionary_encodecombine_chunksindices_expr_from_series)r2   plx_aliasesleaf_ceoverlapmsgpartition_tblca	has_nullstmpalias
tbl_nativecurrent_cols
group_keysencoded_colscol_namehas_nulltmp_namer   tbl_encodedwindowedretrq   nodesrY   partition_byr#   s                          r(   r7   ArrowExpr.over.<locals>.func   s   --/Cyy$__T+~eCRjRU7V%WX>tRL
G$11%)<OOPST
 ?tRL
WWh5UKg,33LAAwA $G9 -1 1  *#..,,l;M5B5I5I5Q5QR5Qr*5QIRy>>kk,ukEII'R#((()# )  <CC7%u-7CC')yy"**--/C$&J,.L&)-*?*?SX&Y"(%%h/=aNH%%h/ ''1!kk55&--h7..x8+^-$W #% 6 	G !''		(>(>w(GH) 'Z, //<8K"++Ju+MQQRYZH++Z8=="# > C 8??weCNN5)w??a S DL @s   L.L*Lr9   rs   )rv   rt   current_nodekindrb   r   is_elementwiser   listreversediter_nodes_reversedru   r    r!   r"   )r#   r   rY   r   r7   rq   r   s   ```  @@r(   overArrowExpr.over   s    O8228<< ~~!!&&55		%dii.F.F_  &c**Xd4>>#E#E#GHIJI	@ I	@V ~~"&"="=#77MM	  
 	
r+   )r!   r   r    r"   N)r$   z'EvalSeries[ArrowDataFrame, ArrowSeries]r%   EvalNames[ArrowDataFrame]r&   zAliasNames | Noner'   r   r   r   r;   None)r<   z
type[Self]r6   r   r=   r   r;   r   )rG   intr=   r   r;   r   )r;   r   )rP   boolr;   zdict[str, Any])rY   Sequence[str]r;   r   )r   r   rY   r   r;   r   )__name__
__module____qualname____firstlineno__r   PYARROWr   __annotations__r)   classmethodr>   rJ   rN   rT   rv   r   r   ewm_mean__static_attributes__rS   r+   r(   r   r      s    &4&<&<O^< *8)?)? 5   9	 
 .    '  
  

8

 !
 

 
6 
 
 5 ).F!%F	F

>i
V  Hr+   r   r   )(
__future__r   typingr   r   r   pyarrowre   pyarrow.computecomputerh   narwhals._arrow.seriesr   narwhals._compliantr   narwhals._expression_parsingr	   r
   narwhals._utilsr   r   r   narwhals.functionsr   r   collections.abcr   typing_extensionsr   narwhals._arrow.dataframer   rM   r   narwhals._compliant.typingr   r   r   r   r   r   rS   r+   r(   <module>r      s]    " + +   . ) Z 
 -(&88LL8R!	*K78 R!r+   