mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
prevent double errors (#1998)
* prevent double errors * track invalid css
This commit is contained in:
@@ -1460,7 +1460,6 @@ class App(Generic[ReturnType], DOMNode):
|
||||
Args:
|
||||
error: An exception instance.
|
||||
"""
|
||||
|
||||
if hasattr(error, "__rich__"):
|
||||
# Exception has a rich method, so we can defer to that for the rendering
|
||||
self.panic(error)
|
||||
@@ -1985,7 +1984,6 @@ class App(Generic[ReturnType], DOMNode):
|
||||
Returns:
|
||||
True if the event has handled.
|
||||
"""
|
||||
print("ACTION", action, default_namespace)
|
||||
if isinstance(action, str):
|
||||
target, params = actions.parse(action)
|
||||
else:
|
||||
|
||||
@@ -128,6 +128,7 @@ class Stylesheet:
|
||||
self.__variable_tokens: dict[str, list[Token]] | None = None
|
||||
self.source: dict[str, CssSource] = {}
|
||||
self._require_parse = False
|
||||
self._invalid_css: set[str] = set()
|
||||
|
||||
def __rich_repr__(self) -> rich.repr.Result:
|
||||
yield list(self.source.keys())
|
||||
@@ -188,6 +189,7 @@ class Stylesheet:
|
||||
"""
|
||||
self._variables = variables
|
||||
self.__variable_tokens = None
|
||||
self._invalid_css = set()
|
||||
|
||||
def _parse_rules(
|
||||
self,
|
||||
@@ -304,10 +306,20 @@ class Stylesheet:
|
||||
"""
|
||||
rules: list[RuleSet] = []
|
||||
add_rules = rules.extend
|
||||
|
||||
for path, (css, is_default_rules, tie_breaker) in self.source.items():
|
||||
css_rules = self._parse_rules(
|
||||
css, path, is_default_rules=is_default_rules, tie_breaker=tie_breaker
|
||||
)
|
||||
if css in self._invalid_css:
|
||||
continue
|
||||
try:
|
||||
css_rules = self._parse_rules(
|
||||
css,
|
||||
path,
|
||||
is_default_rules=is_default_rules,
|
||||
tie_breaker=tie_breaker,
|
||||
)
|
||||
except Exception:
|
||||
self._invalid_css.add(css)
|
||||
raise
|
||||
if any(rule.errors for rule in css_rules):
|
||||
error_renderable = StylesheetErrors(css_rules)
|
||||
raise StylesheetParseError(error_renderable)
|
||||
|
||||
Reference in New Issue
Block a user