1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 pybind11,
8 scikit-build-core,
9 setuptools-scm,
10
11 # nativeBuildInputs
12 cmake,
13 ninja,
14
15 # buildInputs
16 zlib,
17
18 # dependencies
19 numpy,
20 packaging,
21 pydantic,
22 rich,
23
24 # tests
25 addBinToPathHook,
26 awkward,
27 pytestCheckHook,
28 scipy,
29}:
30
31buildPythonPackage rec {
32 pname = "correctionlib";
33 version = "2.7.0";
34 pyproject = true;
35
36 src = fetchFromGitHub {
37 owner = "cms-nanoAOD";
38 repo = "correctionlib";
39 tag = "v${version}";
40 fetchSubmodules = true;
41 hash = "sha256-aLTeyDOo80p8xzl/IPnpT3BOjS2qOYn/Z7pidcLoEY8=";
42 };
43
44 build-system = [
45 pybind11
46 scikit-build-core
47 setuptools-scm
48 ];
49
50 nativeBuildInputs = [
51 cmake
52 ninja
53 ];
54 dontUseCmakeConfigure = true;
55
56 buildInputs = [ zlib ];
57
58 dependencies = [
59 numpy
60 packaging
61 pydantic
62 rich
63 ];
64
65 nativeCheckInputs = [
66 # One test requires running the produced `correctionlib` binary
67 addBinToPathHook
68
69 awkward
70 pytestCheckHook
71 scipy
72 ];
73
74 pythonImportsCheck = [ "correctionlib" ];
75
76 meta = {
77 description = "Provides a well-structured JSON data format for a wide variety of ad-hoc correction factors encountered in a typical HEP analysis";
78 mainProgram = "correction";
79 homepage = "https://cms-nanoaod.github.io/correctionlib/";
80 changelog = "https://github.com/cms-nanoAOD/correctionlib/releases/tag/v${version}";
81 license = with lib.licenses; [ bsd3 ];
82 maintainers = with lib.maintainers; [ veprbl ];
83 };
84}