30 lines
699 B
Python
30 lines
699 B
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, cast
|
|
|
|
from typing_extensions import Literal
|
|
|
|
if TYPE_CHECKING:
|
|
from typing_extensions import Final
|
|
|
|
FEATURES: Final = {"devtools", "debug", "headless"}
|
|
|
|
FeatureFlag = Literal["devtools", "debug", "headless"]
|
|
|
|
|
|
def parse_features(features: str) -> frozenset[FeatureFlag]:
|
|
"""Parse features env var
|
|
|
|
Args:
|
|
features: Comma separated feature flags
|
|
|
|
Returns:
|
|
A frozen set of known features.
|
|
"""
|
|
|
|
features_set = frozenset(
|
|
feature.strip().lower() for feature in features.split(",") if feature.strip()
|
|
).intersection(FEATURES)
|
|
|
|
return cast("frozenset[FeatureFlag]", features_set)
|