1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchFromGitHub,
6 fetchpatch2,
7 flit-core,
8 matplotlib,
9 pytest-xdist,
10 pytestCheckHook,
11 numpy,
12 pandas,
13 pythonOlder,
14 scipy,
15 statsmodels,
16}:
17
18buildPythonPackage rec {
19 pname = "seaborn";
20 version = "0.13.2";
21 format = "pyproject";
22
23 disabled = pythonOlder "3.8";
24
25 src = fetchFromGitHub {
26 owner = "mwaskom";
27 repo = "seaborn";
28 tag = "v${version}";
29 hash = "sha256-aGIVcdG/XN999nYBHh3lJqGa3QVt0j8kmzaxdkULznY=";
30 };
31
32 patches = [
33 # https://github.com/mwaskom/seaborn/pull/3685
34 (fetchpatch2 {
35 name = "numpy_2-compatibility.patch";
36 url = "https://github.com/mwaskom/seaborn/commit/58f170fe799ef496adae19925d7d4f0f14f8da95.patch";
37 hash = "sha256-/a3G+kNIRv8Oa4a0jPGnL2Wvx/9umMoiq1BXcXpehAg=";
38 })
39 # https://github.com/mwaskom/seaborn/pull/3802
40 (fetchpatch2 {
41 name = "matplotlib_3_10-compatibility.patch";
42 url = "https://github.com/mwaskom/seaborn/commit/385e54676ca16d0132434bc9df6bc41ea8b2a0d4.patch";
43 hash = "sha256-nwGwTkP7W9QzgbbAVdb2rASgsMxqFnylMk8GnTE445w=";
44 })
45 ];
46
47 nativeBuildInputs = [ flit-core ];
48
49 propagatedBuildInputs = [
50 matplotlib
51 numpy
52 pandas
53 ];
54
55 optional-dependencies = {
56 stats = [
57 scipy
58 statsmodels
59 ];
60 };
61
62 nativeCheckInputs = [
63 pytest-xdist
64 pytestCheckHook
65 ];
66
67 disabledTests = [
68 # requires internet connection
69 "test_load_dataset_string_error"
70 ]
71 ++ lib.optionals (!stdenv.hostPlatform.isx86) [
72 # overly strict float tolerances
73 "TestDendrogram"
74 ];
75
76 # All platforms should use Agg. Let's set it explicitly to avoid probing GUI
77 # backends (leads to crashes on macOS).
78 env.MPLBACKEND = "Agg";
79
80 pythonImportsCheck = [ "seaborn" ];
81
82 meta = with lib; {
83 description = "Statistical data visualization";
84 homepage = "https://seaborn.pydata.org/";
85 changelog = "https://github.com/mwaskom/seaborn/blob/master/doc/whatsnew/${src.rev}.rst";
86 license = with licenses; [ bsd3 ];
87 };
88}