URI: 
       tMake class methods static on Wallet - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit e6dbe621c6976d4a57d3d16308d9ee8759af9ea2
   DIR parent 441b695815f2a3171141e2803ba21102706364fa
  HTML Author: Neil Booth <kyuupichan@gmail.com>
       Date:   Thu, 31 Dec 2015 16:05:05 +0900
       
       Make class methods static on Wallet
       
       Diffstat:
         M lib/wallet.py                       |     140 +++++++++++++++----------------
       
       1 file changed, 68 insertions(+), 72 deletions(-)
       ---
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -1945,19 +1945,12 @@ class Wallet(object):
        
                return wallet
        
       -    @classmethod
       -    def is_seed(self, seed):
       -        if not seed:
       -            return False
       -        elif is_old_seed(seed):
       -            return True
       -        elif is_new_seed(seed):
       -            return True
       -        else:
       -            return False
       +    @staticmethod
       +    def is_seed(seed):
       +        return is_old_seed(seed) or is_new_seed(seed)
        
       -    @classmethod
       -    def is_old_mpk(self, mpk):
       +    @staticmethod
       +    def is_old_mpk(mpk):
                try:
                    int(mpk, 16)
                    assert len(mpk) == 128
       t@@ -1965,8 +1958,8 @@ class Wallet(object):
                except:
                    return False
        
       -    @classmethod
       -    def is_xpub(self, text):
       +    @staticmethod
       +    def is_xpub(text):
                try:
                    assert text[0:4] == 'xpub'
                    deserialize_xkey(text)
       t@@ -1974,8 +1967,8 @@ class Wallet(object):
                except:
                    return False
        
       -    @classmethod
       -    def is_xprv(self, text):
       +    @staticmethod
       +    def is_xprv(text):
                try:
                    assert text[0:4] == 'xprv'
                    deserialize_xkey(text)
       t@@ -1983,26 +1976,29 @@ class Wallet(object):
                except:
                    return False
        
       -    @classmethod
       -    def is_address(self, text):
       -        if not text:
       -            return False
       -        for x in text.split():
       -            if not bitcoin.is_address(x):
       -                return False
       -        return True
       -
       -    @classmethod
       -    def is_private_key(self, text):
       -        if not text:
       -            return False
       -        for x in text.split():
       -            if not bitcoin.is_private_key(x):
       -                return False
       -        return True
       -
       -    @classmethod
       -    def from_seed(self, seed, password, storage):
       +    @staticmethod
       +    def is_address(text):
       +        parts = text.split()
       +        return bool(parts) and all(bitcoin.is_address(x) for x in parts)
       +
       +    @staticmethod
       +    def is_private_key(text):
       +        parts = text.split()
       +        return bool(parts) and all(bitcoin.is_private_key(x) for x in parts)
       +
       +    @staticmethod
       +    def is_any(text):
       +        return (Wallet.is_seed(text) or Wallet.is_old_mpk(text)
       +                or Wallet.is_xprv(text) or Wallet.is_xpub(text)
       +                or Wallet.is_address(text) or Wallet.is_private_key(text))
       +
       +    @staticmethod
       +    def should_encrypt(text):
       +        return (Wallet.is_seed(text) or Wallet.is_xprv(text)
       +                or Wallet.is_private_key(text))
       +
       +    @staticmethod
       +    def from_seed(seed, password, storage):
                if is_old_seed(seed):
                    klass = OldWallet
                elif is_new_seed(seed):
       t@@ -2013,80 +2009,80 @@ class Wallet(object):
                w.create_main_account(password)
                return w
        
       -    @classmethod
       -    def from_address(self, text, storage):
       +    @staticmethod
       +    def from_address(text, storage):
                w = Imported_Wallet(storage)
                for x in text.split():
                    w.accounts[IMPORTED_ACCOUNT].add(x, None, None, None)
                w.save_accounts()
                return w
        
       -    @classmethod
       -    def from_private_key(self, text, password, storage):
       +    @staticmethod
       +    def from_private_key(text, password, storage):
                w = Imported_Wallet(storage)
                w.update_password(None, password)
                for x in text.split():
                    w.import_key(x, password)
                return w
        
       -    @classmethod
       -    def from_old_mpk(self, mpk, storage):
       +    @staticmethod
       +    def from_old_mpk(mpk, storage):
                w = OldWallet(storage)
                w.seed = ''
                w.create_watching_only_wallet(mpk)
                return w
        
       -    @classmethod
       -    def from_xpub(self, xpub, storage):
       +    @staticmethod
       +    def from_xpub(xpub, storage):
                w = BIP32_Simple_Wallet(storage)
                w.create_xpub_wallet(xpub)
                return w
        
       -    @classmethod
       -    def from_xprv(self, xprv, password, storage):
       +    @staticmethod
       +    def from_xprv(xprv, password, storage):
                w = BIP32_Simple_Wallet(storage)
                w.create_xprv_wallet(xprv, password)
                return w
        
       -    @classmethod
       -    def from_multisig(klass, key_list, password, storage, wallet_type):
       +    @staticmethod
       +    def from_multisig(key_list, password, storage, wallet_type):
                storage.put('wallet_type', wallet_type)
       -        self = Multisig_Wallet(storage)
       -        key_list = sorted(key_list, key = lambda x: klass.is_xpub(x))
       +        wallet = Multisig_Wallet(storage)
       +        key_list = sorted(key_list, key = lambda x: Wallet.is_xpub(x))
                for i, text in enumerate(key_list):
       -            assert klass.is_seed(text) or klass.is_xprv(text) or klass.is_xpub(text)
       +            assert Wallet.is_seed(text) or Wallet.is_xprv(text) or Wallet.is_xpub(text)
                    name = "x%d/"%(i+1)
       -            if klass.is_xprv(text):
       +            if Wallet.is_xprv(text):
                        xpub = bitcoin.xpub_from_xprv(text)
       -                self.add_master_public_key(name, xpub)
       -                self.add_master_private_key(name, text, password)
       -            elif klass.is_xpub(text):
       -                self.add_master_public_key(name, text)
       -            elif klass.is_seed(text):
       +                wallet.add_master_public_key(name, xpub)
       +                wallet.add_master_private_key(name, text, password)
       +            elif Wallet.is_xpub(text):
       +                wallet.add_master_public_key(name, text)
       +            elif Wallet.is_seed(text):
                        if name == 'x1/':
       -                    self.add_seed(text, password)
       -                    self.create_master_keys(password)
       +                    wallet.add_seed(text, password)
       +                    wallet.create_master_keys(password)
                        else:
       -                    self.add_cosigner_seed(text, name, password)
       -        self.use_encryption = (password != None)
       -        self.storage.put('use_encryption', self.use_encryption)
       -        self.create_main_account(password)
       -        return self
       +                    wallet.add_cosigner_seed(text, name, password)
       +        wallet.use_encryption = (password != None)
       +        wallet.storage.put('use_encryption', wallet.use_encryption)
       +        wallet.create_main_account(password)
       +        return wallet
        
       -    @classmethod
       -    def from_text(klass, text, password, storage):
       +    @staticmethod
       +    def from_text(text, password, storage):
                if Wallet.is_xprv(text):
       -            wallet = klass.from_xprv(text, password, storage)
       +            wallet = Wallet.from_xprv(text, password, storage)
                elif Wallet.is_old_mpk(text):
       -            wallet = klass.from_old_mpk(text, storage)
       +            wallet = Wallet.from_old_mpk(text, storage)
                elif Wallet.is_xpub(text):
       -            wallet = klass.from_xpub(text, storage)
       +            wallet = Wallet.from_xpub(text, storage)
                elif Wallet.is_address(text):
       -            wallet = klass.from_address(text, storage)
       +            wallet = Wallet.from_address(text, storage)
                elif Wallet.is_private_key(text):
       -            wallet = klass.from_private_key(text, password, storage)
       +            wallet = Wallet.from_private_key(text, password, storage)
                elif Wallet.is_seed(text):
       -            wallet = klass.from_seed(text, password, storage)
       +            wallet = Wallet.from_seed(text, password, storage)
                else:
                    raise BaseException('Invalid seedphrase or key')
                return wallet