Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
71f80e2
feat: add read schema compatibility profiles
marcomc Aug 12, 2026
6a5742a
fix: harden read compatibility validation
marcomc Aug 12, 2026
77ad814
fix: handle zero-rate transfer compatibility
marcomc Aug 12, 2026
88f9793
fix: apply investment schema profiles
marcomc Aug 12, 2026
9e28d79
fix: separate investment schema aliases
marcomc Aug 12, 2026
def6907
chore: reconcile read compatibility with merged main
marcomc Sep 15, 2026
966dd60
fix: preserve mapped-row compatibility during rebase
marcomc Sep 15, 2026
0e58b81
fix: map investment fields through schema profiles
marcomc Sep 25, 2026
f465397
fix: detect investment columns from entity rows
marcomc Sep 25, 2026
813a2d2
fix: validate investment columns per model
marcomc Sep 25, 2026
00b3233
fix: preserve callable record constructors
marcomc Sep 25, 2026
3861a8c
style: format schema profile tests
marcomc Sep 25, 2026
3157aa6
Add comprehensive unit tests for database managers and schema handling
marcomc Sep 27, 2026
847e433
fix: handle RuntimeError in RecordManager and enhance ApiCompleteness…
marcomc Sep 27, 2026
c8fac12
test: satisfy CI type checks for read completeness
marcomc Sep 27, 2026
a9efa5e
refactor: remove unused entity_roots from AccountManager and clean up…
marcomc Sep 27, 2026
ac8312c
refactor: simplify entity metadata handling and remove unused methods
marcomc Sep 27, 2026
3537b9d
Validate read completeness at the model boundary
marcomc Sep 28, 2026
401c919
Guard direct reads against stale schema profiles
marcomc Sep 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ A Python API to access MoneyWiz Sqlite database.
- [Get Started](#get-started)
- [Tests](#tests)
- [Contribution](#contribution)
- [Read completeness](#read-completeness)

## Get Started

Expand Down Expand Up @@ -64,3 +65,26 @@ MONEYWIZ_TEST_DB_PATH=/absolute/path/to/test.sqlite uv run pytest tests
## Contribution

This project is in very early stage, all contributions are welcomed!

## Read completeness

```python
from contextlib import closing
from pathlib import Path

from moneywiz_api import MoneywizApi

with closing(MoneywizApi(Path("moneywiz.sqlite"), managers=("accounts",))) as api:
report = api.completeness()
if not report.complete:
raise RuntimeError("incomplete read")
accounts = api.account_manager.records()
```

By default, all managers load. Select from `accounts`, `payees`, `categories`,
`transactions`, `investment_holdings`, and `tags`. `load(managers=...)` refreshes
the selection and previously loaded managers in one read transaction. A failed
reload invalidates those managers. Reports contain source and parsed IDs,
identity-only skipped row diagnostics, and transaction relationship status.
Unknown layouts prevent a complete result. Reopen the read-only API after a
schema change.
Loading
Loading