Beispiel #1
0
    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'))
Beispiel #2
0
    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
Beispiel #3
0
 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
Beispiel #4
0
 def prices(self, base, quote):
     return prices.get_all_prices(self.price_map,
                                  "{}/{}".format(base, quote))
Beispiel #5
0
 def prices(self, base, quote):
     return prices.get_all_prices(self.price_map,
                                  "{}/{}".format(base, quote))