Skip to content

Commit e5036ac

Browse files
authored
Merge pull request #40 from tekktrik/dev/allow-root-logger
Allow use of root logger
2 parents 06aed54 + 9cd43d1 commit e5036ac

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

adafruit_logging.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,8 @@
6262
from collections import namedtuple
6363

6464
try:
65-
from typing import Optional
66-
67-
try:
68-
from typing import Protocol
69-
except ImportError:
70-
from typing_extensions import Protocol
65+
from typing import Optional, Hashable
66+
from typing_extensions import Protocol
7167

7268
class WriteableStream(Protocol):
7369
"""Any stream that can ``write`` strings"""
@@ -245,20 +241,23 @@ def emit(self, record: LogRecord) -> None:
245241
logger_cache = {}
246242

247243

248-
def _addLogger(logger_name: str) -> None:
244+
def _addLogger(logger_name: Hashable) -> None:
249245
"""Adds the logger if it doesn't already exist"""
250246
if logger_name not in logger_cache:
251247
new_logger = Logger(logger_name)
252248
new_logger.addHandler(StreamHandler())
253249
logger_cache[logger_name] = new_logger
254250

255251

256-
def getLogger(logger_name: str) -> "Logger":
252+
def getLogger(logger_name: Hashable = "") -> "Logger":
257253
"""Create or retrieve a logger by name; only retrieves loggers
258254
made using this function; if a Logger with this name does not
259255
exist it is created
260256
261-
:param str logger_name: The name of the `Logger` to create/retrieve.
257+
:param Hashable logger_name: The name of the `Logger` to create/retrieve, this
258+
is typically a ``str``. If none is provided, the single root logger will
259+
be created/retrieved. Note that unlike CPython, a blank string will also
260+
access the root logger.
262261
"""
263262
_addLogger(logger_name)
264263
return logger_cache[logger_name]
@@ -267,12 +266,12 @@ def getLogger(logger_name: str) -> "Logger":
267266
class Logger:
268267
"""The actual logger that will provide the logging API.
269268
270-
:param str name: The name of the logger, typically assigned by the
271-
value from `getLogger`
269+
:param Hashable name: The name of the logger, typically assigned by the
270+
value from `getLogger`; this is typically a ``str``
272271
:param int level: (optional) The log level, default is ``NOTSET``
273272
"""
274273

275-
def __init__(self, name: str, level: int = NOTSET) -> None:
274+
def __init__(self, name: Hashable, level: int = NOTSET) -> None:
276275
"""Create an instance."""
277276
self._level = level
278277
self.name = name

0 commit comments

Comments
 (0)