Browse Source

pylightning: Allow both kwargs as well as positional args

We don't allow a mix (just like JSON-RPC), but we can use either or
now.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
plugin-6
Christian Decker 6 years ago
parent
commit
a50529bcb0
  1. 1
      CHANGELOG.md
  2. 12
      contrib/pylightning/lightning/lightning.py

1
CHANGELOG.md

@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Changed
- JSON API: `pay` and `decodepay` accept and ignore `lightning:` prefixes.
- pylightning: Allow either keyword arguments or positional arguments.
### Deprecated

12
contrib/pylightning/lightning/lightning.py

@ -48,8 +48,13 @@ class UnixDomainSocketRpc(object):
"""
name = name.replace('_', '-')
def wrapper(**kwargs):
return self.call(name, payload=kwargs)
def wrapper(*args, **kwargs):
if len(args) != 0 and len(kwargs) != 0:
raise RpcError("Cannot mix positional and non-positional arguments")
elif len(args) != 0:
return self.call(name, payload=args)
else:
return self.call(name, payload=kwargs)
return wrapper
def call(self, method, payload=None):
@ -58,7 +63,8 @@ class UnixDomainSocketRpc(object):
if payload is None:
payload = {}
# Filter out arguments that are None
payload = {k: v for k, v in payload.items() if v is not None}
if isinstance(payload, dict):
payload = {k: v for k, v in payload.items() if v is not None}
# FIXME: we open a new socket for every readobj call...
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)

Loading…
Cancel
Save