{ lib, stdenv, attrs, autoray ? null, buildPythonPackage, duet, fetchFromGitHub, freezegun, matplotlib, networkx, numpy, opt-einsum, pandas, ply, pylatex ? null, pyquil ? null, pytest-asyncio, pytest-benchmark, pytestCheckHook, quimb ? null, requests, scipy, setuptools, sortedcontainers, sympy, tqdm, typing-extensions, withContribRequires ? false, }: buildPythonPackage (finalAttrs: { pname = "cirq-core"; version = "1.7.0"; pyproject = true; src = fetchFromGitHub { owner = "quantumlib"; repo = "cirq"; tag = "v${finalAttrs.version}"; hash = "sha256-OAyBYzMEFyVMlxN5UjrKk1x2rSayLyAIAC5h96JeqK0="; }; sourceRoot = "${finalAttrs.src.name}/${finalAttrs.pname}"; pythonRelaxDeps = [ "matplotlib" ]; build-system = [ setuptools ]; dependencies = [ attrs duet matplotlib networkx numpy pandas requests scipy sortedcontainers sympy tqdm typing-extensions ] ++ lib.optionals withContribRequires [ autoray opt-einsum ply pylatex pyquil quimb ]; nativeCheckInputs = [ freezegun pytest-asyncio pytest-benchmark pytestCheckHook ]; disabledTestPaths = lib.optionals (!withContribRequires) [ # Requires external (unpackaged) libraries, so untested "cirq/contrib/" # No need to test the version number "cirq/_version_test.py" ]; disabledTests = [ # Assertion error "test_parameterized_cphase" ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [ # https://github.com/quantumlib/Cirq/issues/5924 "test_prepare_two_qubit_state_using_sqrt_iswap" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # test_scalar_division[scalar9-terms9-terms_expected9] result differs in the final digit "test_scalar_division" ]; meta = { description = "Framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits"; homepage = "https://github.com/quantumlib/cirq"; changelog = "https://github.com/quantumlib/Cirq/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; }; })