Ë
    z�h|  ã                  ó   — d dl 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
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 erd dlmZ d dlmZ d dlmZ d dlmZ  G d„ ded   «      Z y)é    )Ú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                  óZ   — e Zd ZU ddddddddd	dd
œ
Zded<   	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)Ú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              ó  — || _         | j                  ||¬«      \  }| _        | _        |r|j	                  | j                  «      n|| _        t        j                  | j                  j                  | j                  «      | _
        || _        y )N)Úkeys)Ú_dfÚ_parse_keysÚ_keysÚ_output_key_namesÚ
drop_nullsÚ_compliant_frameÚpaÚTableGroupByÚ	compliantÚnativeÚ_groupedÚ_drop_null_keys)ÚselfÚdfr&   Údrop_null_keysÚframes        úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/narwhals/_arrow/group_by.pyÚ__init__zArrowGroupBy.__init__)   sp   € ð ˆŒØ48×4DÑ4DÀRÈdÐ4DÓ4SÑ1ˆˆtŒz˜4Ô1Ù@N × 0Ñ 0°·±Ô <ÐTYˆÔÜŸ™¨¯©×(=Ñ(=¸t¿z¹zÓJˆŒØ-ˆÕó    c           	     ó”  — | j                  |«       g }| j                  j                  «       }| j                  j                  «       }g | j                  ¢| j                  ¢­}|D �]�  }t	        || j
                  |«      \  }}|j                  dk(  r‡|j                  dk7  rd}	t        |	«      ‚|j                  |d   «       |j                  | j                  d   › d�«       |j                  | j                  d   dt        j                  d¬«      f«       Œ´| j                  |«      }
|
dv r$t        j                  |j                  d	   ¬
«      }n9|
dv rt        j                  d¬«      }n|
dk(  rt        j                  d¬«      }nd }| j                  |
«      }
|j!                  |«       |j!                  |D �cg c]	  }|› d|
› �‘Œ c}«       |j!                  |D �cg c]  }||
|f‘Œ	 c}«       �Œ� | j"                  j%                  |«      }t'        j(                  t*        «      }t-        |«      D ]  \  }}||   j                  |«       Œ t/        |j0                  «      t/        |«      k(  r!t3        |j0                  «      t3        |«      k(  sd|› d|j0                  › d�}	t        |	«      ‚|j0                  D �cg c]  }||   j5                  d«      ‘Œ }}|D �cg c]  }||   ‘Œ	 }}|j7                  |«      }| j
                  j8                  dk  rH|j0                  }|j;                  g | j                  ¢|D �cg c]  }|| j                  vsŒ|‘Œ c}¢«      }| j
                  j=                  |«      j?                  tA        tC        | j                  | j                  «      «      «      S c c}w c c}w c c}w c c}w c c}w )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   r/   Ú_depthÚ_function_nameÚAssertionErrorÚappendÚpcÚCountOptionsÚ
_leaf_nameÚVarianceOptionsÚ_call_kwargsÚ_remap_expr_nameÚextendr1   Ú	aggregateÚcollectionsÚdefaultdictÚlistÚ	enumerateÚsetÚcolumn_namesr"   ÚpopÚrename_columnsÚ_backend_versionÚselectÚ_with_nativeÚrenameÚdictÚzip)r3   ÚexprsÚaggsÚexpected_pyarrow_column_namesÚnew_column_namesÚexcludeÚexprÚoutput_namesÚaliasesÚmsgÚfunction_nameÚoptionÚoutput_nameÚresult_simpleÚexpected_old_names_indicesÚidxÚitemÚ	index_mapÚiÚcolumnsÚcols                        r7   ÚaggzArrowGroupBy.agg7   s›  € Ø×Ñ Ô&Ø+-ˆØ37·:±:·?±?Ó3DÐ%Ø&*§j¡j§o¡oÓ&7ÐØ8�D—J‘JÐ8 ×!7Ñ!7Ñ8ˆàó !	ˆDÜ$EØ�d—n‘n gó%Ñ!ˆL˜'ð �{‰{˜aÒà×&Ñ&¨%Ò/Ø{�CÜ(¨Ó-Ð-à ×'Ñ'¨°©
Ô3Ø-×4Ñ4¸¿
¹
À1¹°ÀfÐ5MÔNØ—‘˜TŸZ™Z¨™]¨G´R·_±_È%Ô5PÐQÔRØà ŸO™O¨DÓ1ˆMØ Ñ.Ü ×0Ñ0°d×6GÑ6GÈÑ6OÔP‘ØÐ"5Ñ5ÜŸ™¨eÔ4‘Ø 'Ò)ÜŸ™¨lÔ;‘à�à ×1Ñ1°-Ó@ˆMØ×#Ñ# GÔ,Ø)×0Ñ0ØEQÖR°k�K�=  - Ò1ÒRôð �K‰KØIUÖV¸+�+˜}¨fÒ5ÒVöð?!	ðF Ÿ™×/Ñ/°Ó5ˆô <G×;RÑ;RÔSWÓ;XÐ"Ü"Ð#@ÓAò 	9‰IˆC�Ø& tÑ,×3Ñ3°CÕ8ð	9ô �×*Ñ*Ó+¬sÐ3PÓ/QÒQÜ�M×.Ñ.Ó/´3Ð7TÓ3UÒUð 5Ð5RÐ4Sð TØ$×1Ñ1Ð2ð 3YðYð ô
 ! Ó%Ð%à@M×@ZÑ@Zö 
Ø8<Ð& tÑ,×0Ñ0°Õ3ð 
ˆ	ð  
ð :CÖC°AÐ,¨QÓ/ÐCÐÐCØ%×4Ñ4Ð5EÓFˆØ�>‰>×*Ñ*¨ZÒ7Ø#×0Ñ0ˆGØ)×0Ñ0ØQ�$—*‘*ÐQ¨wÖP¨¸#ÀTÇZÁZÒ:O¢ÒPÐQóˆMð �~‰~×*Ñ*¨=Ó9×@Ñ@Ü”�T—Z‘Z ×!7Ñ!7Ó8Ó9ó
ð 	
ùòC Sùò Wùò& 
ùò Dùò
  Qs$   Æ<N1
Ç N6
Ê?N;Ë O Í O
ÍO
c           	   #  óº  ‡
K  — t        d| j                  j                  ¬«      }d}| j                  j                  Š
t	        ˆ
fd„| j
                  D «       ddiŽ\  }}t        j                  } |g |¢|‘­d|dœŽ}‰
j                  d	||¬
«      Š
t        j                  |«      D ]²  }| j                  j                  ‰
j                  t        j                  ‰
|   |«      «      j                  |g«      «      } |j                  | j
                  Ž j                  d	«      }	t!        d„ |	D «       «       |j                  | j"                  j                  Ž f–— Œ´ y ­w)Né   )Ún_bytesrp   Ú__null_token_value__c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­w©N© )Ú.0ÚkeyÚtables     €r7   ú	<genexpr>z(ArrowGroupBy.__iter__.<locals>.<genexpr>ˆ   s   øè ø€ Ò/˜Sˆe�C�jÑ/ùs   ƒÚ	separatorÚ Úreplace)Únull_handlingÚnull_replacementr   )ro   Úfield_Úcolumnc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrx   r   )rz   Úels     r7   r}   z(ArrowGroupBy.__iter__.<locals>.<genexpr>›   s   è ø€ Ò:°Ô'¨×+Ñ:ùs   ‚)r   r/   rp   r0   r
   r)   rH   Úbinary_join_element_wiseÚ
add_columnÚuniquerZ   ÚfilterÚequalÚdropÚsimple_selectÚrowÚtupler'   )r3   Ú	col_tokenÚ
null_tokenÚitÚseparator_scalarÚ
concat_strÚ
key_valuesÚvÚtrŽ   r|   s             @r7   Ú__iter__zArrowGroupBy.__iter__€   sM  øè ø€ Ü2Ø˜tŸ~™~×5Ñ5ô
ˆ	ð 1ˆ
à—‘×%Ñ%ˆÜ>Û/ D§J¡JÔ/ð 
Ø;=ñ 
ÑˆÐô
 "$×!<Ñ!<ˆ
Ùð 
Øð
àñ
ð $Ø'ò	
ˆ
ð × Ñ  1¨Y¸zÐ ÓJˆä—‘˜:Ó&ò 	ˆAØ—‘×+Ñ+Ø—‘œRŸX™X e¨IÑ&6¸Ó:Ó;×@Ñ@À)ÀÓMóˆAð "�!—/‘/ 4§:¡:Ð.×2Ñ2°1Ó5ˆCäÑ:°cÔ:Ó:Ø�—‘ §¡×!1Ñ!1Ð2ðó ñ	ùs   ƒEEN)r4   r   r&   z#Sequence[ArrowExpr] | Sequence[str]r5   ÚboolÚreturnÚNone)r^   r   rš   r   )rš   z$Iterator[tuple[Any, ArrowDataFrame]])Ú__name__Ú
__module__Ú__qualname__r$   Ú__annotations__r8   rr   r˜   ry   r9   r7   r   r      sg   … àØØ&ØØØØØØ$Øñ@€KÐ<ó ð.àð.ð 2ð.ð ð.ð 
ó.óG
ôRr9   r   )r   r   )!Ú
__future__r   rP   Útypingr   r   r   r   r   r	   Úpyarrowr-   Úpyarrow.computeÚcomputerH   Ú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   ry   r9   r7   ú<module>r­      sU   ðÝ "ã Ý  Ý Ý Ý Ý Ý ã Ý å AÝ 3Ý ,Ý JÝ 9áÝ8Ý.Ý1Ý@ôB�<Ð =Ñ>õ Br9   