mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
features module
This commit is contained in:
@@ -36,6 +36,7 @@ from .devtools.client import DevtoolsClient, DevtoolsConnectionError, DevtoolsLo
|
||||
from .devtools.redirect_output import StdoutRedirector
|
||||
from .dom import DOMNode
|
||||
from .driver import Driver
|
||||
from .features import parse_features, FeatureFlag
|
||||
from .file_monitor import FileMonitor
|
||||
from .geometry import Offset, Region, Size
|
||||
from .layouts.dock import Dock
|
||||
@@ -89,7 +90,6 @@ class App(Generic[ReturnType], DOMNode):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
screen: bool = True,
|
||||
driver_class: Type[Driver] | None = None,
|
||||
log: str = "",
|
||||
log_verbosity: int = 1,
|
||||
@@ -162,11 +162,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
if css is not None:
|
||||
self.css = css
|
||||
|
||||
self.features = set(
|
||||
feature.strip().lower()
|
||||
for feature in os.getenv("TEXTUAL", "").split(",")
|
||||
if feature.strip()
|
||||
)
|
||||
self.features: frozenset[FeatureFlag] = parse_features(os.getenv("TEXTUAL", ""))
|
||||
|
||||
self.registry: set[MessagePump] = set()
|
||||
|
||||
|
||||
32
src/textual/features.py
Normal file
32
src/textual/features.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import sys
|
||||
|
||||
from typing import cast
|
||||
|
||||
if sys.version_info >= (3, 8):
|
||||
from typing import Final, Literal
|
||||
else:
|
||||
from typing_extensions import Final, Literal
|
||||
|
||||
FEATURES: Final = {"devtools", "debug"}
|
||||
|
||||
FeatureFlag = Literal["devtools", "debug"]
|
||||
|
||||
|
||||
def parse_features(features: str) -> frozenset[FeatureFlag]:
|
||||
"""Parse features env var
|
||||
|
||||
Args:
|
||||
features (str): Comma seprated feature flags
|
||||
|
||||
Returns:
|
||||
frozenset[FeatureFlag]: A frozen set of known features.
|
||||
"""
|
||||
|
||||
features_set = frozenset(
|
||||
set(
|
||||
feature.strip().lower()
|
||||
for feature in features.split(",")
|
||||
if feature.strip()
|
||||
).intersection(FEATURES)
|
||||
)
|
||||
return cast("frozenset[FeatureFlag]", features_set)
|
||||
Reference in New Issue
Block a user