wealthbraid 0.1.0__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/codeql.yml +3 -3
  2. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/draft_release.yml +1 -1
  3. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/release.yml +1 -1
  4. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/scheduled_release.yml +1 -1
  5. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/support_floor_update.yml +1 -1
  6. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.pre-commit-config.yaml +5 -5
  7. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/PKG-INFO +2 -2
  8. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/pyproject.toml +6 -6
  9. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/importing.py +1 -1
  10. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/store/test_record_log.py +2 -1
  11. wealthbraid-0.1.2/uv.lock +1906 -0
  12. wealthbraid-0.1.0/uv.lock +0 -1752
  13. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.coderabbit.yaml +0 -0
  14. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.gitattributes +0 -0
  15. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  16. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  17. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  18. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/pull_request_template.md +0 -0
  19. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/ci.yml +0 -0
  20. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/documentation.yml +0 -0
  21. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/publish.yml +0 -0
  22. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/publish_testpypi.yml +0 -0
  23. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.github/workflows/semantic_pull_request.yml +0 -0
  24. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.gitignore +0 -0
  25. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.markdownlint.yaml +0 -0
  26. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.prettierignore +0 -0
  27. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.prettierrc +0 -0
  28. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.pypirc +0 -0
  29. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/.typos.toml +0 -0
  30. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/CITATION.cff +0 -0
  31. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  32. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/CONTRIBUTING.md +0 -0
  33. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/LICENSE +0 -0
  34. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/README.md +0 -0
  35. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/SECURITY.md +0 -0
  36. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/SUPPORT.md +0 -0
  37. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/cliff.toml +0 -0
  38. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/agent-guide.md +0 -0
  39. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/api/book.md +0 -0
  40. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/api/engine.md +0 -0
  41. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/api/index.md +0 -0
  42. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/api/services.md +0 -0
  43. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/api/store.md +0 -0
  44. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/architecture.md +0 -0
  45. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/contributing.md +0 -0
  46. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/gen_ref_pages.py +0 -0
  47. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/index.md +0 -0
  48. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/javascripts/mathjax.js +0 -0
  49. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/security.md +0 -0
  50. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/docs/style/api.css +0 -0
  51. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/renovate.json +0 -0
  52. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/scripts/release_version.py +0 -0
  53. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/__init__.py +0 -0
  54. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/__main__.py +0 -0
  55. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/book/__init__.py +0 -0
  56. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/book/book.py +0 -0
  57. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/book/config.py +0 -0
  58. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/book/schema.py +0 -0
  59. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/book/state.py +0 -0
  60. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/book/verify.py +0 -0
  61. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/__init__.py +0 -0
  62. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/commands_analysis.py +0 -0
  63. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/commands_book.py +0 -0
  64. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/commands_ledger.py +0 -0
  65. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/commands_ops.py +0 -0
  66. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/commands_statements.py +0 -0
  67. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/common.py +0 -0
  68. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/cli/main.py +0 -0
  69. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/__init__.py +0 -0
  70. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/account.py +0 -0
  71. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/balancing.py +0 -0
  72. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/errors.py +0 -0
  73. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/inventory.py +0 -0
  74. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/ledger.py +0 -0
  75. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/money.py +0 -0
  76. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/prices.py +0 -0
  77. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/engine/transaction.py +0 -0
  78. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/errors.py +0 -0
  79. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/__init__.py +0 -0
  80. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/categorize.py +0 -0
  81. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/explain.py +0 -0
  82. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/reconcile.py +0 -0
  83. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/reports.py +0 -0
  84. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/review.py +0 -0
  85. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/services/scenarios.py +0 -0
  86. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/store/__init__.py +0 -0
  87. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/store/records.py +0 -0
  88. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/store/store.py +0 -0
  89. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/utils/__init__.py +0 -0
  90. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/utils/log.py +0 -0
  91. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/version.py +0 -0
  92. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/__init__.py +0 -0
  93. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/app.py +0 -0
  94. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/static/VENDOR.json +0 -0
  95. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/static/app.css +0 -0
  96. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/static/htmx.min.js +0 -0
  97. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/_macros.html +0 -0
  98. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/_operation_card.html +0 -0
  99. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/base.html +0 -0
  100. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/entries.html +0 -0
  101. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/error.html +0 -0
  102. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/lines.html +0 -0
  103. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/operation.html +0 -0
  104. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/operations.html +0 -0
  105. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/overview.html +0 -0
  106. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/reconciliations.html +0 -0
  107. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/reports.html +0 -0
  108. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/review.html +0 -0
  109. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/trace.html +0 -0
  110. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/src/wealthbraid/web/templates/verify.html +0 -0
  111. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/book/test_corrections_and_integrity.py +0 -0
  112. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/book/test_operations_workflow.py +0 -0
  113. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/book/test_provenance_hardening.py +0 -0
  114. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/cli/test_cli_contract.py +0 -0
  115. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/cli/test_cli_workflow.py +0 -0
  116. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/conftest.py +0 -0
  117. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_account.py +0 -0
  118. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_balancing.py +0 -0
  119. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_inventory.py +0 -0
  120. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_ledger.py +0 -0
  121. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_money.py +0 -0
  122. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_prices.py +0 -0
  123. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/engine/test_transaction.py +0 -0
  124. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/services/test_import_categorize_reconcile.py +0 -0
  125. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/services/test_import_hardening.py +0 -0
  126. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/services/test_reports_explain_scenarios.py +0 -0
  127. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/services/test_services_hardening.py +0 -0
  128. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/smoke_test.py +0 -0
  129. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/test_import.py +0 -0
  130. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/test_release_version.py +0 -0
  131. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/web/test_web_hardening.py +0 -0
  132. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/tests/web/test_web_review.py +0 -0
  133. {wealthbraid-0.1.0 → wealthbraid-0.1.2}/zensical.toml +0 -0
@@ -22,13 +22,13 @@ jobs:
22
22
  uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
23
23
 
24
24
  - name: Initialize CodeQL
25
- uses: github/codeql-action/init@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
25
+ uses: github/codeql-action/init@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
26
26
  with:
27
27
  languages: python
28
28
  queries: security-and-quality
29
29
 
30
30
  - name: Autobuild
31
- uses: github/codeql-action/autobuild@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
31
+ uses: github/codeql-action/autobuild@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
32
32
 
33
33
  - name: Perform CodeQL Analysis
34
- uses: github/codeql-action/analyze@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
34
+ uses: github/codeql-action/analyze@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
@@ -22,7 +22,7 @@ jobs:
22
22
 
23
23
  - name: Generate changelog
24
24
  id: changelog
25
- uses: orhun/git-cliff-action@3d96a18cc4ec17e9dc69ddcc424ccafaf1f78ce2 # v4.9.0
25
+ uses: orhun/git-cliff-action@a9a95522b26fe6403f7bb24031f21fb573d0f5ff # v4.9.1
26
26
  with:
27
27
  config: cliff.toml
28
28
  args: --unreleased --verbose
@@ -30,7 +30,7 @@ jobs:
30
30
 
31
31
  - name: Generate changelog
32
32
  id: changelog
33
- uses: orhun/git-cliff-action@3d96a18cc4ec17e9dc69ddcc424ccafaf1f78ce2 # v4.9.0
33
+ uses: orhun/git-cliff-action@a9a95522b26fe6403f7bb24031f21fb573d0f5ff # v4.9.1
34
34
  with:
35
35
  config: cliff.toml
36
36
  args: --current --verbose
@@ -31,7 +31,7 @@ jobs:
31
31
 
32
32
  - name: Check for new commits
33
33
  id: check_commits
34
- uses: isaac-cf-wong/detect-git-changes-action@10d1e3ac7c5ee0997d7b370e9929cacac9c87013 # v0.0.19
34
+ uses: isaac-cf-wong/detect-git-changes-action@9863c3c0ba155ed10b54072f711ae8807aedbc87 # v0.0.22
35
35
  with:
36
36
  use-latest-tag: true
37
37
 
@@ -22,7 +22,7 @@ jobs:
22
22
 
23
23
  - name: Apply support policy (spec0, from pyproject tool table)
24
24
  id: policy
25
- uses: isaac-cf-wong/dependency-support-policy-action@74dfcfcc079cd22b26713242940f65ba2b3c70c7 # v0.2.9
25
+ uses: isaac-cf-wong/dependency-support-policy-action@f83b1c576c82b2a7dde5d3c38c222d68b76bb9cf # v0.2.12
26
26
  with:
27
27
  mode: update
28
28
 
@@ -16,7 +16,7 @@ repos:
16
16
  - id: check-json
17
17
 
18
18
  - repo: https://github.com/astral-sh/ruff-pre-commit
19
- rev: v0.16.8
19
+ rev: v0.17.0
20
20
  hooks:
21
21
  - id: ruff
22
22
  args: [--fix, --config=pyproject.toml]
@@ -28,7 +28,7 @@ repos:
28
28
  - id: taplo-format
29
29
 
30
30
  - repo: https://github.com/crate-ci/typos
31
- rev: v1.50.2
31
+ rev: v1.51.1
32
32
  hooks:
33
33
  - id: typos
34
34
  args: []
@@ -36,7 +36,7 @@ repos:
36
36
  exclude: ^src/wealthbraid/web/static/htmx\.min\.js$
37
37
 
38
38
  - repo: https://github.com/rbubley/mirrors-prettier
39
- rev: v3.9.8
39
+ rev: v3.9.10
40
40
  hooks:
41
41
  - id: prettier
42
42
 
@@ -54,12 +54,12 @@ repos:
54
54
  - id: actionlint
55
55
 
56
56
  - repo: https://github.com/astral-sh/uv-pre-commit
57
- rev: 0.12.17
57
+ rev: 0.13.0
58
58
  hooks:
59
59
  # Update the uv lockfile
60
60
  - id: uv-lock
61
61
 
62
62
  - repo: https://github.com/betterleaks/betterleaks
63
- rev: v1.8.1
63
+ rev: v1.9.0
64
64
  hooks:
65
65
  - id: betterleaks
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: wealthbraid
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Local-first, AI-native personal wealth management on an append-only double-entry ledger
5
5
  Project-URL: Documentation, https://isaac-cf-wong.github.io/wealthbraid
6
6
  Project-URL: Source, https://github.com/isaac-cf-wong/wealthbraid
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Topic :: Office/Business :: Financial :: Accounting
21
21
  Requires-Python: >=3.12
22
- Requires-Dist: fastapi>=0.115
22
+ Requires-Dist: fastapi>=0.116.0
23
23
  Requires-Dist: jinja2>=3.1
24
24
  Requires-Dist: pydantic>=2.11
25
25
  Requires-Dist: python-multipart>=0.0.20
@@ -23,7 +23,7 @@ dynamic = ["version"]
23
23
  dependencies = [
24
24
  "typer>=0.26.8",
25
25
  "pydantic>=2.11",
26
- "fastapi>=0.115",
26
+ "fastapi>=0.116.0",
27
27
  "uvicorn>=0.34",
28
28
  "jinja2>=3.1",
29
29
  "python-multipart>=0.0.20",
@@ -31,18 +31,18 @@ dependencies = [
31
31
 
32
32
  [dependency-groups]
33
33
  dev = [
34
- "ruff>=0.16.8",
35
- "prek>=0.5.3",
34
+ "ruff>=0.17.0",
35
+ "prek>=0.5.5",
36
36
  "pytest-github-actions-annotate-failures>=0.4.2",
37
37
  "pytest-cov>=7.1.0",
38
- "pytest-mock>=3.15.1",
38
+ "pytest-mock>=3.16.0",
39
39
  "pytest>=9.1.1",
40
40
  "mutmut>=3.8.0",
41
41
  "httpx>=0.28.1",
42
42
  ]
43
- docs = ["zensical>=0.0.62", "mkdocstrings-python>=2.0.8"]
43
+ docs = ["zensical>=0.0.69", "mkdocstrings-python>=2.0.9"]
44
44
  build = ["hatch>=1.18.1"]
45
- release = ["git-cliff>=2.13.1"]
45
+ release = ["git-cliff>=2.14.2"]
46
46
 
47
47
  [project.scripts]
48
48
  wealthbraid = "wealthbraid.cli.main:run"
@@ -133,7 +133,7 @@ def parse_csv(content: bytes, profile: ImportProfile) -> list[ParsedRow]:
133
133
  date_text = (raw.get(profile.date) or "").strip()
134
134
  try:
135
135
  if profile.date_format:
136
- date = dt.datetime.strptime(date_text, profile.date_format).date() # noqa: DTZ007
136
+ date = dt.datetime.strptime(date_text, profile.date_format).date()
137
137
  else:
138
138
  date = dt.date.fromisoformat(date_text)
139
139
  except ValueError as exc:
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import json
6
+ import re
6
7
 
7
8
  import pytest
8
9
 
@@ -104,7 +105,7 @@ def test_malformed_line_is_an_integrity_error(tmp_path):
104
105
  _append(store, {"n": 1})
105
106
  segment = store.segments()[0]
106
107
  segment.write_text(segment.read_text() + "not json\n", encoding="utf-8")
107
- with pytest.raises(IntegrityError, match=r"09\.jsonl:2"):
108
+ with pytest.raises(IntegrityError, match=re.escape(f"{segment.relative_to(tmp_path)}:2")):
108
109
  store.read_records()
109
110
 
110
111