more match + less asserts
This commit is contained in:
parent
0e55f88adb
commit
2aac64f65c
@ -6,9 +6,10 @@ import os
|
|||||||
import pathlib
|
import pathlib
|
||||||
import threading
|
import threading
|
||||||
import warnings
|
import warnings
|
||||||
|
from collections.abc import Hashable
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from io import StringIO, UnsupportedOperation
|
from io import StringIO, UnsupportedOperation
|
||||||
from typing import IO, Any, Callable, Hashable, TypeVar
|
from typing import IO, Any, Callable, TypeVar
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'KVFactory',
|
'KVFactory',
|
||||||
@ -140,16 +141,15 @@ class KVJson(KVFactory):
|
|||||||
|
|
||||||
def _load_key(self, key: Any, /) -> Hashable:
|
def _load_key(self, key: Any, /) -> Hashable:
|
||||||
"""note: unstable signature."""
|
"""note: unstable signature."""
|
||||||
if isinstance(key, Hashable):
|
match key:
|
||||||
return key
|
case Hashable():
|
||||||
elif isinstance(key, list):
|
return key
|
||||||
return tuple(map(self._load_key, key))
|
case list():
|
||||||
elif isinstance(key, dict):
|
return tuple(map(self._load_key, key))
|
||||||
return tuple((self._load_key(k), self._load_key(v)) for k, v in key.items())
|
case dict():
|
||||||
else:
|
return tuple((self._load_key(k), self._load_key(v)) for k, v in key.items())
|
||||||
raise TypeError(
|
case _:
|
||||||
'unknown KVJson key type, cannot convert to hashable'
|
raise TypeError('unknown KVJson key type, cannot convert to hashable')
|
||||||
)
|
|
||||||
|
|
||||||
def fromline(self, line: str, /) -> tuple[Any, Any]:
|
def fromline(self, line: str, /) -> tuple[Any, Any]:
|
||||||
d = json.loads(line)
|
d = json.loads(line)
|
||||||
@ -207,7 +207,8 @@ def nightly(decorated: TDecoratedNightly = None, prefix: str = '', stacklevel=2)
|
|||||||
decorated.__init_subclass__, prefix, stacklevel=3
|
decorated.__init_subclass__, prefix, stacklevel=3
|
||||||
)
|
)
|
||||||
return decorated # type: ignore
|
return decorated # type: ignore
|
||||||
assert callable(decorated)
|
if not callable(decorated):
|
||||||
|
raise TypeError
|
||||||
|
|
||||||
message = f"{prefix}{decorated.__name__}"
|
message = f"{prefix}{decorated.__name__}"
|
||||||
|
|
||||||
@ -470,13 +471,14 @@ class DbConnection(VirtualConnection):
|
|||||||
await self._reload()
|
await self._reload()
|
||||||
|
|
||||||
async def _handle_request(self, request: Request, /) -> None:
|
async def _handle_request(self, request: Request, /) -> None:
|
||||||
if isinstance(request, LineRequest):
|
match request:
|
||||||
await self._write(request.line, request)
|
case LineRequest():
|
||||||
elif isinstance(request, CommitRequest):
|
await self._write(request.line, request)
|
||||||
await self._commit_buffer()
|
case CommitRequest():
|
||||||
request.set_result(None)
|
await self._commit_buffer()
|
||||||
else:
|
request.set_result(None)
|
||||||
raise UnknownRequestType
|
case _:
|
||||||
|
raise UnknownRequestType
|
||||||
|
|
||||||
async def _background_cycle(self, /) -> None:
|
async def _background_cycle(self, /) -> None:
|
||||||
request: Request = await self.__queue.get()
|
request: Request = await self.__queue.get()
|
||||||
@ -588,7 +590,8 @@ intended for heavy tasks."""
|
|||||||
self._start_task()
|
self._start_task()
|
||||||
|
|
||||||
async def _initialize(self, /) -> None:
|
async def _initialize(self, /) -> None:
|
||||||
assert self.__not_running
|
if not self.__not_running:
|
||||||
|
raise RuntimeError
|
||||||
self.__not_running = False
|
self.__not_running = False
|
||||||
await self._initialize_running()
|
await self._initialize_running()
|
||||||
|
|
||||||
@ -604,7 +607,8 @@ note: unstable signature."""
|
|||||||
await self._commit_buffer()
|
await self._commit_buffer()
|
||||||
if not self.__buffer_future.done():
|
if not self.__buffer_future.done():
|
||||||
self.__buffer_future.set_exception(RequestToClosedConnection())
|
self.__buffer_future.set_exception(RequestToClosedConnection())
|
||||||
assert isinstance(self.__buffer_future.exception(), RequestToClosedConnection)
|
if not isinstance(self.__buffer_future.exception(), RequestToClosedConnection):
|
||||||
|
raise RuntimeError
|
||||||
del self.__buffer_requested
|
del self.__buffer_requested
|
||||||
del self.__buffer_future
|
del self.__buffer_future
|
||||||
del self.__buffer
|
del self.__buffer
|
||||||
@ -614,7 +618,8 @@ note: unstable signature."""
|
|||||||
await self.__queue.join()
|
await self.__queue.join()
|
||||||
self.__task.cancel()
|
self.__task.cancel()
|
||||||
del self.__task
|
del self.__task
|
||||||
assert self.__queue.empty()
|
if not self.__queue.empty():
|
||||||
|
raise RuntimeError
|
||||||
del self.__queue
|
del self.__queue
|
||||||
await self._close_buffer()
|
await self._close_buffer()
|
||||||
|
|
||||||
@ -971,7 +976,8 @@ class Transaction:
|
|||||||
self.__running = False
|
self.__running = False
|
||||||
|
|
||||||
def __enter__(self) -> TransactionView:
|
def __enter__(self) -> TransactionView:
|
||||||
assert not self.__running
|
if self.__running:
|
||||||
|
raise RuntimeError
|
||||||
self.__running = True
|
self.__running = True
|
||||||
self.__view = TransactionView({}, self.__connection)
|
self.__view = TransactionView({}, self.__connection)
|
||||||
return self.__view
|
return self.__view
|
||||||
|
Loading…
Reference in New Issue
Block a user