Browse Source

pyln: Check to see if we have annotations on funcs before accessing

We were indiscriminately accessing the `__annotations__` which could cause
issues if the function had been wrapped by some functions such as
`functools.partial`. This just checks that the access is safe before doing it.

Suggested-by: jarret <@jarret>
Signed-off-by: Christian Decker <@cdecker>
travis-debug
Christian Decker 5 years ago
parent
commit
de619b1754
  1. 5
      contrib/pyln-client/pyln/client/plugin.py

5
contrib/pyln-client/pyln/client/plugin.py

@ -317,9 +317,10 @@ class Plugin(object):
@staticmethod
def _coerce_arguments(func, ba):
args = OrderedDict()
annotations = func.__annotations__ if hasattr(func, "__annotations__") else {}
for key, val in ba.arguments.items():
annotation = func.__annotations__.get(key)
if annotation == Millisatoshi:
annotation = annotations.get(key, None)
if annotation is not None and annotation == Millisatoshi:
args[key] = Millisatoshi(val)
else:
args[key] = val

Loading…
Cancel
Save