diff --git a/pkgs/development/python-modules/ibmquantumexperience/default.nix b/pkgs/development/python-modules/ibmquantumexperience/default.nix deleted file mode 100644 index dcf39dd24f02f..0000000000000 --- a/pkgs/development/python-modules/ibmquantumexperience/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ lib -, buildPythonPackage -, fetchPypi -, requests -, requests_ntlm -}: - -buildPythonPackage rec { - pname = "IBMQuantumExperience"; - version = "2.0.4"; - - src = fetchPypi { - inherit pname version; - sha256 = "0szn743sbm3cs80982cf4994c1xcg6iz5xkhdbpm1kfv5qn1phja"; - }; - - 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/ipyvue/default.nix b/pkgs/development/python-modules/ipyvue/default.nix new file mode 100644 index 0000000000000..2b03fd368d92c --- /dev/null +++ b/pkgs/development/python-modules/ipyvue/default.nix @@ -0,0 +1,31 @@ +{ lib +, isPy27 +, buildPythonPackage +, fetchPypi + # Python Inputs +, ipywidgets +}: + +buildPythonPackage rec { + pname = "ipyvue"; + version = "1.3.1"; + + disabled = isPy27; + + src = fetchPypi { + inherit pname version; + sha256 = "01kp7d8iyz04d0m4njhv8rg72daqmgd93bdljwyffzxg71pwq92a"; + }; + + propagatedBuildInputs = [ ipywidgets ]; + + doCheck = false; # No tests in package or GitHub + pythonImportsCheck = [ "ipyvue" ]; + + meta = with lib; { + description = "Jupyter widgets base for Vue libraries."; + homepage = "https://github.com/mariobuikhuizen/ipyvuetify"; + license = licenses.mit; + maintainers = with maintainers; [ drewrisinger ]; + }; +} diff --git a/pkgs/development/python-modules/ipyvuetify/default.nix b/pkgs/development/python-modules/ipyvuetify/default.nix new file mode 100644 index 0000000000000..dc9df34c0d016 --- /dev/null +++ b/pkgs/development/python-modules/ipyvuetify/default.nix @@ -0,0 +1,29 @@ +{ lib +, buildPythonPackage +, fetchPypi + # Python Inputs +, ipyvue +}: + +buildPythonPackage rec { + pname = "ipyvuetify"; + version = "1.2.2"; + + # GitHub version tries to run npm (Node JS) + src = fetchPypi { + inherit pname version; + sha256 = "0vg3sdkdhba917xs6gyzwpp10gi2gszihf45cw2llwsfgb7kpfw8"; + }; + + propagatedBuildInputs = [ ipyvue ]; + + doCheck = false; # no tests on PyPi/GitHub + pythonImportsCheck = [ "ipyvuetify" ]; + + meta = with lib; { + description = "Jupyter widgets based on Vuetify UI Components."; + homepage = "https://github.com/mariobuikhuizen/ipyvuetify"; + license = licenses.mit; + maintainers = with maintainers; [ drewrisinger ]; + }; +} diff --git a/pkgs/development/python-modules/qiskit-aqua/default.nix b/pkgs/development/python-modules/qiskit-aqua/default.nix index 98c3e2457c130..ee01a5c4cb56b 100644 --- a/pkgs/development/python-modules/qiskit-aqua/default.nix +++ b/pkgs/development/python-modules/qiskit-aqua/default.nix @@ -85,27 +85,41 @@ buildPythonPackage rec { "--ignore=test/chemistry/test_qeom_vqe.py" "--ignore=test/chemistry/test_vqe_uccsd_adapt.py" - # following tend to be slow tests, all pass - "--ignore-glob=*vqc.py" - "--ignore-glob=*hhl.py" - "--ignore-glob=*qgan.py" + # Following tend to be slow tests, all pass + "--ignore=test/aqua/test_vqc.py" + "--ignore=test/aqua/test_hhl.py" + "--ignore=test/aqua/test_qgan.py" + "--ignore=test/aqua/test_mcr.py" + "--ignore=test/aqua/test_mcu1.py" + "--ignore=test/aqua/test_vqe.py" ]; disabledTests = [ # Disabled due to missing pyscf "test_validate" # test/chemistry/test_inputparser.py - # Disabling slow tests > 1 min - "test_qsvm_multiclass_error_correcting_code" - "test_vqe_qasm" - "test_qgan_training" - "test_qgan_training_run_algo_numpy" - "test_shor_factoring_0" - "test_lookup_rotation_4" - "test_lookup_rotation_neg_4" - "test_mcrz_11" + # Disabling slow tests > 10 seconds + "test_clique_vqe" + "test_delta_3_qasm" + "test_evaluate_qasm_mode" "test_evolve_1_suzuki" + "test_exact_cover_vqe" + "test_exchangedata" + "test_expected_value_0_statevector" + "test_expected_value_1_qasm" + "test_expected_value_2_statevector" + "test_graph_partition_vqe" + "test_lookup_rotation" "test_mct_with_dirty_ancillae_15" + "test_mcrz_11" + "test_measurement_error_mitigation_auto_refresh" + "test_qgan_training" + "test_qsvm_multiclass" + "test_shor_factoring_0" + "test_vertex_cover_vqe" "test_vqc_with_raw_feature_vector_on_wine" + "test_vqe_2_iqpe" + "test_vqe_qasm" + "test_wikipedia" ]; meta = with lib; { diff --git a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix index 2d6d02b5ad435..bed1bffe1a67d 100644 --- a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix +++ b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix @@ -8,15 +8,25 @@ , requests , requests_ntlm , websockets + # Visualization inputs +, ipykernel +, ipyvuetify +, ipywidgets +, matplotlib +, nbconvert +, nbformat +, plotly +, pyperclip +, seaborn # check inputs , pytestCheckHook -, vcrpy , pproxy +, vcrpy }: buildPythonPackage rec { pname = "qiskit-ibmq-provider"; - version = "0.5.0"; + version = "0.6.0"; disabled = pythonOlder "3.6"; @@ -24,7 +34,7 @@ buildPythonPackage rec { owner = "Qiskit"; repo = pname; rev = version; - sha256 = "1jhgsfspmry0qk7jkcryn4225j2azys3rm99agk6mh0jzwrvx4am"; + sha256 = "0arbhwaa2kx04jbrj6hk3vvn92wdk6lrr9zx36pr6p22r0yyxnj9"; }; propagatedBuildInputs = [ @@ -34,6 +44,16 @@ buildPythonPackage rec { requests requests_ntlm websockets + # Visualization/Jupyter inputs + ipykernel + ipyvuetify + ipywidgets + matplotlib + nbconvert + nbformat + plotly + pyperclip + seaborn ]; # websockets seems to be pinned b/c in v8+ it drops py3.5 support. Not an issue here (usually py3.7+, and disabled for older py3.6) @@ -43,18 +63,24 @@ buildPythonPackage rec { ''; # Most tests require credentials to run on IBMQ - checkInputs = [ pytestCheckHook vcrpy pproxy ]; + checkInputs = [ + pytestCheckHook + pproxy + vcrpy + ]; dontUseSetuptoolsCheck = true; + pythonImportsCheck = [ "qiskit.providers.ibmq" ]; - disabledTests = [ "test_old_api_url" "test_non_auth_url" "test_non_auth_url_with_hub" ]; # tests require internet connection - # skip tests that require IBMQ credentials, vs failing. - preCheck = '' - pushd /build/source # run pytest from /build vs $out - substituteInPlace test/decorators.py --replace "Exception('Could not locate valid credentials.')" "SkipTest('No IBMQ Credentials provided for tests')" - ''; - postCheck = '' - popd - ''; + # These disabled tests require internet connection, aren't skipped elsewhere + disabledTests = [ + "test_old_api_url" + "test_non_auth_url" + "test_non_auth_url_with_hub" + ]; + + # Skip tests that rely on internet access (mostly to IBM Quantum Experience cloud). + # Options defined in qiskit.terra.test.testing_options.py::get_test_options + QISKIT_TESTS = "skip_online"; meta = with lib; { description = "Qiskit provider for accessing the quantum devices and simulators at IBMQ"; diff --git a/pkgs/development/python-modules/qiskit/default.nix b/pkgs/development/python-modules/qiskit/default.nix index 89d02f7b80346..3b5c9e706dc45 100644 --- a/pkgs/development/python-modules/qiskit/default.nix +++ b/pkgs/development/python-modules/qiskit/default.nix @@ -1,65 +1,49 @@ -{ stdenv -, isPy3k +{ lib +, pythonOlder , buildPythonPackage -, fetchPypi -, numpy -, scipy -, sympy -, matplotlib -, networkx -, ply -, pillow -, cffi -, requests -, requests_ntlm -, IBMQuantumExperience -, jsonschema -, psutil -, cmake -, llvmPackages +, fetchFromGitHub + # Python Inputs +, qiskit-aer +, qiskit-aqua +, qiskit-ibmq-provider +, qiskit-ignis +, qiskit-terra + # Check Inputs +, pytestCheckHook }: buildPythonPackage rec { pname = "qiskit"; - version = "0.14.0"; + # NOTE: This version denotes a specific set of subpackages. See https://qiskit.org/documentation/release_notes.html#version-history + version = "0.17.0"; - disabled = !isPy3k; + disabled = pythonOlder "3.5"; - src = fetchPypi { - inherit pname version; - sha256 = "d086a21d0eee61bb12e1f2cd6148a7292005fd10584ca33d6c404dd5c53ba95f"; + src = fetchFromGitHub { + owner = "Qiskit"; + repo = "qiskit"; + rev = version; + sha256 = "1cnjcvvzklyq102fipqnwd5ham0sp0451gp7j79cwwsxzvji6pcc"; }; - buildInputs = [ cmake ] - ++ stdenv.lib.optional stdenv.isDarwin llvmPackages.openmp; - propagatedBuildInputs = [ - numpy - matplotlib - networkx - ply - scipy - sympy - pillow - cffi - requests - requests_ntlm - IBMQuantumExperience - jsonschema - psutil + qiskit-aer + qiskit-aqua + qiskit-ibmq-provider + qiskit-ignis + qiskit-terra ]; - # Pypi's tarball doesn't contain tests - doCheck = false; + checkInputs = [ pytestCheckHook ]; + dontUseSetuptoolsCheck = true; + # following doesn't work b/c they are distributed across different nix sitePackages dirs. Tested with pytest though. + # pythonImportsCheck = [ "qiskit" "qiskit.terra" "qiskit.ignis" "qiskit.aer" "qiskit.aqua" ]; meta = { - description = "Quantum Software Development Kit for writing quantum computing experiments, programs, and applications"; - homepage = https://github.com/QISKit/qiskit-terra; - license = stdenv.lib.licenses.asl20; - maintainers = with stdenv.lib.maintainers; [ - pandaman - ]; - # Needs to be updated and have its new dependencies added - broken = true; + description = "Software for developing quantum computing programs"; + homepage = "https://qiskit.org"; + downloadPage = "https://github.com/QISKit/qiskit/releases"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ drewrisinger pandaman ]; }; } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2cda95847e7a8..22a24877db5f2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4044,6 +4044,10 @@ in { ipython_genutils = callPackage ../development/python-modules/ipython_genutils { }; + ipyvue = callPackage ../development/python-modules/ipyvue { }; + + ipyvuetify = callPackage ../development/python-modules/ipyvuetify { }; + ipywidgets = callPackage ../development/python-modules/ipywidgets { }; ipaddr = callPackage ../development/python-modules/ipaddr { }; @@ -7130,8 +7134,6 @@ in { gast = callPackage ../development/python-modules/gast { }; - IBMQuantumExperience = callPackage ../development/python-modules/ibmquantumexperience { }; - ibis = callPackage ../development/python-modules/ibis { }; ibis-framework = callPackage ../development/python-modules/ibis-framework { };