Skip to content

Commit cad4dc7

Browse files
committed
Support older NetworkManager versions again
1 parent 5d1afe7 commit cad4dc7

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

NetworkManager.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,16 @@ def add_signal_receiver(self, interface, signal, obj, func, args, kwargs):
5353
def handle_signal(self, *args, **kwargs):
5454
key = (kwargs['interface'], kwargs['signal'])
5555
skwargs = {}
56+
sargs = []
5657
if key not in self.handlers:
5758
return
5859
sender = fixups.base_to_python(kwargs['path'])
5960
for arg, (name, signature) in zip(args, self.args[key]):
60-
skwargs[name] = fixups.to_python(type(sender).__name__, kwargs['signal'], name, arg, signature)
61+
if name:
62+
skwargs[name] = fixups.to_python(type(sender).__name__, kwargs['signal'], name, arg, signature)
63+
else:
64+
# Older NetworkManager versions don't supply attribute names. Hope for the best.
65+
sargs.append(fixups.to_python(type(sender).__name__, kwargs['signal'], None, arg, signature))
6166
to_delete = []
6267
for pos, (match, receiver, rargs, rkwargs) in enumerate(self.handlers[key]):
6368
try:
@@ -69,7 +74,7 @@ def handle_signal(self, *args, **kwargs):
6974
rkwargs['interface'] = kwargs['interface']
7075
rkwargs['signal'] = kwargs['signal']
7176
rkwargs.update(skwargs)
72-
receiver(sender, *rargs, **rkwargs)
77+
receiver(sender, *(sargs + rargs), **rkwargs)
7378
for pos in reversed(to_delete):
7479
self.handlers[key].pop(pos)
7580

@@ -139,7 +144,7 @@ def __new__(type_, name, bases, attrs):
139144
aname = '_' + aname
140145
attrs[aname] = type_.make_method(name, element.attrib['name'], item.attrib, list(item))
141146
elif item.tag == 'signal':
142-
SignalDispatcher.args[(element.attrib['name'], item.attrib['name'])] = [(arg.attrib['name'], arg.attrib['type']) for arg in item]
147+
SignalDispatcher.args[(element.attrib['name'], item.attrib['name'])] = [(arg.attrib.get('name',None), arg.attrib['type']) for arg in item]
143148
attrs['On' + item.attrib['name']] = type_.make_signal(name, element.attrib['name'], item.attrib)
144149
attrs['signals'].append(item.attrib['name'])
145150

@@ -229,7 +234,7 @@ def __new__(klass, object_path=None):
229234
aname = '_' + aname
230235
setattr(klass, aname, type(klass).make_method(klass.__name__, element.attrib['name'], item.attrib, list(item)))
231236
elif item.tag == 'signal':
232-
SignalDispatcher.args[(element.attrib['name'], item.attrib['name'])] = [(arg.attrib['name'], arg.attrib['type']) for arg in item]
237+
SignalDispatcher.args[(element.attrib['name'], item.attrib['name'])] = [(arg.attrib.get('name',None), arg.attrib['type']) for arg in item]
233238
setattr(klass, 'On' + item.attrib['name'], type(klass).make_signal(klass.__name__, element.attrib['name'], item.attrib))
234239
klass.signals.append(item.attrib['name'])
235240

0 commit comments

Comments
 (0)