1{
2 lib,
3 pythonOlder,
4 buildPythonPackage,
5 fetchFromGitHub,
6
7 # build-system
8 setuptools,
9
10 # Python Inputs
11 qiskit-aer,
12 qiskit-ibmq-provider,
13 qiskit-ignis,
14 qiskit-terra,
15 # Optional inputs
16 withOptionalPackages ? true,
17 qiskit-finance,
18 qiskit-machine-learning,
19 qiskit-nature,
20 qiskit-optimization,
21 # Check Inputs
22 pytestCheckHook,
23}:
24
25let
26 optionalQiskitPackages = [
27 qiskit-finance
28 qiskit-machine-learning
29 qiskit-nature
30 qiskit-optimization
31 ];
32in
33buildPythonPackage rec {
34 pname = "qiskit";
35 # NOTE: This version denotes a specific set of subpackages. See https://qiskit.org/documentation/release_notes.html#version-history
36 version = "2.1.1";
37 pyproject = true;
38
39 disabled = pythonOlder "3.6";
40
41 src = fetchFromGitHub {
42 owner = "Qiskit";
43 repo = "qiskit";
44 tag = version;
45 hash = "sha256-WHfsl/T4lmnvkGY7gF5PStilGq3G66TZG9oB1tKwuOQ=";
46 };
47
48 nativeBuildInputs = [ setuptools ];
49
50 propagatedBuildInputs = [
51 qiskit-aer
52 qiskit-ibmq-provider
53 qiskit-ignis
54 qiskit-terra
55 ]
56 ++ lib.optionals withOptionalPackages optionalQiskitPackages;
57
58 nativeCheckInputs = [ pytestCheckHook ];
59
60 pythonImportsCheck = [
61 "qiskit"
62 "qiskit.circuit"
63 "qiskit.ignis"
64 "qiskit.providers.aer"
65 "qiskit.providers.ibmq"
66 ];
67
68 meta = with lib; {
69 description = "Software for developing quantum computing programs";
70 homepage = "https://qiskit.org";
71 downloadPage = "https://github.com/QISKit/qiskit/releases";
72 changelog = "https://qiskit.org/documentation/release_notes.html";
73 license = licenses.asl20;
74 maintainers = with maintainers; [
75 drewrisinger
76 pandaman
77 ];
78 };
79}