docs: def validate_schema_dict(schema):
      # type: (Dict[str, Any]) -> None
      """ Validate the schema.
  
          This raises iff either the schema or the master schema are
          invalid. If it's successful, it returns nothing.
  
          :param schema: The schema to validate, as parsed by `json`.
          :raises SchemaError: When the schema is invalid.
          :raises MasterSchemaError: When the master schema is invalid.
      """
      if not isinstance(schema, dict):
          msg = ('The top level of the schema file is a {}, whereas a dict is '
                 'expected.'.format(type(schema).__name__))
          raise SchemaError(msg)
  
      if 'version' in schema:
          version = schema['version']
      else:
          raise SchemaError('A format version is expected in the schema.')
  
      master_schema_bytes = _get_master_schema(version)
      try:
          master_schema = json.loads(master_schema_bytes.decode('utf-8'))
      except ValueError as e:  # In Python 3 we can be more specific with
          # json.decoder.JSONDecodeError, but that
          # doesn't exist in Python 2.
          msg = ('The master schema is not a valid JSON file. The schema cannot '
                 'be validated. Please file a bug report.')
          raise_from(MasterSchemaError(msg), e)
  
      try:
          jsonschema.validate(schema, master_schema)
      except jsonschema.exceptions.ValidationError as e:
          raise_from(SchemaError('The schema is not valid.'), e)
      except jsonschema.exceptions.SchemaError as e:
          msg = ('The master schema is not valid. The schema cannot be '
                 'validated. Please file a bug report.')
          raise_from(MasterSchemaError(msg), e)