Makes complete sense now, and much appreciate the detailed answer! And 
beangulp-hooks <https://github.com/hoostus/beangulp-hooks> as well.

On Sunday, March 9, 2025 at 1:45:49 PM UTC-7 just...@gmail.com wrote:

> smart_importer.apply_hooks works by monkey patching an Importer's extract 
> method. I don't think anyone would ever argue that monkey patching methods 
> in Python is anything other than a method of last resort to use in the 
> absence of a better defined API.
>
> beangulp provides an API, which smart_importer.apply_hooks doesn't use.
>
> smart_importer doesn't use beangulp's API because the "shape" of the API 
> is different from the smart_importer implementation. smart_importer expects 
> to be called with (importer: Importer, file: str, imported_entries: 
> data.Directives, existing: data.Directives) but that's not what beangulp 
> calls hooks with. It calls them with (extracted: list[import_file:str, 
> imported_entries: data.Directives, import_account:str, importer: Importer], 
> existing: data.Directives).
>
> That is: smart_importer works on a single account -- if you want to use it 
> on multiple accounts you are expected to create multiple instances. But 
> beangulp hooks are expected to work on multiple accounts -- if they need to 
> only operate on some subset of accounts it is up to them to skip those 
> during processing.
>
> By not being a beangulp hook and instead monkey patching the importer's 
> extract, it means that smart_importer gets invoked at a different point in 
> time than beangulp hooks. In particular, it gets invoked before beangulp's 
> deduplication instead of after. And since it monkey patches the importer's 
> extract instead of being passed in a list to beangulp.Ingest(importers, 
> hooks) it means the user can't control when the hook is run relative to 
> other hooks. That means you can't, for instance, run a "clean up my bank's 
> weird naming of payees before running ML training" hook before running 
> smart_importer.
>
> On Sunday, March 9, 2025 at 7:11:24 PM UTC+10:30 Red S wrote:
>
>> Out of curiosity: I’m sure it’s just me, but I don’t understand what 
>> about smart_importer is not working with beangulp? 
>> smart_importer.apply_hooks is what I was using to apply 
>> smart_importer.PredictPostings, and that works equally well with 
>> beangulp as it did with v2’s ingest. <scratching head>??
>> ​
>>
>>
>> On Thursday, March 6, 2025 at 3:06:24 AM UTC-8 just...@gmail.com wrote:
>>
>>> I consider "doesn't work with beangulp hooks" as "doesn't work with 
>>> beangulp". YMMV.
>>>
>>> On Thursday, March 6, 2025 at 8:39:41 PM UTC+10:30 Patrick Ruckstuhl 
>>> wrote:
>>>
>>>> Hi, 
>>>>
>>>> No it's not. It's running great with beancount 3, beangulp and fava 
>>>> with the last upgrade (did the changes after fava supported it). There are 
>>>> still some potential improvements to maybe drop the smartimporter hooks 
>>>> and 
>>>> use standard beangulp hooks but right now it works well. 
>>>>
>>>> Regards, 
>>>> Patrick 
>>>>
>>>> On March 6, 2025 11:04:28 AM GMT+01:00, Stefano Zacchiroli <
>>>> za...@upsilon.cc> wrote: 
>>>> >On Wed, Mar 05, 2025 at 11:09:10PM -0800, Justus Pendleton wrote: 
>>>> >> I searched previous posts but couldn't find anyone that had 
>>>> contributed a 
>>>> >> beangulp hook that mimics the "predict postings" thing from legacy 
>>>> >> smart_importer. 
>>>> > 
>>>> >In what sense is smart_importer "legacy"? Has it been declared 
>>>> abandoned 
>>>> >/ incompatible with v3 or ....? 
>>>> > 
>>>> >Thanks! 
>>>>
>>>

-- 
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 visit 
https://groups.google.com/d/msgid/beancount/f643da05-0da0-4a27-9b2e-dd7145c0edbbn%40googlegroups.com.

Reply via email to