--- /dev/null
+# Stubs for logging.handlers (Python 2.4)\r
+\r
+import datetime\r
+from logging import Handler, FileHandler, LogRecord\r
+from socket import SocketType\r
+import ssl\r
+import sys\r
+from typing import Any, Callable, Dict, List, Optional, Tuple, Union, overload\r
+if sys.version_info >= (3,):\r
+ from queue import Queue\r
+else:\r
+ from Queue import Queue\r
+# TODO update socket stubs to add SocketKind\r
+_SocketKind = int\r
+\r
+\r
+class WatchedFileHandler(Handler):\r
+ @overload\r
+ def __init__(self, filename: str) -> None: ...\r
+ @overload\r
+ def __init__(self, filename: str, mode: str) -> None: ...\r
+ @overload\r
+ def __init__(self, filename: str, mode: str,\r
+ encoding: Optional[str]) -> None: ...\r
+ @overload\r
+ def __init__(self, filename: str, mode: str, encoding: Optional[str],\r
+ delay: bool) -> None: ...\r
+\r
+\r
+if sys.version_info >= (3,):\r
+ class BaseRotatingHandler(FileHandler):\r
+ terminator = ... # type: str\r
+ namer = ... # type: Optional[Callable[[str], str]]\r
+ rotator = ... # type: Optional[Callable[[str, str], None]]\r
+ def __init__(self, filename: str, mode: str,\r
+ encoding: Optional[str] = ...,\r
+ delay: bool = ...) -> None: ...\r
+ def rotation_filename(self, default_name: str) -> None: ...\r
+ def rotate(self, source: str, dest: str) -> None: ...\r
+\r
+\r
+if sys.version_info >= (3,):\r
+ class RotatingFileHandler(BaseRotatingHandler):\r
+ def __init__(self, filename: str, mode: str = ..., maxBytes: int = ...,\r
+ backupCount: int = ..., encoding: Optional[str] = ...,\r
+ delay: bool = ...) -> None: ...\r
+ def doRollover(self) -> None: ...\r
+else:\r
+ class RotatingFileHandler(Handler):\r
+ def __init__(self, filename: str, mode: str = ..., maxBytes: int = ...,\r
+ backupCount: int = ..., encoding: Optional[str] = ...,\r
+ delay: bool = ...) -> None: ...\r
+ def doRollover(self) -> None: ...\r
+\r
+\r
+if sys.version_info >= (3,):\r
+ class TimedRotatingFileHandler(BaseRotatingHandler):\r
+ if sys.version_info >= (3, 4):\r
+ def __init__(self, filename: str, when: str = ...,\r
+ interval: int = ...,\r
+ backupCount: int = ..., encoding: Optional[str] = ...,\r
+ delay: bool = ..., utc: bool = ...,\r
+ atTime: Optional[datetime.datetime] = ...) -> None: ...\r
+ else:\r
+ def __init__(self,\r
+ filename: str, when: str = ..., interval: int = ...,\r
+ backupCount: int = ..., encoding: Optional[str] = ...,\r
+ delay: bool = ..., utc: bool = ...) -> None: ...\r
+ def doRollover(self) -> None: ...\r
+else:\r
+ class TimedRotatingFileHandler:\r
+ def __init__(self,\r
+ filename: str, when: str = ..., interval: int = ...,\r
+ backupCount: int = ..., encoding: Optional[str] = ...,\r
+ delay: bool = ..., utc: bool = ...) -> None: ...\r
+ def doRollover(self) -> None: ...\r
+\r
+\r
+class SocketHandler(Handler):\r
+ retryStart = ... # type: float\r
+ retryFactor = ... # type: float\r
+ retryMax = ... # type: float\r
+ if sys.version_info >= (3, 4):\r
+ def __init__(self, host: str, port: Optional[int]) -> None: ...\r
+ else:\r
+ def __init__(self, host: str, port: int) -> None: ...\r
+ def makeSocket(self) -> SocketType: ...\r
+ def makePickle(self, record: LogRecord) -> bytes: ...\r
+ def send(self, packet: bytes) -> None: ...\r
+ def createSocket(self) -> None: ...\r
+\r
+\r
+class DatagramHandler(SocketHandler): ...\r
+\r
+\r
+class SysLogHandler(Handler):\r
+ LOG_ALERT = ... # type: int\r
+ LOG_CRIT = ... # type: int\r
+ LOG_DEBUG = ... # type: int\r
+ LOG_EMERG = ... # type: int\r
+ LOG_ERR = ... # type: int\r
+ LOG_INFO = ... # type: int\r
+ LOG_NOTICE = ... # type: int\r
+ LOG_WARNING = ... # type: int\r
+ LOG_AUTH = ... # type: int\r
+ LOG_AUTHPRIV = ... # type: int\r
+ LOG_CRON = ... # type: int\r
+ LOG_DAEMON = ... # type: int\r
+ LOG_FTP = ... # type: int\r
+ LOG_KERN = ... # type: int\r
+ LOG_LPR = ... # type: int\r
+ LOG_MAIL = ... # type: int\r
+ LOG_NEWS = ... # type: int\r
+ LOG_SYSLOG = ... # type: int\r
+ LOG_USER = ... # type: int\r
+ LOG_UUCP = ... # type: int\r
+ LOG_LOCAL0 = ... # type: int\r
+ LOG_LOCAL1 = ... # type: int\r
+ LOG_LOCAL2 = ... # type: int\r
+ LOG_LOCAL3 = ... # type: int\r
+ LOG_LOCAL4 = ... # type: int\r
+ LOG_LOCAL5 = ... # type: int\r
+ LOG_LOCAL6 = ... # type: int\r
+ LOG_LOCAL7 = ... # type: int\r
+ def __init__(self, address: Union[Tuple[str, int], str] = ...,\r
+ facility: int = ..., socktype: _SocketKind = ...) -> None: ...\r
+ def encodePriority(self, facility: Union[int, str],\r
+ priority: Union[int, str]) -> int: ...\r
+ def mapPriority(self, levelName: int) -> str: ...\r
+\r
+\r
+class NTEventLogHandler(Handler):\r
+ def __init__(self, appname: str, dllname: str = ...,\r
+ logtype: str = ...) -> None: ...\r
+ def getEventCategory(self, record: LogRecord) -> int: ...\r
+ # TODO correct return value?\r
+ def getEventType(self, record: LogRecord) -> int: ...\r
+ def getMessageID(self, record: LogRecord) -> int: ...\r
+\r
+\r
+class SMTPHandler(Handler):\r
+ # TODO `secure` can also be an empty tuple\r
+ if sys.version_info >= (3,):\r
+ def __init__(self, mailhost: Union[str, Tuple[str, int]], fromaddr: str,\r
+ toaddrs: List[str], subject: str,\r
+ credentials: Optional[Tuple[str, str]] = ...,\r
+ secure: Union[Tuple[str], Tuple[str, str], None] =...,\r
+ timeout: float = ...) -> None: ...\r
+ else:\r
+ def __init__(self,\r
+ mailhost: Union[str, Tuple[str, int]], fromaddr: str,\r
+ toaddrs: List[str], subject: str,\r
+ credentials: Optional[Tuple[str, str]] = ...,\r
+ secure: Union[Tuple[str], Tuple[str, str], None] =...) -> None: ...\r
+ def getSubject(self, record: LogRecord) -> str: ...\r
+\r
+\r
+class BufferingHandler(Handler):\r
+ def __init__(self, capacity: int) -> None: ...\r
+ def shouldFlush(self, record: LogRecord) -> bool: ...\r
+\r
+class MemoryHandler(BufferingHandler):\r
+ def __init__(self, capacity: int, flushLevel: int = ...,\r
+ target: Optional[Handler] =...) -> None: ...\r
+ def setTarget(self, target: Handler) -> None: ...\r
+\r
+\r
+class HTTPHandler(Handler):\r
+ if sys.version_info >= (3, 5):\r
+ def __init__(self, host: str, url: str, method: str = ...,\r
+ secure: bool = ...,\r
+ credentials: Optional[Tuple[str, str]] = ...,\r
+ context: Optional[ssl.SSLContext] = ...) -> None: ...\r
+ elif sys.version_info >= (3,):\r
+ def __init__(self,\r
+ host: str, url: str, method: str = ..., secure: bool = ...,\r
+ credentials: Optional[Tuple[str, str]] = ...) -> None: ...\r
+ else:\r
+ def __init__(self,\r
+ host: str, url: str, method: str = ...) -> None: ...\r
+ def mapLogRecord(self, record: LogRecord) -> Dict[str, Any]: ...\r
+\r
+\r
+if sys.version_info >= (3,):\r
+ class QueueHandler(Handler):\r
+ def __init__(self, queue: Queue) -> None: ...\r
+ def prepare(self, record: LogRecord) -> Any: ...\r
+ def enqueue(self, record: LogRecord) -> None: ...\r
+\r
+ class QueueListener:\r
+ if sys.version_info >= (3, 5):\r
+ def __init__(self, queue: Queue, *handlers: Handler,\r
+ respect_handler_level: bool = ...) -> None: ...\r
+ else:\r
+ def __init__(self,\r
+ queue: Queue, *handlers: Handler) -> None: ...\r
+ def dequeue(self, block: bool) -> LogRecord: ...\r
+ def prepare(self, record: LogRecord) -> Any: ...\r
+ def start(self) -> None: ...\r
+ def stop(self) -> None: ...\r
+ def enqueue_sentinel(self) -> None: ...\r