From 1410648e36c19ed59b41e75833d22cdc33553dc6 Mon Sep 17 00:00:00 2001 From: Darren Burns Date: Tue, 18 Jan 2022 14:13:40 +0000 Subject: [PATCH] Add Styles.reset method revert internal attributes to None --- src/textual/css/styles.py | 4 ++++ src/textual/css/stylesheet.py | 2 +- tests/test_styles.py | 11 +++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 tests/test_styles.py diff --git a/src/textual/css/styles.py b/src/textual/css/styles.py index 4e48fa95b..c324426e9 100644 --- a/src/textual/css/styles.py +++ b/src/textual/css/styles.py @@ -235,6 +235,10 @@ class Styles: else: return None + def reset(self) -> None: + for rule_name in INTERNAL_RULE_NAMES: + setattr(self, rule_name, None) + def extract_rules( self, specificity: Specificity3 ) -> list[tuple[str, Specificity4, Any]]: diff --git a/src/textual/css/stylesheet.py b/src/textual/css/stylesheet.py index d441a2d12..81a4ff14b 100644 --- a/src/textual/css/stylesheet.py +++ b/src/textual/css/stylesheet.py @@ -114,7 +114,7 @@ class Stylesheet: _check_rule = self._check_rule - node.reset_styles() + node.styles.reset() # Get the default node CSS rules for key, default_specificity, value in node._default_rules: diff --git a/tests/test_styles.py b/tests/test_styles.py new file mode 100644 index 000000000..074ef06ad --- /dev/null +++ b/tests/test_styles.py @@ -0,0 +1,11 @@ +from rich.style import Style + +from textual.css.styles import Styles + + +def test_styles_reset(): + styles = Styles() + styles.text_style = "not bold" + assert styles.text_style == Style(bold=False) + styles.reset() + assert styles.text_style is Style.null()