|
| 1 | +from __future__ import annotations |
| 2 | + |
1 | 3 | import base64
|
2 | 4 | import os
|
3 | 5 | import zlib
|
@@ -113,8 +115,13 @@ def __init__(self, rules, version=None, bases=None, id=None):
|
113 | 115 | bases = []
|
114 | 116 | self.bases = bases
|
115 | 117 |
|
116 |
| - self._modifier_rules = [rule for rule in self.iter_rules() if rule.is_modifier] |
117 |
| - self._updater_rules = [rule for rule in self.iter_rules() if rule.is_updater] |
| 118 | + self._modifier_rules = [] |
| 119 | + self._updater_rules = [] |
| 120 | + for rule in self.iter_rules(): |
| 121 | + if modifier_rule := rule._as_modifier_rule(): |
| 122 | + self._modifier_rules.append(modifier_rule) |
| 123 | + if updater_rule := rule._as_updater_rule(): |
| 124 | + self._updater_rules.append(updater_rule) |
118 | 125 |
|
119 | 126 | def apply_modifications_to_frame(self, frames, platform, exception_data):
|
120 | 127 | """This applies the frame modifications to the frames itself. This
|
@@ -296,15 +303,15 @@ def matcher_description(self):
|
296 | 303 | rv = f"{rv} {action}"
|
297 | 304 | return rv
|
298 | 305 |
|
299 |
| - @property |
300 |
| - def is_modifier(self): |
301 |
| - """Does this rule modify the frame?""" |
302 |
| - return self._is_modifier |
| 306 | + def _as_modifier_rule(self) -> Rule | None: |
| 307 | + actions = [action for action in self.actions if action.is_modifier] |
| 308 | + if actions: |
| 309 | + return Rule(self.matchers, actions) |
303 | 310 |
|
304 |
| - @property |
305 |
| - def is_updater(self): |
306 |
| - """Does this rule update grouping components?""" |
307 |
| - return self._is_updater |
| 311 | + def _as_updater_rule(self) -> Rule | None: |
| 312 | + actions = [action for action in self.actions if action.is_updater] |
| 313 | + if actions: |
| 314 | + return Rule(self.matchers, actions) |
308 | 315 |
|
309 | 316 | def as_dict(self):
|
310 | 317 | matchers = {}
|
|
0 commit comments