URI: 
       texchange_rate: small fixups. BitcoinAverage, BitStamp - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit d6c2a0af946a7691b226a59aa5e3bcdcd6e31fa7
   DIR parent 4b3a285871161916708f31b0d43c25c13a1b5d7d
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Wed, 27 Feb 2019 23:49:25 +0100
       
       exchange_rate: small fixups. BitcoinAverage, BitStamp
       
       - BitcoinAverage seems to have historical rates for all currencies it supports
       (as in, if there is spot price, there is also history).
       - BitStamp now uses v2 API, also has support for EUR.
       - Bitcointoyou does not seem to actually offer histories
       (and `request_history` was undefined anyway)
       - regenerate currencies.json
       
       Diffstat:
         M electrum/currencies.json            |      54 +++++++++++++++++++------------
         M electrum/exchange_rate.py           |      26 +++++++++++++++++---------
       
       2 files changed, 51 insertions(+), 29 deletions(-)
       ---
   DIR diff --git a/electrum/currencies.json b/electrum/currencies.json
       t@@ -109,6 +109,7 @@
                "NZD",
                "OMR",
                "PAB",
       +        "PAX",
                "PEN",
                "PGK",
                "PHP",
       t@@ -149,6 +150,7 @@
                "UYU",
                "UZS",
                "VEF",
       +        "VES",
                "VND",
                "VUV",
                "WST",
       t@@ -164,7 +166,8 @@
                "ZWL"
            ],
            "BitStamp": [
       -        "USD"
       +        "USD",
       +        "EUR"
            ],
            "Bitbank": [
                "JPY"
       t@@ -320,7 +323,7 @@
                "USD",
                "UYU",
                "UZS",
       -        "VEF",
       +        "VES",
                "VND",
                "VUV",
                "WST",
       t@@ -338,15 +341,18 @@
                "ZMW",
                "ZWL"
            ],
       -    "Bitcointoyou": [
       -        "BRL"
       -    ],
            "BitcoinVenezuela": [
                "ARS",
       +        "ETH",
                "EUR",
       +        "LTC",
                "USD",
       -        "VEF"
       -    ],    
       +        "VEF",
       +        "XMR"
       +    ],
       +    "Bitcointoyou": [
       +        "BRL"
       +    ],
            "Bitmarket": [
                "PLN"
            ],
       t@@ -561,6 +567,7 @@
                "AWG",
                "AZN",
                "BAM",
       +        "BAT",
                "BBD",
                "BCH",
                "BDT",
       t@@ -572,6 +579,8 @@
                "BOB",
                "BRL",
                "BSD",
       +        "BSV",
       +        "BTC",
                "BTN",
                "BWP",
                "BYN",
       t@@ -597,6 +606,7 @@
                "EGP",
                "ERN",
                "ETB",
       +        "ETC",
                "ETH",
                "EUR",
                "FJD",
       t@@ -718,13 +728,12 @@
                "XPT",
                "YER",
                "ZAR",
       +        "ZEC",
                "ZMK",
                "ZMW",
       +        "ZRX",
                "ZWL"
            ],
       -    "Foxbit": [
       -        "BRL"
       -    ],
            "Kraken": [
                "CAD",
                "EUR",
       t@@ -736,8 +745,9 @@
                "AED",
                "ARS",
                "AUD",
       +        "BAM",
                "BDT",
       -        "BHD",
       +        "BGN",
                "BOB",
                "BRL",
                "BWP",
       t@@ -757,7 +767,9 @@
                "GBP",
                "GEL",
                "GHS",
       +        "GTQ",
                "HKD",
       +        "HNL",
                "HRK",
                "HUF",
                "IDR",
       t@@ -777,33 +789,36 @@
                "NGN",
                "NOK",
                "NZD",
       +        "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
       -        "PYG",
       +        "QAR",
                "RON",
                "RSD",
                "RUB",
       +        "RWF",
                "SAR",
                "SEK",
                "SGD",
                "SZL",
                "THB",
                "TRY",
       +        "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "USD",
                "UYU",
       -        "VEF",
       +        "VES",
                "VND",
                "XAF",
       +        "XMR",
                "XRP",
       -        "ZAR",
       -        "ZMW"
       +        "ZAR"
            ],
            "MercadoBitcoin": [
                "BRL"
       t@@ -814,10 +829,8 @@
            "TheRockTrading": [
                "EUR"
            ],
       -    "WEX": [
       -        "EUR",
       -        "RUB",
       -        "USD"
       +    "Zaif": [
       +        "JPY"
            ],
            "itBit": []
       -}
       +}
       +\ No newline at end of file
   DIR diff --git a/electrum/exchange_rate.py b/electrum/exchange_rate.py
       t@@ -72,6 +72,7 @@ class ExchangeBase(PrintError):
                    self.print_error("received fx quotes")
                except BaseException as e:
                    self.print_error("failed fx quotes:", repr(e))
       +            # traceback.print_exc()
                    self.quotes = {}
                self.on_quotes()
        
       t@@ -99,7 +100,7 @@ class ExchangeBase(PrintError):
                    h = await self.request_history(ccy)
                    self.print_error("received fx history for", ccy)
                except BaseException as e:
       -            self.print_error("failed fx history:", e)
       +            self.print_error("failed fx history:", repr(e))
                    #traceback.print_exc()
                    return
                filename = os.path.join(cache_dir, self.name() + '_' + ccy)
       t@@ -124,6 +125,12 @@ class ExchangeBase(PrintError):
            def historical_rate(self, ccy, d_t):
                return self.history.get(ccy, {}).get(d_t.strftime('%Y-%m-%d'), 'NaN')
        
       +    async def request_history(self, ccy):
       +        raise NotImplementedError()  # implemented by subclasses
       +
       +    async def get_rates(self, ccy):
       +        raise NotImplementedError()  # implemented by subclasses
       +
            async def get_currencies(self):
                rates = await self.get_rates('')
                return sorted([str(a) for (a, b) in rates.items() if b is not None and len(a)==3])
       t@@ -136,9 +143,8 @@ class BitcoinAverage(ExchangeBase):
                             for r in json if r != 'timestamp'])
        
            def history_ccys(self):
       -        return ['AUD', 'BRL', 'CAD', 'CHF', 'CNY', 'EUR', 'GBP', 'IDR', 'ILS',
       -                'MXN', 'NOK', 'NZD', 'PLN', 'RON', 'RUB', 'SEK', 'SGD', 'USD',
       -                'ZAR']
       +        # BitcoinAverage seems to have historical data for all ccys it supports
       +        return CURRENCIES[self.name()]
        
            async def request_history(self, ccy):
                history = await self.get_csv('apiv2.bitcoinaverage.com',
       t@@ -153,9 +159,6 @@ class Bitcointoyou(ExchangeBase):
                json = await self.get_json('bitcointoyou.com', "/API/ticker.aspx")
                return {'BRL': Decimal(json['ticker']['last'])}
        
       -    def history_ccys(self):
       -        return ['BRL']
       -
        
        class BitcoinVenezuela(ExchangeBase):
        
       t@@ -211,9 +214,14 @@ class Bitso(ExchangeBase):
        
        class BitStamp(ExchangeBase):
        
       +    async def get_currencies(self):
       +        return ['USD', 'EUR']
       +
            async def get_rates(self, ccy):
       -        json = await self.get_json('www.bitstamp.net', '/api/ticker/')
       -        return {'USD': Decimal(json['last'])}
       +        if ccy in CURRENCIES[self.name()]:
       +            json = await self.get_json('www.bitstamp.net', f'/api/v2/ticker/btc{ccy.lower()}/')
       +            return {ccy: Decimal(json['last'])}
       +        return {}
        
        
        class Bitvalor(ExchangeBase):