diff --git a/python/pyspark/errors/error-conditions.json b/python/pyspark/errors/error-conditions.json index 57ffa1cf964e1..5f7d2da6398cc 100644 --- a/python/pyspark/errors/error-conditions.json +++ b/python/pyspark/errors/error-conditions.json @@ -602,72 +602,6 @@ "Value for `` must be greater than or equal to 0, got ''." ] }, - "NOT_BOOL": { - "message": [ - "Argument `` should be a bool, got ." - ], - "sqlState": "42K09" - }, - "NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_LIST_OR_STR_OR_TUPLE": { - "message": [ - "Argument `` should be a bool, dict, float, int, str or tuple, got ." - ], - "sqlState": "42K09" - }, - "NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_STR": { - "message": [ - "Argument `` should be a bool, dict, float, int or str, got ." - ], - "sqlState": "42K09" - }, - "NOT_BOOL_OR_FLOAT_OR_INT": { - "message": [ - "Argument `` should be a bool, float or int, got ." - ], - "sqlState": "42K09" - }, - "NOT_BOOL_OR_FLOAT_OR_INT_OR_LIST_OR_NONE_OR_STR_OR_TUPLE": { - "message": [ - "Argument `` should be a bool, float, int, list, None, str or tuple, got ." - ], - "sqlState": "42K09" - }, - "NOT_BOOL_OR_FLOAT_OR_INT_OR_STR": { - "message": [ - "Argument `` should be a bool, float, int or str, got ." - ], - "sqlState": "42K09" - }, - "NOT_BOOL_OR_STR": { - "message": [ - "Argument `` should be a bool or str, got ." - ], - "sqlState": "42K09" - }, - "NOT_CALLABLE": { - "message": [ - "Argument `` should be a callable, got ." - ], - "sqlState": "42K09" - }, - "NOT_COLUMN": { - "message": [ - "Argument `` should be a Column, got ." - ], - "sqlState": "42K09" - }, - "NOT_COLUMN_OR_DATATYPE_OR_STR": { - "message": [ - "Argument `` should be a Column, str or DataType, but got ." - ], - "sqlState": "42K09" - }, - "NOT_COLUMN_OR_FLOAT_OR_INT_OR_LIST_OR_STR": { - "message": [ - "Argument `` should be a Column, float, integer, list or string, got ." - ], - "sqlState": "42K09" - }, "NOT_COLUMN_OR_INT": { "message": [ "Argument `` should be a Column or int, got ." @@ -716,6 +650,12 @@ ], "sqlState": "42K09" }, + "NOT_EXPECTED_TYPE": { + "message": [ + "Argument `` should be , got ." + ], + "sqlState": "42K09" + }, "NOT_EXPRESSION": { "message": [ "Argument `` should be an Expression, got ." diff --git a/python/pyspark/pandas/utils.py b/python/pyspark/pandas/utils.py index 6a07befc24daa..489cfaa7dc3d3 100644 --- a/python/pyspark/pandas/utils.py +++ b/python/pyspark/pandas/utils.py @@ -955,13 +955,21 @@ def spark_column_equals(left: Column, right: Column) -> bool: if not isinstance(left, ConnectColumn): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "left", "arg_type": type(left).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "left", + "arg_type": type(left).__name__, + }, ) if not isinstance(right, ConnectColumn): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "right", "arg_type": type(right).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "right", + "arg_type": type(right).__name__, + }, ) return repr(left).replace("`", "") == repr(right).replace("`", "") else: @@ -969,13 +977,21 @@ def spark_column_equals(left: Column, right: Column) -> bool: if not isinstance(left, ClassicColumn): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "left", "arg_type": type(left).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "left", + "arg_type": type(left).__name__, + }, ) if not isinstance(right, ClassicColumn): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "right", "arg_type": type(right).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "right", + "arg_type": type(right).__name__, + }, ) return left._jc.equals(right._jc) diff --git a/python/pyspark/sql/classic/column.py b/python/pyspark/sql/classic/column.py index c7acf504098ac..99ad057810ae5 100644 --- a/python/pyspark/sql/classic/column.py +++ b/python/pyspark/sql/classic/column.py @@ -381,8 +381,12 @@ def withField(self, fieldName: str, col: ParentColumn) -> ParentColumn: if not isinstance(col, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "col", "arg_type": type(col).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "col", + "arg_type": type(col).__name__, + }, ) return Column(self._jc.withField(fieldName, col._jc)) @@ -587,8 +591,12 @@ def between( def when(self, condition: ParentColumn, value: Any) -> ParentColumn: if not isinstance(condition, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "condition", "arg_type": type(condition).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "condition", + "arg_type": type(condition).__name__, + }, ) v = value._jc if isinstance(value, Column) else enum_to_value(value) jc = self._jc.when(condition._jc, v) diff --git a/python/pyspark/sql/classic/dataframe.py b/python/pyspark/sql/classic/dataframe.py index 1ebc92cbe17c2..1d8a074e43f88 100644 --- a/python/pyspark/sql/classic/dataframe.py +++ b/python/pyspark/sql/classic/dataframe.py @@ -252,8 +252,9 @@ def explain( if not (is_no_argument or is_extended_case or is_extended_as_mode or is_mode_case): if (extended is not None) and (not isinstance(extended, (bool, str))): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_STR", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool or str", "arg_name": "extended", "arg_type": type(extended).__name__, }, @@ -306,8 +307,12 @@ def _show_string( if not isinstance(vertical, bool): raise PySparkTypeError( - errorClass="NOT_BOOL", - messageParameters={"arg_name": "vertical", "arg_type": type(vertical).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool", + "arg_name": "vertical", + "arg_type": type(vertical).__name__, + }, ) if isinstance(truncate, bool) and truncate: @@ -317,8 +322,9 @@ def _show_string( int_truncate = int(truncate) except ValueError: raise PySparkTypeError( - errorClass="NOT_BOOL", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool", "arg_name": "truncate", "arg_type": type(truncate).__name__, }, @@ -1013,8 +1019,12 @@ def __getitem__( return Column(jc) else: raise PySparkTypeError( - errorClass="NOT_COLUMN_OR_FLOAT_OR_INT_OR_LIST_OR_STR", - messageParameters={"arg_name": "item", "arg_type": type(item).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column, float, integer, list or string", + "arg_name": "item", + "arg_type": type(item).__name__, + }, ) def __getattr__(self, name: str) -> Column: @@ -1285,8 +1295,12 @@ def fillna( ) -> ParentDataFrame: if not isinstance(value, (float, int, str, bool, dict)): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_STR", - messageParameters={"arg_name": "value", "arg_type": type(value).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool, dict, float, int or str", + "arg_name": "value", + "arg_type": type(value).__name__, + }, ) # Note that bool validates isinstance(int), but we don't want to @@ -1384,8 +1398,9 @@ def all_of_(xs: Iterable) -> bool: valid_types = (bool, float, int, str, list, tuple) if not isinstance(to_replace, valid_types + (dict,)): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_LIST_OR_STR_OR_TUPLE", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, dict, float, int, str or tuple", "arg_name": "to_replace", "arg_type": type(to_replace).__name__, }, @@ -1397,8 +1412,9 @@ def all_of_(xs: Iterable) -> bool: and not isinstance(to_replace, dict) ): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_FLOAT_OR_INT_OR_LIST_OR_NONE_OR_STR_OR_TUPLE", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, float, int, list, None, str or tuple", "arg_name": "value", "arg_type": type(value).__name__, }, @@ -1648,8 +1664,12 @@ def withColumns(self, *colsMap: Dict[str, Column]) -> ParentDataFrame: def withColumn(self, colName: str, col: Column) -> ParentDataFrame: if not isinstance(col, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "col", "arg_type": type(col).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "col", + "arg_type": type(col).__name__, + }, ) return DataFrame(self._jdf.withColumn(colName, col._jc), self.sparkSession) diff --git a/python/pyspark/sql/connect/column.py b/python/pyspark/sql/connect/column.py index 2fca83748f1ec..1968ed6f9b2ae 100644 --- a/python/pyspark/sql/connect/column.py +++ b/python/pyspark/sql/connect/column.py @@ -301,8 +301,12 @@ def endswith( def when(self, condition: ParentColumn, value: Any) -> ParentColumn: if not isinstance(condition, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "condition", "arg_type": type(condition).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "condition", + "arg_type": type(condition).__name__, + }, ) if not isinstance(self._expr, CaseWhen): @@ -527,8 +531,12 @@ def withField(self, fieldName: str, col: ParentColumn) -> ParentColumn: if not isinstance(col, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "col", "arg_type": type(col).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "col", + "arg_type": type(col).__name__, + }, ) return Column(WithField(self._expr, fieldName, col._expr)) diff --git a/python/pyspark/sql/connect/dataframe.py b/python/pyspark/sql/connect/dataframe.py index e33a805b6092a..cf2c3b0de1a20 100644 --- a/python/pyspark/sql/connect/dataframe.py +++ b/python/pyspark/sql/connect/dataframe.py @@ -814,8 +814,12 @@ def _show_string( ) if not isinstance(vertical, bool): raise PySparkTypeError( - errorClass="NOT_BOOL", - messageParameters={"arg_name": "vertical", "arg_type": type(vertical).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool", + "arg_name": "vertical", + "arg_type": type(vertical).__name__, + }, ) _truncate: int = -1 @@ -826,8 +830,9 @@ def _show_string( _truncate = int(truncate) except ValueError: raise PySparkTypeError( - errorClass="NOT_BOOL", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool", "arg_name": "truncate", "arg_type": type(truncate).__name__, }, @@ -873,8 +878,12 @@ def withColumns(self, *colsMap: Dict[str, Column]) -> ParentDataFrame: def withColumn(self, colName: str, col: Column) -> ParentDataFrame: if not isinstance(col, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "col", "arg_type": type(col).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "col", + "arg_type": type(col).__name__, + }, ) return DataFrame( plan.WithColumns( @@ -1187,8 +1196,12 @@ def fillna( ) -> ParentDataFrame: if not isinstance(value, (float, int, str, bool, dict)): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_STR", - messageParameters={"arg_name": "value", "arg_type": type(value).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool, dict, float, int or str", + "arg_name": "value", + "arg_type": type(value).__name__, + }, ) if isinstance(value, dict): if len(value) == 0: @@ -1207,8 +1220,9 @@ def fillna( ) if not isinstance(v, (bool, int, float, str)): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_FLOAT_OR_INT_OR_STR", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, float, int or str", "arg_name": "value type of dict", "arg_type": type(v).__name__, }, @@ -1343,8 +1357,9 @@ def all_of_(xs: Iterable) -> bool: valid_types = (bool, float, int, str, list, tuple) if not isinstance(to_replace, valid_types + (dict,)): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_LIST_OR_STR_OR_TUPLE", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, dict, float, int, str or tuple", "arg_name": "to_replace", "arg_type": type(to_replace).__name__, }, @@ -1356,8 +1371,12 @@ def all_of_(xs: Iterable) -> bool: and not isinstance(to_replace, dict) ): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_FLOAT_OR_INT_OR_LIST_OR_NONE_OR_STR_OR_TUPLE", - messageParameters={"arg_name": "value", "arg_type": type(value).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool, float, int, list, None, str or tuple", + "arg_name": "value", + "arg_type": type(value).__name__, + }, ) if isinstance(to_replace, (list, tuple)) and isinstance(value, (list, tuple)): @@ -1923,8 +1942,9 @@ def _explain_string( if not (is_no_argument or is_extended_case or is_extended_as_mode or is_mode_case): argtypes = [str(type(arg)) for arg in [extended, mode] if arg is not None] raise PySparkTypeError( - errorClass="NOT_BOOL_OR_STR", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool or str", "arg_name": "extended (optional) and mode (optional)", "arg_type": ", ".join(argtypes), }, diff --git a/python/pyspark/sql/connect/functions/builtin.py b/python/pyspark/sql/connect/functions/builtin.py index f626228c17fba..187b29b3aaadc 100644 --- a/python/pyspark/sql/connect/functions/builtin.py +++ b/python/pyspark/sql/connect/functions/builtin.py @@ -445,8 +445,12 @@ def when(condition: Column, value: Any) -> Column: # Explicitly not using ColumnOrName type here to make reading condition less opaque if not isinstance(condition, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "condition", "arg_type": type(condition).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "condition", + "arg_type": type(condition).__name__, + }, ) value = _enum_to_value(value) @@ -1957,8 +1961,12 @@ def from_json( _schema = lit(schema.json()) else: raise PySparkTypeError( - errorClass="NOT_COLUMN_OR_DATATYPE_OR_STR", - messageParameters={"arg_name": "schema", "arg_type": type(schema).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column, str or DataType", + "arg_name": "schema", + "arg_type": type(schema).__name__, + }, ) if options is None: diff --git a/python/pyspark/sql/connect/group.py b/python/pyspark/sql/connect/group.py index 9db9e09686b28..2c8a4ed7330b1 100644 --- a/python/pyspark/sql/connect/group.py +++ b/python/pyspark/sql/connect/group.py @@ -241,8 +241,12 @@ def pivot(self, pivot_col: str, values: Optional[List["LiteralType"]] = None) -> for v in values: if not isinstance(v, (bool, float, int, str)): raise PySparkTypeError( - errorClass="NOT_BOOL_OR_FLOAT_OR_INT_OR_STR", - messageParameters={"arg_name": "value", "arg_type": type(v).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool, float, int or str", + "arg_name": "value", + "arg_type": type(v).__name__, + }, ) return GroupedData( diff --git a/python/pyspark/sql/connect/udf.py b/python/pyspark/sql/connect/udf.py index 78819ded2c3a3..355c1a5bac780 100644 --- a/python/pyspark/sql/connect/udf.py +++ b/python/pyspark/sql/connect/udf.py @@ -142,8 +142,12 @@ def __init__( ): if not callable(func): raise PySparkTypeError( - errorClass="NOT_CALLABLE", - messageParameters={"arg_name": "func", "arg_type": type(func).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "callable", + "arg_name": "func", + "arg_type": type(func).__name__, + }, ) if not isinstance(returnType, (DataType, str)): diff --git a/python/pyspark/sql/dataframe.py b/python/pyspark/sql/dataframe.py index 6ec0163c91e8f..d9528384c7035 100644 --- a/python/pyspark/sql/dataframe.py +++ b/python/pyspark/sql/dataframe.py @@ -2189,8 +2189,9 @@ def _preapare_args_for_sample( else: argtypes = [type(arg).__name__ for arg in [withReplacement, fraction, seed]] raise PySparkTypeError( - errorClass="NOT_BOOL_OR_FLOAT_OR_INT", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, float or int", "arg_name": "withReplacement (optional), " + "fraction (required) and seed (optional)", "arg_type": ", ".join(argtypes), diff --git a/python/pyspark/sql/functions/builtin.py b/python/pyspark/sql/functions/builtin.py index 1c79c074cb3b9..5f10b995f1326 100644 --- a/python/pyspark/sql/functions/builtin.py +++ b/python/pyspark/sql/functions/builtin.py @@ -8332,8 +8332,12 @@ def when(condition: Column, value: Any) -> Column: # Explicitly not using ColumnOrName type here to make reading condition less opaque if not isinstance(condition, Column): raise PySparkTypeError( - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "condition", "arg_type": type(condition).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "condition", + "arg_type": type(condition).__name__, + }, ) value = _enum_to_value(value) v = value._jc if isinstance(value, Column) else _enum_to_value(value) diff --git a/python/pyspark/sql/tests/connect/test_connect_column.py b/python/pyspark/sql/tests/connect/test_connect_column.py index a048c26a63e54..7dee614ddaa75 100644 --- a/python/pyspark/sql/tests/connect/test_connect_column.py +++ b/python/pyspark/sql/tests/connect/test_connect_column.py @@ -920,8 +920,8 @@ def test_column_field_ops(self): self.check_error( exception=pe.exception, - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "col", "arg_type": "int"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={"expected_type": "Column", "arg_name": "col", "arg_type": "int"}, ) with self.assertRaises(PySparkTypeError) as pe: diff --git a/python/pyspark/sql/tests/connect/test_connect_function.py b/python/pyspark/sql/tests/connect/test_connect_function.py index e806012fd49e8..dbdc745c25aeb 100644 --- a/python/pyspark/sql/tests/connect/test_connect_function.py +++ b/python/pyspark/sql/tests/connect/test_connect_function.py @@ -338,8 +338,12 @@ def test_when_otherwise(self): self.check_error( exception=pe.exception, - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "condition", "arg_type": "bool"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "condition", + "arg_type": "bool", + }, ) def test_sorting_functions_with_column(self): @@ -1839,8 +1843,12 @@ def test_json_functions(self): self.check_error( exception=pe.exception, - errorClass="NOT_COLUMN_OR_DATATYPE_OR_STR", - messageParameters={"arg_name": "schema", "arg_type": "list"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column, str or DataType", + "arg_name": "schema", + "arg_type": "list", + }, ) # test get_json_object diff --git a/python/pyspark/sql/tests/connect/test_connect_stat.py b/python/pyspark/sql/tests/connect/test_connect_stat.py index 6239fde6e76b4..1b432f7b3cf7e 100644 --- a/python/pyspark/sql/tests/connect/test_connect_stat.py +++ b/python/pyspark/sql/tests/connect/test_connect_stat.py @@ -537,8 +537,9 @@ def test_grouped_data(self): self.check_error( exception=pe.exception, - errorClass="NOT_BOOL_OR_FLOAT_OR_INT_OR_STR", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, float, int or str", "arg_name": "value", "arg_type": "bytes", }, diff --git a/python/pyspark/sql/tests/test_column.py b/python/pyspark/sql/tests/test_column.py index 1983b291a5a36..aa650187f742c 100644 --- a/python/pyspark/sql/tests/test_column.py +++ b/python/pyspark/sql/tests/test_column.py @@ -210,8 +210,8 @@ def test_with_field(self): self.check_error( exception=pe.exception, - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "col", "arg_type": "int"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={"expected_type": "Column", "arg_name": "col", "arg_type": "int"}, ) with self.assertRaises(PySparkTypeError) as pe: diff --git a/python/pyspark/sql/tests/test_dataframe.py b/python/pyspark/sql/tests/test_dataframe.py index 01219585424a8..9fb767b2ed662 100644 --- a/python/pyspark/sql/tests/test_dataframe.py +++ b/python/pyspark/sql/tests/test_dataframe.py @@ -529,8 +529,9 @@ def test_sample(self): self.check_error( exception=pe.exception, - errorClass="NOT_BOOL_OR_FLOAT_OR_INT", + errorClass="NOT_EXPECTED_TYPE", messageParameters={ + "expected_type": "bool, float or int", "arg_name": "withReplacement (optional), fraction (required) and seed (optional)", "arg_type": "NoneType, NoneType, NoneType", }, @@ -845,8 +846,8 @@ def test_df_show(self): self.check_error( exception=pe.exception, - errorClass="NOT_BOOL", - messageParameters={"arg_name": "vertical", "arg_type": "str"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={"expected_type": "bool", "arg_name": "vertical", "arg_type": "str"}, ) with self.assertRaises(PySparkTypeError) as pe: @@ -854,8 +855,8 @@ def test_df_show(self): self.check_error( exception=pe.exception, - errorClass="NOT_BOOL", - messageParameters={"arg_name": "truncate", "arg_type": "str"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={"expected_type": "bool", "arg_name": "truncate", "arg_type": "str"}, ) def test_df_merge_into(self): diff --git a/python/pyspark/sql/tests/test_functions.py b/python/pyspark/sql/tests/test_functions.py index 110c0e903dd2b..2de49d1f4fc6a 100644 --- a/python/pyspark/sql/tests/test_functions.py +++ b/python/pyspark/sql/tests/test_functions.py @@ -3544,8 +3544,12 @@ def test_when(self): self.check_error( exception=pe.exception, - errorClass="NOT_COLUMN", - messageParameters={"arg_name": "condition", "arg_type": "str"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "Column", + "arg_name": "condition", + "arg_type": "str", + }, ) def test_window(self): diff --git a/python/pyspark/sql/tests/test_stat.py b/python/pyspark/sql/tests/test_stat.py index a86af9557693f..0f79093bffb69 100644 --- a/python/pyspark/sql/tests/test_stat.py +++ b/python/pyspark/sql/tests/test_stat.py @@ -199,8 +199,12 @@ def test_fillna(self): self.check_error( exception=pe.exception, - errorClass="NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_STR", - messageParameters={"arg_name": "value", "arg_type": "list"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool, dict, float, int or str", + "arg_name": "value", + "arg_type": "list", + }, ) with self.assertRaises(PySparkTypeError) as pe: @@ -407,8 +411,12 @@ def test_replace(self): self.check_error( exception=pe.exception, - errorClass="NOT_BOOL_OR_DICT_OR_FLOAT_OR_INT_OR_LIST_OR_STR_OR_TUPLE", - messageParameters={"arg_name": "to_replace", "arg_type": "function"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "bool, dict, float, int, str or tuple", + "arg_name": "to_replace", + "arg_type": "function", + }, ) def test_unpivot(self): diff --git a/python/pyspark/sql/tests/test_udf.py b/python/pyspark/sql/tests/test_udf.py index 1dc09ab22d7b5..759f1f47cde0a 100644 --- a/python/pyspark/sql/tests/test_udf.py +++ b/python/pyspark/sql/tests/test_udf.py @@ -600,8 +600,12 @@ def test_err_udf_registration(self): self.check_error( exception=pe.exception, - errorClass="NOT_CALLABLE", - messageParameters={"arg_name": "func", "arg_type": "str"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "callable", + "arg_name": "func", + "arg_type": "str", + }, ) def test_non_existed_udf(self): @@ -1268,8 +1272,8 @@ def check_err_udf_init(self): self.check_error( exception=pe.exception, - errorClass="NOT_CALLABLE", - messageParameters={"arg_name": "func", "arg_type": "str"}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={"expected_type": "callable", "arg_name": "func", "arg_type": "str"}, ) with self.assertRaises(PySparkTypeError) as pe: diff --git a/python/pyspark/sql/udf.py b/python/pyspark/sql/udf.py index 2c3e7009a3cf1..d046a3210178a 100644 --- a/python/pyspark/sql/udf.py +++ b/python/pyspark/sql/udf.py @@ -168,8 +168,12 @@ def __init__( ): if not callable(func): raise PySparkTypeError( - errorClass="NOT_CALLABLE", - messageParameters={"arg_name": "func", "arg_type": type(func).__name__}, + errorClass="NOT_EXPECTED_TYPE", + messageParameters={ + "expected_type": "callable", + "arg_name": "func", + "arg_type": type(func).__name__, + }, ) if not isinstance(returnType, (DataType, str)):