1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Add typing to homeassistant/*.py and homeassistant/util/ (#15569)

* Add typing to homeassistant/*.py and homeassistant/util/

* Fix wrong merge

* Restore iterable in OrderedSet

* Fix tests
This commit is contained in:
Andrey
2018-07-23 11:24:39 +03:00
committed by Paulus Schoutsen
parent b7c336a687
commit 140a874917
27 changed files with 532 additions and 384 deletions

View File

@@ -1,7 +1,9 @@
"""Logging utilities."""
import asyncio
from asyncio.events import AbstractEventLoop
import logging
import threading
from typing import Optional
from .async_ import run_coroutine_threadsafe
@@ -9,12 +11,12 @@ from .async_ import run_coroutine_threadsafe
class HideSensitiveDataFilter(logging.Filter):
"""Filter API password calls."""
def __init__(self, text):
def __init__(self, text: str) -> None:
"""Initialize sensitive data filter."""
super().__init__()
self.text = text
def filter(self, record):
def filter(self, record: logging.LogRecord) -> bool:
"""Hide sensitive data in messages."""
record.msg = record.msg.replace(self.text, '*******')
@@ -25,7 +27,8 @@ class HideSensitiveDataFilter(logging.Filter):
class AsyncHandler:
"""Logging handler wrapper to add an async layer."""
def __init__(self, loop, handler):
def __init__(
self, loop: AbstractEventLoop, handler: logging.Handler) -> None:
"""Initialize async logging handler wrapper."""
self.handler = handler
self.loop = loop
@@ -45,11 +48,11 @@ class AsyncHandler:
self._thread.start()
def close(self):
def close(self) -> None:
"""Wrap close to handler."""
self.emit(None)
async def async_close(self, blocking=False):
async def async_close(self, blocking: bool = False) -> None:
"""Close the handler.
When blocking=True, will wait till closed.
@@ -60,7 +63,7 @@ class AsyncHandler:
while self._thread.is_alive():
await asyncio.sleep(0, loop=self.loop)
def emit(self, record):
def emit(self, record: Optional[logging.LogRecord]) -> None:
"""Process a record."""
ident = self.loop.__dict__.get("_thread_ident")
@@ -71,11 +74,11 @@ class AsyncHandler:
else:
self.loop.call_soon_threadsafe(self._queue.put_nowait, record)
def __repr__(self):
def __repr__(self) -> str:
"""Return the string names."""
return str(self.handler)
def _process(self):
def _process(self) -> None:
"""Process log in a thread."""
while True:
record = run_coroutine_threadsafe(
@@ -87,34 +90,34 @@ class AsyncHandler:
self.handler.emit(record)
def createLock(self):
def createLock(self) -> None:
"""Ignore lock stuff."""
pass
def acquire(self):
def acquire(self) -> None:
"""Ignore lock stuff."""
pass
def release(self):
def release(self) -> None:
"""Ignore lock stuff."""
pass
@property
def level(self):
def level(self) -> int:
"""Wrap property level to handler."""
return self.handler.level
@property
def formatter(self):
def formatter(self) -> Optional[logging.Formatter]:
"""Wrap property formatter to handler."""
return self.handler.formatter
@property
def name(self):
def name(self) -> str:
"""Wrap property set_name to handler."""
return self.handler.get_name()
return self.handler.get_name() # type: ignore
@name.setter
def name(self, name):
def name(self, name: str) -> None:
"""Wrap property get_name to handler."""
self.handler.name = name
self.handler.set_name(name) # type: ignore