This all sounds complicated to me.
I'd prefer to just expose a hook (a-la-Emacs) and you can call it when your
plugin module gets loaded.


On Sat, Jun 5, 2021 at 3:51 AM [email protected] <
[email protected]> wrote:

> I'll confess I haven't looked at the plugin architecture in detail (beyond
> the docs, basically), but it seems to me that if a plugin is enabled by the
> beancount directive, there are a couple of ways it could hook in in more
> places:
>
> - a plugin class or module couple implement "well known" function/method
> names that are called in sequence at specific points in the processing flow
> (as is done for importers with the extract/identify methods)
> - a plugin module could register its own arbitrary callables to hooks with
> something like "beancount.plugins.register_callback("post_booking",
> myplugin.check_fifo)
>
> I think the existing plugin architecture is fine for my purpose (raising
> an error if the final processed directives are inconsistent with FIFO). But
> adding a new named booking method could, in a generic framework of many
> hooks as described above, just be a matter of providing hooks in the right
> places for beancount to call out to plugins.
> On Saturday, 5 June 2021 at 3:24:10 pm UTC+10 [email protected] wrote:
>
>> That rules out using any of the CLIs that trampoline to Python unless
>> they all get hooks too.
>>
>> What about keeping that single plugin directive but allow the plugin code
>> to implement different interfaces depending on what plugin type it is?
>>
>> On Fri, Jun 4, 2021 at 10:16 PM Martin Blais <[email protected]> wrote:
>>
>>> Extra directives look ugly to me. Trying to keep the language lean.
>>> I'd just have a Python-level feature and you'd have to write your own
>>> main with load_file().
>>> It's pretty exotic anyway.
>>>
>>> On Sat, Jun 5, 2021 at 12:53 AM Ben Blount <[email protected]> wrote:
>>>
>>>> Custom booking methods would be fantastic.
>>>>
>>>> Does anyone have thoughts on how such a registry would be configured?
>>>> The only mechanism that comes to mind as workable would be to register
>>>> it like plugins are currently. Given the plans to add pre-booking plugins
>>>> in v3 that work on direct-from-parser inputs, I imagine those would take a
>>>> similar approach.
>>>>
>>>> So maybe we'd have 2 additional plugin directives:
>>>> pre_plugin <python_path>
>>>> booking_plugin <python_path>
>>>>
>>>> which matches today's  plugin <python_path>
>>>>
>>>> On Fri, Jun 4, 2021 at 9:28 PM [email protected] <
>>>> [email protected]> wrote:
>>>>
>>>>> Thanks for the reply, Martin!
>>>>>
>>>>> In the absence of anyone piping up to say such a plugin already exists
>>>>> that I've overlooked, I might implement this as a plugin first to share
>>>>> with you all, and then consider contributing to a "custom booking method"
>>>>> registry feature if there's interest in it. But it will be a little while
>>>>> before I can contribute either in any case.
>>>>>
>>>>> On Saturday, 5 June 2021 at 2:20:16 pm UTC+10 [email protected] wrote:
>>>>>
>>>>>> Sure why not.
>>>>>>
>>>>>> But you could also write your own booking method that does just this
>>>>>> instead?
>>>>>> I would call it "CHECK_FIFO".
>>>>>> (Problem is it's orthogonal to all the methods, e.g. CHECK_LIFO,
>>>>>> etc.. Whatever.)
>>>>>>
>>>>>> Right now I don't have a registration mechanism so you'd have to
>>>>>> either
>>>>>> - patch the code
>>>>>> - monkey-patch the code without change the library (not sure if
>>>>>> possible)
>>>>>> - send me a patch to add a registry so you can do this cleanly
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Jun 4, 2021 at 11:52 PM [email protected] <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi folks,
>>>>>>>
>>>>>>> I use a FIFO methodology for capital gains but with STRICT booking,
>>>>>>> inputting the lots I sell explicitly (relying heavily on vim-beancount's
>>>>>>> GetContext, but increasingly also automating this with importers that
>>>>>>> accept the prior entries).
>>>>>>>
>>>>>>> I have two reasons: I'm affected by the "transfer lots with cost"
>>>>>>> issue discussed at length in crypto contexts, but a crypto transfer 
>>>>>>> with a
>>>>>>> fee means increasing the cost base slightly while preserving the date. 
>>>>>>> All
>>>>>>> things considered, this is safer to do explicitly so I can see what's 
>>>>>>> going
>>>>>>> on. I also find it personally preferable for everything to be explicitly
>>>>>>> expressed in the text. It's aesthetically appealing and reassuring to me
>>>>>>> that I haven't misunderstood beancount if it's done explicitly.
>>>>>>>
>>>>>>> Which brings me to my question: I have in mind a plugin that would
>>>>>>> check the transactions after all the parsing and processing is complete,
>>>>>>> and assert that the lots I've explicitly reduced are the ones that are
>>>>>>> consistent with a FIFO approach.
>>>>>>>
>>>>>>> I think this is something useful and that I could reasonably write
>>>>>>> (and open-source) when I have time, but I wanted to ask if anyone's 
>>>>>>> aware
>>>>>>> of an existing plugin that does this?
>>>>>>>
>>>>>>> A further thought is that if I choose `option "booking_method"
>>>>>>> "FIFO"`, then it would be extremely cool if beancount would not just
>>>>>>> interpolate missing bookings according to FIFO but also consider it an
>>>>>>> error if I have explicitly booked a reduction that doesn't conform to 
>>>>>>> FIFO.
>>>>>>> I'll leave it up to Martin to decide whether this validation is in the
>>>>>>> scope of `booking_method` or whether this belongs to a plugin.
>>>>>>>
>>>>>>> Thanks for reading!
>>>>>>>
>>>>>>> --
>>>>>>> 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/2a2682b6-83d9-4288-a3d5-c7c5b2659cafn%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/beancount/2a2682b6-83d9-4288-a3d5-c7c5b2659cafn%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 [email protected].
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/beancount/37a15b36-1b13-4166-9402-2a81f4c56249n%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/beancount/37a15b36-1b13-4166-9402-2a81f4c56249n%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 [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/beancount/CACGEkZtm9-OuYNxk8ccseyqPYrwT-nGPMdNyZiovLN%2Bp2kGRGA%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/beancount/CACGEkZtm9-OuYNxk8ccseyqPYrwT-nGPMdNyZiovLN%2Bp2kGRGA%40mail.gmail.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 [email protected].
>>>
>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/beancount/CAK21%2BhPTCp_%3D%2BSCfVEqZdHDcTqhLNhdPn2pyMRPgu9Owda%2BxCQ%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/beancount/CAK21%2BhPTCp_%3D%2BSCfVEqZdHDcTqhLNhdPn2pyMRPgu9Owda%2BxCQ%40mail.gmail.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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beancount/54b8e336-00aa-47f9-acdd-44b2f8162500n%40googlegroups.com
> <https://groups.google.com/d/msgid/beancount/54b8e336-00aa-47f9-acdd-44b2f8162500n%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/CAK21%2BhPSgkGMQdbwvpwjxH-QgbzHGqT3M_mqY8u6H9-Dq-UbhQ%40mail.gmail.com.

Reply via email to