2

Python 3 で mypy を使用してログ モジュールに注釈を付けようとしていますが、namer 関数の注釈に問題があります。

import logging

def _namer(name: str) -> str:
    return name + '.gz'

def get_logger(file_name: str, level: str) -> logging.Logger:
    logger = logging.getLogger(__name__)
    handler = TimedRotatingFileHandler(file_name, backupCount=30, when='midnight')

    handler.namer = _namer
    return logger

mypy を実行すると、_namer を handler.namer に割り当てると、次のエラーが発生します。

error: Incompatible types in assignment (expression has type Callable[[str], str], variable has type "Optional[Callable[[str], None]]")

mypy が文句を言わないように _namer にどのように注釈を付けるべきか考えていますか?

4

1 に答える 1