示例#1
0
    def test_expr_function_arity(self):
        # Compile with the correct number of arguments.
        qc.compile_expression(qp.Function('sum', [qp.Column('number')]),
                              qe.TargetsEnvironment())

        # Compile with an incorrect number of arguments.
        with self.assertRaises(qc.CompilationError):
            qc.compile_expression(qp.Function('sum', [qp.Column('date'),
                                                      qp.Column('account')]),
                                  qe.TargetsEnvironment())
示例#2
0
def get_matching_entries(entries, options_map, query):
    query_text = 'SELECT * ' + query
    parser = query_parser.Parser()
    parsed_query = parser.parse(query_text)
    c_from = None
    if parsed_query.from_clause:
        c_from = query_compile.compile_from(parsed_query.from_clause, query_env.FilterEntriesEnvironment())
    c_where = None
    if parsed_query.where_clause:
        c_where = query_compile.compile_expression(parsed_query.where_clause, query_env.FilterPostingsEnvironment())

    # Figure out if we need to compute balance.
    balance = None
    if c_where and query_execute.uses_balance_column(c_where):
        balance = inventory.Inventory()

    context = query_execute.RowContext()
    context.balance = balance
    

    # Initialize some global properties for use by some of the accessors.
    context.options_map = options_map
    context.account_types = options.get_account_types(options_map)
    context.open_close_map = getters.get_account_open_close(entries)
    #context.commodity_map = getters.get_commodity_map(entries)
    context.price_map = prices.build_price_map(entries) 

    if c_from is not None:
        filtered_entries = query_execute.filter_entries(c_from, entries, options_map)
    else:
        filtered_entries = entries
    return filtered_entries
示例#3
0
 def test_expr_binaryop(self):
     self.assertEqual(qc.EvalEqual(qe.DateColumn(),
                                   qc.EvalConstant(datetime.date(2014, 1, 1))),
                      qc.compile_expression(
                          qp.Equal(qp.Column('date'),
                                   qp.Constant(datetime.date(2014, 1, 1))),
                          qe.TargetsEnvironment()))
示例#4
0
 def test_expr_constant(self):
     self.assertEqual(
         qc.EvalConstant(D(17)),
         qc.compile_expression(qp.Constant(D(17)), qe.TargetsEnvironment()))
示例#5
0
 def test_expr_unaryop(self):
     self.assertEqual(
         qc.EvalNot(qe.AccountColumn()),
         qc.compile_expression(qp.Not(qp.Column('account')),
                               qe.TargetsEnvironment()))
示例#6
0
 def test_expr_function(self):
     self.assertEqual(
         qe.SumPosition([qe.PositionColumn()]),
         qc.compile_expression(qp.Function('sum', [qp.Column('position')]),
                               qe.TargetsEnvironment()))
示例#7
0
 def test_expr_column(self):
     self.assertEqual(
         qe.FilenameColumn(),
         qc.compile_expression(qp.Column('filename'),
                               qe.TargetsEnvironment()))
示例#8
0
 def test_expr_invalid(self):
     with self.assertRaises(qc.CompilationError):
         qc.compile_expression(qp.Column('invalid'),
                               qe.TargetsEnvironment())