code: def _maybe_normalize_split_sizes(train_size, test_size):
      # adopt scikit-learn's new behavior (complement) now.
      if train_size is None and test_size is None:
          msg = "test_size and train_size can not both be None"
          raise ValueError(msg)
      elif any(
          isinstance(x, numbers.Integral)
          for x in (train_size, test_size)
      ):
          raise ValueError(
              "Dask-ML does not support absolute sizes for "
              "'train_size' and 'test_size'. Use floats between "
              "0 and 1 to specify the fraction of each block "
              "that should go to the train and test set."
          )
  
      if train_size is not None:
          if train_size < 0 or train_size > 1:
              raise ValueError(
                  "'train_size' must be between 0 and 1. "
                  "Got {}".format(train_size)
              )
          if test_size is None:
              test_size = 1 - train_size
      if test_size is not None:
          if test_size < 0 or test_size > 1:
              raise ValueError(
                  "'test_size' must be between 0 and 1. "
                  "Got {}".format(test_size)
              )
  
          if train_size is None:
              train_size = 1 - test_size
      if abs(1 - (train_size + test_size)) > 0.001:
          raise ValueError(
              "The sum of 'train_size' and 'test_size' must be 1. "
              "train_size: {} test_size: {}".format(
                  train_size, test_size
              )
          )
      return train_size, test_size
  
imports: import itertools
  import logging
  import numbers
  import warnings
  import dask
  import dask.array
  import dask.dataframe
  import numpy
  import sklearn.model_selection
  from sklearn.model_selection._split import BaseCrossValidator, _validate_shuffle_split
  from sklearn.utils import check_random_state
  from dask_ml._compat import DASK_2130, DASK_VERSION
  from dask_ml.utils import check_array, check_matching_blocks
  from .._utils import draw_seed
label_desc: Use image node_id 2 for calling a global function with example usage: _maybe_normalize_split_sizes(train_size, test_size) and returns: train_size,  test_size