1{
2 lib,
3 stdenv,
4 pythonOlder,
5 buildPythonPackage,
6 fetchFromGitHub,
7 numpy,
8 qiskit-terra,
9 scikit-learn,
10 scipy,
11 # Optional package inputs
12 withVisualization ? false,
13 matplotlib,
14 withCvx ? false,
15 cvxpy,
16 withJit ? false,
17 numba,
18 # Check Inputs
19 pytestCheckHook,
20 ddt,
21 pyfakefs,
22 qiskit-aer,
23}:
24
25buildPythonPackage rec {
26 pname = "qiskit-ignis";
27 version = "0.7.1";
28 format = "setuptools";
29
30 disabled = pythonOlder "3.6";
31
32 # Pypi's tarball doesn't contain tests
33 src = fetchFromGitHub {
34 owner = "Qiskit";
35 repo = "qiskit-ignis";
36 rev = "refs/tags/${version}";
37 hash = "sha256-WyLNtZhtuGzqCJdOBvtBjZZiGFQihpeSjJQtP7lI248=";
38 };
39
40 propagatedBuildInputs =
41 [
42 numpy
43 qiskit-terra
44 scikit-learn
45 scipy
46 ]
47 ++ lib.optionals (withCvx) [ cvxpy ]
48 ++ lib.optionals (withVisualization) [ matplotlib ]
49 ++ lib.optionals (withJit) [ numba ];
50
51 # Tests
52 pythonImportsCheck = [ "qiskit.ignis" ];
53 dontUseSetuptoolsCheck = true;
54 preCheck = ''
55 export HOME=$TMPDIR
56 '';
57 nativeCheckInputs = [
58 pytestCheckHook
59 ddt
60 pyfakefs
61 qiskit-aer
62 ];
63 disabledTests =
64 [
65 "test_tensored_meas_cal_on_circuit" # Flaky test, occasionally returns result outside bounds
66 ]
67 ++ lib.optionals stdenv.isAarch64 [
68 "test_fitters" # Fails check that arrays are close. Might be due to aarch64 math issues.
69 ];
70
71 meta = with lib; {
72 description = "Qiskit tools for quantum hardware verification, noise characterization, and error correction";
73 homepage = "https://qiskit.org/ignis";
74 downloadPage = "https://github.com/QISKit/qiskit-ignis/releases";
75 changelog = "https://qiskit.org/documentation/release_notes.html";
76 license = licenses.asl20;
77 maintainers = with maintainers; [ drewrisinger ];
78 };
79}