Skip to content

Accidental PR - #124

Closed
montehoover wants to merge 3 commits into
csingley:masterfrom
montehoover:tolerate-unknown-sections
Closed

montehoover wants to merge 3 commits into
csingley:masterfrom
montehoover:tolerate-unknown-sections

Conversation

@montehoover

@montehoover montehoover commented Sep 11, 2026 •

Copy link
Copy Markdown
Collaborator

No description provided.

parse_data_element already skips unknown XML attributes with a warning,
but a <FlexStatement> section it has no attribute for was passed straight
to the dataclass constructor and blew up the whole parse:

    FlexParserError: FlexStatement - FlexStatement.__init__() got an
    unexpected keyword argument 'MutualFundDividendDetails'

Treat contained elements the same way as attributes: warn and skip any
whose tag is not a field of the FlexElement subclass, so a section IB adds
after a release degrades to a warning and the known sections still parse.

Fixes #117.
… section

Attributes taken from a real Flex statement (Mutual Fund Dividend Details
section, all fields selected). Test case uses censored real-world data as
requested in the README.
- subCategory="ETF" appears on every ETF row of the performance summary
  sections (7,523 rows in one 365-day statement), so typing subCategory as
  an enum in d87636d made those statements unparseable.
- notes="XCH" appears on FUND trades routed via FUNDSERV with
  transactionType="ExchTrade" (a mutual fund exchange).
@montehoover montehoover changed the title Skip unknown statement sections with a warning; add MutualFundDividendDetail, SubCategory.ETF, Code.XCH Accidental PR Sep 11, 2026
@montehoover
montehoover deleted the tolerate-unknown-sections branch September 11, 2026 21:41
@montehoover
montehoover restored the tolerate-unknown-sections branch September 11, 2026 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant