From 573a2b0fa0628685ee4e6914fb984377d2fcd09a Mon Sep 17 00:00:00 2001 From: Yuxuan Hu Date: Fri, 29 Aug 2025 20:29:23 -0700 Subject: [PATCH 1/2] Fix infinite recursion when _service is not set Summary: To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service, I must find _service. To find _service... Stack overflow. Maybe I should look somewhere else. --- src/forge/controller/service/interface.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/forge/controller/service/interface.py b/src/forge/controller/service/interface.py index 3b6b4b687..c2a553507 100644 --- a/src/forge/controller/service/interface.py +++ b/src/forge/controller/service/interface.py @@ -179,10 +179,16 @@ def _get_internal_state(self): def __getattr__(self, name: str): """Forward all other attribute access to the underlying Service Actor.""" + # No infinite recursion please + try: + _service = object.__getattribute__(self, "_service") + except AttributeError: + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{name}'" + ) # Forward everything else to the _service - if hasattr(self._service, name): - return getattr(self._service, name) - + if hasattr(_service, name): + return getattr(_service, name) raise AttributeError( f"'{self.__class__.__name__}' object has no attribute '{name}'" ) From 5b392e535077a8e4076d47a8c83eecf716ffa0df Mon Sep 17 00:00:00 2001 From: Allen Wang <9057208+allenwang28@users.noreply.github.com> Date: Sat, 30 Aug 2025 09:19:32 -0400 Subject: [PATCH 2/2] Update src/forge/controller/service/interface.py --- src/forge/controller/service/interface.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/forge/controller/service/interface.py b/src/forge/controller/service/interface.py index c2a553507..250f22b85 100644 --- a/src/forge/controller/service/interface.py +++ b/src/forge/controller/service/interface.py @@ -179,7 +179,6 @@ def _get_internal_state(self): def __getattr__(self, name: str): """Forward all other attribute access to the underlying Service Actor.""" - # No infinite recursion please try: _service = object.__getattribute__(self, "_service") except AttributeError: