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}