2024-05-03 22:46:34 +02:00
#
# spec file for package python-redis
#
2024-09-25 17:16:58 +02:00
# Copyright (c) 2024 SUSE LLC
2024-05-03 22:46:34 +02:00
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%bcond_without testing
%{?sle15_python_module_pythons}
Name : python-redis
Version : 5.0.1
Release : 0
Summary : Python client for Redis key-value store
License : MIT
URL : https://github.com/redis/redis-py
Source0 : https://files.pythonhosted.org/packages/source/r/redis/redis-%{version} .tar.gz
Source1 : https://raw.githubusercontent.com/redis/redis-py/5.0/pytest.ini
2024-09-25 17:16:58 +02:00
Patch0 : increase-test-timeout.patch
# PATCH-FIX-UPSTREAM https://github.com/redis/redis-py/pull/3005
Patch1 : Close-various-objects-created-during-asyncio-tests.patch
2024-05-03 22:46:34 +02:00
BuildRequires : %{python_module async-timeout >= 4.0.2}
BuildRequires : %{python_module base >= 3.7}
BuildRequires : %{python_module packaging}
2024-09-25 17:16:58 +02:00
BuildRequires : %{python_module pip}
2024-05-03 22:46:34 +02:00
BuildRequires : %{python_module pytest-asyncio}
BuildRequires : %{python_module pytest-timeout}
BuildRequires : %{python_module pytest}
BuildRequires : %{python_module setuptools}
2024-09-25 17:16:58 +02:00
BuildRequires : %{python_module wheel}
2024-05-03 22:46:34 +02:00
BuildRequires : fdupes
BuildRequires : psmisc
BuildRequires : python-rpm-macros
%if %{with testing}
BuildRequires : redis
%endif
Requires : python-async-timeout >= 4.0.2
Recommends: python-hiredis >= 1.0.0
Recommends: redis
BuildArch : noarch
%python_subpackages
%description
The Python interface to the Redis key-value store.
%prep
2024-09-25 17:16:58 +02:00
%autosetup -N -n redis-%{version}
2024-05-03 22:46:34 +02:00
# pytest.ini for pytest markers
cp %SOURCE1 .
2024-09-25 17:16:58 +02:00
%ifarch s390x
%patch -P 0 -p1
%endif
%patch -P 1 -p1
2024-05-03 22:46:34 +02:00
# This test passes locally but fails in obs with different
# environment, like ALP build...
rm tests/test_commands.py*
# The openSUSE redis json, bloom, ts and
# graph are missing in the repos
rm tests/test_bloom.py
rm tests/test_graph.py
rm tests/test_json.py
rm tests/test_timeseries.py
%build
2024-09-25 17:16:58 +02:00
%pyproject_wheel
2024-05-03 22:46:34 +02:00
%install
2024-09-25 17:16:58 +02:00
%pyproject_install
2024-05-03 22:46:34 +02:00
%python_expand %fdupes %{buildroot} %{$python_sitelib}
%if %{with testing}
%check
# upstream's tox testsuite starts several servers in docker containers listening on different ports.
# We just start two of them locally
# master
# https://github.com/redis/redis/pull/9920
%{_sbindir} /redis-server --version | grep ' v=7\.' && redis7args=" - - e n a b l e - d e b u g - c o m m a n d y e s - - e n a b l e - m o d u l e - c o m m a n d y e s "
%{_sbindir} /redis-server --port 6379 --save " " $redis7args &
victims=" $ ! "
trap " k i l l $ v i c t i m s | | t r u e " EXIT
sleep 2
# replica
%{_sbindir} /redis-server --port 6380 --save " " --replicaof localhost 6379 &
victims=" $ v i c t i m s $ ! "
trap " k i l l $ v i c t i m s | | t r u e " EXIT
sleep 2
# onlycluster: skip tests which require a full cluster
# redismod: Not available (https://github.com/RedisLabsModules/redismod)
# ssl: no stunnel with certs from docker container, fails at test collection
#
# broken tests in ppc64le
donttest=" t e s t _ g e o p o s o r t e s t _ g e o r a d i u s "
# gh#redis/redis-py#2554
donttest=" $ d o n t t e s t o r t e s t _ x a u t o c l a i m "
# gh#redis/redis-py#2679
donttest+=" o r t e s t _ a c l _ g e t u s e r _ s e t u s e r o r t e s t _ a c l _ l o g "
%pytest -m 'not (onlycluster or redismod or ssl)' -k " n o t ( $ d o n t t e s t ) " --ignore tests/test_ssl.py --ignore tests/test_asyncio/test_cluster.py --redis-url=redis://localhost:6379/
%endif
%files %{python_files}
%license LICENSE
%doc README.md
%{python_sitelib} /redis/
%{python_sitelib} /redis-%{version} *-info
%changelog