ynab-cli 0.3.0__py3-none-any.whl
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/__init__.py +0 -0
- ynab_cli/adapters/__init__.py +0 -0
- ynab_cli/adapters/rich/__init__.py +0 -0
- ynab_cli/adapters/rich/io.py +38 -0
- ynab_cli/adapters/textual/__init__.py +0 -0
- ynab_cli/adapters/textual/io.py +62 -0
- ynab_cli/adapters/ynab/__init__.py +8 -0
- ynab_cli/adapters/ynab/api/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/accounts/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/accounts/create_account.py +186 -0
- ynab_cli/adapters/ynab/api/accounts/get_account_by_id.py +177 -0
- ynab_cli/adapters/ynab/api/accounts/get_accounts.py +184 -0
- ynab_cli/adapters/ynab/api/budgets/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/budgets/get_budget_by_id.py +188 -0
- ynab_cli/adapters/ynab/api/budgets/get_budget_settings_by_id.py +163 -0
- ynab_cli/adapters/ynab/api/budgets/get_budgets.py +171 -0
- ynab_cli/adapters/ynab/api/categories/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/categories/get_categories.py +188 -0
- ynab_cli/adapters/ynab/api/categories/get_category_by_id.py +180 -0
- ynab_cli/adapters/ynab/api/categories/get_month_category_by_id.py +194 -0
- ynab_cli/adapters/ynab/api/categories/update_category.py +199 -0
- ynab_cli/adapters/ynab/api/categories/update_month_category.py +213 -0
- ynab_cli/adapters/ynab/api/months/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/months/get_budget_month.py +177 -0
- ynab_cli/adapters/ynab/api/months/get_budget_months.py +184 -0
- ynab_cli/adapters/ynab/api/payee_locations/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/payee_locations/get_payee_location_by_id.py +176 -0
- ynab_cli/adapters/ynab/api/payee_locations/get_payee_locations.py +163 -0
- ynab_cli/adapters/ynab/api/payee_locations/get_payee_locations_by_payee.py +176 -0
- ynab_cli/adapters/ynab/api/payees/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/payees/get_payee_by_id.py +176 -0
- ynab_cli/adapters/ynab/api/payees/get_payees.py +184 -0
- ynab_cli/adapters/ynab/api/payees/update_payee.py +199 -0
- ynab_cli/adapters/ynab/api/scheduled_transactions/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/scheduled_transactions/create_scheduled_transaction.py +186 -0
- ynab_cli/adapters/ynab/api/scheduled_transactions/delete_scheduled_transaction.py +176 -0
- ynab_cli/adapters/ynab/api/scheduled_transactions/get_scheduled_transaction_by_id.py +176 -0
- ynab_cli/adapters/ynab/api/scheduled_transactions/get_scheduled_transactions.py +184 -0
- ynab_cli/adapters/ynab/api/scheduled_transactions/update_scheduled_transaction.py +199 -0
- ynab_cli/adapters/ynab/api/transactions/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/transactions/create_transaction.py +202 -0
- ynab_cli/adapters/ynab/api/transactions/delete_transaction.py +176 -0
- ynab_cli/adapters/ynab/api/transactions/get_transaction_by_id.py +176 -0
- ynab_cli/adapters/ynab/api/transactions/get_transactions.py +227 -0
- ynab_cli/adapters/ynab/api/transactions/get_transactions_by_account.py +236 -0
- ynab_cli/adapters/ynab/api/transactions/get_transactions_by_category.py +236 -0
- ynab_cli/adapters/ynab/api/transactions/get_transactions_by_month.py +236 -0
- ynab_cli/adapters/ynab/api/transactions/get_transactions_by_payee.py +236 -0
- ynab_cli/adapters/ynab/api/transactions/import_transactions.py +183 -0
- ynab_cli/adapters/ynab/api/transactions/update_transaction.py +199 -0
- ynab_cli/adapters/ynab/api/transactions/update_transactions.py +177 -0
- ynab_cli/adapters/ynab/api/user/__init__.py +1 -0
- ynab_cli/adapters/ynab/api/user/get_user.py +130 -0
- ynab_cli/adapters/ynab/client.py +268 -0
- ynab_cli/adapters/ynab/errors.py +16 -0
- ynab_cli/adapters/ynab/models/__init__.py +229 -0
- ynab_cli/adapters/ynab/models/account.py +345 -0
- ynab_cli/adapters/ynab/models/account_response.py +65 -0
- ynab_cli/adapters/ynab/models/account_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/account_type.py +23 -0
- ynab_cli/adapters/ynab/models/accounts_response.py +65 -0
- ynab_cli/adapters/ynab/models/accounts_response_data.py +81 -0
- ynab_cli/adapters/ynab/models/budget_detail.py +405 -0
- ynab_cli/adapters/ynab/models/budget_detail_response.py +65 -0
- ynab_cli/adapters/ynab/models/budget_detail_response_data.py +73 -0
- ynab_cli/adapters/ynab/models/budget_settings.py +115 -0
- ynab_cli/adapters/ynab/models/budget_settings_response.py +65 -0
- ynab_cli/adapters/ynab/models/budget_settings_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/budget_summary.py +216 -0
- ynab_cli/adapters/ynab/models/budget_summary_response.py +65 -0
- ynab_cli/adapters/ynab/models/budget_summary_response_data.py +91 -0
- ynab_cli/adapters/ynab/models/bulk_response.py +65 -0
- ynab_cli/adapters/ynab/models/bulk_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/bulk_response_data_bulk.py +68 -0
- ynab_cli/adapters/ynab/models/bulk_transactions.py +75 -0
- ynab_cli/adapters/ynab/models/categories_response.py +65 -0
- ynab_cli/adapters/ynab/models/categories_response_data.py +81 -0
- ynab_cli/adapters/ynab/models/category.py +519 -0
- ynab_cli/adapters/ynab/models/category_goal_type_type_1.py +15 -0
- ynab_cli/adapters/ynab/models/category_goal_type_type_2_type_1.py +15 -0
- ynab_cli/adapters/ynab/models/category_goal_type_type_3_type_1.py +15 -0
- ynab_cli/adapters/ynab/models/category_group.py +85 -0
- ynab_cli/adapters/ynab/models/category_group_with_categories.py +108 -0
- ynab_cli/adapters/ynab/models/category_response.py +65 -0
- ynab_cli/adapters/ynab/models/category_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/currency_format_type_0.py +117 -0
- ynab_cli/adapters/ynab/models/date_format_type_0.py +61 -0
- ynab_cli/adapters/ynab/models/error_detail.py +75 -0
- ynab_cli/adapters/ynab/models/error_response.py +65 -0
- ynab_cli/adapters/ynab/models/existing_transaction.py +322 -0
- ynab_cli/adapters/ynab/models/get_transactions_by_account_type.py +12 -0
- ynab_cli/adapters/ynab/models/get_transactions_by_category_type.py +12 -0
- ynab_cli/adapters/ynab/models/get_transactions_by_month_type.py +12 -0
- ynab_cli/adapters/ynab/models/get_transactions_by_payee_type.py +12 -0
- ynab_cli/adapters/ynab/models/get_transactions_type.py +12 -0
- ynab_cli/adapters/ynab/models/hybrid_transaction.py +567 -0
- ynab_cli/adapters/ynab/models/hybrid_transaction_type.py +12 -0
- ynab_cli/adapters/ynab/models/hybrid_transactions_response.py +65 -0
- ynab_cli/adapters/ynab/models/hybrid_transactions_response_data.py +84 -0
- ynab_cli/adapters/ynab/models/loan_account_periodic_value_type_0.py +44 -0
- ynab_cli/adapters/ynab/models/month_detail.py +168 -0
- ynab_cli/adapters/ynab/models/month_detail_response.py +65 -0
- ynab_cli/adapters/ynab/models/month_detail_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/month_summaries_response.py +65 -0
- ynab_cli/adapters/ynab/models/month_summaries_response_data.py +81 -0
- ynab_cli/adapters/ynab/models/month_summary.py +145 -0
- ynab_cli/adapters/ynab/models/new_transaction.py +352 -0
- ynab_cli/adapters/ynab/models/patch_category_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/patch_month_category_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/patch_payee_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/patch_transactions_wrapper.py +73 -0
- ynab_cli/adapters/ynab/models/payee.py +100 -0
- ynab_cli/adapters/ynab/models/payee_location.py +93 -0
- ynab_cli/adapters/ynab/models/payee_location_response.py +65 -0
- ynab_cli/adapters/ynab/models/payee_location_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/payee_locations_response.py +65 -0
- ynab_cli/adapters/ynab/models/payee_locations_response_data.py +73 -0
- ynab_cli/adapters/ynab/models/payee_response.py +65 -0
- ynab_cli/adapters/ynab/models/payee_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/payees_response.py +65 -0
- ynab_cli/adapters/ynab/models/payees_response_data.py +81 -0
- ynab_cli/adapters/ynab/models/post_account_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/post_scheduled_transaction_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/post_transactions_wrapper.py +91 -0
- ynab_cli/adapters/ynab/models/put_scheduled_transaction_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/put_transaction_wrapper.py +65 -0
- ynab_cli/adapters/ynab/models/save_account.py +77 -0
- ynab_cli/adapters/ynab/models/save_category.py +129 -0
- ynab_cli/adapters/ynab/models/save_category_response.py +65 -0
- ynab_cli/adapters/ynab/models/save_category_response_data.py +73 -0
- ynab_cli/adapters/ynab/models/save_month_category.py +59 -0
- ynab_cli/adapters/ynab/models/save_payee.py +59 -0
- ynab_cli/adapters/ynab/models/save_payee_response.py +65 -0
- ynab_cli/adapters/ynab/models/save_payee_response_data.py +73 -0
- ynab_cli/adapters/ynab/models/save_scheduled_transaction.py +269 -0
- ynab_cli/adapters/ynab/models/save_sub_transaction.py +166 -0
- ynab_cli/adapters/ynab/models/save_transaction_with_id_or_import_id.py +366 -0
- ynab_cli/adapters/ynab/models/save_transaction_with_optional_fields.py +322 -0
- ynab_cli/adapters/ynab/models/save_transactions_response.py +65 -0
- ynab_cli/adapters/ynab/models/save_transactions_response_data.py +123 -0
- ynab_cli/adapters/ynab/models/scheduled_sub_transaction.py +238 -0
- ynab_cli/adapters/ynab/models/scheduled_transaction_detail.py +381 -0
- ynab_cli/adapters/ynab/models/scheduled_transaction_frequency.py +23 -0
- ynab_cli/adapters/ynab/models/scheduled_transaction_response.py +65 -0
- ynab_cli/adapters/ynab/models/scheduled_transaction_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/scheduled_transaction_summary.py +310 -0
- ynab_cli/adapters/ynab/models/scheduled_transaction_summary_frequency.py +23 -0
- ynab_cli/adapters/ynab/models/scheduled_transactions_response.py +65 -0
- ynab_cli/adapters/ynab/models/scheduled_transactions_response_data.py +81 -0
- ynab_cli/adapters/ynab/models/sub_transaction.py +259 -0
- ynab_cli/adapters/ynab/models/transaction_cleared_status.py +13 -0
- ynab_cli/adapters/ynab/models/transaction_detail.py +570 -0
- ynab_cli/adapters/ynab/models/transaction_flag_color_type_1.py +16 -0
- ynab_cli/adapters/ynab/models/transaction_flag_color_type_2_type_1.py +16 -0
- ynab_cli/adapters/ynab/models/transaction_flag_color_type_3_type_1.py +16 -0
- ynab_cli/adapters/ynab/models/transaction_response.py +65 -0
- ynab_cli/adapters/ynab/models/transaction_response_data.py +65 -0
- ynab_cli/adapters/ynab/models/transaction_summary.py +499 -0
- ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_1.py +18 -0
- ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_2_type_1.py +18 -0
- ynab_cli/adapters/ynab/models/transaction_summary_debt_transaction_type_type_3_type_1.py +18 -0
- ynab_cli/adapters/ynab/models/transactions_import_response.py +65 -0
- ynab_cli/adapters/ynab/models/transactions_import_response_data.py +59 -0
- ynab_cli/adapters/ynab/models/transactions_response.py +65 -0
- ynab_cli/adapters/ynab/models/transactions_response_data.py +81 -0
- ynab_cli/adapters/ynab/models/user.py +60 -0
- ynab_cli/adapters/ynab/models/user_response.py +65 -0
- ynab_cli/adapters/ynab/models/user_response_data.py +65 -0
- ynab_cli/adapters/ynab/types.py +46 -0
- ynab_cli/adapters/ynab/util.py +78 -0
- ynab_cli/domain/__init__.py +0 -0
- ynab_cli/domain/constants.py +3 -0
- ynab_cli/domain/models/__init__.py +0 -0
- ynab_cli/domain/models/rules.py +37 -0
- ynab_cli/domain/ports/__init__.py +5 -0
- ynab_cli/domain/ports/io.py +63 -0
- ynab_cli/domain/settings.py +16 -0
- ynab_cli/domain/use_cases/__init__.py +0 -0
- ynab_cli/domain/use_cases/categories.py +105 -0
- ynab_cli/domain/use_cases/payees.py +232 -0
- ynab_cli/domain/use_cases/transactions.py +93 -0
- ynab_cli/host/__init__.py +14 -0
- ynab_cli/host/cli.py +37 -0
- ynab_cli/host/click/__init__.py +0 -0
- ynab_cli/host/click/cli.py +44 -0
- ynab_cli/host/click/commands/__init__.py +0 -0
- ynab_cli/host/click/commands/categories.py +92 -0
- ynab_cli/host/click/commands/payees.py +157 -0
- ynab_cli/host/click/commands/rich/__init__.py +0 -0
- ynab_cli/host/click/commands/rich/progress_table.py +37 -0
- ynab_cli/host/click/commands/transactions.py +76 -0
- ynab_cli/host/constants.py +3 -0
- ynab_cli/host/textual/__init__.py +0 -0
- ynab_cli/host/textual/app.py +98 -0
- ynab_cli/host/textual/app.tcss +47 -0
- ynab_cli/host/textual/cli.py +42 -0
- ynab_cli/host/textual/widgets/__init__.py +58 -0
- ynab_cli/host/textual/widgets/categories.py +90 -0
- ynab_cli/host/textual/widgets/payees.py +154 -0
- ynab_cli/host/textual/widgets/transactions.py +89 -0
- ynab_cli/py.typed +0 -0
- ynab_cli-0.3.0.dist-info/METADATA +102 -0
- ynab_cli-0.3.0.dist-info/RECORD +206 -0
- ynab_cli-0.3.0.dist-info/WHEEL +4 -0
- ynab_cli-0.3.0.dist-info/entry_points.txt +2 -0
- ynab_cli-0.3.0.dist-info/licenses/LICENSE.md +21 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
|
|
4
|
+
from uuid import UUID
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
from dateutil.parser import isoparse
|
|
9
|
+
|
|
10
|
+
from ynab_cli.adapters.ynab.models.account_type import AccountType
|
|
11
|
+
from ynab_cli.adapters.ynab.types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from ynab_cli.adapters.ynab.models.loan_account_periodic_value_type_0 import LoanAccountPeriodicValueType0
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="Account")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_attrs_define
|
|
21
|
+
class Account:
|
|
22
|
+
"""
|
|
23
|
+
Attributes:
|
|
24
|
+
id (UUID):
|
|
25
|
+
name (str):
|
|
26
|
+
type_ (AccountType): The type of account
|
|
27
|
+
on_budget (bool): Whether this account is on budget or not
|
|
28
|
+
closed (bool): Whether this account is closed or not
|
|
29
|
+
balance (int): The current balance of the account in milliunits format
|
|
30
|
+
cleared_balance (int): The current cleared balance of the account in milliunits format
|
|
31
|
+
uncleared_balance (int): The current uncleared balance of the account in milliunits format
|
|
32
|
+
transfer_payee_id (Union[None, UUID]): The payee id which should be used when transferring to this account
|
|
33
|
+
deleted (bool): Whether or not the account has been deleted. Deleted accounts will only be included in delta
|
|
34
|
+
requests.
|
|
35
|
+
note (Union[None, Unset, str]):
|
|
36
|
+
direct_import_linked (Union[Unset, bool]): Whether or not the account is linked to a financial institution for
|
|
37
|
+
automatic transaction import.
|
|
38
|
+
direct_import_in_error (Union[Unset, bool]): If an account linked to a financial institution
|
|
39
|
+
(direct_import_linked=true) and the linked connection is not in a healthy state, this will be true.
|
|
40
|
+
last_reconciled_at (Union[None, Unset, datetime.datetime]): A date/time specifying when the account was last
|
|
41
|
+
reconciled.
|
|
42
|
+
debt_original_balance (Union[None, Unset, int]): The original debt/loan account balance, specified in milliunits
|
|
43
|
+
format.
|
|
44
|
+
debt_interest_rates (Union['LoanAccountPeriodicValueType0', None, Unset]):
|
|
45
|
+
debt_minimum_payments (Union['LoanAccountPeriodicValueType0', None, Unset]):
|
|
46
|
+
debt_escrow_amounts (Union['LoanAccountPeriodicValueType0', None, Unset]):
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
id: UUID
|
|
50
|
+
name: str
|
|
51
|
+
type_: AccountType
|
|
52
|
+
on_budget: bool
|
|
53
|
+
closed: bool
|
|
54
|
+
balance: int
|
|
55
|
+
cleared_balance: int
|
|
56
|
+
uncleared_balance: int
|
|
57
|
+
transfer_payee_id: None | UUID
|
|
58
|
+
deleted: bool
|
|
59
|
+
note: None | Unset | str = UNSET
|
|
60
|
+
direct_import_linked: Unset | bool = UNSET
|
|
61
|
+
direct_import_in_error: Unset | bool = UNSET
|
|
62
|
+
last_reconciled_at: None | Unset | datetime.datetime = UNSET
|
|
63
|
+
debt_original_balance: None | Unset | int = UNSET
|
|
64
|
+
debt_interest_rates: Union["LoanAccountPeriodicValueType0", None, Unset] = UNSET
|
|
65
|
+
debt_minimum_payments: Union["LoanAccountPeriodicValueType0", None, Unset] = UNSET
|
|
66
|
+
debt_escrow_amounts: Union["LoanAccountPeriodicValueType0", None, Unset] = UNSET
|
|
67
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
68
|
+
|
|
69
|
+
def to_dict(self) -> dict[str, Any]:
|
|
70
|
+
from ynab_cli.adapters.ynab.models.loan_account_periodic_value_type_0 import LoanAccountPeriodicValueType0
|
|
71
|
+
|
|
72
|
+
id = str(self.id)
|
|
73
|
+
|
|
74
|
+
name = self.name
|
|
75
|
+
|
|
76
|
+
type_ = self.type_.value
|
|
77
|
+
|
|
78
|
+
on_budget = self.on_budget
|
|
79
|
+
|
|
80
|
+
closed = self.closed
|
|
81
|
+
|
|
82
|
+
balance = self.balance
|
|
83
|
+
|
|
84
|
+
cleared_balance = self.cleared_balance
|
|
85
|
+
|
|
86
|
+
uncleared_balance = self.uncleared_balance
|
|
87
|
+
|
|
88
|
+
transfer_payee_id: None | str
|
|
89
|
+
if isinstance(self.transfer_payee_id, UUID):
|
|
90
|
+
transfer_payee_id = str(self.transfer_payee_id)
|
|
91
|
+
else:
|
|
92
|
+
transfer_payee_id = self.transfer_payee_id
|
|
93
|
+
|
|
94
|
+
deleted = self.deleted
|
|
95
|
+
|
|
96
|
+
note: None | Unset | str
|
|
97
|
+
if isinstance(self.note, Unset):
|
|
98
|
+
note = UNSET
|
|
99
|
+
else:
|
|
100
|
+
note = self.note
|
|
101
|
+
|
|
102
|
+
direct_import_linked = self.direct_import_linked
|
|
103
|
+
|
|
104
|
+
direct_import_in_error = self.direct_import_in_error
|
|
105
|
+
|
|
106
|
+
last_reconciled_at: None | Unset | str
|
|
107
|
+
if isinstance(self.last_reconciled_at, Unset):
|
|
108
|
+
last_reconciled_at = UNSET
|
|
109
|
+
elif isinstance(self.last_reconciled_at, datetime.datetime):
|
|
110
|
+
last_reconciled_at = self.last_reconciled_at.isoformat()
|
|
111
|
+
else:
|
|
112
|
+
last_reconciled_at = self.last_reconciled_at
|
|
113
|
+
|
|
114
|
+
debt_original_balance: None | Unset | int
|
|
115
|
+
if isinstance(self.debt_original_balance, Unset):
|
|
116
|
+
debt_original_balance = UNSET
|
|
117
|
+
else:
|
|
118
|
+
debt_original_balance = self.debt_original_balance
|
|
119
|
+
|
|
120
|
+
debt_interest_rates: None | Unset | dict[str, Any]
|
|
121
|
+
if isinstance(self.debt_interest_rates, Unset):
|
|
122
|
+
debt_interest_rates = UNSET
|
|
123
|
+
elif isinstance(self.debt_interest_rates, LoanAccountPeriodicValueType0):
|
|
124
|
+
debt_interest_rates = self.debt_interest_rates.to_dict()
|
|
125
|
+
else:
|
|
126
|
+
debt_interest_rates = self.debt_interest_rates
|
|
127
|
+
|
|
128
|
+
debt_minimum_payments: None | Unset | dict[str, Any]
|
|
129
|
+
if isinstance(self.debt_minimum_payments, Unset):
|
|
130
|
+
debt_minimum_payments = UNSET
|
|
131
|
+
elif isinstance(self.debt_minimum_payments, LoanAccountPeriodicValueType0):
|
|
132
|
+
debt_minimum_payments = self.debt_minimum_payments.to_dict()
|
|
133
|
+
else:
|
|
134
|
+
debt_minimum_payments = self.debt_minimum_payments
|
|
135
|
+
|
|
136
|
+
debt_escrow_amounts: None | Unset | dict[str, Any]
|
|
137
|
+
if isinstance(self.debt_escrow_amounts, Unset):
|
|
138
|
+
debt_escrow_amounts = UNSET
|
|
139
|
+
elif isinstance(self.debt_escrow_amounts, LoanAccountPeriodicValueType0):
|
|
140
|
+
debt_escrow_amounts = self.debt_escrow_amounts.to_dict()
|
|
141
|
+
else:
|
|
142
|
+
debt_escrow_amounts = self.debt_escrow_amounts
|
|
143
|
+
|
|
144
|
+
field_dict: dict[str, Any] = {}
|
|
145
|
+
field_dict.update(self.additional_properties)
|
|
146
|
+
field_dict.update(
|
|
147
|
+
{
|
|
148
|
+
"id": id,
|
|
149
|
+
"name": name,
|
|
150
|
+
"type": type_,
|
|
151
|
+
"on_budget": on_budget,
|
|
152
|
+
"closed": closed,
|
|
153
|
+
"balance": balance,
|
|
154
|
+
"cleared_balance": cleared_balance,
|
|
155
|
+
"uncleared_balance": uncleared_balance,
|
|
156
|
+
"transfer_payee_id": transfer_payee_id,
|
|
157
|
+
"deleted": deleted,
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
if note is not UNSET:
|
|
161
|
+
field_dict["note"] = note
|
|
162
|
+
if direct_import_linked is not UNSET:
|
|
163
|
+
field_dict["direct_import_linked"] = direct_import_linked
|
|
164
|
+
if direct_import_in_error is not UNSET:
|
|
165
|
+
field_dict["direct_import_in_error"] = direct_import_in_error
|
|
166
|
+
if last_reconciled_at is not UNSET:
|
|
167
|
+
field_dict["last_reconciled_at"] = last_reconciled_at
|
|
168
|
+
if debt_original_balance is not UNSET:
|
|
169
|
+
field_dict["debt_original_balance"] = debt_original_balance
|
|
170
|
+
if debt_interest_rates is not UNSET:
|
|
171
|
+
field_dict["debt_interest_rates"] = debt_interest_rates
|
|
172
|
+
if debt_minimum_payments is not UNSET:
|
|
173
|
+
field_dict["debt_minimum_payments"] = debt_minimum_payments
|
|
174
|
+
if debt_escrow_amounts is not UNSET:
|
|
175
|
+
field_dict["debt_escrow_amounts"] = debt_escrow_amounts
|
|
176
|
+
|
|
177
|
+
return field_dict
|
|
178
|
+
|
|
179
|
+
@classmethod
|
|
180
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
181
|
+
from ynab_cli.adapters.ynab.models.loan_account_periodic_value_type_0 import LoanAccountPeriodicValueType0
|
|
182
|
+
|
|
183
|
+
d = dict(src_dict)
|
|
184
|
+
id = UUID(d.pop("id"))
|
|
185
|
+
|
|
186
|
+
name = d.pop("name")
|
|
187
|
+
|
|
188
|
+
type_ = AccountType(d.pop("type"))
|
|
189
|
+
|
|
190
|
+
on_budget = d.pop("on_budget")
|
|
191
|
+
|
|
192
|
+
closed = d.pop("closed")
|
|
193
|
+
|
|
194
|
+
balance = d.pop("balance")
|
|
195
|
+
|
|
196
|
+
cleared_balance = d.pop("cleared_balance")
|
|
197
|
+
|
|
198
|
+
uncleared_balance = d.pop("uncleared_balance")
|
|
199
|
+
|
|
200
|
+
def _parse_transfer_payee_id(data: object) -> None | UUID:
|
|
201
|
+
if data is None:
|
|
202
|
+
return data
|
|
203
|
+
try:
|
|
204
|
+
if not isinstance(data, str):
|
|
205
|
+
raise TypeError()
|
|
206
|
+
transfer_payee_id_type_0 = UUID(data)
|
|
207
|
+
|
|
208
|
+
return transfer_payee_id_type_0
|
|
209
|
+
except: # noqa: E722
|
|
210
|
+
pass
|
|
211
|
+
return cast(None | UUID, data)
|
|
212
|
+
|
|
213
|
+
transfer_payee_id = _parse_transfer_payee_id(d.pop("transfer_payee_id"))
|
|
214
|
+
|
|
215
|
+
deleted = d.pop("deleted")
|
|
216
|
+
|
|
217
|
+
def _parse_note(data: object) -> None | Unset | str:
|
|
218
|
+
if data is None:
|
|
219
|
+
return data
|
|
220
|
+
if isinstance(data, Unset):
|
|
221
|
+
return data
|
|
222
|
+
return cast(None | Unset | str, data)
|
|
223
|
+
|
|
224
|
+
note = _parse_note(d.pop("note", UNSET))
|
|
225
|
+
|
|
226
|
+
direct_import_linked = d.pop("direct_import_linked", UNSET)
|
|
227
|
+
|
|
228
|
+
direct_import_in_error = d.pop("direct_import_in_error", UNSET)
|
|
229
|
+
|
|
230
|
+
def _parse_last_reconciled_at(data: object) -> None | Unset | datetime.datetime:
|
|
231
|
+
if data is None:
|
|
232
|
+
return data
|
|
233
|
+
if isinstance(data, Unset):
|
|
234
|
+
return data
|
|
235
|
+
try:
|
|
236
|
+
if not isinstance(data, str):
|
|
237
|
+
raise TypeError()
|
|
238
|
+
last_reconciled_at_type_0 = isoparse(data)
|
|
239
|
+
|
|
240
|
+
return last_reconciled_at_type_0
|
|
241
|
+
except: # noqa: E722
|
|
242
|
+
pass
|
|
243
|
+
return cast(None | Unset | datetime.datetime, data)
|
|
244
|
+
|
|
245
|
+
last_reconciled_at = _parse_last_reconciled_at(d.pop("last_reconciled_at", UNSET))
|
|
246
|
+
|
|
247
|
+
def _parse_debt_original_balance(data: object) -> None | Unset | int:
|
|
248
|
+
if data is None:
|
|
249
|
+
return data
|
|
250
|
+
if isinstance(data, Unset):
|
|
251
|
+
return data
|
|
252
|
+
return cast(None | Unset | int, data)
|
|
253
|
+
|
|
254
|
+
debt_original_balance = _parse_debt_original_balance(d.pop("debt_original_balance", UNSET))
|
|
255
|
+
|
|
256
|
+
def _parse_debt_interest_rates(data: object) -> Union["LoanAccountPeriodicValueType0", None, Unset]:
|
|
257
|
+
if data is None:
|
|
258
|
+
return data
|
|
259
|
+
if isinstance(data, Unset):
|
|
260
|
+
return data
|
|
261
|
+
try:
|
|
262
|
+
if not isinstance(data, dict):
|
|
263
|
+
raise TypeError()
|
|
264
|
+
componentsschemas_loan_account_periodic_value_type_0 = LoanAccountPeriodicValueType0.from_dict(data)
|
|
265
|
+
|
|
266
|
+
return componentsschemas_loan_account_periodic_value_type_0
|
|
267
|
+
except: # noqa: E722
|
|
268
|
+
pass
|
|
269
|
+
return cast(Union["LoanAccountPeriodicValueType0", None, Unset], data)
|
|
270
|
+
|
|
271
|
+
debt_interest_rates = _parse_debt_interest_rates(d.pop("debt_interest_rates", UNSET))
|
|
272
|
+
|
|
273
|
+
def _parse_debt_minimum_payments(data: object) -> Union["LoanAccountPeriodicValueType0", None, Unset]:
|
|
274
|
+
if data is None:
|
|
275
|
+
return data
|
|
276
|
+
if isinstance(data, Unset):
|
|
277
|
+
return data
|
|
278
|
+
try:
|
|
279
|
+
if not isinstance(data, dict):
|
|
280
|
+
raise TypeError()
|
|
281
|
+
componentsschemas_loan_account_periodic_value_type_0 = LoanAccountPeriodicValueType0.from_dict(data)
|
|
282
|
+
|
|
283
|
+
return componentsschemas_loan_account_periodic_value_type_0
|
|
284
|
+
except: # noqa: E722
|
|
285
|
+
pass
|
|
286
|
+
return cast(Union["LoanAccountPeriodicValueType0", None, Unset], data)
|
|
287
|
+
|
|
288
|
+
debt_minimum_payments = _parse_debt_minimum_payments(d.pop("debt_minimum_payments", UNSET))
|
|
289
|
+
|
|
290
|
+
def _parse_debt_escrow_amounts(data: object) -> Union["LoanAccountPeriodicValueType0", None, Unset]:
|
|
291
|
+
if data is None:
|
|
292
|
+
return data
|
|
293
|
+
if isinstance(data, Unset):
|
|
294
|
+
return data
|
|
295
|
+
try:
|
|
296
|
+
if not isinstance(data, dict):
|
|
297
|
+
raise TypeError()
|
|
298
|
+
componentsschemas_loan_account_periodic_value_type_0 = LoanAccountPeriodicValueType0.from_dict(data)
|
|
299
|
+
|
|
300
|
+
return componentsschemas_loan_account_periodic_value_type_0
|
|
301
|
+
except: # noqa: E722
|
|
302
|
+
pass
|
|
303
|
+
return cast(Union["LoanAccountPeriodicValueType0", None, Unset], data)
|
|
304
|
+
|
|
305
|
+
debt_escrow_amounts = _parse_debt_escrow_amounts(d.pop("debt_escrow_amounts", UNSET))
|
|
306
|
+
|
|
307
|
+
account = cls(
|
|
308
|
+
id=id,
|
|
309
|
+
name=name,
|
|
310
|
+
type_=type_,
|
|
311
|
+
on_budget=on_budget,
|
|
312
|
+
closed=closed,
|
|
313
|
+
balance=balance,
|
|
314
|
+
cleared_balance=cleared_balance,
|
|
315
|
+
uncleared_balance=uncleared_balance,
|
|
316
|
+
transfer_payee_id=transfer_payee_id,
|
|
317
|
+
deleted=deleted,
|
|
318
|
+
note=note,
|
|
319
|
+
direct_import_linked=direct_import_linked,
|
|
320
|
+
direct_import_in_error=direct_import_in_error,
|
|
321
|
+
last_reconciled_at=last_reconciled_at,
|
|
322
|
+
debt_original_balance=debt_original_balance,
|
|
323
|
+
debt_interest_rates=debt_interest_rates,
|
|
324
|
+
debt_minimum_payments=debt_minimum_payments,
|
|
325
|
+
debt_escrow_amounts=debt_escrow_amounts,
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
account.additional_properties = d
|
|
329
|
+
return account
|
|
330
|
+
|
|
331
|
+
@property
|
|
332
|
+
def additional_keys(self) -> list[str]:
|
|
333
|
+
return list(self.additional_properties.keys())
|
|
334
|
+
|
|
335
|
+
def __getitem__(self, key: str) -> Any:
|
|
336
|
+
return self.additional_properties[key]
|
|
337
|
+
|
|
338
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
339
|
+
self.additional_properties[key] = value
|
|
340
|
+
|
|
341
|
+
def __delitem__(self, key: str) -> None:
|
|
342
|
+
del self.additional_properties[key]
|
|
343
|
+
|
|
344
|
+
def __contains__(self, key: str) -> bool:
|
|
345
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from ynab_cli.adapters.ynab.models.account_response_data import AccountResponseData
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="AccountResponse")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class AccountResponse:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
data (AccountResponseData):
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
data: "AccountResponseData"
|
|
22
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
23
|
+
|
|
24
|
+
def to_dict(self) -> dict[str, Any]:
|
|
25
|
+
data = self.data.to_dict()
|
|
26
|
+
|
|
27
|
+
field_dict: dict[str, Any] = {}
|
|
28
|
+
field_dict.update(self.additional_properties)
|
|
29
|
+
field_dict.update(
|
|
30
|
+
{
|
|
31
|
+
"data": data,
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
return field_dict
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
39
|
+
from ynab_cli.adapters.ynab.models.account_response_data import AccountResponseData
|
|
40
|
+
|
|
41
|
+
d = dict(src_dict)
|
|
42
|
+
data = AccountResponseData.from_dict(d.pop("data"))
|
|
43
|
+
|
|
44
|
+
account_response = cls(
|
|
45
|
+
data=data,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
account_response.additional_properties = d
|
|
49
|
+
return account_response
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def additional_keys(self) -> list[str]:
|
|
53
|
+
return list(self.additional_properties.keys())
|
|
54
|
+
|
|
55
|
+
def __getitem__(self, key: str) -> Any:
|
|
56
|
+
return self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
59
|
+
self.additional_properties[key] = value
|
|
60
|
+
|
|
61
|
+
def __delitem__(self, key: str) -> None:
|
|
62
|
+
del self.additional_properties[key]
|
|
63
|
+
|
|
64
|
+
def __contains__(self, key: str) -> bool:
|
|
65
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from ynab_cli.adapters.ynab.models.account import Account
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="AccountResponseData")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class AccountResponseData:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
account (Account):
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
account: "Account"
|
|
22
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
23
|
+
|
|
24
|
+
def to_dict(self) -> dict[str, Any]:
|
|
25
|
+
account = self.account.to_dict()
|
|
26
|
+
|
|
27
|
+
field_dict: dict[str, Any] = {}
|
|
28
|
+
field_dict.update(self.additional_properties)
|
|
29
|
+
field_dict.update(
|
|
30
|
+
{
|
|
31
|
+
"account": account,
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
return field_dict
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
39
|
+
from ynab_cli.adapters.ynab.models.account import Account
|
|
40
|
+
|
|
41
|
+
d = dict(src_dict)
|
|
42
|
+
account = Account.from_dict(d.pop("account"))
|
|
43
|
+
|
|
44
|
+
account_response_data = cls(
|
|
45
|
+
account=account,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
account_response_data.additional_properties = d
|
|
49
|
+
return account_response_data
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def additional_keys(self) -> list[str]:
|
|
53
|
+
return list(self.additional_properties.keys())
|
|
54
|
+
|
|
55
|
+
def __getitem__(self, key: str) -> Any:
|
|
56
|
+
return self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
59
|
+
self.additional_properties[key] = value
|
|
60
|
+
|
|
61
|
+
def __delitem__(self, key: str) -> None:
|
|
62
|
+
del self.additional_properties[key]
|
|
63
|
+
|
|
64
|
+
def __contains__(self, key: str) -> bool:
|
|
65
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
from typing_extensions import override
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AccountType(str, Enum):
|
|
7
|
+
AUTOLOAN = "autoLoan"
|
|
8
|
+
CASH = "cash"
|
|
9
|
+
CHECKING = "checking"
|
|
10
|
+
CREDITCARD = "creditCard"
|
|
11
|
+
LINEOFCREDIT = "lineOfCredit"
|
|
12
|
+
MEDICALDEBT = "medicalDebt"
|
|
13
|
+
MORTGAGE = "mortgage"
|
|
14
|
+
OTHERASSET = "otherAsset"
|
|
15
|
+
OTHERDEBT = "otherDebt"
|
|
16
|
+
OTHERLIABILITY = "otherLiability"
|
|
17
|
+
PERSONALLOAN = "personalLoan"
|
|
18
|
+
SAVINGS = "savings"
|
|
19
|
+
STUDENTLOAN = "studentLoan"
|
|
20
|
+
|
|
21
|
+
@override
|
|
22
|
+
def __str__(self) -> str:
|
|
23
|
+
return str(self.value)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from ynab_cli.adapters.ynab.models.accounts_response_data import AccountsResponseData
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="AccountsResponse")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class AccountsResponse:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
data (AccountsResponseData):
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
data: "AccountsResponseData"
|
|
22
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
23
|
+
|
|
24
|
+
def to_dict(self) -> dict[str, Any]:
|
|
25
|
+
data = self.data.to_dict()
|
|
26
|
+
|
|
27
|
+
field_dict: dict[str, Any] = {}
|
|
28
|
+
field_dict.update(self.additional_properties)
|
|
29
|
+
field_dict.update(
|
|
30
|
+
{
|
|
31
|
+
"data": data,
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
return field_dict
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
39
|
+
from ynab_cli.adapters.ynab.models.accounts_response_data import AccountsResponseData
|
|
40
|
+
|
|
41
|
+
d = dict(src_dict)
|
|
42
|
+
data = AccountsResponseData.from_dict(d.pop("data"))
|
|
43
|
+
|
|
44
|
+
accounts_response = cls(
|
|
45
|
+
data=data,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
accounts_response.additional_properties = d
|
|
49
|
+
return accounts_response
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def additional_keys(self) -> list[str]:
|
|
53
|
+
return list(self.additional_properties.keys())
|
|
54
|
+
|
|
55
|
+
def __getitem__(self, key: str) -> Any:
|
|
56
|
+
return self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
59
|
+
self.additional_properties[key] = value
|
|
60
|
+
|
|
61
|
+
def __delitem__(self, key: str) -> None:
|
|
62
|
+
del self.additional_properties[key]
|
|
63
|
+
|
|
64
|
+
def __contains__(self, key: str) -> bool:
|
|
65
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from ynab_cli.adapters.ynab.models.account import Account
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="AccountsResponseData")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class AccountsResponseData:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
accounts (list['Account']):
|
|
19
|
+
server_knowledge (int): The knowledge of the server
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
accounts: list["Account"]
|
|
23
|
+
server_knowledge: int
|
|
24
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
25
|
+
|
|
26
|
+
def to_dict(self) -> dict[str, Any]:
|
|
27
|
+
accounts = []
|
|
28
|
+
for accounts_item_data in self.accounts:
|
|
29
|
+
accounts_item = accounts_item_data.to_dict()
|
|
30
|
+
accounts.append(accounts_item)
|
|
31
|
+
|
|
32
|
+
server_knowledge = self.server_knowledge
|
|
33
|
+
|
|
34
|
+
field_dict: dict[str, Any] = {}
|
|
35
|
+
field_dict.update(self.additional_properties)
|
|
36
|
+
field_dict.update(
|
|
37
|
+
{
|
|
38
|
+
"accounts": accounts,
|
|
39
|
+
"server_knowledge": server_knowledge,
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
return field_dict
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
47
|
+
from ynab_cli.adapters.ynab.models.account import Account
|
|
48
|
+
|
|
49
|
+
d = dict(src_dict)
|
|
50
|
+
accounts = []
|
|
51
|
+
_accounts = d.pop("accounts")
|
|
52
|
+
for accounts_item_data in _accounts:
|
|
53
|
+
accounts_item = Account.from_dict(accounts_item_data)
|
|
54
|
+
|
|
55
|
+
accounts.append(accounts_item)
|
|
56
|
+
|
|
57
|
+
server_knowledge = d.pop("server_knowledge")
|
|
58
|
+
|
|
59
|
+
accounts_response_data = cls(
|
|
60
|
+
accounts=accounts,
|
|
61
|
+
server_knowledge=server_knowledge,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
accounts_response_data.additional_properties = d
|
|
65
|
+
return accounts_response_data
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def additional_keys(self) -> list[str]:
|
|
69
|
+
return list(self.additional_properties.keys())
|
|
70
|
+
|
|
71
|
+
def __getitem__(self, key: str) -> Any:
|
|
72
|
+
return self.additional_properties[key]
|
|
73
|
+
|
|
74
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
75
|
+
self.additional_properties[key] = value
|
|
76
|
+
|
|
77
|
+
def __delitem__(self, key: str) -> None:
|
|
78
|
+
del self.additional_properties[key]
|
|
79
|
+
|
|
80
|
+
def __contains__(self, key: str) -> bool:
|
|
81
|
+
return key in self.additional_properties
|