docs: def dictionary_validator(key_type, value_type):
      """Validator for ``attrs`` that performs deep type checking of dictionaries."""
  
      def _validate_dictionary(instance, attribute, value):
          # pylint: disable=unused-argument
          """Validate that a dictionary is structured as expected.
  
          :raises TypeError: if ``value`` is not a dictionary
          :raises TypeError: if ``value`` keys are not all of ``key_type`` type
          :raises TypeError: if ``value`` values are not all of ``value_type`` type
          """
          if not isinstance(value, dict):
              raise TypeError('"{}" must be a dictionary'.format(attribute.name))
  
          for key, data in value.items():
              if not isinstance(key, key_type):
                  raise TypeError(
                      '"{name}" dictionary keys must be of type "{type}"'.format(name=attribute.name, type=key_type)
                  )
  
              if not isinstance(data, value_type):
                  raise TypeError(
                      '"{name}" dictionary values must be of type "{type}"'.format(name=attribute.name, type=value_type)
                  )
  
      return _validate_dictionary