from enum import Enum


class Method(str, Enum):
    """The Request Method (VERB)

    This type also contains constants for a number of common HTTP methods such as GET, POST, etc.

    Currently includes 8 variants representing the 8 methods defined in [RFC 7230](https://tools.ietf.org/html/rfc7231#section-4.1), plus PATCH, and an Extension variant for all extensions."""  # noqa: E501

    """# The `OPTIONS` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.2.1). """  # noqa: E501
    OPTIONS = "OPTIONS"
    """# The `GET` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1). """  # noqa: E501
    GET = "GET"
    """# The `POST` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1). """  # noqa: E501
    POST = "POST"
    """# The `PUT` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1). """  # noqa: E501
    PUT = "PUT"
    """# The `DELETE` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.5). """  # noqa: E501
    DELETE = "DELETE"
    """# The `HEAD` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.2). """  # noqa: E501
    HEAD = "HEAD"
    """# The `TRACE` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3). """  # noqa: E501
    TRACE = "TRACE"
    """# The `CONNECT` method as defined in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.6). """  # noqa: E501
    CONNECT = "CONNECT"
    """# The `PATCH` method as defined in [RFC 5789](https://tools.ietf.org/html/rfc5789). """  # noqa: E501
    PATCH = "PATCH"
    """# A catch all. """  # noqa: E501
    EXTENSION = "EXTENSION"

    def __str__(self) -> str:
        return str(self.value)
