
    Lpj#                        S SK Jr  S SKrS SKJrJrJr  S SK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  S SKJrJr  \(       a,  S SKJrJr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$  S SK%J&r&   " S S\S   5      r'g)    )annotationsN)TYPE_CHECKINGAnyClassVar)BACKEND_VERSIONcast_to_comparable_string_typesextract_py_scalar)EagerGroupBy)!evaluate_output_names_and_aliases)generate_temporary_column_namerequires)IteratorMappingSequence)ArrowDataFrame)	ArrowExpr)AggregateOptionsAggregation
Incomplete)NarwhalsAggregation)UniqueKeepStrategyc                  &   \ rS rSr% SSSSSSSS	S
S	SSSSSS.rS\S'   SSSS.rS\S'   \" S5      rS\S'   \" S5      r	S\S'   \" S5      r
S\S'   \" S5      rS\S'   \" S5      rS\S'           S'S  jr    S(S! jr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allanyfirstlast)r   r   medianr   r   stdvarlenn_uniquer"   r$   r%   r&   r'   	any_valuez3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]_REMAP_AGGS)r%   r&   r'   z2ClassVar[Mapping[UniqueKeepStrategy, Aggregation]]_REMAP_UNIQUE)r+   r,   z(ClassVar[frozenset[NarwhalsAggregation]]_OPTION_COUNT_ALL)r"   _OPTION_COUNT_VALID)r&   r'   r-   _OPTION_ORDERED)r)   r*   _OPTION_VARIANCE)r%   r$   r   _OPTION_SCALARc                  Xl         U R                  XS9u  o@l        U l        U(       a  UR	                  U R                  5      OUU l        X0l        g )N)keys)_df_parse_keys_keys_output_key_names
drop_nulls_compliant_frame_drop_null_keys)selfdfr6   drop_null_keysframes        T/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_arrow/group_by.py__init__ArrowGroupBy.__init__C   sH     484D4DR4D4S1z41@N 0 0 <TY-    c                  S nU R                  U5      nU R                  U5      nX0R                  ;   a  US   n[        R                  " US9nOX0R
                  ;   a  [        R                  " SS9nO}X0R                  ;   a  [        R                  " SS9nOYX0R                  ;   a  [        R                  " SS9nO5X0R                  ;   a&  UR                  SS	5      n[        R                  " US
9nU R                  U5      U4$ )Nddof)rG   r$   mode
only_validr   )	min_countignore_nullsF)
skip_nulls)
_leaf_name_kwargsr3   pcVarianceOptionsr0   CountOptionsr1   r4   ScalarAggregateOptionsr2   get_remap_expr_name)r>   exproptionfunction_namekwargsrG   rL   s          rB   _configure_aggArrowGroupBy._configure_aggP   s     +/-d#111&>D''T2F444__%0F666__,7F111..;F222!::ne<L..,GF$$]3V;;rE   c                   SnSnU H  n[        UR                  R                  5       5      nUR                  U R                  ;  a  MB  SnUR
                  R                  SS5      =n(       d  Mi  U(       a  Xb:w  a  SU SU S3n[        U5      eUnM     U(       d4  [        S:  a*  S	[        R                  " [        5      < S
3n[        U5      eU(       aE  [        R                  " U R                  R                  " USSS.6R                  U R                   US9$ U(       d4  [        R                  " U R                  R                  U R                   SS9$ [        R                  " U R                  R                  U R                   5      $ )N TForder_byz?Only one `order_by` can be specified in `group_by`. Found both z and .)   zlUsing `first/last` in a `group_by().agg(...)` context is only available in 'pyarrow>=14.0.0', found version z3.

See https://github.com/apache/arrow/issues/36709)
descending
nulls_last)use_threads)next	_metadataop_nodes_reversednamer2   rY   rT   NotImplementedErrorr   r   _unparse_versionpaTableGroupBy	compliantsortnativer9   )r>   exprsr^   rc   rV   md_current_order_bymsgs           rB   _configure_groupedArrowGroupBy._configure_groupedd   sV   Ddnn6689Bwwd222K$&IIMM*b$AA A 1 =[\d[eejk|j}}~C-c22,  6!!)!:!:?!K N OCD 
 &c**??##X%ERYY

' 
 ??4>>#8#8$**RWXXt~~44djjAArE   c           
     \   U R                  U5        U R                  " U6 n/ nU R                  R                  5       nU R                  R                  5       n/ U R                  QU R                  Q7nU GHG  n[        XpR                  U5      u  pUR                  n
[        U
R                  5       5      n[        U5      S:X  a  US   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      u  pU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MJ     UR%                  U5      n[&        R(                  " [        5      n[+        U5       H  u  nnUU   R                  U5        M     [-        UR.                  5      [-        U5      :X  a"  [        UR.                  5      [        U5      :X  d  S
U SUR.                   S3n[        U5      eUR.                   Vs/ s H  nUU   R1                  S5      PM     nnU Vs/ s H  nUU   PM
     nnUR3                  U5      nU R                  R5                  U5      R7                  [9        [;        U R                  U R                  SS95      5      $ s  snf s  snf s  snf s  snf )N   r   r+   z_Safety assertion failed, please report a bug to https://github.com/narwhals-dev/narwhals/issues_countr"   r$   rH   _z"Safety assertion failed, expected z got zH, please report a bug at https://github.com/narwhals-dev/narwhals/issuesF)strict)_ensure_all_simplers   r9   copyr:   r   rl   re   listrf   r+   rg   AssertionErrorappendrP   rR   rZ   extend	aggregatecollectionsdefaultdict	enumeratesetcolumn_namespoprename_columns_with_nativerenamedictzip)r>   ro   groupedaggsexpected_pyarrow_column_namesnew_column_namesexcluderV   output_namesaliasesrp   rf   rr   rX   rW   output_nameresult_simpleexpected_old_names_indicesidxitem	index_mapis                         rB   aggArrowGroupBy.agg   s   &))51GI37::??3D%&*jjoo&78DJJ8!7!78D$Enng%!L B $R%9%9%; <$%*$Q',,5{C(-- ''
3-44

1f5MNTZZ]GR__%5PQR$($7$7$=!M##G,)00EQR\k=-1\R KKIUV+}5V- 4  ))$/ <G;R;RSW;X""#@AIC&t,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~~**=9@@TZZ!7!7FG
 	
7 S W& 
 Ds   L
'L
L$(L)c           	   #    ^
#    [        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R                  " U R"                  R                  6 4v   M     g 7f)N   )n_bytescolumns__null_token_value__c              3  .   >#    U  H
  nTU   v   M     g 7fNr]   ).0keytables     rB   	<genexpr>(ArrowGroupBy.__iter__.<locals>.<genexpr>   s     /JSeCjJs   	separator replace)null_handlingnull_replacementr   )r   field_columnc              3  8   #    U  H  n[        U5      v   M     g 7fr   )r	   )r   els     rB   r   r      s     :c'++cs   )r   rl   r   rn   r   r9   rP   binary_join_element_wise
add_columnuniquer   filterequaldropsimple_selectrowtupler7   )r>   	col_token
null_tokenitseparator_scalar
concat_str
key_valuesvtr   r   s             @rB   __iter__ArrowGroupBy.__iter__   s;    2t~~55
	 1
%%>/DJJ/ 
;= 

 "$!<!<
 

!
1:Z

   1Y J:&A++RXXeI&6:;@@)MA //4::.2215C:c::!1!12  's   EE)r<   r7   r=   r9   r:   N)r?   r   r6   z#Sequence[ArrowExpr] | Sequence[str]r@   boolreturnNone)rV   r   r   z+tuple[Aggregation, AggregateOptions | None])ro   r   r   zpa.TableGroupBy)ro   r   r   r   )r   z$Iterator[tuple[Any, ArrowDataFrame]])__name__
__module____qualname____firstlineno__r.   __annotations__r/   	frozensetr0   r1   r2   r3   r4   rC   rZ   rs   r   r   __static_attributes__r]   rE   rB   r   r       s   &$HKD $ IME 
 CLC?  ENjDYAY@I&AO=  BK>AZ>Z?H@N< .. 2. . 
.<<	4<(B@:
xrE   r   )r   r   r   )(
__future__r   r   typingr   r   r   pyarrowrj   pyarrow.computecomputerP   narwhals._arrow.utilsr   r   r	   narwhals._compliantr
   narwhals._expression_parsingr   narwhals._utilsr   r   collections.abcr   r   r   narwhals._arrow.dataframer   narwhals._arrow.exprr   narwhals._arrow.typingr   r   r   narwhals._compliant.typingr   narwhals.typingr   r   r]   rE   rB   <module>r      sa    "  / /   
 - J D;;8. 
 ?2z< LM zrE   