QueueHandler / QueueListener accept SimpleQueue too (#3098)

The implementation of `logging.adapters.QueueHandler` and `logging.adapters.QueueListener` works great with `queue.SimpleQueue` too, so update the stub to reflect this.

The new queue.SimpleQueue class (introduced in 3.7) is faster but is not a Queue subclass as it doesn't implement task handling (`handle_task()` / `join()`) or queue bounds (raising `queue.Full` / `full()`). The logging handler / listener implementations do not make use of those features however.

Related Python bug, asking for an explicit documentation mention: https://bugs.python.org/issue37469
This commit is contained in:
Martijn Pieters
2019-07-01 15:47:30 +01:00
committed by Jelle Zijlstra
parent c66699800e
commit e1e5c83795

View File

@@ -6,7 +6,9 @@ from socket import SocketType
import ssl
import sys
from typing import Any, Callable, Dict, List, Optional, Tuple, Union, overload
if sys.version_info >= (3,):
if sys.version_info >= (3, 7):
from queue import SimpleQueue, Queue
elif sys.version_info >= (3,):
from queue import Queue
else:
from Queue import Queue
@@ -195,12 +197,19 @@ class HTTPHandler(Handler):
if sys.version_info >= (3,):
class QueueHandler(Handler):
def __init__(self, queue: Queue) -> None: ...
if sys.version_info >= (3, 7):
def __init__(self, queue: Union[SimpleQueue, Queue]) -> None: ...
else:
def __init__(self, queue: Queue) -> None: ...
def prepare(self, record: LogRecord) -> Any: ...
def enqueue(self, record: LogRecord) -> None: ...
class QueueListener:
if sys.version_info >= (3, 5):
if sys.version_info >= (3, 7):
def __init__(self, queue: Union[SimpleQueue, Queue],
*handlers: Handler,
respect_handler_level: bool = ...) -> None: ...
elif sys.version_info >= (3, 5):
def __init__(self, queue: Queue, *handlers: Handler,
respect_handler_level: bool = ...) -> None: ...
else: