diff options
author | Maxim Devaev <[email protected]> | 2023-05-04 12:37:05 +0300 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2023-05-04 12:37:05 +0300 |
commit | b5353e63cd52b0d98e7a56acc5c8fbfc6ad8b3ee (patch) | |
tree | 3176f1a738b9533e6f3a28b132e4501a6f97f991 | |
parent | b5d67314977a7e475fac164446031ca7c83b8bc4 (diff) |
python 3.11 fixes
-rw-r--r-- | PKGBUILD | 10 | ||||
-rw-r--r-- | kvmd/aiotools.py | 7 | ||||
-rw-r--r-- | kvmd/apps/kvmd/streamer.py | 5 | ||||
-rw-r--r-- | kvmd/inotify.py | 5 | ||||
-rw-r--r-- | kvmd/plugins/ugpio/tesmart.py | 12 | ||||
-rwxr-xr-x | setup.py | 2 | ||||
-rw-r--r-- | testenv/linters/mypy.ini | 2 | ||||
-rw-r--r-- | testenv/tox.ini | 16 |
8 files changed, 37 insertions, 22 deletions
@@ -39,11 +39,11 @@ url="https://github.com/pikvm/kvmd" license=(GPL) arch=(any) depends=( - "python>=3.10" - "python<3.11" + "python>=3.11" + "python<3.12" python-yaml - "python-aiohttp>=3.7.4.post0-1.1" - "python-aiofiles>=23.1.0-1" + python-aiohttp + python-aiofiles python-passlib python-pyotp python-qrcode @@ -60,7 +60,7 @@ depends=( python-pygments python-pyghmi python-pam - "python-pillow>=8.3.1-1" + python-pillow python-xlib libxkbcommon python-hidapi diff --git a/kvmd/aiotools.py b/kvmd/aiotools.py index c87e8268..51ad6ca8 100644 --- a/kvmd/aiotools.py +++ b/kvmd/aiotools.py @@ -202,7 +202,7 @@ async def wait_infinite() -> None: await asyncio.sleep(3600) -async def wait_first(*aws: Awaitable) -> tuple[set[asyncio.Task], set[asyncio.Task]]: +async def wait_first(*aws: (asyncio.Future | asyncio.Task)) -> tuple[set[asyncio.Task], set[asyncio.Task]]: return (await asyncio.wait(list(aws), return_when=asyncio.FIRST_COMPLETED)) @@ -242,7 +242,10 @@ class AioNotifier: await self.__queue.get() else: try: - await asyncio.wait_for(self.__queue.get(), timeout=timeout) + await asyncio.wait_for( + asyncio.ensure_future(self.__queue.get()), + timeout=timeout, + ) except asyncio.TimeoutError: return # False while not self.__queue.empty(): diff --git a/kvmd/apps/kvmd/streamer.py b/kvmd/apps/kvmd/streamer.py index 3cdb301a..ce4db816 100644 --- a/kvmd/apps/kvmd/streamer.py +++ b/kvmd/apps/kvmd/streamer.py @@ -329,7 +329,10 @@ class Streamer: # pylint: disable=too-many-instance-attributes if waiter_task is None: waiter_task = asyncio.create_task(self.__notifier.wait()) - if waiter_task in (await aiotools.wait_first(asyncio.sleep(self.__state_poll), waiter_task))[0]: + if waiter_task in (await aiotools.wait_first( + asyncio.ensure_future(asyncio.sleep(self.__state_poll)), + waiter_task, + ))[0]: waiter_task = None # ===== diff --git a/kvmd/inotify.py b/kvmd/inotify.py index b66ca443..c157c1ca 100644 --- a/kvmd/inotify.py +++ b/kvmd/inotify.py @@ -215,7 +215,10 @@ class Inotify: async def get_event(self, timeout: float) -> (InotifyEvent | None): assert timeout > 0 try: - return (await asyncio.wait_for(self.__events_queue.get(), timeout=timeout)) + return (await asyncio.wait_for( + asyncio.ensure_future(self.__events_queue.get()), + timeout=timeout, + )) except asyncio.TimeoutError: return None diff --git a/kvmd/plugins/ugpio/tesmart.py b/kvmd/plugins/ugpio/tesmart.py index c7e410f6..1e869ed2 100644 --- a/kvmd/plugins/ugpio/tesmart.py +++ b/kvmd/plugins/ugpio/tesmart.py @@ -137,8 +137,14 @@ class Plugin(BaseUserGpioDriver): # pylint: disable=too-many-instance-attribute assert self.__writer is not None try: self.__writer.write(b"\xAA\xBB\x03%s\xEE" % (cmd)) - await asyncio.wait_for(self.__writer.drain(), timeout=self.__timeout) - return (await asyncio.wait_for(self.__reader.readexactly(6), timeout=self.__timeout))[4] + await asyncio.wait_for( + asyncio.ensure_future(self.__writer.drain()), + timeout=self.__timeout, + ) + return (await asyncio.wait_for( + asyncio.ensure_future(self.__reader.readexactly(6)), + timeout=self.__timeout, + ))[4] except Exception as err: get_logger(0).error("Can't send command to TESmart KVM [%s]:%d: %s", self.__host, self.__port, tools.efmt(err)) @@ -155,7 +161,7 @@ class Plugin(BaseUserGpioDriver): # pylint: disable=too-many-instance-attribute async def __ensure_device_net(self) -> None: try: (self.__reader, self.__writer) = await asyncio.wait_for( - asyncio.open_connection(self.__host, self.__port), + asyncio.ensure_future(asyncio.open_connection(self.__host, self.__port)), timeout=self.__timeout, ) except Exception as err: @@ -145,7 +145,7 @@ def main() -> None: classifiers=[ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Development Status :: 5 - Production/Stable", - "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Topic :: System :: Systems Administration", "Operating System :: POSIX :: Linux", "Intended Audience :: System Administrators", diff --git a/testenv/linters/mypy.ini b/testenv/linters/mypy.ini index 33877875..d436fd2c 100644 --- a/testenv/linters/mypy.ini +++ b/testenv/linters/mypy.ini @@ -1,5 +1,5 @@ [mypy] -python_version = 3.10 +python_version = 3.11 ignore_missing_imports = true disallow_untyped_defs = true strict_optional = true diff --git a/testenv/tox.ini b/testenv/tox.ini index 77f8521a..c0efad82 100644 --- a/testenv/tox.ini +++ b/testenv/tox.ini @@ -3,12 +3,12 @@ envlist = flake8, pylint, mypy, vulture, pytest, eslint, htmlhint, shellcheck skipsdist = true [testenv] -basepython = python3.10 +basepython = python3.11 sitepackages = true changedir = /src [testenv:flake8] -whitelist_externals = bash +allowlist_externals = bash commands = bash -c 'flake8 --config=testenv/linters/flake8.ini kvmd testenv/tests *.py' deps = flake8==5.0.4 @@ -16,7 +16,7 @@ deps = -rrequirements.txt [testenv:pylint] -whitelist_externals = bash +allowlist_externals = bash commands = bash -c 'pylint -j0 --rcfile=testenv/linters/pylint.ini --output-format=colorized --reports=no kvmd testenv/tests *.py' deps = pylint @@ -26,14 +26,14 @@ deps = -rrequirements.txt [testenv:mypy] -whitelist_externals = bash +allowlist_externals = bash commands = bash -c 'mypy --config-file=testenv/linters/mypy.ini --cache-dir=testenv/.mypy_cache kvmd testenv/tests *.py' deps = mypy -rrequirements.txt [testenv:vulture] -whitelist_externals = bash +allowlist_externals = bash commands = bash -c 'vulture --ignore-names=_format_P,Plugin --ignore-decorators=@exposed_http,@exposed_ws,@pytest.fixture kvmd testenv/tests *.py testenv/linters/vulture-wl.py' deps = vulture @@ -53,13 +53,13 @@ deps = -rrequirements.txt [testenv:eslint] -whitelist_externals = eslint +allowlist_externals = eslint commands = eslint --cache-location=/tmp --config=testenv/linters/eslintrc.yaml --color --ext .js web/share/js [testenv:htmlhint] -whitelist_externals = htmlhint +allowlist_externals = htmlhint commands = htmlhint --config=testenv/linters/htmlhint.json web/*.html web/*/*.html [testenv:shellcheck] -whitelist_externals = bash +allowlist_externals = bash commands = bash -c 'shellcheck --color=always kvmd.install scripts/*' |