- 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
* 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
Added changes as requested in SR#750614. Hope I understood the comments there correctly.
- specfile:
* be more specifc in %files section
- update to version 3.3.11:
* Further fix for the SSLError -> TimeoutError mapping to work on
obscure releases of Python 2.7.
- changes from version 3.3.10:
* Fixed a potential error handling bug for the SSLError ->
TimeoutError mapping introduced in 3.3.9. hanks @zbristow. #1224
- changes from version 3.3.9:
* Mapped Python 2.7 SSLError to TimeoutError where
appropriate. Timeouts should now consistently raise TimeoutErrors
on Python 2.7 for both unsecured and secured connections. Thanks
@zbristow. #1222
OBS-URL: https://build.opensuse.org/request/show/750899
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=48
- Update to 3.2.0:
* Added support for `select.poll` to test whether data can be read
on a socket. This should allow for significantly more connections to
be used with pubsub. Fixes #486/#1115
* Attempt to guarentee that the ConnectionPool hands out healthy
connections. Healthy connections are those that have an established
socket connection to the Redis server, are ready to accept a command
and have no data available to read. Fixes #1127/#886
* Use the socket.IPPROTO_TCP constant instead of socket.SOL_TCP.
IPPROTO_TCP is available on more interpreters (Jython for instance).
Thanks @Junnplus. #1130
* Fixed a regression introduced in 3.0 that mishandles exceptions not
derived from the base Exception class. KeyboardInterrupt and
gevent.timeout notable. Thanks Christian Fersch. #1128/#1129
* Significant improvements to handing connections with forked processes.
Parent and child processes no longer trample on each others' connections.
Thanks to Jay Rolette for the patch and highlighting this issue.
#504/#732/#784/#863
* PythonParser no longer closes the associated connection's socket. The
connection itself will close the socket. #1108/#1085
OBS-URL: https://build.opensuse.org/request/show/676978
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=36
* Connection URLs must have one of the following schemes:
redis://, rediss://, unix://. Thanks @jdupl123. #961/#969
* Fixed an issue with retry_on_timeout logic that caused some TimeoutErrors
to be retried. Thanks Aaron Yang. #1022/#1023
* Added support for SNI for SSL. Thanks @oridistor and Roey Prat. #1087
* Fixed ConnectionPool repr for pools with no connections. Thanks
Cody Scott. #1043/#995
* Fixed GEOHASH to return a None value when specifying a place that
doesn't exist on the server. Thanks @guybe7. #1126
* Fixed XREADGROUP to return an empty dictionary for messages that
have been deleted but still exist in the unacknowledged queue. Thanks
@xeizmendi. #1116
* Added an owned method to Lock objects. owned returns a boolean
indicating whether the current lock instance still owns the lock.
Thanks Dave Johansen. #1112
* Allow lock.acquire() to accept an optional token argument. If
provided, the token argument is used as the unique value used to claim
the lock. Thankd Dave Johansen. #1112
* Added a reacquire method to Lock objects. reaquire attempts to renew
the lock such that the timeout is extended to the same value that the
lock was initially acquired with. Thanks Ihor Kalnytskyi. #1014
* Stream names found within XREAD and XREADGROUP responses now properly
respect the decode_responses flag.
* XPENDING_RANGE now requires the user the specify the min, max and
count arguments. Newer versions of Redis prevent ount from being
infinite so it's left to the user to specify these values explicitly.
* ZADD now returns None when xx=True and incr=True and an element
is specified that doesn't exist in the sorted set. This matches
what the server returns in this case. #1084
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=35
* Allow URL encoded parameters in Redis URLs. Characters like a "/" can
now be URL encoded and redis-py will correctly decode them. Thanks
* Added support for the WAIT command. Thanks https://github.com/eshizhan
* Better shutdown support for the PubSub Worker Thread. It now properly
cleans up the connection, unsubscribes from any channels and patterns
previously subscribed to and consumes any waiting messages on the socket.
* Added the ability to sleep for a brief period in the event of a
WatchError occuring. Thanks Joshua Harlow.
* Fixed a bug with pipeline error reporting when dealing with characters
in error messages that could not be encoded to the connection's
character set. Thanks Hendrik Muhs.
* Fixed a bug in Sentinel connections that would inadvertantly connect
to the master when the connection pool resets. Thanks
https://github.com/df3n5
* Better timeout support in Pubsub get_message. Thanks Andy Isaacson.
* Fixed a bug with the HiredisParser that would cause the parser to
get stuck in an endless loop if a specific number of bytes were
delivered from the socket. This fix also increases performance of
parsing large responses from the Redis server.
* Added support for ZREVRANGEBYLEX.
* ConnectionErrors are now raised if Redis refuses a connection due to
the maxclients limit being exceeded. Thanks Roman Karpovich.
* max_connections can now be set when instantiating client instances.
Thanks Ohad Perry.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=22
* Removed socket retry logic in Connection. This is the responsbility of
the caller to determine if the command is safe and can be retried. Thanks
David Wolver.
* Added some extra guards around various types of exceptions being raised
when sending or parsing data. Thanks David Wolver and Denis Bilenko.
- See file CHANGES for previous versions...
- Update to version 2.2.4:
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=6