ynab-cli 0.4.0__tar.gz → 0.5.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.
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/.github/workflows/pr.yml +3 -1
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/.gitignore +3 -1
- ynab_cli-0.5.0/CHANGELOG.md +11 -0
- ynab_cli-0.5.0/Makefile +45 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/PKG-INFO +5 -1
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/docs/index.md +1 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/mkdocs.yml +1 -1
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/pyproject.toml +55 -39
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/cli.py +1 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/uv.lock +22 -22
- ynab_cli-0.4.0/CHANGELOG.md +0 -41
- ynab_cli-0.4.0/Makefile +0 -30
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/.env-sample +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/.github/FUNDING.yml +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/.github/workflows/publish-to-pypi.yml +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/.python-version +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/LICENSE.md +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/README.md +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/docs/transaction_rules.md +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/rich/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/rich/io.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/textual/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/textual/io.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/accounts/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/accounts/create_account.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/accounts/get_account_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/accounts/get_accounts.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/budgets/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budget_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budget_settings_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budgets.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/get_categories.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/get_category_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/get_month_category_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/update_category.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/update_month_category.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/months/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/months/get_budget_month.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/months/get_budget_months.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payee_locations/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payee_locations/get_payee_location_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payee_locations/get_payee_locations.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payee_locations/get_payee_locations_by_payee.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payees/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payees/get_payee_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payees/get_payees.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payees/update_payee.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/create_scheduled_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/delete_scheduled_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/get_scheduled_transaction_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/get_scheduled_transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/update_scheduled_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/create_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/delete_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transaction_by_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_account.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_category.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_month.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions_by_payee.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/import_transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/update_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/update_transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/user/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/user/get_user.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/client.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/errors.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/account.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/account_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/account_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/account_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/accounts_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/accounts_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_detail.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_detail_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_detail_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_settings.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_settings_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_settings_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_summary.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_summary_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_summary_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/bulk_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/bulk_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/bulk_response_data_bulk.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/bulk_transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/categories_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/categories_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_goal_type_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_goal_type_type_2_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_goal_type_type_3_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_group.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_group_with_categories.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/category_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/currency_format_type_0.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/date_format_type_0.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/error_detail.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/error_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/existing_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_account_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_category_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_month_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/get_transactions_by_payee_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/get_transactions_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/hybrid_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/hybrid_transaction_type.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/hybrid_transactions_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/hybrid_transactions_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/loan_account_periodic_value_type_0.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/month_detail.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/month_detail_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/month_detail_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/month_summaries_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/month_summaries_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/month_summary.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/new_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/patch_category_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/patch_month_category_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/patch_payee_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/patch_transactions_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_location.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_location_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_location_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_locations_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_locations_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payee_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payees_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/payees_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/post_account_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/post_scheduled_transaction_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/post_transactions_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/put_scheduled_transaction_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/put_transaction_wrapper.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_account.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_category.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_category_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_category_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_month_category.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_payee.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_payee_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_payee_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_scheduled_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_sub_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_transaction_with_id_or_import_id.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_transaction_with_optional_fields.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_transactions_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/save_transactions_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_sub_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_detail.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_frequency.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_summary.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transaction_summary_frequency.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transactions_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/scheduled_transactions_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/sub_transaction.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_cleared_status.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_detail.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_flag_color_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_flag_color_type_2_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_flag_color_type_3_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_summary.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_2_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_3_type_1.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transactions_import_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transactions_import_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transactions_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/transactions_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/user.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/user_response.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/user_response_data.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/types.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/util.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/constants.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/models/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/models/rules.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/ports/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/ports/io.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/settings.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/use_cases/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/use_cases/budgets.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/use_cases/categories.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/use_cases/payees.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/domain/use_cases/transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/cli.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/budgets.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/categories.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/payees.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/rich/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/rich/progress_table.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/click/commands/transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/constants.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/app.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/app.tcss +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/cli.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/widgets/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/widgets/categories.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/widgets/payees.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/host/textual/widgets/transactions.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/py.typed +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/factories/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/factories/ynab.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/conftest.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/domain/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/domain/use_cases/__init__.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/domain/use_cases/test_categories.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/domain/use_cases/test_payees.py +0 -0
- {ynab_cli-0.4.0 → ynab_cli-0.5.0}/tests/unit/domain/use_cases/test_transactions.py +0 -0
|
@@ -19,4 +19,6 @@ jobs:
|
|
|
19
19
|
- run: uv run ruff format --check . # check formatting is correct
|
|
20
20
|
- run: uv run ruff check --no-fix . # and linting
|
|
21
21
|
- run: uv run mypy . # typecheck too
|
|
22
|
-
- run: uv run pytest tests # then run your tests!
|
|
22
|
+
- run: uv run pytest tests # then run your tests!
|
|
23
|
+
- run: uv build # make sure the package builds
|
|
24
|
+
- run: uv run mkdocs build # make sure the docs build
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
## v0.5.0 (2025-06-06)
|
|
8
|
+
|
|
9
|
+
### Feat
|
|
10
|
+
|
|
11
|
+
- implement initial cli
|
ynab_cli-0.5.0/Makefile
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
.PHONY: lint test clean version
|
|
2
|
+
|
|
3
|
+
.venv: pyproject.toml # the python virtual environment
|
|
4
|
+
uv sync
|
|
5
|
+
touch .venv
|
|
6
|
+
|
|
7
|
+
lint: .venv # run linters and type checkers
|
|
8
|
+
uv run ruff format .
|
|
9
|
+
uv run ruff check .
|
|
10
|
+
uv run mypy .
|
|
11
|
+
|
|
12
|
+
test: .venv lint # run tests with coverage
|
|
13
|
+
uv run pytest --cov=src tests
|
|
14
|
+
|
|
15
|
+
clean: # clean up build artifacts and caches
|
|
16
|
+
rm -f .coverage
|
|
17
|
+
rm -rf dist
|
|
18
|
+
rm -rf htmlcov
|
|
19
|
+
rm -rf site
|
|
20
|
+
find . -type f -name .DS_Store | xargs rm -rf
|
|
21
|
+
find . -type d -name __pycache__ | xargs rm -rf
|
|
22
|
+
find . -type d -name .mypy_cache | xargs rm -rf
|
|
23
|
+
find . -type d -name .pytest_cache | xargs rm -rf
|
|
24
|
+
find . -type d -name .ruff_cache | xargs rm -rf
|
|
25
|
+
find . -type d -empty -delete
|
|
26
|
+
|
|
27
|
+
ynab-sdk: # regenerate the YNAB SDK from the OpenAPI spec
|
|
28
|
+
rm -rf ./src/ynab_cli/adapters/ynab
|
|
29
|
+
mkdir -p ./src/ynab_cli/adapters/ynab
|
|
30
|
+
uvx openapi-python-client generate --meta none --url https://api.ynab.com/papi/open_api_spec.yaml --output-path ./src/ynab_cli/adapters/ynab --overwrite
|
|
31
|
+
|
|
32
|
+
dist: clean # build the distribution package
|
|
33
|
+
uv build
|
|
34
|
+
|
|
35
|
+
site: clean # build the documentation site
|
|
36
|
+
uv run mkdocs build
|
|
37
|
+
|
|
38
|
+
site-serve: clean # serve the documentation site locally
|
|
39
|
+
uv run mkdocs serve
|
|
40
|
+
|
|
41
|
+
site-gh: clean # deploy the documentation site to GitHub Pages
|
|
42
|
+
uv run mkdocs gh-deploy
|
|
43
|
+
|
|
44
|
+
version: clean # update the version in pyproject.toml and create a new tag
|
|
45
|
+
cz bump
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ynab-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: YNAB Command Line Interface
|
|
5
|
+
Project-URL: documentation, https://jeffsawatzky.github.io/ynab-cli/
|
|
6
|
+
Project-URL: source, https://github.com/jeffsawatzky/ynab-cli
|
|
7
|
+
Project-URL: funding, https://github.com/sponsors/jeffsawatzky
|
|
5
8
|
Author: Jeff Sawatzky
|
|
6
9
|
License-File: LICENSE.md
|
|
10
|
+
Keywords: budget,cli,click,textual,ynab
|
|
7
11
|
Requires-Python: >=3.11
|
|
8
12
|
Requires-Dist: attrs~=25.3
|
|
9
13
|
Requires-Dist: click-default-group~=1.2
|
|
@@ -11,6 +11,7 @@ This is a simple cli/tui application written in python to help manage your YNAB
|
|
|
11
11
|
Developer access tokens are rate limited to 200 requests per hour. Some of the commands below will provide you an opportunity to enter a new developer access token when the current one has exceeded it's limit. It also seems like there is a limit to how many developer access tokens you can create from the developer settings UI.
|
|
12
12
|
|
|
13
13
|
- Your YNAB budget ID. Once you have `uv` and your `access token` you can list your budgets by running:
|
|
14
|
+
|
|
14
15
|
```sh
|
|
15
16
|
$ uvx ynab-cli run --access-token your_access_token budgets list-all
|
|
16
17
|
```
|
|
@@ -1,44 +1,59 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ynab-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.5.0"
|
|
4
4
|
description = "YNAB Command Line Interface"
|
|
5
5
|
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.11"
|
|
7
|
+
license-files = [
|
|
8
|
+
"LICENSE.md"
|
|
9
|
+
]
|
|
6
10
|
authors = [
|
|
7
|
-
|
|
11
|
+
{ name = "Jeff Sawatzky" }
|
|
12
|
+
]
|
|
13
|
+
keywords = [
|
|
14
|
+
"ynab",
|
|
15
|
+
"cli",
|
|
16
|
+
"textual",
|
|
17
|
+
"click",
|
|
18
|
+
"budget",
|
|
8
19
|
]
|
|
9
|
-
requires-python = ">=3.11"
|
|
10
20
|
dependencies = [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
"attrs~=25.3",
|
|
22
|
+
"click-default-group~=1.2",
|
|
23
|
+
"click~=8.2",
|
|
24
|
+
"httpx~=0.28",
|
|
25
|
+
"python-dotenv~=1.1",
|
|
26
|
+
"rapidfuzz~=3.13",
|
|
27
|
+
"rich~=14.0",
|
|
28
|
+
"rule-engine~=4.5",
|
|
29
|
+
"textual-fspicker~=0.4",
|
|
30
|
+
"textual~=3.3",
|
|
31
|
+
"typing-extensions~=4.14",
|
|
22
32
|
]
|
|
23
33
|
|
|
34
|
+
[project.urls]
|
|
35
|
+
documentation = "https://jeffsawatzky.github.io/ynab-cli/"
|
|
36
|
+
source = "https://github.com/jeffsawatzky/ynab-cli"
|
|
37
|
+
funding = "https://github.com/sponsors/jeffsawatzky"
|
|
38
|
+
|
|
24
39
|
[project.scripts]
|
|
25
40
|
ynab-cli = "ynab_cli.host.cli:main"
|
|
26
41
|
|
|
27
42
|
|
|
28
43
|
[dependency-groups]
|
|
29
44
|
dev = [
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
"factory-boy>=3.3.3",
|
|
46
|
+
"mkdocs-click>=0.9.0",
|
|
47
|
+
"mkdocs-material>=9.6.14",
|
|
48
|
+
"mkdocs>=1.6.1",
|
|
49
|
+
"mypy>=1.16.0",
|
|
50
|
+
"pytest-asyncio>=1.0.0",
|
|
51
|
+
"pytest-cov>=6.1.1",
|
|
52
|
+
"pytest-mock>=3.14.1",
|
|
53
|
+
"pytest>=8.4.0",
|
|
54
|
+
"ruff>=0.11.12",
|
|
55
|
+
"textual-dev>=1.7.0",
|
|
56
|
+
"types-python-dateutil>=2.9.0.20250516",
|
|
42
57
|
]
|
|
43
58
|
|
|
44
59
|
|
|
@@ -73,21 +88,21 @@ target-version = "py311"
|
|
|
73
88
|
|
|
74
89
|
[tool.ruff.lint]
|
|
75
90
|
extend-select = [
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
"W", # warnings
|
|
92
|
+
"I", # isort
|
|
93
|
+
"C90", # mccabe
|
|
94
|
+
"N", # pep8-naming
|
|
95
|
+
"UP", # pyupgrade
|
|
96
|
+
"S", # flake8-bandit
|
|
97
|
+
"B", # flake8-bugbear
|
|
98
|
+
"A", # flake8-builtins
|
|
99
|
+
"DTZ", # flake8-datetimez
|
|
100
|
+
"PT", # flake8-pytest-style
|
|
101
|
+
"TID", # flake8-tidy-imports
|
|
102
|
+
"RUF", # ruff specific rules
|
|
88
103
|
]
|
|
89
104
|
extend-ignore = [
|
|
90
|
-
|
|
105
|
+
"S110", # `try`-`except`-`pass` detected
|
|
91
106
|
]
|
|
92
107
|
|
|
93
108
|
[tool.ruff.lint.per-file-ignores]
|
|
@@ -105,6 +120,7 @@ builtins-ignorelist = ["type", "id"]
|
|
|
105
120
|
|
|
106
121
|
[tool.commitizen]
|
|
107
122
|
name = "cz_conventional_commits"
|
|
123
|
+
annotated_tag = true
|
|
108
124
|
tag_format = "v$version"
|
|
109
125
|
version_scheme = "pep440"
|
|
110
126
|
version_provider = "uv"
|
|
@@ -10,6 +10,7 @@ from ynab_cli.host.textual.cli import tui
|
|
|
10
10
|
@click.group(cls=DefaultGroup, default="tui", default_if_no_args=True)
|
|
11
11
|
@click.option("--dry-run", is_flag=True, default=False, help="Run without making any changes.")
|
|
12
12
|
@click.option("--debug", is_flag=True, default=False, help="Enable debug mode for more verbose output.")
|
|
13
|
+
@click.version_option()
|
|
13
14
|
@click.pass_context
|
|
14
15
|
def cli(
|
|
15
16
|
ctx: click.Context,
|
|
@@ -1197,27 +1197,27 @@ wheels = [
|
|
|
1197
1197
|
|
|
1198
1198
|
[[package]]
|
|
1199
1199
|
name = "ruff"
|
|
1200
|
-
version = "0.11.
|
|
1201
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1202
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1203
|
-
wheels = [
|
|
1204
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1205
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1206
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1207
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1208
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1209
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1210
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1211
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1212
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1213
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1214
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1215
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1216
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1217
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1218
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1219
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1220
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1200
|
+
version = "0.11.13"
|
|
1201
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1202
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ed/da/9c6f995903b4d9474b39da91d2d626659af3ff1eeb43e9ae7c119349dba6/ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514", size = 4282054, upload-time = "2025-06-05T21:00:15.721Z" }
|
|
1203
|
+
wheels = [
|
|
1204
|
+
{ url = "https://files.pythonhosted.org/packages/7d/ce/a11d381192966e0b4290842cc8d4fac7dc9214ddf627c11c1afff87da29b/ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46", size = 10292516, upload-time = "2025-06-05T20:59:32.944Z" },
|
|
1205
|
+
{ url = "https://files.pythonhosted.org/packages/78/db/87c3b59b0d4e753e40b6a3b4a2642dfd1dcaefbff121ddc64d6c8b47ba00/ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48", size = 11106083, upload-time = "2025-06-05T20:59:37.03Z" },
|
|
1206
|
+
{ url = "https://files.pythonhosted.org/packages/77/79/d8cec175856ff810a19825d09ce700265f905c643c69f45d2b737e4a470a/ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b", size = 10436024, upload-time = "2025-06-05T20:59:39.741Z" },
|
|
1207
|
+
{ url = "https://files.pythonhosted.org/packages/8b/5b/f6d94f2980fa1ee854b41568368a2e1252681b9238ab2895e133d303538f/ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a", size = 10646324, upload-time = "2025-06-05T20:59:42.185Z" },
|
|
1208
|
+
{ url = "https://files.pythonhosted.org/packages/6c/9c/b4c2acf24ea4426016d511dfdc787f4ce1ceb835f3c5fbdbcb32b1c63bda/ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc", size = 10174416, upload-time = "2025-06-05T20:59:44.319Z" },
|
|
1209
|
+
{ url = "https://files.pythonhosted.org/packages/f3/10/e2e62f77c65ede8cd032c2ca39c41f48feabedb6e282bfd6073d81bb671d/ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629", size = 11724197, upload-time = "2025-06-05T20:59:46.935Z" },
|
|
1210
|
+
{ url = "https://files.pythonhosted.org/packages/bb/f0/466fe8469b85c561e081d798c45f8a1d21e0b4a5ef795a1d7f1a9a9ec182/ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933", size = 12511615, upload-time = "2025-06-05T20:59:49.534Z" },
|
|
1211
|
+
{ url = "https://files.pythonhosted.org/packages/17/0e/cefe778b46dbd0cbcb03a839946c8f80a06f7968eb298aa4d1a4293f3448/ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165", size = 12117080, upload-time = "2025-06-05T20:59:51.654Z" },
|
|
1212
|
+
{ url = "https://files.pythonhosted.org/packages/5d/2c/caaeda564cbe103bed145ea557cb86795b18651b0f6b3ff6a10e84e5a33f/ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71", size = 11326315, upload-time = "2025-06-05T20:59:54.469Z" },
|
|
1213
|
+
{ url = "https://files.pythonhosted.org/packages/75/f0/782e7d681d660eda8c536962920c41309e6dd4ebcea9a2714ed5127d44bd/ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9", size = 11555640, upload-time = "2025-06-05T20:59:56.986Z" },
|
|
1214
|
+
{ url = "https://files.pythonhosted.org/packages/5d/d4/3d580c616316c7f07fb3c99dbecfe01fbaea7b6fd9a82b801e72e5de742a/ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc", size = 10507364, upload-time = "2025-06-05T20:59:59.154Z" },
|
|
1215
|
+
{ url = "https://files.pythonhosted.org/packages/5a/dc/195e6f17d7b3ea6b12dc4f3e9de575db7983db187c378d44606e5d503319/ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7", size = 10141462, upload-time = "2025-06-05T21:00:01.481Z" },
|
|
1216
|
+
{ url = "https://files.pythonhosted.org/packages/f4/8e/39a094af6967faa57ecdeacb91bedfb232474ff8c3d20f16a5514e6b3534/ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432", size = 11121028, upload-time = "2025-06-05T21:00:04.06Z" },
|
|
1217
|
+
{ url = "https://files.pythonhosted.org/packages/5a/c0/b0b508193b0e8a1654ec683ebab18d309861f8bd64e3a2f9648b80d392cb/ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492", size = 11602992, upload-time = "2025-06-05T21:00:06.249Z" },
|
|
1218
|
+
{ url = "https://files.pythonhosted.org/packages/7c/91/263e33ab93ab09ca06ce4f8f8547a858cc198072f873ebc9be7466790bae/ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250", size = 10474944, upload-time = "2025-06-05T21:00:08.459Z" },
|
|
1219
|
+
{ url = "https://files.pythonhosted.org/packages/46/f4/7c27734ac2073aae8efb0119cae6931b6fb48017adf048fdf85c19337afc/ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3", size = 11548669, upload-time = "2025-06-05T21:00:11.147Z" },
|
|
1220
|
+
{ url = "https://files.pythonhosted.org/packages/ec/bf/b273dd11673fed8a6bd46032c0ea2a04b2ac9bfa9c628756a5856ba113b0/ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b", size = 10683928, upload-time = "2025-06-05T21:00:13.758Z" },
|
|
1221
1221
|
]
|
|
1222
1222
|
|
|
1223
1223
|
[[package]]
|
|
@@ -1503,7 +1503,7 @@ wheels = [
|
|
|
1503
1503
|
|
|
1504
1504
|
[[package]]
|
|
1505
1505
|
name = "ynab-cli"
|
|
1506
|
-
version = "0.
|
|
1506
|
+
version = "0.5.0"
|
|
1507
1507
|
source = { editable = "." }
|
|
1508
1508
|
dependencies = [
|
|
1509
1509
|
{ name = "attrs" },
|
ynab_cli-0.4.0/CHANGELOG.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
## 0.2.0 (2025-06-06)
|
|
2
|
-
|
|
3
|
-
### BREAKING CHANGE
|
|
4
|
-
|
|
5
|
-
- changes the way the commands need to be run. You now need to specify the "run" command before any of the subcommands
|
|
6
|
-
|
|
7
|
-
### Feat
|
|
8
|
-
|
|
9
|
-
- added a feature to prefix unused payees to make them easier to find and delete in ynab
|
|
10
|
-
- added a list all command to payees
|
|
11
|
-
- add a textual based tui
|
|
12
|
-
- use rich for better user feedback
|
|
13
|
-
- implement initial cli
|
|
14
|
-
|
|
15
|
-
### Refactor
|
|
16
|
-
|
|
17
|
-
- cleaned up some code, sorted lists, and improved the file selector
|
|
18
|
-
|
|
19
|
-
## v0.4.0 (2025-06-06)
|
|
20
|
-
|
|
21
|
-
### Feat
|
|
22
|
-
|
|
23
|
-
- **budgets**: added a command to list all budgets
|
|
24
|
-
|
|
25
|
-
## v0.3.0 (2025-06-06)
|
|
26
|
-
|
|
27
|
-
### BREAKING CHANGE
|
|
28
|
-
|
|
29
|
-
- changes the way the commands need to be run. You now need to specify the "run" command before any of the subcommands
|
|
30
|
-
|
|
31
|
-
### Feat
|
|
32
|
-
|
|
33
|
-
- added a feature to prefix unused payees to make them easier to find and delete in ynab
|
|
34
|
-
- added a list all command to payees
|
|
35
|
-
- add a textual based tui
|
|
36
|
-
- use rich for better user feedback
|
|
37
|
-
- implement initial cli
|
|
38
|
-
|
|
39
|
-
### Refactor
|
|
40
|
-
|
|
41
|
-
- cleaned up some code, sorted lists, and improved the file selector
|
ynab_cli-0.4.0/Makefile
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
.PHONY: lint test clean
|
|
2
|
-
|
|
3
|
-
.venv: pyproject.toml
|
|
4
|
-
uv sync
|
|
5
|
-
touch .venv
|
|
6
|
-
|
|
7
|
-
lint: .venv
|
|
8
|
-
uv run ruff format .
|
|
9
|
-
uv run ruff check .
|
|
10
|
-
uv run mypy .
|
|
11
|
-
|
|
12
|
-
test: .venv lint
|
|
13
|
-
uv run pytest --cov=src tests
|
|
14
|
-
|
|
15
|
-
clean:
|
|
16
|
-
rm -f .coverage
|
|
17
|
-
rm -rf dist
|
|
18
|
-
rm -rf htmlcov
|
|
19
|
-
rm -rf site
|
|
20
|
-
find . -type f -name .DS_Store | xargs rm -rf
|
|
21
|
-
find . -type d -name __pycache__ | xargs rm -rf
|
|
22
|
-
find . -type d -name .mypy_cache | xargs rm -rf
|
|
23
|
-
find . -type d -name .pytest_cache | xargs rm -rf
|
|
24
|
-
find . -type d -name .ruff_cache | xargs rm -rf
|
|
25
|
-
find . -type d -empty -delete
|
|
26
|
-
|
|
27
|
-
ynab-sdk:
|
|
28
|
-
rm -rf ./src/ynab_cli/adapters/ynab
|
|
29
|
-
mkdir -p ./src/ynab_cli/adapters/ynab
|
|
30
|
-
uvx openapi-python-client generate --meta none --url https://api.ynab.com/papi/open_api_spec.yaml --output-path ./src/ynab_cli/adapters/ynab --overwrite
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/accounts/get_account_by_id.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/budgets/get_budget_by_id.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/get_categories.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/get_category_by_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/update_category.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/categories/update_month_category.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/months/get_budget_months.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/payee_locations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/scheduled_transactions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/create_transaction.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/delete_transaction.py
RENAMED
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/get_transactions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/import_transactions.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/update_transaction.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/api/transactions/update_transactions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/account_response_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/accounts_response_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_detail_response.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_detail_response_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_settings_response.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_settings_response_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_summary_response.py
RENAMED
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/budget_summary_response_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ynab_cli-0.4.0 → ynab_cli-0.5.0}/src/ynab_cli/adapters/ynab/models/bulk_response_data_bulk.py
RENAMED
|
File without changes
|
|
File without changes
|