# -*- coding: utf-8 -*- """ h2/errors ~~~~~~~~~~~~~~~~~~~ Global error code registry containing the established HTTP/2 error codes. The current registry is available at: https://tools.ietf.org/html/rfc7540#section-11.4 """ import enum class ErrorCodes(enum.IntEnum): """ All known HTTP/2 error codes. .. versionadded:: 2.5.0 """ #: Graceful shutdown. NO_ERROR = 0x0 #: Protocol error detected. PROTOCOL_ERROR = 0x1 #: Implementation fault. INTERNAL_ERROR = 0x2 #: Flow-control limits exceeded. FLOW_CONTROL_ERROR = 0x3 #: Settings not acknowledged. SETTINGS_TIMEOUT = 0x4 #: Frame received for closed stream. STREAM_CLOSED = 0x5 #: Frame size incorrect. FRAME_SIZE_ERROR = 0x6 #: Stream not processed. REFUSED_STREAM = 0x7 #: Stream cancelled. CANCEL = 0x8 #: Compression state not updated. COMPRESSION_ERROR = 0x9 #: TCP connection error for CONNECT method. CONNECT_ERROR = 0xa #: Processing capacity exceeded. ENHANCE_YOUR_CALM = 0xb #: Negotiated TLS parameters not acceptable. INADEQUATE_SECURITY = 0xc #: Use HTTP/1.1 for the request. HTTP_1_1_REQUIRED = 0xd def _error_code_from_int(code): """ Given an integer error code, returns either one of :class:`ErrorCodes ` or, if not present in the known set of codes, returns the integer directly. """ try: return ErrorCodes(code) except ValueError: return code #: Graceful shutdown. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.NO_ERROR #: `. NO_ERROR = ErrorCodes.NO_ERROR #: Protocol error detected. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.PROTOCOL_ERROR #: `. PROTOCOL_ERROR = ErrorCodes.PROTOCOL_ERROR #: Implementation fault. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.INTERNAL_ERROR #: `. INTERNAL_ERROR = ErrorCodes.INTERNAL_ERROR #: Flow-control limits exceeded. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.FLOW_CONTROL_ERROR #: `. FLOW_CONTROL_ERROR = ErrorCodes.FLOW_CONTROL_ERROR #: Settings not acknowledged. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.SETTINGS_TIMEOUT #: `. SETTINGS_TIMEOUT = ErrorCodes.SETTINGS_TIMEOUT #: Frame received for closed stream. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.STREAM_CLOSED #: `. STREAM_CLOSED = ErrorCodes.STREAM_CLOSED #: Frame size incorrect. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.FRAME_SIZE_ERROR #: `. FRAME_SIZE_ERROR = ErrorCodes.FRAME_SIZE_ERROR #: Stream not processed. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.REFUSED_STREAM #: `. REFUSED_STREAM = ErrorCodes.REFUSED_STREAM #: Stream cancelled. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.CANCEL #: `. CANCEL = ErrorCodes.CANCEL #: Compression state not updated. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.COMPRESSION_ERROR #: `. COMPRESSION_ERROR = ErrorCodes.COMPRESSION_ERROR #: TCP connection error for CONNECT method. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.CONNECT_ERROR #: `. CONNECT_ERROR = ErrorCodes.CONNECT_ERROR #: Processing capacity exceeded. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.ENHANCE_YOUR_CALM #: `. ENHANCE_YOUR_CALM = ErrorCodes.ENHANCE_YOUR_CALM #: Negotiated TLS parameters not acceptable. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.INADEQUATE_SECURITY #: `. INADEQUATE_SECURITY = ErrorCodes.INADEQUATE_SECURITY #: Use HTTP/1.1 for the request. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes.HTTP_1_1_REQUIRED #: `. HTTP_1_1_REQUIRED = ErrorCodes.HTTP_1_1_REQUIRED #: All known HTTP/2 error codes. #: #: .. deprecated:: 2.5.0 #: Deprecated in favour of :class:`ErrorCodes `. H2_ERRORS = list(ErrorCodes) __all__ = ['H2_ERRORS', 'NO_ERROR', 'PROTOCOL_ERROR', 'INTERNAL_ERROR', 'FLOW_CONTROL_ERROR', 'SETTINGS_TIMEOUT', 'STREAM_CLOSED', 'FRAME_SIZE_ERROR', 'REFUSED_STREAM', 'CANCEL', 'COMPRESSION_ERROR', 'CONNECT_ERROR', 'ENHANCE_YOUR_CALM', 'INADEQUATE_SECURITY', 'HTTP_1_1_REQUIRED', 'ErrorCodes']