1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
{ lib
, pythonOlder
, buildPythonPackage
, fetchFromGitHub
# Python requirements
, cython
, dill
, fastjsonschema
, jsonschema
, numpy
, marshmallow
, marshmallow-polyfield
, networkx
, ply
, psutil
, python-constraint
, retworkx
, scipy
, sympy
# Python visualization requirements, semi-optional
, ipywidgets
, matplotlib
, pillow
, pydot
, pygments
, pylatexenc
, seaborn
# test requirements
, ddt
, hypothesis
, nbformat
, nbconvert
, pytestCheckHook
, python
}:
buildPythonPackage rec {
pname = "qiskit-terra";
version = "0.14.1";
disabled = pythonOlder "3.5";
src = fetchFromGitHub {
owner = "Qiskit";
repo = pname;
rev = version;
sha256 = "0pd7x2jrqy7q1s38ychqw9bayjn2rvi6rq7c2c0kd160rwj1l2sc";
};
nativeBuildInputs = [ cython ];
propagatedBuildInputs = [
dill
fastjsonschema
jsonschema
numpy
marshmallow
marshmallow-polyfield
matplotlib
networkx
ply
psutil
python-constraint
retworkx
scipy
sympy
# Optional/visualization inputs
ipywidgets
matplotlib
pillow
pydot
pygments
pylatexenc
seaborn
];
postPatch = ''
# Fix relative imports in tests
touch test/python/dagcircuit/__init__.py
'';
# *** Tests ***
checkInputs = [
ddt
hypothesis
nbformat
nbconvert
pytestCheckHook
];
dontUseSetuptoolsCheck = true; # can't find setup.py, so fails. tested by pytest
pythonImportsCheck = [
"qiskit"
"qiskit.transpiler.passes.routing.cython.stochastic_swap.swap_trial"
];
pytestFlagsArray = [
"--ignore=test/randomized/test_transpiler_equivalence.py" # collection requires qiskit-aer, which would cause circular dependency
];
# Moves tests to $PACKAGEDIR/test. They can't be run from /build because of finding
# cythonized modules and expecting to find some resource files in the test directory.
preCheck = ''
export PACKAGEDIR=$out/${python.sitePackages}
echo "Moving Qiskit test files to package directory"
cp -r $TMP/source/test $PACKAGEDIR
cp -r $TMP/source/examples $PACKAGEDIR
cp -r $TMP/source/qiskit/schemas/examples $PACKAGEDIR/qiskit/schemas/
# run pytest from Nix's $out path
pushd $PACKAGEDIR
'';
postCheck = ''
rm -rf test
rm -rf examples
popd
'';
meta = with lib; {
description = "Provides the foundations for Qiskit.";
longDescription = ''
Allows the user to write quantum circuits easily, and takes care of the constraints of real hardware.
'';
homepage = "https://qiskit.org/terra";
downloadPage = "https://github.com/QISKit/qiskit-terra/releases";
license = licenses.asl20;
maintainers = with maintainers; [ drewrisinger ];
};
}
|