btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / development / python-modules / rapidfuzz / default.nix
blob495eff4e46709c5f09a6ae56828a464f76c428fa
2   lib,
3   stdenv,
4   buildPythonPackage,
5   pythonOlder,
6   fetchFromGitHub,
7   cmake,
8   cython,
9   ninja,
10   scikit-build-core,
11   setuptools,
12   numpy,
13   hypothesis,
14   pandas,
15   pytestCheckHook,
16   rapidfuzz-cpp,
17   taskflow,
20 buildPythonPackage rec {
21   pname = "rapidfuzz";
22   version = "3.10.1";
23   pyproject = true;
25   disabled = pythonOlder "3.9";
27   src = fetchFromGitHub {
28     owner = "maxbachmann";
29     repo = "RapidFuzz";
30     rev = "refs/tags/v${version}";
31     hash = "sha256-0L8nkjgWdP/w//M69ZRxYk9If3CIEcnAl9mkJKJ4o1g=";
32   };
34   postPatch = ''
35     substituteInPlace pyproject.toml \
36       --replace-fail "Cython >=3.0.11, <3.1.0" "Cython"
37   '';
39   build-system = [
40     cmake
41     cython
42     ninja
43     scikit-build-core
44   ];
46   dontUseCmakeConfigure = true;
48   buildInputs = [
49     rapidfuzz-cpp
50     taskflow
51   ];
53   preBuild =
54     ''
55       export RAPIDFUZZ_BUILD_EXTENSION=1
56     ''
57     + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) ''
58       export CMAKE_ARGS="-DCMAKE_CXX_COMPILER_AR=$AR -DCMAKE_CXX_COMPILER_RANLIB=$RANLIB"
59     '';
61   optional-dependencies = {
62     all = [ numpy ];
63   };
65   preCheck = ''
66     export RAPIDFUZZ_IMPLEMENTATION=cpp
67   '';
69   nativeCheckInputs = [
70     hypothesis
71     pandas
72     pytestCheckHook
73   ];
75   disabledTests = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
76     # segfaults
77     "test_cdist"
78   ];
80   pythonImportsCheck = [
81     "rapidfuzz.distance"
82     "rapidfuzz.fuzz"
83     "rapidfuzz.process"
84     "rapidfuzz.utils"
85   ];
87   meta = with lib; {
88     description = "Rapid fuzzy string matching";
89     homepage = "https://github.com/maxbachmann/RapidFuzz";
90     changelog = "https://github.com/maxbachmann/RapidFuzz/blob/${src.rev}/CHANGELOG.rst";
91     license = licenses.mit;
92     maintainers = with maintainers; [ dotlambda ];
93   };