§
    cŠtjR?  ã                  ó<  — U 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
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 e
r?d dlmZmZmZmZ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'm(Z( d dl)m*Z* d dl+m,Z, dZ-de.d<   dZ/de.d<   ed         Z0de.d<   eddddddd d!d"d#d$d%d&d'd(d)d*d+d,e0f         Z1de.d-<   	 d.Z2de.d/<   	 eZ3de.d0<   	 d d1d d2œZ4d3e.d4<    ed5¬6¦  «        dFd;„¦   «         Z5 G d<„ d=¦  «        Z6 G d>„ d?ed@dAe1f         ¦  «        Z7dGdC„Z8dHdE„Z9dS )Ié    )ÚannotationsN)Ú	lru_cache)Úchain)Úmethodcaller)ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteral)ÚEagerGroupBy)Úissue_warning)Ú!evaluate_output_names_and_aliases)Úmake_group_by_kwargs)Úis_pandas_like_dataframe)ÚCallableÚIterableÚIteratorÚMappingÚSequence)Ú	TypeAlias)ÚDataFrameGroupBy)ÚUnpack)ÚNarwhalsAggregationÚScalarKwargs)ÚPandasLikeDataFrame)ÚPandasLikeExprz._NativeGroupBy[tuple[str, ...], Literal[True]]r   ÚNativeGroupByz(Callable[[pd.DataFrame], pd.Series[Any]]ÚNativeApply)ÚcovÚskewÚInefficientNativeAggregationÚanyÚallÚcountÚidxmaxÚidxminÚmaxÚmeanÚmedianÚminÚmodeÚnthÚnuniqueÚprodÚquantileÚsemÚsizeÚstdÚsumÚvarÚNativeAggregationz.Callable[[Any], pd.DataFrame | pd.Series[Any]]Ú
_NativeAggÚNonStrHashableéÿÿÿÿ)ÚfirstÚlastÚ	any_valuez,Mapping[NarwhalsAggregation, Literal[0, -1]]Ú_REMAP_ORDERED_INDEXé    )ÚmaxsizeÚnameÚkwdsúUnpack[ScalarKwargs]Úreturnc               óþ   — | dk    rt          | d¬¦  «        S | dk    r*d|v sJ ‚d|v sJ ‚t          | |d         |d         ¬¦  «        S |r|                     d¦  «        dk    rt          | ¦  «        S t          | fi |¤ŽS )	Nr,   F)Údropnar.   Úinterpolation)ÚqrD   Úddofé   )r   Úget)r>   r?   s     ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_pandas_like/group_by.pyÚ_native_aggrJ   E   s®   € àˆyÒÐÝ˜D¨Ð/Ñ/Ô/Ð/ØˆzÒÐØ˜TÐ!Ð!Ð!Ð!Ø $Ð&Ð&Ð&Ð&Ý˜D D¨Ô$4ÀDÈÔDYÐZÑZÔZÐZØð "�4—8’8˜FÑ#Ô# qÒ(Ð(Ý˜DÑ!Ô!Ð!Ý˜Ð%Ð% Ð%Ð%Ð%ó    c                  óš   — e Zd ZU dZded<   ded<   ded<   dd	„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„Zdd„Zdd„Zedd„¦   «         Zd d„ZdS )!ÚAggExpraM  Wrapper storing the intermediate state per-`PandasLikeExpr`.

    There's a lot of edge cases to handle, so aim to evaluate as little
    as possible - and store anything that's needed twice.

    Warning:
        While a `PandasLikeExpr` can be reused - this wrapper is valid **only**
        in a single `.agg(...)` operation.
    r   ÚexprzSequence[str]Úoutput_namesÚaliasesrA   ÚNonec                ó>   — || _         d| _        d| _        d| _        d S )N© Ú )rN   rO   rP   Ú
_leaf_name)ÚselfrN   s     rI   Ú__init__zAggExpr.__init__a   s#   € ØˆŒ	ØˆÔØˆŒØ57ˆŒˆˆrK   Úgroup_byÚPandasLikeGroupByc               óh   — |j         }|j        }t          | j        ||¦  «        \  | _        | _        | S )zd**Mutating operation**.

        Stores the results of `evaluate_output_names_and_aliases`.
        )Ú	compliantÚexcluder   rN   rO   rP   )rV   rX   Údfr\   s       rI   Úwith_expand_nameszAggExpr.with_expand_namesg   s=   € ð
 ÔˆØÔ"ˆÝ*KØŒI�r˜7ñ+
ô +
Ñ'ˆÔ˜4œ<ð ˆrK   úpd.DataFrame | pd.Series[Any]c                óÌ  ‡‡‡‡‡— |j         }| j        }|                      ¦   «         r*|                      ¦   «         r|                     ¦   «         }�nW|                      ¦   «         rQ|                     ¦   «         Š|j                             ¦   «         Š‰                     ˆˆfd„|D ¦   «         ¦  «        }�nò|                      ¦   «         r·|j        }| 	                    | j
        ¦  «        }|                     d¦  «        x}dk    rd|› d|j        › d�}t          |¦  «        ‚t          |¦  «        }	|j        Š|j        |j        cŠŠ|                     ¦   «         Š‰                     ˆˆˆfd„|	D ¦   «         ¦  «        }�n'|                      ¦   «         s(|                      ¦   «         s|                      ¦   «         rž |                      ¦   «         |g |j        ¢|¢         ¦  «        }|j        j        }
|
                     ¦   «         }|
                     ¦   «         r#|dk     r|                     |j        d	¬
¦  «         nh|                     |j        ¦  «        }nMt3          |¦  «        dk    r|d         nt          |¦  «        } |                      ¦   «         ||         ¦  «        }t5          |¦  «        rt          | j        ¦  «        |_        n| j        d         |_        |S )z8Evaluate the wrapped expression as a group_by operation.c                ój   •— g | ]/}‰                      ‰¦  «                             |¦  «        j        ‘Œ0S rS   )Úfrom_nativeÚaliasÚnative)Ú.0r>   ÚnsÚresult_singles     €€rI   ú
<listcomp>z)AggExpr._getitem_aggs.<locals>.<listcomp>~   s6   ø€ ÐTÐTÐTÀd�—’ Ñ.Ô.×4Ò4°TÑ:Ô:ÔAÐTÐTÐTrK   Úkeepr!   z`Expr.mode(keep='z7')` is not implemented in group by context for backend z3

Hint: Use `nw.col(...).mode(keep='any')` instead.c                ó  •— g | ]„}  ‰j         g ‰¢|‘fi ‰¤Ž                     ¦   «                              d ¬¦  «                             |¦  «        j         ‰fi ‰¤Ž|                              d¦  «                             ¦   «         ‘Œ…S )F)Ú	ascendingrG   )Úgroupbyr0   Úsort_valuesÚreset_indexÚheadÚ
sort_index)re   ÚcolÚkeysÚkwargsrd   s     €€€rI   rh   z)AggExpr._getitem_aggs.<locals>.<listcomp>“   s¬   ø€ ð 	ð 	ð 	ð ð�N�F”N < T <¨3 <Ð:Ð:°6Ð:Ð:ß’T‘V”Vß ’[¨5�[Ñ1Ô1ß ’[ Ñ%Ô%Ü˜Tð	-ð -ð &,ð	-ð -ð .1ô	2÷
 ’T˜!‘W”Wß’Z‘\”\ð	ð 	ð 	rK   ©é   r   T©ÚinplacerG   r   )Ú_groupedrO   Úis_lenÚis_top_level_functionr0   r[   Ú__narwhals_namespace__Ú_concat_horizontalÚis_modeÚ_kwargsrN   rH   Ú_implementationÚNotImplementedErrorÚlistrd   Ú_keysÚ_group_by_kwargsÚis_lastÚis_firstÚis_any_valueÚ
native_aggÚ_backend_versionÚ	is_pandasÚ	set_indexÚlenr   rP   Úcolumnsr>   )rV   rX   ÚgroupedÚnamesÚresultr[   Únode_kwargsri   ÚmsgÚcolsÚimplÚbackend_versionÚselectrr   rs   rd   rf   rg   s                @@@@@rI   Ú_getitem_aggszAggExpr._getitem_aggss   sõ  øøøøø€ àÔ#ˆàÔ!ˆØ�;Š;‰=Œ=ð 1	8˜T×7Ò7Ñ9Ô9ð 1	8Ø—\’\‘^”^ˆF‰FØ�[Š[‰]Œ]ð /	8Ø#ŸLšL™NœNˆMØÔ#×:Ò:Ñ<Ô<ˆBØ×*Ò*ØTÐTÐTÐTÐTÈeÐTÑTÔTñô ˆF‰Fð �\Š\‰^Œ^ð )	8Ø Ô*ˆIØ"×*Ò*¨4¬9Ñ5Ô5ˆKØ#Ÿš¨Ñ/Ô/Ð/�°EÒ9Ð9ðH¨ð Hð HØ(Ô8ðHð Hð Hð õ
 *¨#Ñ.Ô.Ð.å˜‘;”;ˆDØÔ%ˆFØ#œ>¨8Ô+DˆLˆD�&ð ×1Ò1Ñ3Ô3ˆBØ×*Ò*ð	ð 	ð 	ð 	ð 	ð 	ð  $ð	ñ 	ô 	ñô ˆF‰Fð �\Š\‰^Œ^ð 	8˜tŸ}š}™œð 	8°$×2CÒ2CÑ2EÔ2Eð 	8Ø&�T—_’_Ñ&Ô& wÐ/H°´Ð/HÀ%Ð/HÔ'IÑJÔJˆFØÔ%Ô5ˆDØ"×3Ò3Ñ5Ô5ˆOØ�~Š~ÑÔð : O°fÒ$<Ð$<à× Ò  ¤¸Ð Ñ>Ô>Ð>Ð>à×)Ò)¨(¬.Ñ9Ô9��å!$ U¡¤¨q¢ �U˜1”X�Xµd¸5±k´kˆFØ&�T—_’_Ñ&Ô& w¨v¤Ñ7Ô7ˆFÝ# FÑ+Ô+ð 	*Ý! $¤,Ñ/Ô/ˆFŒNˆNàœ, qœ/ˆFŒKØˆrK   Úboolc                ó   — | j         dk    S )Nr‹   ©Ú	leaf_name©rV   s    rI   ry   zAggExpr.is_len°   s   € ØŒ~ Ò&Ð&rK   c                ó   — | j         dk    S )Nr9   r™   r›   s    rI   r„   zAggExpr.is_last³   ó   € ØŒ~ Ò'Ð'rK   c                ó   — | j         dk    S )Nr8   r™   r›   s    rI   r…   zAggExpr.is_first¶   s   € ØŒ~ Ò(Ð(rK   c                ó   — | j         dk    S )Nr*   r™   r›   s    rI   r}   zAggExpr.is_mode¹   r�   rK   c                ó   — | j         dk    S )Nr:   r™   r›   s    rI   r†   zAggExpr.is_any_value¼   s   € ØŒ~ Ò,Ð,rK   c                óz   — t          t          | j        j                             ¦   «         ¦  «        ¦  «        dk    S )NrG   )r‹   r�   rN   Ú	_metadataÚop_nodes_reversedr›   s    rI   rz   zAggExpr.is_top_level_function¿   s.   € å•4˜œ	Ô+×=Ò=Ñ?Ô?Ñ@Ô@ÑAÔAÀQÒFÐFrK   úNarwhalsAggregation | Anyc                ón   — | j         x}r|S t                                | j        ¦  «        | _         | j         S ©N)rU   rY   rN   )rV   r>   s     rI   rš   zAggExpr.leaf_nameÃ   s5   € à”?Ð"ˆ4ð 	ØˆKÝ+×6Ò6°t´yÑAÔAˆŒØŒÐrK   r5   c                ón  — t                                | j        ¦  «        }t          | j        j                             ¦   «         ¦  «        }| j        t          v rL|j         	                    d¦  «        rd}t          |¦  «        ‚t          dt          | j                 ¬¦  «        S t          |fi |j        ¤ŽS )z@Return a partial `DataFrameGroupBy` method, missing only `self`.Úignore_nullszd`Expr.any_value(ignore_nulls=True)` is not supported in a `group_by` context for pandas-like backendr+   )Ún)rY   Ú_remap_expr_namerš   ÚnextrN   r¢   r£   r;   rs   rH   r€   r   rJ   )rV   Únative_nameÚ	last_noder‘   s       rI   r‡   zAggExpr.native_aggÊ   sª   € å'×8Ò8¸¼ÑHÔHˆÝ˜œÔ,×>Ò>Ñ@Ô@ÑAÔAˆ	ØŒ>Õ1Ð1Ð1ØÔ×#Ò# NÑ3Ô3ð /ð6ð õ *¨#Ñ.Ô.Ð.Ý Õ)=¸d¼nÔ)MÐNÑNÔNÐNÝ˜;Ð;Ð;¨)Ô*:Ð;Ð;Ð;rK   N)rN   r   rA   rQ   )rX   rY   rA   rM   )rX   rY   rA   r_   )rA   r—   )rA   r¤   )rA   r5   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rW   r^   r–   ry   r„   r…   r}   r†   rz   Úpropertyrš   r‡   rS   rK   rI   rM   rM   R   s3  € € € € € € ðð ð ÐÐÑØÐÐÑØÐÐÑð8ð 8ð 8ð 8ð
ð 
ð 
ð 
ð;ð ;ð ;ð ;ðz'ð 'ð 'ð 'ð(ð (ð (ð (ð)ð )ð )ð )ð(ð (ð (ð (ð-ð -ð -ð -ðGð Gð Gð Gð ðð ð ñ „Xðð<ð <ð <ð <ð <ð <rK   rM   c                  ó  — e Zd ZU i dd“dd“dd“dd“dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“Zded<   ded<   	 ded<   	 ded<   	 ded<   	 ed;d„¦   «         Zd<d'„Zd=d*„Zd>d.„Z	d?d1„Z
d@d5„ZdAd7„ZdBd9„Zd:S )CrY   r2   r'   r(   r&   r)   r*   r1   r3   r‹   r0   Ún_uniquer,   r#   r.   r"   r!   r8   r+   r9   r:   z9ClassVar[Mapping[NarwhalsAggregation, NativeAggregation]]Ú_REMAP_AGGSútuple[str, ...]Ú_original_columnsz	list[str]r‚   Ú_output_key_nameszMapping[str, bool]rƒ   rA   c                ó   — | j         S )z>Group keys to ignore when expanding multi-output aggregations.)Ú_excluder›   s    rI   r\   zPandasLikeGroupBy.excludeû   s   € ð Œ}ÐrK   r]   r   rr   ú(Sequence[PandasLikeExpr] | Sequence[str]Údrop_null_keysr—   rQ   c              óÊ  — t          |j        ¦  «        | _        || _        |                      ||¦  «        \  | _        | _        | _        g | j        ¢| j        ¢R | _        t          |¬¦  «        | _
        | j        j        | _        t          | j        j        j        ¦  «                             | j        j        ¦  «        r"| j                             d¬¦  «        | _        d S d S )N)r½   T)Údrop)ÚtuplerŒ   r¸   Ú_drop_null_keysÚ_parse_keysÚ_compliant_framer‚   r¹   r»   r   rƒ   r[   rd   Ú_nativeÚsetÚindexrŽ   Úintersectionrn   )rV   r]   rr   r½   s       rI   rW   zPandasLikeGroupBy.__init__   sÙ   € õ "' r¤zÑ!2Ô!2ˆÔØ-ˆÔØDH×DTÒDTØ�ñE
ô E
ÑAˆÔ˜tœz¨4Ô+Að *P¨4¬:Ð)O¸Ô8NÐ)OÐ)OˆŒÝ 4ÀNÐ SÑ SÔ SˆÔð ”~Ô,ˆŒÝˆtŒ|Ô!Ô'Ñ(Ô(×5Ò5°d´nÔ6LÑMÔMð 	?Øœ<×3Ò3¸Ð3Ñ>Ô>ˆDŒLˆLˆLð	?ð 	?rK   Úexprsr   c                ó  — d}g }d}|D ]³}|                      t          |¦  «                             | ¦  «        ¦  «         |                      |¦  «        sd}t	          |j                             ¦   «         ¦  «        }|j                             dd¦  «        x}r"|r||k    rd|› d|› d�}t          |¦  «        ‚|}Œ´|rR | j
                             t          |¦  «        d¬	¦  «        j        | j                             ¦   «         fi | j        ¤Ž}	n/ | j
        j        | j                             ¦   «         fi | j        ¤Ž}	|	| _        |rŠ|rB| j                             ¦   «         }
|
                     |                      |¦  «        ¦  «        }n{| j                             ¦   «                              t          |	j        ¦  «        | j        ¬
¦  «        }n5| j        j        j        rt7          ¦   «         ‚|                      |	|¦  «        }| j        j        }|                     ¦   «         }|                     ¦   «         r|dk     r|                      d¬¦  «         n|                      ¦   «         }|  !                    ||¦  «        S )NTrS   FÚorder_byz?Only one `order_by` can be specified in `group_by`. Found both z and ú.r8   )Úna_position)rŒ   rt   rv   )"ÚappendrM   r^   Ú
_is_simpler«   r¢   r£   rs   rH   r€   rÄ   rm   r�   rl   r‚   Úcopyrƒ   rx   r[   r{   r|   r–   Ú__native_namespace__Ú	DataFrameÚgroupsrd   ÚemptyÚempty_results_errorÚ_apply_aggsr   rˆ   r‰   rn   Ú_select_results)rV   rÈ   Úall_aggs_are_simpleÚ	agg_exprsrÊ   rN   ÚmdÚ_current_order_byr‘   r�   rf   r�   r“   r”   s                 rI   ÚaggzPandasLikeGroupBy.agg  s£  € Ø"ÐØ#%ˆ	ØˆØð 		-ð 		-ˆDØ×Ò�W T™]œ]×<Ò<¸TÑBÔBÑCÔCÐCØ—?’? 4Ñ(Ô(ð ,Ø&+Ð#Ý�d”n×6Ò6Ñ8Ô8Ñ9Ô9ˆBØ$&¤I§M¢M°*¸bÑ$AÔ$AÐAÐ ð -Øð 3Ð 1°XÒ =Ð =ØÐ\dÐÐÐk|ÐÐÐ�CÝ-¨cÑ2Ô2Ð2Ø,�øàð 	Wð& T¤\×%=Ò%=Ý�X‘”¨Gð &>ñ &ô &ä�d”j—o’oÑ'Ô'ð&Bð &Bà+/Ô+@ð&Bð &BˆGˆGð +�d”lÔ*¨4¬:¯?ª?Ñ+<Ô+<ÐVÐVÀÔ@UÐVÐVˆGØˆŒàð 	6àð Ø”^×:Ò:Ñ<Ô<�Ø×.Ò.¨t×/AÒ/AÀ)Ñ/LÔ/LÑMÔM��àœ×<Ò<Ñ>Ô>×HÒHÝ˜œÑ(Ô(°$´*ð Iñ ô ��ð Œ^Ô"Ô(ð 	6Ý%Ñ'Ô'Ð'à×%Ò% g¨uÑ5Ô5ˆFàŒ~Ô-ˆØ×/Ò/Ñ1Ô1ˆØ�>Š>ÑÔð 	* °&Ò 8Ð 8à×Ò tÐÑ,Ô,Ð,Ð,à×'Ò'Ñ)Ô)ˆFà×#Ò# F¨IÑ6Ô6Ð6rK   rØ   úSequence[AggExpr]úpd.DataFramec          	     ó  — t          j        d„ |D ¦   «         ¦  «        } | j                             |d¬¦  «        j        g | j        ¢|¢R Ž                      t          t          | j        | j	        d¬¦  «        ¦  «        ¦  «        S )zgResponsible for remapping temp column names back to original.

        See `ParseKeysGroupBy`.
        c              3  ó$   K  — | ]}|j         V — Œd S r¦   )rP   )re   Úes     rI   ú	<genexpr>z4PandasLikeGroupBy._select_results.<locals>.<genexpr>L  s$   è è € Ð'EÐ'E°a¨¬	Ð'EÐ'EÐ'EÐ'EÐ'EÐ'ErK   F)Úvalidate_column_names)Ústrict)
r   Úfrom_iterabler[   Ú_with_nativeÚsimple_selectr‚   ÚrenameÚdictÚzipr¹   )rV   r]   rØ   Ú	new_namess       rI   rÖ   z!PandasLikeGroupBy._select_resultsE  s‘   € õ Ô'Ð'EÐ'E¸9Ð'EÑ'EÔ'EÑEÔEˆ	ðˆDŒN×'Ò'¨À%Ð'ÑHÔHÜð4Ø œJð4Ø)2ð4ð 4ð 4çŠV•D�˜TœZ¨Ô)?ÈÐNÑNÔNÑOÔOÑPÔPð	
rK   úIterable[AggExpr]ú#list[pd.DataFrame | pd.Series[Any]]c               ó    ‡ — ˆ fd„|D ¦   «         S )Nc                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rS   )r–   )re   rà   rV   s     €rI   rh   z3PandasLikeGroupBy._getitem_aggs.<locals>.<listcomp>V  s%   ø€ Ð5Ð5Ð5¨!�—’ Ñ%Ô%Ð5Ð5Ð5rK   rS   )rV   rÈ   s   ` rI   r–   zPandasLikeGroupBy._getitem_aggsS  s   ø€ ð 6Ð5Ð5Ð5¨uÐ5Ñ5Ô5Ð5rK   r�   r   úIterable[PandasLikeExpr]c                óö   — t          ¦   «          | j        j        }|                      |¦  «        }|j        }|                     ¦   «         r%|                     ¦   «         dk    r ||d¬¦  «        S  ||¦  «        S )a"  Stub issue for `include_groups` [pandas-dev/pandas-stubs#1270].

        - [User guide] mentions `include_groups` 4 times without deprecation.
        - [`DataFrameGroupBy.apply`] doc says the default value of `True` is deprecated since `2.2.0`.
        - `False` is explicitly the only *non-deprecated* option, but entirely omitted since [pandas-dev/pandas-stubs#1268].

        [pandas-dev/pandas-stubs#1270]: https://github.com/pandas-dev/pandas-stubs/issues/1270
        [User guide]: https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html
        [`DataFrameGroupBy.apply`]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.DataFrameGroupBy.apply.html
        [pandas-dev/pandas-stubs#1268]: https://github.com/pandas-dev/pandas-stubs/pull/1268
        )é   rñ   F)Úinclude_groups)Úwarn_complex_group_byr[   r   Ú_apply_exprs_functionÚapplyr‰   rˆ   )rV   r�   rÈ   r“   Úfuncrõ   s         rI   rÕ   zPandasLikeGroupBy._apply_aggsX  s   € õ 	ÑÔÐØŒ~Ô-ˆØ×)Ò)¨%Ñ0Ô0ˆØ”ˆØ�>Š>ÑÔð 	5 × 5Ò 5Ñ 7Ô 7¸6Ò AÐ AØ�5˜¨eÐ4Ñ4Ô4Ð4Øˆu�T‰{Œ{ÐrK   r   c                ój   ‡ ‡‡‡— ‰ j                              ¦   «         Š‰j        j        Šdˆˆˆˆ fd„}|S )Nr]   rÝ   rA   úpd.Series[Any]c                ó¦   •‡— ‰j                              | ¦  «        Šˆfd„‰D ¦   «         }|rt          |ddiŽng g f\  }} ‰||‰¬¦  «        j        S )Nc              3  óf   •K  — | ]+} |‰¦  «        D ]}|j         j        d          |j        fV — ŒŒ,dS )r   N)rd   Úilocr>   )re   rN   rr   r[   s      €rI   rá   zFPandasLikeGroupBy._apply_exprs_function.<locals>.fn.<locals>.<genexpr>t  sg   øè è € ð ð àØ ˜D ™OœOðð ð ð ”Ô! !Ô$ d¤iÐ0ðð ð ð ð ð ð rK   rã   T)rÆ   Úcontext)r[   rå   ré   rd   )	r]   ÚresultsÚ	out_groupÚ	out_namesr[   rÈ   Úinto_seriesrf   rV   s	       @€€€€rI   Úfnz3PandasLikeGroupBy._apply_exprs_function.<locals>.fnr  s…   øø€ Øœ×3Ò3°BÑ7Ô7ˆIðð ð ð à!ðñ ô ˆGð
 BIÐ#V¥3¨Ð#=¸Ð#=Ð#=Ð#=ÈrÐSUÈhÑ ˆI�yØ�;˜y°	À2ÐFÑFÔFÔMÐMrK   )r]   rÝ   rA   rø   )r[   r{   Ú_seriesrä   )rV   rÈ   r  r   rf   s   `` @@rI   rô   z'PandasLikeGroupBy._apply_exprs_functionn  s`   øøøø€ ØŒ^×2Ò2Ñ4Ô4ˆØ”jÔ.ˆð	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð ˆ	rK   ú)Iterator[tuple[Any, PandasLikeDataFrame]]c              #  óZ  K  —  | j         j        | j                             ¦   «         fi | j        ¤Ž}t          j        ¦   «         5  t          j        ddt          ¬¦  «         | j	        j
        }|D ]!\  }}|  ||¦  «        j        | j        Ž fV — Œ"	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚignorez#.*a length 1 tuple will be returned)ÚmessageÚcategory)rÄ   rl   r‚   rÏ   rƒ   ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningr[   rå   ræ   r¸   )rV   r�   Úwith_nativeÚkeyÚgroups        rI   Ú__iter__zPandasLikeGroupBy.__iter__~  s.  è è € Ø&�$”,Ô& t¤z§¢Ñ'8Ô'8ÐRÐR¸DÔ<QÐRÐRˆÝÔ$Ñ&Ô&ð 	Wð 	WÝÔ#ØØ=Ý&ðñ ô ð ð
 œ.Ô5ˆKØ%ð Wð W‘
��UØÐ<˜K˜K¨Ñ.Ô.Ô<¸dÔ>TÐUÐVÐVÐVÐVÐVðWð	Wð 	Wð 	Wñ 	Wô 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wøøøð 	Wð 	Wð 	Wð 	Wð 	Wð 	Ws   ÁAB Â B$Â'B$N)rA   r·   )r]   r   rr   r¼   r½   r—   rA   rQ   )rÈ   r   rA   r   )rØ   rÜ   r]   rÝ   rA   r   )rÈ   rë   rA   rì   )r�   r   rÈ   rï   rA   rÝ   )rÈ   rï   rA   r   )rA   r  )r®   r¯   r°   r¶   r²   r³   r\   rW   rÛ   rÖ   r–   rÕ   rô   r  rS   rK   rI   rY   rY   Ù   sú  € € € € € € ðNØˆuðNà�ðNð 	�(ðNð 	ˆuð	Nð
 	ˆuðNð 	�ðNð 	ˆuðNð 	ˆuðNð 	ˆvðNð 	�IðNð 	�ðNð 	�JðNð 	ˆuðNð 	ˆuðNð 	�ðNð  	�ð!Nð" 	�Uð#N€Kð ð ð ñ ð& 'Ð&Ð&Ñ&ØEàÐÐÑØOà Ð Ð Ñ Ø8à(Ð(Ð(Ñ(ØKàðð ð ñ „Xðð?ð ?ð ?ð ?ð,-7ð -7ð -7ð -7ð^
ð 
ð 
ð 
ð6ð 6ð 6ð 6ð
ð ð ð ð,ð ð ð ð 
Wð 
Wð 
Wð 
Wð 
Wð 
WrK   rY   r   r   Ú
ValueErrorc                 ó$   — d} t          | ¦  «        S )zJDon't even attempt this, it's way too inconsistent across pandas versions.au  No results for group-by aggregation.

Hint: you were probably trying to apply a non-elementary aggregation with a pandas-like API.
Please rewrite your query such that group-by aggregations are elementary. For example, instead of:

    df.group_by('a').agg(nw.col('b').round(2).mean())

use:

    df.with_columns(nw.col('b').round(2)).group_by('a').agg(nw.col('b').mean())

)r  )r‘   s    rI   rÔ   rÔ   ‹  s   € ð	^ð õ �c‰?Œ?ÐrK   rQ   c                 ó0   — t          dt          ¦  «         d S )Na)  Found complex group-by expression, which can't be expressed efficiently with the pandas API. If you can, please rewrite your query such that group-by aggregations are simple (e.g. mean, std, min, max, ...). 

Please see: https://narwhals-dev.github.io/narwhals/concepts/improve_group_by_operation/)r   ÚUserWarningrS   rK   rI   ró   ró   š  s)   € Ýð	Wõ
 	ñô ð ð ð rK   )r>   r4   r?   r@   rA   r5   )rA   r  )rA   rQ   ):Ú
__future__r   r  Ú	functoolsr   Ú	itertoolsr   Úoperatorr   Útypingr   r   r	   r
   Únarwhals._compliantr   Únarwhals._exceptionsr   Únarwhals._expression_parsingr   Únarwhals._pandas_like.utilsr   Únarwhals.dependenciesr   Úcollections.abcr   r   r   r   r   r   ÚpandasÚpdÚpandas.api.typingr   Ú_NativeGroupByÚtyping_extensionsr   Únarwhals._compliant.typingr   r   Únarwhals._pandas_like.dataframer   Únarwhals._pandas_like.exprr   r   r²   r   r    r4   r5   r6   r;   rJ   rM   rY   rÔ   ró   rS   rK   rI   ú<module>r'     s[  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø JÐ JÐ JÐ JÐ JÐ JØ <Ð <Ð <Ð <Ð <Ð <Ø :Ð :Ð :Ð :Ð :Ð :àð PØOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOØ Ð Ð Ð Ð Ð àÐÐÐØDÐDÐDÐDÐDÐDØ(Ð(Ð(Ð(Ð(Ð(àLÐLÐLÐLÐLÐLÐLÐLØCÐCÐCÐCÐCÐCØ9Ð9Ð9Ð9Ð9Ð9àO€MÐOÐOÐOÑOàC€Ð CÐ CÐ CÑ CØ*1°-Ô*@Ð Ð @Ð @Ð @Ñ @Ø&Ø	Ø	ØØØØ	Ø
ØØ	Ø
Ø	ØØ
ØØ	Ø
Ø	Ø	Ø	Ø ð'"ô Ð ð ð ð ñ ð, hàH€
Ð HÐ HÐ HÑ HØ @ð  €Ð Ð Ð Ñ Ø 6ð ØØðFð FÐ ð ð ð ñ ð €�2ÐÑÔð	&ð 	&ð 	&ñ Ôð	&ðD<ð D<ð D<ð D<ð D<ñ D<ô D<ð D<ðNoWð oWð oWð oWð oWØÐ&Ð(8Ð:KÐKÔLñoWô oWð oWðdð ð ð ðð ð ð ð ð rK   