From 7fa93e75dc60a7ee43d2411446b8afc9ef507c49 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:44:58 +0000 Subject: [PATCH 1/2] Initial plan From 1bd58c6169739ea1124302a5d7640b87ae8e60e3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:50:15 +0000 Subject: [PATCH 2/2] Fix: Remove macros from namespace when deleted Co-authored-by: fumitoh <8450892+fumitoh@users.noreply.github.com> --- modelx/core/model.py | 4 ++++ modelx/tests/core/model/test_macro.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/modelx/core/model.py b/modelx/core/model.py index 1b15e06..4bdefc3 100644 --- a/modelx/core/model.py +++ b/modelx/core/model.py @@ -1354,6 +1354,10 @@ def del_macro(self, name): macro = self._macros[name] macro.on_delete() del self._macros[name] + + # Remove from macro namespace if it exists + if self._macro_namespace is not None and name in self._macro_namespace: + del self._macro_namespace[name] def get_macro_namespace(self): """Get the namespace for macro execution diff --git a/modelx/tests/core/model/test_macro.py b/modelx/tests/core/model/test_macro.py index 9ca5124..91bae24 100644 --- a/modelx/tests/core/model/test_macro.py +++ b/modelx/tests/core/model/test_macro.py @@ -143,9 +143,15 @@ def to_delete(): assert 'to_delete' in m.macros + # Call macro to ensure namespace is created + m.to_delete() + assert 'to_delete' in m._impl._macro_namespace + del m.to_delete assert 'to_delete' not in m.macros + # Verify macro is also removed from the namespace (bug fix) + assert 'to_delete' not in m._impl._macro_namespace with pytest.raises(AttributeError): m.to_delete()