code: def _test_model_quality_monitor_batch_transform_create_schedule(
      model_quality_monitor,
      sagemaker_session,
      constraints=None,
      baseline_job_name=None,
      batch_transform_input=BatchTransformInput(
          data_captured_destination_s3_uri=DATA_CAPTURED_S3_URI,
          destination=SCHEDULE_DESTINATION,
          start_time_offset=START_TIME_OFFSET,
          end_time_offset=END_TIME_OFFSET,
          features_attribute=FEATURES_ATTRIBUTE,
          inference_attribute=INFERENCE_ATTRIBUTE,
          probability_attribute=PROBABILITY_ATTRIBUTE,
          probability_threshold_attribute=PROBABILITY_THRESHOLD_ATTRIBUTE,
          dataset_format=MonitoringDatasetFormat.csv(header=False),
      ),
  ):
      model_quality_monitor.create_monitoring_schedule(
          batch_transform_input=batch_transform_input,
          ground_truth_input=GROUND_TRUTH_S3_URI,
          problem_type=PROBLEM_TYPE,
          record_preprocessor_script=PREPROCESSOR_URI,
          post_analytics_processor_script=POSTPROCESSOR_URI,
          output_s3_uri=OUTPUT_S3_URI,
          constraints=constraints,
          monitor_schedule_name=SCHEDULE_NAME,
          schedule_cron_expression=CRON_HOURLY,
      )
  
      # validation
      expected_arguments = {
          "JobDefinitionName": model_quality_monitor.job_definition_name,
          **copy.deepcopy(
              MODEL_QUALITY_BATCH_TRANSFORM_INPUT_JOB_DEFINITION
          ),
          "Tags": TAGS,
      }
      if constraints:
          expected_arguments["ModelQualityBaselineConfig"] = {
              "ConstraintsResource": {"S3Uri": constraints.file_s3_uri}
          }
      if baseline_job_name:
          expected_arguments["ModelQualityBaselineConfig"] = {
              "BaseliningJobName": baseline_job_name,
          }
  
      sagemaker_session.sagemaker_client.create_model_quality_job_definition.assert_called_with(
          **expected_arguments
      )
  
      sagemaker_session.sagemaker_client.create_monitoring_schedule.assert_called_with(
          MonitoringScheduleName=SCHEDULE_NAME,
          MonitoringScheduleConfig={
              "MonitoringJobDefinitionName": model_quality_monitor.job_definition_name,
              "MonitoringType": "ModelQuality",
              "ScheduleConfig": {"ScheduleExpression": CRON_HOURLY},
          },
          Tags=TAGS,
      )
  
imports: from __future__ import absolute_import
  import copy
  import time
  from typing import Union
  import sagemaker
  import pytest
  from mock import Mock, patch, MagicMock
  from sagemaker.model_monitor import ModelMonitor, Constraints, CronExpressionGenerator, DefaultModelMonitor, EndpointInput, BatchTransformInput, ModelQualityMonitor, Statistics, MonitoringOutput, DataQualityMonitoringConfig, DataQualityDistributionConstraints
  from sagemaker.model_monitor.monitoring_alert import MonitoringAlertSummary, MonitoringAlertHistorySummary, MonitoringAlertActions, ModelDashboardIndicatorAction
  from sagemaker.network import NetworkConfig
  from sagemaker.model_monitor.dataset_format import MonitoringDatasetFormat, DatasetFormat
  from tests.unit import SAGEMAKER_CONFIG_MONITORING_SCHEDULE
label_desc: Use image node_id 35 for calling a global function with example usage: _test_model_quality_monitor_batch_transform_create_schedule(model_quality_monitor, sagemaker_session, constraints, baseline_job_name, batch_transform_input) without return types