code: def _test_model_bias_monitor_create_schedule(
      model_bias_monitor,
      sagemaker_session,
      analysis_config=None,
      constraints=None,
      baseline_job_name=None,
      endpoint_input=EndpointInput(
          endpoint_name=ENDPOINT_NAME,
          destination=ENDPOINT_INPUT_LOCAL_PATH,
          start_time_offset=START_TIME_OFFSET,
          end_time_offset=END_TIME_OFFSET,
          features_attribute=FEATURES_ATTRIBUTE,
          inference_attribute=str(INFERENCE_ATTRIBUTE),
          probability_attribute=str(PROBABILITY_ATTRIBUTE),
          probability_threshold_attribute=PROBABILITY_THRESHOLD_ATTRIBUTE,
      ),
  ):
      # create schedule
      with patch(
          "sagemaker.s3.S3Uploader.upload_string_as_file_body",
          return_value=ANALYSIS_CONFIG_S3_URI,
      ) as upload:
          model_bias_monitor.create_monitoring_schedule(
              endpoint_input=endpoint_input,
              ground_truth_input=GROUND_TRUTH_S3_URI,
              analysis_config=analysis_config,
              output_s3_uri=OUTPUT_S3_URI,
              constraints=constraints,
              monitor_schedule_name=SCHEDULE_NAME,
              schedule_cron_expression=CRON_HOURLY,
          )
          if not isinstance(analysis_config, str):
              upload.assert_called_once()
              assert (
                  json.loads(upload.call_args[0][0])
                  == BIAS_ANALYSIS_CONFIG
              )
  
      # validation
      expected_arguments = {
          "JobDefinitionName": model_bias_monitor.job_definition_name,
          **copy.deepcopy(BIAS_JOB_DEFINITION),
          "Tags": TAGS,
      }
      if constraints:
          expected_arguments["ModelBiasBaselineConfig"] = {
              "ConstraintsResource": {"S3Uri": constraints.file_s3_uri}
          }
      elif baseline_job_name:
          expected_arguments["ModelBiasBaselineConfig"] = {
              "BaseliningJobName": baseline_job_name,
          }
  
      sagemaker_session.sagemaker_client.create_model_bias_job_definition.assert_called_with(
          **expected_arguments
      )
  
      sagemaker_session.sagemaker_client.create_monitoring_schedule.assert_called_with(
          MonitoringScheduleName=SCHEDULE_NAME,
          MonitoringScheduleConfig={
              "MonitoringJobDefinitionName": model_bias_monitor.job_definition_name,
              "MonitoringType": "ModelBias",
              "ScheduleConfig": {"ScheduleExpression": CRON_HOURLY},
          },
          Tags=TAGS,
      )
  
imports: from __future__ import print_function, absolute_import
  import copy
  import json
  import time
  from mock import patch, Mock, MagicMock
  import pytest
  from sagemaker.clarify import BiasConfig, DataConfig, ModelConfig, SHAPConfig, ModelPredictedLabelConfig
  from sagemaker.model_monitor import BiasAnalysisConfig, Constraints, CronExpressionGenerator, EndpointInput, BatchTransformInput, ExplainabilityAnalysisConfig, ModelBiasMonitor, ModelExplainabilityMonitor, MonitoringExecution, NetworkConfig
  from sagemaker.model_monitor.clarify_model_monitoring import ClarifyModelMonitor, ClarifyBaseliningJob, ClarifyMonitoringExecution
  from sagemaker.model_monitor.dataset_format import MonitoringDatasetFormat
label_desc: Use image node_id 28 for calling a global function with example usage: _test_model_bias_monitor_create_schedule(model_bias_monitor, sagemaker_session, analysis_config, constraints, baseline_job_name, endpoint_input) without return types