diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-05-14 10:25:53 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-05-15 10:31:51 -0400 |
commit | 257de6ebe15d3076e19f05f93c5b3c7fae25a4d3 (patch) | |
tree | 6348bcdb7a9f38fc6a04be23ddc9ffec6c5261be /lib/sqlalchemy/log.py | |
parent | 9f0db34563a05a7b9f6e09110d35ce0d0f36d3a9 (diff) | |
download | sqlalchemy-257de6ebe15d3076e19f05f93c5b3c7fae25a4d3.tar.gz |
adjust log stacklevel for py3.11.0b1; enable greenlet
Fixed issue where support for logging "stacklevel" implemented in
:ticket:`7612` required adjustment to work with recently released Python
3.11.0b1, also repairs the unit tests which tested this feature.
Install greenlet from a py311 compat patch.
re: the stacklevel thing, this is going to be very inconvenient
if we have to keep hardcoding numbers everywhere for every
new python version
Change-Id: I0c8f7293e98c0ca5cc544538284bfd1d3020cb1f
References: https://github.com/python-greenlet/greenlet/issues/288
Fixes: #8019
Diffstat (limited to 'lib/sqlalchemy/log.py')
-rw-r--r-- | lib/sqlalchemy/log.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/sqlalchemy/log.py b/lib/sqlalchemy/log.py index d463f5b9a..f7050b93f 100644 --- a/lib/sqlalchemy/log.py +++ b/lib/sqlalchemy/log.py @@ -29,9 +29,20 @@ from typing import Type from typing import TypeVar from typing import Union +from .util import py311 from .util import py38 from .util.typing import Literal + +if py38: + STACKLEVEL = True + # needed as of py3.11.0b1 + # #8019 + STACKLEVEL_OFFSET = 2 if py311 else 1 +else: + STACKLEVEL = False + STACKLEVEL_OFFSET = 0 + _IT = TypeVar("_IT", bound="Identified") _EchoFlagType = Union[None, bool, Literal["debug"]] @@ -191,8 +202,11 @@ class InstanceLogger: selected_level = self.logger.getEffectiveLevel() if level >= selected_level: - if py38: - kwargs["stacklevel"] = kwargs.get("stacklevel", 1) + 1 + + if STACKLEVEL: + kwargs["stacklevel"] = ( + kwargs.get("stacklevel", 1) + STACKLEVEL_OFFSET + ) self.logger._log(level, msg, args, **kwargs) |