- Add pytest.ini source needed to run tests
- Remove/disable broken tests because of suse environment
- drop tox.ini. seems it does no longer exist in 5.0.1
- add support to easily disable the testsuite at build time
- update to 5.0.1
- 🚀 New Features
- Provide aclose() / close() for classes requiring lifetime
management (#2898)
- Add support for ModuleCommands in cluster (#2951)
- Add support for multiple values in RPUSHX (#2949)
- Add Redis.from_pool() class method, for explicitly owning and
closing a ConnectionPool (#2913)
- 🐛 Bug Fixes
- Fixing monitor parsing for messages containing specific
substrings (#2950)
- Cluster determine slot command name need to be upper (#2919)
- Support timeout = 0 in search query (#2934)
- Fix async sentinel: add push_request keyword argument to
read_response (#2922)
- Fix protocol checking for search commands (#2923)
- Fix: SentinelManagedConnection.read_response() got an
unexpected keyword argument 'push_request' (#2894)
- Fix: automatically close connection pool for async Sentinel
(#2900)
- Save a reference to created async tasks, to avoid tasks
potentially disappearing (#2816)
- Avoid reference cycling by the garbage collector during
response reading (#2932)
- 🧰 Maintenance
- Type hint improvements (#2952)
- Replace clear_connect_callbacks with
_deregister_connect_callback (#2955)
- Async fixes, remove del and other things (#2870)
- Add pagination, sorting and grouping examples to search json
example (#2890)
- Remove process-id checks from asyncio. Asyncio and fork()
does not mix. (#2911)
- Fix resource usage and cleanup Mocks in the unit tests
(#2936)
- Remove mentions of tox (#2929)
- Add 7.2 to supported Redis versions (#2896)
- Fix resource warnings in unit tests (#2899)
- Fix typo in redis-stream-example.ipynb (#2918)
- Deprecate RedisGraph (#2927)
- Fix redis 7.2.0 tests (#2902)
- Fix test_scorer (search) (#2920)
- changes from 5.0.0
- What's new?
- Triggers and Functions support Triggers and Functions allow
you to execute server-side functions triggered when key
values are modified or created in Redis, a stream entry
arrival, or explicitly calling them. Simply put, you can
replace Lua scripts with easy-to-develop JavaScript or
TypeScript code. Move your business logic closer to the data
to ensure a lower latency, and forget about updating
dependent key values manually in your code. Try it for
yourself with Quick start
- Full Redis 7.2 and RESP3 support
- Python 3.7 End-of-Life
- Python 3.7 has reached its end-of-life (EOL) as of June
2023. This means that starting from this date, Python 3.7
will no longer receive any updates, including security
patches, bug fixes, or improvements. If you continue to use
Python 3.7 post-EOL, you may expose your projects and
systems to potential security vulnerabilities. We ended its
support in this version and strongly recommend migrating to
Python 3.10.
- 🐛 Bug Fixes
- Fix timeout retrying on pipeline execution (#2812)
- Fix socket garbage collection (#2859)
- 🧰 Maintenance
- Updating client license to clear, MIT (#2884)
- Add py.typed in accordance with PEP-561 (#2738)
- Dependabot label change (#2880)
- Fix type hints in SearchCommands (#2817)
- Add sync modules (except search) tests to cluster CI (#2850)
- Fix a duplicate word in CONTRIBUTING.md (#2848)
- Fixing doc builds (#2869)
- Change cluster docker to edge and enable debug command
(#2853)
OBS-URL: https://build.opensuse.org/request/show/1119872
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-redis?expand=0&rev=35
- Add pytest.ini source needed to run tests
- Remove/disable broken tests because of suse environment
- drop tox.ini. seems it does no longer exist in 5.0.1
- add support to easily disable the testsuite at build time
- update to 5.0.1
- 🚀 New Features
- Provide aclose() / close() for classes requiring lifetime
management (#2898)
- Add support for ModuleCommands in cluster (#2951)
- Add support for multiple values in RPUSHX (#2949)
- Add Redis.from_pool() class method, for explicitly owning and
closing a ConnectionPool (#2913)
- 🐛 Bug Fixes
- Fixing monitor parsing for messages containing specific
substrings (#2950)
- Cluster determine slot command name need to be upper (#2919)
- Support timeout = 0 in search query (#2934)
- Fix async sentinel: add push_request keyword argument to
read_response (#2922)
- Fix protocol checking for search commands (#2923)
- Fix: SentinelManagedConnection.read_response() got an
unexpected keyword argument 'push_request' (#2894)
- Fix: automatically close connection pool for async Sentinel
(#2900)
- Save a reference to created async tasks, to avoid tasks
potentially disappearing (#2816)
- Avoid reference cycling by the garbage collector during
response reading (#2932)
OBS-URL: https://build.opensuse.org/request/show/1119606
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=76
- 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/request/show/1080032
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-redis?expand=0&rev=32
* 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
bsc#1209812, CVE-2023-28859) to fix possible async command
information disclosure.
- Upgrade to 4.4.3:
Update urgency: HIGH: There is a critical bug that may affect a
subset of users. Upgrade!
- CWE-404 AsyncIO Race Condition Fix
- Upgrade to 4.4.2:
- Add support for BF.CARD
- Add support for custom connection pool class in NodesManager
Allow replica to master promotion in nodes_cache
Security Fix: Updating graph parser for potential injection cases
- Upgrade to 4.4.0:
- Async clusters: Support creating locks inside async functions
- Async: added 'blocking' argument to call lock method
- Added a replacement for the default cluster node in the event
of failure.
- Fixed geosearch: Wrong number of arguments for geosearch
command
- Updating dev dependencies
- Removing deprecated LGTM
- Added an explicit index name in RediSearch example
- Adding connection step to bloom filter examples
- Skip test_acl_list test (gh#redis/redis-py#2679)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=65
- udpate to 4.3.5:
* Add support for TIMESERIES 1.8 (#2296)
* Graph - add counters for removed labels and properties (#2292)
* Add support for TDIGEST.QUANTILE extensions (#2317)
* Add TDIGEST.TRIMMED_MEAN (#2300)
* Add support for async GRAPH module (#2273)
* Support TDIGEST.MERGESTORE and make compression optional on TDIGEST.CREATE
(#2319)
* Adding reserve as an alias for create, so that we have BF.RESERVE and
CF.RESERVE accuratenly supported (#2331)
* Fix async connection.is_connected to return a boolean value (#2278)
* Fix: workaround asyncio bug on connection reset by peer (#2259)
* Fix crash: key expire while search (#2270)
* Async cluster: fix concurrent pipeline (#2280)
* Fix async SEARCH pipeline (#2316)
* Fix KeyError in async cluster - initialize before execute multi key
commands (#2439)
* Supply chain risk reduction: remove dependency on library named deprecated
(#2386)
* Search test - Ignore order of the items in the response (#2322)
* Fix GRAPH.LIST & TDIGEST.QUANTILE tests (#2335)
* Fix TimeSeries range aggregation (twa) tests (#2358)
* Mark TOPK.COUNT as deprecated (#2363)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=64
* Fix backward compatibility from 4.3.2 in Lock.acquire()
* Fix XAUTOCLAIM to return the full response, instead of only keys 2+
* Added dynamic_startup_nodes configuration to RedisCluster.
* Fix retries in async mode
* Async cluster: fix simultaneous initialize
* Uppercased commands in CommandsParser.get_keys
* Late eval of the skip condition in async tests
* Reuse the old nodes' connections when a cluster topology refresh is being done
* Docs: add pipeline examples
* Correct retention_msecs value
* Cluster: use pipeline to execute split commands
* Docs: Add a note about client_setname and client_name difference
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=63
- Update to version 4.3.3
* Fix Lock crash, and versioning 4.3.3 (#2210)
* Async cluster: improve docs (#2208)
- Release 4.3.2
* SHUTDOWN - add support for the new NOW, FORCE and ABORT modifiers (#2150)
* Adding pipeline support for async cluster (#2199)
* Support CF.MEXISTS + Clean bf/commands.py (#2184)
* Extending query_params for FT.PROFILE (#2198)
* Implementing ClusterPipeline Lock (#2190)
* Set default response_callbacks to redis.asyncio.cluster.ClusterNode (#2201)
* Add default None for maxlen at xtrim command (#2188)
* Async cluster: add/update typing (#2195)
* Changed list type to single element type (#2203)
* Made sync lock consistent and added types to it (#2137)
* Async cluster: optimisations (#2205)
* Fix typos in README (#2206)
* Fix modules links to https://redis.io/commands/ (#2185)
- Update to version 4.3.1
* Allow negative `retries` for `Retry` class to retry forever
* Add `items` parameter to `hset` signature
* Create codeql-analysis.yml (#1988). Thanks @chayim
* Add limited support for Lua scripting with RedisCluster
* Implement `.lock()` method on RedisCluster
* Fix cursor returned by SCAN for RedisCluster & change default
target to PRIMARIES
* Fix scan_iter for RedisCluster
* Remove verbose logging when initializing ClusterPubSub,
ClusterPipeline or RedisCluster
* Fix broken connection writer lock-up for asyncio (#2065)
OBS-URL: https://build.opensuse.org/request/show/982133
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=59
- update to 3.5.3
* Restore try/except clauses to __del__ methods. These will be removed
in 4.0 when more explicit resource management if enforced. #1339
* Update the master_address when Sentinels promote a new master. #847
* Update SentinelConnectionPool to not forcefully disconnect other in-use
connections which can negatively affect threaded applications. #1345
3.5.2
* Tune the locking in ConnectionPool.get_connection so that the lock is
not held while waiting for the socket to establish and validate the
TCP connection.
3.5.1
* Fix for HSET argument validation to allow any non-None key. Thanks
@AleksMat, #1337, #1341
3.5.0
* Removed exception trapping from __del__ methods. redis-py objects that
hold various resources implement __del__ cleanup methods to release
those resources when the object goes out of scope. This provides a
fallback for when these objects aren't explicitly closed by user code.
Prior to this change any errors encountered in closing these resources
would be hidden from the user. Thanks @jdufresne. #1281
* Expanded support for connection strings specifying a username connecting
to pre-v6 servers. #1274
* Optimized Lock's blocking_timeout and sleep. If the lock cannot be
acquired and the sleep value would cause the loop to sleep beyond
blocking_timeout, fail immediately. Thanks @clslgrnc. #1263
* Added support for passing Python memoryviews to Redis command args that
expect strings or bytes. The memoryview instance is sent directly to
the socket such that there are zero copies made of the underlying data
during command packing. Thanks @Cody-G. #1265, #1285
* HSET command now can accept multiple pairs. HMSET has been marked as
OBS-URL: https://build.opensuse.org/request/show/824116
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=54
- version update to 3.4.1
* 3.4.1
* Move the username argument in the Redis and Connection classes to the
end of the argument list. This helps those poor souls that specify all
their connection options as non-keyword arguments. #1276
* Prior to ACL support, redis-py ignored the username component of
Connection URLs. With ACL support, usernames are no longer ignored and
are used to authenticate against an ACL rule. Some cloud vendors with
managed Redis instances (like Heroku) provide connection URLs with a
username component pre-ACL that is not intended to be used. Sending that
username to Redis servers < 6.0.0 results in an error. Attempt to detect
this condition and retry the AUTH command with only the password such
that authentication continues to work for these users. #1274
* Removed the __eq__ hooks to Redis and ConnectionPool that were added
in 3.4.0. This ended up being a bad idea as two separate connection
pools be considered equal yet manage a completely separate set of
connections.
* 3.4.0
* Allow empty pipelines to be executed if there are WATCHed keys.
This is a convenient way to test if any of the watched keys changed
without actually running any other commands. Thanks @brianmaissy.
#1233, #1234
* Removed support for end of life Python 3.4.
* Added support for all ACL commands in Redis 6. Thanks @IAmATeaPot418
for helping.
* Pipeline instances now always evaluate to True. Prior to this change,
pipeline instances relied on __len__ for boolean evaluation which
meant that pipelines with no commands on the stack would be considered
False. #994
* Client instances and Connection pools now support a 'client_name'
OBS-URL: https://build.opensuse.org/request/show/786458
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=52