predefined token types we can expect in the output standard combined chunks these predefined requests and responses assume a body predefined token types we can expect in the output standard combined chunks these predefined requests and responses assume a body good choice
from enum import Enum, auto


class Expect(Enum):
    
    REQUEST_HEADERS = auto()
    RESPONSE_HEADERS = auto()
    RESPONSE_META = auto()
    BODY = auto()
    SEPARATOR = auto()


class ExpectSequence:
    
    RAW_REQUEST = [
        Expect.REQUEST_HEADERS,
        Expect.BODY,
    ]
    RAW_RESPONSE = [
        Expect.RESPONSE_HEADERS,
        Expect.BODY,
    ]
    RAW_EXCHANGE = [
        *RAW_REQUEST,
        Expect.SEPARATOR,  
        *RAW_RESPONSE,
    ]
    RAW_BODY = [
        Expect.BODY,
    ]
    TERMINAL_REQUEST = [
        *RAW_REQUEST,
        Expect.SEPARATOR,
    ]
    TERMINAL_RESPONSE = [
        *RAW_RESPONSE,
        Expect.SEPARATOR,
    ]
    TERMINAL_EXCHANGE = [
        *TERMINAL_REQUEST,
        *TERMINAL_RESPONSE,
    ]
    TERMINAL_EXCHANGE_META = [
        *TERMINAL_EXCHANGE,
        Expect.RESPONSE_META
    ]
    TERMINAL_BODY = [
        RAW_BODY,
        Expect.SEPARATOR
    ]