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