* [fix#1726] Use boto3 for SQS async requests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Consider the following piece of code, very similar to what can be found
in kombu/utils/objects.py:
---8<------------------------------------------------------------------
$ cat /tmp/x.py
try:
from functools import _NOT_FOUND
from functools import cached_property as _cached_property
except ImportError:
from cached_property import threaded_cached_property as _cached_property
_NOT_FOUND = object()
print("OK!")
---8<------------------------------------------------------------------
This works well in Python3.11:
---8<------------------------------------------------------------------
$ podman run -it --rm -v /tmp:/tmp python:3.11.4 python /tmp/x.py
OK!
---8<------------------------------------------------------------------
But fails in Python3.12:
---8<------------------------------------------------------------------
$ podman run -it --rm -v /tmp:/tmp python:3.12.0b2 python /tmp/x.py
Traceback (most recent call last):
File "/tmp/x.py", line 2, in <module>
from functools import _NOT_FOUND
ImportError: cannot import name '_NOT_FOUND' from 'functools' (/usr/local/lib/python3.12/functools.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/tmp/x.py", line 6, in <module>
from cached_property import threaded_cached_property as _cached_property
ModuleNotFoundError: No module named 'cached_property'
---8<------------------------------------------------------------------
This is because Python3.12 removed functools._NOT_FOUND (see commit
056dfc71dce15f81887f0bd6da09d6099d71f979), which prevents
cached_property from being imported from functools in our code. If the
cached_property library is not installed, then the imports fail.
We should be using two different try/except blocks, but since
functools._NOT_FOUND was defined as "object()" in the standard library
anyway, let's just not bother importing it.
The redis-py 4.5.2 changes the UnixDomainSocketConnection class so now
it inherits from AbstractConnection:
https://github.com/redis/redis-py/releases/tag/v4.5.2
This patch makes sure that the health_check_interval parameter is
checked for the __init__ method of the main class and also the bases, so
it doesn't fail with the newer version of redis-py.
* chore(py2): get rid of Python 2 specific requirements
* chore(ci-windows): unify linux and windows requirements
---------
Co-authored-by: Stevie Gayet <stegayet@users.noreply.github.com>