From 4a52a71956a8d46fcb7294ac71734504bb09bcc2 Mon Sep 17 00:00:00 2001 From: S. Solomon Darnell Date: Fri, 28 Mar 2025 21:52:21 -0500 Subject: two version of R2R are here --- .venv/lib/python3.12/site-packages/hpack/struct.py | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .venv/lib/python3.12/site-packages/hpack/struct.py (limited to '.venv/lib/python3.12/site-packages/hpack/struct.py') diff --git a/.venv/lib/python3.12/site-packages/hpack/struct.py b/.venv/lib/python3.12/site-packages/hpack/struct.py new file mode 100644 index 00000000..420c634c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/hpack/struct.py @@ -0,0 +1,50 @@ +""" +Contains structures for representing header fields with associated metadata. +""" +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from typing_extensions import Self, TypeAlias # pragma: no cover + + +class HeaderTuple(tuple[bytes, bytes]): + """ + A data structure that stores a single header field. + + HTTP headers can be thought of as tuples of ``(field name, field value)``. + A single header block is a sequence of such tuples. + + In HTTP/2, however, certain bits of additional information are required for + compressing these headers: in particular, whether the header field can be + safely added to the HPACK compression context. + + This class stores a header that can be added to the compression context. In + all other ways it behaves exactly like a tuple. + """ + + __slots__ = () + + indexable = True + + def __new__(cls, *args: Any) -> Self: + return tuple.__new__(cls, args) + + +class NeverIndexedHeaderTuple(HeaderTuple): + """ + A data structure that stores a single header field that cannot be added to + a HTTP/2 header compression context. + """ + + __slots__ = () + + indexable = False + + def __new__(cls, *args: Any) -> Self: + return tuple.__new__(cls, args) + + +Header: TypeAlias = "HeaderTuple | NeverIndexedHeaderTuple | tuple[bytes, bytes]" +HeaderWeaklyTyped: TypeAlias = "HeaderTuple | NeverIndexedHeaderTuple | tuple[bytes | str, bytes | str]" -- cgit v1.2.3