|
26 | 26 | JSONRPCException, |
27 | 27 | serialization_fallback, |
28 | 28 | ) |
29 | | -from .descriptors import descsum_create |
30 | 29 | from .messages import NODE_P2P_V2 |
31 | 30 | from .p2p import P2P_SERVICES, P2P_SUBVERSION |
32 | 31 | from .util import ( |
@@ -208,10 +207,10 @@ def __del__(self): |
208 | 207 | def __getattr__(self, name): |
209 | 208 | """Dispatches any unrecognised messages to the RPC connection or a CLI instance.""" |
210 | 209 | if self.use_cli: |
211 | | - return getattr(RPCOverloadWrapper(self.cli), name) |
| 210 | + return getattr(self.cli, name) |
212 | 211 | else: |
213 | 212 | assert self.rpc_connected and self.rpc is not None, self._node_msg("Error: no RPC connection") |
214 | | - return getattr(RPCOverloadWrapper(self.rpc), name) |
| 213 | + return getattr(self.rpc, name) |
215 | 214 |
|
216 | 215 | def start(self, extra_args=None, *, cwd=None, stdout=None, stderr=None, env=None, **kwargs): |
217 | 216 | """Start the node.""" |
@@ -388,11 +387,11 @@ def setmocktime(self, timestamp): |
388 | 387 |
|
389 | 388 | def get_wallet_rpc(self, wallet_name): |
390 | 389 | if self.use_cli: |
391 | | - return RPCOverloadWrapper(self.cli("-rpcwallet={}".format(wallet_name))) |
| 390 | + return self.cli("-rpcwallet={}".format(wallet_name)) |
392 | 391 | else: |
393 | 392 | assert self.rpc_connected and self.rpc, self._node_msg("RPC not connected") |
394 | 393 | wallet_path = "wallet/{}".format(urllib.parse.quote(wallet_name)) |
395 | | - return RPCOverloadWrapper(self.rpc / wallet_path) |
| 394 | + return self.rpc / wallet_path |
396 | 395 |
|
397 | 396 | def version_is_at_least(self, ver): |
398 | 397 | return self.version is None or self.version >= ver |
@@ -937,80 +936,3 @@ def send_cli(self, clicommand=None, *args, **kwargs): |
937 | 936 | return json.loads(cli_stdout, parse_float=decimal.Decimal) |
938 | 937 | except (json.JSONDecodeError, decimal.InvalidOperation): |
939 | 938 | return cli_stdout.rstrip("\n") |
940 | | - |
941 | | -class RPCOverloadWrapper(): |
942 | | - def __init__(self, rpc): |
943 | | - self.rpc = rpc |
944 | | - |
945 | | - def __getattr__(self, name): |
946 | | - return getattr(self.rpc, name) |
947 | | - |
948 | | - def importprivkey(self, privkey, *, label=None, rescan=None): |
949 | | - wallet_info = self.getwalletinfo() |
950 | | - if 'descriptors' not in wallet_info or ('descriptors' in wallet_info and not wallet_info['descriptors']): |
951 | | - return self.__getattr__('importprivkey')(privkey, label, rescan) |
952 | | - desc = descsum_create('combo(' + privkey + ')') |
953 | | - req = [{ |
954 | | - 'desc': desc, |
955 | | - 'timestamp': 0 if rescan else 'now', |
956 | | - 'label': label if label else '', |
957 | | - }] |
958 | | - import_res = self.importdescriptors(req) |
959 | | - if not import_res[0]['success']: |
960 | | - raise JSONRPCException(import_res[0]['error']) |
961 | | - |
962 | | - def addmultisigaddress(self, nrequired, keys, *, label=None, address_type=None): |
963 | | - wallet_info = self.getwalletinfo() |
964 | | - if 'descriptors' not in wallet_info or ('descriptors' in wallet_info and not wallet_info['descriptors']): |
965 | | - return self.__getattr__('addmultisigaddress')(nrequired, keys, label, address_type) |
966 | | - cms = self.createmultisig(nrequired, keys, address_type) |
967 | | - req = [{ |
968 | | - 'desc': cms['descriptor'], |
969 | | - 'timestamp': 0, |
970 | | - 'label': label if label else '', |
971 | | - }] |
972 | | - import_res = self.importdescriptors(req) |
973 | | - if not import_res[0]['success']: |
974 | | - raise JSONRPCException(import_res[0]['error']) |
975 | | - return cms |
976 | | - |
977 | | - def importpubkey(self, pubkey, *, label=None, rescan=None): |
978 | | - wallet_info = self.getwalletinfo() |
979 | | - if 'descriptors' not in wallet_info or ('descriptors' in wallet_info and not wallet_info['descriptors']): |
980 | | - return self.__getattr__('importpubkey')(pubkey, label, rescan) |
981 | | - desc = descsum_create('combo(' + pubkey + ')') |
982 | | - req = [{ |
983 | | - 'desc': desc, |
984 | | - 'timestamp': 0 if rescan else 'now', |
985 | | - 'label': label if label else '', |
986 | | - }] |
987 | | - import_res = self.importdescriptors(req) |
988 | | - if not import_res[0]['success']: |
989 | | - raise JSONRPCException(import_res[0]['error']) |
990 | | - |
991 | | - def importaddress(self, address, *, label=None, rescan=None, p2sh=None): |
992 | | - wallet_info = self.getwalletinfo() |
993 | | - if 'descriptors' not in wallet_info or ('descriptors' in wallet_info and not wallet_info['descriptors']): |
994 | | - return self.__getattr__('importaddress')(address, label, rescan, p2sh) |
995 | | - is_hex = False |
996 | | - try: |
997 | | - int(address ,16) |
998 | | - is_hex = True |
999 | | - desc = descsum_create('raw(' + address + ')') |
1000 | | - except Exception: |
1001 | | - desc = descsum_create('addr(' + address + ')') |
1002 | | - reqs = [{ |
1003 | | - 'desc': desc, |
1004 | | - 'timestamp': 0 if rescan else 'now', |
1005 | | - 'label': label if label else '', |
1006 | | - }] |
1007 | | - if is_hex and p2sh: |
1008 | | - reqs.append({ |
1009 | | - 'desc': descsum_create('p2sh(raw(' + address + '))'), |
1010 | | - 'timestamp': 0 if rescan else 'now', |
1011 | | - 'label': label if label else '', |
1012 | | - }) |
1013 | | - import_res = self.importdescriptors(reqs) |
1014 | | - for res in import_res: |
1015 | | - if not res['success']: |
1016 | | - raise JSONRPCException(res['error']) |
0 commit comments