Mock Version: 4.1 Mock Version: 4.1 Mock Version: 4.1 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'], chrootPath='/var/lib/mock/dist-ocs23-base-build-296388-28785/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=86400uid=982gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch Wrote: /builddir/build/SRPMS/python-redis-5.1.1-1.ocs23.src.rpm Child return code was: 0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'], chrootPath='/var/lib/mock/dist-ocs23-base-build-296388-28785/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=86400uid=982gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueraiseExc=FalseprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.VzGr36 + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf redis-py-5.1.1 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/redis-py-5.1.1.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd redis-py-5.1.1 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + rm tests/test_commands.py + rm tests/test_asyncio/test_commands.py + rm tests/test_asyncio/test_connect.py + rm tests/test_asyncio/test_cwe_404.py + rm tests/test_bloom.py + rm tests/test_graph.py + rm tests/test_json.py + rm tests/test_timeseries.py + rm tests/test_asyncio/test_bloom.py + rm tests/test_asyncio/test_graph.py + rm tests/test_asyncio/test_json.py + rm tests/test_asyncio/test_timeseries.py + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.fAfCuq + umask 022 + cd /builddir/build/BUILD + cd redis-py-5.1.1 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + echo 'python3dist(wheel)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -s /usr/lib/rpm/OpenCloudOS/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 68.0.0) Handling wheel from default build backend Requirement not satisfied: wheel Exiting dependency generation pass: build backend + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-redis-5.1.1-1.ocs23.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'], chrootPath='/var/lib/mock/dist-ocs23-base-build-296388-28785/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=86400uid=982gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueraiseExc=FalseprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.o7E6tp + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf redis-py-5.1.1 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/redis-py-5.1.1.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd redis-py-5.1.1 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + rm tests/test_commands.py + rm tests/test_asyncio/test_commands.py + rm tests/test_asyncio/test_connect.py + rm tests/test_asyncio/test_cwe_404.py + rm tests/test_bloom.py + rm tests/test_graph.py + rm tests/test_json.py + rm tests/test_timeseries.py + rm tests/test_asyncio/test_bloom.py + rm tests/test_asyncio/test_graph.py + rm tests/test_asyncio/test_json.py + rm tests/test_asyncio/test_timeseries.py + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.s3Xc1V + umask 022 + cd /builddir/build/BUILD + cd redis-py-5.1.1 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + echo 'python3dist(wheel)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -s /usr/lib/rpm/OpenCloudOS/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 68.0.0) Handling wheel from default build backend Requirement satisfied: wheel (installed: wheel 0.41.2) warning: no previously-included files found matching '__pycache__' warning: no previously-included files matching '*.pyc' found under directory 'tests' HOOK STDOUT: running egg_info HOOK STDOUT: creating redis.egg-info HOOK STDOUT: writing redis.egg-info/PKG-INFO HOOK STDOUT: writing dependency_links to redis.egg-info/dependency_links.txt HOOK STDOUT: writing requirements to redis.egg-info/requires.txt HOOK STDOUT: writing top-level names to redis.egg-info/top_level.txt HOOK STDOUT: writing manifest file 'redis.egg-info/SOURCES.txt' HOOK STDOUT: reading manifest file 'redis.egg-info/SOURCES.txt' HOOK STDOUT: reading manifest template 'MANIFEST.in' HOOK STDOUT: adding license file 'LICENSE' HOOK STDOUT: writing manifest file 'redis.egg-info/SOURCES.txt' Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.41.2) warning: no previously-included files found matching '__pycache__' warning: no previously-included files matching '*.pyc' found under directory 'tests' Handling async-timeout >=4.0.3 ; python_full_version < "3.11.3" from wheel metadata: Requires-Dist Ignoring alien requirement: async-timeout >=4.0.3 ; python_full_version < "3.11.3" Handling hiredis >=3.0.0 ; extra == 'hiredis' from wheel metadata: Requires-Dist Ignoring alien requirement: hiredis >=3.0.0 ; extra == 'hiredis' Handling cryptography >=36.0.1 ; extra == 'ocsp' from wheel metadata: Requires-Dist Ignoring alien requirement: cryptography >=36.0.1 ; extra == 'ocsp' Handling pyopenssl ==23.2.1 ; extra == 'ocsp' from wheel metadata: Requires-Dist Ignoring alien requirement: pyopenssl ==23.2.1 ; extra == 'ocsp' Handling requests >=2.31.0 ; extra == 'ocsp' from wheel metadata: Requires-Dist Ignoring alien requirement: requests >=2.31.0 ; extra == 'ocsp' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-redis-5.1.1-1.ocs23.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'], chrootPath='/var/lib/mock/dist-ocs23-base-build-296388-28785/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=86400uid=982gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.xBcCSt + umask 022 + cd /builddir/build/BUILD + cd redis-py-5.1.1 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + echo 'python3dist(wheel)' + rm -rfv redis-5.1.1.dist-info/ removed 'redis-5.1.1.dist-info/METADATA' removed 'redis-5.1.1.dist-info/top_level.txt' removed 'redis-5.1.1.dist-info/LICENSE' removed directory 'redis-5.1.1.dist-info/' + '[' -f /usr/bin/python3 ']' + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -s /usr/lib/rpm/OpenCloudOS/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 68.0.0) Handling wheel from default build backend Requirement satisfied: wheel (installed: wheel 0.41.2) warning: no previously-included files found matching '__pycache__' warning: no previously-included files matching '*.pyc' found under directory 'tests' HOOK STDOUT: running egg_info HOOK STDOUT: writing redis.egg-info/PKG-INFO HOOK STDOUT: writing dependency_links to redis.egg-info/dependency_links.txt HOOK STDOUT: writing requirements to redis.egg-info/requires.txt HOOK STDOUT: writing top-level names to redis.egg-info/top_level.txt HOOK STDOUT: reading manifest file 'redis.egg-info/SOURCES.txt' HOOK STDOUT: reading manifest template 'MANIFEST.in' HOOK STDOUT: adding license file 'LICENSE' HOOK STDOUT: writing manifest file 'redis.egg-info/SOURCES.txt' Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.41.2) warning: no previously-included files found matching '__pycache__' warning: no previously-included files matching '*.pyc' found under directory 'tests' Handling async-timeout >=4.0.3 ; python_full_version < "3.11.3" from wheel metadata: Requires-Dist Ignoring alien requirement: async-timeout >=4.0.3 ; python_full_version < "3.11.3" Handling hiredis >=3.0.0 ; extra == 'hiredis' from wheel metadata: Requires-Dist Ignoring alien requirement: hiredis >=3.0.0 ; extra == 'hiredis' Handling cryptography >=36.0.1 ; extra == 'ocsp' from wheel metadata: Requires-Dist Ignoring alien requirement: cryptography >=36.0.1 ; extra == 'ocsp' Handling pyopenssl ==23.2.1 ; extra == 'ocsp' from wheel metadata: Requires-Dist Ignoring alien requirement: pyopenssl ==23.2.1 ; extra == 'ocsp' Handling requests >=2.31.0 ; extra == 'ocsp' from wheel metadata: Requires-Dist Ignoring alien requirement: requests >=2.31.0 ; extra == 'ocsp' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.7w8Ekw + umask 022 + cd /builddir/build/BUILD + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib/gfortran/modules' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib/gfortran/modules' + export FCFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-ld -Wl,--build-id=sha1' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd redis-py-5.1.1 + mkdir -p /builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-ld -Wl,--build-id=sha1' + TMPDIR=/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir + /usr/bin/python3 -m pip wheel --wheel-dir /builddir/build/BUILD/redis-py-5.1.1/pyproject-wheeldir --no-deps --use-pep517 --no-build-isolation --disable-pip-version-check --no-clean --progress-bar off --verbose . Processing /builddir/build/BUILD/redis-py-5.1.1 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) running dist_info creating /builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info writing /builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/dependency_links.txt writing requirements to /builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/top_level.txt writing manifest file '/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/SOURCES.txt' reading manifest file '/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files found matching '__pycache__' warning: no previously-included files matching '*.pyc' found under directory 'tests' adding license file 'LICENSE' writing manifest file '/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-modern-metadata-ipt_1n04/redis-5.1.1.dist-info' Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: redis Building wheel for redis (pyproject.toml): started Running command Building wheel for redis (pyproject.toml) running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/redis copying redis/credentials.py -> build/lib/redis copying redis/lock.py -> build/lib/redis copying redis/crc.py -> build/lib/redis copying redis/connection.py -> build/lib/redis copying redis/utils.py -> build/lib/redis copying redis/typing.py -> build/lib/redis copying redis/client.py -> build/lib/redis copying redis/__init__.py -> build/lib/redis copying redis/exceptions.py -> build/lib/redis copying redis/ocsp.py -> build/lib/redis copying redis/cluster.py -> build/lib/redis copying redis/backoff.py -> build/lib/redis copying redis/sentinel.py -> build/lib/redis copying redis/retry.py -> build/lib/redis copying redis/cache.py -> build/lib/redis creating build/lib/redis/commands copying redis/commands/core.py -> build/lib/redis/commands copying redis/commands/__init__.py -> build/lib/redis/commands copying redis/commands/redismodules.py -> build/lib/redis/commands copying redis/commands/cluster.py -> build/lib/redis/commands copying redis/commands/sentinel.py -> build/lib/redis/commands copying redis/commands/helpers.py -> build/lib/redis/commands creating build/lib/redis/_parsers copying redis/_parsers/base.py -> build/lib/redis/_parsers copying redis/_parsers/socket.py -> build/lib/redis/_parsers copying redis/_parsers/encoders.py -> build/lib/redis/_parsers copying redis/_parsers/__init__.py -> build/lib/redis/_parsers copying redis/_parsers/resp3.py -> build/lib/redis/_parsers copying redis/_parsers/commands.py -> build/lib/redis/_parsers copying redis/_parsers/hiredis.py -> build/lib/redis/_parsers copying redis/_parsers/resp2.py -> build/lib/redis/_parsers copying redis/_parsers/helpers.py -> build/lib/redis/_parsers creating build/lib/redis/asyncio copying redis/asyncio/lock.py -> build/lib/redis/asyncio copying redis/asyncio/connection.py -> build/lib/redis/asyncio copying redis/asyncio/utils.py -> build/lib/redis/asyncio copying redis/asyncio/client.py -> build/lib/redis/asyncio copying redis/asyncio/__init__.py -> build/lib/redis/asyncio copying redis/asyncio/cluster.py -> build/lib/redis/asyncio copying redis/asyncio/sentinel.py -> build/lib/redis/asyncio copying redis/asyncio/retry.py -> build/lib/redis/asyncio creating build/lib/redis/commands/bf copying redis/commands/bf/__init__.py -> build/lib/redis/commands/bf copying redis/commands/bf/commands.py -> build/lib/redis/commands/bf copying redis/commands/bf/info.py -> build/lib/redis/commands/bf creating build/lib/redis/commands/timeseries copying redis/commands/timeseries/utils.py -> build/lib/redis/commands/timeseries copying redis/commands/timeseries/__init__.py -> build/lib/redis/commands/timeseries copying redis/commands/timeseries/commands.py -> build/lib/redis/commands/timeseries copying redis/commands/timeseries/info.py -> build/lib/redis/commands/timeseries creating build/lib/redis/commands/graph copying redis/commands/graph/path.py -> build/lib/redis/commands/graph copying redis/commands/graph/edge.py -> build/lib/redis/commands/graph copying redis/commands/graph/__init__.py -> build/lib/redis/commands/graph copying redis/commands/graph/node.py -> build/lib/redis/commands/graph copying redis/commands/graph/query_result.py -> build/lib/redis/commands/graph copying redis/commands/graph/commands.py -> build/lib/redis/commands/graph copying redis/commands/graph/exceptions.py -> build/lib/redis/commands/graph copying redis/commands/graph/execution_plan.py -> build/lib/redis/commands/graph creating build/lib/redis/commands/search copying redis/commands/search/suggestion.py -> build/lib/redis/commands/search copying redis/commands/search/result.py -> build/lib/redis/commands/search copying redis/commands/search/reducers.py -> build/lib/redis/commands/search copying redis/commands/search/__init__.py -> build/lib/redis/commands/search copying redis/commands/search/commands.py -> build/lib/redis/commands/search copying redis/commands/search/querystring.py -> build/lib/redis/commands/search copying redis/commands/search/document.py -> build/lib/redis/commands/search copying redis/commands/search/field.py -> build/lib/redis/commands/search copying redis/commands/search/_util.py -> build/lib/redis/commands/search copying redis/commands/search/aggregation.py -> build/lib/redis/commands/search copying redis/commands/search/indexDefinition.py -> build/lib/redis/commands/search copying redis/commands/search/query.py -> build/lib/redis/commands/search creating build/lib/redis/commands/json copying redis/commands/json/path.py -> build/lib/redis/commands/json copying redis/commands/json/__init__.py -> build/lib/redis/commands/json copying redis/commands/json/commands.py -> build/lib/redis/commands/json copying redis/commands/json/_util.py -> build/lib/redis/commands/json copying redis/commands/json/decoders.py -> build/lib/redis/commands/json running egg_info writing redis.egg-info/PKG-INFO writing dependency_links to redis.egg-info/dependency_links.txt writing requirements to redis.egg-info/requires.txt writing top-level names to redis.egg-info/top_level.txt reading manifest file 'redis.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files found matching '__pycache__' warning: no previously-included files matching '*.pyc' found under directory 'tests' adding license file 'LICENSE' writing manifest file 'redis.egg-info/SOURCES.txt' copying redis/py.typed -> build/lib/redis installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/credentials.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/lock.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/crc.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/connection.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/utils.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/typing.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/client.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/__init__.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/py.typed -> build/bdist.linux-x86_64/wheel/redis creating build/bdist.linux-x86_64/wheel/redis/commands creating build/bdist.linux-x86_64/wheel/redis/commands/bf copying build/lib/redis/commands/bf/__init__.py -> build/bdist.linux-x86_64/wheel/redis/commands/bf copying build/lib/redis/commands/bf/commands.py -> build/bdist.linux-x86_64/wheel/redis/commands/bf copying build/lib/redis/commands/bf/info.py -> build/bdist.linux-x86_64/wheel/redis/commands/bf creating build/bdist.linux-x86_64/wheel/redis/commands/timeseries copying build/lib/redis/commands/timeseries/utils.py -> build/bdist.linux-x86_64/wheel/redis/commands/timeseries copying build/lib/redis/commands/timeseries/__init__.py -> build/bdist.linux-x86_64/wheel/redis/commands/timeseries copying build/lib/redis/commands/timeseries/commands.py -> build/bdist.linux-x86_64/wheel/redis/commands/timeseries copying build/lib/redis/commands/timeseries/info.py -> build/bdist.linux-x86_64/wheel/redis/commands/timeseries copying build/lib/redis/commands/core.py -> build/bdist.linux-x86_64/wheel/redis/commands copying build/lib/redis/commands/__init__.py -> build/bdist.linux-x86_64/wheel/redis/commands copying build/lib/redis/commands/redismodules.py -> build/bdist.linux-x86_64/wheel/redis/commands copying build/lib/redis/commands/cluster.py -> build/bdist.linux-x86_64/wheel/redis/commands creating build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/path.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/edge.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/__init__.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/node.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/query_result.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/commands.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/exceptions.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph copying build/lib/redis/commands/graph/execution_plan.py -> build/bdist.linux-x86_64/wheel/redis/commands/graph creating build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/suggestion.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/result.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/reducers.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/__init__.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/commands.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/querystring.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/document.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/field.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/_util.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/aggregation.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/indexDefinition.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/search/query.py -> build/bdist.linux-x86_64/wheel/redis/commands/search copying build/lib/redis/commands/sentinel.py -> build/bdist.linux-x86_64/wheel/redis/commands creating build/bdist.linux-x86_64/wheel/redis/commands/json copying build/lib/redis/commands/json/path.py -> build/bdist.linux-x86_64/wheel/redis/commands/json copying build/lib/redis/commands/json/__init__.py -> build/bdist.linux-x86_64/wheel/redis/commands/json copying build/lib/redis/commands/json/commands.py -> build/bdist.linux-x86_64/wheel/redis/commands/json copying build/lib/redis/commands/json/_util.py -> build/bdist.linux-x86_64/wheel/redis/commands/json copying build/lib/redis/commands/json/decoders.py -> build/bdist.linux-x86_64/wheel/redis/commands/json copying build/lib/redis/commands/helpers.py -> build/bdist.linux-x86_64/wheel/redis/commands copying build/lib/redis/exceptions.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/ocsp.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/cluster.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/backoff.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/sentinel.py -> build/bdist.linux-x86_64/wheel/redis copying build/lib/redis/retry.py -> build/bdist.linux-x86_64/wheel/redis creating build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/base.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/socket.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/encoders.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/__init__.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/resp3.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/commands.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/hiredis.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/resp2.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/_parsers/helpers.py -> build/bdist.linux-x86_64/wheel/redis/_parsers copying build/lib/redis/cache.py -> build/bdist.linux-x86_64/wheel/redis creating build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/lock.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/connection.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/utils.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/client.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/__init__.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/cluster.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/sentinel.py -> build/bdist.linux-x86_64/wheel/redis/asyncio copying build/lib/redis/asyncio/retry.py -> build/bdist.linux-x86_64/wheel/redis/asyncio running install_egg_info Copying redis.egg-info to build/bdist.linux-x86_64/wheel/redis-5.1.1-py3.11.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/redis-5.1.1.dist-info/WHEEL creating '/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir/pip-wheel-y60dzf7y/.tmp-5cp00c0n/redis-5.1.1-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'redis/__init__.py' adding 'redis/backoff.py' adding 'redis/cache.py' adding 'redis/client.py' adding 'redis/cluster.py' adding 'redis/connection.py' adding 'redis/crc.py' adding 'redis/credentials.py' adding 'redis/exceptions.py' adding 'redis/lock.py' adding 'redis/ocsp.py' adding 'redis/py.typed' adding 'redis/retry.py' adding 'redis/sentinel.py' adding 'redis/typing.py' adding 'redis/utils.py' adding 'redis/_parsers/__init__.py' adding 'redis/_parsers/base.py' adding 'redis/_parsers/commands.py' adding 'redis/_parsers/encoders.py' adding 'redis/_parsers/helpers.py' adding 'redis/_parsers/hiredis.py' adding 'redis/_parsers/resp2.py' adding 'redis/_parsers/resp3.py' adding 'redis/_parsers/socket.py' adding 'redis/asyncio/__init__.py' adding 'redis/asyncio/client.py' adding 'redis/asyncio/cluster.py' adding 'redis/asyncio/connection.py' adding 'redis/asyncio/lock.py' adding 'redis/asyncio/retry.py' adding 'redis/asyncio/sentinel.py' adding 'redis/asyncio/utils.py' adding 'redis/commands/__init__.py' adding 'redis/commands/cluster.py' adding 'redis/commands/core.py' adding 'redis/commands/helpers.py' adding 'redis/commands/redismodules.py' adding 'redis/commands/sentinel.py' adding 'redis/commands/bf/__init__.py' adding 'redis/commands/bf/commands.py' adding 'redis/commands/bf/info.py' adding 'redis/commands/graph/__init__.py' adding 'redis/commands/graph/commands.py' adding 'redis/commands/graph/edge.py' adding 'redis/commands/graph/exceptions.py' adding 'redis/commands/graph/execution_plan.py' adding 'redis/commands/graph/node.py' adding 'redis/commands/graph/path.py' adding 'redis/commands/graph/query_result.py' adding 'redis/commands/json/__init__.py' adding 'redis/commands/json/_util.py' adding 'redis/commands/json/commands.py' adding 'redis/commands/json/decoders.py' adding 'redis/commands/json/path.py' adding 'redis/commands/search/__init__.py' adding 'redis/commands/search/_util.py' adding 'redis/commands/search/aggregation.py' adding 'redis/commands/search/commands.py' adding 'redis/commands/search/document.py' adding 'redis/commands/search/field.py' adding 'redis/commands/search/indexDefinition.py' adding 'redis/commands/search/query.py' adding 'redis/commands/search/querystring.py' adding 'redis/commands/search/reducers.py' adding 'redis/commands/search/result.py' adding 'redis/commands/search/suggestion.py' adding 'redis/commands/timeseries/__init__.py' adding 'redis/commands/timeseries/commands.py' adding 'redis/commands/timeseries/info.py' adding 'redis/commands/timeseries/utils.py' adding 'redis-5.1.1.dist-info/LICENSE' adding 'redis-5.1.1.dist-info/METADATA' adding 'redis-5.1.1.dist-info/WHEEL' adding 'redis-5.1.1.dist-info/top_level.txt' adding 'redis-5.1.1.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Building wheel for redis (pyproject.toml): finished with status 'done' Created wheel for redis: filename=redis-5.1.1-py3-none-any.whl size=261266 sha256=4564a3e5fdb3ab9642e0d05cf216cead5aa8cfc8956e09fb1dc11b03fa3b057d Stored in directory: /builddir/.cache/pip/wheels/46/af/0a/296d6de29cefbc8eab86072b60e761e34654bd47f6dc0570a1 Successfully built redis + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.hWBWdw + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch '!=' / ']' + rm -rf /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch ++ dirname /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch + cd redis-py-5.1.1 ++ ls /builddir/build/BUILD/redis-py-5.1.1/pyproject-wheeldir/redis-5.1.1-py3-none-any.whl ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' + specifier=redis==5.1.1 + TMPDIR=/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/redis-py-5.1.1/pyproject-wheeldir redis==5.1.1 Using pip 23.3.1 from /usr/lib/python3.11/site-packages/pip (python 3.11) Looking in links: /builddir/build/BUILD/redis-py-5.1.1/pyproject-wheeldir Processing ./pyproject-wheeldir/redis-5.1.1-py3-none-any.whl Installing collected packages: redis Successfully installed redis-5.1.1 + '[' -d /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/bin ']' + rm -f /builddir/build/BUILD/pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages ']' + site_dirs+=("/usr/lib/python3.11/site-packages") + '[' /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib64/python3.11/site-packages '!=' /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages ']' + '[' -d /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib64/python3.11/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.11/site-packages/redis-5.1.1.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages/redis-5.1.1.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/OpenCloudOS + /usr/bin/python3 -B /usr/lib/rpm/OpenCloudOS/pyproject_preprocess_record.py --buildroot /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch --record /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages/redis-5.1.1.dist-info/RECORD --output /builddir/build/BUILD/pyproject-record + rm -fv /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages/redis-5.1.1.dist-info/RECORD removed '/builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages/redis-5.1.1.dist-info/RECORD' + rm -fv /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages/redis-5.1.1.dist-info/REQUESTED removed '/builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages/redis-5.1.1.dist-info/REQUESTED' + /usr/bin/python3 /usr/lib/rpm/OpenCloudOS/pyproject_save_files.py --output-files /builddir/build/BUILD/pyproject-files --output-modules /builddir/build/BUILD/pyproject-modules --buildroot /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch --sitelib /usr/lib/python3.11/site-packages --sitearch /usr/lib64/python3.11/site-packages --python-version 3.11 --pyproject-record /builddir/build/BUILD/pyproject-record --prefix /usr redis + /usr/bin/find-debuginfo -j32 --strict-build-id -m -i --build-id-seed 5.1.1-1.ocs23 --unique-debug-suffix -5.1.1-1.ocs23.noarch --unique-debug-src-base python-redis-5.1.1-1.ocs23.noarch -S debugsourcefiles.list /builddir/build/BUILD/redis-py-5.1.1 find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/OpenCloudOS/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/OpenCloudOS/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/check-rpaths + /usr/lib/rpm/OpenCloudOS/brp-mangle-shebangs + /usr/lib/rpm/OpenCloudOS/brp-python-bytecompile '' 1 0 Bytecompiling .py files below /builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11 using python3.11 + /usr/lib/rpm/OpenCloudOS/brp-python-hardlink Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.O5VSN4 + umask 022 + cd /builddir/build/BUILD + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib/gfortran/modules' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib/gfortran/modules' + export FCFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-ld -Wl,--build-id=sha1' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd redis-py-5.1.1 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-ld -Wl,--build-id=sha1' + PATH=/builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib64/python3.11/site-packages:/builddir/build/BUILDROOT/python-redis-5.1.1-1.ocs23.noarch/usr/lib/python3.11/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/redis-py-5.1.1/.pyproject-builddir' + /usr/bin/pytest -m 'not onlycluster and not redismod and not ssl' -k 'not xinfo_consumers' + redis-server --enable-debug-command yes 1981835:C 11 Oct 2024 11:55:14.400 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 1981835:C 11 Oct 2024 11:55:14.401 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 1981835:C 11 Oct 2024 11:55:14.401 * Redis version=7.2.6, bits=64, commit=00000000, modified=0, pid=1981835, just started 1981835:C 11 Oct 2024 11:55:14.401 * Configuration loaded 1981835:M 11 Oct 2024 11:55:14.401 * Increased maximum number of open files to 10032 (it was originally set to 1024). 1981835:M 11 Oct 2024 11:55:14.401 * monotonic clock: POSIX clock_gettime 1981835:M 11 Oct 2024 11:55:14.401 * Running mode=standalone, port=6379. 1981835:M 11 Oct 2024 11:55:14.401 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use 1981835:M 11 Oct 2024 11:55:14.401 # Failed listening on port 6379 (tcp), aborting. ============================= test session starts ============================== platform linux -- Python 3.11.6, pytest-7.4.0, pluggy-1.3.0 rootdir: /builddir/build/BUILD/redis-py-5.1.1 configfile: pytest.ini plugins: timeout-2.1.0, asyncio-0.21.0 timeout: 30.0s timeout method: signal timeout func_only: False asyncio: mode=Mode.AUTO collected 1760 items / 731 deselected / 1029 selected tests/test_cache.py ssssssssssssssssssssssssss.................... tests/test_command_parser.py ..... tests/test_connect.py ... tests/test_connection.py .........s............................. tests/test_connection_pool.py ...................................................FFFFF..FF........... tests/test_credentials.py .......... tests/test_encoding.py ........... tests/test_function.py ....... tests/test_hash.py ssssssssssssssssssssssssssssssssss tests/test_helpers.py ....... tests/test_lock.py .............................. tests/test_monitor.py ......s tests/test_multiprocessing.py ......... tests/test_pipeline.py ............................ tests/test_pubsub.py ......................................................... tests/test_retry.py ................................................................... tests/test_scripting.py .................. tests/test_sentinel.py .................. tests/test_utils.py ....... tests/test_asyncio/test_connection.py .....s........s...................... tests/test_asyncio/test_connection_pool.py ...............................................................FFFFFFFFFF..FFFFXXXXXXXXXXXXXXXXXXXX tests/test_asyncio/test_credentials.py .................... tests/test_asyncio/test_encoding.py ................XX...... tests/test_asyncio/test_hash.py ssssssssssssssssssssssssssssssssssssssssssssssssss tests/test_asyncio/test_lock.py ...................................................... tests/test_asyncio/test_monitor.py ............ss tests/test_asyncio/test_pipeline.py .......................................................... tests/test_asyncio/test_pubsub.py ...................................................................................................... tests/test_asyncio/test_retry.py ............................................................ tests/test_asyncio/test_scripting.py ................ tests/test_asyncio/test_sentinel.py ................. tests/test_asyncio/test_sentinel_managed_connection.py . tests/test_parsers/test_helpers.py ... =================================== FAILURES =================================== _____________ TestConnection.test_busy_loading_disconnects_socket ______________ self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() def test_busy_loading_disconnects_socket(self, r): """ If Redis raises a LOADING error, the connection should be disconnected and a BusyLoadingError raised """ with pytest.raises(redis.BusyLoadingError): > r.execute_command("DEBUG", "ERROR", "LOADING fake message") tests/test_connection_pool.py:516: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:559: in execute_command return self._execute_command(*args, **options) redis/client.py:567: in _execute_command return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:568: in lambda: self._send_command_parse_response( redis/client.py:542: in _send_command_parse_response return self.parse_response(conn, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError _______ TestConnection.test_busy_loading_from_pipeline_immediate_command _______ self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() def test_busy_loading_from_pipeline_immediate_command(self, r): """ BusyLoadingErrors should raise from Pipelines that execute a command immediately, like WATCH does. """ pipe = r.pipeline() with pytest.raises(redis.BusyLoadingError): > pipe.immediate_execute_command("DEBUG", "ERROR", "LOADING fake message") tests/test_connection_pool.py:529: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:1340: in immediate_execute_command return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:1341: in lambda: self._send_command_parse_response( redis/client.py:542: in _send_command_parse_response return self.parse_response(conn, command_name, **options) redis/client.py:1462: in parse_response result = Redis.parse_response(self, connection, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError ________________ TestConnection.test_busy_loading_from_pipeline ________________ self = )>)> connection = commands = [(('DEBUG', 'ERROR', 'LOADING fake message'), {})] raise_on_error = True def _execute_transaction(self, connection, commands, raise_on_error) -> List: cmds = chain([(("MULTI",), {})], commands, [(("EXEC",), {})]) all_cmds = connection.pack_commands( [args for args, options in cmds if EMPTY_RESPONSE not in options] ) connection.send_packed_command(all_cmds) errors = [] # parse off the response for MULTI # NOTE: we need to handle ResponseErrors here and continue # so that we read all the additional command messages from # the socket try: self.parse_response(connection, "_") except ResponseError as e: errors.append((0, e)) # and all the other commands for i, command in enumerate(commands): if EMPTY_RESPONSE in command[1]: errors.append((i, command[1][EMPTY_RESPONSE])) else: try: self.parse_response(connection, "_") except ResponseError as e: self.annotate_exception(e, i + 1, command[0]) errors.append((i, e)) # parse the EXEC. try: > response = self.parse_response(connection, "_") redis/client.py:1392: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:1462: in parse_response result = Redis.parse_response(self, connection, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ExecAbortError: Transaction discarded because of previous errors. redis/connection.py:616: ExecAbortError During handling of the above exception, another exception occurred: self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() def test_busy_loading_from_pipeline(self, r): """ BusyLoadingErrors should be raised from a pipeline execution regardless of the raise_on_error flag. """ pipe = r.pipeline() pipe.execute_command("DEBUG", "ERROR", "LOADING fake message") with pytest.raises(redis.BusyLoadingError): > pipe.execute() tests/test_connection_pool.py:546: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:1530: in execute return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:1531: in lambda: execute(conn, stack, raise_on_error), redis/client.py:1395: in _execute_transaction raise errors[0][1] redis/client.py:1385: in _execute_transaction self.parse_response(connection, "_") redis/client.py:1462: in parse_response result = Redis.parse_response(self, connection, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: Command # 1 (DEBUG ERROR LOADING fake message) of pipeline caused error: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError _____________________ TestConnection.test_read_only_error ______________________ self = r = )>)> @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() def test_read_only_error(self, r): "READONLY errors get turned into ReadOnlyError exceptions" with pytest.raises(redis.ReadOnlyError): > r.execute_command("DEBUG", "ERROR", "READONLY blah blah") tests/test_connection_pool.py:557: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:559: in execute_command return self._execute_command(*args, **options) redis/client.py:567: in _execute_command return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:568: in lambda: self._send_command_parse_response( redis/client.py:542: in _send_command_parse_response return self.parse_response(conn, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError ________________________ TestConnection.test_oom_error _________________________ self = r = )>)> def test_oom_error(self, r): "OOM errors get turned into OutOfMemoryError exceptions" with pytest.raises(redis.OutOfMemoryError): # note: don't use the DEBUG OOM command since it's not the same # as the db being full > r.execute_command("DEBUG", "ERROR", "OOM blah blah") tests/test_connection_pool.py:564: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:559: in execute_command return self._execute_command(*args, **options) redis/client.py:567: in _execute_command return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:568: in lambda: self._send_command_parse_response( redis/client.py:542: in _send_command_parse_response return self.parse_response(conn, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError ________________ TestConnection.test_connect_no_auth_configured ________________ self = r = )>)> @skip_if_redis_enterprise() def test_connect_no_auth_configured(self, r): """ AuthenticationError should be raised when the server is not configured with auth but credentials are supplied by the user. """ # Redis < 6 with pytest.raises(redis.AuthenticationError): > r.execute_command( "DEBUG", "ERROR", "ERR Client sent AUTH, but no password is set" ) tests/test_connection_pool.py:598: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:559: in execute_command return self._execute_command(*args, **options) redis/client.py:567: in _execute_command return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:568: in lambda: self._send_command_parse_response( redis/client.py:542: in _send_command_parse_response return self.parse_response(conn, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError ________ TestConnection.test_connect_invalid_auth_credentials_supplied _________ self = r = )>)> @skip_if_redis_enterprise() def test_connect_invalid_auth_credentials_supplied(self, r): """ AuthenticationError should be raised when sending invalid username/password """ # Redis < 6 with pytest.raises(redis.AuthenticationError): > r.execute_command("DEBUG", "ERROR", "ERR invalid password") tests/test_connection_pool.py:619: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/client.py:559: in execute_command return self._execute_command(*args, **options) redis/client.py:567: in _execute_command return conn.retry.call_with_retry( redis/retry.py:62: in call_with_retry return do() redis/client.py:568: in lambda: self._send_command_parse_response( redis/client.py:542: in _send_command_parse_response return self.parse_response(conn, command_name, **options) redis/client.py:584: in parse_response response = connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False def read_response( self, disable_decoding=False, *, disconnect_on_error=True, push_request=False, ): """Read the response from a previously sent command""" host_error = self._host_error() try: if self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = self._parser.read_response(disable_decoding=disable_decoding) except socket.timeout: if disconnect_on_error: self.disconnect() raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: self.disconnect() raise ConnectionError( f"Error while reading from {host_error}" f" : {e.args}" ) except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: self.disconnect() raise if self.health_check_interval: self.next_health_check = time() + self.health_check_interval if isinstance(response, ResponseError): try: > raise response E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/connection.py:616: ResponseError _________ TestConnection.test_busy_loading_disconnects_socket[single] __________ self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_busy_loading_disconnects_socket(self, r): """ If Redis raises a LOADING error, the connection should be disconnected and a BusyLoadingError raised """ with pytest.raises(redis.BusyLoadingError): > await r.execute_command("DEBUG", "ERROR", "LOADING fake message") tests/test_asyncio/test_connection_pool.py:592: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError __________ TestConnection.test_busy_loading_disconnects_socket[pool] ___________ self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_busy_loading_disconnects_socket(self, r): """ If Redis raises a LOADING error, the connection should be disconnected and a BusyLoadingError raised """ with pytest.raises(redis.BusyLoadingError): > await r.execute_command("DEBUG", "ERROR", "LOADING fake message") tests/test_asyncio/test_connection_pool.py:592: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError ___ TestConnection.test_busy_loading_from_pipeline_immediate_command[single] ___ self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_busy_loading_from_pipeline_immediate_command(self, r): """ BusyLoadingErrors should raise from Pipelines that execute a command immediately, like WATCH does. """ pipe = r.pipeline() with pytest.raises(redis.BusyLoadingError): > await pipe.immediate_execute_command( "DEBUG", "ERROR", "LOADING fake message" ) tests/test_asyncio/test_connection_pool.py:606: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:1337: in immediate_execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:1473: in parse_response result = await super().parse_response(connection, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError ____ TestConnection.test_busy_loading_from_pipeline_immediate_command[pool] ____ self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_busy_loading_from_pipeline_immediate_command(self, r): """ BusyLoadingErrors should raise from Pipelines that execute a command immediately, like WATCH does. """ pipe = r.pipeline() with pytest.raises(redis.BusyLoadingError): > await pipe.immediate_execute_command( "DEBUG", "ERROR", "LOADING fake message" ) tests/test_asyncio/test_connection_pool.py:606: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:1337: in immediate_execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:1473: in parse_response result = await super().parse_response(connection, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError ____________ TestConnection.test_busy_loading_from_pipeline[single] ____________ self = )>)> connection = commands = [(('DEBUG', 'ERROR', 'LOADING fake message'), {})] raise_on_error = True async def _execute_transaction( # noqa: C901 self, connection: Connection, commands: CommandStackT, raise_on_error ): pre: CommandT = (("MULTI",), {}) post: CommandT = (("EXEC",), {}) cmds = (pre, *commands, post) all_cmds = connection.pack_commands( args for args, options in cmds if EMPTY_RESPONSE not in options ) await connection.send_packed_command(all_cmds) errors = [] # parse off the response for MULTI # NOTE: we need to handle ResponseErrors here and continue # so that we read all the additional command messages from # the socket try: await self.parse_response(connection, "_") except ResponseError as err: errors.append((0, err)) # and all the other commands for i, command in enumerate(commands): if EMPTY_RESPONSE in command[1]: errors.append((i, command[1][EMPTY_RESPONSE])) else: try: await self.parse_response(connection, "_") except ResponseError as err: self.annotate_exception(err, i + 1, command[0]) errors.append((i, err)) # parse the EXEC. try: > response = await self.parse_response(connection, "_") redis/asyncio/client.py:1393: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:1473: in parse_response result = await super().parse_response(connection, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ExecAbortError: Transaction discarded because of previous errors. redis/asyncio/connection.py:571: ExecAbortError The above exception was the direct cause of the following exception: self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_busy_loading_from_pipeline(self, r): """ BusyLoadingErrors should be raised from a pipeline execution regardless of the raise_on_error flag. """ pipe = r.pipeline() pipe.execute_command("DEBUG", "ERROR", "LOADING fake message") with pytest.raises(redis.BusyLoadingError): > await pipe.execute() tests/test_asyncio/test_connection_pool.py:625: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:1537: in execute return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:1396: in _execute_transaction raise errors[0][1] from err redis/asyncio/client.py:1386: in _execute_transaction await self.parse_response(connection, "_") redis/asyncio/client.py:1473: in parse_response result = await super().parse_response(connection, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: Command # 1 (DEBUG ERROR LOADING fake message) of pipeline caused error: ('DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server.',) redis/asyncio/connection.py:571: ResponseError _____________ TestConnection.test_busy_loading_from_pipeline[pool] _____________ self = )>)> connection = commands = [(('DEBUG', 'ERROR', 'LOADING fake message'), {})] raise_on_error = True async def _execute_transaction( # noqa: C901 self, connection: Connection, commands: CommandStackT, raise_on_error ): pre: CommandT = (("MULTI",), {}) post: CommandT = (("EXEC",), {}) cmds = (pre, *commands, post) all_cmds = connection.pack_commands( args for args, options in cmds if EMPTY_RESPONSE not in options ) await connection.send_packed_command(all_cmds) errors = [] # parse off the response for MULTI # NOTE: we need to handle ResponseErrors here and continue # so that we read all the additional command messages from # the socket try: await self.parse_response(connection, "_") except ResponseError as err: errors.append((0, err)) # and all the other commands for i, command in enumerate(commands): if EMPTY_RESPONSE in command[1]: errors.append((i, command[1][EMPTY_RESPONSE])) else: try: await self.parse_response(connection, "_") except ResponseError as err: self.annotate_exception(err, i + 1, command[0]) errors.append((i, err)) # parse the EXEC. try: > response = await self.parse_response(connection, "_") redis/asyncio/client.py:1393: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:1473: in parse_response result = await super().parse_response(connection, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ExecAbortError: Transaction discarded because of previous errors. redis/asyncio/connection.py:571: ExecAbortError The above exception was the direct cause of the following exception: self = r = )>)> @pytest.mark.onlynoncluster @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_busy_loading_from_pipeline(self, r): """ BusyLoadingErrors should be raised from a pipeline execution regardless of the raise_on_error flag. """ pipe = r.pipeline() pipe.execute_command("DEBUG", "ERROR", "LOADING fake message") with pytest.raises(redis.BusyLoadingError): > await pipe.execute() tests/test_asyncio/test_connection_pool.py:625: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:1537: in execute return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:1396: in _execute_transaction raise errors[0][1] from err redis/asyncio/client.py:1386: in _execute_transaction await self.parse_response(connection, "_") redis/asyncio/client.py:1473: in parse_response result = await super().parse_response(connection, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: Command # 1 (DEBUG ERROR LOADING fake message) of pipeline caused error: ('DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server.',) redis/asyncio/connection.py:571: ResponseError _________________ TestConnection.test_read_only_error[single] __________________ self = r = )>)> @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_read_only_error(self, r): """READONLY errors get turned into ReadOnlyError exceptions""" with pytest.raises(redis.ReadOnlyError): > await r.execute_command("DEBUG", "ERROR", "READONLY blah blah") tests/test_asyncio/test_connection_pool.py:636: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError __________________ TestConnection.test_read_only_error[pool] ___________________ self = r = )>)> @skip_if_server_version_lt("2.8.8") @skip_if_redis_enterprise() async def test_read_only_error(self, r): """READONLY errors get turned into ReadOnlyError exceptions""" with pytest.raises(redis.ReadOnlyError): > await r.execute_command("DEBUG", "ERROR", "READONLY blah blah") tests/test_asyncio/test_connection_pool.py:636: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError ____________________ TestConnection.test_oom_error[single] _____________________ self = r = )>)> @skip_if_redis_enterprise() async def test_oom_error(self, r): """OOM errors get turned into OutOfMemoryError exceptions""" with pytest.raises(redis.OutOfMemoryError): # note: don't use the DEBUG OOM command since it's not the same # as the db being full > await r.execute_command("DEBUG", "ERROR", "OOM blah blah") tests/test_asyncio/test_connection_pool.py:644: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError _____________________ TestConnection.test_oom_error[pool] ______________________ self = r = )>)> @skip_if_redis_enterprise() async def test_oom_error(self, r): """OOM errors get turned into OutOfMemoryError exceptions""" with pytest.raises(redis.OutOfMemoryError): # note: don't use the DEBUG OOM command since it's not the same # as the db being full > await r.execute_command("DEBUG", "ERROR", "OOM blah blah") tests/test_asyncio/test_connection_pool.py:644: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError ______ TestConnection.test_connect_no_auth_supplied_when_required[single] ______ self = r = )>)> @skip_if_redis_enterprise() async def test_connect_no_auth_supplied_when_required(self, r): """ AuthenticationError should be raised when the server requires a password but one isn't supplied. """ with pytest.raises(redis.AuthenticationError): > await r.execute_command( "DEBUG", "ERROR", "ERR Client sent AUTH, but no password is set" ) tests/test_asyncio/test_connection_pool.py:677: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError _______ TestConnection.test_connect_no_auth_supplied_when_required[pool] _______ self = r = )>)> @skip_if_redis_enterprise() async def test_connect_no_auth_supplied_when_required(self, r): """ AuthenticationError should be raised when the server requires a password but one isn't supplied. """ with pytest.raises(redis.AuthenticationError): > await r.execute_command( "DEBUG", "ERROR", "ERR Client sent AUTH, but no password is set" ) tests/test_asyncio/test_connection_pool.py:677: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError ________ TestConnection.test_connect_invalid_password_supplied[single] _________ self = r = )>)> @skip_if_redis_enterprise() async def test_connect_invalid_password_supplied(self, r): """AuthenticationError should be raised when sending the wrong password""" with pytest.raises(redis.AuthenticationError): > await r.execute_command("DEBUG", "ERROR", "ERR invalid password") tests/test_asyncio/test_connection_pool.py:685: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError _________ TestConnection.test_connect_invalid_password_supplied[pool] __________ self = r = )>)> @skip_if_redis_enterprise() async def test_connect_invalid_password_supplied(self, r): """AuthenticationError should be raised when sending the wrong password""" with pytest.raises(redis.AuthenticationError): > await r.execute_command("DEBUG", "ERROR", "ERR invalid password") tests/test_asyncio/test_connection_pool.py:685: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ redis/asyncio/client.py:616: in execute_command return await conn.retry.call_with_retry( redis/asyncio/retry.py:59: in call_with_retry return await do() redis/asyncio/client.py:590: in _send_command_parse_response return await self.parse_response(conn, command_name, **options) redis/asyncio/client.py:637: in parse_response response = await connection.read_response() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = disable_decoding = False, timeout = None async def read_response( self, disable_decoding: bool = False, timeout: Optional[float] = None, *, disconnect_on_error: bool = True, push_request: Optional[bool] = False, ): """Read the response from a previously sent command""" read_timeout = timeout if timeout is not None else self.socket_timeout host_error = self._host_error() try: if ( read_timeout is not None and self.protocol in ["3", 3] and not HIREDIS_AVAILABLE ): async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) elif read_timeout is not None: async with async_timeout(read_timeout): response = await self._parser.read_response( disable_decoding=disable_decoding ) elif self.protocol in ["3", 3] and not HIREDIS_AVAILABLE: response = await self._parser.read_response( disable_decoding=disable_decoding, push_request=push_request ) else: response = await self._parser.read_response( disable_decoding=disable_decoding ) except asyncio.TimeoutError: if timeout is not None: # user requested timeout, return None. Operation can be retried return None # it was a self.socket_timeout error. if disconnect_on_error: await self.disconnect(nowait=True) raise TimeoutError(f"Timeout reading from {host_error}") except OSError as e: if disconnect_on_error: await self.disconnect(nowait=True) raise ConnectionError(f"Error while reading from {host_error} : {e.args}") except BaseException: # Also by default close in case of BaseException. A lot of code # relies on this behaviour when doing Command/Response pairs. # See #1128. if disconnect_on_error: await self.disconnect(nowait=True) raise if self.health_check_interval: next_time = asyncio.get_running_loop().time() + self.health_check_interval self.next_health_check = next_time if isinstance(response, ResponseError): > raise response from None E redis.exceptions.ResponseError: DEBUG command not allowed. If the enable-debug-command option is set to "local", you can run it from a local connection, otherwise you need to set this option in the configuration file, and then restart the server. redis/asyncio/connection.py:571: ResponseError =========================== short test summary info ============================ FAILED tests/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket FAILED tests/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command FAILED tests/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline FAILED tests/test_connection_pool.py::TestConnection::test_read_only_error - ... FAILED tests/test_connection_pool.py::TestConnection::test_oom_error - redis.... FAILED tests/test_connection_pool.py::TestConnection::test_connect_no_auth_configured FAILED tests/test_connection_pool.py::TestConnection::test_connect_invalid_auth_credentials_supplied FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_disconnects_socket[pool] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline_immediate_command[pool] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_busy_loading_from_pipeline[pool] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_read_only_error[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_read_only_error[pool] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_oom_error[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_oom_error[pool] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_no_auth_supplied_when_required[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_no_auth_supplied_when_required[pool] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied[single] FAILED tests/test_asyncio/test_connection_pool.py::TestConnection::test_connect_invalid_password_supplied[pool] === 21 failed, 870 passed, 116 skipped, 731 deselected, 22 xpassed in 54.12s === error: Bad exit status from /var/tmp/rpm-tmp.O5VSN4 (%check) Bad exit status from /var/tmp/rpm-tmp.O5VSN4 (%check) RPM build errors: Child return code was: 1 EXCEPTION: [Error('Command failed: \n # bash --login -c /usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec\n', 1)] Traceback (most recent call last): File "/usr/lib/python3.11/site-packages/mockbuild/trace_decorator.py", line 93, in trace result = func(*args, **kw) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/mockbuild/util.py", line 597, in do_with_status raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode) mockbuild.exception.Error: Command failed: # bash --login -c /usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/python-redis.spec