Added some types

This commit is contained in:
Christoph Stahl 2024-10-10 17:23:14 +02:00
parent 95e8157277
commit 65a749b5f8
5 changed files with 25 additions and 14 deletions

View file

@ -28,6 +28,7 @@ from dataclasses import dataclass
from dataclasses import field from dataclasses import field
from traceback import print_exc from traceback import print_exc
from typing import Any, Optional from typing import Any, Optional
from uuid import UUID
from qrcode.main import QRCode from qrcode.main import QRCode
@ -121,7 +122,7 @@ class Client:
self.is_running = False self.is_running = False
self.sio = socketio.AsyncClient(json=jsonencoder) self.sio = socketio.AsyncClient(json=jsonencoder)
self.loop: Optional[asyncio.AbstractEventLoop] = None self.loop: Optional[asyncio.AbstractEventLoop] = None
self.skipped = [] self.skipped: list[UUID] = []
self.sources = configure_sources(config["sources"]) self.sources = configure_sources(config["sources"])
self.state = State() self.state = State()
self.currentLock = asyncio.Semaphore(0) self.currentLock = asyncio.Semaphore(0)
@ -441,7 +442,7 @@ class Client:
if self.player is not None: if self.player is not None:
self.player.mpv.terminate() self.player.mpv.terminate()
def quit_callback(self): def quit_callback(self) -> None:
if self.loop is not None: if self.loop is not None:
asyncio.run_coroutine_threadsafe(self.sio.disconnect(), self.loop) asyncio.run_coroutine_threadsafe(self.sio.disconnect(), self.loop)

View file

@ -482,14 +482,14 @@ class GeneralConfig(OptionFrame):
class SyngGui(QMainWindow): class SyngGui(QMainWindow):
def closeEvent(self, a0: Optional[QCloseEvent]) -> None: def closeEvent(self, a0: Optional[QCloseEvent]) -> None:
if self.syng_server is not None: # if self.syng_server is not None:
self.syng_server.kill() # self.syng_server.kill()
self.syng_server.join() # self.syng_server.join()
if self.syng_client is not None: # if self.syng_client is not None:
self.syng_client.terminate() # self.syng_client.terminate()
self.syng_client.join(1.0) # self.syng_client.join(1.0)
self.syng_client.kill() # self.syng_client.kill()
self.destroy() self.destroy()
@ -632,8 +632,8 @@ class SyngGui(QMainWindow):
self.setWindowIcon(QIcon(":/icons/syng.ico")) self.setWindowIcon(QIcon(":/icons/syng.ico"))
self.loop = asyncio.get_event_loop() self.loop = asyncio.get_event_loop()
self.syng_server: Optional[threading.Thread] = None # self.syng_server: Optional[threading.Thread] = None
self.syng_client: Optional[threading.Thread] = None # self.syng_client: Optional[threading.Thread] = None
self.client: Optional[Client] = None self.client: Optional[Client] = None
self.syng_client_logging_listener: Optional[QueueListener] = None self.syng_client_logging_listener: Optional[QueueListener] = None

View file

@ -1,7 +1,7 @@
import asyncio import asyncio
import locale import locale
import sys import sys
from typing import Iterable, Optional, cast from typing import Callable, Iterable, Optional, cast
from qrcode.main import QRCode from qrcode.main import QRCode
import mpv import mpv
import os import os
@ -13,7 +13,7 @@ __dirname__ = os.path.dirname(__file__)
class Player: class Player:
def __init__(self, qr_string: str, quit_callback) -> None: def __init__(self, qr_string: str, quit_callback: Callable[[], None]) -> None:
locale.setlocale(locale.LC_ALL, "C") locale.setlocale(locale.LC_ALL, "C")
self.mpv = mpv.MPV(ytdl=True, input_default_bindings=True, input_vo_keyboard=True, osc=True) self.mpv = mpv.MPV(ytdl=True, input_default_bindings=True, input_vo_keyboard=True, osc=True)
self.mpv.title = "Syng - Player" self.mpv.title = "Syng - Player"
@ -36,7 +36,7 @@ class Player:
self.mpv.observe_property("osd-height", self.osd_size_handler) self.mpv.observe_property("osd-height", self.osd_size_handler)
self.mpv.register_event_callback(self.event_callback) self.mpv.register_event_callback(self.event_callback)
def event_callback(self, event): def event_callback(self, event: mpv.MpvEvent) -> None:
e = event.as_dict() e = event.as_dict()
if e["event"] == b"shutdown": if e["event"] == b"shutdown":
self.quit_callback() self.quit_callback()

View file

@ -2,6 +2,9 @@ from typing import Any, Callable, Iterable, Optional, Protocol
from PIL.Image import Image from PIL.Image import Image
class ShutdownError(Exception):
pass
class Unregisterable(Protocol): class Unregisterable(Protocol):
def unregister(self) -> None: ... def unregister(self) -> None: ...
@ -9,6 +12,9 @@ class ImageOverlay:
overlay_id: int overlay_id: int
def remove(self) -> None: ... def remove(self) -> None: ...
class MpvEvent:
def as_dict(self) -> dict[str, bytes]: ...
class MPV: class MPV:
pause: bool pause: bool
keep_open: str keep_open: str

4
typings/qasync.pyi Normal file
View file

@ -0,0 +1,4 @@
from asyncio import AbstractEventLoop
class QApplication:
def __init__(self, argv: list[str]) -> None: ...