code: def test_preprocessing_backward_compatibility():
      # From v0.5.3.
      preprocessing_config = {
          "force_split": False,
          "split_probabilities": [0.7, 0.1, 0.2],
          "stratify": None,
      }
  
      _upgrade_preprocessing_split(preprocessing_config)
  
      assert preprocessing_config == {
          "split": {"probabilities": [0.7, 0.1, 0.2], "type": "random"},
      }
  
imports: import copy
  import math
  from typing import Any, Dict
  import pytest
  from ludwig.constants import BATCH_SIZE, BFILL, CLASS_WEIGHTS, DEFAULTS, EVAL_BATCH_SIZE, EXECUTOR, HYPEROPT, INPUT_FEATURES, LEARNING_RATE_SCHEDULER, LOSS, NUMBER, OUTPUT_FEATURES, PREPROCESSING, SCHEDULER, SPLIT, TRAINER, TYPE
  from ludwig.schema.model_config import ModelConfig
  from ludwig.schema.trainer import ECDTrainerConfig
  from ludwig.utils.backward_compatibility import _update_backend_cache_credentials, _upgrade_encoder_decoder_params, _upgrade_feature, _upgrade_preprocessing_split, upgrade_config_dict_to_latest_version, upgrade_missing_value_strategy, upgrade_model_progress
  from ludwig.utils.trainer_utils import TrainerMetric
label_desc: Use image node_id 1 for calling a global function with example usage: test_preprocessing_backward_compatibility() without return types