Skip to content

Commit 742a6aa

Browse files
authored
Merge pull request #85 from github/logger-cleanup-provided-true
Don't clean up the logger if it's provided
2 parents 5d3c405 + 917df51 commit 742a6aa

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

annotated_logger/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
# https://test.pypi.org/project/annotated-logger/
3434
# The dev versions in testpypi can then be pulled in to whatever project needed
3535
# the new feature.
36-
VERSION = "1.3.0" # pragma: no mutate
36+
VERSION = "1.3.1" # pragma: no mutate
3737

3838
T = TypeVar("T")
3939
P = ParamSpec("P")
@@ -790,7 +790,8 @@ def wrap_function(*args: P.args, **kwargs: P.kwargs) -> R:
790790
finally:
791791
# Remove the logger now that we are done with it,
792792
# otherwise they build up and eat memory
793-
logging.root.manager.loggerDict.pop(logger.logger.name, None)
793+
if not pre_execution_annotations:
794+
logging.root.manager.loggerDict.pop(logger.logger.name, None)
794795
return result
795796

796797
return wrap_function

test/test_memory.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,15 @@
22

33
import contextlib
44
import logging
5+
from typing import TYPE_CHECKING
56

67
import pytest
78

89
import example.calculator
10+
import example.default
11+
12+
if TYPE_CHECKING:
13+
from annotated_logger import AnnotatedAdapter
914

1015

1116
class TestMemory:
@@ -19,3 +24,22 @@ def test_repeated_calls_do_not_accumulate_loggers(self, denominator):
1924

2025
ending_loggers = len(logging.root.manager.loggerDict)
2126
assert starting_loggers == ending_loggers
27+
28+
def test_provided_true_does_not_prune_early(self):
29+
@example.default.annotate_logs(_typing_self=False, _typing_requested=True)
30+
def outer(annotated_logger: AnnotatedAdapter):
31+
name = annotated_logger.name
32+
assert name in logging.root.manager.loggerDict
33+
inner(annotated_logger)
34+
assert name in logging.root.manager.loggerDict
35+
return name
36+
37+
@example.default.annotate_logs(
38+
provided=True, _typing_self=False, _typing_requested=True
39+
)
40+
def inner(annotated_logger: AnnotatedAdapter):
41+
annotated_logger.info("Inside")
42+
return True
43+
44+
name = outer()
45+
assert name not in logging.root.manager.loggerDict

0 commit comments

Comments
 (0)