- Update to 4.5.4:
* Security + Cancelling an async future does not, properly trigger, leading to a potential data leak in specific cases. (CVE-2023-28858, bsc#1209811) + Cancelling an async future does not, properly trigger, leading to a potential data leak in specific cases. (CVE-2023-28859, bsc#1209812) * New Features + Introduce AbstractConnection so that UnixDomainSocketConnection can call super().init (#2588) + Added queue_class to REDIS_ALLOWED_KEYS (#2577) + Made search document subscriptable (#2615) + Sped up the protocol parsing (#2596) + Use hiredis::pack_command to serialized the commands. (#2570) + Add support for unlink in cluster pipeline (#2562) * Bug Fixes + Fixing cancelled async futures (#2666) + Fix: do not use asyncio's timeout lib before 3.11.2 (#2659) + Fix UDS in v4.5.2: UnixDomainSocketConnection missing constructor argument (#2630) + CWE-404 AsyncIO Race Condition Fix (#2624, #2579) + Fix behaviour of async PythonParser to match RedisParser as for issue #2349 (#2582) + Replace async_timeout by asyncio.timeout (#2602) + Update json().arrindex() default values (#2611) + Fix #2581 UnixDomainSocketConnection object has no attribute _command_packer (#2583) + Fix issue with pack_commands returning an empty byte sequence (#2416) + Async HiredisParser should finish parsing after a Connection.disconnect() (#2557) + Check for none, prior to raising exception (#2569) OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=67
This commit is contained in:
parent
bf1ee5d359
commit
5884f3b76f
@ -1,3 +1,45 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 18 03:12:39 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com>
|
||||||
|
|
||||||
|
- Update to 4.5.4:
|
||||||
|
* Security
|
||||||
|
+ Cancelling an async future does not, properly trigger, leading to a
|
||||||
|
potential data leak in specific cases. (CVE-2023-28858, bsc#1209811)
|
||||||
|
+ Cancelling an async future does not, properly trigger, leading to a
|
||||||
|
potential data leak in specific cases. (CVE-2023-28859, bsc#1209812)
|
||||||
|
* New Features
|
||||||
|
+ Introduce AbstractConnection so that UnixDomainSocketConnection can
|
||||||
|
call super().init (#2588)
|
||||||
|
+ Added queue_class to REDIS_ALLOWED_KEYS (#2577)
|
||||||
|
+ Made search document subscriptable (#2615)
|
||||||
|
+ Sped up the protocol parsing (#2596)
|
||||||
|
+ Use hiredis::pack_command to serialized the commands. (#2570)
|
||||||
|
+ Add support for unlink in cluster pipeline (#2562)
|
||||||
|
* Bug Fixes
|
||||||
|
+ Fixing cancelled async futures (#2666)
|
||||||
|
+ Fix: do not use asyncio's timeout lib before 3.11.2 (#2659)
|
||||||
|
+ Fix UDS in v4.5.2: UnixDomainSocketConnection missing constructor
|
||||||
|
argument (#2630)
|
||||||
|
+ CWE-404 AsyncIO Race Condition Fix (#2624, #2579)
|
||||||
|
+ Fix behaviour of async PythonParser to match RedisParser as for
|
||||||
|
issue #2349 (#2582)
|
||||||
|
+ Replace async_timeout by asyncio.timeout (#2602)
|
||||||
|
+ Update json().arrindex() default values (#2611)
|
||||||
|
+ Fix #2581 UnixDomainSocketConnection object has no attribute
|
||||||
|
_command_packer (#2583)
|
||||||
|
+ Fix issue with pack_commands returning an empty byte sequence (#2416)
|
||||||
|
+ Async HiredisParser should finish parsing after a
|
||||||
|
Connection.disconnect() (#2557)
|
||||||
|
+ Check for none, prior to raising exception (#2569)
|
||||||
|
+ Tuple function cannot be passed more than one argument (#2573)
|
||||||
|
+ Synchronise concurrent command calls to single-client to single-client
|
||||||
|
mode (#2568)
|
||||||
|
+ Async: added 'blocking' argument to call lock method (#2454)
|
||||||
|
+ Added a replacement for the default cluster node in the event of
|
||||||
|
failure. (#2463)
|
||||||
|
+ Fixed geosearch: Wrong number of arguments for geosearch command (#2464)
|
||||||
|
- Clean up BuildRequires and Requires.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jan 18 13:09:12 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
Wed Jan 18 13:09:12 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
@ -16,40 +16,27 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%define skip_python2 1
|
|
||||||
Name: python-redis
|
Name: python-redis
|
||||||
Version: 4.3.5
|
Version: 4.5.4
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Python client for Redis key-value store
|
Summary: Python client for Redis key-value store
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: Development/Languages/Python
|
|
||||||
URL: https://github.com/redis/redis-py
|
URL: https://github.com/redis/redis-py
|
||||||
Source0: https://files.pythonhosted.org/packages/source/r/redis/redis-%{version}.tar.gz
|
Source0: https://files.pythonhosted.org/packages/source/r/redis/redis-%{version}.tar.gz
|
||||||
Source1: https://github.com/redis/redis-py/raw/v%{version}/tox.ini
|
Source1: https://github.com/redis/redis-py/raw/v%{version}/tox.ini
|
||||||
BuildRequires: %{python_module Deprecated >= 1.2.3}
|
|
||||||
BuildRequires: %{python_module async-timeout >= 4.0.2}
|
BuildRequires: %{python_module async-timeout >= 4.0.2}
|
||||||
BuildRequires: %{python_module base >= 3.6}
|
BuildRequires: %{python_module base >= 3.7}
|
||||||
BuildRequires: %{python_module importlib-metadata >= 1.0 if %python-base < 3.8}
|
BuildRequires: %{python_module packaging}
|
||||||
# requires mock.AsyncMock
|
|
||||||
BuildRequires: %{python_module mock if %python-base < 3.8}
|
|
||||||
BuildRequires: %{python_module packaging >= 20.4}
|
|
||||||
BuildRequires: %{python_module pytest-asyncio}
|
BuildRequires: %{python_module pytest-asyncio}
|
||||||
BuildRequires: %{python_module pytest-timeout}
|
BuildRequires: %{python_module pytest-timeout}
|
||||||
BuildRequires: %{python_module pytest}
|
BuildRequires: %{python_module pytest}
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
BuildRequires: %{python_module typing-extensions if %python-base < 3.8}
|
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: psmisc
|
BuildRequires: psmisc
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
BuildRequires: redis
|
BuildRequires: redis
|
||||||
Requires: python-Deprecated >= 1.2.3
|
|
||||||
Requires: python-async-timeout >= 4.0.2
|
Requires: python-async-timeout >= 4.0.2
|
||||||
Requires: python-packaging >= 20.4
|
|
||||||
Requires: redis
|
Requires: redis
|
||||||
%if 0%{?python_version_nodots} < 38
|
|
||||||
Requires: python-importlib-metadata >= 1.0
|
|
||||||
Requires: python-typing-extensions
|
|
||||||
%endif
|
|
||||||
Recommends: python-hiredis >= 1.0.0
|
Recommends: python-hiredis >= 1.0.0
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
@ -92,9 +79,9 @@ if [ $(getconf LONG_BIT) -ne 64 ]; then
|
|||||||
# reference precision issues on 32-bit
|
# reference precision issues on 32-bit
|
||||||
donttest=" or test_geopos"
|
donttest=" or test_geopos"
|
||||||
fi
|
fi
|
||||||
# gh#redis/redis-py#2554
|
# gh#redis/redis-py#2554 and gh#redis/redis-py#2679
|
||||||
donttest=" or test_xautoclaim"
|
donttest=" or test_xautoclaim or test_acl_list"
|
||||||
%pytest -m 'not (onlycluster or redismod)' -k "not (dummyprefix $donttest)" --ignore tests/test_ssl.py
|
%pytest -m 'not (onlycluster or redismod)' -k "not (dummyprefix $donttest)" --ignore tests/test_ssl.py --ignore tests/test_asyncio/test_cluster.py --redis-url=redis://localhost:6379/
|
||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:30c07511627a4c5c4d970e060000772f323174f75e745a26938319817ead7a12
|
|
||||||
size 4577422
|
|
3
redis-4.5.4.tar.gz
Normal file
3
redis-4.5.4.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:73ec35da4da267d6847e47f68730fdd5f62e2ca69e3ef5885c6a78a9374c3893
|
||||||
|
size 4552103
|
40
tox.ini
40
tox.ini
@ -9,15 +9,16 @@ markers =
|
|||||||
asyncio: marker for async tests
|
asyncio: marker for async tests
|
||||||
replica: replica tests
|
replica: replica tests
|
||||||
experimental: run only experimental tests
|
experimental: run only experimental tests
|
||||||
|
asyncio_mode = auto
|
||||||
|
|
||||||
[tox]
|
[tox]
|
||||||
minversion = 3.2.0
|
minversion = 3.2.0
|
||||||
requires = tox-docker
|
requires = tox-docker
|
||||||
envlist = {standalone,cluster}-{plain,hiredis,ocsp}-{uvloop,asyncio}-{py36,py37,py38,py39,pypy3},linters,docs
|
envlist = {standalone,cluster}-{plain,hiredis,ocsp}-{uvloop,asyncio}-{py37,py38,py39,pypy3},linters,docs
|
||||||
|
|
||||||
[docker:master]
|
[docker:master]
|
||||||
name = master
|
name = master
|
||||||
image = redisfab/redis-py:6.2.6-buster
|
image = redisfab/redis-py:6.2.6
|
||||||
ports =
|
ports =
|
||||||
6379:6379/tcp
|
6379:6379/tcp
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6379)) else False"
|
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6379)) else False"
|
||||||
@ -26,7 +27,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:replica]
|
[docker:replica]
|
||||||
name = replica
|
name = replica
|
||||||
image = redisfab/redis-py:6.2.6-buster
|
image = redisfab/redis-py:6.2.6
|
||||||
links =
|
links =
|
||||||
master:master
|
master:master
|
||||||
ports =
|
ports =
|
||||||
@ -37,7 +38,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:unstable]
|
[docker:unstable]
|
||||||
name = unstable
|
name = unstable
|
||||||
image = redisfab/redis-py:unstable-bionic
|
image = redisfab/redis-py:unstable
|
||||||
ports =
|
ports =
|
||||||
6378:6378/tcp
|
6378:6378/tcp
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6378)) else False"
|
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6378)) else False"
|
||||||
@ -46,7 +47,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:unstable_cluster]
|
[docker:unstable_cluster]
|
||||||
name = unstable_cluster
|
name = unstable_cluster
|
||||||
image = redisfab/redis-py-cluster:unstable-bionic
|
image = redisfab/redis-py-cluster:unstable
|
||||||
ports =
|
ports =
|
||||||
6372:6372/tcp
|
6372:6372/tcp
|
||||||
6373:6373/tcp
|
6373:6373/tcp
|
||||||
@ -60,7 +61,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:sentinel_1]
|
[docker:sentinel_1]
|
||||||
name = sentinel_1
|
name = sentinel_1
|
||||||
image = redisfab/redis-py-sentinel:6.2.6-buster
|
image = redisfab/redis-py-sentinel:6.2.6
|
||||||
links =
|
links =
|
||||||
master:master
|
master:master
|
||||||
ports =
|
ports =
|
||||||
@ -71,7 +72,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:sentinel_2]
|
[docker:sentinel_2]
|
||||||
name = sentinel_2
|
name = sentinel_2
|
||||||
image = redisfab/redis-py-sentinel:6.2.6-buster
|
image = redisfab/redis-py-sentinel:6.2.6
|
||||||
links =
|
links =
|
||||||
master:master
|
master:master
|
||||||
ports =
|
ports =
|
||||||
@ -82,7 +83,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:sentinel_3]
|
[docker:sentinel_3]
|
||||||
name = sentinel_3
|
name = sentinel_3
|
||||||
image = redisfab/redis-py-sentinel:6.2.6-buster
|
image = redisfab/redis-py-sentinel:6.2.6
|
||||||
links =
|
links =
|
||||||
master:master
|
master:master
|
||||||
ports =
|
ports =
|
||||||
@ -91,16 +92,16 @@ healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(sock
|
|||||||
volumes =
|
volumes =
|
||||||
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_3.conf:/sentinel.conf
|
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_3.conf:/sentinel.conf
|
||||||
|
|
||||||
[docker:redismod]
|
[docker:redis_stack]
|
||||||
name = redismod
|
name = redis_stack
|
||||||
image = redislabs/redismod:edge
|
image = redis/redis-stack-server:edge
|
||||||
ports =
|
ports =
|
||||||
36379:6379/tcp
|
36379:6379/tcp
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',36379)) else False"
|
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',36379)) else False"
|
||||||
|
|
||||||
[docker:redis_cluster]
|
[docker:redis_cluster]
|
||||||
name = redis_cluster
|
name = redis_cluster
|
||||||
image = redisfab/redis-py-cluster:6.2.6-buster
|
image = redisfab/redis-py-cluster:6.2.6
|
||||||
ports =
|
ports =
|
||||||
16379:16379/tcp
|
16379:16379/tcp
|
||||||
16380:16380/tcp
|
16380:16380/tcp
|
||||||
@ -114,7 +115,7 @@ volumes =
|
|||||||
|
|
||||||
[docker:redismod_cluster]
|
[docker:redismod_cluster]
|
||||||
name = redismod_cluster
|
name = redismod_cluster
|
||||||
image = redisfab/redis-py-modcluster:6.2.6
|
image = redisfab/redis-py-modcluster:edge
|
||||||
ports =
|
ports =
|
||||||
46379:46379/tcp
|
46379:46379/tcp
|
||||||
46380:46380/tcp
|
46380:46380/tcp
|
||||||
@ -278,8 +279,7 @@ docker =
|
|||||||
sentinel_2
|
sentinel_2
|
||||||
sentinel_3
|
sentinel_3
|
||||||
redis_cluster
|
redis_cluster
|
||||||
redismod
|
redis_stack
|
||||||
redismod_cluster
|
|
||||||
stunnel
|
stunnel
|
||||||
extras =
|
extras =
|
||||||
hiredis: hiredis
|
hiredis: hiredis
|
||||||
@ -288,10 +288,10 @@ setenv =
|
|||||||
CLUSTER_URL = "redis://localhost:16379/0"
|
CLUSTER_URL = "redis://localhost:16379/0"
|
||||||
UNSTABLE_CLUSTER_URL = "redis://localhost:6372/0"
|
UNSTABLE_CLUSTER_URL = "redis://localhost:6372/0"
|
||||||
commands =
|
commands =
|
||||||
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' {posargs}
|
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' --junit-xml=standalone-results.xml {posargs}
|
||||||
standalone-uvloop: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' --uvloop {posargs}
|
standalone-uvloop: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' --junit-xml=standalone-uvloop-results.xml --uvloop {posargs}
|
||||||
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} --redis-unstable-url={env:UNSTABLE_CLUSTER_URL:} {posargs}
|
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} --redis-unstable-url={env:UNSTABLE_CLUSTER_URL:} --junit-xml=cluster-results.xml {posargs}
|
||||||
cluster-uvloop: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} --redis-unstable-url={env:UNSTABLE_CLUSTER_URL:} --uvloop {posargs}
|
cluster-uvloop: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} --redis-unstable-url={env:UNSTABLE_CLUSTER_URL:} --junit-xml=cluster-uvloop-results.xml --uvloop {posargs}
|
||||||
|
|
||||||
[testenv:redis5]
|
[testenv:redis5]
|
||||||
deps =
|
deps =
|
||||||
@ -343,7 +343,7 @@ deps_files = dev_requirements.txt
|
|||||||
docker =
|
docker =
|
||||||
commands =
|
commands =
|
||||||
flake8
|
flake8
|
||||||
black --target-version py36 --check --diff .
|
black --target-version py37 --check --diff .
|
||||||
isort --check-only --diff .
|
isort --check-only --diff .
|
||||||
vulture redis whitelist.py --min-confidence 80
|
vulture redis whitelist.py --min-confidence 80
|
||||||
flynt --fail-on-change --dry-run .
|
flynt --fail-on-change --dry-run .
|
||||||
|
Loading…
Reference in New Issue
Block a user