samm81
4990cdf229
http: retry safe DAV methods on transient aiohttp disconnects; cli: gather with return_exceptions to allow in-flight backoffs to finish
...
- Retry ServerDisconnectedError/ServerTimeoutError/ClientConnectionError/asyncio.TimeoutError for GET/HEAD/OPTIONS/PROPFIND/REPORT
- Keep original rate-limit handling (429, Google 403 usageLimits)
- In CLI, avoid cancelling sibling tasks so per-request backoff can complete; re-raise first failure after all tasks finish
2025-10-09 09:02:01 +00:00
Hugo Osvaldo Barrera
4c2c60402e
ci: run ruff and mypy
...
Fixes: https://github.com/pimutils/vdirsyncer/issues/1194
2025-09-20 13:53:39 +02:00
Hugo Osvaldo Barrera
2f4f4ac72b
Fix some mypy type failures
2025-09-20 13:51:21 +02:00
Hugo Osvaldo Barrera
6354db82c4
make: install check requirements via install-dev
2025-09-20 13:19:41 +02:00
Hugo Osvaldo Barrera
a9b6488dac
Merge docs-requirements.txt into pyproject.toml
...
Keep requirements definitions all in one place.
2025-09-20 13:18:17 +02:00
Hugo Osvaldo Barrera
a4ceabf80b
Organise imports
...
And update imports from deprecated locations.
2025-09-20 13:05:14 +02:00
Hugo Osvaldo Barrera
3488f77cd6
Remove unused variables
2025-09-20 13:05:14 +02:00
Hugo Osvaldo Barrera
19120422a7
Use ternary operator for trivial assignment
2025-09-20 13:05:14 +02:00
Hugo Osvaldo Barrera
2e619806a0
Drop support for Python 3.8
...
Note that recent commits introduced syntax unsupported by Python 3.8
already.
2025-09-20 13:05:03 +02:00
Hugo Osvaldo Barrera
4669bede07
Organise imports
2025-09-20 12:56:22 +02:00
Hugo Osvaldo Barrera
59c1c55407
Document wrapper
2025-09-20 12:50:00 +02:00
Hugo Osvaldo Barrera
1502f5b5f4
Execute one assertion per line
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
a4d4bf8fd1
Normalise pytest syntax
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
aab70e9fb0
Use cached_property from the stdlib
...
Our local implementation preceded the one in the stdlib, but we no
longer support versions of Python which do not ship it.
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
ed88406aec
Avoid using mutable class attributes
...
A tuple works fine here.
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
ffe883a2f1
Avoid warning due to unused import
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
e5f2869580
ruff: ignore block for legacy Python
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
95bb7bd7f9
Declare functions instead of assigning to lambdas
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
e3b2473383
Use list expansion instead of concatenation
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
424cfc5799
ruff: ignore false positive
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
29312e87c5
Close status even if assertions fail
2025-09-20 12:45:56 +02:00
Hugo Osvaldo Barrera
c77b22334a
Add changelog entry for latest change
2025-09-20 12:42:10 +02:00
samm81
02350c924b
http(request): collates status checks
2025-09-13 16:23:46 +07:00
Samuel Maynard
605f878f9b
test_retry: remove unneeded decorator
...
Co-authored-by: Hugo <hugo@whynothugo.nl>
2025-09-13 12:22:25 +03:00
samm81
bb2b71da81
builds(archlinux-py313): adds python-tenacity package
2025-09-12 17:02:28 +07:00
samm81
065ebe4752
AUTHORS: add samm81
2025-09-12 16:25:00 +07:00
samm81
0d741022a9
http: add rate limiting (mainly for google)
...
- google calendar uses the `403` and `429` codes to perform rate limiting [1][2]. this pr adds `tenacity` to perform exponential back off as suggested in google calendar's docs [3].
[1]: https://developers.google.com/workspace/calendar/api/guides/errors#403_rate_limit_exceeded
[2]: https://developers.google.com/workspace/calendar/api/guides/errors#429_too_many_requests
[3]: https://developers.google.com/workspace/calendar/api/guides/quota#backoff
2025-09-12 16:20:44 +07:00
Hugo Osvaldo Barrera
b5d3b7e578
Apply auto-fixes for RUF rule
2025-08-29 10:17:44 +02:00
Hugo Osvaldo Barrera
9677cf9812
Simplify some statements
2025-08-29 10:17:44 +02:00
Hugo Osvaldo Barrera
6da84c7881
ruff: sort rules
2025-08-29 10:17:44 +02:00
Hugo Osvaldo Barrera
dceb113334
ruff: fix mix-up in configuration
...
Ruff hasn't been finding errors in a while. Most of them are linting
checks anyway, but there was quite a bit of deprecated usages.
2025-08-29 10:17:44 +02:00
Hugo Osvaldo Barrera
01fa614b6b
Fix line which are too long
2025-08-29 10:17:41 +02:00
Hugo Osvaldo Barrera
20cc1247ed
ruff: apply auto-fixes
2025-08-29 10:03:24 +02:00
Дилян Палаузов
2f548e048d
Some code simplifications with the return statement
2025-08-29 09:48:27 +02:00
Jakub Klinkovský
5d343264f3
Remove python-requests-toolbelt from Arch Linux build
...
The dependency was dropped in 89a01631fa
2025-08-29 09:28:50 +02:00
Hugo Osvaldo Barrera
bc3fa8bd39
Remove stale references to setup.py
2025-08-28 22:57:55 +02:00
Hugo Osvaldo Barrera
8803d5a086
ruff: use extend-select
...
Ensure that we don't disable any default rules.
2025-08-28 11:40:46 +02:00
Hugo Osvaldo Barrera
96754a3d0a
ruff: enable TID rules
2025-08-28 11:39:06 +02:00
Hugo Osvaldo Barrera
d42707c108
Bump constraint for aiostream
...
There's a newer version available, and it also doesn't have any breaking
changes which could affect us.
2025-08-28 11:37:14 +02:00
Hugo Osvaldo Barrera
ddfe3cc749
Bump constraint for aiostream
...
Fixes: https://github.com/pimutils/vdirsyncer/issues/1111
2025-08-28 11:32:28 +02:00
Radon Rosborough
84ff0ac943
Log error response body in debug
2025-08-27 09:11:32 +02:00
Hugo Osvaldo Barrera
388c16f188
Document sqlite fix in changelog
2025-08-25 17:37:26 +02:00
Hugo Osvaldo Barrera
78f41d32ce
Explicitly close status database
...
Using `__del__` often closes the database on a different thread, which
is not supported by the sqlite module and produces a different warning.
Explicitly close the status database everywhere it is used.
2025-08-25 17:33:20 +02:00
Hugo Osvaldo Barrera
164559ad7a
Remove references to obsolete event_loop fixture
...
It's gone from the latest pytest-asyncio.
2025-08-25 17:12:21 +02:00
samm81
2c6dc4cddf
updates SqliteStatus to properly close connections
...
otherwise, when trying to run `pytest` in a `python3.13` environment
results in a bunch of
```
tests/unit/sync/test_sync.py::test_partial_sync_ignore
/home/user/.asdf/installs/python/3.13.1/lib/python3.13/asyncio/base_events.py:650: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7fda8f6b6c50>
sys.set_asyncgen_hooks(
Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
```
2025-08-25 16:53:00 +02:00
samm81
9bbb7fa91a
fix: fix mypy typing error
2025-08-25 16:51:29 +02:00
Hugo Osvaldo Barrera
f8bcafa9d7
ci: use Alpine 3.19 for Python 3.11
2025-08-25 16:49:16 +02:00
Hugo Osvaldo Barrera
162879df21
ci: include python version in job name
2025-07-23 23:24:35 +02:00
Hugo Osvaldo Barrera
3b9db0e4db
Add support for Python 3.13
...
Fixes: https://github.com/pimutils/vdirsyncer/issues/1180
2025-07-23 23:23:59 +02:00
Hugo Osvaldo Barrera
63d2e6c795
pyproject: squelch warning
2025-04-11 01:59:29 +02:00