code: def test_provide_input_arg_for_base_data_source(
      spark_arg_provider, params_loader, spark_session
  ):
      fp_config = tdh.create_fp_config(
          inputs=[MockDataSource()], output=tdh.OUTPUT_FEATURE_GROUP_ARN
      )
  
      def udf(input_df) -> DataFrame:
          return input_df
  
      with patch.object(
          MockDataSource, "read_data", return_value=Mock(DataFrame)
      ) as mock_read:
          spark_arg_provider.provide_input_args(udf, fp_config)
          mock_read.assert_called_with(
              spark=spark_session, params={"key": "value"}
          )
          params_loader.get_parameter_args.assert_called_with(fp_config)
  
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 20 for calling a global function with example usage: test_provide_input_arg_for_base_data_source(spark_arg_provider, params_loader, spark_session) and returns: input_df