code: def test_dict_callable(df):
      """
      Test `complete` output when *columns
      is a dictionary.
      """
      cols = ["names", "numbers"]
      df = df.assign(names=[*ascii_lowercase[: len(df)]])
      new_numbers = {
          "numbers": lambda df: range(
              df.numbers.min(), df.numbers.max() + 1
          )
      }
      cols = ["numbers", "names"]
      result = df.complete(new_numbers, "names", sort=True)
      columns = df.columns
      new_index = range(df.numbers.min(), df.numbers.max() + 1)
      new_index = pd.MultiIndex.from_product(
          [new_index, df.names], names=cols
      )
      expected = (
          df.set_index(cols)
          .reindex(new_index)
          .reset_index()
          .reindex(columns=columns)
      )
  
      assert_frame_equal(result, expected)
  
imports: from string import ascii_lowercase
  import numpy
  import pandas
  import pytest
  from hypothesis import given, settings
  from pandas.testing import assert_frame_equal
  from janitor.testing_utils.strategies import categoricaldf_strategy
label_desc: Use image node_id 21 for calling a global function with example usage: test_dict_callable(df) without return types