From f1d0b200bc1f684b80d1b13619130cc938dd101d Mon Sep 17 00:00:00 2001 From: Saba Siddique Date: Thu, 29 Jan 2026 20:13:49 +0500 Subject: [PATCH 1/2] Fix Polars left join order handling --- skrub/_join_utils.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/skrub/_join_utils.py b/skrub/_join_utils.py index 2e54e679f..19dde3117 100644 --- a/skrub/_join_utils.py +++ b/skrub/_join_utils.py @@ -2,7 +2,7 @@ import inspect import re - +import warnings from skrub import _dataframe as sbd from skrub import _utils from skrub import selectors as s @@ -284,6 +284,21 @@ def _do_left_join_polars(left, right, left_on, right_on): kw = {"coalesce": True} else: kw = {} + join_params = inspect.signature(left.join).parameters + kw = {} + if "coalesce" in join_params: + kw["coalesce"] = True + if "maintain_order" in join_params: + kw["maintain_order"] = "left" + else: + warnings.warn( + "Polars join does not preserve row order unless " + "maintain_order='left'. This Polars version does not support " + "maintain_order, so the output row order may differ from the left " + "table.", + UserWarning, + stacklevel=2, + ) return left.join( right, left_on=left_on, right_on=right_on, how="left", suffix="", **kw ) From 0053767920bfca6d90bd7f643d38b755c63e4461 Mon Sep 17 00:00:00 2001 From: Riccardo Cappuzzo Date: Tue, 14 Apr 2026 11:00:03 +0200 Subject: [PATCH 2/2] simplified check --- skrub/_join_utils.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/skrub/_join_utils.py b/skrub/_join_utils.py index 19dde3117..c56ad5f45 100644 --- a/skrub/_join_utils.py +++ b/skrub/_join_utils.py @@ -2,7 +2,7 @@ import inspect import re -import warnings + from skrub import _dataframe as sbd from skrub import _utils from skrub import selectors as s @@ -290,15 +290,6 @@ def _do_left_join_polars(left, right, left_on, right_on): kw["coalesce"] = True if "maintain_order" in join_params: kw["maintain_order"] = "left" - else: - warnings.warn( - "Polars join does not preserve row order unless " - "maintain_order='left'. This Polars version does not support " - "maintain_order, so the output row order may differ from the left " - "table.", - UserWarning, - stacklevel=2, - ) return left.join( right, left_on=left_on, right_on=right_on, how="left", suffix="", **kw )