π MonarchMoney Enhanced v0.9.0 - Bulk Transaction Operations
π Major New Feature: Bulk Transaction Hide/Unhide Operations
This release adds powerful bulk transaction management capabilities based on real MonarchMoney API analysis.
π New Bulk Operations
Core Methods Added
bulk_unhide_transactions(transaction_ids)- Unhide multiple transactions at oncebulk_hide_transactions(transaction_ids)- Hide multiple transactions from reportsget_hidden_transactions(limit=100)- Find all transactions hidden from reportsbulk_update_transactions(transaction_ids, updates)- Generic bulk updates for any fields
Real-World Usage
# Find and unhide all hidden transactions
hidden = await mm.get_hidden_transactions(limit=100)
transaction_ids = [t["id"] for t in hidden["allTransactions"]["results"]]
if transaction_ids:
result = await mm.bulk_unhide_transactions(transaction_ids)
print(f"Successfully unhid {result['affectedCount']} transactions")β‘ OptimizedMonarchMoney Drop-in Replacement Fixed
The OptimizedMonarchMoney class is now a true drop-in replacement for MonarchMoney:
# Works exactly like MonarchMoney, but with optimizations
mm = OptimizedMonarchMoney(cache_enabled=True, deduplicate_requests=True)
await mm.login(email, password) # All login methods available
accounts = await mm.get_accounts() # All API methods available
await mm.bulk_unhide_transactions(transaction_ids) # New methods work tooποΈ Implementation Highlights
- HAR File Analysis: Based on real MonarchMoney
Common_BulkUpdateTransactionsMutationGraphQL operation - Production Ready: Handles 6+ transactions in single operation (as demonstrated in HAR file)
- Proper Error Handling: Input validation, GraphQL error handling, and comprehensive logging
- Backward Compatible: No breaking changes to existing code
π What's Included
- Core Implementation: New bulk methods in
TransactionServiceand mainMonarchMoneyclass - Optimization Fix:
OptimizedMonarchMoneynow properly delegates all methods - Examples: Comprehensive demo in
examples/bulk_unhide_demo.py - Testing: Test cases for both functionality and drop-in replacement behavior
π§ Technical Details
The implementation uses MonarchMoney's actual GraphQL mutation:
mutation Common_BulkUpdateTransactionsMutation(
$selectedTransactionIds: [ID!]!,
$updates: TransactionUpdateParams!,
$expectedAffectedTransactionCount: Int!
) {
bulkUpdateTransactions(...) {
success
affectedCount
errors { message }
}
}π Performance Benefits
- Bulk Operations: Update multiple transactions in single API call
- Caching Support: Works with
OptimizedMonarchMoneycaching system - Request Deduplication: Prevents duplicate bulk operations
- Memory Efficient: Proper validation and resource management
π Getting Started
pip install monarchmoney-enhanced==0.9.0from monarchmoney import MonarchMoney
# or
from monarchmoney.optimizations import OptimizedMonarchMoney
mm = MonarchMoney()
await mm.login(email, password)
# Hide internal transfers from reports
internal_transfer_ids = ["id1", "id2", "id3"]
await mm.bulk_hide_transactions(internal_transfer_ids)
# Later, unhide them if needed
await mm.bulk_unhide_transactions(internal_transfer_ids)π§ Version Sync Fix
- All version files (setup.py, pyproject.toml, init.py) now properly synced to 0.9.0
- PyPI publishing should now work correctly via GitHub Actions
Full Changelog: v0.8.0...v0.9.0
π€ Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com