Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-redis for openSUSE:Factory checked in at 2022-06-17 21:20:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-redis (Old) and /work/SRC/openSUSE:Factory/.python-redis.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-redis" Fri Jun 17 21:20:26 2022 rev:31 rq:982470 version:4.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-redis/python-redis.changes 2021-07-18 23:44:52.599079525 +0200 +++ /work/SRC/openSUSE:Factory/.python-redis.new.1548/python-redis.changes 2022-06-17 21:22:52.878785359 +0200 @@ -1,0 +2,354 @@ +Mon Jun 13 10:18:12 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Delete unused redismod.conf, remove duplicate Source entry for + tox.ini + +------------------------------------------------------------------- +Mon Jun 13 07:24:11 UTC 2022 - Matej Cepl <mc...@suse.com> + +- Add redismod.conf and tox.ini as Sources to SPEC file. + +------------------------------------------------------------------- +Sat Jun 11 11:03:12 UTC 2022 - Ben Greiner <c...@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 <c...@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 ++++ 157 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/python-redis/python-redis.changes ++++ and /work/SRC/openSUSE:Factory/.python-redis.new.1548/python-redis.changes Old: ---- account-defaults-redis.patch redis-3.5.3.tar.gz New: ---- redis-4.3.3.tar.gz tox.ini ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-redis.spec ++++++ --- /var/tmp/diff_new_pack.FnlGPW/_old 2022-06-17 21:22:53.414785650 +0200 +++ /var/tmp/diff_new_pack.FnlGPW/_new 2022-06-17 21:22:53.418785651 +0200 @@ -1,7 +1,7 @@ # # 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 # 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 -Version: 3.5.3 +Version: 4.3.3 Release: 0 Summary: Python client for Redis key-value store License: MIT Group: Development/Languages/Python -URL: https://github.com/andymccurdy/redis-py -Source: https://files.pythonhosted.org/packages/source/r/redis/redis-%{version}.tar.gz -# PATCH-FIX-UPSTREAM account-defaults-redis.patch gh#andymccurdy/redis-py#1499 mc...@suse.com -# changing unit tests to account for defaults in redis -Patch0: account-defaults-redis.patch -BuildRequires: %{python_module mock} -BuildRequires: %{python_module pytest >= 2.7.0} +URL: https://github.com/redis/redis-py +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 +BuildRequires: %{python_module Deprecated >= 1.2.3} +BuildRequires: %{python_module async-timeout >= 4.0.2} +BuildRequires: %{python_module base >= 3.6} +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 typing-extensions if %python-base < 3.8} BuildRequires: fdupes BuildRequires: psmisc BuildRequires: python-rpm-macros BuildRequires: redis +Requires: python-Deprecated >= 1.2.3 +Requires: python-async-timeout >= 4.0.2 +Requires: python-packaging >= 20.4 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 %python_subpackages @@ -45,6 +60,8 @@ %prep %autosetup -p1 -n redis-%{version} +# tox.ini for pytest markers +cp %{SOURCE1} . %build %python_build @@ -54,15 +71,34 @@ %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -%{_sbindir}/redis-server --port 6379 & -%pytest - -killall redis-server +# upstream's tox testsuite starts several servers in docker containers listening on different ports. +# We just start two of them locally +# master +# 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} %license LICENSE -%doc CHANGES README.rst +%doc README.md %{python_sitelib}/redis/ -%{python_sitelib}/redis-%{version}-py*.egg-info +%{python_sitelib}/redis-%{version}*-info %changelog ++++++ redis-3.5.3.tar.gz -> redis-4.3.3.tar.gz ++++++ ++++ 79636 lines of diff (skipped) ++++++ tox.ini ++++++ [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