On Sat, Nov 19, 2022 at 2:32 PM Daniele Nicolodi <[email protected]> wrote:
> On 19/11/2022 19:42, Martin Blais wrote: > > On Sat, Nov 19, 2022 at 4:12 AM Peter <[email protected] > > <mailto:[email protected]>> wrote: > > > > I'd like to fetch the sum (per account) of the amount of money I > > sent from my checking account to any account during the year. The > > goal is to compute the average outflow per month to get a better > > understanding of the cashflow. > > > > I tired: > > > > SELECT account, other_accounts, sum(units(position)) WHERE account ~ > > "Assets:Cash:Checking" group by account, other_accounts > > > > or > > > > SELECT account, other_accounts, units(sum(position)) WHERE account ~ > > "Assets:Cash:Checking" group by account, other_accounts > > > > and variations of that. Each query failed by telling me > > > > > TypeError: unhashable type: 'list' > > > > I guess, there's a problem calculating a hash or so, but I don't > > know. Tried to search in this group, but I didn't find anything > > related that helped (I'm pretty sure I used the wrong search term, > tbh). > > > > How do I get the summarized outflow from the checking account to any > > other account using bean-query? > > > > > > This is a bug introduced in ca24621e377130fa4763812c0b8ebb8c62ebb9b0 > > Daniele: are you okay with rolling this back? > > My version of "hashable" was more lenient actually, and I think would > > work in this case. > > For this purpose we don't actually care much about a proper definition > > of hashable because the stream of data is frozen in time. > > I don't even remember why I made a check. Might have been that computing > > a hash of an inventory isn't useful; alternatively we could just allow > > it and make Inventory hashable... and remove the check altogether. > > From memory, without looking at the code, the columns in the "group by" > clause need to be hashable because "group by" is implemented with a > Python dictionary. > Yes but it's a dictionary we know isn't going to change - everything is frozen at that stage, at least for the duration of the query execution - so we can compute a hash anyway. Nothing in the query itself can mutate the stream of directives. An exception would have been raised if the check would let the list > pass. Indeed, it seems that the reported exception is from the code in > beancount v2 and not from the code in beanquery. > > The fix is to return other_accounts as a tuple and not as a list. > Maybe; I still think Python's notion of hashable doesn't apply here. > I'll look into this. > > Cheers, > Dan > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/75ff42dc-2d07-70fa-af88-e7debafd6fe9%40grinta.net > . > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhPs1R0y%3DZt%2BseL2anjonEYN_SFXcavV-z-JfTJf3kaVwQ%40mail.gmail.com.
