Skip to content

Inherited Tag Values are not Overwritten [💰$20 for 100% human contributions] #1950

Description

@nobodyinperson

Thank you very much for hledger, it is awesome! 🎉

Apparently there is a misleading behaviour when inheriting values of tags.

The docs (https://hledger.org/1.27/hledger.html#tags-1) mention that tags are inherited, but only mention value-less tags.

Consider this book.hledger:

2022-11-17 Aldi
    ; concerns: me
    Assets               -30 €
    Costs:Food            20 €
    Loaned                10 €  ; concerns: you, note: 👈 This should OVERWRITE the concerns: me from above, shouldn't it?

For consistency, higher-level tag values should overwrite tags values lower down the chain, right? At least a transaction/account shouldn't have two values of the same tag at once, right? But:

❯ hledger --version
hledger 1.27.1, linux-x86_64

❯ hledger -f book.hledger balance  --pivot=concerns
               -10 €  me
                10 €  you
--------------------
                   0  
# ☝️ This is expected.


❯ hledger -f book.hledger register Loaned  --pivot=concerns
2022-11-17 Aldi    you              10 €          10 €
# ☝️ This is expected.

❯ hledger -f book.hledger register tag:concerns=me --pivot=concerns
2022-11-17 Aldi    me              -30 €         -30 €
                   me               20 €         -10 €
                   you              10 €             0 # 👈 why is this line here? I explicitly filtered for tag:concerns=me but a line with concerns=you appears?

❯ hledger -f book.hledger register Loaned tag:concerns=me
2022-11-17 Aldi          Loaned                 10 €          10 €
# ☝️ Why does this appear? 

❯ hledger -f book.hledger register Loaned tag:concerns=you
2022-11-17 Aldi          Loaned                 10 €          10 €
# ☝️ This is expected.

Conclusion

It seems that tag values are not overwritten down the chain but somehow still kept around. This can lead to confusion and inconsistencies in register for example.

Proposal

I propose that tag values down the line should overwrite higher-level tag values.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-WISHSome kind of improvement request or proposal.bountyThar's some kind o' loot on offer..docsDocumentation-related.journalThe journal file format, and its features.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions