code: def test_deterministic_tokenize(index):
      # Checks that `dask.base.normalize_token` correctly
      # dispatches to the logic defined in `backends.py`
      # (making `tokenize(<cudf-data>)` deterministic).
      df = cudf.DataFrame(
          {
              "A": range(10),
              "B": ["dog", "cat"] * 5,
              "C": range(10, 0, -1),
          },
          index=index,
      )
  
      # Matching data should produce the same token
      assert tokenize(df) == tokenize(df)
      assert tokenize(df.A) == tokenize(df.A)
      assert tokenize(df.index) == tokenize(df.index)
      assert tokenize(df) == tokenize(df.copy(deep=True))
      assert tokenize(df.A) == tokenize(df.A.copy(deep=True))
      assert tokenize(df.index) == tokenize(df.index.copy(deep=True))
  
      # Modifying a column element should change the token
      original_token = tokenize(df)
      original_token_a = tokenize(df.A)
      df.A.iloc[2] = 10
      assert original_token != tokenize(df)
      assert original_token_a != tokenize(df.A)
  
      # Modifying an index element should change the token
      original_token = tokenize(df)
      original_token_index = tokenize(df.index)
      new_index = df.index.values
      new_index[2] = 10
      df.index = new_index
      assert original_token != tokenize(df)
      assert original_token_index != tokenize(df.index)
  
      # Check MultiIndex case
      df2 = df.set_index(["B", "C"], drop=False)
      assert tokenize(df) != tokenize(df2)
      assert tokenize(df2) == tokenize(df2)
  
file_path: cudf/python/dask_cudf/dask_cudf/tests/test_dispatch.py
imports: import numpy
  import pandas
  import pytest
  from dask.base import tokenize
  from dask.dataframe import assert_eq
  from dask.dataframe.methods import is_categorical_dtype
  import cudf
label_desc: Use image node_id 3 for calling a global function with example usage: test_deterministic_tokenize(index) without return types