tag:github.com,2008:https://github.com/Hochfrequenz/xml-fundamend-python/releasesTags from xml-fundamend-python2026-01-07T17:35:09Ztag:github.com,2008:Repository/804886185/v0.33.02026-01-08T18:14:40Zv0.33.0<p>build(deps-dev): bump coverage from 7.13.0 to 7.13.1 (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/235">#235</a>)</p>
<p>Bumps [coverage](<a href="https://github.com/coveragepy/coveragepy">https://github.com/coveragepy/coveragepy</a>) from 7.13.0 to 7.13.1.
<br />- [Release notes](<a href="https://github.com/coveragepy/coveragepy/releases">https://github.com/coveragepy/coveragepy/releases</a>)
<br />- [Changelog](<a href="https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst">https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst</a>)
<br />- [Commits](<a class="commit-link" href="https://github.com/coveragepy/coveragepy/compare/7.13.0...7.13.1">coveragepy/coveragepy@<tt>7.13.0...7.13.1</tt></a>)</p>
<p>---
<br />updated-dependencies:
<br />- dependency-name: coverage
<br /> dependency-version: 7.13.1
<br /> dependency-type: direct:development
<br /> update-type: version-update:semver-patch
<br />...</p>
<p>Signed-off-by: dependabot[bot] <support@github.com>
<br />Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
<br />Co-authored-by: konstantin <konstantin.klein@hochfrequenz.de></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.32.12025-12-17T17:04:52Zv0.32.1<p>fix: also check the beschreibung of an Anwendungsfall for `is_outdate…</p>
<p>…d` (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/234">#234</a>)</p>
<p>* fix: also check the beschreibung of an Anwendungsfall for `is_outdated`</p>
<p>never fail to amuse us</p>
<p>* snapshot</p>
<p>---------</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.32.02025-12-17T15:25:52Zv0.32.0<p>feat: sanitize Anwendungsfall.beschreibung by removing hyphens inside…</p>
<p>… words (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/233">#233</a>)</p>
<p>seems like they're writing the XMLs in Word</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.31.12025-12-16T17:42:38Zv0.31.1<p>perf: make comparison computation slightly faster (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/232">#232</a>)</p>
<p>* fmt: format `create_ahb_diff_view.sql` with Jetbrains SQL formatter</p>
<p>* perf: make comparison computation slightly faster</p>
<p>* fmt</p>
<p>* docs(sql): clarify IS NOT is valid SQLite NULL-safe inequality operator</p>
<p>Add comment explaining that SQLite's "IS NOT" operator is equivalent to
<br />SQL standard "IS DISTINCT FROM" for NULL-safe comparisons.</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com></p>
<p>---------</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de>
<br />Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.31.02025-12-16T16:46:09Zv0.31.0<p>fmt: format `create_ahb_diff_view.sql` with Jetbrains SQL formatter (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/231">#…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/231">…231</a>)</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.30.12025-12-16T13:10:26Zv0.30.1<p>perf(v_ahb_diff): replace NOT EXISTS with LEFT JOIN for better query …</p>
<p>…performance (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/225">#225</a>)</p>
<p>The v_ahb_diff view used NOT EXISTS subqueries to detect added and
<br />deleted rows. These correlated subqueries execute once per row, which
<br />can be slow especially when SQLite cannot optimize the subquery
<br />efficiently.</p>
<p>This change replaces the two NOT EXISTS patterns with LEFT JOIN + IS NULL:
<br />- Added rows: LEFT JOIN old version, WHERE old.id_path IS NULL
<br />- Deleted rows: LEFT JOIN new version, WHERE new.id_path IS NULL</p>
<p>LEFT JOIN allows SQLite to use index lookups directly during the join
<br />phase rather than running a separate subquery for each candidate row.
<br />This is a well-known SQL optimization pattern that typically performs
<br />better across database engines.</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de>
<br />Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.30.02025-12-08T20:22:42Zv0.30.0<p>feat(`v_ahb_diff`): indicate which columns were actually modified (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/221">#221</a>)</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.29.02025-12-05T07:33:06Zv0.29.0<p>feat: rework `v_ahb_diff` (breaking for all users of this view) (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/215">#215</a>)</p>
<p>* perf: speed up bulk inserts in `create_db_and_populate_with_ahb_view`</p>
<p>* feat: rework `v_ahb_diff` (breaking for all users of this view)</p>
<p>but doesn't affect other parts of the code. since the view was just added in v0.28 there shouldn't be too many users besides us</p>
<p>* fmt</p>
<p>* fmt</p>
<p>* Update src/fundamend/sqlmodels/ahbview.py</p>
<p>Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com></p>
<p>* rm unused import</p>
<p>* isort</p>
<p>* set locking mode back to normal after bulk insert</p>
<p>* avoid further issues</p>
<p>* apply pragmas on engine level</p>
<p>hope shit helps... it's more annoying than expected</p>
<p>* update snapshot. add index</p>
<p>* perf(db): optimize index column order for v_ahb_diff queries</p>
<p>Reorder columns in unique indexes to put edifact_format_version and
<br />pruefidentifikator first, followed by id_path/path. This allows SQLite
<br />to efficiently use these indexes when filtering by version and
<br />pruefidentifikator in WHERE clauses before performing JOIN operations.</p>
<p>Before: (id_path, pruefidentifikator, edifact_format_version)
<br />After: (edifact_format_version, pruefidentifikator, id_path)</p>
<p>This improves query performance for v_ahb_diff view lookups without
<br />adding redundant indexes.</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot correctness against raw XML files</p>
<p>Verified the v_ahb_diff view snapshot results against the raw AHB XML files
<br />to confirm the diff logic is working correctly.</p>
<p>## Verified Changes for Prüfidentifikator 55109 (UTILMD Strom)</p>
<p>| Snapshot Entry | FV2410 | FV2504 | Status |
<br />|----------------|--------|--------|--------|
<br />| UNH segment: `Muss` → `Muss [555]` | Line 142511 | Line 8312 | ✅ |
<br />| Version `S1.1a` deleted | Line 142543 | Replaced by `S2.1` | ✅ |
<br />| STS name: `Transaktionsgrund` → `Transaktionsgrund / Ergänzung / Transaktionsgrund befristete Anmeldung` | Line 64527 | Line 8494 | ✅ |</p>
<p>## Verified Changes for Prüfidentifikator 29002 (COMDIS)</p>
<p>| Snapshot Entry | FV2410 | FV2504 | Status |
<br />|----------------|--------|--------|--------|
<br />| Version `1.0d` deleted | Line 37 | Replaced by `1.0e` | ✅ |</p>
<p>## Conclusion</p>
<p>The diff view correctly detects:
<br />- Modified elements (AHB status changes, name changes)
<br />- Deleted elements (version codes removed, segments removed)
<br />- Proper bedingung column comparison for expression changes</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 31005 (INVOIC)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 31005 (INVOIC).</p>
<p>## Verified Changes</p>
<p>| Change | FV2410 | FV2504 | Status |
<br />|--------|--------|--------|--------|
<br />| Version code deleted | `2.8c` (line 38) | `2.8d` (line 38) | ✅ |</p>
<p>Source files:
<br />- FV2410: INVOIC_AHB_2_5c_Fehlerkorrektur_20250131.xml
<br />- FV2504: INVOIC_AHB_2_5d_Fehlerkorrektur_20250623.xml</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 27001 (PRICAT)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 27001 (PRICAT).</p>
<p>## Verified Changes</p>
<p>| Change | FV2410 | FV2504 | Status |
<br />|--------|--------|--------|--------|
<br />| Version code deleted | `2.0c` (line 41) | `2.0d` (line 41) | ✅ |
<br />| SG40 Preisangabe AHB_Status | `Muss` (line 285) | `Muss [53]` (line 285) | ✅ |</p>
<p>Source files:
<br />- FV2410: PRICAT_AHB_2_0d_außerordentliche_20240726.xml
<br />- FV2504: PRICAT_AHB_2_0e_Fehlerkorrektur_20250623.xml</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 13002 (MSCONS)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 13002 (MSCONS).</p>
<p>## Verified Changes</p>
<p>| Change | FV2410 | FV2504 | Status |
<br />|--------|--------|--------|--------|
<br />| D_1154 Name | `Referenz, Identifikation` (line 4847) | `Referenznummer` (line 4844) | ✅ |</p>
<p>The snapshot correctly detects that the element name changed while the
<br />AHB_Status `X [529]` remained the same - resulting in a 'modified' diff status.</p>
<p>Source files:
<br />- FV2410: MSCONS_AHB_3_1d_außerordentliche_20240726.xml
<br />- FV2504: MSCONS_AHB_3_1f_Fehlerkorrektur_20250623.xml</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 19011 (ORDRSP)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 19011 (ORDRSP).</p>
<p>## Verified Changes</p>
<p>| Change | FV2410 | FV2504 | Status |
<br />|--------|--------|--------|--------|
<br />| Version code deleted | `1.3` (line 37) | `1.4` (line 37) | ✅ |
<br />| D_3148 AHB_Status | `X` (line 192) | `X (([939] [50]) ∨ ([940] [51])) ∧ [540]` (line 192) | ✅ |</p>
<p>The snapshot correctly detects:
<br />- The version code change (shown as 'deleted' since id_path includes version)
<br />- The AHB_Status expression change for Kommunikationsadresse element</p>
<p>Source files:
<br />- FV2410: ORDRSP_AHB_2_2_Fehlerkorrektur_20250417.xml
<br />- FV2504: ORDRSP_AHB_1_0a_Fehlerkorrektur_20250417.xml</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 29002 (COMDIS)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 29002 (COMDIS).</p>
<p>## Verified Changes</p>
<p>| Change | FV2410 | FV2504 | Status |
<br />|--------|--------|--------|--------|
<br />| Version code deleted | `1.0d` (line 37) | `1.0e` (line 37) | ✅ |</p>
<p>Source files:
<br />- FV2410: COMDIS_AHB_1_0e__20231024.xml
<br />- FV2504: COMDIS_AHB_1_0f_außerordentliche_20250131.xml</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 44042 (UTILMD Gas)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 44042 (UTILMD Gas).</p>
<p>## Verification Result</p>
<p>The snapshot correctly shows NO diff entries for prüfi 44042 because
<br />the source XML files are identical between FV2410 and FV2504:</p>
<p>- FV2410: UTILMD_AHB_Gas_1_0a_außerordentliche_20240726.xml
<br />- FV2504: UTILMD_AHB_Gas_1_0a_außerordentliche_20240726.xml</p>
<p>Both files have the same content (verified via `diff` command with no output).</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 15003 (QUOTES)</p>
<p>Verified v_ahb_diff snapshot results for Prüfidentifikator 15003 (QUOTES).</p>
<p>## Verification Result</p>
<p>The snapshot correctly shows NO diff entries for prüfi 15003 because
<br />the source XML files are identical between FV2410 and FV2504:</p>
<p>- FV2410: QUOTES_AHB_1_0_Fehlerkorrektur_20241213.xml
<br />- FV2504: QUOTES_AHB_1_0_Fehlerkorrektur_20241213.xml</p>
<p>Both files have the same content (verified via `diff` command with no output).</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* fix(sql): rewrite v_ahb_diff to properly detect added entries</p>
<p>The original SQL view used a LEFT JOIN that matched on id_path alone
<br />across ALL prüfidentifikators, causing "added" entries to never appear
<br />(found 0 added, 94 deleted, 58 modified in initial snapshot).</p>
<p>Root cause: When checking if a row exists in the old version, the query
<br />matched ANY row with the same id_path from ANY prüfi, not within the
<br />specific version pair being compared.</p>
<p>Solution: Rewrote using CTEs to:
<br />1. Generate all version pairs first (old_version x new_version)
<br />2. For each pair, properly JOIN within that specific pair
<br />3. Use NOT EXISTS with full version pair constraints for added/deleted</p>
<p>Results after fix: 113 added, 94 deleted, 58 modified entries</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* test(diff): add 10 new prüfidentifikators covering structural changes</p>
<p>Added prüfis to verify added/deleted/modified detection across formats:
<br />- 21000, 21001: IFTSTA (status messages)
<br />- 33001: REMADV (remittance advice)
<br />- 37001: PARTIN (party information)
<br />- 25001: UTILTS (utility time series)
<br />- 39000: ORDCHG (order change)
<br />- 13007: MSCONS (metered services consumption)
<br />- 17001, 17101: ORDERS (orders)
<br />- 31001: INVOIC (invoice)</p>
<p>Snapshot now contains 265 entries (113 added, 94 deleted, 58 modified)</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 21000 (IFTSTA)</p>
<p>Verified 3 diff entries (1 added, 1 deleted, 1 modified):
<br />- Added: version code 2.0f (FV2504 IFTSTA_AHB_2_0g_Fehlerkorrektur_20250225.xml:37)
<br />- Deleted: version code 2.0e (FV2410 IFTSTA_AHB_2_0e_außerordentliche_20240726.xml:37)
<br />- Modified: D_3148 ahb_status changed from X to complex expression</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 21001 (IFTSTA)</p>
<p>Verified 3 diff entries (1 added, 1 deleted, 1 modified):
<br />- Version code upgrade from 2.0e to 2.0f, same as prüfi 21000
<br />- Both IFTSTA prüfis share the same format version changes</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 25001 (UTILTS)</p>
<p>Verified 141 diff entries (51 added, 49 deleted, 41 modified):
<br />- Version upgrade from 1.1c to 1.1e
<br />- FV2410: UTILTS_AHB_1_1a_und_1.0f_außerordentliche_20240726.xml
<br />- FV2504: UTILTS_AHB_1_0_Fehlerkorrektur_20250218.xml
<br />- Significant structural changes including new code Z36 "Berechnungsformel"</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 33001 (REMADV)</p>
<p>Verified 2 diff entries (1 added, 1 deleted):
<br />- Version code changes in remittance advice format</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 37001 (PARTIN)</p>
<p>Verified 2 diff entries (1 added, 1 deleted):
<br />- Version code changes in party information format</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 39000 (ORDCHG)</p>
<p>Verified 1 diff entry (modified):
<br />- Minor status change in order change format</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 13007 (MSCONS)</p>
<p>Verified 2 diff entries (modified):
<br />- Minor status changes in metered services consumption format</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 17001 (ORDERS)</p>
<p>Verified 2 diff entries (1 added, 1 deleted):
<br />- Version code changes in orders format</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 17101 (ORDERS)</p>
<p>Verified (no diff entries for this prüfi in snapshot):
<br />- This prüfi may have identical structure between FV2410 and FV2504
<br />- Or may not exist in both versions</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* docs: verify diff snapshot for prüfi 31001 (INVOIC)</p>
<p>Verified 2 diff entries (1 added, 1 deleted):
<br />- Version code changes in invoice format</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* chore: remove unused snapshot test_ahb_diff_view_55001</p>
<p>The test function was removed but the snapshot remained in the file.</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* fmt</p>
<p>* test(diff): add invariant tests for diff view edge cases</p>
<p>Added 7 non-snapshot tests to verify logical invariants of the diff view:
<br />- Self-comparison returns only 'unchanged' entries
<br />- Diff is symmetric (forward added = reverse deleted)
<br />- No duplicate id_paths per version pair
<br />- 'added' rows have NULL old_* columns
<br />- 'deleted' rows have NULL new_* columns
<br />- 'modified' rows have actual differences
<br />- Non-existent prüfi returns empty results</p>
<p>These tests ensure the SQL logic doesn't regress during future changes.</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* fix(lint): remove unused imports from test_ahb_diff_view</p>
<p>Removed unused `sqlalchemy` and `DiffStatus` imports.</p>
<p>🤖 Generated with [Claude Code](<a href="https://claude.com/claude-code">https://claude.com/claude-code</a>)</p>
<p>Co-Authored-By: Claude <noreply@anthropic.com></p>
<p>* fmt</p>
<p>---------</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de>
<br />Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
<br />Co-authored-by: Claude <noreply@anthropic.com></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.28.22025-12-04T20:11:25Zv0.28.2<p>perf: speed up bulk inserts in `create_db_and_populate_with_ahb_view` (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/214">…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/214">…#214</a>)</p>
<p>* perf: speed up bulk inserts in `create_db_and_populate_with_ahb_view`</p>
<p>* fmt</p>
<p>* Update src/fundamend/sqlmodels/ahbview.py</p>
<p>Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com></p>
<p>* set locking mode back to normal after bulk insert</p>
<p>* avoid further issues</p>
<p>* apply pragmas on engine level</p>
<p>hope shit helps... it's more annoying than expected</p>
<p>---------</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de>
<br />Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com></p>hf-kkleintag:github.com,2008:Repository/804886185/v0.28.12025-12-04T08:51:45Zv0.28.1<p>perf: add foreign key (Anwendungshandbuch) to `ahb_expressions` table (<a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/213">…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/Hochfrequenz/xml-fundamend-python/pull/213">…#213</a>)</p>
<p>Co-authored-by: Konstantin <konstantin.klein+github@hochfrequenz.de></p>hf-kklein