Я делаю декоратор ведения журнала для функций в python:
import logging
from typing import Callable
from functools import wraps
def function_logging(fn: Callable) -> Callable:
fn_logger = logging.getLogger(fn.__module__ + '.' + fn.__name__)
@wraps(fn)
def wrapper(*args, **kwargs):
fn_logger.info("Args: {}".format(args))
fn_logger.info("Kwargs: {}".format(kwargs))
result = fn(*args, **kwargs)
fn_logger.info("Return: {}".format(result))
return result
return wrapper
Статический анализ PyCharm говорит мне, что я не могу ожидать, что Callable
будет иметь атрибут __module__
.До сих пор я не сталкивался со случаями, когда это не удается.Кто-нибудь знает, при каких обстоятельствах можно встретить Callable
без атрибута __module__
?