diff --git a/contrib/pyln-client/pyln/client/plugin.py b/contrib/pyln-client/pyln/client/plugin.py index 20f0c76a1..f17a989c9 100644 --- a/contrib/pyln-client/pyln/client/plugin.py +++ b/contrib/pyln-client/pyln/client/plugin.py @@ -33,7 +33,7 @@ class Method(object): - HOOK registered to be called synchronously by lightningd """ def __init__(self, name, func, mtype=MethodType.RPCMETHOD, category=None, - desc=None, long_desc=None): + desc=None, long_desc=None, deprecated=False): self.name = name self.func = func self.mtype = mtype @@ -41,6 +41,7 @@ class Method(object): self.background = False self.desc = desc self.long_desc = long_desc + self.deprecated = deprecated class Request(dict): @@ -161,7 +162,7 @@ class Plugin(object): self.write_lock = RLock() def add_method(self, name, func, background=False, category=None, desc=None, - long_desc=None): + long_desc=None, deprecated=False): """Add a plugin method to the dispatch table. The function will be expected at call time (see `_dispatch`) @@ -191,6 +192,8 @@ class Plugin(object): The `category` argument can be used to specify the category of the newly created rpc command. + `deprecated` means that it won't appear unless `allow-deprecated-apis` + is true (the default). """ if name in self.methods: raise ValueError( @@ -198,7 +201,7 @@ class Plugin(object): ) # Register the function with the name - method = Method(name, func, MethodType.RPCMETHOD, category, desc, long_desc) + method = Method(name, func, MethodType.RPCMETHOD, category, desc, long_desc, deprecated) method.background = background self.methods[name] = method @@ -242,7 +245,8 @@ class Plugin(object): return f return decorator - def add_option(self, name, default, description, opt_type="string"): + def add_option(self, name, default, description, opt_type="string", + deprecated=False): """Add an option that we'd like to register with lightningd. Needs to be called before `Plugin.run`, otherwise we might not @@ -263,16 +267,18 @@ class Plugin(object): 'description': description, 'type': opt_type, 'value': None, + 'deprecated': deprecated, } - def add_flag_option(self, name, description): + def add_flag_option(self, name, description, deprecated=False): """Add a flag option that we'd like to register with lightningd. Needs to be called before `Plugin.run`, otherwise we might not end up getting it set. """ - self.add_option(name, None, description, opt_type="flag") + self.add_option(name, None, description, opt_type="flag", + deprecated=deprecated) def get_option(self, name): if name not in self.options: @@ -283,25 +289,27 @@ class Plugin(object): else: return self.options[name]['default'] - def async_method(self, method_name, category=None, desc=None, long_desc=None): + def async_method(self, method_name, category=None, desc=None, long_desc=None, deprecated=False): """Decorator to add an async plugin method to the dispatch table. Internally uses add_method. """ def decorator(f): self.add_method(method_name, f, background=True, category=category, - desc=desc, long_desc=long_desc) + desc=desc, long_desc=long_desc, + deprecated=deprecated) return f return decorator - def method(self, method_name, category=None, desc=None, long_desc=None): + def method(self, method_name, category=None, desc=None, long_desc=None, deprecated=False): """Decorator to add a plugin method to the dispatch table. Internally uses add_method. """ def decorator(f): self.add_method(method_name, f, background=False, category=category, - desc=desc, long_desc=long_desc) + desc=desc, long_desc=long_desc, + deprecated=deprecated) return f return decorator