python3Packages.cirq: 0.6.1 -> 0.8.0

This commit is contained in:
Drew Risinger 2020-05-11 19:00:17 -04:00 committed by Jon
parent fc03905902
commit ec7dbdb74c

View File

@ -3,7 +3,9 @@
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, google_api_python_client
, fetchpatch
, freezegun
, google_api_core
, matplotlib
, networkx
, numpy
@ -16,6 +18,7 @@
, typing-extensions
# test inputs
, pytestCheckHook
, pytest-asyncio
, pytest-benchmark
, ply
, pydot
@ -25,7 +28,7 @@
buildPythonPackage rec {
pname = "cirq";
version = "0.6.1";
version = "0.8.0";
disabled = pythonOlder "3.5";
@ -33,25 +36,29 @@ buildPythonPackage rec {
owner = "quantumlib";
repo = "cirq";
rev = "v${version}";
sha256 = "0lhr2dka7vpz9xd6akxphrcv2b3ni2cgjywpc1r7qpqa5mrq1q7f";
sha256 = "01nnv7r595sp60wvp7750lfdjwdsi4q0r4lmaj6li09zsdw0r4b3";
};
# Cirq 0.6 requires networkx==2.3 only for optional qiskit dependency/test, disable this to avoid networkx version conflicts. https://github.com/quantumlib/Cirq/issues/2368
patches = [
(fetchpatch {
# Fixes serialization issues on certain versions of protobuf & numpy.
name = "cirq-pr-2986-protobuf-bools.patch";
url = "https://github.com/quantumlib/Cirq/commit/78ddfb574c0f3936f713613bf4ba102163efb7b3.patch";
sha256 = "0hmad9ndsqf5ci7shvd924d2rv4k9pzx2r2cl1bm5w91arzz9m18";
})
];
# Cirq locks protobuf==3.8.0, but tested working with default pythonPackages.protobuf (3.7). This avoids overrides/pythonPackages.protobuf conflicts
postPatch = ''
substituteInPlace requirements.txt --replace "networkx==2.3" "networkx" \
--replace "protobuf==3.8.0" "protobuf"
# Fix sympy 1.5 test failures. Should be fixed in v0.7
substituteInPlace cirq/optimizers/eject_phased_paulis_test.py --replace "phase_exponent=0.125 + x / 8" "phase_exponent=0.125 + x * 0.125"
substituteInPlace cirq/contrib/quirk/cells/parse_test.py --replace "parse_formula('5t') == 5 * t" "parse_formula('5t') == 5.0 * t"
# Fix pandas >= 1.0 error, #2886
substituteInPlace cirq/experiments/t1_decay_experiment.py --replace "del tab.columns.name" 'tab.rename_axis(None, axis="columns", inplace=True)'
substituteInPlace requirements.txt \
--replace "networkx~=2.4" "networkx" \
--replace "protobuf==3.8.0" "protobuf" \
--replace "freezegun~=0.3.15" "freezegun"
'';
propagatedBuildInputs = [
google_api_python_client
freezegun
google_api_core
numpy
matplotlib
networkx
@ -69,19 +76,26 @@ buildPythonPackage rec {
dontUseSetuptoolsCheck = true;
checkInputs = [
pytestCheckHook
pytest-asyncio
pytest-benchmark
ply
pydot
pyyaml
pygraphviz
];
# TODO: enable op_serializer_test. Error is type checking, for some reason wants bool instead of numpy.bool_. Not sure if protobuf or internal issue
pytestFlagsArray = [
"--ignore=dev_tools" # Only needed when developing new code, which is out-of-scope
"--ignore=cirq/google/op_serializer_test.py" # investigating in https://github.com/quantumlib/Cirq/issues/2727
];
disabledTests = [
"test_serialize_sympy_constants" # fails due to small error in pi (~10e-7)
"test_convert_to_ion_gates" # fails due to rounding error, 0.75 != 0.750...2
# Newly disabled tests on cirq 0.8
# TODO: test & figure out why failing
"engine_job_test"
"test_health"
"test_run_delegation"
] ++ lib.optionals stdenv.isAarch64 [
# Seem to fail due to math issues on aarch64?
"expectation_from_wavefunction"