diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 0aa91a31313fd..246a6d06cec23 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -2928,6 +2928,11 @@ github = "panaeon"; name = "Vitalii Voloshyn"; }; + pandaman = { + email = "kointosudesuyo@infoseek.jp"; + github = "pandaman64"; + name = "pandaman"; + }; paperdigits = { email = "mica@silentumbrella.com"; github = "paperdigits"; diff --git a/pkgs/development/python-modules/ibmquantumexperience/default.nix b/pkgs/development/python-modules/ibmquantumexperience/default.nix new file mode 100644 index 0000000000000..22f4ba9301f85 --- /dev/null +++ b/pkgs/development/python-modules/ibmquantumexperience/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchPypi +, requests +, requests_ntlm +}: + +buildPythonPackage rec { + pname = "IBMQuantumExperience"; + version = "1.9.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "480cce2ca285368432b7d00b9cd702a4f8a1c9d69914ba6f65e08099e151e407"; + }; + + propagatedBuildInputs = [ + requests + requests_ntlm + ]; + + # test requires an API token + doCheck = false; + + meta = { + description = "A Python library for the Quantum Experience API"; + homepage = https://github.com/QISKit/qiskit-api-py; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + pandaman + ]; + }; +} diff --git a/pkgs/development/python-modules/qasm2image/default.nix b/pkgs/development/python-modules/qasm2image/default.nix new file mode 100644 index 0000000000000..174e0871ca2f0 --- /dev/null +++ b/pkgs/development/python-modules/qasm2image/default.nix @@ -0,0 +1,47 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, cairocffi +, cairosvg +, cffi +, qiskit +, svgwrite +, colorama +, python +}: + +buildPythonPackage rec { + pname = "qasm2image"; + version = "0.5.0"; + + src = fetchFromGitHub { + owner = "nelimeee"; + repo = "qasm2image"; + rev = "7f3c3e4d1701b8b284ef0352aa3a47722ebbbcaa"; + sha256 = "129xlpwp36h2czzw1wcl8df2864zg3if2gaad1v18ah1cf68b0f3"; + }; + + propagatedBuildInputs = [ + cairocffi + cairosvg + cffi + qiskit + svgwrite + ]; + + checkInputs = [ + colorama + ]; + checkPhase = '' + ${python.interpreter} tests/launch_tests.py + ''; + + meta = { + description = "A Python module to visualise quantum circuit"; + homepage = https://github.com/nelimeee/qasm2image; + license = lib.licenses.cecill-b; + maintainers = with lib.maintainers; [ + pandaman + ]; + }; +} diff --git a/pkgs/development/python-modules/qiskit/default.nix b/pkgs/development/python-modules/qiskit/default.nix new file mode 100644 index 0000000000000..090358152e793 --- /dev/null +++ b/pkgs/development/python-modules/qiskit/default.nix @@ -0,0 +1,65 @@ +{ stdenv +, isPy3k +, buildPythonPackage +, fetchPypi +, fetchurl +, python +, numpy +, scipy +, sympy +, matplotlib +, networkx +, ply +, pillow +, cffi +, requests +, requests_ntlm +, IBMQuantumExperience +, cmake +, llvmPackages +}: + +buildPythonPackage rec { + pname = "qiskit"; + version = "0.4.15"; + + disabled = !isPy3k; + + src = fetchPypi { + inherit pname version; + sha256 = "bd126a35189f8303df41cb7b7f26b0d06e1fabf61f4fd567b8ec356d31170141"; + }; + + buildInputs = [ cmake ] + ++ stdenv.lib.optional stdenv.isDarwin llvmPackages.openmp; + + propagatedBuildInputs = [ + numpy + matplotlib + networkx + ply + scipy + sympy + pillow + cffi + requests + requests_ntlm + IBMQuantumExperience + ]; + + # Pypi's tarball doesn't contain tests + doCheck = false; + + patches = [ + ./setup.py.patch + ]; + + meta = { + description = "Quantum Software Development Kit for writing quantum computing experiments, programs, and applications"; + homepage = https://github.com/QISKit/qiskit-sdk-py; + license = stdenv.lib.licenses.asl20; + maintainers = with stdenv.lib.maintainers; [ + pandaman + ]; + }; +} diff --git a/pkgs/development/python-modules/qiskit/setup.py.patch b/pkgs/development/python-modules/qiskit/setup.py.patch new file mode 100644 index 0000000000000..bb7cb71ae098d --- /dev/null +++ b/pkgs/development/python-modules/qiskit/setup.py.patch @@ -0,0 +1,19 @@ +--- a/setup.py ++++ b/setup.py +@@ -28,11 +28,11 @@ from setuptools.dist import Distribution + + requirements = [ + "IBMQuantumExperience>=1.8.29", +- "matplotlib>=2.1,<2.2", +- "networkx>=2.0,<2.1", +- "numpy>=1.13,<1.15", +- "ply==3.10", +- "scipy>=0.19,<1.1", ++ "matplotlib>=2.1", ++ "networkx>=2.0", ++ "numpy>=1.13", ++ "ply>=3.10", ++ "scipy>=0.19", + "sympy>=1.0", + "pillow>=4.2.1" + ] diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9f0a0f45b12d1..f4f189f72a216 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18202,6 +18202,11 @@ EOF gast = callPackage ../development/python-modules/gast { }; + IBMQuantumExperience = callPackage ../development/python-modules/ibmquantumexperience { }; + + qiskit = callPackage ../development/python-modules/qiskit { }; + + qasm2image = callPackage ../development/python-modules/qasm2image { }; }); in fix' (extends overrides packages)