Skip to content

Commit

Permalink
fix: _remove_element failing silently when child objects left over
Browse files Browse the repository at this point in the history
  • Loading branch information
iisakkirotko committed Apr 26, 2024
1 parent 761281b commit c645d15
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions reacton/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -2125,6 +2125,17 @@ def _remove_element(self, el: Element, default_key: str, parent_key):
new_parent_key = join_key(parent_key, key)
self._remove_element(self.context.root_element, "/", parent_key=new_parent_key)
finally:
try:
assert not child_context.elements, f"left over elements {child_context.elements}"
assert not child_context.element_to_widget, f"left over element_to_widget {child_context.element_to_widget}"
assert not child_context.widgets, f"left over widgets {child_context.widgets}"
assert not child_context.children, f"left over children {child_context.children}"
assert not child_context.owns, f"left over owns {child_context.owns}"
# TODO: this is not the case when an exception occurs
# assert not child_context.children_next, f"left over children {child_context.children_next}"
except Exception as e:
child_context.exceptions_self.append(e)

# restore context
self.context = context
if child_context.exceptions_self or child_context.exceptions_children and not child_context.exception_handler:
Expand Down Expand Up @@ -2159,14 +2170,6 @@ def _remove_element(self, el: Element, default_key: str, parent_key):
if el in context.element_to_widget:
del context.element_to_widget[el]
del context.elements[key]
if isinstance(el.component, ComponentFunction):
assert not child_context.elements, f"left over elements {child_context.elements}"
assert not child_context.element_to_widget, f"left over element_to_widget {child_context.element_to_widget}"
assert not child_context.widgets, f"left over widgets {child_context.widgets}"
assert not child_context.children, f"left over children {child_context.children}"
assert not child_context.owns, f"left over owns {child_context.owns}"
# TODO: this is not the case when an exception occurs
# assert not child_context.children_next, f"left over children {child_context.children_next}"

def _visit_children(self, el: Element, default_key: str, parent_key: str, f: Callable):
assert self.context is not None
Expand Down

0 comments on commit c645d15

Please sign in to comment.