Path 1: 15 calls (0.65)

Logger (15)

True (15)

GeneratorExit (15)

1def has_level_handler(logger: logging.Logger) -> bool:
2    """Check if there is a handler in the logging chain that will handle the
3    given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
4    """
5    level = logger.getEffectiveLevel()
6    current = logger
7
8    while current:
9        if any(handler.level <= level for handler in current.handlers):
10            return True
11
12        if not current.propagate:
13            break
14
15        current = current.parent  # type: ignore
16
17    return False
            

Path 2: 6 calls (0.26)

Logger (6)

False (6)

1def has_level_handler(logger: logging.Logger) -> bool:
2    """Check if there is a handler in the logging chain that will handle the
3    given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
4    """
5    level = logger.getEffectiveLevel()
6    current = logger
7
8    while current:
9        if any(handler.level <= level for handler in current.handlers):
10            return True
11
12        if not current.propagate:
13            break
14
15        current = current.parent  # type: ignore
16
17    return False
            

Path 3: 1 calls (0.04)

Logger (1)

False (1)

1def has_level_handler(logger: logging.Logger) -> bool:
2    """Check if there is a handler in the logging chain that will handle the
3    given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
4    """
5    level = logger.getEffectiveLevel()
6    current = logger
7
8    while current:
9        if any(handler.level <= level for handler in current.handlers):
10            return True
11
12        if not current.propagate:
13            break
14
15        current = current.parent  # type: ignore
16
17    return False
            

Path 4: 1 calls (0.04)

Logger (1)

True (1)

GeneratorExit (1)

1def has_level_handler(logger: logging.Logger) -> bool:
2    """Check if there is a handler in the logging chain that will handle the
3    given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
4    """
5    level = logger.getEffectiveLevel()
6    current = logger
7
8    while current:
9        if any(handler.level <= level for handler in current.handlers):
10            return True
11
12        if not current.propagate:
13            break
14
15        current = current.parent  # type: ignore
16
17    return False