diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/hyperframe/flags.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/hyperframe/flags.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/hyperframe/flags.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/hyperframe/flags.py b/.venv/lib/python3.12/site-packages/hyperframe/flags.py new file mode 100644 index 00000000..e5f4a22b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/hyperframe/flags.py @@ -0,0 +1,47 @@ +""" +Basic Flag and Flags data structures. +""" +from __future__ import annotations + +from collections.abc import Iterable, Iterator, MutableSet +from typing import NamedTuple + + +class Flag(NamedTuple): + name: str + bit: int + + +class Flags(MutableSet): # type: ignore + """ + A simple MutableSet implementation that will only accept known flags as + elements. + + Will behave like a regular set(), except that a ValueError will be thrown + when .add()ing unexpected flags. + """ + + def __init__(self, defined_flags: Iterable[Flag]) -> None: + self._valid_flags = {flag.name for flag in defined_flags} + self._flags: set[str] = set() + + def __repr__(self) -> str: + return repr(sorted(self._flags)) + + def __contains__(self, x: object) -> bool: + return self._flags.__contains__(x) + + def __iter__(self) -> Iterator[str]: + return self._flags.__iter__() + + def __len__(self) -> int: + return self._flags.__len__() + + def discard(self, value: str) -> None: + return self._flags.discard(value) + + def add(self, value: str) -> None: + if value not in self._valid_flags: + msg = f"Unexpected flag: {value}. Valid flags are: {self._valid_flags}" + raise ValueError(msg) + return self._flags.add(value) |