Blob Blame History Raw
Name:           python-rapidfuzz
Version:        3.5.2
Release:        %autorelease
Summary:        Rapid fuzzy string matching in Python and C++ using the Levenshtein Distance

License:        MIT
URL:            https://github.com/maxbachmann/RapidFuzz
Source:         %{pypi_source rapidfuzz}

BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  python3-devel
BuildRequires:  python3-hypothesis
# Pandas will drop i686
# https://bugzilla.redhat.com/show_bug.cgi?id=2263999
BuildRequires:  (python3-pandas or python3(x86-32))
BuildRequires:  python3-pytest
# The PyPi sources don't depend on Cython since they contain pre-generated sources,
# but those are rebuilt for Fedora so Cython must be available.
BuildRequires:  python3-cython >= 3
BuildRequires:  rapidfuzz-cpp-static
BuildRequires:  taskflow-static

%global _description %{expand:
RapidFuzz is a fast string matching library for Python and C++, which is using
the string similarity calculations from FuzzyWuzzy. However there are a couple
of aspects that set RapidFuzz apart from FuzzyWuzzy:
- It is MIT licensed so it can be used whichever License you might want
to choose for your project, while you're forced to adopt the GPL license when
using FuzzyWuzzy
- It provides many string_metrics like hamming or jaro_winkler, which
are not included in FuzzyWuzzy
- It is mostly written in C++ and on top of this comes with a lot of Algorithmic
improvements to make string matching even faster, while still providing the same
results. For detailed benchmarks check the documentation
- Fixes multiple bugs in the partial_ratio implementation}

%description %_description

%package -n python3-rapidfuzz
Summary:        %{summary}

%description -n python3-rapidfuzz %_description


%pyproject_extras_subpkg -n python3-rapidfuzz full

%package -n python3-rapidfuzz-devel
Summary:        Development files for the RapidFuzz library

Requires: python3-rapidfuzz%{?_isa} = %{version}-%{release}

%description -n python3-rapidfuzz-devel
%_description


%prep
%autosetup -p1 -n rapidfuzz-%{version}
# External dependencies (rapidfuzz-cpp and taskflow) are removed here,
# they are already packaged in Fedora and we BuildRequire them above.
rm extern -r

# Remove pregenerated Cython sources
rm $(grep -rl '/\* Generated by Cython')

# Adjust version constraint to make rapidfuzz build
# with the current version of scikit-build in Fedora
sed -i 's/scikit-build~=0.16.2/scikit-build~=0.17.1/' pyproject.toml


%generate_buildrequires
%pyproject_buildrequires -x full


%build
%pyproject_wheel


%install
%pyproject_install
%pyproject_save_files rapidfuzz


%check
%pytest -v


%files -n python3-rapidfuzz -f %{pyproject_files}
%doc README.*
%exclude %{python3_sitearch}/rapidfuzz/rapidfuzz.h
%exclude %{python3_sitearch}/rapidfuzz/__init__.pxd

%files -n python3-rapidfuzz-devel
%{python3_sitearch}/rapidfuzz/rapidfuzz.h
%{python3_sitearch}/rapidfuzz/__init__.pxd


%changelog
%autochangelog