From 25f5c9c6f85dd496737654b53f7b82ee0dee9a8b Mon Sep 17 00:00:00 2001 From: Dakkaron Date: Mon, 23 May 2016 18:16:01 +0200 Subject: [PATCH] Added type annotations and small fixes (#219) * json.loads() accepts unicode * threading.BoundedSemaphore is subclass of Semaphore * Added type annotations for logging/__init__.pyi and logging/handlers.pyi * Changed style of variable declaration to fit the rest of the file --- stdlib/2.7/json.pyi | 4 +- stdlib/2.7/logging/__init__.pyi | 92 ++++++++++++------------- stdlib/2.7/logging/handlers.pyi | 116 ++++++++++++++++---------------- stdlib/2.7/threading.pyi | 2 +- 4 files changed, 108 insertions(+), 106 deletions(-) diff --git a/stdlib/2.7/json.pyi b/stdlib/2.7/json.pyi index f31937109..d5b710693 100644 --- a/stdlib/2.7/json.pyi +++ b/stdlib/2.7/json.pyi @@ -1,4 +1,4 @@ -from typing import Any, IO, Optional, Tuple, Callable, Dict, List +from typing import Any, IO, Optional, Tuple, Callable, Dict, List, Union, Text class JSONDecodeError(object): def dumps(self, obj: Any) -> str: ... @@ -33,7 +33,7 @@ def dump(obj: Any, sort_keys: bool = ..., **kwds: Any) -> None: ... -def loads(s: str, +def loads(s: Union[Text, bytes], encoding: Any = ..., cls: Any = ..., object_hook: Callable[[Dict], Any] = ..., diff --git a/stdlib/2.7/logging/__init__.pyi b/stdlib/2.7/logging/__init__.pyi index 377e800c2..903fb89d9 100644 --- a/stdlib/2.7/logging/__init__.pyi +++ b/stdlib/2.7/logging/__init__.pyi @@ -4,14 +4,14 @@ from typing import Any, Dict, Optional, Sequence, Tuple, overload, Union -CRITICAL = 0 -FATAL = 0 -ERROR = 0 -WARNING = 0 -WARN = 0 -INFO = 0 -DEBUG = 0 -NOTSET = 0 +CRITICAL = ... # type: int +FATAL = ... # type: int +ERROR = ... # type: int +WARNING = ... # type: int +WARN = ... # type: int +INFO = ... # type: int +DEBUG = ... # type: int +NOTSET = ... # type: int def getLevelName(level: int) -> str: ... def addLevelName(level: int, levelName: str) -> None: ... @@ -47,22 +47,22 @@ class PercentStyle: asctime_format = ... # type: Any asctime_search = ... # type: Any def __init__(self, fmt) -> None: ... - def usesTime(self): ... - def format(self, record): ... + def usesTime(self) -> bool: ... + def format(self, record: LogRecord) -> str: ... class StrFormatStyle(PercentStyle): default_format = ... # type: Any asctime_format = ... # type: Any asctime_search = ... # type: Any - def format(self, record): ... + def format(self, record: LogRecord) -> str: ... class StringTemplateStyle(PercentStyle): default_format = ... # type: Any asctime_format = ... # type: Any asctime_search = ... # type: Any def __init__(self, fmt) -> None: ... - def usesTime(self): ... - def format(self, record): ... + def usesTime(self) -> bool: ... + def format(self, record: LogRecord) -> str: ... BASIC_FORMAT = ... # type: Any @@ -72,19 +72,19 @@ class Formatter: def __init__(self, fmt: str = ..., datefmt: str = ...) -> None: ... default_time_format = ... # type: Any default_msec_format = ... # type: Any - def formatTime(self, record, datefmt=...): ... - def formatException(self, ei): ... - def usesTime(self): ... - def formatMessage(self, record): ... - def formatStack(self, stack_info): ... + def formatTime(self, record: LogRecord, datefmt: str =...) -> str: ... + def formatException(self, ei) -> str: ... + def usesTime(self) -> bool: ... + def formatMessage(self, record: LogRecord) -> str: ... + def formatStack(self, stack_info) -> str: ... def format(self, record: LogRecord) -> str: ... class BufferingFormatter: linefmt = ... # type: Any - def __init__(self, linefmt=...) -> None: ... - def formatHeader(self, records): ... - def formatFooter(self, records): ... - def format(self, records): ... + def __init__(self, linefmt: Formatter =...) -> None: ... + def formatHeader(self, records: list[LogRecord]) -> str: ... + def formatFooter(self, records: list[LogRecord]) -> str: ... + def format(self, records: list[LogRecord]) -> str: ... class Filter: name = ... # type: Any @@ -104,12 +104,12 @@ class Handler(Filterer): formatter = ... # type: Any def __init__(self, level: int = ...) -> None: ... def get_name(self): ... - def set_name(self, name): ... + def set_name(self, name) -> None: ... name = ... # type: Any lock = ... # type: Any - def createLock(self): ... - def acquire(self): ... - def release(self): ... + def createLock(self) -> None: ... + def acquire(self) -> None: ... + def release(self) -> None: ... def setLevel(self, level: int) -> None: ... def format(self, record: LogRecord) -> str: ... def emit(self, record: LogRecord) -> None: ... @@ -123,8 +123,8 @@ class StreamHandler(Handler): terminator = ... # type: Any stream = ... # type: Any def __init__(self, stream=...) -> None: ... - def flush(self): ... - def emit(self, record): ... + def flush(self) -> None: ... + def emit(self, record: LogRecord) -> None: ... class FileHandler(StreamHandler): baseFilename = ... # type: Any @@ -133,20 +133,20 @@ class FileHandler(StreamHandler): delay = ... # type: Any stream = ... # type: Any def __init__(self, filename: str, mode: str = ..., encoding: str = ..., delay: int = ...) -> None: ... - def close(self): ... - def emit(self, record): ... + def close(self) -> None: ... + def emit(self, record: LogRecord) -> None: ... class _StderrHandler(StreamHandler): - def __init__(self, level=...) -> None: ... + def __init__(self, level: int =...) -> None: ... lastResort = ... # type: Any class PlaceHolder: loggerMap = ... # type: Any def __init__(self, alogger) -> None: ... - def append(self, alogger): ... + def append(self, alogger) -> None: ... -def setLoggerClass(klass): ... +def setLoggerClass(klass) -> None: ... def getLoggerClass(): ... class Manager: @@ -157,9 +157,9 @@ class Manager: loggerClass = ... # type: Any logRecordFactory = ... # type: Any def __init__(self, rootnode) -> None: ... - def getLogger(self, name): ... - def setLoggerClass(self, klass): ... - def setLogRecordFactory(self, factory): ... + def getLogger(self, name: unicode): ... + def setLoggerClass(self, klass) -> None: ... + def setLogRecordFactory(self, factory) -> None: ... class Logger(Filterer): name = ... # type: Any @@ -180,25 +180,25 @@ class Logger(Filterer): fatal = ... # type: Any def log(self, level: int, msg: Union[str, unicode], *args, **kwargs) -> None: ... def findCaller(self) -> Tuple[str, int, str]: ... - def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=..., extra=..., - sinfo=...): ... - def handle(self, record): ... + def makeRecord(self, name, level: int, fn, lno, msg, args, + exc_info, func=..., extra=..., sinfo=...) -> LogRecord: ... + def handle(self, record: LogRecord) -> None: ... def addHandler(self, hdlr: Handler) -> None: ... def removeHandler(self, hdlr: Handler) -> None: ... - def hasHandlers(self): ... - def callHandlers(self, record): ... + def hasHandlers(self) -> None: ... + def callHandlers(self, record: LogRecord) -> None: ... def getEffectiveLevel(self) -> int: ... def isEnabledFor(self, level: int) -> bool: ... def getChild(self, suffix: str) -> Logger: ... class RootLogger(Logger): - def __init__(self, level) -> None: ... + def __init__(self, level: int) -> None: ... class LoggerAdapter: logger = ... # type: Any extra = ... # type: Any def __init__(self, logger, extra) -> None: ... - def process(self, msg, kwargs): ... + def process(self, msg, kwargs) -> Tuple[Any,Any]: ... # Possible mistake: kwargs missing ** def debug(self, msg: Union[str, unicode], *args, **kwargs) -> None: ... def info(self, msg: Union[str, unicode], *args, **kwargs) -> None: ... def warning(self, msg: Union[str, unicode], *args, **kwargs) -> None: ... @@ -210,7 +210,7 @@ class LoggerAdapter: def isEnabledFor(self, level: int) -> bool: ... def setLevel(self, level: int) -> None: ... def getEffectiveLevel(self) -> int: ... - def hasHandlers(self): ... + def hasHandlers(self) -> bool: ... def basicConfig(**kwargs) -> None: ... def getLogger(name: str = ...) -> Logger: ... @@ -231,8 +231,8 @@ def log(level: int, msg: Union[str, unicode], *args, **kwargs) -> None: ... def disable(level: int) -> None: ... class NullHandler(Handler): - def handle(self, record): ... - def emit(self, record): ... + def handle(self, record: LogRecord) -> None: ... + def emit(self, record: LogRecord) -> None: ... lock = ... # type: Any def createLock(self): ... diff --git a/stdlib/2.7/logging/handlers.pyi b/stdlib/2.7/logging/handlers.pyi index 584d75968..658c76815 100644 --- a/stdlib/2.7/logging/handlers.pyi +++ b/stdlib/2.7/logging/handlers.pyi @@ -2,8 +2,10 @@ # # NOTE: This dynamically typed stub was automatically generated by stubgen. -from typing import Any +from typing import Any, Union, Tuple +from . import LogRecord import logging +import socket threading = ... # type: Any DEFAULT_TCP_LOGGING_PORT = ... # type: Any @@ -18,19 +20,19 @@ class BaseRotatingHandler(logging.FileHandler): encoding = ... # type: Any namer = ... # type: Any rotator = ... # type: Any - def __init__(self, filename, mode, encoding=..., delay=...) -> None: ... - def emit(self, record): ... - def rotation_filename(self, default_name): ... + def __init__(self, filename: unicode, mode: unicode, encoding: unicode =..., delay: int =...) -> None: ... + def emit(self, record: LogRecord) -> None: ... + def rotation_filename(self, default_name: unicode): ... def rotate(self, source, dest): ... class RotatingFileHandler(BaseRotatingHandler): maxBytes = ... # type: Any backupCount = ... # type: Any - def __init__(self, filename: str, mode: str = ..., maxBytes: int = ..., backupCount:int = ..., + def __init__(self, filename: unicode, mode: unicode = ..., maxBytes: int = ..., backupCount:int = ..., encoding: str = ..., delay: int = ...) -> None: ... stream = ... # type: Any - def doRollover(self): ... - def shouldRollover(self, record): ... + def doRollover(self) -> None: ... + def shouldRollover(self, record: LogRecord) -> int: ... class TimedRotatingFileHandler(BaseRotatingHandler): when = ... # type: Any @@ -42,18 +44,18 @@ class TimedRotatingFileHandler(BaseRotatingHandler): extMatch = ... # type: Any dayOfWeek = ... # type: Any rolloverAt = ... # type: Any - def __init__(self, filename, when=..., interval=..., backupCount=..., encoding=..., delay=..., - utc=..., atTime=...): ... - def computeRollover(self, currentTime): ... - def shouldRollover(self, record): ... - def getFilesToDelete(self): ... + def __init__(self, filename: unicode, when: unicode =..., interval: int =..., backupCount: int =..., + encoding: unicode =..., delay: bool =..., utc: bool =..., atTime=...) -> None: ... + def computeRollover(self, currentTime: int) -> int: ... + def shouldRollover(self, record: LogRecord) -> int: ... + def getFilesToDelete(self) -> list[str]: ... stream = ... # type: Any - def doRollover(self): ... + def doRollover(self) -> None: ... class WatchedFileHandler(logging.FileHandler): def __init__(self, filename: str, mode: str = ..., encoding: str = ..., delay: int = ...) -> None: ... stream = ... # type: Any - def emit(self, record): ... + def emit(self, record: LogRecord) -> None: ... class SocketHandler(logging.Handler): host = ... # type: Any @@ -66,20 +68,20 @@ class SocketHandler(logging.Handler): retryMax = ... # type: Any retryFactor = ... # type: Any def __init__(self, host, port) -> None: ... - def makeSocket(self, timeout=...): ... + def makeSocket(self, timeout: int =...): ... retryPeriod = ... # type: Any - def createSocket(self): ... - def send(self, s): ... - def makePickle(self, record): ... - def handleError(self, record): ... - def emit(self, record): ... - def close(self): ... + def createSocket(self) -> None: ... + def send(self, s: str) -> None: ... + def makePickle(self, record: LogRecord) -> str: ... + def handleError(self, record: LogRecord) -> None: ... + def emit(self, record: LogRecord) -> None: ... + def close(self) -> None: ... class DatagramHandler(SocketHandler): closeOnError = ... # type: Any def __init__(self, host, port) -> None: ... - def makeSocket(self, timeout=...): ... # TODO: Actually does not have the timeout argument. - def send(self, s): ... + def makeSocket(self, timeout: int =...) -> None: ... + def send(self, s: str) -> None: ... class SysLogHandler(logging.Handler): LOG_EMERG = ... # type: Any @@ -119,13 +121,13 @@ class SysLogHandler(logging.Handler): unixsocket = ... # type: Any socket = ... # type: Any formatter = ... # type: Any - def __init__(self, address=..., facility=..., socktype=...) -> None: ... - def encodePriority(self, facility, priority): ... - def close(self): ... - def mapPriority(self, levelName): ... + def __init__(self, address: tuple[str,int] =..., facility: int =..., socktype: int =...) -> None: ... + def encodePriority(self, facility: int, priority: Union[basestring,int]) -> int: ... + def close(self) -> None: ... + def mapPriority(self, levelName: str) -> str: ... ident = ... # type: Any append_nul = ... # type: Any - def emit(self, record): ... + def emit(self, record: LogRecord) -> None: ... class SMTPHandler(logging.Handler): username = ... # type: Any @@ -134,10 +136,10 @@ class SMTPHandler(logging.Handler): subject = ... # type: Any secure = ... # type: Any timeout = ... # type: Any - def __init__(self, mailhost, fromaddr, toaddrs, subject, credentials=..., secure=..., - timeout=...): ... - def getSubject(self, record): ... - def emit(self, record): ... + def __init__(self, mailhost, fromaddr, toaddrs, subject: unicode, credentials: Tuple[Any,Any]=..., + secure=...) -> None: ... + def getSubject(self, record: LogRecord) -> unicode: ... + def emit(self, record: LogRecord) -> None: ... class NTEventLogHandler(logging.Handler): appname = ... # type: Any @@ -145,12 +147,12 @@ class NTEventLogHandler(logging.Handler): logtype = ... # type: Any deftype = ... # type: Any typemap = ... # type: Any - def __init__(self, appname, dllname=..., logtype=...) -> None: ... - def getMessageID(self, record): ... - def getEventCategory(self, record): ... - def getEventType(self, record): ... - def emit(self, record): ... - def close(self): ... + def __init__(self, appname, dllname=..., logtype: str =...) -> None: ... + def getMessageID(self, record: LogRecord) -> int: ... + def getEventCategory(self, record: LogRecord) -> int: ... + def getEventType(self, record: LogRecord): ... + def emit(self, record: LogRecord) -> None: ... + def close(self) -> None: ... class HTTPHandler(logging.Handler): host = ... # type: Any @@ -158,43 +160,43 @@ class HTTPHandler(logging.Handler): method = ... # type: Any secure = ... # type: Any credentials = ... # type: Any - def __init__(self, host, url, method=..., secure=..., credentials=...) -> None: ... - def mapLogRecord(self, record): ... - def emit(self, record): ... + def __init__(self, host, url, method: str =..., secure=..., credentials=...) -> None: ... + def mapLogRecord(self, record: LogRecord) -> dict[Any,Any]: ... + def emit(self, record: LogRecord) -> None: ... class BufferingHandler(logging.Handler): capacity = ... # type: Any buffer = ... # type: Any def __init__(self, capacity: int) -> None: ... - def shouldFlush(self, record): ... - def emit(self, record): ... - def flush(self): ... - def close(self): ... + def shouldFlush(self, record: LogRecord) -> bool: ... + def emit(self, record: LogRecord) -> None: ... + def flush(self) -> None: ... + def close(self) -> None: ... class MemoryHandler(BufferingHandler): flushLevel = ... # type: Any target = ... # type: Any - def __init__(self, capacity, flushLevel=..., target=...) -> None: ... - def shouldFlush(self, record): ... - def setTarget(self, target): ... + def __init__(self, capacity: int, flushLevel: int =..., target=...) -> None: ... + def shouldFlush(self, record: LogRecord) -> bool: ... + def setTarget(self, target) -> None: ... buffer = ... # type: Any - def flush(self): ... - def close(self): ... + def flush(self) -> None: ... + def close(self) -> None: ... class QueueHandler(logging.Handler): queue = ... # type: Any def __init__(self, queue) -> None: ... - def enqueue(self, record): ... - def prepare(self, record): ... - def emit(self, record): ... + def enqueue(self, record: LogRecord): ... + def prepare(self, record: LogRecord): ... + def emit(self, record: LogRecord) -> None: ... class QueueListener: queue = ... # type: Any handlers = ... # type: Any def __init__(self, queue, *handlers) -> None: ... def dequeue(self, block): ... - def start(self): ... - def prepare(self, record): ... - def handle(self, record): ... + def start(self) -> None: ... + def prepare(self, record: LogRecord): ... + def handle(self, record: LogRecord): ... def enqueue_sentinel(self): ... - def stop(self): ... + def stop(self) -> None: ... diff --git a/stdlib/2.7/threading.pyi b/stdlib/2.7/threading.pyi index 791fa4dde..3c0c78c99 100644 --- a/stdlib/2.7/threading.pyi +++ b/stdlib/2.7/threading.pyi @@ -73,7 +73,7 @@ class Semaphore(object): def __enter__(self) -> bool: ... def __exit__(self, *args): ... -class BoundedSemaphore(object): +class BoundedSemaphore(Semaphore): def acquire(self, blocking: bool = ...) -> Optional[bool]: ... def release(self) -> None: ... def __init__(self, value: int = ...) -> None: ...