URI: 
       tkeystore: 'get_tx_derivations' no longer public - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 07f5d6b74580d05a0e764de6898c1c397edcd7be
   DIR parent beee880dbaaac7680c923e823b238b2fd78bf1ce
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Wed, 12 Feb 2020 16:41:58 +0100
       
       keystore: 'get_tx_derivations' no longer public
       
       Diffstat:
         M electrum/keystore.py                |      15 +++++++++------
         M electrum/plugins/trustedcoin/cmdli… |       2 +-
         M electrum/plugins/trustedcoin/qt.py  |       2 +-
         M electrum/plugins/trustedcoin/trust… |       2 +-
       
       4 files changed, 12 insertions(+), 9 deletions(-)
       ---
   DIR diff --git a/electrum/keystore.py b/electrum/keystore.py
       t@@ -33,6 +33,7 @@ from abc import ABC, abstractmethod
        
        from . import bitcoin, ecc, constants, bip32
        from .bitcoin import deserialize_privkey, serialize_privkey
       +from .transaction import Transaction, PartialTransaction, PartialTxInput, PartialTxOutput
        from .bip32 import (convert_bip32_path_to_list_of_uint32, BIP32_PRIME,
                            is_xpub, is_xprv, BIP32Node, normalize_bip32_derivation,
                            convert_bip32_intpath_to_strpath)
       t@@ -47,7 +48,6 @@ from .logging import Logger
        
        if TYPE_CHECKING:
            from .gui.qt.util import TaskThread
       -    from .transaction import Transaction, PartialTransaction, PartialTxInput, PartialTxOutput
            from .plugins.hw_wallet import HW_PluginBase, HardwareClientBase
        
        
       t@@ -75,7 +75,7 @@ class KeyStore(Logger, ABC):
                """Returns whether the keystore can be encrypted with a password."""
                pass
        
       -    def get_tx_derivations(self, tx: 'PartialTransaction') -> Dict[str, Union[Sequence[int], str]]:
       +    def _get_tx_derivations(self, tx: 'PartialTransaction') -> Dict[str, Union[Sequence[int], str]]:
                keypairs = {}
                for txin in tx.inputs():
                    if txin.is_complete():
       t@@ -90,10 +90,13 @@ class KeyStore(Logger, ABC):
                        keypairs[pubkey.hex()] = derivation
                return keypairs
        
       -    def can_sign(self, tx) -> bool:
       -        if self.is_watching_only():
       +    def can_sign(self, tx: 'Transaction', *, ignore_watching_only=False) -> bool:
       +        """Returns whether this keystore could sign *something* in this tx."""
       +        if not ignore_watching_only and self.is_watching_only():
       +            return False
       +        if not isinstance(tx, PartialTransaction):
                    return False
       -        return bool(self.get_tx_derivations(tx))
       +        return bool(self._get_tx_derivations(tx))
        
            def ready_to_sign(self) -> bool:
                return not self.is_watching_only()
       t@@ -169,7 +172,7 @@ class Software_KeyStore(KeyStore):
                # Raise if password is not correct.
                self.check_password(password)
                # Add private keys
       -        keypairs = self.get_tx_derivations(tx)
       +        keypairs = self._get_tx_derivations(tx)
                for k, v in keypairs.items():
                    keypairs[k] = self.get_private_key(v, password)
                # Sign
   DIR diff --git a/electrum/plugins/trustedcoin/cmdline.py b/electrum/plugins/trustedcoin/cmdline.py
       t@@ -36,7 +36,7 @@ class Plugin(TrustedCoinPlugin):
                if not wallet.can_sign_without_server():
                    self.logger.info("twofactor:sign_tx")
                    auth_code = None
       -            if wallet.keystores['x3/'].get_tx_derivations(tx):
       +            if wallet.keystores['x3/'].can_sign(tx, ignore_watching_only=True):
                        msg = _('Please enter your Google Authenticator code:')
                        auth_code = int(input(msg))
                    else:
   DIR diff --git a/electrum/plugins/trustedcoin/qt.py b/electrum/plugins/trustedcoin/qt.py
       t@@ -66,7 +66,7 @@ class HandlerTwoFactor(QObject, Logger):
                    return
                if wallet.can_sign_without_server():
                    return
       -        if not wallet.keystores['x3/'].get_tx_derivations(tx):
       +        if not wallet.keystores['x3/'].can_sign(tx, ignore_watching_only=True):
                    self.logger.info("twofactor: xpub3 not needed")
                    return
                window = self.window.top_level_window()
   DIR diff --git a/electrum/plugins/trustedcoin/trustedcoin.py b/electrum/plugins/trustedcoin/trustedcoin.py
       t@@ -458,7 +458,7 @@ class TrustedCoinPlugin(BasePlugin):
                    return
                if wallet.can_sign_without_server():
                    return
       -        if not wallet.keystores['x3/'].get_tx_derivations(tx):
       +        if not wallet.keystores['x3/'].can_sign(tx, ignore_watching_only=True):
                    self.logger.info("twofactor: xpub3 not needed")
                    return
                def wrapper(tx):