URI: 
       tMerge pull request #386 from WyseNynja/dont_use_base_exception - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9056865bdec2cdc3cf2a636da5a3f85117135a25
   DIR parent a7369a2bfd1f2a91fa41de486f8c08a93aa0d4ca
  HTML Author: ThomasV <thomasv1@gmx.de>
       Date:   Sun, 10 Nov 2013 02:39:01 -0800
       
       Merge pull request #386 from WyseNynja/dont_use_base_exception
       
       replace BaseException with Exception
       Diffstat:
         M electrum                            |       2 +-
         M gui/android.py                      |       2 +-
         M gui/gtk.py                          |       2 +-
         M gui/qt/lite_window.py               |       4 ++--
         M gui/qt/main_window.py               |      12 ++++++------
         M gui/stdio.py                        |       2 +-
         M gui/text.py                         |       2 +-
         M lib/account.py                      |       2 +-
         M lib/bitcoin.py                      |      18 +++++++++---------
         M lib/blockchain.py                   |       8 ++++----
         M lib/commands.py                     |      12 ++++++------
         M lib/interface.py                    |      20 ++++++++++----------
         M lib/network.py                      |       2 +-
         M lib/plugins.py                      |       4 ++--
         M lib/simple_config.py                |       4 ++--
         M lib/transaction.py                  |       2 +-
         M lib/util.py                         |       2 +-
         M lib/wallet.py                       |      36 ++++++++++++++++----------------
         M plugins/aliases.py                  |       2 +-
         M plugins/qrscanner.py                |       8 ++++----
       
       20 files changed, 73 insertions(+), 73 deletions(-)
       ---
   DIR diff --git a/electrum b/electrum
       t@@ -103,7 +103,7 @@ def run_command(cmd, password = None, args = []):
            cmd_runner.password = password
            try:
                result = func(*args[1:])
       -    except BaseException, e:
       +    except Exception as e:
                import traceback
                traceback.print_exc(file=sys.stdout)
                sys.exit(1)
   DIR diff --git a/gui/android.py b/gui/android.py
       t@@ -458,7 +458,7 @@ def pay_to(recipient, amount, fee, label):
        
            try:
                tx = wallet.mktx( [(recipient, amount)], password, fee)
       -    except BaseException, e:
       +    except Exception as e:
                modal_dialog('error', e.message)
                droid.dialogDismiss()
                return
   DIR diff --git a/gui/gtk.py b/gui/gtk.py
       t@@ -807,7 +807,7 @@ class ElectrumWindow:
        
                try:
                    tx = self.wallet.mktx( [(to_address, amount)], password, fee )
       -        except BaseException, e:
       +        except Exception as e:
                    self.show_message(str(e))
                    return
        
   DIR diff --git a/gui/qt/lite_window.py b/gui/qt/lite_window.py
       t@@ -750,7 +750,7 @@ class MiniActuator:
        
                try:
                    tx = self.g.wallet.mktx([(dest_address, amount)], password, fee)
       -        except BaseException as error:
       +        except Exception as error:
                    QMessageBox.warning(parent_window, _('Error'), str(error), _('OK'))
                    return False
        
       t@@ -778,7 +778,7 @@ class MiniActuator:
                        with open(fileName,'w') as f:
                            f.write(json.dumps(tx.as_dict(),indent=4) + '\n')
                        QMessageBox.information(QWidget(), _('Unsigned transaction created'), _("Unsigned transaction was saved to file:") + " " +fileName, _('OK'))
       -            except BaseException as e:
       +            except Exception as e:
                        QMessageBox.warning(QWidget(), _('Error'), _('Could not write transaction to file: %s' % e), _('OK'))
                return True
        
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -889,7 +889,7 @@ class ElectrumWindow(QMainWindow):
        
                try:
                    tx = self.wallet.mktx_from_account( [(to_address, amount)], password, fee, self.current_account)
       -        except BaseException, e:
       +        except Exception as e:
                    traceback.print_exc(file=sys.stdout)
                    self.show_message(str(e))
                    return
       t@@ -1635,7 +1635,7 @@ class ElectrumWindow(QMainWindow):
                if not address: return
                try:
                    pk_list = self.wallet.get_private_key(address, password)
       -        except BaseException, e:
       +        except Exception as e:
                    self.show_message(str(e))
                    return
                QMessageBox.information(self, _('Private key'), _('Address')+ ': ' + address + '\n\n' + _('Private key') + ': ' + '\n'.join(pk_list), _('OK'))
       t@@ -1648,7 +1648,7 @@ class ElectrumWindow(QMainWindow):
                try:
                    sig = self.wallet.sign_message(str(address.text()), message, password)
                    signature.setText(sig)
       -        except BaseException, e:
       +        except Exception as e:
                    self.show_message(str(e))
        
            def sign_message(self, address):
       t@@ -1840,7 +1840,7 @@ class ElectrumWindow(QMainWindow):
        
                try:
                    tx = self.wallet.make_unsigned_transaction(outputs, None, None)
       -        except BaseException, e:
       +        except Exception as e:
                    self.show_message(str(e))
                    return
        
       t@@ -1893,7 +1893,7 @@ class ElectrumWindow(QMainWindow):
                    export_error_label = _("Electrum was unable to produce a private key-export.")
                    QMessageBox.critical(None, _("Unable to create csv"), export_error_label + "\n" + str(reason))
        
       -        except BaseException, e:
       +        except Exception as e:
                  self.show_message(str(e))
                  return
        
       t@@ -1946,7 +1946,7 @@ class ElectrumWindow(QMainWindow):
                for key in text:
                    try:
                        addr = self.wallet.import_key(key, password)
       -            except BaseException as e:
       +            except Exception as e:
                        badkeys.append(key)
                        continue
                    if not addr: 
   DIR diff --git a/gui/stdio.py b/gui/stdio.py
       t@@ -198,7 +198,7 @@ class ElectrumGui:
        
                try:
                    tx = self.wallet.mktx( [(self.str_recipient, amount)], password, fee)
       -        except BaseException, e:
       +        except Exception as e:
                    print(str(e))
                    return
                    
   DIR diff --git a/gui/text.py b/gui/text.py
       t@@ -309,7 +309,7 @@ class ElectrumGui:
        
                try:
                    tx = self.wallet.mktx( [(self.str_recipient, amount)], password, fee)
       -        except BaseException, e:
       +        except Exception as e:
                    self.show_message(str(e))
                    return
                    
   DIR diff --git a/lib/account.py b/lib/account.py
       t@@ -109,7 +109,7 @@ class OldAccount(Account):
                master_public_key = master_private_key.get_verifying_key().to_string()
                if master_public_key != self.mpk:
                    print_error('invalid password (mpk)')
       -            raise BaseException('Invalid password')
       +            raise Exception('Invalid password')
                return True
        
            def redeem_script(self, sequence):
   DIR diff --git a/lib/bitcoin.py b/lib/bitcoin.py
       t@@ -115,7 +115,7 @@ def hash_160(public_key):
                md = hashlib.new('ripemd160')
                md.update(hashlib.sha256(public_key).digest())
                return md.digest()
       -    except:
       +    except Exception:
                import ripemd
                md = ripemd.new(hashlib.sha256(public_key).digest())
                return md.digest()
       t@@ -268,7 +268,7 @@ def is_valid(addr):
            if not ADDRESS_RE.match(addr): return False
            try:
                addrtype, h = bc_address_to_hash_160(addr)
       -    except:
       +    except Exception:
                return False
            return addr == hash_160_to_bc_address(h, addrtype)
        
       t@@ -277,7 +277,7 @@ def is_valid(addr):
        
        try:
            from ecdsa.ecdsa import curve_secp256k1, generator_secp256k1
       -except:
       +except Exception:
            print "cannot import ecdsa.curve_secp256k1. You probably need to upgrade ecdsa.\nTry: sudo pip install --upgrade ecdsa"
            exit()
        from ecdsa.curves import SECP256k1
       t@@ -294,7 +294,7 @@ def verify_message(address, signature, message):
            try:
                EC_KEY.verify_message(address, signature, message)
                return True
       -    except BaseException as e:
       +    except Exception as e:
                print_error("Verification error: {0}".format(e))
                return False
        
       t@@ -316,10 +316,10 @@ class EC_KEY(object):
                    try:
                        self.verify_message( address, sig, message)
                        return sig
       -            except:
       +            except Exception:
                        continue
                else:
       -            raise BaseException("error: cannot sign message")
       +            raise Exception("error: cannot sign message")
        
            @classmethod
            def verify_message(self, address, signature, message):
       t@@ -331,11 +331,11 @@ class EC_KEY(object):
                order = G.order()
                # extract r,s from signature
                sig = base64.b64decode(signature)
       -        if len(sig) != 65: raise BaseException("Wrong encoding")
       +        if len(sig) != 65: raise Exception("Wrong encoding")
                r,s = util.sigdecode_string(sig[1:], order)
                nV = ord(sig[0])
                if nV < 27 or nV >= 35:
       -            raise BaseException("Bad encoding")
       +            raise Exception("Bad encoding")
                if nV >= 31:
                    compressed = True
                    nV -= 4
       t@@ -364,7 +364,7 @@ class EC_KEY(object):
                # check that we get the original signing address
                addr = public_key_to_bc_address( encode_point(public_key, compressed) )
                if address != addr:
       -            raise BaseException("Bad signature")
       +            raise Exception("Bad signature")
        
        
        ###################################### BIP32 ##############################
   DIR diff --git a/lib/blockchain.py b/lib/blockchain.py
       t@@ -119,7 +119,7 @@ class Blockchain(threading.Thread):
                        assert prev_hash == header.get('prev_block_hash')
                        assert bits == header.get('bits')
                        assert eval('0x'+_hash) < target
       -            except:
       +            except Exception:
                        return False
        
                    prev_header = header
       t@@ -176,7 +176,7 @@ class Blockchain(threading.Thread):
                    assert prev_hash == header.get('prev_block_hash')
                    assert bits == header.get('bits')
                    assert eval('0x'+_hash) < target
       -        except:
       +        except Exception:
                    # this can be caused by a reorg.
                    print_error("verify header failed"+ repr(header))
                    verifier.undo_verifications()
       t@@ -227,7 +227,7 @@ class Blockchain(threading.Thread):
                    print_error("downloading ", self.headers_url )
                    urllib.urlretrieve(self.headers_url, filename)
                    print_error("done.")
       -        except:
       +        except Exception:
                    print_error( "download failed. creating file", filename )
                    open(filename,'wb+').close()
        
       t@@ -411,7 +411,7 @@ class Blockchain(threading.Thread):
                    index = params[0]
                    try:
                        self.verify_chunk(index, result)
       -            except:
       +            except Exception:
                        print_error('Verify chunk failed!!')
                        return False
                    requested_chunks.remove(index)
   DIR diff --git a/lib/commands.py b/lib/commands.py
       t@@ -228,7 +228,7 @@ class Commands:
                try:
                    addr = self.wallet.import_key(sec,self.password)
                    out = "Keypair imported: ", addr
       -        except BaseException as e:
       +        except Exception as e:
                    out = "Error: Keypair import failed: " + str(e)
                return out
        
       t@@ -245,19 +245,19 @@ class Commands:
        
                for to_address, amount in outputs:
                    if not is_valid(to_address):
       -                raise BaseException("Invalid Bitcoin address", to_address)
       +                raise Exception("Invalid Bitcoin address", to_address)
        
                if change_addr:
                    if not is_valid(change_addr):
       -                raise BaseException("Invalid Bitcoin address", change_addr)
       +                raise Exception("Invalid Bitcoin address", change_addr)
        
                if domain is not None:
                    for addr in domain:
                        if not is_valid(addr):
       -                    raise BaseException("invalid Bitcoin address", addr)
       +                    raise Exception("invalid Bitcoin address", addr)
                    
                        if not self.wallet.is_mine(addr):
       -                    raise BaseException("address not in wallet", addr)
       +                    raise Exception("address not in wallet", addr)
        
                for k, v in self.wallet.labels.items():
                    if change_addr and v == change_addr:
       t@@ -306,7 +306,7 @@ class Commands:
                    tx_hash, conf, is_mine, value, fee, balance, timestamp = item
                    try:
                        time_str = datetime.datetime.fromtimestamp( timestamp).isoformat(' ')[:-3]
       -            except:
       +            except Exception:
                        time_str = "----"
        
                    label, is_default_label = self.wallet.get_label(tx_hash)
   DIR diff --git a/lib/interface.py b/lib/interface.py
       t@@ -49,7 +49,7 @@ def check_cert(host, cert):
        def cert_has_expired(cert_path):
            try:
                import OpenSSL
       -    except:
       +    except Exception:
                print_error("Warning: cannot import OpenSSL")
                return False
            from OpenSSL import crypto as c
       t@@ -112,12 +112,12 @@ class Interface(threading.Thread):
                try:
                    host, port, protocol = self.server.split(':')
                    port = int(port)
       -        except:
       +        except Exception:
                    self.server = None
                    return
        
                if protocol not in 'ghst':
       -            raise BaseException('Unknown protocol: %s'%protocol)
       +            raise Exception('Unknown protocol: %s'%protocol)
        
                self.host = host
                self.port = port
       t@@ -196,7 +196,7 @@ class Interface(threading.Thread):
                self.connection_msg = ('https' if self.use_ssl else 'http') + '://%s:%d'%( self.host, self.port )
                try:
                    self.poll()
       -        except:
       +        except Exception:
                    print_error("http init session failed")
                    self.is_connected = False
                    return
       t@@ -218,7 +218,7 @@ class Interface(threading.Thread):
                        break
                    except socket.error:
                        break
       -            except:
       +            except Exception:
                        traceback.print_exc(file=sys.stdout)
                        break
                    
       t@@ -265,7 +265,7 @@ class Interface(threading.Thread):
                try:
                    req = urllib2.Request(self.connection_msg, data_json, headers)
                    response_stream = urllib2.urlopen(req, timeout=DEFAULT_TIMEOUT)
       -        except:
       +        except Exception:
                    return
        
                for index, cookie in enumerate(cj):
       t@@ -318,7 +318,7 @@ class Interface(threading.Thread):
                        s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
                        try:
                            s.connect((self.host, self.port))
       -                except:
       +                except Exception:
                            # print_error("failed to connect", self.host, self.port)
                            return
        
       t@@ -346,7 +346,7 @@ class Interface(threading.Thread):
        
                try:
                    s.connect(( self.host.encode('ascii'), int(self.port)))
       -        except:
       +        except Exception:
                    print_error("failed to connect", self.host, self.port)
                    return
        
       t@@ -370,7 +370,7 @@ class Interface(threading.Thread):
                            else:
                                print_msg("wrong certificate", self.host)
                        return
       -            except:
       +            except Exception:
                        print_error("wrap_socket failed", self.host)
                        traceback.print_exc(file=sys.stdout)
                        return
       t@@ -424,7 +424,7 @@ class Interface(threading.Thread):
                            c = json.loads(c)
                            self.queue_json_response(c)
        
       -        except:
       +        except Exception:
                    traceback.print_exc(file=sys.stdout)
        
                self.is_connected = False
   DIR diff --git a/lib/network.py b/lib/network.py
       t@@ -385,7 +385,7 @@ class Network(threading.Thread):
                            if pruning_level == '': pruning_level = '0'
                    try: 
                        is_recent = float(version)>=float(PROTOCOL_VERSION)
       -            except:
       +            except Exception:
                        is_recent = False
        
                    if out and is_recent:
   DIR diff --git a/lib/plugins.py b/lib/plugins.py
       t@@ -24,7 +24,7 @@ def init_plugins(self):
            for name, p in zip(plugin_names, plugin_modules):
                try:
                    plugins.append( p.Plugin(self, name) )
       -        except:
       +        except Exception:
                    print_msg(_("Error: cannot initialize plugin"),p)
                    traceback.print_exc(file=sys.stdout)
        
       t@@ -45,7 +45,7 @@ def run_hook(name, *args):
        
                try:
                    f(*args)
       -        except:
       +        except Exception:
                    print_error("Plugin error")
                    traceback.print_exc(file=sys.stdout)
                    
   DIR diff --git a/lib/simple_config.py b/lib/simple_config.py
       t@@ -103,7 +103,7 @@ a SimpleConfig instance then reads the wallet file.
                    import ast
                    try:
                        out = ast.literal_eval(out)
       -            except:
       +            except Exception:
                        print "type error for '%s': using default value"%key
                        out = default
        
       t@@ -154,7 +154,7 @@ a SimpleConfig instance then reads the wallet file.
                        return
                    try:
                        d = ast.literal_eval( data )  #parse raw data from reading wallet file
       -            except:
       +            except Exception:
                        raise IOError("Cannot read config file.")
        
                    self.user_config = d
   DIR diff --git a/lib/transaction.py b/lib/transaction.py
       t@@ -298,7 +298,7 @@ def match_decoded(decoded, to_match):
        def get_address_from_input_script(bytes):
            try:
                decoded = [ x for x in script_GetOp(bytes) ]
       -    except:
       +    except Exception:
                # coinbase transactions raise an exception
                print_error("cannot find address in input script", bytes.encode('hex'))
                return [], [], "(None)"
   DIR diff --git a/lib/util.py b/lib/util.py
       t@@ -49,7 +49,7 @@ def user_dir():
            elif 'ANDROID_DATA' in os.environ:
                return "/sdcard/electrum/"
            else:
       -        #raise BaseException("No home directory found in environment variables.")
       +        #raise Exception("No home directory found in environment variables.")
                return 
        
        def appdata_dir():
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -55,8 +55,8 @@ def pw_decode(s, password):
                secret = Hash(password)
                try:
                    d = DecodeAES(secret, s)
       -        except:
       -            raise BaseException('Invalid password')
       +        except Exception:
       +            raise Exception('Invalid password')
                return d
            else:
                return s
       t@@ -117,7 +117,7 @@ class WalletStorage:
                    return
                try:
                    d = ast.literal_eval( data )  #parse raw data from reading wallet file
       -        except:
       +        except Exception:
                    raise IOError("Cannot read wallet file.")
        
                self.data = d
       t@@ -192,7 +192,7 @@ class Wallet:
                for k,v in tx_list.items():
                    try:
                        tx = Transaction(v)
       -            except:
       +            except Exception:
                        print_msg("Warning: Cannot deserialize transactions. skipping")
                        continue
        
       t@@ -256,11 +256,11 @@ class Wallet:
                seed = self.get_seed(password)
                try:
                    address = address_from_private_key(sec)
       -        except:
       -            raise BaseException('Invalid private key')
       +        except Exception:
       +            raise Exception('Invalid private key')
        
                if self.is_mine(address):
       -            raise BaseException('Address already in wallet')
       +            raise Exception('Address already in wallet')
                
                # store the originally requested keypair into the imported keys table
                self.imported_keys[address] = pw_encode(sec, password )
       t@@ -296,7 +296,7 @@ class Wallet:
                import mnemonic
                
                if self.seed: 
       -            raise BaseException("a seed exists")
       +            raise Exception("a seed exists")
        
                if not seed:
                    self.seed = random_seed(128)
       t@@ -314,7 +314,7 @@ class Wallet:
                    self.seed_version = 4
                    self.seed = str(seed)
                    return
       -        except:
       +        except Exception:
                    pass
        
                words = seed.split()
       t@@ -324,7 +324,7 @@ class Wallet:
                #try:
                #    mnemonic.mn_decode(words)
                #    uses_electrum_words = True
       -        #except:
       +        #except Exception:
                #    uses_electrum_words = False
                #
                #if uses_electrum_words and len(words) != 13:
       t@@ -438,7 +438,7 @@ class Wallet:
                elif account_type == '2of3':
                    return "m/3'/%d & m/4'/%d & m/5'/%d"%(i,i,i)
                else:
       -            raise BaseException('unknown account type')
       +            raise Exception('unknown account type')
        
        
            def num_accounts(self, account_type):
       t@@ -608,8 +608,8 @@ class Wallet:
                try:
                    K, Kc = get_pubkeys_from_secret(master_k.decode('hex'))
                    assert K.encode('hex') == master_K
       -        except:
       -            raise BaseException("Invalid password")
       +        except Exception:
       +            raise Exception("Invalid password")
                return master_k
        
        
       t@@ -628,7 +628,7 @@ class Wallet:
                    if v == address:
                        return k, (0,0)
        
       -        raise BaseException("Address not found", address)
       +        raise Exception("Address not found", address)
        
        
            def get_roots(self, account):
       t@@ -1110,7 +1110,7 @@ class Wallet:
                    if h == ['*']: continue
                    for tx_hash, tx_height in h:
                        tx = self.transactions.get(tx_hash)
       -                if tx is None: raise BaseException("Wallet not synchronized")
       +                if tx is None: raise Exception("Wallet not synchronized")
                        is_coinbase = tx.inputs[0].get('prevout_hash') == '0'*64
                        for output in tx.d.get('outputs'):
                            if output.get('address') != addr: continue
       t@@ -1245,7 +1245,7 @@ class Wallet:
            def receive_history_callback(self, addr, hist):
        
                if not self.check_new_history(addr, hist):
       -            raise BaseException("error: received history for %s is not consistent with known transactions"%addr)
       +            raise Exception("error: received history for %s is not consistent with known transactions"%addr)
                    
                with self.lock:
                    self.history[addr] = hist
       t@@ -1754,12 +1754,12 @@ class WalletSynchronizer(threading.Thread):
                                    hist.append( (tx_hash, item['height']) )
        
                            if len(hist) != len(result):
       -                        raise BaseException("error: server sent history with non-unique txid", result)
       +                        raise Exception("error: server sent history with non-unique txid", result)
        
                            # check that the status corresponds to what was announced
                            rs = requested_histories.pop(addr)
                            if self.wallet.get_status(hist) != rs:
       -                        raise BaseException("error: status mismatch: %s"%addr)
       +                        raise Exception("error: status mismatch: %s"%addr)
                        
                            # store received history
                            self.wallet.receive_history_callback(addr, hist)
   DIR diff --git a/plugins/aliases.py b/plugins/aliases.py
       t@@ -52,7 +52,7 @@ class Plugin(BasePlugin):
            def get_alias(self, alias, interactive = False, show_message=None, question = None):
                try:
                    target, signing_address, auth_name = read_alias(self, alias)
       -        except BaseException, e:
       +        except Exception as e:
                    # raise exception if verify fails (verify the chain)
                    if interactive:
                        show_message("Alias error: " + str(e))
   DIR diff --git a/plugins/qrscanner.py b/plugins/qrscanner.py
       t@@ -110,7 +110,7 @@ class Plugin(BasePlugin):
        
                try:
                    tx = self.gui.main_window.wallet.mktx( [(to_address, amount)], None, fee)
       -        except BaseException, e:
       +        except Exception as e:
                    self.gui.main_window.show_message(str(e))
                    return
        
       t@@ -126,13 +126,13 @@ class Plugin(BasePlugin):
            
                    input_info = []
        
       -        except BaseException, e:
       +        except Exception as e:
                    self.gui.main_window.show_message(str(e))
        
                try:
                    json_text = json.dumps(tx.as_dict()).replace(' ', '')
                    self.show_tx_qrcode(json_text, 'Unsigned Transaction')
       -        except BaseException, e:
       +        except Exception as e:
                    self.gui.main_window.show_message(str(e))
        
            def show_tx_qrcode(self, data, title):
       t@@ -235,7 +235,7 @@ class Plugin(BasePlugin):
                    self.gui.main_window.wallet.signrawtransaction(tx, input_info, [], password)
                    txtext = json.dumps(tx.as_dict()).replace(' ', '')
                    self.show_tx_qrcode(txtext, 'Signed Transaction')
       -        except BaseException, e:
       +        except Exception as e:
                    self.gui.main_window.show_message(str(e))