sqlite-export-for-ynab 2.9.8__tar.gz → 2.9.10__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 (22) hide show
  1. {sqlite_export_for_ynab-2.9.8/sqlite_export_for_ynab.egg-info → sqlite_export_for_ynab-2.9.10}/PKG-INFO +1 -1
  2. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/pyproject.toml +4 -2
  3. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/_main.py +11 -8
  4. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10/sqlite_export_for_ynab.egg-info}/PKG-INFO +1 -1
  5. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/tests/_main_test.py +4 -4
  6. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/LICENSE +0 -0
  7. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/README.md +0 -0
  8. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/setup.cfg +0 -0
  9. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/__init__.py +0 -0
  10. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/__main__.py +0 -0
  11. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/ddl/__init__.py +0 -0
  12. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/ddl/create-relations.sql +0 -0
  13. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/ddl/drop-relations.sql +0 -0
  14. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab/py.typed +0 -0
  15. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab.egg-info/SOURCES.txt +0 -0
  16. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab.egg-info/dependency_links.txt +0 -0
  17. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab.egg-info/entry_points.txt +0 -0
  18. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab.egg-info/requires.txt +0 -0
  19. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/sqlite_export_for_ynab.egg-info/top_level.txt +0 -0
  20. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/testing/__init__.py +0 -0
  21. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/testing/fixtures.py +0 -0
  22. {sqlite_export_for_ynab-2.9.8 → sqlite_export_for_ynab-2.9.10}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlite_export_for_ynab
3
- Version: 2.9.8
3
+ Version: 2.9.10
4
4
  Summary: SQLite Export for YNAB - Export YNAB Data to SQLite
5
5
  Author-email: Max R <mxr@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sqlite_export_for_ynab"
3
- version = "2.9.8"
3
+ version = "2.9.10"
4
4
  description = "SQLite Export for YNAB - Export YNAB Data to SQLite"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11" # generated by mxr/base
@@ -28,7 +28,7 @@ dependencies = [
28
28
  [project.urls] # generated by mxr/base
29
29
  Homepage = "https://github.com/mxr/sqlite-export-for-ynab"
30
30
 
31
- [project.scripts]
31
+ [project.scripts] # generated by mxr/base
32
32
  sqlite-export-for-ynab = "sqlite_export_for_ynab._main:main"
33
33
 
34
34
  [dependency-groups]
@@ -125,6 +125,7 @@ env_list = ["py", "pre-commit"]
125
125
  [tool.tox.env.pre-commit] # generated by mxr/base
126
126
  commands = [["pre-commit", "run", "--all-files", "--show-diff-on-failure"]]
127
127
  deps = ["pre-commit-uv"]
128
+ runner = "uv-venv-runner"
128
129
  skip_install = true
129
130
 
130
131
  [tool.tox.env_run_base] # generated by mxr/base
@@ -134,6 +135,7 @@ commands = [
134
135
  ["coverage", "report"],
135
136
  ]
136
137
  dependency_groups = ["dev"]
138
+ runner = "uv-venv-lock-runner"
137
139
 
138
140
  [tool.ty.rules] # generated by mxr/base
139
141
  all = "error"
@@ -47,6 +47,7 @@ from rich.progress import Progress
47
47
  from rich.progress import TaskID
48
48
  from rich.progress import TextColumn
49
49
  from rich.progress import TimeElapsedColumn
50
+ from tenacity import AsyncRetrying
50
51
  from tenacity import retry
51
52
  from tenacity import stop_after_attempt
52
53
 
@@ -693,15 +694,17 @@ class _ProgressYnab:
693
694
  lkos: dict[str, int]
694
695
  task_id: TaskID
695
696
 
696
- @retry(stop=stop_after_attempt(3))
697
697
  async def get(self, endpoint: Callable[..., Awaitable[_T]]) -> _T:
698
- try:
699
- return await endpoint(
700
- plan_id=self.plan_id,
701
- last_knowledge_of_server=self.lkos.get(self.plan_id),
702
- )
703
- finally:
704
- self.context.progress.update(self.task_id, advance=1)
698
+ async for attempt in AsyncRetrying(stop=stop_after_attempt(3)):
699
+ with attempt:
700
+ try:
701
+ return await endpoint(
702
+ plan_id=self.plan_id,
703
+ last_knowledge_of_server=self.lkos.get(self.plan_id),
704
+ )
705
+ finally:
706
+ self.context.progress.update(self.task_id, advance=1)
707
+ raise AssertionError("unreachable")
705
708
 
706
709
 
707
710
  @dataclass(slots=True, frozen=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlite_export_for_ynab
3
- Version: 2.9.8
3
+ Version: 2.9.10
4
4
  Summary: SQLite Export for YNAB - Export YNAB Data to SQLite
5
5
  Author-email: Max R <mxr@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -3,8 +3,10 @@ from __future__ import annotations
3
3
  import tomllib
4
4
  from datetime import date
5
5
  from pathlib import Path
6
+ from unittest.mock import ANY
6
7
  from unittest.mock import AsyncMock
7
8
  from unittest.mock import Mock
9
+ from unittest.mock import call
8
10
  from unittest.mock import patch
9
11
 
10
12
  import aiosqlite
@@ -1048,8 +1050,7 @@ async def test_sync_lock_times_out(mock_get_running_loop, mock_acquire, tmp_path
1048
1050
  timeout=0.1,
1049
1051
  ).__aenter__()
1050
1052
 
1051
- assert mock_acquire.call_count == 1
1052
- assert mock_acquire.call_args.args[1] is False
1053
+ mock_acquire.assert_called_once_with(ANY, False)
1053
1054
 
1054
1055
 
1055
1056
  @patch(
@@ -1085,8 +1086,7 @@ async def test_context_retries_after_sleep(
1085
1086
  ):
1086
1087
  pass
1087
1088
 
1088
- assert mock_acquire.call_count == 2
1089
- assert mock_acquire.call_args_list[0].args[1] is False
1089
+ assert mock_acquire.call_args_list == [call(ANY, False), call(ANY, False)]
1090
1090
  assert mock_sleep.call_count == 1
1091
1091
  assert mock_release.call_count == 1
1092
1092