Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit f872fa8

Browse files
committed
Fix circular dependency in logging.py
1 parent fed2db1 commit f872fa8

2 files changed

Lines changed: 26 additions & 5 deletions

File tree

packages/jumpstarter/jumpstarter/exporter/logging.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22
from collections import deque
33
from contextlib import contextmanager
44
from threading import RLock
5-
from typing import TYPE_CHECKING
65

76
from jumpstarter_protocol import jumpstarter_pb2
87

8+
from .logging_protocol import LoggerRegistration
99
from jumpstarter.common import LogSource
1010

11-
if TYPE_CHECKING:
12-
from .session import Session
13-
1411

1512
class LogHandler(logging.Handler):
1613
def __init__(self, queue: deque, source: LogSource = LogSource.UNSPECIFIED):
@@ -69,7 +66,9 @@ def context_log_source(self, logger_name: str, source: LogSource):
6966
self.remove_child_handler(logger_name)
7067

7168

72-
def get_logger(name: str, source: LogSource = LogSource.SYSTEM, session: "Session" = None) -> logging.Logger:
69+
def get_logger(
70+
name: str, source: LogSource = LogSource.SYSTEM, session: LoggerRegistration | None = None
71+
) -> logging.Logger:
7372
"""
7473
Get a logger with automatic LogSource mapping.
7574
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"""Protocol for logger registration to avoid circular dependencies."""
2+
3+
from typing import Protocol
4+
5+
from jumpstarter.common import LogSource
6+
7+
8+
class LoggerRegistration(Protocol):
9+
"""Protocol for objects that can register logger sources.
10+
11+
This protocol defines the interface for objects that can associate
12+
logger names with log sources, enabling proper routing of log messages.
13+
"""
14+
15+
def add_logger_source(self, logger_name: str, source: LogSource) -> None:
16+
"""Register a logger name with its corresponding log source.
17+
18+
Args:
19+
logger_name: Name of the logger to register
20+
source: The log source category for this logger
21+
"""
22+
...

0 commit comments

Comments
 (0)