Accepting request 982133 from home:bnavigator:branches:devel:languages:python
- 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
This commit is contained in:
parent
8d1c0f81d0
commit
d3a53b0bd3
@ -1,87 +0,0 @@
|
|||||||
From fea5d60c4426ec31a0e309a2efb2be62f6b2a412 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Chayim I. Kirshen" <c@kirshen.com>
|
|
||||||
Date: Mon, 28 Jun 2021 16:34:00 +0300
|
|
||||||
Subject: [PATCH 1/3] changing unit tests to account for defaults in redis
|
|
||||||
flags
|
|
||||||
|
|
||||||
Some versions of redis (validated against 6.2.4) set extra flags, making the tests fail.
|
|
||||||
|
|
||||||
Modified the tests to validate the specific flags pertaining to the test case are in place.
|
|
||||||
|
|
||||||
Similarly with acl_list, as other tests validate the specifics of acl_setuser, I changed it to validate against the acl list.
|
|
||||||
|
|
||||||
Finally, while here, I added python 3.9 to tox
|
|
||||||
---
|
|
||||||
tests/test_commands.py | 37 ++++++++++++++++++-------------------
|
|
||||||
1 file changed, 18 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
--- a/tests/test_commands.py
|
|
||||||
+++ b/tests/test_commands.py
|
|
||||||
@@ -105,25 +105,24 @@ class TestRedisCommands(object):
|
|
||||||
|
|
||||||
# test enabled=False
|
|
||||||
assert r.acl_setuser(username, enabled=False, reset=True)
|
|
||||||
- assert r.acl_getuser(username) == {
|
|
||||||
- 'categories': ['-@all'],
|
|
||||||
- 'commands': [],
|
|
||||||
- 'enabled': False,
|
|
||||||
- 'flags': ['off'],
|
|
||||||
- 'keys': [],
|
|
||||||
- 'passwords': [],
|
|
||||||
- }
|
|
||||||
+ acl = r.acl_getuser(username)
|
|
||||||
+ assert acl['categories'] == ['-@all']
|
|
||||||
+ assert acl['commands'] == []
|
|
||||||
+ assert acl['keys'] == []
|
|
||||||
+ assert acl['passwords'] == []
|
|
||||||
+ assert 'off' in acl['flags']
|
|
||||||
+ assert acl['enabled'] is False
|
|
||||||
|
|
||||||
# test nopass=True
|
|
||||||
assert r.acl_setuser(username, enabled=True, reset=True, nopass=True)
|
|
||||||
- assert r.acl_getuser(username) == {
|
|
||||||
- 'categories': ['-@all'],
|
|
||||||
- 'commands': [],
|
|
||||||
- 'enabled': True,
|
|
||||||
- 'flags': ['on', 'nopass'],
|
|
||||||
- 'keys': [],
|
|
||||||
- 'passwords': [],
|
|
||||||
- }
|
|
||||||
+ acl = r.acl_getuser(username)
|
|
||||||
+ assert acl['categories'] == ['-@all']
|
|
||||||
+ assert acl['commands'] == []
|
|
||||||
+ assert acl['keys'] == []
|
|
||||||
+ assert acl['passwords'] == []
|
|
||||||
+ assert 'on' in acl['flags']
|
|
||||||
+ assert 'nopass' in acl['flags']
|
|
||||||
+ assert acl['enabled'] is True
|
|
||||||
|
|
||||||
# test all args
|
|
||||||
assert r.acl_setuser(username, enabled=True, reset=True,
|
|
||||||
@@ -135,7 +134,7 @@ class TestRedisCommands(object):
|
|
||||||
assert set(acl['categories']) == set(['-@all', '+@set', '+@hash'])
|
|
||||||
assert set(acl['commands']) == set(['+get', '+mget', '-hset'])
|
|
||||||
assert acl['enabled'] is True
|
|
||||||
- assert acl['flags'] == ['on']
|
|
||||||
+ assert 'on' in acl['flags']
|
|
||||||
assert set(acl['keys']) == set([b'cache:*', b'objects:*'])
|
|
||||||
assert len(acl['passwords']) == 2
|
|
||||||
|
|
||||||
@@ -154,7 +153,7 @@ class TestRedisCommands(object):
|
|
||||||
assert set(acl['categories']) == set(['-@all', '+@set', '+@hash'])
|
|
||||||
assert set(acl['commands']) == set(['+get', '+mget'])
|
|
||||||
assert acl['enabled'] is True
|
|
||||||
- assert acl['flags'] == ['on']
|
|
||||||
+ assert 'on' in acl['flags']
|
|
||||||
assert set(acl['keys']) == set([b'cache:*', b'objects:*'])
|
|
||||||
assert len(acl['passwords']) == 2
|
|
||||||
|
|
||||||
@@ -193,7 +192,7 @@ class TestRedisCommands(object):
|
|
||||||
|
|
||||||
assert r.acl_setuser(username, enabled=False, reset=True)
|
|
||||||
users = r.acl_list()
|
|
||||||
- assert 'user %s off -@all' % username in users
|
|
||||||
+ assert len(users) == 2
|
|
||||||
|
|
||||||
@skip_if_server_version_lt(REDIS_6_VERSION)
|
|
||||||
def test_acl_setuser_categories_without_prefix_fails(self, r, request):
|
|
@ -1,3 +1,346 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Jun 11 11:03:12 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- 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)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 10 18:19:07 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- 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)
|
||||||
|
* Fix auth bug when provided with no username (#2086)
|
||||||
|
- Release 4.1.3
|
||||||
|
* Fix flushdb and flushall (#1926)
|
||||||
|
* Add redis5 and redis4 dockers (#1871)
|
||||||
|
* Change json.clear test multi to be up to date with redisjson
|
||||||
|
(#1922)
|
||||||
|
* Fixing volume for unstable_cluster docker (#1914)
|
||||||
|
* Update changes file with changes since 4.0.0-beta2 (#1915)
|
||||||
|
- Release 4.1.2
|
||||||
|
* Invalid OCSP certificates should raise ConnectionError on
|
||||||
|
failed validation (#1907)
|
||||||
|
* Added retry mechanism on socket timeouts when connecting to
|
||||||
|
the server (#1895)
|
||||||
|
* LMOVE, BLMOVE return incorrect responses (#1906)
|
||||||
|
* Fixing AttributeError in UnixDomainSocketConnection (#1903)
|
||||||
|
* Fixing TypeError in GraphCommands.explain (#1901)
|
||||||
|
* For tests, increasing wait time for the cluster (#1908)
|
||||||
|
* Increased pubsub's wait_for_messages timeout to prevent flaky
|
||||||
|
tests (#1893)
|
||||||
|
* README code snippets formatted to highlight properly (#1888)
|
||||||
|
* Fix link in the main page (#1897)
|
||||||
|
* Documentation fixes: JSON Example, SSL Connection Examples,
|
||||||
|
RTD version (#1887)
|
||||||
|
* Direct link to readthedocs (#1885)
|
||||||
|
- Release 4.1.1
|
||||||
|
* Add retries to connections in Sentinel Pools (#1879)
|
||||||
|
* OCSP Stapling Support (#1873)
|
||||||
|
* Define incr/decr as aliases of incrby/decrby (#1874)
|
||||||
|
* FT.CREATE - support MAXTEXTFIELDS, TEMPORARY, NOHL, NOFREQS,
|
||||||
|
SKIPINITIALSCAN (#1847)
|
||||||
|
* Timeseries docs fix (#1877)
|
||||||
|
* get_connection: catch OSError too (#1832)
|
||||||
|
* Set keys var otherwise variable not created (#1853)
|
||||||
|
* Clusters should optionally require full slot coverage (#1845)
|
||||||
|
* Triple quote docstrings in client.py PEP 257 (#1876)
|
||||||
|
* syncing requirements (#1870)
|
||||||
|
* Typo and typing in GraphCommands documentation (#1855)
|
||||||
|
* Allowing poetry and redis-py to install together (#1854)
|
||||||
|
* setup.py: Add project_urls for PyPI (#1867)
|
||||||
|
* Support test with redis unstable docker (#1850)
|
||||||
|
* Connection examples (#1835)
|
||||||
|
* Documentation cleanup (#1841)
|
||||||
|
- Release 4.1.0
|
||||||
|
* OCSP stapling support (#1820)
|
||||||
|
* Support for SELECT (#1825)
|
||||||
|
* Support for specifying error types with retry (#1817)
|
||||||
|
* Support for RESET command since Redis 6.2.0 (#1824)
|
||||||
|
* Support CLIENT TRACKING (#1612)
|
||||||
|
* Support WRITE in CLIENT PAUSE (#1549)
|
||||||
|
* JSON set_file and set_path support (#1818)
|
||||||
|
* Allow ssl_ca_path with rediss:// urls (#1814)
|
||||||
|
* Support for password-encrypted SSL private keys (#1782)
|
||||||
|
* Support SYNC and PSYNC (#1741)
|
||||||
|
* Retry on error exception and timeout fixes (#1821)
|
||||||
|
* Fixing read race condition during pubsub (#1737)
|
||||||
|
* Fixing exception in listen (#1823)
|
||||||
|
* Fixed MovedError, and stopped iterating through startup nodes
|
||||||
|
when slots are fully covered (#1819)
|
||||||
|
* Socket not closing after server disconnect (#1797)
|
||||||
|
* Single sourcing the package version (#1791)
|
||||||
|
* Ensure redis_connect_func is set on uds connection (#1794)
|
||||||
|
* SRTALGO - Skip for redis versions greater than 7.0.0 (#1831)
|
||||||
|
* Documentation updates (#1822)
|
||||||
|
* Add CI action to install package from repository commit hash
|
||||||
|
(#1781) (#1790)
|
||||||
|
* Fix link in lmove docstring (#1793)
|
||||||
|
* Disabling JSON.DEBUG tests (#1787)
|
||||||
|
* Migrated targeted nodes to kwargs in Cluster Mode (#1762)
|
||||||
|
* Added support for MONITOR in clusters (#1756)
|
||||||
|
* Adding ROLE Command (#1610)
|
||||||
|
* Integrate RedisBloom support (#1683)
|
||||||
|
* Adding RedisGraph support (#1556)
|
||||||
|
* Allow overriding connection class via keyword arguments
|
||||||
|
(#1752)
|
||||||
|
* Aggregation LOAD * support for RediSearch (#1735)
|
||||||
|
* Adding cluster, bloom, and graph docs (#1779)
|
||||||
|
* Add packaging to setup_requires, and use >= to play nice to
|
||||||
|
setup.py (fixes #1625) (#1780)
|
||||||
|
* Fixing the license link in the readme (#1778)
|
||||||
|
* Removing distutils from tests (#1773)
|
||||||
|
* Fix cluster ACL tests (#1774)
|
||||||
|
* Improved RedisCluster's reinitialize_steps and documentation
|
||||||
|
(#1765)
|
||||||
|
* Added black and isort (#1734)
|
||||||
|
* Link Documents for all module commands (#1711)
|
||||||
|
* Pyupgrade + flynt + f-strings (#1759)
|
||||||
|
* Remove unused aggregation subclasses in RediSearch (#1754)
|
||||||
|
* Adding RedisCluster client to support Redis Cluster Mode
|
||||||
|
(#1660)
|
||||||
|
* Support RediSearch FT.PROFILE command (#1727)
|
||||||
|
* Adding support for non-decodable commands (#1731)
|
||||||
|
* COMMAND GETKEYS support (#1738)
|
||||||
|
* RedisJSON 2.0.4 behaviour support (#1747)
|
||||||
|
* Removing deprecating distutils (PEP 632) (#1730)
|
||||||
|
* Updating PR template (#1745)
|
||||||
|
* Removing duplication of Script class (#1751)
|
||||||
|
* Splitting documentation for read the docs (#1743)
|
||||||
|
* Improve code coverage for aggregation tests (#1713)
|
||||||
|
* Fixing COMMAND GETKEYS tests (#1750)
|
||||||
|
* GitHub release improvements (#1684)
|
||||||
|
- Release 4.0.2
|
||||||
|
* Restoring Sentinel commands to redis client (#1723)
|
||||||
|
* Better removal of hiredis warning (#1726)
|
||||||
|
* Adding links to redis documents in function calls (#1719)
|
||||||
|
- Release 4.0.1
|
||||||
|
* Removing command on initial connections (#1722)
|
||||||
|
* Removing hiredis warning when not installed (#1721)
|
||||||
|
- Release 4.0.0
|
||||||
|
* FT.EXPLAINCLI intentionally raising NotImplementedError
|
||||||
|
* Restoring ZRANGE desc for Redis < 6.2.0 (#1697)
|
||||||
|
* Response parsing occasionally fails to parse floats (#1692)
|
||||||
|
* Re-enabling read-the-docs (#1707)
|
||||||
|
* Call HSET after FT.CREATE to avoid keyspace scan (#1706)
|
||||||
|
* Unit tests fixes for compatibility (#1703)
|
||||||
|
* Improve documentation about Locks (#1701)
|
||||||
|
* Fixes to allow --redis-url to pass through all tests (#1700)
|
||||||
|
* Fix unit tests running against Redis 4.0.0 (#1699)
|
||||||
|
* Search alias test fix (#1695)
|
||||||
|
* Adding RediSearch/RedisJSON tests (#1691)
|
||||||
|
* Updating codecov rules (#1689)
|
||||||
|
* Tests to validate custom JSON decoders (#1681)
|
||||||
|
* Added breaking icon to release drafter (#1702)
|
||||||
|
* Removing dependency on six (#1676)
|
||||||
|
* Re-enable pipeline support for JSON and TimeSeries (#1674)
|
||||||
|
* Export Sentinel, and SSL like other classes (#1671)
|
||||||
|
* Restore zrange functionality for older versions of Redis
|
||||||
|
(#1670)
|
||||||
|
* Fixed garbage collection deadlock (#1578)
|
||||||
|
* Tests to validate built python packages (#1678)
|
||||||
|
* Sleep for flaky search test (#1680)
|
||||||
|
* Test function renames, to match standards (#1679)
|
||||||
|
* Docstring improvements for Redis class (#1675)
|
||||||
|
* Fix georadius tests (#1672)
|
||||||
|
* Improvements to JSON coverage (#1666)
|
||||||
|
* Add python_requires setuptools check for python > 3.6 (#1656)
|
||||||
|
* SMISMEMBER support (#1667)
|
||||||
|
* Exposing the module version in loaded_modules (#1648)
|
||||||
|
* RedisTimeSeries support (#1652)
|
||||||
|
* Support for json multipath ($) (#1663)
|
||||||
|
* Added boolean parsing to PEXPIRE and PEXPIREAT (#1665)
|
||||||
|
* Add python_requires setuptools check for python > 3.6 (#1656)
|
||||||
|
* Adding vulture for static analysis (#1655)
|
||||||
|
* Starting to clean the docs (#1657)
|
||||||
|
* Update README.md (#1654)
|
||||||
|
* Adding description format for package (#1651)
|
||||||
|
* Publish to pypi as releases are generated with the release
|
||||||
|
drafter (#1647)
|
||||||
|
* Restore actions to prs (#1653)
|
||||||
|
* Fixing the package to include commands (#1649)
|
||||||
|
* Re-enabling codecov as part of CI process (#1646)
|
||||||
|
* Adding support for redisearch (#1640) Thanks @chayim
|
||||||
|
* redisjson support (#1636) Thanks @chayim
|
||||||
|
* Sentinel: Add SentinelManagedSSLConnection (#1419) Thanks
|
||||||
|
@AbdealiJK
|
||||||
|
* Enable floating parameters in SET (ex and px) (#1635) Thanks
|
||||||
|
@AvitalFineRedis
|
||||||
|
* Add warning when hiredis not installed. Recommend
|
||||||
|
installation. (#1621) Thanks @adiamzn
|
||||||
|
* Raising NotImplementedError for SCRIPT DEBUG and DEBUG
|
||||||
|
SEGFAULT (#1624) Thanks @chayim
|
||||||
|
* CLIENT REDIR command support (#1623) Thanks @chayim
|
||||||
|
* REPLICAOF command implementation (#1622) Thanks @chayim
|
||||||
|
* Add support to NX XX and CH to GEOADD (#1605) Thanks
|
||||||
|
@AvitalFineRedis
|
||||||
|
* Add support to ZRANGE and ZRANGESTORE parameters (#1603)
|
||||||
|
Thanks @AvitalFineRedis
|
||||||
|
* Pre 6.2 redis should default to None for script flush (#1641)
|
||||||
|
Thanks @chayim
|
||||||
|
* Add FULL option to XINFO SUMMARY (#1638) Thanks @agusdmb
|
||||||
|
* Geosearch test should use any=True (#1594) Thanks
|
||||||
|
@Andrew-Chen-Wang
|
||||||
|
* Removing packaging dependency (#1626) Thanks @chayim
|
||||||
|
* Fix client_kill_filter docs for skimpy (#1596) Thanks
|
||||||
|
@Andrew-Chen-Wang
|
||||||
|
* Normalize minid and maxlen docs (#1593) Thanks
|
||||||
|
@Andrew-Chen-Wang
|
||||||
|
* Update docs for multiple usernames for ACL DELUSER (#1595)
|
||||||
|
Thanks @Andrew-Chen-Wang
|
||||||
|
* Fix grammar of get param in set command (#1588) Thanks
|
||||||
|
@Andrew-Chen-Wang
|
||||||
|
* Fix docs for client_kill_filter (#1584) Thanks
|
||||||
|
@Andrew-Chen-Wang
|
||||||
|
* Convert README & CONTRIBUTING from rst to md (#1633) Thanks
|
||||||
|
@davidylee
|
||||||
|
* Test BYLEX param in zrangestore (#1634) Thanks
|
||||||
|
@AvitalFineRedis
|
||||||
|
* Tox integrations with invoke and docker (#1632) Thanks
|
||||||
|
@chayim
|
||||||
|
* Adding the release drafter to help simplify release notes
|
||||||
|
(#1618). Thanks @chayim
|
||||||
|
* BACKWARDS INCOMPATIBLE: Removed support for end of life
|
||||||
|
Python 2.7. #1318
|
||||||
|
* BACKWARDS INCOMPATIBLE: All values within Redis URLs are
|
||||||
|
unquoted via urllib.parse.unquote. Prior versions of redis-py
|
||||||
|
supported this by specifying the ``decode_components`` flag
|
||||||
|
to the ``from_url`` functions. This is now done by default
|
||||||
|
and cannot be disabled. #589
|
||||||
|
* POTENTIALLY INCOMPATIBLE: Redis commands were moved into a
|
||||||
|
mixin (see commands.py). Anyone importing ``redis.client`` to
|
||||||
|
access commands directly should import ``redis.commands``.
|
||||||
|
#1534, #1550
|
||||||
|
* Removed technical debt on REDIS_6_VERSION placeholder. Thanks
|
||||||
|
@chayim #1582.
|
||||||
|
* Various docus fixes. Thanks @Andrew-Chen-Wang #1585, #1586.
|
||||||
|
* Support for LOLWUT command, available since Redis 5.0.0.
|
||||||
|
Thanks @brainix #1568.
|
||||||
|
* Added support for CLIENT REPLY, available in Redis 3.2.0.
|
||||||
|
Thanks @chayim #1581.
|
||||||
|
* Support for Auto-reconnect PubSub on get_message. Thanks
|
||||||
|
@luhn #1574.
|
||||||
|
* Fix RST syntax error in README/ Thanks @JanCBrammer #1451.
|
||||||
|
* IDLETIME and FREQ support for RESTORE. Thanks @chayim #1580.
|
||||||
|
* Supporting args with MODULE LOAD. Thanks @chayim #1579.
|
||||||
|
* Updating RedisLabs with Redis. Thanks @gkorland #1575.
|
||||||
|
* Added support for ASYNC to SCRIPT FLUSH available in Redis
|
||||||
|
6.2.0. Thanks @chayim. #1567
|
||||||
|
* Added CLIENT LIST fix to support multiple client ids
|
||||||
|
available in Redis 2.8.12. Thanks @chayim #1563.
|
||||||
|
* Added DISCARD support for pipelines available in Redis 2.0.0.
|
||||||
|
Thanks @chayim #1565.
|
||||||
|
* Added ACL DELUSER support for deleting lists of users
|
||||||
|
available in Redis 6.2.0. Thanks @chayim. #1562
|
||||||
|
* Added CLIENT TRACKINFO support available in Redis 6.2.0.
|
||||||
|
Thanks @chayim. #1560
|
||||||
|
* Added GEOSEARCH and GEOSEARCHSTORE support available in Redis
|
||||||
|
6.2.0. Thanks @AvitalFine Redis. #1526
|
||||||
|
* Added LPUSHX support for lists available in Redis 4.0.0.
|
||||||
|
Thanks @chayim. #1559
|
||||||
|
* Added support for QUIT available in Redis 1.0.0. Thanks
|
||||||
|
@chayim. #1558
|
||||||
|
* Added support for COMMAND COUNT available in Redis 2.8.13.
|
||||||
|
Thanks @chayim. #1554.
|
||||||
|
* Added CREATECONSUMER support for XGROUP available in Redis
|
||||||
|
6.2.0. Thanks @AvitalFineRedis. #1553
|
||||||
|
* Including slowly complexity in INFO if available. Thanks
|
||||||
|
@ian28223 #1489.
|
||||||
|
* Added support for STRALGO available in Redis 6.0.0. Thanks
|
||||||
|
@AvitalFineRedis. #1528
|
||||||
|
* Addes support for ZMSCORE available in Redis 6.2.0. Thanks
|
||||||
|
@2014BDuck and @jiekun.zhu. #1437
|
||||||
|
* Support MINID and LIMIT on XADD available in Redis 6.2.0.
|
||||||
|
Thanks @AvitalFineRedis. #1548
|
||||||
|
* Added sentinel commands FLUSHCONFIG, CKQUORUM, FAILOVER, and
|
||||||
|
RESET available in Redis 2.8.12. Thanks @otherpirate. #834
|
||||||
|
* Migrated Version instead of StrictVersion for Python 3.10.
|
||||||
|
Thanks @tirkarthi. #1552
|
||||||
|
* Added retry mechanism with backoff. Thanks @nbraun-amazon.
|
||||||
|
#1494
|
||||||
|
* Migrated commands to a mixin. Thanks @chayim. #1534
|
||||||
|
* Added support for ZUNION, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1522
|
||||||
|
* Added support for CLIENT LIST with ID, available in Redis
|
||||||
|
6.2.0. Thanks @chayim. #1505
|
||||||
|
* Added support for MINID and LIMIT with xtrim, available in
|
||||||
|
Reds 6.2.0. Thanks @chayim. #1508
|
||||||
|
* Implemented LMOVE and BLMOVE commands, available in Redis
|
||||||
|
6.2.0. Thanks @chayim. #1504
|
||||||
|
* Added GET argument to SET command, available in Redis 6.2.0.
|
||||||
|
Thanks @2014BDuck. #1412
|
||||||
|
* Documentation fixes. Thanks @enjoy-binbin @jonher937. #1496
|
||||||
|
#1532
|
||||||
|
* Added support for XAUTOCLAIM, available in Redis 6.2.0.
|
||||||
|
Thanks @AvitalFineRedis. #1529
|
||||||
|
* Added IDLE support for XPENDING, available in Redis 6.2.0.
|
||||||
|
Thanks @AvitalFineRedis. #1523
|
||||||
|
* Add a count parameter to lpop/rpop, available in Redis 6.2.0.
|
||||||
|
Thanks @wavenator. #1487
|
||||||
|
* Added a (pypy) trove classifier for Python 3.9. Thanks @D3X.
|
||||||
|
#1535
|
||||||
|
* Added ZINTER support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1520
|
||||||
|
* Added ZINTER support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1520
|
||||||
|
* Added ZDIFF and ZDIFFSTORE support, available in Redis 6.2.0.
|
||||||
|
Thanks @AvitalFineRedis. #1518
|
||||||
|
* Added ZRANGESTORE support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1521
|
||||||
|
* Added LT and GT support for ZADD, available in Redis 6.2.0.
|
||||||
|
Thanks @chayim. #1509
|
||||||
|
* Added ZRANDMEMBER support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1519
|
||||||
|
* Added GETDEL support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1514
|
||||||
|
* Added CLIENT KILL laddr filter, available in Redis 6.2.0.
|
||||||
|
Thanks @chayim. #1506
|
||||||
|
* Added CLIENT UNPAUSE, available in Redis 6.2.0. Thanks
|
||||||
|
@chayim. #1512
|
||||||
|
* Added NOMKSTREAM support for XADD, available in Redis 6.2.0.
|
||||||
|
Thanks @chayim. #1507
|
||||||
|
* Added HRANDFIELD support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1513
|
||||||
|
* Added CLIENT INFO support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1517
|
||||||
|
* Added GETEX support, available in Redis 6.2.0. Thanks
|
||||||
|
@AvitalFineRedis. #1515
|
||||||
|
* Added support for COPY command, available in Redis 6.2.0.
|
||||||
|
Thanks @malinaa96. #1492
|
||||||
|
* Provide a development and testing environment via docker.
|
||||||
|
Thanks @abrookins. #1365
|
||||||
|
* Added support for the LPOS command available in Redis 6.0.6.
|
||||||
|
Thanks @aparcar #1353/#1354
|
||||||
|
* Added support for the ACL LOG command available in Redis 6.
|
||||||
|
Thanks @2014BDuck. #1307
|
||||||
|
* Added support for ABSTTL option of the RESTORE command
|
||||||
|
available in Redis 5.0. Thanks @charettes. #1423
|
||||||
|
- Drop account-defaults-redis.patch merged upstream
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jul 16 09:15:51 UTC 2021 - Matej Cepl <mcepl@suse.com>
|
Fri Jul 16 09:15:51 UTC 2021 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-redis
|
# spec file for package python-redis
|
||||||
#
|
#
|
||||||
# Copyright (c) 2021 SUSE LLC
|
# Copyright (c) 2022 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -16,27 +16,42 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
%{?!python_module:%define python_module() python3-%{**}}
|
||||||
|
%define skip_python2 1
|
||||||
Name: python-redis
|
Name: python-redis
|
||||||
Version: 3.5.3
|
Version: 4.3.3
|
||||||
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
|
Group: Development/Languages/Python
|
||||||
URL: https://github.com/andymccurdy/redis-py
|
URL: https://github.com/redis/redis-py
|
||||||
Source: 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
|
||||||
# PATCH-FIX-UPSTREAM account-defaults-redis.patch gh#andymccurdy/redis-py#1499 mcepl@suse.com
|
Source1: https://github.com/redis/redis-py/raw/v%{version}/tox.ini
|
||||||
# changing unit tests to account for defaults in redis
|
BuildRequires: %{python_module Deprecated >= 1.2.3}
|
||||||
Patch0: account-defaults-redis.patch
|
BuildRequires: %{python_module async-timeout >= 4.0.2}
|
||||||
BuildRequires: %{python_module mock}
|
BuildRequires: %{python_module base >= 3.6}
|
||||||
BuildRequires: %{python_module pytest >= 2.7.0}
|
BuildRequires: %{python_module importlib-metadata >= 1.0 if %python-base < 3.8}
|
||||||
|
# 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-timeout}
|
||||||
|
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-packaging >= 20.4
|
||||||
Requires: redis
|
Requires: redis
|
||||||
Recommends: python-hiredis >= 0.1.3
|
%if 0%{?python_version_nodots} < 38
|
||||||
|
Requires: python-importlib-metadata >= 1.0
|
||||||
|
Requires: python-typing-extensions
|
||||||
|
%endif
|
||||||
|
Recommends: python-hiredis >= 1.0.0
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
|
|
||||||
@ -45,6 +60,8 @@ The Python interface to the Redis key-value store.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n redis-%{version}
|
%autosetup -p1 -n redis-%{version}
|
||||||
|
# tox.ini for pytest markers
|
||||||
|
cp %{SOURCE1} .
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%python_build
|
%python_build
|
||||||
@ -54,15 +71,34 @@ The Python interface to the Redis key-value store.
|
|||||||
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||||
|
|
||||||
%check
|
%check
|
||||||
%{_sbindir}/redis-server --port 6379 &
|
# upstream's tox testsuite starts several servers in docker containers listening on different ports.
|
||||||
%pytest
|
# We just start two of them locally
|
||||||
|
# master
|
||||||
killall redis-server
|
# https://github.com/redis/redis/pull/9920
|
||||||
|
%{_sbindir}/redis-server --version | grep ' v=7\.' && redis7args="--enable-debug-command yes --enable-module-command yes"
|
||||||
|
%{_sbindir}/redis-server --port 6379 --save "" $redis7args &
|
||||||
|
victims="$!"
|
||||||
|
trap "kill $victims || true" EXIT
|
||||||
|
sleep 2
|
||||||
|
# replica
|
||||||
|
%{_sbindir}/redis-server --port 6380 --save "" --replicaof localhost 6379 &
|
||||||
|
victims="$victims $!"
|
||||||
|
trap "kill $victims || true" EXIT
|
||||||
|
sleep 2
|
||||||
|
# onlycluster: skip tests which require a full cluster
|
||||||
|
# redismod: Not available (https://github.com/RedisLabsModules/redismod)
|
||||||
|
# ssl: no stunnel with certs from docker container, fails at test collection
|
||||||
|
#
|
||||||
|
if [ $(getconf LONG_BIT) -ne 64 ]; then
|
||||||
|
# reference precision issues on 32-bit
|
||||||
|
donttest=" or test_geopos"
|
||||||
|
fi
|
||||||
|
%pytest -m 'not (onlycluster or redismod)' -k "not (dummyprefix $donttest)" --ignore tests/test_ssl.py
|
||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
%doc CHANGES README.rst
|
%doc README.md
|
||||||
%{python_sitelib}/redis/
|
%{python_sitelib}/redis/
|
||||||
%{python_sitelib}/redis-%{version}-py*.egg-info
|
%{python_sitelib}/redis-%{version}*-info
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2
|
|
||||||
size 141112
|
|
3
redis-4.3.3.tar.gz
Normal file
3
redis-4.3.3.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:2f7a57cf4af15cd543c4394bcbe2b9148db2606a37edba755368836e3a1d053e
|
||||||
|
size 4564562
|
8
redismod.conf
Normal file
8
redismod.conf
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
loadmodule /usr/lib/redis/modules/redisai.so
|
||||||
|
loadmodule /usr/lib/redis/modules/redisearch.so
|
||||||
|
loadmodule /usr/lib/redis/modules/redisgraph.so
|
||||||
|
loadmodule /usr/lib/redis/modules/redistimeseries.so
|
||||||
|
loadmodule /usr/lib/redis/modules/rejson.so
|
||||||
|
loadmodule /usr/lib/redis/modules/redisbloom.so
|
||||||
|
loadmodule /var/opt/redislabs/lib/modules/redisgears.so Plugin /var/opt/redislabs/modules/rg/plugin/gears_python.so Plugin /var/opt/redislabs/modules/rg/plugin/gears_jvm.so JvmOptions -Djava.class.path=/var/opt/redislabs/modules/rg/gear_runtime-jar-with-dependencies.jar JvmPath /var/opt/redislabs/modules/rg/OpenJDK/jdk-11.0.9.1+1/
|
||||||
|
|
379
tox.ini
Normal file
379
tox.ini
Normal file
@ -0,0 +1,379 @@
|
|||||||
|
[pytest]
|
||||||
|
addopts = -s
|
||||||
|
markers =
|
||||||
|
redismod: run only the redis module tests
|
||||||
|
pipeline: pipeline tests
|
||||||
|
onlycluster: marks tests to be run only with cluster mode redis
|
||||||
|
onlynoncluster: marks tests to be run only with standalone redis
|
||||||
|
ssl: marker for only the ssl tests
|
||||||
|
asyncio: marker for async tests
|
||||||
|
replica: replica tests
|
||||||
|
experimental: run only experimental tests
|
||||||
|
|
||||||
|
[tox]
|
||||||
|
minversion = 3.2.0
|
||||||
|
requires = tox-docker
|
||||||
|
envlist = {standalone,cluster}-{plain,hiredis,ocsp}-{uvloop,asyncio}-{py36,py37,py38,py39,pypy3},linters,docs
|
||||||
|
|
||||||
|
[docker:master]
|
||||||
|
name = master
|
||||||
|
image = redisfab/redis-py:6.2.6-buster
|
||||||
|
ports =
|
||||||
|
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"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis6.2/master/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:replica]
|
||||||
|
name = replica
|
||||||
|
image = redisfab/redis-py:6.2.6-buster
|
||||||
|
links =
|
||||||
|
master:master
|
||||||
|
ports =
|
||||||
|
6380:6380/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',6380)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis6.2/replica/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:unstable]
|
||||||
|
name = unstable
|
||||||
|
image = redisfab/redis-py:unstable-bionic
|
||||||
|
ports =
|
||||||
|
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"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/unstable/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:unstable_cluster]
|
||||||
|
name = unstable_cluster
|
||||||
|
image = redisfab/redis-py-cluster:unstable-bionic
|
||||||
|
ports =
|
||||||
|
6372:6372/tcp
|
||||||
|
6373:6373/tcp
|
||||||
|
6374:6374/tcp
|
||||||
|
6375:6375/tcp
|
||||||
|
6376:6376/tcp
|
||||||
|
6377:6377/tcp
|
||||||
|
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(6372,6377)]) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/unstable_cluster/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:sentinel_1]
|
||||||
|
name = sentinel_1
|
||||||
|
image = redisfab/redis-py-sentinel:6.2.6-buster
|
||||||
|
links =
|
||||||
|
master:master
|
||||||
|
ports =
|
||||||
|
26379:26379/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',26379)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_1.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:sentinel_2]
|
||||||
|
name = sentinel_2
|
||||||
|
image = redisfab/redis-py-sentinel:6.2.6-buster
|
||||||
|
links =
|
||||||
|
master:master
|
||||||
|
ports =
|
||||||
|
26380:26380/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',26380)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_2.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:sentinel_3]
|
||||||
|
name = sentinel_3
|
||||||
|
image = redisfab/redis-py-sentinel:6.2.6-buster
|
||||||
|
links =
|
||||||
|
master:master
|
||||||
|
ports =
|
||||||
|
26381:26381/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',26381)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_3.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redismod]
|
||||||
|
name = redismod
|
||||||
|
image = redislabs/redismod:edge
|
||||||
|
ports =
|
||||||
|
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"
|
||||||
|
|
||||||
|
[docker:redis_cluster]
|
||||||
|
name = redis_cluster
|
||||||
|
image = redisfab/redis-py-cluster:6.2.6-buster
|
||||||
|
ports =
|
||||||
|
16379:16379/tcp
|
||||||
|
16380:16380/tcp
|
||||||
|
16381:16381/tcp
|
||||||
|
16382:16382/tcp
|
||||||
|
16383:16383/tcp
|
||||||
|
16384:16384/tcp
|
||||||
|
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(16379,16384)]) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/cluster/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:redismod_cluster]
|
||||||
|
name = redismod_cluster
|
||||||
|
image = redisfab/redis-py-modcluster:6.2.6
|
||||||
|
ports =
|
||||||
|
46379:46379/tcp
|
||||||
|
46380:46380/tcp
|
||||||
|
46381:46381/tcp
|
||||||
|
46382:46382/tcp
|
||||||
|
46383:46383/tcp
|
||||||
|
46384:46384/tcp
|
||||||
|
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(46379,46384)]) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redismod_cluster/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:stunnel]
|
||||||
|
name = stunnel
|
||||||
|
image = redisfab/stunnel:latest
|
||||||
|
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6666)) else False"
|
||||||
|
links =
|
||||||
|
master:master
|
||||||
|
ports =
|
||||||
|
6666:6666/tcp
|
||||||
|
volumes =
|
||||||
|
bind:ro:{toxinidir}/docker/stunnel/conf:/etc/stunnel/conf.d
|
||||||
|
bind:ro:{toxinidir}/docker/stunnel/keys:/etc/stunnel/keys
|
||||||
|
|
||||||
|
[docker:redis5_master]
|
||||||
|
name = redis5_master
|
||||||
|
image = redisfab/redis-py:5.0-buster
|
||||||
|
ports =
|
||||||
|
6382:6382/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',6382)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis5/master/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:redis5_replica]
|
||||||
|
name = redis5_replica
|
||||||
|
image = redisfab/redis-py:5.0-buster
|
||||||
|
links =
|
||||||
|
redis5_master:redis5_master
|
||||||
|
ports =
|
||||||
|
6383:6383/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',6383)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis5/replica/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:redis5_sentinel_1]
|
||||||
|
name = redis5_sentinel_1
|
||||||
|
image = redisfab/redis-py-sentinel:5.0-buster
|
||||||
|
links =
|
||||||
|
redis5_master:redis5_master
|
||||||
|
ports =
|
||||||
|
26382:26382/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',26382)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis5/sentinel/sentinel_1.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redis5_sentinel_2]
|
||||||
|
name = redis5_sentinel_2
|
||||||
|
image = redisfab/redis-py-sentinel:5.0-buster
|
||||||
|
links =
|
||||||
|
redis5_master:redis5_master
|
||||||
|
ports =
|
||||||
|
26383:26383/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',26383)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis5/sentinel/sentinel_2.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redis5_sentinel_3]
|
||||||
|
name = redis5_sentinel_3
|
||||||
|
image = redisfab/redis-py-sentinel:5.0-buster
|
||||||
|
links =
|
||||||
|
redis5_master:redis5_master
|
||||||
|
ports =
|
||||||
|
26384:26384/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',26384)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis5/sentinel/sentinel_3.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redis5_cluster]
|
||||||
|
name = redis5_cluster
|
||||||
|
image = redisfab/redis-py-cluster:5.0-buster
|
||||||
|
ports =
|
||||||
|
16385:16385/tcp
|
||||||
|
16386:16386/tcp
|
||||||
|
16387:16387/tcp
|
||||||
|
16388:16388/tcp
|
||||||
|
16389:16389/tcp
|
||||||
|
16390:16390/tcp
|
||||||
|
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(16385,16390)]) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/cluster/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:redis4_master]
|
||||||
|
name = redis4_master
|
||||||
|
image = redisfab/redis-py:4.0-buster
|
||||||
|
ports =
|
||||||
|
6381:6381/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',6381)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis4/master/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[docker:redis4_sentinel_1]
|
||||||
|
name = redis4_sentinel_1
|
||||||
|
image = redisfab/redis-py-sentinel:4.0-buster
|
||||||
|
links =
|
||||||
|
redis4_master:redis4_master
|
||||||
|
ports =
|
||||||
|
26385:26385/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',26385)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis4/sentinel/sentinel_1.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redis4_sentinel_2]
|
||||||
|
name = redis4_sentinel_2
|
||||||
|
image = redisfab/redis-py-sentinel:4.0-buster
|
||||||
|
links =
|
||||||
|
redis4_master:redis4_master
|
||||||
|
ports =
|
||||||
|
26386:26386/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',26386)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis4/sentinel/sentinel_2.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redis4_sentinel_3]
|
||||||
|
name = redis4_sentinel_3
|
||||||
|
image = redisfab/redis-py-sentinel:4.0-buster
|
||||||
|
links =
|
||||||
|
redis4_master:redis4_master
|
||||||
|
ports =
|
||||||
|
26387:26387/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',26387)) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/redis4/sentinel/sentinel_3.conf:/sentinel.conf
|
||||||
|
|
||||||
|
[docker:redis4_cluster]
|
||||||
|
name = redis4_cluster
|
||||||
|
image = redisfab/redis-py-cluster:4.0-buster
|
||||||
|
ports =
|
||||||
|
16391:16391/tcp
|
||||||
|
16392:16392/tcp
|
||||||
|
16393:16393/tcp
|
||||||
|
16394:16394/tcp
|
||||||
|
16395:16395/tcp
|
||||||
|
16396:16396/tcp
|
||||||
|
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(16391,16396)]) else False"
|
||||||
|
volumes =
|
||||||
|
bind:rw:{toxinidir}/docker/cluster/redis.conf:/redis.conf
|
||||||
|
|
||||||
|
[isort]
|
||||||
|
profile = black
|
||||||
|
multi_line_output = 3
|
||||||
|
|
||||||
|
[testenv]
|
||||||
|
deps =
|
||||||
|
-r {toxinidir}/requirements.txt
|
||||||
|
-r {toxinidir}/dev_requirements.txt
|
||||||
|
docker =
|
||||||
|
unstable
|
||||||
|
unstable_cluster
|
||||||
|
master
|
||||||
|
replica
|
||||||
|
sentinel_1
|
||||||
|
sentinel_2
|
||||||
|
sentinel_3
|
||||||
|
redis_cluster
|
||||||
|
redismod
|
||||||
|
redismod_cluster
|
||||||
|
stunnel
|
||||||
|
extras =
|
||||||
|
hiredis: hiredis
|
||||||
|
ocsp: cryptography, pyopenssl, requests
|
||||||
|
setenv =
|
||||||
|
CLUSTER_URL = "redis://localhost:16379/0"
|
||||||
|
UNSTABLE_CLUSTER_URL = "redis://localhost:6372/0"
|
||||||
|
commands =
|
||||||
|
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' {posargs}
|
||||||
|
standalone-uvloop: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' --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-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}
|
||||||
|
|
||||||
|
[testenv:redis5]
|
||||||
|
deps =
|
||||||
|
-r {toxinidir}/requirements.txt
|
||||||
|
-r {toxinidir}/dev_requirements.txt
|
||||||
|
docker =
|
||||||
|
redis5_master
|
||||||
|
redis5_replica
|
||||||
|
redis5_sentinel_1
|
||||||
|
redis5_sentinel_2
|
||||||
|
redis5_sentinel_3
|
||||||
|
redis5_cluster
|
||||||
|
extras =
|
||||||
|
hiredis: hiredis
|
||||||
|
cryptography: cryptography, requests
|
||||||
|
setenv =
|
||||||
|
CLUSTER_URL = "redis://localhost:16385/0"
|
||||||
|
commands =
|
||||||
|
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster and not redismod' {posargs}
|
||||||
|
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} {posargs}
|
||||||
|
|
||||||
|
[testenv:redis4]
|
||||||
|
deps =
|
||||||
|
-r {toxinidir}/requirements.txt
|
||||||
|
-r {toxinidir}/dev_requirements.txt
|
||||||
|
docker =
|
||||||
|
redis4_master
|
||||||
|
redis4_sentinel_1
|
||||||
|
redis4_sentinel_2
|
||||||
|
redis4_sentinel_3
|
||||||
|
redis4_cluster
|
||||||
|
extras =
|
||||||
|
hiredis: hiredis
|
||||||
|
cryptography: cryptography, requests
|
||||||
|
setenv =
|
||||||
|
CLUSTER_URL = "redis://localhost:16391/0"
|
||||||
|
commands =
|
||||||
|
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster and not redismod' {posargs}
|
||||||
|
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} {posargs}
|
||||||
|
|
||||||
|
[testenv:devenv]
|
||||||
|
skipsdist = true
|
||||||
|
skip_install = true
|
||||||
|
deps = -r {toxinidir}/dev_requirements.txt
|
||||||
|
docker = {[testenv]docker}
|
||||||
|
|
||||||
|
[testenv:linters]
|
||||||
|
deps_files = dev_requirements.txt
|
||||||
|
docker =
|
||||||
|
commands =
|
||||||
|
flake8
|
||||||
|
black --target-version py36 --check --diff .
|
||||||
|
isort --check-only --diff .
|
||||||
|
vulture redis whitelist.py --min-confidence 80
|
||||||
|
flynt --fail-on-change --dry-run .
|
||||||
|
skipsdist = true
|
||||||
|
skip_install = true
|
||||||
|
|
||||||
|
[testenv:docs]
|
||||||
|
deps = -r docs/requirements.txt
|
||||||
|
docker =
|
||||||
|
changedir = {toxinidir}/docs
|
||||||
|
allowlist_externals = make
|
||||||
|
commands = make html
|
||||||
|
|
||||||
|
[flake8]
|
||||||
|
max-line-length = 88
|
||||||
|
exclude =
|
||||||
|
*.egg-info,
|
||||||
|
*.pyc,
|
||||||
|
.git,
|
||||||
|
.tox,
|
||||||
|
.venv*,
|
||||||
|
build,
|
||||||
|
docs/*,
|
||||||
|
dist,
|
||||||
|
docker,
|
||||||
|
venv*,
|
||||||
|
.venv*,
|
||||||
|
whitelist.py
|
||||||
|
ignore =
|
||||||
|
F405
|
||||||
|
W503
|
||||||
|
E203
|
||||||
|
E126
|
Loading…
x
Reference in New Issue
Block a user