Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 6 additions & 11 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,8 @@ repos:
args: [--autofix, --trailing-commas]
- id: pretty-format-yaml
args: [--autofix]
- repo: https://github.com/asottile/reorder-python-imports
rev: 5e38415c12154247a099c7023c210e3d458275b5 # frozen: v3.17.0
hooks:
- id: reorder-python-imports
args: [--py312-plus, --add-import, from __future__ import annotations]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 2700fd5671c633760d912769c041bfcde2b9a01b # frozen: v0.15.22
rev: cb8c523fd4835aba42af70f4cad5568db4df0b6c # frozen: v0.16.0
hooks:
- id: ruff-check
args: [--fix]
Expand Down Expand Up @@ -50,11 +45,11 @@ repos:
- pytest
- pytest-asyncio
- rich>=10
- setuptools
- tenacity
- types-setuptools
language_version: python3.12
- repo: https://github.com/mxr/mirrors-ty
rev: febed8a7b2665e80a9d3855c59ac716a6284d628 # frozen: v0.0.61
rev: d7f08bf6b37691c482773f198ba01539eb331d6a # frozen: v0.0.63
hooks:
- id: ty
additional_dependencies:
Expand All @@ -67,14 +62,14 @@ repos:
- pytest
- pytest-asyncio
- rich>=10
- setuptools
- tenacity
- types-setuptools
- repo: https://github.com/mxr/sync-typing-deps
rev: c2ec0c01a31703615c17e3fe11d1fe28c003f1d8 # frozen: v0.5.3
rev: a8b960f5e2bb3627b5a1fc8171fe224cdd64ff0a # frozen: v0.5.4
hooks:
- id: sync-typing-deps
- repo: https://github.com/zizmorcore/zizmor-pre-commit
rev: 64a97fb7fa63188393d3215c6e312f5f9c6d0f78 # frozen: v1.27.0
rev: 067260dc5fe6ea86b7551bfd6f8b3ba4e6c93129 # frozen: v1.28.0
hooks:
- id: zizmor
args: [--no-progress, --fix]
Expand Down
9 changes: 7 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,19 @@ target-version = "py312"

[tool.ruff.lint]
extend-select = [
"UP", # see pyupgrade
"B", # see flake8-bugbear
"A", # see flake8-builtins
"B", # see flake8-bugbear
"C4", # see flake8-comprehension
"I", # sort imports
"SIM", # see flake8-simplify
"TC", # see flake8-type-checking
"UP", # see pyupgrade
]

[tool.ruff.lint.isort]
force-single-line = true
required-imports = ["from __future__ import annotations"]

[tool.setuptools.package-data]
sqlite_export_for_ynab = ["py.typed"]
"sqlite_export_for_ynab.ddl" = ["*.sql"]
Expand Down
68 changes: 29 additions & 39 deletions sqlite_export_for_ynab/_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,18 @@
from dataclasses import dataclass
from dataclasses import fields
from datetime import date
from datetime import datetime
from datetime import timedelta
from importlib import resources
from importlib.metadata import version
from itertools import batched
from pathlib import Path
from typing import TYPE_CHECKING
from typing import Any
from typing import Literal
from typing import get_args
from typing import overload
from typing import override
from typing import TYPE_CHECKING

import aiosqlite
import asyncio_for_ynab # noqa: F401
Expand Down Expand Up @@ -84,28 +86,24 @@ def render(self, task: Task) -> Text:
)


_EntryTable = (
Literal["accounts"]
| Literal["account_periodic_values"]
| Literal["category_groups"]
| Literal["categories"]
| Literal["payees"]
| Literal["transactions"]
| Literal["subtransactions"]
| Literal["scheduled_transactions"]
| Literal["scheduled_subtransactions"]
)
_Endpoint = (
Literal["accounts"]
| Literal["categories"]
| Literal["payees"]
| Literal["transactions"]
| Literal["scheduled_transactions"]
)
_ENDPOINTS = tuple(lit.__args__[0] for lit in _Endpoint.__args__)
_EntryTable = Literal[
"accounts",
"account_periodic_values",
"category_groups",
"categories",
"payees",
"transactions",
"subtransactions",
"scheduled_transactions",
"scheduled_subtransactions",
]
_Endpoint = Literal[
"accounts", "categories", "payees", "transactions", "scheduled_transactions"
]
_ENDPOINTS = get_args(_Endpoint)
_ALL_RELATIONS = frozenset(
("plans", "flat_transactions", "scheduled_flat_transactions")
+ tuple(lit.__args__[0] for lit in _EntryTable.__args__)
+ get_args(_EntryTable)
)

_ENV_TOKEN = "YNAB_PERSONAL_ACCESS_TOKEN"
Expand Down Expand Up @@ -556,28 +554,20 @@ async def insert_nested_entries(
context: _Context,
plan_id: str,
entries: list[dict[str, Any]],
desc: (
Literal["Accounts"]
| Literal["Categories"]
| Literal["Transactions"]
| Literal["Scheduled Transactions"]
),
desc: (Literal["Accounts", "Categories", "Transactions", "Scheduled Transactions"]),
entries_name: (
Literal["accounts"]
| Literal["category_groups"]
| Literal["transactions"]
| Literal["scheduled_transactions"]
Literal["accounts", "category_groups", "transactions", "scheduled_transactions"]
),
subentries_name: (
Literal["account_periodic_values"]
| Literal["categories"]
| Literal["subtransactions"]
Literal["account_periodic_values", "categories", "subtransactions"]
),
subentries_table_name: (
Literal["account_periodic_values"]
| Literal["categories"]
| Literal["subtransactions"]
| Literal["scheduled_subtransactions"]
Literal[
"account_periodic_values",
"categories",
"subtransactions",
"scheduled_subtransactions",
]
),
) -> None:
if not entries:
Expand Down Expand Up @@ -713,7 +703,7 @@ async def get_transactions(
async def _get(
self, transactions_api: TransactionsApi, plan_id: str
) -> TransactionsResponse:
today = date.today()
today = datetime.now().astimezone().date()
responses = await asyncio.gather(
*(
self._chunk(transactions_api, plan_id, sd, ud)
Expand Down
1 change: 0 additions & 1 deletion testing/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
from asyncio_for_ynab import TransactionsResponse
from asyncio_for_ynab import TransactionsResponseData


PLAN_ID_1 = str(uuid4())
PLAN_ID_2 = str(uuid4())

Expand Down
18 changes: 9 additions & 9 deletions tests/_main_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@

from sqlite_export_for_ynab import default_db_path
from sqlite_export_for_ynab._main import _ALL_RELATIONS
from sqlite_export_for_ynab._main import _Context
from sqlite_export_for_ynab._main import _context
from sqlite_export_for_ynab._main import _ENV_TOKEN
from sqlite_export_for_ynab._main import _get_plan_summaries
from sqlite_export_for_ynab._main import _PACKAGE
from sqlite_export_for_ynab._main import _PROGRESS_COLUMNS
from sqlite_export_for_ynab._main import ChunkedTransactionsApi
from sqlite_export_for_ynab._main import _Context
from sqlite_export_for_ynab._main import _context
from sqlite_export_for_ynab._main import _get_plan_summaries
from sqlite_export_for_ynab._main import _quarterly
from sqlite_export_for_ynab._main import async_main
from sqlite_export_for_ynab._main import asyncio_for_ynab
from sqlite_export_for_ynab._main import ChunkedTransactionsApi
from sqlite_export_for_ynab._main import contents
from sqlite_export_for_ynab._main import get_last_knowledge_of_server
from sqlite_export_for_ynab._main import get_relations
Expand All @@ -41,8 +41,6 @@
from testing.fixtures import ACCOUNT_ID_1
from testing.fixtures import ACCOUNT_ID_2
from testing.fixtures import ACCOUNTS
from testing.fixtures import accounts_response
from testing.fixtures import categories_response
from testing.fixtures import CATEGORY_GOAL_TARGET_DATE_1
from testing.fixtures import CATEGORY_GROUP_ID_1
from testing.fixtures import CATEGORY_GROUP_ID_2
Expand All @@ -61,18 +59,15 @@
from testing.fixtures import PAYEE_ID_1
from testing.fixtures import PAYEE_ID_2
from testing.fixtures import PAYEES
from testing.fixtures import payees_response
from testing.fixtures import PLAN_ID_1
from testing.fixtures import PLAN_ID_2
from testing.fixtures import plan_response
from testing.fixtures import PLANS
from testing.fixtures import SCHEDULED_SUBTRANSACTION_ID_1
from testing.fixtures import SCHEDULED_SUBTRANSACTION_ID_2
from testing.fixtures import SCHEDULED_TRANSACTION_ID_1
from testing.fixtures import SCHEDULED_TRANSACTION_ID_2
from testing.fixtures import SCHEDULED_TRANSACTION_ID_3
from testing.fixtures import SCHEDULED_TRANSACTIONS
from testing.fixtures import scheduled_transactions_response
from testing.fixtures import SERVER_KNOWLEDGE_1
from testing.fixtures import SERVER_KNOWLEDGE_2
from testing.fixtures import SUBTRANSACTION_ID_1
Expand All @@ -83,6 +78,11 @@
from testing.fixtures import TRANSACTION_ID_2
from testing.fixtures import TRANSACTION_ID_3
from testing.fixtures import TRANSACTIONS
from testing.fixtures import accounts_response
from testing.fixtures import categories_response
from testing.fixtures import payees_response
from testing.fixtures import plan_response
from testing.fixtures import scheduled_transactions_response
from testing.fixtures import transactions_response


Expand Down
Loading