2018-11-29 14:14:44 Oon-Ee Ng <[email protected]>: > On Thu, Nov 29, 2018 at 2:06 PM Daniele Nicolodi <[email protected]> wrote: > > On 28/11/2018 20:53, Martin Blais wrote: > > The current source file for importing that I'm working on lists > > transaction in reverse chronological order (I want chronological, in > > this case) but also has a reference number that is monotonically > > increasing. So my current hack is to set line number for the > > transactions to be that reference number. > > > > > > That seems not unlike the idea of storing the time in metadata - > > discussed in a prior thread but not yet implemented - and to use that as > > a secondary sort key. Maybe I can generalize this idea of a secondary > > sort key to let users put whatever they want in there (as long as the > > type is comparable, for sorting). > > Aren't directives written in the order in which they are returned by the > importer? I didn't see any mention of the fact that bean-extract does > any sorting on its own in the documentation, but I may have missed it. > > Cheers, > Dan > > > That was my impression as well, but after testing it out I found this was not > the case. The returned ordered list of > transactions is then sorted by date and line number. >
I was once troubled by this sorting behaviour as well. Intra-day transactions are sorted reverse-chronologically (newer to older) in the CSV file exported from my bank. My importer parses the entries in reversed order, returning a correctly ordered list of transactions (older to newer). However, Beancount will again sort the list returned by importer, shuffling the intra-day transactions: https://github.com/beancount/beancount/blob/fb2d29eed89a8e15f1635847beba0e5598c0ea06/beancount/ingest/extract.py#L73-L74 I had once submitted a pull request to disable this behaviour, it was merged but later reverted by Martin. So I came up with a workaround: ``` # Re-generate "lineno" to force sorting for lineno, entry in enumerate(entries, start=1): entry.meta['lineno'] = lineno ``` Just generate artificial "lineno" keys and insert them into the transactions before returning them to Beancount. This way I can preserve the order. A possible approach to make both parties happy would be to add a new parameter to "extract_from_file()" function, allowing importers to disable the sorting behaviour in post-processings. > -- > 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 post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/ > CAGQ70esZ%2BSFkn4VcaG1dh%2BP1i%3DNgQ9rHvSdx-_8eVKvJ1%3DcRMg%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. -- Zhuoyun Wei -- 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 post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/20181129151330.GA28669%40tarball.wzyboy.org. For more options, visit https://groups.google.com/d/optout.
signature.asc
Description: PGP signature
