Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
bbda836
Add stubs/gi
cschramm Aug 23, 2020
8ee177b
Add pgi-docgen auto-generated GLib stubs
cschramm Aug 23, 2020
717143c
Adapt GLib stubs
cschramm Aug 23, 2020
b135475
Remove unused broken GSimpleAction from tray
cschramm Aug 31, 2020
be5ff48
Fix GLib related typing issues
cschramm Aug 23, 2020
f6c7e04
Add pgi-docgen auto-generated GObject stubs
cschramm Aug 23, 2020
e0583de
Adapt GObject stubs
cschramm Aug 23, 2020
84edb7c
Fix GObject related typing issues
cschramm Aug 23, 2020
92e6a17
Add pgi-docgen auto-generated Gio stubs
cschramm Aug 24, 2020
3bf582b
Adapt Gio stubs
cschramm Aug 25, 2020
ddf581a
Fix Gio related typing issues
cschramm Aug 25, 2020
df33538
Add pgi-docgen auto-generated GdkPixbuf stubs
cschramm Aug 25, 2020
d815285
Adapt GdkPixbuf stubs
cschramm Aug 25, 2020
98a267a
Add pgi-docgen auto-generated Pango stubs
cschramm Aug 25, 2020
23766ce
Adapt Pango stubs
cschramm Aug 25, 2020
009ccf7
Add pgi-docgen auto-generated Gdk stubs
cschramm Aug 25, 2020
408e6d0
Adapt Gdk stubs
cschramm Aug 25, 2020
e1003f6
Fix Gdk related typing issues
cschramm Aug 25, 2020
d60cfb2
Add pgi-docgen auto-generated GdkX11 stubs
cschramm Aug 25, 2020
4583638
Add pgi-docgen auto-generated Gtk stubs
cschramm Aug 25, 2020
ce1e459
Adapt Gtk stubs
cschramm Aug 26, 2020
6ddf653
Remove broken DeviceList.__del__
cschramm Aug 30, 2020
55792c5
Fix Manager.on_dbus_name_vanished
cschramm Aug 30, 2020
71f5cc5
Fix Gtk related typing issues
cschramm Aug 30, 2020
0d333d0
Use mypy --strict
cschramm Aug 31, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions blueman/bluez/AnyBase.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Dict, List
from typing import Dict, List, Optional

from gi.repository import GObject, GLib
from gi.repository import Gio
Expand All @@ -20,7 +20,7 @@ class AnyBase(GObject.GObject):
def __init__(self, interface_name: str):
super().__init__()

self.__bus = Gio.bus_get_sync(Gio.BusType.SYSTEM)
self.__bus: Optional[Gio.DBusConnection] = Gio.bus_get_sync(Gio.BusType.SYSTEM)

self.__interface_name = interface_name
self.__signal = None
Expand Down Expand Up @@ -49,6 +49,7 @@ def _on_properties_changed(

def close(self) -> None:
if self.__signal:
self.__bus.signal_unsubscribe(self.__signal)
if self.__bus is not None:
self.__bus.signal_unsubscribe(self.__signal)
Comment thread
infirit marked this conversation as resolved.
self.__signal = None
self.__bus = None
9 changes: 6 additions & 3 deletions blueman/bluez/Base.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ class Base(Gio.DBusProxy, metaclass=BaseMeta):
}
__instances__: Dict[str, "Base"]

_interface_name: str

def __init__(self, obj_path: str):
super().__init__(
g_name=self.__name,
Expand Down Expand Up @@ -68,7 +70,7 @@ def _call(
) -> None:
def callback(
proxy: Base,
result: Gio.Task,
result: Gio.AsyncResult,
reply: Optional[Callable[..., None]],
error: Optional[Callable[[BluezDBusException], None]],
) -> None:
Expand All @@ -95,8 +97,9 @@ def get(self, name: str) -> Any:
None)
return prop.unpack()[0]
except GLib.Error as e:
if name in self.get_cached_property_names():
return self.get_cached_property(name).unpack()
property = self.get_cached_property(name)
if property is not None:
return property.unpack()
elif name in self.__fallback:
return self.__fallback[name]
else:
Expand Down
4 changes: 2 additions & 2 deletions blueman/bluez/Device.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ def pair(
) -> None:
self._call('Pair', reply_handler=reply_handler, error_handler=error_handler)

def connect(
def connect( # type: ignore
self,
reply_handler: Optional[Callable[[], None]] = None,
error_handler: Optional[Callable[[BluezDBusException], None]] = None,
) -> None:
self._call('Connect', reply_handler=reply_handler, error_handler=error_handler)

def disconnect(
def disconnect( # type: ignore
self,
reply_handler: Optional[Callable[[], None]] = None,
error_handler: Optional[Callable[[BluezDBusException], None]] = None,
Expand Down
6 changes: 6 additions & 0 deletions blueman/bluez/Manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ def _on_object_added(self, _object_manager: Gio.DBusObjectManager, dbus_object:
adapter_proxy = dbus_object.get_interface('org.bluez.Adapter1')

if adapter_proxy:
assert isinstance(adapter_proxy, Gio.DBusProxy)
object_path = adapter_proxy.get_object_path()
logging.debug(object_path)
self.emit('adapter-added', object_path)
elif device_proxy:
assert isinstance(device_proxy, Gio.DBusProxy)
object_path = device_proxy.get_object_path()
logging.debug(object_path)
self.emit('device-created', object_path)
Expand All @@ -50,10 +52,12 @@ def _on_object_removed(self, _object_manager: Gio.DBusObjectManager, dbus_object
adapter_proxy = dbus_object.get_interface('org.bluez.Adapter1')

if adapter_proxy:
assert isinstance(adapter_proxy, Gio.DBusProxy)
object_path = adapter_proxy.get_object_path()
logging.debug(object_path)
self.emit('adapter-removed', object_path)
elif device_proxy:
assert isinstance(device_proxy, Gio.DBusProxy)
object_path = device_proxy.get_object_path()
logging.debug(object_path)
self.emit('device-removed', object_path)
Expand All @@ -64,6 +68,7 @@ def get_adapters(self) -> List[Adapter]:
proxy = obj_proxy.get_interface('org.bluez.Adapter1')

if proxy:
assert isinstance(proxy, Gio.DBusProxy)
paths.append(proxy.get_object_path())

return [Adapter(obj_path=path) for path in paths]
Expand All @@ -88,6 +93,7 @@ def get_devices(self, adapter_path: str = "/") -> List[Device]:
proxy = obj_proxy.get_interface('org.bluez.Device1')

if proxy:
assert isinstance(proxy, Gio.DBusProxy)
object_path = proxy.get_object_path()
if object_path.startswith(adapter_path):
paths.append(object_path)
Expand Down
4 changes: 2 additions & 2 deletions blueman/bluez/Network.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Network(Base):
def __init__(self, obj_path: str):
super().__init__(obj_path=obj_path)

def connect(
def connect( # type: ignore
self,
uuid: str,
reply_handler: Optional[Callable[[str], None]] = None,
Expand All @@ -22,7 +22,7 @@ def connect(
param = GLib.Variant('(s)', (uuid,))
self._call('Connect', param, reply_handler=reply_handler, error_handler=error_handler)

def disconnect(
def disconnect( # type: ignore
self,
reply_handler: Optional[Callable[[], None]] = None,
error_handler: Optional[Callable[[BluezDBusException], None]] = None,
Expand Down
2 changes: 1 addition & 1 deletion blueman/gui/DeviceList.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def __init__(self, adapter_name: Optional[str] = None, tabledata: Optional[List[
self._anydevhandler = self.any_device.connect_signal("property-changed", self._on_device_property_changed)

self.__discovery_time: float = 0
self.__adapter_path = None
self.__adapter_path: Optional[str] = None
self.Adapter: Optional[Adapter] = None
self.discovering = False

Expand Down
2 changes: 1 addition & 1 deletion blueman/gui/Notification.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def show(self) -> None:

def close(self) -> None:
param = GLib.Variant('(u)', (self._return_id,))
self.call_sync('CloseNotification', param, Gio.DBusProxyFlags.NONE, -1, None)
self.call_sync('CloseNotification', param, Gio.DBusCallFlags.NONE, -1, None)
Comment thread
infirit marked this conversation as resolved.
self._return_id = None


Expand Down
4 changes: 2 additions & 2 deletions blueman/main/DBusProxies.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class DBusProxyFailed(Exception):

class ProxyBase(Gio.DBusProxy, metaclass=SingletonGObjectMeta):
def __init__(self, name: str, interface_name: str, object_path: str = "/", systembus: bool = False,
flags: Gio.DBusProxyFlags = 0) -> None:
flags: Gio.DBusProxyFlags = Gio.DBusProxyFlags.NONE) -> None:
if systembus:
bustype = Gio.BusType.SYSTEM
else:
Expand Down Expand Up @@ -52,7 +52,7 @@ def call_finish(proxy: "ManagerService", resp: Gio.AsyncResult) -> None:
proxy.call_finish(resp)

param = GLib.Variant('(sava{sv})', (name, [], {}))
self.call('ActivateAction', param, Gio.DBusProxyFlags.NONE, -1, None, call_finish)
self.call('ActivateAction', param, Gio.DBusCallFlags.NONE, -1, None, call_finish)

def startstop(self) -> None:
if self.get_name_owner() is None:
Expand Down
11 changes: 6 additions & 5 deletions blueman/main/DbusService.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
class DbusError(Exception):
_name = "org.blueman.Error"

def __init__(self, message: Optional[str] = None) -> None:
def __init__(self, message: str) -> None:
self._message = message

@property
def name(self) -> str:
return self._name

@property
def message(self) -> Optional[str]:
def message(self) -> str:
return self._message


Expand All @@ -30,7 +30,7 @@ def __init__(self, bus_name: Optional[str], interface_name: str, path: str, bus_
self._signals: Dict[str, str] = {}
self._interface_name = interface_name
self._path = path
self._regid = None
self._regid: Optional[int] = None

def add_method(self, name: str, arguments: Tuple[str, ...], return_value: str, method: Callable[..., None],
pass_sender: bool = False, is_async: bool = False) -> None:
Expand Down Expand Up @@ -95,8 +95,9 @@ def register(self) -> None:
raise GLib.Error(f"Failed to register object with path: {self._path}")

def unregister(self) -> None:
self._bus.unregister_object(self._regid)
self._regid = None
if self._regid is not None:
self._bus.unregister_object(self._regid)
self._regid = None

def _reregister(self) -> None:
if self._regid:
Expand Down
3 changes: 2 additions & 1 deletion blueman/main/MechanismApplication.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import importlib
import logging
import os
from typing import Optional

import blueman.plugins.mechanism
from blueman.Constants import POLKIT
Expand Down Expand Up @@ -47,7 +48,7 @@ def __init__(self, stoptimer: bool):

if POLKIT:
try:
self.pk = Gio.DBusProxy.new_for_bus_sync(
self.pk: Optional[Gio.DBusProxy] = Gio.DBusProxy.new_for_bus_sync(
Gio.BusType.SYSTEM,
Gio.DBusProxyFlags.NONE,
None,
Expand Down
4 changes: 3 additions & 1 deletion blueman/main/Sendto.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,9 @@ def on_transfer_completed(self, _transfer: Transfer) -> None:

def process_queue(self) -> None:
if len(self.files) > 0:
self.send_file(self.files[-1].get_path())
path = self.files[-1].get_path()
assert path is not None
self.send_file(path)
else:
self.emit("result", True)

Expand Down
4 changes: 1 addition & 3 deletions blueman/main/applet/BluezAgent.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,8 +295,7 @@ def on_auth_action(action: str) -> None:
logging.info(action)

if action == "always":
device = Device(obj_path=n._device)
device.set("Trusted", True)
Device(obj_path=device).set("Trusted", True)
if action == "always" or action == "accept":
ok()
else:
Expand All @@ -313,4 +312,3 @@ def on_auth_action(action: str) -> None:

n = Notification(_("Bluetooth Authentication"), notify_message, 0, actions, on_auth_action, icon_name="blueman")
n.show()
n._device = device
4 changes: 2 additions & 2 deletions blueman/plugins/applet/KillSwitch.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from gettext import gettext as _
import os
from typing import Dict, Callable, Any
from typing import Dict, Callable, Any, Optional

from gi.repository import GLib, Gio
import struct
Expand Down Expand Up @@ -54,7 +54,7 @@ class KillSwitch(AppletPlugin, PowerStateHandler, StatusIconVisibilityHandler):
_hardblocked = False

def on_load(self) -> None:
self._connman_proxy = None
self._connman_proxy: Optional[Gio.DBusProxy] = None
self._connman_watch_id = Gio.bus_watch_name(Gio.BusType.SYSTEM, "net.connman", Gio.BusNameWatcherFlags.NONE,
self._on_connman_appeared, self._on_connman_vanished)

Expand Down
4 changes: 2 additions & 2 deletions blueman/plugins/applet/TransferService.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def _unregister_agent(self) -> None:
self._agent.unregister()
self._agent = None

def _on_dbus_name_appeared(self, _connection: Manager, name: str, owner: str) -> None:
def _on_dbus_name_appeared(self, _connection: Gio.DBusConnection, name: str, owner: str) -> None:
logging.info(f"{name} {owner}")

self._manager = Manager()
Expand All @@ -240,7 +240,7 @@ def _on_dbus_name_appeared(self, _connection: Manager, name: str, owner: str) ->

self._register_agent()

def _on_dbus_name_vanished(self, _connection: Manager, name: str) -> None:
def _on_dbus_name_vanished(self, _connection: Gio.DBusConnection, name: str) -> None:
logging.info(f"{name} not running or was stopped")

if self._manager:
Expand Down
4 changes: 3 additions & 1 deletion blueman/services/meta/SerialService.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ def on_file_changed(
else:
logging.warning(f"No handler id for {port}")
elif event_type == Gio.FileMonitorEvent.ATTRIBUTE_CHANGED:
self.try_replace_root_watcher(monitor, file.get_path(), port)
path = file.get_path()
assert path is not None
self.try_replace_root_watcher(monitor, path, port)

def try_replace_root_watcher(self, monitor: Gio.FileMonitor, path: str, port: int) -> None:
if not os.access(path, os.R_OK | os.W_OK):
Expand Down