code: def check_schema(updated_config):
      """Emulates the pure JSONSchema validation that could be used in an environment without marshmallow.
  
      The incoming config may not be comprehensive, but is assumed to be up to date with the latest ludwig schema.
      """
      model_type = updated_config.get(MODEL_TYPE, MODEL_ECD)
      error = None
      with VALIDATION_LOCK:
          try:
              validate(
                  instance=updated_config,
                  schema=get_schema(model_type=model_type),
                  cls=get_validator(),
              )
          except jsonschema.exceptions.ValidationError as e:
              # Capture error but don't raise here, otherwise we get the full output from `e`, which contains a dump
              # of the entire schema
              error = e
  
      if error is not None:
          raise ConfigValidationError(
              f"Failed to validate JSON schema for config. Error: {error.message}"
          ) from error
  
file_path: ludwig/ludwig/config_validation/validation.py
imports: from functools import lru_cache
  from threading import Lock
  import jsonschema.exceptions
  from jsonschema import Draft7Validator, validate
  from jsonschema.validators import extend
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import BASE_MODEL, MODEL_ECD, MODEL_LLM, MODEL_TYPE
  from ludwig.error import ConfigValidationError
  from ludwig.schema.combiners.utils import get_combiner_jsonschema
  from ludwig.schema.features.utils import get_input_feature_jsonschema, get_output_feature_jsonschema
  from ludwig.schema.hyperopt import get_hyperopt_jsonschema
  from ludwig.schema.trainer import get_model_type_jsonschema, get_trainer_jsonschema
  from ludwig.schema.utils import unload_jsonschema_from_marshmallow_class
label_desc: Use image node_id 3 for calling a global function with example usage: check_schema(updated_config) without return types