See this comment <https://github.com/beancount/beancount/blob/cb3526a1af95b3b5be70347470c381b5a86055fe/beancount/query/query_compile.py#L185> right above those lines from Martin. Would be great to do get both these working if you're up for it :)
# Note: We ought to implement implicit type promotion here, # e.g., int -> float -> Decimal. # Note(2): This does not support multiplication on Amount, Position, Inventory. # We need to rewrite the evaluator to support types in order to do this # properly. On Tuesday, December 14, 2021 at 1:29:59 PM UTC-8 redst...@gmail.com wrote: > I would start with this line > <https://github.com/beancount/beancount/blob/cb3526a1af95b3b5be70347470c381b5a86055fe/beancount/query/query_compile.py#L210> > : > > class EvalSub(EvalBinaryOp): > > def __init__(self, left, right): > f = lambda x, y: Decimal(x - y) > super().__init__(f, left, right, Decimal) > > It's in query_compile.py:210. I'd imagine subtraction done via Decimal > should instead be modified to handle your case. Tests are here > <https://github.com/beancount/beancount/blob/master/beancount/query/query_compile_test.py> > . > > "unsupported operand type(s) for -:" is a python TypeError (not specific > to Beancount), which is why you didn't find it in the code. I did "git grep > operand" to find the above. > > This would be a good addition, BTW. Thanks for taking a stab at it! > > > On Tuesday, December 14, 2021 at 1:05:37 PM UTC-8 Ben L wrote: > >> Happy to take a stab at it if you want to point where it look. I can't >> find where in the beancount code to start. Since the error raised is >> TypeError, I searched that and for the "unsupported operand" error, but I >> can't find that in the code. Can you point me to where does the bql stuff >> for math (add, subtract, etc) get handled? >> >> Thanks, >> >> >> >> On Tuesday, December 14, 2021 at 12:23:50 AM UTC-5 bl...@furius.ca wrote: >> >>> I don't think it's supported; you can try adding it (in branch master), >>> should be easy, just check the currencies match >>> >>> >>> >>> On Mon, Dec 13, 2021 at 9:13 PM Ben L <milehi...@gmail.com> wrote: >>> >>>> Is there a way to subtract Amounts (same currency) in bql? >>>> >>>> select cost(position) - value(position); >>>> >>>> I get: >>>> >>>> TypeError: unsupported operand type(s) for -: 'Amount' and 'Amount' >>>> >>>> I can structure the query so the results are only one currency. Is >>>> there a function that will report an Amount as just a number (lose the >>>> currency)? >>>> >>>> Thanks, >>>> >>>> Ben >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Beancount" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to beancount+...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/beancount/3bb043d0-e8a9-4cef-ad93-1987100df5ccn%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/beancount/3bb043d0-e8a9-4cef-ad93-1987100df5ccn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/2c733bf0-e4a6-4646-9c37-825574b5fcc1n%40googlegroups.com.