exchange rate: fix coingecko api
The CoinGecko API failed as the Honduran Lempira currency returned
null as value, rendering the API unusable:
```
11.19 | I | exchange_rate.CoinGecko | getting fx quotes for EUR
11.41 | E | exchange_rate.CoinGecko | failed fx quotes: InvalidOperation([<class 'decimal.ConversionSyntax'>])
Traceback (most recent call last):
File "/var/home/user/code/vibecoding_vm/electrum/electrum/exchange_rate.py", line 87, in update_safe
self._quotes = await self.get_rates(ccy)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/home/user/code/vibecoding_vm/electrum/electrum/exchange_rate.py", line 449, in get_rates
return dict([(ccy.upper(), to_decimal(d['value']))
~~~~~~~~~~^^^^^^^^^^^^
File "/var/home/user/code/vibecoding_vm/electrum/electrum/util.py", line 243, in to_decimal
return Decimal(str(x))
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
```
```
"hnl":{"name":"Honduran Lempira","unit":"L","value":null,"type":"fiat"}
```
This commit is contained in:
@@ -447,7 +447,7 @@ class CoinGecko(ExchangeBase):
|
||||
async def get_rates(self, ccy):
|
||||
json = await self.get_json('api.coingecko.com', '/api/v3/exchange_rates')
|
||||
return dict([(ccy.upper(), to_decimal(d['value']))
|
||||
for ccy, d in json['rates'].items()])
|
||||
for ccy, d in json['rates'].items() if d.get('value') is not None])
|
||||
|
||||
def history_ccys(self):
|
||||
# CoinGecko seems to have historical data for all ccys it supports
|
||||
|
||||
Reference in New Issue
Block a user