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
This commit is contained in:
Dakkaron
2016-05-23 18:16:01 +02:00
committed by Guido van Rossum
parent 11049f9a4f
commit 25f5c9c6f8
4 changed files with 108 additions and 106 deletions

View File

@@ -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] = ...,

View File

@@ -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): ...

View File

@@ -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: ...

View File

@@ -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: ...