
    hx                    
   S SK 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  S SKJr  S SK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  S SK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\S   5      r g)    )annotationsN)TYPE_CHECKING)Any)ClassVar)Iterator)Mapping)Sequence)cast_to_comparable_string_typesextract_py_scalar)EagerGroupBy)!evaluate_output_names_and_aliases)generate_temporary_column_name)ArrowDataFrame)	ArrowExpr)
Incomplete)NarwhalsAggregationc                  h    \ rS rSr% SSSSSSSS	S
S	S.
rS\S'           SS jrSS jrSS jrSr	g)ArrowGroupBy   summeanapproximate_medianmaxminstddevvariancecountcount_distinct)
r   r   medianr   r   stdvarlenn_uniquer   z+ClassVar[Mapping[NarwhalsAggregation, Any]]_REMAP_AGGSc                  U(       a  UR                  U5      U l        OXl        [        U5      U l        [        R
                  " U R                  R                  U R                  5      U l        g N)	
drop_nulls_compliant_framelist_keyspaTableGroupBy	compliantnative_grouped)selfcompliant_framekeysdrop_null_keyss       J/var/www/html/env/lib/python3.13/site-packages/narwhals/_arrow/group_by.py__init__ArrowGroupBy.__init__)   sK     $3$>$>t$DD!$3! $T

(=(=tzzJ    c           	     *   U R                  U5        / nU R                  R                  5       nU R                  R                  5       nU GH  n[        XPR                  U R                  5      u  pgUR
                  S:X  a  UR                  S:w  a  Sn[        U5      eUR                  US   5        UR                  U R                  S    S35        UR                  U R                  S   S[        R                  " SS945        M  U R                  U5      n	U	S;   a"  [        R                  " UR                  S	   S
9n
O8U	S;   a  [        R                  " SS9n
OU	S:X  a  [        R                  " SS9n
OS n
U R                  U	5      n	UR                  U5        UR                  U Vs/ s H	  o SU	 3PM     sn5        UR                  U Vs/ s H  oX4PM     sn5        GM     U R                   R#                  U5      n[$        R&                  " [(        5      n[+        U5       H  u  pX   R                  U5        M     [-        UR.                  5      [-        U5      :X  a"  [1        UR.                  5      [1        U5      :X  d  SU SUR.                   S3n[        U5      eUR.                   Vs/ s H  oU   R3                  S5      PM     nnU Vs/ s H  nUU   PM
     nnUR5                  U5      nU R                  R6                  S:  aN  UR.                  nUR9                  / U R                  QU Vs/ s H  nUU R                  ;  d  M  UPM     snQ5      nU R                  R;                  U5      $ s  snf s  snf s  snf s  snf s  snf )Nr   r#   z_Safety assertion failed, please report a bug to https://github.com/narwhals-dev/narwhals/issues_countr   all)mode>   r!   r"   ddof)r=   >   r#   r$   
only_valid_z"Safety assertion failed, expected z got zH, please report a bug at https://github.com/narwhals-dev/narwhals/issues)   r   r   )_ensure_all_simpler+   copyr   r.   _depth_function_nameAssertionErrorappendpcCountOptions
_leaf_nameVarianceOptions_call_kwargs_remap_expr_nameextendr0   	aggregatecollectionsdefaultdictr*   	enumeratesetcolumn_namesr#   poprename_columns_backend_versionselect_with_native)r1   exprsaggsexpected_pyarrow_column_namesnew_column_namesexproutput_namesaliasesmsgfunction_nameoptionoutput_nameresult_simpleexpected_old_names_indicesidxitem	index_mapicolumnscols                       r5   aggArrowGroupBy.agg8   sV   &+-37::??3D%&*jjoo&7D$Enndjj%!L {{a&&%/{C(-- ''
3-44

1f5MNTZZ]GR__%5PQR OOD1M. 00d6G6G6OP"55e4')l; 11-@M##G,)00EQR\k=-1\R KKIUV+}5V? F //5 <G;R;RSW;X""#@AIC&,33C8 B **+s3P/QQM../37T3UU 55R4S T$112 3YY 
 !%%@M@Z@Z 
@Zt,003@Z 	  
 :CCA,Q/C%445EF>>**Z7#00G)00Q$**QwPw#TZZ:OwPQM ~~**=99A S W& 
 D
  Qs$   )M<
N
4NN;N
N
c           	   #  r  ^
#    [        SU R                  R                  S9nSnU R                  R                  m
[	        U
4S jU R
                   5       SS06u  p4[        R                  nU" / UQUP7SUS.6nT
R                  S	XS
9m
[        R                  " U5       H  nU R                  R                  T
R                  [        R                  " T
U   U5      5      R                  U/5      5      nUR                  " U R
                  6 R                  S	5      n	[!        S U	 5       5      U4v   M     g 7f)N   )n_bytesrj   __null_token_value__c              3  .   >#    U  H
  nTU   v   M     g 7fr'    ).0keytables     r5   	<genexpr>(ArrowGroupBy.__iter__.<locals>.<genexpr>   s     /JSeCjJs   	separator replace)null_handlingnull_replacementr   )ri   field_columnc              3  8   #    U  H  n[        U5      v   M     g 7fr'   r   )rt   els     r5   rw   rx      s     <")"--s   )r   r.   rj   r/   r
   r+   rG   binary_join_element_wise
add_columnuniquerX   filterequaldropsimple_selectrowtuple)r1   	col_token
null_tokenitseparator_scalar
concat_str
key_valuesvtr   rv   s             @r5   __iter__ArrowGroupBy.__iter__}   s&    2t~~55
	 1
%%>/DJJ/ 
;= 

 "$!<!<
 


 $'	

   1Y J:&A++RXXeI&6:;@@)MA //4::.2215C<<<a?? 's   D4D7)r)   r0   r+   N)r2   r   r3   zSequence[str]r4   boolreturnNone)rY   r   r   r   )r   z$Iterator[tuple[Any, ArrowDataFrame]])
__name__
__module____qualname____firstlineno__r%   __annotations__r6   rl   r   __static_attributes__rs   r8   r5   r   r      sm    &$@K< K'K K K 
KC:J@r8   r   )r   r   )!
__future__r   rO   typingr   r   r   r   r   r	   pyarrowr,   pyarrow.computecomputerG   narwhals._arrow.utilsr
   r   narwhals._compliantr   narwhals._expression_parsingr   narwhals.utilsr   narwhals._arrow.dataframer   narwhals._arrow.exprr   narwhals._arrow.typingr   narwhals._compliant.group_byr   r   rs   r8   r5   <module>r      sW    "           A 3 , J 98.1@{@< => {@r8   