Description of disallowed objects.

        Disallow must be a type name, a nested schema or a list of those.  Type
        name must be one of ``string``, ``number``, ``integer``, ``boolean``,
        ``object``, ``array``, ``null`` or ``any``.

def disallow(self):
        """
        Description of disallowed objects.

        Disallow must be a type name, a nested schema or a list of those.  Type
        name must be one of ``string``, ``number``, ``integer``, ``boolean``,
        ``object``, ``array``, ``null`` or ``any``.
        """
        value = self._schema.get("disallow", None)
        if value is None:
            return
        if not isinstance(value, (basestring, dict, list)):
            raise SchemaError(
                "disallow value {0!r} is not a simple type name, nested "
                "schema nor a list of those".format(value))
        if isinstance(value, list):
            disallow_list = value
        else:
            disallow_list = [value]
        seen = set()
        for js_disallow in disallow_list:
            if isinstance(js_disallow, dict):
                # no nested validation here
                pass
            else:
                if js_disallow in seen:
                    raise SchemaError(
                        "disallow value {0!r} contains duplicate element"
                        " {1!r}".format(value, js_disallow))
                else:
                    seen.add(js_disallow)
                if js_disallow not in (
                    "string", "number", "integer", "boolean", "object",
                    "array", "null", "any"):
                    raise SchemaError(
                        "disallow value {0!r} is not a simple type"
                        " name".format(js_disallow))
        return disallow_list