L iUddlmZddlmZddlmZmZmZmZddl m Z ddl m Z ddlmZddlmZddlmZerIdd lmZmZddlZdd lmZdd lmZdd lm Z dd l!m"Z"ddl#m$Z$ddl%m&Z&eeefZ'de(d<edefZ)de(d<n ddl*m cm+Z,e,j\j4ZdZ/de(d< ddZ0ddZ1ddZ2d dZ3d dZ4Gdde dde/fZ5y#e-$rddl+Z,YOwxYw)!) annotations)partial) TYPE_CHECKINGAnyCallableClassVarN)DepthTrackingGroupBy)make_group_by_kwargs)!evaluate_output_names_and_aliases) zip_strict)MappingSequence)GroupBy) SeriesGroupBy) TypeAlias)NarwhalsAggregation DaskLazyFrame)DaskExprrPandasSeriesGroupBy._AggFnz str | _AggFn AggregationcBdd}dd}tjd||S)Nc&|jdS)NF)dropna)nuniquess ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/narwhals/_dask/group_by.pychunkzn_unique..chunk(syyy&&c"|jSN)sums0s raggzn_unique..agg+s vvxr!rnamer r'rrreturnpd.Series[Any]r&rr+r,ddrr r's rn_uniquer1's!' >>y3 ??r!cBdd}dd}tjd||S)Nc&|jdSNT)skipnaallrs rr z_all..chunk2uuDu!!r!c&|jdSr4r6r%s rr'z_all..agg5vvTv""r!r7r(r*r-r.r0s r_allr;1!"# >>uEs ;;r!cBdd}dd}tjd||S)Nc&|jdSr4anyrs rr z_any..chunk<r8r!c&|jdSr4r?r%s rr'z_any..agg?r:r!r@r(r*r-r.r0s r_anyrB;r<r!c8ttj|SNddof)r _DaskGroupByvarrEs rrHrHE <##$ //r!c8ttj|SrD)rrGstdrEs rrKrKIrIr!cXeZdZUdddddeededdeed Zd e d < dd Z dd Z y)DaskLazyGroupByr$meanmedianmaxminsizecountquantile) r$rNrOrPrQrKrHlenr1rSrTr7r@z3ClassVar[Mapping[NarwhalsAggregation, Aggregation]] _REMAP_AGGSc|j||\|_|_|_t |}|j j j|jfi||_y)N)keys)drop_null_keys) _parse_keys_compliant_frame_keys_output_key_namesr compliantnativegroupby_grouped)selfdfrXrYgroup_by_kwargss r__init__zDaskLazyGroupBy.__init__^seEIDTDT TEUE Atz4+A/nM5--55djjTOT r!c ddlm}|su|jj|jj |jddj tt|j|jS|j|i}g|j|j}|D]$}t||j|\}}t|jj}tt!|jjdk(rR|jd} |j#|j$ |j'tj)|| f|j#|j+| t- r di|j.n |j' fdt1||D'||j2j4di|j7|jj8j tt|j|jS) Nrrr@)keeporder_byc30K|] \}}||ffywr#).0alias output_nameagg_fns r z&DaskLazyGroupBy.agg..s''&E;f-.'s)versionrk)narwhals._dask.dataframerr^ simple_selectr\uniquerenamedictzipr]_ensure_all_simpler next _metadataop_nodes_reversedrUlist_remap_expr_namer)updatefromkeys _leaf_namecallablekwargsr rar' reset_index_version) rbexprsrsimple_aggregationsexcludeexpr output_namesaliases last_nodecolumnros @rr'zDaskLazyGroupBy.aggls:-,,djj9 >ST-C-CDEF  &CE8DJJ8!7!78 D$Ednng% !L'T^^==?@I488:;<AA..y~~>#**4==66BR+ST**4??4+@AF3;F3CV/i../F  & &'*4Wl*K' ! ( DMM   4 3 4 @ @ BNN++  &c$**d&<&<=> ? @r!N)rcrrXz"Sequence[DaskExpr] | Sequence[str]rYboolr+None)rrr+r) __name__ __module__ __qualname__rKrHr1r;rBrV__annotations__rer'rkr!rrMrMMsoHKD U  U1 U  U  U(@r!rMrr)r+zdd.Aggregation)rFintr+r)6 __future__r functoolsrtypingrrrrdask.dataframe dataframer/narwhals._compliantr narwhals._dask.utilsr narwhals._expression_parsingr narwhals._utilsr collections.abcr rpandaspddask.dataframe.apirrGpandas.core.groupbyr_PandasSeriesGroupBytyping_extensionsrnarwhals._compliant.typingrrrrnarwhals._dask.exprrrrrdask.dataframe.dask_expr dask_exprdxModuleNotFoundError_groupbyrr1r;rBrHrKrMrkr!rrs"9945J&1:I+>6,%9#s(%CC c*FI*--;;&&L' Y'B@<<00G@*?J +STG@] s C CC