ynab-cli 0.6.2__tar.gz → 0.7.0__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 (278) hide show
  1. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/CHANGELOG.md +18 -0
  2. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/PKG-INFO +9 -8
  3. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/pyproject.toml +22 -21
  4. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/accounts/create_account.py +3 -2
  5. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/accounts/get_account_by_id.py +6 -6
  6. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/accounts/get_accounts.py +6 -6
  7. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budget_by_id.py +6 -6
  8. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budget_settings_by_id.py +6 -6
  9. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budgets.py +6 -6
  10. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/categories/get_categories.py +6 -6
  11. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/categories/get_category_by_id.py +6 -6
  12. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/categories/get_month_category_by_id.py +6 -6
  13. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/categories/update_category.py +3 -2
  14. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/categories/update_month_category.py +3 -2
  15. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/months/get_budget_month.py +6 -6
  16. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/months/get_budget_months.py +6 -6
  17. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payee_locations/get_payee_location_by_id.py +6 -6
  18. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payee_locations/get_payee_locations.py +6 -6
  19. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payee_locations/get_payee_locations_by_payee.py +6 -6
  20. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payees/get_payee_by_id.py +6 -8
  21. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payees/get_payees.py +6 -6
  22. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payees/update_payee.py +3 -2
  23. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/create_scheduled_transaction.py +3 -2
  24. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/delete_scheduled_transaction.py +2 -0
  25. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/get_scheduled_transaction_by_id.py +6 -6
  26. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/get_scheduled_transactions.py +6 -6
  27. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/update_scheduled_transaction.py +3 -2
  28. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/create_transaction.py +4 -2
  29. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/delete_transaction.py +2 -0
  30. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transaction_by_id.py +6 -6
  31. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions.py +3 -0
  32. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_account.py +6 -6
  33. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_category.py +6 -6
  34. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_month.py +17 -17
  35. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_payee.py +6 -6
  36. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/import_transactions.py +3 -0
  37. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/update_transaction.py +3 -2
  38. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/update_transactions.py +22 -12
  39. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/user/get_user.py +17 -15
  40. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/account.py +1 -2
  41. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category.py +31 -0
  42. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_flag_color_type_1.py +1 -0
  43. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_flag_color_type_2_type_1.py +1 -0
  44. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_flag_color_type_3_type_1.py +1 -0
  45. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_response_data.py +8 -0
  46. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/types.py +14 -5
  47. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/util.py +1 -3
  48. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/models/rules.py +3 -3
  49. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/ports/io.py +2 -2
  50. ynab_cli-0.7.0/src/ynab_cli/domain/settings.py +12 -0
  51. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/use_cases/payees.py +19 -13
  52. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/use_cases/transactions.py +2 -1
  53. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/cli.py +3 -4
  54. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/cli.py +3 -2
  55. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/payees.py +16 -9
  56. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/transactions.py +7 -4
  57. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/constants.py +1 -0
  58. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/app.py +2 -9
  59. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/cli.py +3 -2
  60. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/payees/list_unused.py +5 -2
  61. ynab_cli-0.7.0/src/ynab_cli/host/textual/widgets/payees/normalize_names.py +74 -0
  62. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/transactions/apply_rules.py +4 -1
  63. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/transactions/tabs.py +2 -2
  64. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/adapters/textual/test_io.py +6 -6
  65. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/ports/test_io.py +10 -10
  66. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/use_cases/test_payees.py +9 -3
  67. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/commands/test_payees.py +3 -2
  68. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/commands/test_transactions.py +1 -1
  69. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/test_cli.py +0 -1
  70. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/textual/test_app.py +0 -3
  71. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/uv.lock +578 -459
  72. ynab_cli-0.6.2/src/ynab_cli/domain/settings.py +0 -16
  73. ynab_cli-0.6.2/src/ynab_cli/host/textual/widgets/payees/normalize_names.py +0 -38
  74. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.env-sample +0 -0
  75. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.github/.copilot-instructions.md +0 -0
  76. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.github/FUNDING.yml +0 -0
  77. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.github/dependabot.yml +0 -0
  78. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.github/workflows/pr.yml +0 -0
  79. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.github/workflows/publish-to-pypi.yml +0 -0
  80. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.gitignore +0 -0
  81. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/.python-version +0 -0
  82. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/LICENSE.md +0 -0
  83. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/Makefile +0 -0
  84. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/README.md +0 -0
  85. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/docs/index.md +0 -0
  86. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/docs/transaction_rules.md +0 -0
  87. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/mkdocs.yml +0 -0
  88. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/__init__.py +0 -0
  89. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/__init__.py +0 -0
  90. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/rich/__init__.py +0 -0
  91. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/rich/io.py +0 -0
  92. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/textual/__init__.py +0 -0
  93. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/textual/io.py +0 -0
  94. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/__init__.py +0 -0
  95. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/__init__.py +0 -0
  96. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/accounts/__init__.py +0 -0
  97. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/budgets/__init__.py +0 -0
  98. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/categories/__init__.py +0 -0
  99. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/months/__init__.py +0 -0
  100. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payee_locations/__init__.py +0 -0
  101. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/payees/__init__.py +0 -0
  102. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/__init__.py +0 -0
  103. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/transactions/__init__.py +0 -0
  104. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/api/user/__init__.py +0 -0
  105. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/client.py +0 -0
  106. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/errors.py +0 -0
  107. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/__init__.py +0 -0
  108. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/account_response.py +0 -0
  109. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/account_response_data.py +0 -0
  110. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/account_type.py +0 -0
  111. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/accounts_response.py +0 -0
  112. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/accounts_response_data.py +0 -0
  113. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_detail.py +0 -0
  114. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_detail_response.py +0 -0
  115. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_detail_response_data.py +0 -0
  116. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_settings.py +0 -0
  117. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_settings_response.py +0 -0
  118. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_settings_response_data.py +0 -0
  119. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_summary.py +0 -0
  120. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_summary_response.py +0 -0
  121. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/budget_summary_response_data.py +0 -0
  122. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/bulk_response.py +0 -0
  123. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/bulk_response_data.py +0 -0
  124. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/bulk_response_data_bulk.py +0 -0
  125. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/bulk_transactions.py +0 -0
  126. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/categories_response.py +0 -0
  127. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/categories_response_data.py +0 -0
  128. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_goal_type_type_1.py +0 -0
  129. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_goal_type_type_2_type_1.py +0 -0
  130. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_goal_type_type_3_type_1.py +0 -0
  131. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_group.py +0 -0
  132. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_group_with_categories.py +0 -0
  133. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_response.py +0 -0
  134. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/category_response_data.py +0 -0
  135. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/currency_format_type_0.py +0 -0
  136. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/date_format_type_0.py +0 -0
  137. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/error_detail.py +0 -0
  138. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/error_response.py +0 -0
  139. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/existing_transaction.py +0 -0
  140. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_account_type.py +0 -0
  141. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_category_type.py +0 -0
  142. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_month_type.py +0 -0
  143. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_payee_type.py +0 -0
  144. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/get_transactions_type.py +0 -0
  145. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/hybrid_transaction.py +0 -0
  146. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/hybrid_transaction_type.py +0 -0
  147. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/hybrid_transactions_response.py +0 -0
  148. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/hybrid_transactions_response_data.py +0 -0
  149. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/loan_account_periodic_value_type_0.py +0 -0
  150. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/month_detail.py +0 -0
  151. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/month_detail_response.py +0 -0
  152. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/month_detail_response_data.py +0 -0
  153. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/month_summaries_response.py +0 -0
  154. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/month_summaries_response_data.py +0 -0
  155. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/month_summary.py +0 -0
  156. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/new_transaction.py +0 -0
  157. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/patch_category_wrapper.py +0 -0
  158. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/patch_month_category_wrapper.py +0 -0
  159. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/patch_payee_wrapper.py +0 -0
  160. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/patch_transactions_wrapper.py +0 -0
  161. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee.py +0 -0
  162. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_location.py +0 -0
  163. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_location_response.py +0 -0
  164. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_location_response_data.py +0 -0
  165. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_locations_response.py +0 -0
  166. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_locations_response_data.py +0 -0
  167. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_response.py +0 -0
  168. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payee_response_data.py +0 -0
  169. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payees_response.py +0 -0
  170. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/payees_response_data.py +0 -0
  171. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/post_account_wrapper.py +0 -0
  172. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/post_scheduled_transaction_wrapper.py +0 -0
  173. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/post_transactions_wrapper.py +0 -0
  174. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/put_scheduled_transaction_wrapper.py +0 -0
  175. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/put_transaction_wrapper.py +0 -0
  176. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_account.py +0 -0
  177. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_category.py +0 -0
  178. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_category_response.py +0 -0
  179. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_category_response_data.py +0 -0
  180. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_month_category.py +0 -0
  181. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_payee.py +0 -0
  182. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_payee_response.py +0 -0
  183. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_payee_response_data.py +0 -0
  184. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_scheduled_transaction.py +0 -0
  185. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_sub_transaction.py +0 -0
  186. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_transaction_with_id_or_import_id.py +0 -0
  187. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_transaction_with_optional_fields.py +0 -0
  188. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_transactions_response.py +0 -0
  189. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/save_transactions_response_data.py +0 -0
  190. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_sub_transaction.py +0 -0
  191. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_detail.py +0 -0
  192. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_frequency.py +0 -0
  193. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_response.py +0 -0
  194. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_response_data.py +0 -0
  195. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_summary.py +0 -0
  196. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_summary_frequency.py +0 -0
  197. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transactions_response.py +0 -0
  198. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/scheduled_transactions_response_data.py +0 -0
  199. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/sub_transaction.py +0 -0
  200. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_cleared_status.py +0 -0
  201. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_detail.py +0 -0
  202. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_response.py +0 -0
  203. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_summary.py +0 -0
  204. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_1.py +0 -0
  205. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_2_type_1.py +0 -0
  206. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_3_type_1.py +0 -0
  207. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transactions_import_response.py +0 -0
  208. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transactions_import_response_data.py +0 -0
  209. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transactions_response.py +0 -0
  210. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/transactions_response_data.py +0 -0
  211. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/user.py +0 -0
  212. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/user_response.py +0 -0
  213. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/adapters/ynab/models/user_response_data.py +0 -0
  214. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/__init__.py +0 -0
  215. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/constants.py +0 -0
  216. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/models/__init__.py +0 -0
  217. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/ports/__init__.py +0 -0
  218. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/use_cases/__init__.py +0 -0
  219. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/use_cases/budgets.py +0 -0
  220. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/domain/use_cases/categories.py +0 -0
  221. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/__init__.py +0 -0
  222. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/__init__.py +0 -0
  223. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/__init__.py +0 -0
  224. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/budgets.py +0 -0
  225. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/categories.py +0 -0
  226. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/rich/__init__.py +0 -0
  227. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/commands/rich/progress_table.py +0 -0
  228. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/click/container.py +0 -0
  229. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/container.py +0 -0
  230. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/__init__.py +0 -0
  231. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/app.tcss +0 -0
  232. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/container.py +0 -0
  233. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/__init__.py +0 -0
  234. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/categories/__init__.py +0 -0
  235. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/categories/list_all.py +0 -0
  236. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/categories/list_unused.py +0 -0
  237. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/categories/tabs.py +0 -0
  238. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/common/__init__.py +0 -0
  239. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/common/command_widget.py +0 -0
  240. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/common/dialogs/__init__.py +0 -0
  241. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/common/dialogs/dialog.py +0 -0
  242. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/common/dialogs/form.py +0 -0
  243. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/common/dialogs/screen.py +0 -0
  244. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/payees/__init__.py +0 -0
  245. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/payees/list_all.py +0 -0
  246. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/payees/list_duplicates.py +0 -0
  247. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/payees/tabs.py +0 -0
  248. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/tabs.py +0 -0
  249. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/host/textual/widgets/transactions/__init__.py +0 -0
  250. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/src/ynab_cli/py.typed +0 -0
  251. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/__init__.py +0 -0
  252. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/conftest.py +0 -0
  253. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/factories/__init__.py +0 -0
  254. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/factories/ynab.py +0 -0
  255. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/__init__.py +0 -0
  256. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/adapters/__init__.py +0 -0
  257. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/adapters/rich/__init__.py +0 -0
  258. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/adapters/rich/test_io.py +0 -0
  259. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/adapters/textual/__init__.py +0 -0
  260. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/conftest.py +0 -0
  261. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/__init__.py +0 -0
  262. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/models/__init__.py +0 -0
  263. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/models/test_rules.py +0 -0
  264. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/ports/__init__.py +0 -0
  265. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/use_cases/__init__.py +0 -0
  266. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/use_cases/test_budgets.py +0 -0
  267. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/use_cases/test_categories.py +0 -0
  268. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/domain/use_cases/test_transactions.py +0 -0
  269. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/__init__.py +0 -0
  270. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/__init__.py +0 -0
  271. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/commands/__init__.py +0 -0
  272. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/commands/test_budgets.py +0 -0
  273. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/commands/test_categories.py +0 -0
  274. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/click/conftest.py +0 -0
  275. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/conftest.py +0 -0
  276. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/textual/__init__.py +0 -0
  277. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/textual/conftest.py +0 -0
  278. {ynab_cli-0.6.2 → ynab_cli-0.7.0}/tests/unit/host/textual/test_cli.py +0 -0
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## v0.7.0 (2025-09-18)
9
+
10
+ ### Feat
11
+
12
+ - update to lates ynab api definition
13
+
14
+ ### Fix
15
+
16
+ - update deps
17
+ - handle the case where we try to update internal payees better
18
+
19
+ ## v0.6.3 (2025-07-11)
20
+
21
+ ### Refactor
22
+
23
+ - clean up the dry_run parameters
24
+ - clean up debug option
25
+
8
26
  ## v0.6.2 (2025-07-09)
9
27
 
10
28
  ### Fix
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ynab-cli
3
- Version: 0.6.2
3
+ Version: 0.7.0
4
4
  Summary: YNAB Command Line Interface
5
5
  Project-URL: Changelog, https://github.com/jeffsawatzky/ynab-cli/blob/main/CHANGELOG.md
6
6
  Project-URL: Documentation, https://jeffsawatzky.github.io/ynab-cli/
@@ -18,20 +18,21 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Topic :: Office/Business :: Financial
20
20
  Classifier: Topic :: Utilities
21
- Requires-Python: >=3.11
22
- Requires-Dist: anyio~=4.9
21
+ Requires-Python: <4.0.0,>=3.11
22
+ Requires-Dist: anyio~=4.10
23
23
  Requires-Dist: attrs~=25.3
24
24
  Requires-Dist: click-default-group~=1.2
25
25
  Requires-Dist: click~=8.2
26
26
  Requires-Dist: httpx~=0.28
27
27
  Requires-Dist: lagom~=2.7
28
+ Requires-Dist: python-dateutil~=2.9
28
29
  Requires-Dist: python-dotenv~=1.1
29
- Requires-Dist: rapidfuzz~=3.13
30
- Requires-Dist: rich~=14.0
30
+ Requires-Dist: rapidfuzz~=3.14
31
+ Requires-Dist: rich~=14.1
31
32
  Requires-Dist: rule-engine~=4.5
32
- Requires-Dist: textual-fspicker~=0.4
33
- Requires-Dist: textual~=3.6
34
- Requires-Dist: typing-extensions~=4.14
33
+ Requires-Dist: textual-fspicker~=0.6
34
+ Requires-Dist: textual~=6.1
35
+ Requires-Dist: typing-extensions~=4.15
35
36
  Requires-Dist: uvloop~=0.21
36
37
  Description-Content-Type: text/markdown
37
38
 
@@ -1,9 +1,9 @@
1
1
  [project]
2
2
  name = "ynab-cli"
3
- version = "0.6.2"
3
+ version = "0.7.0"
4
4
  description = "YNAB Command Line Interface"
5
5
  readme = "README.md"
6
- requires-python = ">=3.11"
6
+ requires-python = ">=3.11,<4.0.0"
7
7
  license = "MIT"
8
8
 
9
9
  license-files = [
@@ -33,19 +33,20 @@ classifiers = [
33
33
  ]
34
34
 
35
35
  dependencies = [
36
- "anyio~=4.9",
36
+ "anyio~=4.10",
37
37
  "attrs~=25.3",
38
38
  "click-default-group~=1.2",
39
39
  "click~=8.2",
40
40
  "httpx~=0.28",
41
41
  "lagom~=2.7",
42
+ "python-dateutil~=2.9",
42
43
  "python-dotenv~=1.1",
43
- "rapidfuzz~=3.13",
44
- "rich~=14.0",
44
+ "rapidfuzz~=3.14",
45
+ "rich~=14.1",
45
46
  "rule-engine~=4.5",
46
- "textual-fspicker~=0.4",
47
- "textual~=3.6",
48
- "typing-extensions~=4.14",
47
+ "textual-fspicker~=0.6",
48
+ "textual~=6.1",
49
+ "typing-extensions~=4.15",
49
50
  "uvloop~=0.21",
50
51
  ]
51
52
 
@@ -62,19 +63,19 @@ ynab-cli = "ynab_cli.host.cli:main"
62
63
 
63
64
  [dependency-groups]
64
65
  dev = [
65
- "commitizen>=4.8.3",
66
- "factory-boy>=3.3.3",
67
- "mkdocs-click>=0.9.0",
68
- "mkdocs-material>=9.6.14",
69
- "mkdocs>=1.6.1",
70
- "mypy>=1.16.0",
71
- "pytest-cov>=6.2.1",
72
- "pytest-mock>=3.14.1",
73
- "pytest>=8.4.1",
74
- "ruff>=0.12.1",
75
- "textual-dev>=1.7.0",
76
- "trio>=0.30.0",
77
- "types-python-dateutil>=2.9.0.20250516",
66
+ "commitizen~=4.9",
67
+ "factory-boy~=3.3",
68
+ "mkdocs-click~=0.9",
69
+ "mkdocs-material~=9.6",
70
+ "mkdocs~=1.6",
71
+ "mypy~=1.18",
72
+ "pytest-cov~=7.0",
73
+ "pytest-mock~=3.15",
74
+ "pytest~=8.4",
75
+ "ruff~=0.13",
76
+ "textual-dev~=1.7",
77
+ "trio~=0.31",
78
+ "types-python-dateutil~=2.9",
78
79
  ]
79
80
 
80
81
 
@@ -23,9 +23,8 @@ def _get_kwargs(
23
23
  "url": f"/budgets/{budget_id}/accounts",
24
24
  }
25
25
 
26
- _body = body.to_dict()
26
+ _kwargs["json"] = body.to_dict()
27
27
 
28
- _kwargs["json"] = _body
29
28
  headers["Content-Type"] = "application/json"
30
29
 
31
30
  _kwargs["headers"] = headers
@@ -39,10 +38,12 @@ def _parse_response(
39
38
  response_201 = AccountResponse.from_dict(response.json())
40
39
 
41
40
  return response_201
41
+
42
42
  if response.status_code == 400:
43
43
  response_400 = ErrorResponse.from_dict(response.json())
44
44
 
45
45
  return response_400
46
+
46
47
  if client.raise_on_unexpected_status:
47
48
  raise errors.UnexpectedStatusError(response.status_code, response.content)
48
49
  else:
@@ -4,7 +4,6 @@ from uuid import UUID
4
4
 
5
5
  import httpx
6
6
 
7
- from ynab_cli.adapters.ynab import errors
8
7
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
9
8
  from ynab_cli.adapters.ynab.models.account_response import AccountResponse
10
9
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -25,19 +24,20 @@ def _get_kwargs(
25
24
 
26
25
  def _parse_response(
27
26
  *, client: AuthenticatedClient | Client, response: httpx.Response
28
- ) -> AccountResponse | ErrorResponse | None:
27
+ ) -> AccountResponse | ErrorResponse:
29
28
  if response.status_code == 200:
30
29
  response_200 = AccountResponse.from_dict(response.json())
31
30
 
32
31
  return response_200
32
+
33
33
  if response.status_code == 404:
34
34
  response_404 = ErrorResponse.from_dict(response.json())
35
35
 
36
36
  return response_404
37
- if client.raise_on_unexpected_status:
38
- raise errors.UnexpectedStatusError(response.status_code, response.content)
39
- else:
40
- return None
37
+
38
+ response_default = ErrorResponse.from_dict(response.json())
39
+
40
+ return response_default
41
41
 
42
42
 
43
43
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.accounts_response import AccountsResponse
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -32,19 +31,20 @@ def _get_kwargs(
32
31
 
33
32
  def _parse_response(
34
33
  *, client: AuthenticatedClient | Client, response: httpx.Response
35
- ) -> AccountsResponse | ErrorResponse | None:
34
+ ) -> AccountsResponse | ErrorResponse:
36
35
  if response.status_code == 200:
37
36
  response_200 = AccountsResponse.from_dict(response.json())
38
37
 
39
38
  return response_200
39
+
40
40
  if response.status_code == 404:
41
41
  response_404 = ErrorResponse.from_dict(response.json())
42
42
 
43
43
  return response_404
44
- if client.raise_on_unexpected_status:
45
- raise errors.UnexpectedStatusError(response.status_code, response.content)
46
- else:
47
- return None
44
+
45
+ response_default = ErrorResponse.from_dict(response.json())
46
+
47
+ return response_default
48
48
 
49
49
 
50
50
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.budget_detail_response import BudgetDetailResponse
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -32,19 +31,20 @@ def _get_kwargs(
32
31
 
33
32
  def _parse_response(
34
33
  *, client: AuthenticatedClient | Client, response: httpx.Response
35
- ) -> BudgetDetailResponse | ErrorResponse | None:
34
+ ) -> BudgetDetailResponse | ErrorResponse:
36
35
  if response.status_code == 200:
37
36
  response_200 = BudgetDetailResponse.from_dict(response.json())
38
37
 
39
38
  return response_200
39
+
40
40
  if response.status_code == 404:
41
41
  response_404 = ErrorResponse.from_dict(response.json())
42
42
 
43
43
  return response_404
44
- if client.raise_on_unexpected_status:
45
- raise errors.UnexpectedStatusError(response.status_code, response.content)
46
- else:
47
- return None
44
+
45
+ response_default = ErrorResponse.from_dict(response.json())
46
+
47
+ return response_default
48
48
 
49
49
 
50
50
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.budget_settings_response import BudgetSettingsResponse
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -23,19 +22,20 @@ def _get_kwargs(
23
22
 
24
23
  def _parse_response(
25
24
  *, client: AuthenticatedClient | Client, response: httpx.Response
26
- ) -> BudgetSettingsResponse | ErrorResponse | None:
25
+ ) -> BudgetSettingsResponse | ErrorResponse:
27
26
  if response.status_code == 200:
28
27
  response_200 = BudgetSettingsResponse.from_dict(response.json())
29
28
 
30
29
  return response_200
30
+
31
31
  if response.status_code == 404:
32
32
  response_404 = ErrorResponse.from_dict(response.json())
33
33
 
34
34
  return response_404
35
- if client.raise_on_unexpected_status:
36
- raise errors.UnexpectedStatusError(response.status_code, response.content)
37
- else:
38
- return None
35
+
36
+ response_default = ErrorResponse.from_dict(response.json())
37
+
38
+ return response_default
39
39
 
40
40
 
41
41
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.budget_summary_response import BudgetSummaryResponse
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -31,19 +30,20 @@ def _get_kwargs(
31
30
 
32
31
  def _parse_response(
33
32
  *, client: AuthenticatedClient | Client, response: httpx.Response
34
- ) -> BudgetSummaryResponse | ErrorResponse | None:
33
+ ) -> BudgetSummaryResponse | ErrorResponse:
35
34
  if response.status_code == 200:
36
35
  response_200 = BudgetSummaryResponse.from_dict(response.json())
37
36
 
38
37
  return response_200
38
+
39
39
  if response.status_code == 404:
40
40
  response_404 = ErrorResponse.from_dict(response.json())
41
41
 
42
42
  return response_404
43
- if client.raise_on_unexpected_status:
44
- raise errors.UnexpectedStatusError(response.status_code, response.content)
45
- else:
46
- return None
43
+
44
+ response_default = ErrorResponse.from_dict(response.json())
45
+
46
+ return response_default
47
47
 
48
48
 
49
49
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.categories_response import CategoriesResponse
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -32,19 +31,20 @@ def _get_kwargs(
32
31
 
33
32
  def _parse_response(
34
33
  *, client: AuthenticatedClient | Client, response: httpx.Response
35
- ) -> CategoriesResponse | ErrorResponse | None:
34
+ ) -> CategoriesResponse | ErrorResponse:
36
35
  if response.status_code == 200:
37
36
  response_200 = CategoriesResponse.from_dict(response.json())
38
37
 
39
38
  return response_200
39
+
40
40
  if response.status_code == 404:
41
41
  response_404 = ErrorResponse.from_dict(response.json())
42
42
 
43
43
  return response_404
44
- if client.raise_on_unexpected_status:
45
- raise errors.UnexpectedStatusError(response.status_code, response.content)
46
- else:
47
- return None
44
+
45
+ response_default = ErrorResponse.from_dict(response.json())
46
+
47
+ return response_default
48
48
 
49
49
 
50
50
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.category_response import CategoryResponse
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -24,19 +23,20 @@ def _get_kwargs(
24
23
 
25
24
  def _parse_response(
26
25
  *, client: AuthenticatedClient | Client, response: httpx.Response
27
- ) -> CategoryResponse | ErrorResponse | None:
26
+ ) -> CategoryResponse | ErrorResponse:
28
27
  if response.status_code == 200:
29
28
  response_200 = CategoryResponse.from_dict(response.json())
30
29
 
31
30
  return response_200
31
+
32
32
  if response.status_code == 404:
33
33
  response_404 = ErrorResponse.from_dict(response.json())
34
34
 
35
35
  return response_404
36
- if client.raise_on_unexpected_status:
37
- raise errors.UnexpectedStatusError(response.status_code, response.content)
38
- else:
39
- return None
36
+
37
+ response_default = ErrorResponse.from_dict(response.json())
38
+
39
+ return response_default
40
40
 
41
41
 
42
42
  def _build_response(
@@ -4,7 +4,6 @@ from typing import Any
4
4
 
5
5
  import httpx
6
6
 
7
- from ynab_cli.adapters.ynab import errors
8
7
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
9
8
  from ynab_cli.adapters.ynab.models.category_response import CategoryResponse
10
9
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
@@ -26,19 +25,20 @@ def _get_kwargs(
26
25
 
27
26
  def _parse_response(
28
27
  *, client: AuthenticatedClient | Client, response: httpx.Response
29
- ) -> CategoryResponse | ErrorResponse | None:
28
+ ) -> CategoryResponse | ErrorResponse:
30
29
  if response.status_code == 200:
31
30
  response_200 = CategoryResponse.from_dict(response.json())
32
31
 
33
32
  return response_200
33
+
34
34
  if response.status_code == 404:
35
35
  response_404 = ErrorResponse.from_dict(response.json())
36
36
 
37
37
  return response_404
38
- if client.raise_on_unexpected_status:
39
- raise errors.UnexpectedStatusError(response.status_code, response.content)
40
- else:
41
- return None
38
+
39
+ response_default = ErrorResponse.from_dict(response.json())
40
+
41
+ return response_default
42
42
 
43
43
 
44
44
  def _build_response(
@@ -24,9 +24,8 @@ def _get_kwargs(
24
24
  "url": f"/budgets/{budget_id}/categories/{category_id}",
25
25
  }
26
26
 
27
- _body = body.to_dict()
27
+ _kwargs["json"] = body.to_dict()
28
28
 
29
- _kwargs["json"] = _body
30
29
  headers["Content-Type"] = "application/json"
31
30
 
32
31
  _kwargs["headers"] = headers
@@ -40,10 +39,12 @@ def _parse_response(
40
39
  response_200 = SaveCategoryResponse.from_dict(response.json())
41
40
 
42
41
  return response_200
42
+
43
43
  if response.status_code == 400:
44
44
  response_400 = ErrorResponse.from_dict(response.json())
45
45
 
46
46
  return response_400
47
+
47
48
  if client.raise_on_unexpected_status:
48
49
  raise errors.UnexpectedStatusError(response.status_code, response.content)
49
50
  else:
@@ -26,9 +26,8 @@ def _get_kwargs(
26
26
  "url": f"/budgets/{budget_id}/months/{month}/categories/{category_id}",
27
27
  }
28
28
 
29
- _body = body.to_dict()
29
+ _kwargs["json"] = body.to_dict()
30
30
 
31
- _kwargs["json"] = _body
32
31
  headers["Content-Type"] = "application/json"
33
32
 
34
33
  _kwargs["headers"] = headers
@@ -42,10 +41,12 @@ def _parse_response(
42
41
  response_200 = SaveCategoryResponse.from_dict(response.json())
43
42
 
44
43
  return response_200
44
+
45
45
  if response.status_code == 400:
46
46
  response_400 = ErrorResponse.from_dict(response.json())
47
47
 
48
48
  return response_400
49
+
49
50
  if client.raise_on_unexpected_status:
50
51
  raise errors.UnexpectedStatusError(response.status_code, response.content)
51
52
  else:
@@ -4,7 +4,6 @@ from typing import Any
4
4
 
5
5
  import httpx
6
6
 
7
- from ynab_cli.adapters.ynab import errors
8
7
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
9
8
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
10
9
  from ynab_cli.adapters.ynab.models.month_detail_response import MonthDetailResponse
@@ -25,19 +24,20 @@ def _get_kwargs(
25
24
 
26
25
  def _parse_response(
27
26
  *, client: AuthenticatedClient | Client, response: httpx.Response
28
- ) -> ErrorResponse | MonthDetailResponse | None:
27
+ ) -> ErrorResponse | MonthDetailResponse:
29
28
  if response.status_code == 200:
30
29
  response_200 = MonthDetailResponse.from_dict(response.json())
31
30
 
32
31
  return response_200
32
+
33
33
  if response.status_code == 404:
34
34
  response_404 = ErrorResponse.from_dict(response.json())
35
35
 
36
36
  return response_404
37
- if client.raise_on_unexpected_status:
38
- raise errors.UnexpectedStatusError(response.status_code, response.content)
39
- else:
40
- return None
37
+
38
+ response_default = ErrorResponse.from_dict(response.json())
39
+
40
+ return response_default
41
41
 
42
42
 
43
43
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
9
8
  from ynab_cli.adapters.ynab.models.month_summaries_response import MonthSummariesResponse
@@ -32,19 +31,20 @@ def _get_kwargs(
32
31
 
33
32
  def _parse_response(
34
33
  *, client: AuthenticatedClient | Client, response: httpx.Response
35
- ) -> ErrorResponse | MonthSummariesResponse | None:
34
+ ) -> ErrorResponse | MonthSummariesResponse:
36
35
  if response.status_code == 200:
37
36
  response_200 = MonthSummariesResponse.from_dict(response.json())
38
37
 
39
38
  return response_200
39
+
40
40
  if response.status_code == 404:
41
41
  response_404 = ErrorResponse.from_dict(response.json())
42
42
 
43
43
  return response_404
44
- if client.raise_on_unexpected_status:
45
- raise errors.UnexpectedStatusError(response.status_code, response.content)
46
- else:
47
- return None
44
+
45
+ response_default = ErrorResponse.from_dict(response.json())
46
+
47
+ return response_default
48
48
 
49
49
 
50
50
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
9
8
  from ynab_cli.adapters.ynab.models.payee_location_response import PayeeLocationResponse
@@ -24,19 +23,20 @@ def _get_kwargs(
24
23
 
25
24
  def _parse_response(
26
25
  *, client: AuthenticatedClient | Client, response: httpx.Response
27
- ) -> ErrorResponse | PayeeLocationResponse | None:
26
+ ) -> ErrorResponse | PayeeLocationResponse:
28
27
  if response.status_code == 200:
29
28
  response_200 = PayeeLocationResponse.from_dict(response.json())
30
29
 
31
30
  return response_200
31
+
32
32
  if response.status_code == 404:
33
33
  response_404 = ErrorResponse.from_dict(response.json())
34
34
 
35
35
  return response_404
36
- if client.raise_on_unexpected_status:
37
- raise errors.UnexpectedStatusError(response.status_code, response.content)
38
- else:
39
- return None
36
+
37
+ response_default = ErrorResponse.from_dict(response.json())
38
+
39
+ return response_default
40
40
 
41
41
 
42
42
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
9
8
  from ynab_cli.adapters.ynab.models.payee_locations_response import PayeeLocationsResponse
@@ -23,19 +22,20 @@ def _get_kwargs(
23
22
 
24
23
  def _parse_response(
25
24
  *, client: AuthenticatedClient | Client, response: httpx.Response
26
- ) -> ErrorResponse | PayeeLocationsResponse | None:
25
+ ) -> ErrorResponse | PayeeLocationsResponse:
27
26
  if response.status_code == 200:
28
27
  response_200 = PayeeLocationsResponse.from_dict(response.json())
29
28
 
30
29
  return response_200
30
+
31
31
  if response.status_code == 404:
32
32
  response_404 = ErrorResponse.from_dict(response.json())
33
33
 
34
34
  return response_404
35
- if client.raise_on_unexpected_status:
36
- raise errors.UnexpectedStatusError(response.status_code, response.content)
37
- else:
38
- return None
35
+
36
+ response_default = ErrorResponse.from_dict(response.json())
37
+
38
+ return response_default
39
39
 
40
40
 
41
41
  def _build_response(
@@ -3,7 +3,6 @@ from typing import Any
3
3
 
4
4
  import httpx
5
5
 
6
- from ynab_cli.adapters.ynab import errors
7
6
  from ynab_cli.adapters.ynab.client import AuthenticatedClient, Client
8
7
  from ynab_cli.adapters.ynab.models.error_response import ErrorResponse
9
8
  from ynab_cli.adapters.ynab.models.payee_locations_response import PayeeLocationsResponse
@@ -24,19 +23,20 @@ def _get_kwargs(
24
23
 
25
24
  def _parse_response(
26
25
  *, client: AuthenticatedClient | Client, response: httpx.Response
27
- ) -> ErrorResponse | PayeeLocationsResponse | None:
26
+ ) -> ErrorResponse | PayeeLocationsResponse:
28
27
  if response.status_code == 200:
29
28
  response_200 = PayeeLocationsResponse.from_dict(response.json())
30
29
 
31
30
  return response_200
31
+
32
32
  if response.status_code == 404:
33
33
  response_404 = ErrorResponse.from_dict(response.json())
34
34
 
35
35
  return response_404
36
- if client.raise_on_unexpected_status:
37
- raise errors.UnexpectedStatusError(response.status_code, response.content)
38
- else:
39
- return None
36
+
37
+ response_default = ErrorResponse.from_dict(response.json())
38
+
39
+ return response_default
40
40
 
41
41
 
42
42
  def _build_response(