code: def test_pandas_udf_basic(self):
      udf = pandas_udf(lambda x: x, DoubleType())
      self.assertEqual(udf.returnType, DoubleType())
      self.assertEqual(
          udf.evalType, PythonEvalType.SQL_SCALAR_PANDAS_UDF
      )
  
      udf = pandas_udf(lambda x: x, DoubleType(), PandasUDFType.SCALAR)
      self.assertEqual(udf.returnType, DoubleType())
      self.assertEqual(
          udf.evalType, PythonEvalType.SQL_SCALAR_PANDAS_UDF
      )
  
      udf = pandas_udf(
          lambda x: x,
          StructType([StructField("v", DoubleType())]),
          PandasUDFType.GROUPED_MAP,
      )
      self.assertEqual(
          udf.returnType, StructType([StructField("v", DoubleType())])
      )
      self.assertEqual(
          udf.evalType, PythonEvalType.SQL_GROUPED_MAP_PANDAS_UDF
      )
  
imports: import unittest
  import datetime
  from typing import cast
  from pyspark.sql.functions import udf, pandas_udf, PandasUDFType, assert_true, lit
  from pyspark.sql.types import DoubleType, StructType, StructField, LongType, DayTimeIntervalType
  from pyspark.errors import ParseException, PythonException, PySparkTypeError
  from pyspark.rdd import PythonEvalType
  from pyspark.testing.sqlutils import ReusedSQLTestCase, have_pandas, have_pyarrow, pandas_requirement_message, pyarrow_requirement_message
  from pyspark.testing.utils import QuietTest
label_desc: Use image node_id 1 for calling the PandasUDFTestsMixin obj's underlying member method code with example usage: obj.test_pandas_udf_basic() without return types