def test_get_all_prices(self, entries, _, __): """ 2013-06-01 price USD 1.01 CAD 2013-06-03 price USD 1.03 CAD 2013-06-05 price USD 1.05 CAD 2013-06-07 price USD 1.07 CAD 2013-06-09 price USD 1.09 CAD 2013-06-11 price USD 1.11 CAD """ price_map = prices.build_price_map(entries) price_list = prices.get_all_prices(price_map, ('USD', 'CAD')) expected = [(datetime.date(2013, 6, 1), D('1.01')), (datetime.date(2013, 6, 3), D('1.03')), (datetime.date(2013, 6, 5), D('1.05')), (datetime.date(2013, 6, 7), D('1.07')), (datetime.date(2013, 6, 9), D('1.09')), (datetime.date(2013, 6, 11), D('1.11'))] self.assertEqual(expected, price_list) inv_price_list = prices.get_all_prices(price_map, ('CAD', 'USD')) self.assertEqual(len(price_list), len(inv_price_list)) # Test not found. with self.assertRaises(KeyError): prices.get_all_prices(price_map, ('EWJ', 'JPY'))
def prices(self, base, quote): all_prices = prices.get_all_prices(self.price_map, "{}/{}".format(base, quote)) if self.filters['time']: return [(date, price) for date, price in all_prices if (date >= self.filters['time'].begin_date and date < self.filters['time'].end_date)] else: return all_prices
def get_date_rates(self, entries): if not self.args.commodity: self.parser.error("Commodity pair must be specified (in BASE/QUOTE format)") if not re.match('{ccy}/{ccy}$'.format(ccy=amount.CURRENCY_RE), self.args.commodity): self.parser.error(('Invalid commodity pair "{}"; ' 'must be in BASE/QUOTE format').format(self.args.commodity)) price_map = prices.build_price_map(entries) try: date_rates = prices.get_all_prices(price_map, self.args.commodity) except KeyError: self.parser.error( "Commodity not present in database: {}".format(self.args.commodity)) return date_rates
def prices(self, base, quote): return prices.get_all_prices(self.price_map, "{}/{}".format(base, quote))