From 1577d91392b38f816e7be2491160bf9c0c72be82 Mon Sep 17 00:00:00 2001 From: Marco Gorelli <33491632+MarcoGorelli@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:17:35 +0000 Subject: [PATCH] maintain order --- .../python/plotly/optional-requirements.txt | 2 +- .../python/plotly/plotly/express/_core.py | 19 ++++++++++++++----- packages/python/plotly/requirements.txt | 2 +- packages/python/plotly/setup.py | 2 +- .../requirements_310_core.txt | 2 +- .../requirements_310_optional.txt | 2 +- .../requirements_311_core.txt | 2 +- .../requirements_311_optional.txt | 2 +- .../requirements_38_core.txt | 2 +- .../requirements_38_optional.txt | 2 +- .../requirements_39_core.txt | 2 +- .../requirements_39_optional.txt | 2 +- .../requirements_39_pandas_2_optional.txt | 2 +- 13 files changed, 26 insertions(+), 17 deletions(-) diff --git a/packages/python/plotly/optional-requirements.txt b/packages/python/plotly/optional-requirements.txt index 7213214b6c2..4cd4051edc0 100644 --- a/packages/python/plotly/optional-requirements.txt +++ b/packages/python/plotly/optional-requirements.txt @@ -39,7 +39,7 @@ ipython ## pandas deps for some matplotlib functionality ## pandas -narwhals>=1.13.2 +narwhals>=1.13.3 ## scipy deps for some FigureFactory functions ## scipy diff --git a/packages/python/plotly/plotly/express/_core.py b/packages/python/plotly/plotly/express/_core.py index a9028e21f93..28c11189bf0 100644 --- a/packages/python/plotly/plotly/express/_core.py +++ b/packages/python/plotly/plotly/express/_core.py @@ -2160,10 +2160,17 @@ def process_dataframe_pie(args, trace_patch): uniques = df.get_column(names).unique().to_list() order = [x for x in OrderedDict.fromkeys(list(order_in) + uniques) if x in uniques] - # Original implementation: args["data_frame"] = df.set_index(names).loc[order].reset_index() - # However we do not have a way to custom sort a dataframe in narwhals. - args["data_frame"] = nw.concat( - [df.filter(nw.col(names) == value) for value in order], how="vertical" + # Sort args['data_frame'] by column 'b' according to order `order`. + token = nw.generate_temporary_column_name(8, args["data_frame"].columns) + args["data_frame"] = ( + args["data_frame"] + .with_columns( + nw.col("b") + .replace_strict(order, range(len(order)), return_dtype=nw.UInt32) + .alias(token) + ) + .sort(token) + .drop(token) ) return args, trace_patch @@ -2420,7 +2427,9 @@ def get_groups_and_orders(args, grouper): single_group_name.append("") else: if col not in unique_cache: - unique_cache[col] = df.get_column(col).unique().to_list() + unique_cache[col] = ( + df.get_column(col).unique(maintain_order=True).to_list() + ) uniques = unique_cache[col] if len(uniques) == 1: single_group_name.append(uniques[0]) diff --git a/packages/python/plotly/requirements.txt b/packages/python/plotly/requirements.txt index e1e1e8c2c49..ddd5d2bf773 100644 --- a/packages/python/plotly/requirements.txt +++ b/packages/python/plotly/requirements.txt @@ -6,4 +6,4 @@ ################################################### ## dataframe agnostic layer ## -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/setup.py b/packages/python/plotly/setup.py index 07dbf249908..081e082a20b 100644 --- a/packages/python/plotly/setup.py +++ b/packages/python/plotly/setup.py @@ -603,7 +603,7 @@ def run(self): data_files=[ ("etc/jupyter/nbconfig/notebook.d", ["jupyterlab-plotly.json"]), ], - install_requires=["narwhals>=1.13.2", "packaging"], + install_requires=["narwhals>=1.13.3", "packaging"], zip_safe=False, cmdclass=dict( build_py=js_prerelease(versioneer_cmds["build_py"]), diff --git a/packages/python/plotly/test_requirements/requirements_310_core.txt b/packages/python/plotly/test_requirements/requirements_310_core.txt index ade22cb3782..771df9cc87a 100644 --- a/packages/python/plotly/test_requirements/requirements_310_core.txt +++ b/packages/python/plotly/test_requirements/requirements_310_core.txt @@ -1,3 +1,3 @@ requests==2.25.1 pytest==7.4.4 -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_310_optional.txt b/packages/python/plotly/test_requirements/requirements_310_optional.txt index b100253787e..6c9322739d9 100644 --- a/packages/python/plotly/test_requirements/requirements_310_optional.txt +++ b/packages/python/plotly/test_requirements/requirements_310_optional.txt @@ -21,4 +21,4 @@ kaleido orjson==3.8.12 polars[timezone] pyarrow -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_311_core.txt b/packages/python/plotly/test_requirements/requirements_311_core.txt index 2f67b3de680..938e282b0f0 100644 --- a/packages/python/plotly/test_requirements/requirements_311_core.txt +++ b/packages/python/plotly/test_requirements/requirements_311_core.txt @@ -1,3 +1,3 @@ requests==2.25.1 pytest==7.4.4 -narwhals>=1.13.2 \ No newline at end of file +narwhals>=1.13.3 \ No newline at end of file diff --git a/packages/python/plotly/test_requirements/requirements_311_optional.txt b/packages/python/plotly/test_requirements/requirements_311_optional.txt index c0aab90b6b9..fe17acad918 100644 --- a/packages/python/plotly/test_requirements/requirements_311_optional.txt +++ b/packages/python/plotly/test_requirements/requirements_311_optional.txt @@ -21,4 +21,4 @@ kaleido orjson==3.8.12 polars[timezone] pyarrow -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_38_core.txt b/packages/python/plotly/test_requirements/requirements_38_core.txt index 47488db756b..2983296113c 100644 --- a/packages/python/plotly/test_requirements/requirements_38_core.txt +++ b/packages/python/plotly/test_requirements/requirements_38_core.txt @@ -1,3 +1,3 @@ requests==2.25.1 pytest==8.1.1 -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_38_optional.txt b/packages/python/plotly/test_requirements/requirements_38_optional.txt index 2b89bf3da6c..2f0fe7003e8 100644 --- a/packages/python/plotly/test_requirements/requirements_38_optional.txt +++ b/packages/python/plotly/test_requirements/requirements_38_optional.txt @@ -21,4 +21,4 @@ psutil==5.7.0 kaleido polars[timezone] pyarrow -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_39_core.txt b/packages/python/plotly/test_requirements/requirements_39_core.txt index 45f8b20c798..b6055de8091 100644 --- a/packages/python/plotly/test_requirements/requirements_39_core.txt +++ b/packages/python/plotly/test_requirements/requirements_39_core.txt @@ -1,3 +1,3 @@ requests==2.25.1 pytest==6.2.3 -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_39_optional.txt b/packages/python/plotly/test_requirements/requirements_39_optional.txt index a7ca3200b02..79813b4772c 100644 --- a/packages/python/plotly/test_requirements/requirements_39_optional.txt +++ b/packages/python/plotly/test_requirements/requirements_39_optional.txt @@ -22,4 +22,4 @@ kaleido orjson==3.8.12 polars[timezone] pyarrow -narwhals>=1.13.2 +narwhals>=1.13.3 diff --git a/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt b/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt index 5f68572d004..b1d9180e4d5 100644 --- a/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt +++ b/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt @@ -22,4 +22,4 @@ vaex pydantic<=1.10.11 # for vaex, see https://github.com/vaexio/vaex/issues/2384 polars[timezone] pyarrow -narwhals>=1.13.2 +narwhals>=1.13.3