1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 hatchling,
8 hatch-vcs,
9
10 # dependencies
11 aiohttp,
12 awkward,
13 cachetools,
14 cloudpickle,
15 correctionlib,
16 dask,
17 dask-awkward,
18 dask-histogram,
19 fsspec-xrootd,
20 hist,
21 lz4,
22 matplotlib,
23 mplhep,
24 numba,
25 numpy,
26 packaging,
27 pandas,
28 pyarrow,
29 requests,
30 scipy,
31 toml,
32 tqdm,
33 uproot,
34 vector,
35
36 # tests
37 distributed,
38 pyinstrument,
39 pytest-xdist,
40 pytestCheckHook,
41}:
42
43buildPythonPackage rec {
44 pname = "coffea";
45 version = "2025.3.0";
46 pyproject = true;
47
48 src = fetchFromGitHub {
49 owner = "CoffeaTeam";
50 repo = "coffea";
51 tag = "v${version}";
52 hash = "sha256-NZ3r/Dyw5bB4qOO29DUAARPzdJJxgR9OO9LxVu3YbNo=";
53 };
54
55 build-system = [
56 hatchling
57 hatch-vcs
58 ];
59
60 pythonRelaxDeps = [
61 "dask"
62 ];
63
64 dependencies = [
65 aiohttp
66 awkward
67 cachetools
68 cloudpickle
69 correctionlib
70 dask
71 dask-awkward
72 dask-histogram
73 fsspec-xrootd
74 hist
75 lz4
76 matplotlib
77 mplhep
78 numba
79 numpy
80 packaging
81 pandas
82 pyarrow
83 requests
84 scipy
85 toml
86 tqdm
87 uproot
88 vector
89 ] ++ dask.optional-dependencies.array;
90
91 nativeCheckInputs = [
92 distributed
93 pyinstrument
94 pytest-xdist
95 pytestCheckHook
96 ];
97
98 pythonImportsCheck = [ "coffea" ];
99
100 disabledTests = [
101 # Requires internet access
102 # https://github.com/CoffeaTeam/coffea/issues/1094
103 "test_lumimask"
104
105 # Flaky: FileNotFoundError: [Errno 2] No such file or directory
106 # https://github.com/scikit-hep/coffea/issues/1246
107 "test_packed_selection_cutflow_dak" # cutflow.npz
108 "test_packed_selection_nminusone_dak" # nminusone.npz
109 ];
110
111 __darwinAllowLocalNetworking = true;
112
113 meta = {
114 description = "Basic tools and wrappers for enabling not-too-alien syntax when running columnar Collider HEP analysis";
115 homepage = "https://github.com/CoffeaTeam/coffea";
116 changelog = "https://github.com/CoffeaTeam/coffea/releases/tag/v${version}";
117 license = with lib.licenses; [ bsd3 ];
118 maintainers = with lib.maintainers; [ veprbl ];
119 };
120}