[tor-commits] [stem/master] Fix monkey patches of the `_handle_event` method

atagar at torproject.org atagar at torproject.org
Thu Jul 16 01:28:59 UTC 2020


commit 2a65ee4bb3cd4a25baf14918cd7bb1c614be361e
Author: Illia Volochii <illia.volochii at gmail.com>
Date:   Thu Apr 30 19:32:25 2020 +0300

    Fix monkey patches of the `_handle_event` method
---
 stem/interpreter/__init__.py | 5 ++++-
 stem/interpreter/commands.py | 9 +++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/stem/interpreter/__init__.py b/stem/interpreter/__init__.py
index 1d08abb6..07353d44 100644
--- a/stem/interpreter/__init__.py
+++ b/stem/interpreter/__init__.py
@@ -124,7 +124,10 @@ def main() -> None:
 
     if args.run_cmd:
       if args.run_cmd.upper().startswith('SETEVENTS '):
-        controller._handle_event = lambda event_message: print(format(str(event_message), *STANDARD_OUTPUT))  # type: ignore
+        async def handle_event(event_message):
+          print(format(str(event_message), *STANDARD_OUTPUT))
+
+        controller._async_controller._handle_event = handle_event
 
         if sys.stdout.isatty():
           events = args.run_cmd.upper().split(' ', 1)[1]
diff --git a/stem/interpreter/commands.py b/stem/interpreter/commands.py
index 4c506b5e..0d262ab5 100644
--- a/stem/interpreter/commands.py
+++ b/stem/interpreter/commands.py
@@ -128,17 +128,18 @@ class ControlInterpreter(code.InteractiveConsole):
     # Intercept events our controller hears about at a pretty low level since
     # the user will likely be requesting them by direct 'SETEVENTS' calls.
 
-    handle_event_real = self._controller._handle_event
+    handle_event_real = self._controller._async_controller._handle_event
 
-    def handle_event_wrapper(event_message: stem.response.ControlMessage) -> None:
-      handle_event_real(event_message)
-      self._received_events.insert(0, event_message)  # type: ignore
+    async def handle_event_wrapper(event_message: stem.response.ControlMessage) -> None:
+      await handle_event_real(event_message)
+      self._received_events.insert(0, event_message)
 
       if len(self._received_events) > MAX_EVENTS:
         self._received_events.pop()
 
     # type check disabled due to https://github.com/python/mypy/issues/708
 
+    self._controller._async_controller._handle_event = handle_event_wrapper
     self._controller._handle_event = handle_event_wrapper  # type: ignore
 
   def get_events(self, *event_types: stem.control.EventType) -> List[stem.response.events.Event]:





More information about the tor-commits mailing list