1from typing import List, NewType, Optional, Tuple, Union 2 3 4__all__ = ["Data", "Origin", "ExtensionHeader", "ExtensionParameter", "Subprotocol"] 5 6Data = Union[str, bytes] 7 8Data__doc__ = """ 9Types supported in a WebSocket message: 10 11- :class:`str` for text messages 12- :class:`bytes` for binary messages 13 14""" 15# Remove try / except when dropping support for Python < 3.7 16try: 17 Data.__doc__ = Data__doc__ # type: ignore 18except AttributeError: # pragma: no cover 19 pass 20 21 22Origin = NewType("Origin", str) 23Origin.__doc__ = """Value of a Origin header""" 24 25 26ExtensionName = NewType("ExtensionName", str) 27ExtensionName.__doc__ = """Name of a WebSocket extension""" 28 29 30ExtensionParameter = Tuple[str, Optional[str]] 31 32ExtensionParameter__doc__ = """Parameter of a WebSocket extension""" 33try: 34 ExtensionParameter.__doc__ = ExtensionParameter__doc__ # type: ignore 35except AttributeError: # pragma: no cover 36 pass 37 38 39ExtensionHeader = Tuple[ExtensionName, List[ExtensionParameter]] 40 41ExtensionHeader__doc__ = """Item parsed in a Sec-WebSocket-Extensions header""" 42try: 43 ExtensionHeader.__doc__ = ExtensionHeader__doc__ # type: ignore 44except AttributeError: # pragma: no cover 45 pass 46 47 48Subprotocol = NewType("Subprotocol", str) 49Subprotocol.__doc__ = """Items parsed in a Sec-WebSocket-Protocol header""" 50