From d216bacb0de01aa41160e44c52dc4c766a51e5c3 Mon Sep 17 00:00:00 2001 From: Samuel Johnson Date: Mon, 16 Feb 2026 17:09:59 -0500 Subject: [PATCH 1/2] fix --- cdisc_rules_engine/check_operators/dataframe_operators.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cdisc_rules_engine/check_operators/dataframe_operators.py b/cdisc_rules_engine/check_operators/dataframe_operators.py index 1cf37ede4..8effa8d62 100644 --- a/cdisc_rules_engine/check_operators/dataframe_operators.py +++ b/cdisc_rules_engine/check_operators/dataframe_operators.py @@ -857,7 +857,9 @@ def equals_string_part(self, other_value): parsed_id = str(uuid4()) self.value[parsed_id] = parsed_data return self.value.apply( - lambda row: self._check_equality(row, target, parsed_id, value_is_literal), + lambda row: self._check_equality( + row, target, parsed_id, value_is_literal=False + ), axis=1, ) From 6ef294e158f47c5fa6237bd512f3b8abf713e1d4 Mon Sep 17 00:00:00 2001 From: Samuel Johnson Date: Mon, 16 Feb 2026 17:14:01 -0500 Subject: [PATCH 2/2] test --- .../test_string_comparison.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tests/unit/test_check_operators/test_string_comparison.py b/tests/unit/test_check_operators/test_string_comparison.py index ce1de5c96..1ec3277d3 100644 --- a/tests/unit/test_check_operators/test_string_comparison.py +++ b/tests/unit/test_check_operators/test_string_comparison.py @@ -33,6 +33,59 @@ def test_equals_string_part(data, comparator, regex, dataset_type, expected_resu assert result.equals(df.convert_to_series(expected_result)) +@pytest.mark.parametrize( + "data,comparator,regex,dataset_type,value_is_literal,expected_result", + [ + ( + {"VAR2": ["blaAtt", "yyyBtt", "aaaCtt"], "target": ["A", "B", "D"]}, + "VAR2", + ".{3}(.).*", + PandasDataset, + False, + [True, True, False], + ), + ( + {"VAR2": ["blaAtt", "yyyBtt", "aaaCtt"], "target": ["A", "B", "D"]}, + "VAR2", + ".{3}(.).*", + DaskDataset, + False, + [True, True, False], + ), + ( + {"target": ["A", "B", "C"]}, + "blaAtt", + ".{3}(.).*", + PandasDataset, + True, + [True, False, False], + ), + ( + {"target": ["A", "B", "C"]}, + "blaAtt", + ".{3}(.).*", + DaskDataset, + True, + [True, False, False], + ), + ], +) +def test_equals_string_part_literal( + data, comparator, regex, dataset_type, value_is_literal, expected_result +): + df = dataset_type.from_dict(data) + dataframe_type = DataframeType({"value": df}) + result = dataframe_type.equals_string_part( + { + "target": "target", + "comparator": comparator, + "regex": regex, + "value_is_literal": value_is_literal, + } + ) + assert result.equals(df.convert_to_series(expected_result)) + + @pytest.mark.parametrize( "data,comparator,dataset_type,expected_result", [