# Path: rest_framework_json_schema/exceptions.py
# class TypeConflict(Exception):
#     """
#     The type passed to this resource object is incorrect.
# 
#     https://jsonapi.org/format/#crud-creating-responses-409
#     """
# 
# class IncludeInvalid(Exception):
#     """
#     The relationship cannot be included.
# 
#     https://jsonapi.org/format/#fetching-includes
#     """
# 
# Path: rest_framework_json_schema/transforms.py
# class NullTransform(Transform):
#     """A transform that doesn't do anything."""
# 
#     def transform(self, name: str) -> str:
#         """Do nothing."""
#         return name
# 
# class Transform(ABC):
#     """Provide the base interface for transforms."""
# 
#     @abstractmethod
#     def transform(self, name: str) -> str:
#         """Return the transformed name."""
#         ...


from collections import OrderedDict
from typing import (
    Any,
    Optional,
    Dict,
    Sequence,
    Tuple,
    List,
    Callable,
    Union,
    Type,
    cast,
    Iterator,
    overload,
)
from django.urls import reverse
from rest_framework.request import Request
from .exceptions import TypeConflict, IncludeInvalid
from .transforms import NullTransform, Transform
        """Create an object."""
        for key, value in kwargs.items():
            setattr(self, key, value)

    def render(self, request: Request) -> Dict[str, Any]:
        """Render object to JSON data."""
        result: Dict[str, Any] = OrderedDict(
            (("id", str(self.id)), ("type", self.type))
        )
        meta = self.render_meta(self, request)
        if meta:
            result["meta"] = meta
        return result

    def get_schema(self) -> ResourceObject:
        """
        Return the schema for this resource.

        Subclasses can override this with a mechanism to get the schema for a resource object.
        This is optional, but required for including resources.
        """
        raise IncludeInvalid()

    def get_data(self) -> Dict[str, Any]:
        """
        Return the serialized data for this resource.

        Subclasses can override this with a mechanism to get the rendered data for resource object.
        This is optional, but required for including resources.
        """

# Path: rest_framework_json_schema/exceptions.py
# class TypeConflict(Exception):
#     """
#     The type passed to this resource object is incorrect.
# 
#     https://jsonapi.org/format/#crud-creating-responses-409
#     """
# 
# class IncludeInvalid(Exception):
#     """
#     The relationship cannot be included.
# 
#     https://jsonapi.org/format/#fetching-includes
#     """
# 
# Path: rest_framework_json_schema/transforms.py
# class NullTransform(Transform):
#     """A transform that doesn't do anything."""
# 
#     def transform(self, name: str) -> str:
#         """Do nothing."""
#         return name
# 
# class Transform(ABC):
#     """Provide the base interface for transforms."""
# 
#     @abstractmethod
#     def transform(self, name: str) -> str:
#         """Return the transformed name."""
#         ...


# Path: rest_framework_json_schema/schema.py
from collections import OrderedDict
from typing import (
    Any,
    Optional,
    Dict,
    Sequence,
    Tuple,
    List,
    Callable,
    Union,
    Type,
    cast,
    Iterator,
    overload,
)
from django.urls import reverse
from rest_framework.request import Request
from .exceptions import TypeConflict, IncludeInvalid
from .transforms import NullTransform, Transform

        """Create an object."""
        for key, value in kwargs.items():
            setattr(self, key, value)

    def render(self, request: Request) -> Dict[str, Any]:
        """Render object to JSON data."""
        result: Dict[str, Any] = OrderedDict(
            (("id", str(self.id)), ("type", self.type))
        )
        meta = self.render_meta(self, request)
        if meta:
            result["meta"] = meta
        return result

    def get_schema(self) -> ResourceObject:
        """
        Return the schema for this resource.

        Subclasses can override this with a mechanism to get the schema for a resource object.
        This is optional, but required for including resources.
        """
        raise IncludeInvalid()

    def get_data(self) -> Dict[str, Any]:
        """
        Return the serialized data for this resource.

        Subclasses can override this with a mechanism to get the rendered data for resource object.
        This is optional, but required for including resources.
        """

        raise IncludeInvalid()