1{
2 lib,
3 fetchPypi,
4 buildPythonPackage,
5 stdenv,
6 pythonOlder,
7 rustPlatform,
8 bitstring,
9 cachetools,
10 cffi,
11 deprecation,
12 iconv,
13 matplotlib,
14 numpy,
15 scipy,
16 screed,
17 hypothesis,
18 pytest-xdist,
19 pyyaml,
20 pytestCheckHook,
21}:
22buildPythonPackage rec {
23 pname = "sourmash";
24 version = "4.9.4";
25 pyproject = true;
26 disabled = pythonOlder "3.9";
27
28 src = fetchPypi {
29 inherit pname version;
30 hash = "sha256-KIidEQQeOYgxh1x9F6Nn4+WTewldAGdS5Fx/IwL0Ym0=";
31 };
32
33 cargoDeps = rustPlatform.fetchCargoVendor {
34 inherit pname version src;
35 hash = "sha256-/tVuR31T38/xx1+jglSGECAT1GmQEddQp9o6zAqlPyY=";
36 };
37
38 nativeBuildInputs = with rustPlatform; [
39 cargoSetupHook
40 maturinBuildHook
41 bindgenHook
42 ];
43
44 buildInputs = [ iconv ];
45
46 propagatedBuildInputs = [
47 bitstring
48 cachetools
49 cffi
50 deprecation
51 matplotlib
52 numpy
53 scipy
54 screed
55 ];
56
57 pythonImportsCheck = [ "sourmash" ];
58 nativeCheckInputs = [
59 hypothesis
60 pytest-xdist
61 pytestCheckHook
62 pyyaml
63 ];
64
65 # TODO(luizirber): Working on fixing these upstream
66 disabledTests = [
67 "test_compare_no_such_file"
68 "test_do_sourmash_index_multiscaled_rescale_fail"
69 "test_metagenome_kreport_out_fail"
70 ];
71
72 meta = with lib; {
73 description = "Quickly search, compare, and analyze genomic and metagenomic data sets";
74 mainProgram = "sourmash";
75 homepage = "https://sourmash.bio";
76 changelog = "https://github.com/sourmash-bio/sourmash/releases/tag/v${version}";
77 maintainers = with maintainers; [ luizirber ];
78 license = licenses.bsd3;
79 };
80}