From 10ea2887a2190a14922c58c7516c71af2d4bfc96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Wed, 7 Feb 2024 08:28:01 +0000 Subject: [PATCH] Make mypy happy(er) --- build.py | 5 ++++- jellyfin_kodi/connect.py | 8 ++++---- jellyfin_kodi/dialogs/context.py | 3 ++- jellyfin_kodi/dialogs/serverconnect.py | 4 +++- jellyfin_kodi/full_sync.py | 3 ++- jellyfin_kodi/jellyfin/__init__.py | 13 +++++++------ jellyfin_kodi/jellyfin/connection_manager.py | 4 ++-- jellyfin_kodi/jellyfin/ws_client.py | 2 +- jellyfin_kodi/monitor.py | 3 ++- jellyfin_kodi/objects/obj.py | 3 ++- jellyfin_kodi/player.py | 3 ++- 11 files changed, 31 insertions(+), 20 deletions(-) diff --git a/build.py b/build.py index bf449524..518f1225 100755 --- a/build.py +++ b/build.py @@ -41,8 +41,11 @@ def create_addon_xml(config: dict, source: str, py_version: str) -> None: # Populate dependencies in template dependencies = config['dependencies'].get(py_version) + requires_el = root.find('requires') + assert isinstance(requires_el, ET.Element), "Unable to find requires element in template" + for dep in dependencies: - ET.SubElement(root.find('requires'), 'import', attrib=dep) + ET.SubElement(requires_el, 'import', attrib=dep) # Populate version string addon_version = config.get('version') diff --git a/jellyfin_kodi/connect.py b/jellyfin_kodi/connect.py index 8ea0831d..79226632 100644 --- a/jellyfin_kodi/connect.py +++ b/jellyfin_kodi/connect.py @@ -144,12 +144,12 @@ class Connect(object): ''' Save user info. ''' - self.user = client.jellyfin.get_user() - settings('username', self.user['Name']) + user = client.jellyfin.get_user() + settings('username', user['Name']) - if 'PrimaryImageTag' in self.user: + if 'PrimaryImageTag' in user: server_address = client.auth.get_server_info(client.auth.server_id)['address'] - window('JellyfinUserImage', api.API(self.user, server_address).get_user_artwork(self.user['Id'])) + window('JellyfinUserImage', api.API(user, server_address).get_user_artwork(user['Id'])) def select_servers(self, state=None): diff --git a/jellyfin_kodi/dialogs/context.py b/jellyfin_kodi/dialogs/context.py index 0dec28c4..243d749b 100644 --- a/jellyfin_kodi/dialogs/context.py +++ b/jellyfin_kodi/dialogs/context.py @@ -4,6 +4,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera ################################################################################################## import os +from typing import List from kodi_six import xbmcgui, xbmcaddon from six import ensure_text @@ -27,7 +28,7 @@ USER_IMAGE = 150 class ContextMenu(xbmcgui.WindowXMLDialog): - _options = [] + _options: List[str] = [] selected_option = None def __init__(self, *args, **kwargs): diff --git a/jellyfin_kodi/dialogs/serverconnect.py b/jellyfin_kodi/dialogs/serverconnect.py index 73d72058..f3c80a1b 100644 --- a/jellyfin_kodi/dialogs/serverconnect.py +++ b/jellyfin_kodi/dialogs/serverconnect.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import division, absolute_import, print_function, unicode_literals +from typing import Any, Dict, List + ################################################################################################## from six import iteritems @@ -32,7 +34,7 @@ MANUAL_SERVER = 206 class ServerConnect(xbmcgui.WindowXMLDialog): user_image = None - servers = [] + servers: List[Dict[str, Any]] = [] _selected_server = None _connect_login = False diff --git a/jellyfin_kodi/full_sync.py b/jellyfin_kodi/full_sync.py index 7463c300..090624c5 100644 --- a/jellyfin_kodi/full_sync.py +++ b/jellyfin_kodi/full_sync.py @@ -5,6 +5,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera from contextlib import contextmanager import datetime +from typing import Any, Dict from kodi_six import xbmc @@ -29,7 +30,7 @@ class FullSync(object): sync.libraries() ''' # Borg - multiple instances, shared state - _shared_state = {} + _shared_state: Dict[str, Any] = {} sync = None running = False screensaver = None diff --git a/jellyfin_kodi/jellyfin/__init__.py b/jellyfin_kodi/jellyfin/__init__.py index 6d0bcdec..6c5b75a4 100644 --- a/jellyfin_kodi/jellyfin/__init__.py +++ b/jellyfin_kodi/jellyfin/__init__.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import division, absolute_import, print_function, unicode_literals +from typing import Any, Dict + ################################################################################################# from ..helper import has_attribute, LazyLogger @@ -43,16 +45,15 @@ class Jellyfin(object): ''' # Borg - multiple instances, shared state - _shared_state = {} - client = {} - server_id = "default" + _shared_state: Dict[str, Any] = {} + client: Dict[str, JellyfinClient] = {} + server_id: str = "default" def __init__(self, server_id=None): self.__dict__ = self._shared_state self.server_id = server_id or "default" - def get_client(self): - # type: () -> JellyfinClient + def get_client(self) -> JellyfinClient: return self.client[self.server_id] def close(self): @@ -71,7 +72,7 @@ class Jellyfin(object): for client in cls.client: cls.client[client].stop() - cls.client = {} + cls.client.clear() LOG.info("---[ STOPPED ALL JELLYFINCLIENTS ]---") @classmethod diff --git a/jellyfin_kodi/jellyfin/connection_manager.py b/jellyfin_kodi/jellyfin/connection_manager.py index 9e562a63..125e643d 100644 --- a/jellyfin_kodi/jellyfin/connection_manager.py +++ b/jellyfin_kodi/jellyfin/connection_manager.py @@ -8,6 +8,7 @@ import socket from datetime import datetime from operator import itemgetter import traceback +from typing import Optional import urllib3 @@ -31,8 +32,7 @@ CONNECTION_STATE = { class ConnectionManager(object): - user = {} - server_id = None + server_id: Optional[str] = None def __init__(self, client): diff --git a/jellyfin_kodi/jellyfin/ws_client.py b/jellyfin_kodi/jellyfin/ws_client.py index 3a9ce122..279e7c87 100644 --- a/jellyfin_kodi/jellyfin/ws_client.py +++ b/jellyfin_kodi/jellyfin/ws_client.py @@ -14,7 +14,7 @@ from ..helper import LazyLogger, settings # If numpy is installed, the websockets library tries to use it, and then # kodi hard crashes for reasons I don't even want to pretend to understand import sys # noqa: E402,I100 -sys.modules['numpy'] = None +sys.modules['numpy'] = None # type: ignore [assignment] import websocket # noqa: E402,I201 ################################################################################################## diff --git a/jellyfin_kodi/monitor.py b/jellyfin_kodi/monitor.py index 31b9d67c..b2d2bc8d 100644 --- a/jellyfin_kodi/monitor.py +++ b/jellyfin_kodi/monitor.py @@ -6,6 +6,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera import binascii import json import threading +from typing import List from kodi_six import xbmc @@ -27,7 +28,7 @@ LOG = LazyLogger(__name__) class Monitor(xbmc.Monitor): - servers = [] + servers: List[str] = [] sleep = False def __init__(self): diff --git a/jellyfin_kodi/objects/obj.py b/jellyfin_kodi/objects/obj.py index f9015791..4e3f4718 100644 --- a/jellyfin_kodi/objects/obj.py +++ b/jellyfin_kodi/objects/obj.py @@ -5,6 +5,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera import json import os +from typing import Any, Dict from six import iteritems, ensure_text @@ -20,7 +21,7 @@ LOG = LazyLogger(__name__) class Objects(object): # Borg - multiple instances, shared state - _shared_state = {} + _shared_state: Dict[str, Any] = {} def __init__(self): diff --git a/jellyfin_kodi/player.py b/jellyfin_kodi/player.py index e8a92985..64cf8993 100644 --- a/jellyfin_kodi/player.py +++ b/jellyfin_kodi/player.py @@ -4,6 +4,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera ################################################################################################# import os +from typing import Dict from kodi_six import xbmc, xbmcvfs @@ -22,7 +23,7 @@ LOG = LazyLogger(__name__) class Player(xbmc.Player): - played = {} + played: Dict[str, dict] = {} up_next = False def __init__(self):