class_docstr: User defined function in Python
  
  Notes
  -----
  The constructor of this class is not supposed to be directly called.
  Use :meth:`pyspark.sql.functions.udtf` to create this instance.
code: def __init__(
      self,
      func: Type,
      returnType: Optional[Union[StructType, str]],
      name: Optional[str] = None,
      evalType: int = PythonEvalType.SQL_TABLE_UDF,
      deterministic: bool = False,
  ) -> None:
      _validate_udtf_handler(func, returnType)
  
      self.func = func
      self.returnType: Optional[DataType] = (
          None
          if returnType is None
          else UnparsedDataType(returnType)
          if isinstance(returnType, str)
          else returnType
      )
      self._name = name or func.__name__
      self.evalType = evalType
      self.deterministic = deterministic
  
imports: from pyspark.sql.connect.utils import check_dependencies
  import warnings
  from typing import List, Type, TYPE_CHECKING, Optional, Union
  from pyspark.rdd import PythonEvalType
  from pyspark.sql.connect.column import Column
  from pyspark.sql.connect.expressions import ColumnReference, Expression, NamedArgumentExpression
  from pyspark.sql.connect.plan import CommonInlineUserDefinedTableFunction, PythonUDTF
  from pyspark.sql.connect.types import UnparsedDataType
  from pyspark.sql.connect.utils import get_python_ver
  from pyspark.sql.udtf import AnalyzeArgument, AnalyzeResult
  from pyspark.sql.udtf import UDTFRegistration, _validate_udtf_handler
  from pyspark.sql.types import DataType, StructType
  from pyspark.errors import PySparkRuntimeError, PySparkTypeError
label_desc: Use image node_id 1 to create a new UserDefinedTableFunction object  with example: obj = UserDefinedTableFunction(func, returnType, name, evalType, deterministic)