From 58e0bf7149cdfc8d409ea642a2abb56b6d97d3ba Mon Sep 17 00:00:00 2001
From: kmochocki <kmochocki@syncad.com>
Date: Mon, 17 Mar 2025 02:20:58 +0000
Subject: [PATCH] Fix passing of logger to handle

---
 beekeepy/beekeepy/_remote_handle/abc/handle.py  | 9 +++++----
 beekeepy/beekeepy/_runnable_handle/beekeeper.py | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/beekeepy/beekeepy/_remote_handle/abc/handle.py b/beekeepy/beekeepy/_remote_handle/abc/handle.py
index a632b5bc..dc77ea88 100644
--- a/beekeepy/beekeepy/_remote_handle/abc/handle.py
+++ b/beekeepy/beekeepy/_remote_handle/abc/handle.py
@@ -3,7 +3,7 @@ from __future__ import annotations
 from abc import ABC, abstractmethod
 from typing import TYPE_CHECKING, Any, Generic, TypeVar
 
-from loguru import logger
+from loguru import logger as loguru_logger
 
 from beekeepy._communication.aiohttp_communicator import AioHttpCommunicator
 from beekeepy._communication.request_communicator import RequestCommunicator
@@ -35,6 +35,7 @@ class AbstractHandle(UniqueSettingsHolder[Settings], ABC, Generic[ApiT]):
         self,
         *args: Any,
         settings: Settings,
+        logger: Logger | None = None,
         **kwargs: Any,
     ) -> None:
         """Constructs handle to network service.
@@ -44,7 +45,7 @@ class AbstractHandle(UniqueSettingsHolder[Settings], ABC, Generic[ApiT]):
             communicator: communicator class to use for communication
         """
         super().__init__(*args, settings=settings, **kwargs)
-        self.__logger = self.__configure_logger()
+        self.__logger = self.__configure_logger(logger)
         self.__overseer = self.settings.get_overseer(
             communicator=(self.settings.try_get_communicator_instance() or self._get_recommended_communicator())
         )
@@ -112,9 +113,9 @@ class AbstractHandle(UniqueSettingsHolder[Settings], ABC, Generic[ApiT]):
         assert isinstance(serialized_data, JSONRPCResult)
         return serialized_data
 
-    def __configure_logger(self) -> Logger:
+    def __configure_logger(self, logger: Logger | None) -> Logger:
         # credit for lazy=True: https://github.com/Delgan/loguru/issues/402#issuecomment-2028011786
-        return logger.opt(lazy=True).bind(**self._logger_extras())
+        return (logger or loguru_logger).opt(lazy=True).bind(**self._logger_extras())
 
     def teardown(self) -> None:
         self._overseer.teardown()
diff --git a/beekeepy/beekeepy/_runnable_handle/beekeeper.py b/beekeepy/beekeepy/_runnable_handle/beekeeper.py
index 0b6e7287..58bc9f66 100644
--- a/beekeepy/beekeepy/_runnable_handle/beekeeper.py
+++ b/beekeepy/beekeepy/_runnable_handle/beekeeper.py
@@ -58,7 +58,7 @@ class AsyncRemoteBeekeeper(remote_beekeeper.AsyncBeekeeper):
 
 class BeekeeperCommon(BeekeeperNotificationCallbacks, ABC):
     def __init__(self, *args: Any, settings: Settings, logger: Logger, **kwargs: Any) -> None:
-        super().__init__(*args, settings=settings, **kwargs)
+        super().__init__(*args, settings=settings, logger=logger, **kwargs)
         self.__exec = BeekeeperExecutable(settings, logger)
         self.__notification_server: UniversalNotificationServer | None = None
         self.__notification_event_handler: NotificationHandler | None = None
-- 
GitLab