code: def test_schema_is_complete():
      config_fn = os.path.join(
          os.path.dirname(__file__), "..", "distributed.yaml"
      )
      schema_fn = os.path.join(
          os.path.dirname(__file__), "..", "distributed-schema.yaml"
      )
  
      with open(config_fn) as f:
          config = yaml.safe_load(f)
  
      with open(schema_fn) as f:
          schema = yaml.safe_load(f)
  
      skip = {
          "distributed.scheduler.default-task-durations",
          "distributed.scheduler.dashboard.bokeh-application",
          "distributed.nanny.environ",
          "distributed.nanny.pre-spawn-environ",
          "distributed.comm.ucx.environment",
      }
  
      def test_matches(c, s, root):
          if set(c) != set(s["properties"]):
              raise ValueError(
                  "\nThe distributed.yaml and distributed-schema.yaml files are not in sync.\n"
                  "This usually happens when we add a new configuration value,\n"
                  "but don't add the schema of that value to the distributed-schema.yaml file\n"
                  "Please modify these files to include the missing values: \n\n"
                  "    distributed.yaml:        {}\n"
                  "    distributed-schema.yaml: {}\n\n"
                  "Examples in these files should be a good start, \n"
                  "even if you are not familiar with the jsonschema spec".format(
                      sorted(c), sorted(s["properties"])
                  )
              )
          for k, v in c.items():
              key = f"{root}.{k}" if root else k
              if isinstance(v, dict) and key not in skip:
                  test_matches(c[k], s["properties"][k], key)
  
      test_matches(config, schema, "")
  
imports: from __future__ import annotations
  import contextlib
  import logging
  import os
  import re
  import subprocess
  import sys
  import tempfile
  import textwrap
  import pytest
  import yaml
  import dask.config
  from distributed.config import initialize_logging
  from distributed.utils_test import captured_handler, new_config, new_config_file
label_desc: Use image node_id 10 for calling a global function with example usage: test_schema_is_complete() without return types