Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: 73db9f99 by wurstsalat at 2022-12-10T11:24:07+01:00 cq: Plugins: Improve type annotations
- - - - - 7ee6b8b9 by wurstsalat at 2022-12-10T11:24:33+01:00 cq: Preferences: Ignore type error
- - - - - a9894439 by wurstsalat at 2022-12-10T11:25:05+01:00 cq: Styling: Type annotations
- - - - - ba5ef575 by wurstsalat at 2022-12-10T13:12:05+01:00 cq: SynchronizeAccounts: Use better ListStore set method
- - - - - 8e7dbb69 by wurstsalat at 2022-12-10T13:12:19+01:00 cq: RosterItemExchange: Use better ListStore set method
- - - - - a82b744d by wurstsalat at 2022-12-10T13:15:55+01:00 cq: FileChoosers: Improve type annotations
- - - - - 5131ebf8 by wurstsalat at 2022-12-10T13:15:55+01:00 cq: Control: Fix indentation warning
- - - - - 7272cc30 by wurstsalat at 2022-12-10T13:15:55+01:00 cq: ComponentSearch: Fix type annotations
- - - - - 93e4ed5f by wurstsalat at 2022-12-10T13:15:55+01:00 cq: Assistant: Fix type annotations
- - - - - 896be5ed by wurstsalat at 2022-12-10T13:15:55+01:00 cq: Update pyrightconfig
- - - - -
11 changed files:
- gajim/common/styling.py - gajim/gtk/assistant.py - gajim/gtk/component_search.py - gajim/gtk/control.py - gajim/gtk/filechoosers.py - gajim/gtk/preferences.py - gajim/gtk/roster_item_exchange.py - gajim/gtk/synchronize_accounts.py - gajim/plugins/gajimplugin.py - gajim/plugins/pluginmanager.py - pyproject.toml
Changes:
===================================== gajim/common/styling.py ===================================== @@ -14,6 +14,7 @@
from __future__ import annotations
+from typing import Any from typing import Union from typing import Match from typing import Optional @@ -100,7 +101,7 @@ class MailAddress(BaseHyperlink): class Block(StyleObject):
@classmethod - def from_match(cls, match: Match[str]) -> Block: + def from_match(cls: Any, match: Match[str]) -> Block: return cls(start=match.start(), end=match.end(), text=match.group(cls.name))
===================================== gajim/gtk/assistant.py ===================================== @@ -23,9 +23,10 @@
from gi.repository import Gdk from gi.repository import Gtk -from gi.repository import Gio from gi.repository import GObject
+from gajim.common import app + from .builder import get_builder from .util import EventHelper
@@ -51,7 +52,7 @@ def __init__(self, transition_duration: int = 200) -> None: Gtk.ApplicationWindow.__init__(self) EventHelper.__init__(self) - self.set_application(Gio.Application.get_default()) + self.set_application(app.app) self.set_position(Gtk.WindowPosition.CENTER) self.set_show_menubar(False) self.set_name('Assistant')
===================================== gajim/gtk/component_search.py ===================================== @@ -144,8 +144,8 @@ def _search_result_received(self, event: SearchResultReceivedEvent ) -> None: if event.data is None: - error_page = cast(Error, self.get_page('error')) - error_page.set_text(_('Error while receiving search results.')) + self.get_page('error').set_text( + _('Error while receiving search results.')) self.show_page('error') return
@@ -320,7 +320,7 @@ def _on_button_press(self, assert store is not None assert path is not None iter_ = store.get_iter(path) - column_values = store[iter_] + column_values = cast(str, store[iter_]) text = ' '.join(column_values)
jid = None
===================================== gajim/gtk/control.py ===================================== @@ -496,7 +496,7 @@ def _on_jump_to_end(self, _button: Gtk.Button) -> None:
def drag_data_file_transfer(self, selection: Gtk.SelectionData) -> None: app.window.activate_action('send-file', - GLib.Variant('as', selection.get_uris())) + GLib.Variant('as', selection.get_uris()))
def get_our_nick(self) -> str: if isinstance(self.contact, GroupchatParticipant):
===================================== gajim/gtk/filechoosers.py ===================================== @@ -48,6 +48,15 @@ def _require_native() -> bool: # Notes: Adding mime types to Gtk.FileFilter forces non-native dialogs
class BaseFileChooser: + + _preview_size: tuple[int, int] + + def add_filter(self, filter: Gtk.FileFilter) -> None: + pass + + def set_filter(self, filter: Gtk.FileFilter) -> None: + pass + def _on_response(self, dialog: Union[Gtk.FileChooser, Gtk.FileChooserNative], response: Gtk.ResponseType,
===================================== gajim/gtk/preferences.py ===================================== @@ -13,6 +13,7 @@ # along with Gajim. If not, see http://www.gnu.org/licenses/.
from __future__ import annotations + from typing import Any from typing import Optional from typing import cast @@ -118,7 +119,7 @@ def get_ui(self): def _add_prefs(self, prefs: list[tuple[str, type[PreferenceBox]]]): for ui_name, klass in prefs: pref_box = getattr(self._ui, ui_name) - pref = klass(self) + pref = klass(self) # pyright: ignore pref_box.add(pref) self._prefs[ui_name] = pref
===================================== gajim/gtk/roster_item_exchange.py ===================================== @@ -142,7 +142,11 @@ def _add(self) -> None: self.show_all() assert isinstance(self._model, Gtk.ListStore) iter_ = self._model.append() - self._model.set(iter_, 0, True, 1, jid, 2, name, 3, groups) + self._model.set(iter_, + {0: True, + 1: jid, + 2: name, + 3: groups})
self._ui.accept_button.set_label(_('Add'))
@@ -169,7 +173,11 @@ def _modify(self) -> None: self.show_all() assert isinstance(self._model, Gtk.ListStore) iter_ = self._model.append() - self._model.set(iter_, 0, True, 1, jid, 2, name, 3, groups) + self._model.set(iter_, + {0: True, + 1: jid, + 2: name, + 3: groups})
self._ui.accept_button.set_label(_('Modify'))
@@ -190,7 +198,11 @@ def _delete(self) -> None: self.show_all() assert isinstance(self._model, Gtk.ListStore) iter_ = self._model.append() - self._model.set(iter_, 0, True, 1, jid, 2, name, 3, groups) + self._model.set(iter_, + {0: True, + 1: jid, + 2: name, + 3: groups})
self._ui.accept_button.set_label(_('Delete'))
===================================== gajim/gtk/synchronize_accounts.py ===================================== @@ -100,10 +100,8 @@ def _init_accounts(self) -> None: iter_ = model.append() model.set( iter_, - 0, - remote_account, - 1, - app.get_hostname_from_account(remote_account)) + {0: remote_account, + 1: app.get_hostname_from_account(remote_account)})
def _on_next_clicked(self, _button: Gtk.Button) -> None: selection = self._ui.accounts_treeview.get_selection() @@ -146,7 +144,10 @@ def _init_contacts(self): for remote_jid in remote_jid_list: if remote_jid not in local_jid_list: iter_ = model.append() - model.set(iter_, 0, True, 1, remote_jid) + model.set( + iter_, + {0: True, + 1: remote_jid})
def _on_sync_toggled(self, cell: Gtk.CellRendererToggle, path: str) -> None: model = self._ui.contacts_treeview.get_model()
===================================== gajim/plugins/gajimplugin.py ===================================== @@ -23,6 +23,7 @@ from gajim.common import configpaths from gajim.common.events import ApplicationEvent from gajim.common.ged import HandlerFuncT +from gajim.common.modules.base import BaseModule from gajim.common.types import PluginExtensionPoints
@@ -77,8 +78,8 @@ class GajimPlugin: events: list[ApplicationEvent] = [] ''' New network event classes to be registered in Network Events Controller. - ''' + modules: list[BaseModule] = []
def __init__(self) -> None: self.config = GajimPluginConfig(self)
===================================== gajim/plugins/pluginmanager.py ===================================== @@ -15,7 +15,9 @@ from __future__ import annotations
from typing import Any +from typing import Callable from typing import Optional +from types import TracebackType
import os import sys @@ -712,7 +714,13 @@ def install_from_zip(self, return self.add_plugin(manifest)
def delete_plugin_files(self, plugin_path: Path) -> None: - def on_error(func, path, error): + ErrorT = tuple[type[BaseException], BaseException, TracebackType] + + def _on_error(func: Callable[..., Any], + path: Path, + error: ErrorT + ) -> None: + if func is os.path.islink: # if symlink os.unlink(path) @@ -720,7 +728,7 @@ def on_error(func, path, error): # access is denied or other raise PluginsystemError(str(error[1]))
- rmtree(plugin_path, False, on_error) + rmtree(plugin_path, False, _on_error)
def uninstall_plugin(self, plugin: GajimPlugin) -> None: '''
===================================== pyproject.toml ===================================== @@ -54,6 +54,7 @@ include = [ "gajim/common/setting_values.py", "gajim/common/sound.py", "gajim/common/storage/*", + "gajim/common/styling.py", "gajim/common/task_manager.py", "gajim/common/text_helpers.py", "gajim/gajim.py", @@ -66,6 +67,7 @@ include = [ "gajim/gtk/app_side_bar.py", "gajim/gtk/application.py", "gajim/gtk/apply_button_box.py", + "gajim/gtk/assistant.py", "gajim/gtk/avatar.py", "gajim/gtk/avatar_selector.py", "gajim/gtk/blocking.py", @@ -93,6 +95,7 @@ include = [ "gajim/gtk/emoji_data_gtk.py", "gajim/gtk/exception.py", "gajim/gtk/features.py", + "gajim/gtk/filechoosers.py", "gajim/gtk/file_transfer_selector.py", "gajim/gtk/groupchat_affiliation.py", "gajim/gtk/groupchat_config.py", @@ -123,6 +126,7 @@ include = [ "gajim/gtk/password_dialog.py", "gajim/gtk/pep_config.py", "gajim/gtk/plugins.py", + "gajim/gtk/preferences.py", "gajim/gtk/preview.py", "gajim/gtk/preview_audio.py", "gajim/gtk/preview_audio_analyzer.py", @@ -131,6 +135,7 @@ include = [ "gajim/gtk/remove_account.py", "gajim/gtk/resource_selector.py", "gajim/gtk/roster.py", + "gajim/gtk/roster_item_exchange.py", "gajim/gtk/search_view.py", "gajim/gtk/service_registration.py", "gajim/gtk/sidebar_switcher.py", @@ -139,6 +144,7 @@ include = [ "gajim/gtk/status_message_selector.py", "gajim/gtk/status_selector.py", "gajim/gtk/structs.py", + "gajim/gtk/synchronize_accounts.py", "gajim/gtk/themes.py", "gajim/gtk/tooltips.py", "gajim/gtk/util.py",
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/a6550805a2e7b46c62fff8ac867569f1...