code: def test_provide_input_args_with_optional_args(
      spark_arg_provider, feature_group_as_spark_df, s3_uri_as_spark_df
  ):
      fp_config = tdh.create_fp_config(
          inputs=[tdh.FEATURE_GROUP_DATA_SOURCE, tdh.S3_DATA_SOURCE],
          output=tdh.OUTPUT_FEATURE_GROUP_ARN,
      )
  
      def udf_all_optional(
          input_fg=None, input_s3_uri=None, params=None, spark=None
      ) -> DataFrame:
          return Mock(DataFrame)
  
      def udf_no_optional(
          input_fg=None, input_s3_uri=None
      ) -> DataFrame:
          return Mock(DataFrame)
  
      def udf_only_params(
          input_fg=None, input_s3_uri=None, params=None
      ) -> DataFrame:
          return Mock(DataFrame)
  
      def udf_only_spark(
          input_fg=None, input_s3_uri=None, spark=None
      ) -> DataFrame:
          return Mock(DataFrame)
  
      for udf in [
          udf_all_optional,
          udf_no_optional,
          udf_only_params,
          udf_only_spark,
      ]:
          inputs = spark_arg_provider.provide_input_args(udf, fp_config)
  
          assert inputs.keys() == {"input_fg", "input_s3_uri"}
          assert inputs["input_fg"] == feature_group_as_spark_df
          assert inputs["input_s3_uri"] == s3_uri_as_spark_df
  
imports: from __future__ import absolute_import
  import pytest
  import test_data_helpers
  from mock import Mock, patch
  from pyspark.sql import DataFrame, SparkSession
  from sagemaker.feature_store.feature_processor._input_loader import InputLoader
  from sagemaker.feature_store.feature_processor._params_loader import ParamsLoader
  from sagemaker.feature_store.feature_processor._spark_factory import SparkSessionFactory
  from sagemaker.feature_store.feature_processor._udf_arg_provider import SparkArgProvider
  from sagemaker.feature_store.feature_processor._data_source import PySparkDataSource
label_desc: Use image node_id 19 for calling a global function with example usage: test_provide_input_args_with_optional_args(spark_arg_provider, feature_group_as_spark_df, s3_uri_as_spark_df) and returns: Mock, Mock, Mock, Mock