diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 8039bab5..ee28ed4e 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -31,7 +31,8 @@ jobs: pip install . - name: Poetry install package run: | - pip install poetry + # poetry 1.4.1 has problems with debugpy for some reason. + pip install poetry==1.4.0 poetry install - name: Linting run: | diff --git a/poetry.lock b/poetry.lock index 2dbe38a7..db9276ec 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. [[package]] name = "anyio" @@ -172,14 +172,14 @@ files = [ [[package]] name = "beautifulsoup4" -version = "4.11.2" +version = "4.12.0" description = "Screen-scraping library" category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.11.2-py3-none-any.whl", hash = "sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39"}, - {file = "beautifulsoup4-4.11.2.tar.gz", hash = "sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"}, + {file = "beautifulsoup4-4.12.0-py3-none-any.whl", hash = "sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591"}, + {file = "beautifulsoup4-4.12.0.tar.gz", hash = "sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234"}, ] [package.dependencies] @@ -514,21 +514,23 @@ files = [ [[package]] name = "comm" -version = "0.1.2" +version = "0.1.3" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "comm-0.1.2-py3-none-any.whl", hash = "sha256:9f3abf3515112fa7c55a42a6a5ab358735c9dccc8b5910a9d8e3ef5998130666"}, - {file = "comm-0.1.2.tar.gz", hash = "sha256:3e2f5826578e683999b93716285b3b1f344f157bf75fa9ce0a797564e742f062"}, + {file = "comm-0.1.3-py3-none-any.whl", hash = "sha256:16613c6211e20223f215fc6d3b266a247b6e2641bf4e0a3ad34cb1aff2aa3f37"}, + {file = "comm-0.1.3.tar.gz", hash = "sha256:a61efa9daffcfbe66fd643ba966f846a624e4e6d6767eda9cf6e993aadaab93e"}, ] [package.dependencies] traitlets = ">=5.3" [package.extras] +lint = ["black (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] test = ["pytest"] +typing = ["mypy (>=0.990)"] [[package]] name = "contourpy" @@ -607,35 +609,31 @@ test-no-images = ["pytest"] [[package]] name = "cryptography" -version = "39.0.2" +version = "40.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "cryptography-39.0.2-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:2725672bb53bb92dc7b4150d233cd4b8c59615cd8288d495eaa86db00d4e5c06"}, - {file = "cryptography-39.0.2-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:23df8ca3f24699167daf3e23e51f7ba7334d504af63a94af468f468b975b7dd7"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:eb40fe69cfc6f5cdab9a5ebd022131ba21453cf7b8a7fd3631f45bbf52bed612"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc0521cce2c1d541634b19f3ac661d7a64f9555135e9d8af3980965be717fd4a"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffd394c7896ed7821a6d13b24657c6a34b6e2650bd84ae063cf11ccffa4f1a97"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:e8a0772016feeb106efd28d4a328e77dc2edae84dfbac06061319fdb669ff828"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8f35c17bd4faed2bc7797d2a66cbb4f986242ce2e30340ab832e5d99ae60e011"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b49a88ff802e1993b7f749b1eeb31134f03c8d5c956e3c125c75558955cda536"}, - {file = "cryptography-39.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c682e736513db7d04349b4f6693690170f95aac449c56f97415c6980edef5"}, - {file = "cryptography-39.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:d7d84a512a59f4412ca8549b01f94be4161c94efc598bf09d027d67826beddc0"}, - {file = "cryptography-39.0.2-cp36-abi3-win32.whl", hash = "sha256:c43ac224aabcbf83a947eeb8b17eaf1547bce3767ee2d70093b461f31729a480"}, - {file = "cryptography-39.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:788b3921d763ee35dfdb04248d0e3de11e3ca8eb22e2e48fef880c42e1f3c8f9"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d15809e0dbdad486f4ad0979753518f47980020b7a34e9fc56e8be4f60702fac"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:50cadb9b2f961757e712a9737ef33d89b8190c3ea34d0fb6675e00edbe35d074"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:103e8f7155f3ce2ffa0049fe60169878d47a4364b277906386f8de21c9234aa1"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6236a9610c912b129610eb1a274bdc1350b5df834d124fa84729ebeaf7da42c3"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e944fe07b6f229f4c1a06a7ef906a19652bdd9fd54c761b0ff87e83ae7a30354"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:35d658536b0a4117c885728d1a7032bdc9a5974722ae298d6c533755a6ee3915"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:30b1d1bfd00f6fc80d11300a29f1d8ab2b8d9febb6ed4a38a76880ec564fae84"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e029b844c21116564b8b61216befabca4b500e6816fa9f0ba49527653cae2108"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fa507318e427169ade4e9eccef39e9011cdc19534f55ca2f36ec3f388c1f70f3"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8bc0008ef798231fac03fe7d26e82d601d15bd16f3afaad1c6113771566570f3"}, - {file = "cryptography-39.0.2.tar.gz", hash = "sha256:bc5b871e977c8ee5a1bbc42fa8d19bcc08baf0c51cbf1586b0e87a2694dde42f"}, + {file = "cryptography-40.0.1-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917"}, + {file = "cryptography-40.0.1-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797"}, + {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88"}, + {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554"}, + {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405"}, + {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356"}, + {file = "cryptography-40.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122"}, + {file = "cryptography-40.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2"}, + {file = "cryptography-40.0.1-cp36-abi3-win32.whl", hash = "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db"}, + {file = "cryptography-40.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160"}, + {file = "cryptography-40.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c"}, + {file = "cryptography-40.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4"}, + {file = "cryptography-40.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a"}, + {file = "cryptography-40.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94"}, + {file = "cryptography-40.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c"}, + {file = "cryptography-40.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41"}, + {file = "cryptography-40.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778"}, + {file = "cryptography-40.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c"}, + {file = "cryptography-40.0.1.tar.gz", hash = "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472"}, ] [package.dependencies] @@ -644,10 +642,10 @@ cffi = ">=1.12" [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -pep8test = ["black", "check-manifest", "mypy", "ruff", "types-pytz", "types-requests"] +pep8test = ["black", "check-manifest", "mypy", "ruff"] sdist = ["setuptools-rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-shard (>=0.1.2)", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-shard (>=0.1.2)", "pytest-subtests", "pytest-xdist"] test-randomorder = ["pytest-randomly"] tox = ["tox"] @@ -937,14 +935,14 @@ pyflakes = ">=2.4.0,<2.5.0" [[package]] name = "fonttools" -version = "4.39.0" +version = "4.39.2" description = "Tools to manipulate font files" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.39.0-py3-none-any.whl", hash = "sha256:f5e764e1fd6ad54dfc201ff32af0ba111bcfbe0d05b24540af74c63db4ed6390"}, - {file = "fonttools-4.39.0.zip", hash = "sha256:909c104558835eac27faeb56be5a4c32694192dca123d073bf746ce9254054af"}, + {file = "fonttools-4.39.2-py3-none-any.whl", hash = "sha256:85245aa2fd4cf502a643c9a9a2b5a393703e150a6eaacc3e0e84bb448053f061"}, + {file = "fonttools-4.39.2.zip", hash = "sha256:e2d9f10337c9e3b17f9bce17a60a16a885a7d23b59b7f45ce07ea643e5580439"}, ] [package.extras] @@ -1000,14 +998,14 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] [[package]] name = "google-auth" -version = "2.16.2" +version = "2.16.3" description = "Google Authentication Library" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ - {file = "google-auth-2.16.2.tar.gz", hash = "sha256:07e14f34ec288e3f33e00e2e3cc40c8942aa5d4ceac06256a28cd8e786591420"}, - {file = "google_auth-2.16.2-py2.py3-none-any.whl", hash = "sha256:2fef3cf94876d1a0e204afece58bb4d83fb57228aaa366c64045039fda6770a2"}, + {file = "google-auth-2.16.3.tar.gz", hash = "sha256:611779ce33a3aee265b94b74d4bb8c188f33010f5814761250a0ebbde94cc745"}, + {file = "google_auth-2.16.3-py2.py3-none-any.whl", hash = "sha256:4dfcfd8ecd1cf03ddc97fddfb3b1f2973ea4f3f664aa0d8cfaf582ef9f0c60e7"}, ] [package.dependencies] @@ -1025,14 +1023,14 @@ requests = ["requests (>=2.20.0,<3.0.0dev)"] [[package]] name = "googleapis-common-protos" -version = "1.58.0" +version = "1.59.0" description = "Common protobufs used in Google APIs" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.58.0.tar.gz", hash = "sha256:c727251ec025947d545184ba17e3578840fc3a24a0516a020479edab660457df"}, - {file = "googleapis_common_protos-1.58.0-py2.py3-none-any.whl", hash = "sha256:ca3befcd4580dab6ad49356b46bf165bb68ff4b32389f028f1abd7c10ab9519a"}, + {file = "googleapis-common-protos-1.59.0.tar.gz", hash = "sha256:4168fcb568a826a52f23510412da405abd93f4d23ba544bb68d943b14ba3cb44"}, + {file = "googleapis_common_protos-1.59.0-py2.py3-none-any.whl", hash = "sha256:b287dc48449d1d41af0c69f4ea26242b5ae4c3d7249a38b0984c86a4caffff1f"}, ] [package.dependencies] @@ -1168,14 +1166,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.0.0" +version = "6.1.0" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, - {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, + {file = "importlib_metadata-6.1.0-py3-none-any.whl", hash = "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09"}, + {file = "importlib_metadata-6.1.0.tar.gz", hash = "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20"}, ] [package.dependencies] @@ -1219,14 +1217,14 @@ files = [ [[package]] name = "ipykernel" -version = "6.21.3" +version = "6.22.0" description = "IPython Kernel for Jupyter" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.21.3-py3-none-any.whl", hash = "sha256:24ebd9715e317c185e37156ab3a87382410185230dde7aeffce389d6c7d4428a"}, - {file = "ipykernel-6.21.3.tar.gz", hash = "sha256:c8ff581905d70e7299bc1473a2f7c113bec1744fb3746d58e5b4b93bd8ee7001"}, + {file = "ipykernel-6.22.0-py3-none-any.whl", hash = "sha256:1ae6047c1277508933078163721bbb479c3e7292778a04b4bacf0874550977d6"}, + {file = "ipykernel-6.22.0.tar.gz", hash = "sha256:302558b81f1bc22dc259fb2a0c5c7cf2f4c0bdb21b50484348f7bafe7fb71421"}, ] [package.dependencies] @@ -1440,14 +1438,14 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jupyter-client" -version = "8.0.3" +version = "8.1.0" description = "Jupyter protocol implementation and client libraries" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.0.3-py3-none-any.whl", hash = "sha256:be48ac6bd659cbbddb7a674cf06b3b8afbf53f228253cf58bde604c03bd487b0"}, - {file = "jupyter_client-8.0.3.tar.gz", hash = "sha256:ed65498bea6d876ef9d8da3e0db3dd33c5d129f5b2645f56ae03993782966bd0"}, + {file = "jupyter_client-8.1.0-py3-none-any.whl", hash = "sha256:d5b8e739d7816944be50f81121a109788a3d92732ecf1ad1e4dadebc948818fe"}, + {file = "jupyter_client-8.1.0.tar.gz", hash = "sha256:3fbab64100a0dcac7701b1e0f1a4412f1ccb45546ff2ad9bc4fcbe4e19804811"}, ] [package.dependencies] @@ -1464,19 +1462,19 @@ test = ["codecov", "coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-co [[package]] name = "jupyter-core" -version = "5.2.0" +version = "5.3.0" description = "Jupyter core package. A base package on which Jupyter projects rely." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, - {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, + {file = "jupyter_core-5.3.0-py3-none-any.whl", hash = "sha256:d4201af84559bc8c70cead287e1ab94aeef3c512848dde077b7684b54d67730d"}, + {file = "jupyter_core-5.3.0.tar.gz", hash = "sha256:6db75be0c83edbf1b7c9f91ec266a9a24ef945da630f3120e1a0046dc13713fc"}, ] [package.dependencies] platformdirs = ">=2.5" -pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = ">=5.3" [package.extras] @@ -1510,14 +1508,14 @@ test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>= [[package]] name = "jupyter-server" -version = "2.4.0" +version = "2.5.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.4.0-py3-none-any.whl", hash = "sha256:cc22792281bfb0131a728414f28ae74883b44ad6d009971aa975cae9bcc650de"}, - {file = "jupyter_server-2.4.0.tar.gz", hash = "sha256:f31f0ba2c3c44f07143bfa03fb07dd0253f857eb63f0c26f2fea955f04a49765"}, + {file = "jupyter_server-2.5.0-py3-none-any.whl", hash = "sha256:e6bc1e9e96d7c55b9ce9699ff6cb9a910581fe7349e27c40389acb67632e24c0"}, + {file = "jupyter_server-2.5.0.tar.gz", hash = "sha256:9fde612791f716fd34d610cd939704a9639643744751ba66e7ee8fdc9cead07e"}, ] [package.dependencies] @@ -1578,14 +1576,14 @@ files = [ [[package]] name = "jupyterlab-widgets" -version = "1.1.2" +version = "1.1.3" description = "A JupyterLab extension." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "jupyterlab_widgets-1.1.2-py3-none-any.whl", hash = "sha256:e7562e9d4ecb282f36f69fa4f1d0b23bda12db306b7aa981d47ba2a532e2ebe9"}, - {file = "jupyterlab_widgets-1.1.2.tar.gz", hash = "sha256:e1cc529afd7d7d7bcce251a591ca32a7d3f6b05d326b9b7a8afa577d2639e29c"}, + {file = "jupyterlab_widgets-1.1.3-py3-none-any.whl", hash = "sha256:93f59c2f848ebdb3c87195c18bc7360eddbc05ddb17f676ea1d8bfba9229b1f5"}, + {file = "jupyterlab_widgets-1.1.3.tar.gz", hash = "sha256:5285a4316e13f9a6512cb80a0cfec5aafa2c336097ae077a07a60c145f2154fc"}, ] [[package]] @@ -1996,14 +1994,14 @@ webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.7.3" +version = "5.8.0" description = "The Jupyter Notebook format" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "nbformat-5.7.3-py3-none-any.whl", hash = "sha256:22a98a6516ca216002b0a34591af5bcb8072ca6c63910baffc901cfa07fefbf0"}, - {file = "nbformat-5.7.3.tar.gz", hash = "sha256:4b021fca24d3a747bf4e626694033d792d594705829e5e35b14ee3369f9f6477"}, + {file = "nbformat-5.8.0-py3-none-any.whl", hash = "sha256:d910082bd3e0bffcf07eabf3683ed7dda0727a326c446eeb2922abe102e65162"}, + {file = "nbformat-5.8.0.tar.gz", hash = "sha256:46dac64c781f1c34dfd8acba16547024110348f9fc7eab0f31981c2a3dc48d1f"}, ] [package.dependencies] @@ -2487,19 +2485,19 @@ files = [ [[package]] name = "platformdirs" -version = "3.1.1" +version = "3.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, - {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, + {file = "platformdirs-3.2.0-py3-none-any.whl", hash = "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e"}, + {file = "platformdirs-3.2.0.tar.gz", hash = "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08"}, ] [package.extras] docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -2922,38 +2920,38 @@ files = [ [[package]] name = "pytz" -version = "2022.7.1" +version = "2023.2" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, - {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, + {file = "pytz-2023.2-py2.py3-none-any.whl", hash = "sha256:8a8baaf1e237175b02f5c751eea67168043a749c843989e2b3015aa1ad9db68b"}, + {file = "pytz-2023.2.tar.gz", hash = "sha256:a27dcf612c05d2ebde626f7d506555f10dfc815b3eddccfaadfc7d99b11c9a07"}, ] [[package]] name = "pywin32" -version = "305" +version = "306" description = "Python for Window Extensions" category = "main" optional = false python-versions = "*" files = [ - {file = "pywin32-305-cp310-cp310-win32.whl", hash = "sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116"}, - {file = "pywin32-305-cp310-cp310-win_amd64.whl", hash = "sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478"}, - {file = "pywin32-305-cp310-cp310-win_arm64.whl", hash = "sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4"}, - {file = "pywin32-305-cp311-cp311-win32.whl", hash = "sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2"}, - {file = "pywin32-305-cp311-cp311-win_amd64.whl", hash = "sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990"}, - {file = "pywin32-305-cp311-cp311-win_arm64.whl", hash = "sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db"}, - {file = "pywin32-305-cp36-cp36m-win32.whl", hash = "sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863"}, - {file = "pywin32-305-cp36-cp36m-win_amd64.whl", hash = "sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1"}, - {file = "pywin32-305-cp37-cp37m-win32.whl", hash = "sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496"}, - {file = "pywin32-305-cp37-cp37m-win_amd64.whl", hash = "sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d"}, - {file = "pywin32-305-cp38-cp38-win32.whl", hash = "sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504"}, - {file = "pywin32-305-cp38-cp38-win_amd64.whl", hash = "sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7"}, - {file = "pywin32-305-cp39-cp39-win32.whl", hash = "sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918"}, - {file = "pywin32-305-cp39-cp39-win_amd64.whl", hash = "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271"}, + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, ] [[package]] @@ -3024,89 +3022,89 @@ files = [ [[package]] name = "pyzmq" -version = "25.0.1" +version = "25.0.2" description = "Python bindings for 0MQ" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:94f65e13e6df035b0ae90d49adfe7891aa4e7bdeaa65265729fecc04ab3eb0fe"}, - {file = "pyzmq-25.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f0399450d970990705ce47ed65f5efed3e4627dfc80628c3798100e7b72e023b"}, - {file = "pyzmq-25.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f29709b0431668a967d7ff0394b00a865e7b7dde827ee0a47938b705b7c4aec3"}, - {file = "pyzmq-25.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4fee9420b34c0ab426f105926a701a3d73f878fe77f07a1b92e0b78d1e2c795c"}, - {file = "pyzmq-25.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57be375c6bc66b0f685cd298e5c1c3d7ee34a254145b8087aed6e25db372b0f3"}, - {file = "pyzmq-25.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a3309b2c5a5be3d48c9ade77b340361764449aa22854ac65935b1e6c0cdabe2c"}, - {file = "pyzmq-25.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7574d24579e83ee8c5d3b14769e7ba895161c43a601e911dd89d449e545e00ad"}, - {file = "pyzmq-25.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:041d617091258133e602919b28fdce4d3e2f8aedcd1e8b34c599653bc288d59e"}, - {file = "pyzmq-25.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7897ba8c3fedc6b3023bad676ceb69dbf90c077ff18ae3133ba43db47417cc72"}, - {file = "pyzmq-25.0.1-cp310-cp310-win32.whl", hash = "sha256:c462f70dadbd4649e572ca7cd1e7cf3305a8c2afc53b84214c0a7c0c3af8a657"}, - {file = "pyzmq-25.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e3a721710992cf0e213bbb7be48fb0f32202e8d01f556c196c870373bb9ad4f4"}, - {file = "pyzmq-25.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:b0a0fcf56279b9f3acc9b36a83feb7640c51b0db444b6870e4406d002be1d514"}, - {file = "pyzmq-25.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:95aff52fc847ea5755d2370f86e379ba2ed6eb67a0a6f90f0e8e99c553693b81"}, - {file = "pyzmq-25.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b55366e6c11e1ef7403d072b9867b62cf63eebd31dd038ef65bc8d65572854f6"}, - {file = "pyzmq-25.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64a2bc72bcad705ee42a8fe877478ddadb7e260e806562833d3d814125e28a44"}, - {file = "pyzmq-25.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca66aa24422d7f324acd5cb7fc7df616eb6f0205e059393fb108702e33e90c7"}, - {file = "pyzmq-25.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:58d5dfec2e2befd09b04c4683b3c984d2203cf6e054d0f9786be3826737ad612"}, - {file = "pyzmq-25.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3549292d65987e422e2c9f105b1485448381f489d8a6b6b040fc8b8f497bd578"}, - {file = "pyzmq-25.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5b1ca8b0df50d1ac88857ffe9ebd1347e0a5bb5f6e1d99940fdd7df0ffdefb49"}, - {file = "pyzmq-25.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1a107e89cdcf799060ba4fa85fd3c942e19df7b24eb2600618b2406cc73c18e"}, - {file = "pyzmq-25.0.1-cp311-cp311-win32.whl", hash = "sha256:0f22ba4e9041549a5a3f5a545169dda52fa0aa7b5ef46b336cbe6679c4c3c134"}, - {file = "pyzmq-25.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:0644c0d5c73e4bfeee8148f638ab16ad783df1c4d6c2f968552a26a43fb002a1"}, - {file = "pyzmq-25.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c5eb4b17d73b1fc208a4faa6b5918983ccc961770aa37741891f61db302dae4e"}, - {file = "pyzmq-25.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:649dd55948144a108041397f07c1299086ce1c85c2e166831db3a33dac1d0c7f"}, - {file = "pyzmq-25.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c99fd8d3efc138d6a7fb1e822133f62bb18ffec66dc6d398dcb2ac2ab8eb2cb0"}, - {file = "pyzmq-25.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d72d69d4bb37c05a446d10bc40b391cf8fb7572654fb73fa69e7d2a395197e65"}, - {file = "pyzmq-25.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:036dbf8373aed4ccf56d58c561b23601b8f33919ec1093d8c77b37ac1259702d"}, - {file = "pyzmq-25.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:861c37649c75a2ecfc2034a32b9d5ca744e1e0cddcbf65afbd8027cf7d9755be"}, - {file = "pyzmq-25.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:92f04d63aecbb71d41f7db5f988167ef429f96d8197fd46684688cdb513e8a2e"}, - {file = "pyzmq-25.0.1-cp36-cp36m-win32.whl", hash = "sha256:866a4e918f1f4b2f83e9982b817df257910e3e50e456ffa74f141a10adcd11d1"}, - {file = "pyzmq-25.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:ec29c880b82cd38a63810a93b77e13f167e05732049101947772eed9ae805097"}, - {file = "pyzmq-25.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0241a334e39aa74e4ba0ae5f9e29521f1b48b8d56bf707f25f322c04eb423e99"}, - {file = "pyzmq-25.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3b7032f55b1ed2cd8c349a89e467dca2338b7765fab82cb64c3504e49adaf51"}, - {file = "pyzmq-25.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:960f98f562ee6a50ecf283bc62479d00f5ee10e9068a21683b9e961cd87c9261"}, - {file = "pyzmq-25.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:835da498b71570d56e5526de4d5b36fa10dd9b8a82e2c405f963afeb51ff5bdc"}, - {file = "pyzmq-25.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:21de2ef6099fa8d6a3c2dc15aaca58e9f9ffdcc7b82a246590aa9564815699d9"}, - {file = "pyzmq-25.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e448a5a294958e915a7e1b664e6fbfcd3814989d381fb068673317f6f3ea3f8"}, - {file = "pyzmq-25.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:40d909bdc8a2d64ad260925154712602ee6a0425ae0b08bce78a19adfdc2f05b"}, - {file = "pyzmq-25.0.1-cp37-cp37m-win32.whl", hash = "sha256:6ff37f2b818df25c887fd40bb434569db7ff66b35f5dfff6f40cc476aee92e3f"}, - {file = "pyzmq-25.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f66ee27a0221771bbaa2cce456e8ca890569c3d18b08b955eb6420c12516537c"}, - {file = "pyzmq-25.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:1003bbae89435eadec03b4fa3bb6516dd1529fb09ae5704284f7400cc77009ba"}, - {file = "pyzmq-25.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dde7a65a8bfa88aa1721add504320f8344272542291ce4e7c77993fa32901567"}, - {file = "pyzmq-25.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20b6155429d3b57e9e7bd11f1680985ef8b5b0868f1a64073fb8c01326c7c80c"}, - {file = "pyzmq-25.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e37a764cbf91c1ed9a02e4fede79a414284aca2a0b7d92d82a3c7b82d678ec2d"}, - {file = "pyzmq-25.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa56a362066b3a853a64d35693a08046f640961efcc0e7643768916403e72e70"}, - {file = "pyzmq-25.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c4bdf1241886d39d816535d3ef9fc325bbf02470c9fd5f2cb62706eeb834f7f2"}, - {file = "pyzmq-25.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:446acbac24427ef42bff61a807ddcad8d03df78fb976184a4d7d6f4b1e7d8a67"}, - {file = "pyzmq-25.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b39847501d229e5fab155d88a565edfb182cdd3f7046f15a7f2df9c77cdc422d"}, - {file = "pyzmq-25.0.1-cp38-cp38-win32.whl", hash = "sha256:cba6b81b653d789d76e438c2e77b49f610b23e84b3bb43b99100f08a0a5d637b"}, - {file = "pyzmq-25.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:6eca6b90c4fb290efd27582780b5eaf048887a32b2c5fcd6330819192cb07b38"}, - {file = "pyzmq-25.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:58207a6709e53b723105bac6bb3c6795ee134f7e71351f39c09d52ac235c6b0d"}, - {file = "pyzmq-25.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c62084f37682e7ee4064e8310078be4f6f7687bf528ae5761e2ba7216c5b8949"}, - {file = "pyzmq-25.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9c44e9f04f8ed99c6f2e9e49f29d400d7557dd9e9e3f64e1e8a595aedc4258a2"}, - {file = "pyzmq-25.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c635d1c40d341835066931a018e378428dfbe0347ed4bb45a6b57f7d8c34196e"}, - {file = "pyzmq-25.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef93b5574c9ff36b4be376555efd369bd55b99bcc7be72f23bd38102dd9392b"}, - {file = "pyzmq-25.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44bc81099ab33388f6c061c1b194307d877428cb2b18282d0385584d5c73ed72"}, - {file = "pyzmq-25.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6d988844ed6caa21b0076b64671e83a136d93c57f1ae5a72b915661af55d313b"}, - {file = "pyzmq-25.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9d5eb6e88ae8a8734f239ffe1ed90559a426cf5b859b8ee66e0cd43fc5daf5c9"}, - {file = "pyzmq-25.0.1-cp39-cp39-win32.whl", hash = "sha256:f6b45db9de4c8adbf5fda58e827a32315d282cfb01e54dc74e7c7ccc0988c010"}, - {file = "pyzmq-25.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:47eeb94b78aa442568b85ad28f85bd37a9c3c34d052cbf8ebf8622c45f23a9cd"}, - {file = "pyzmq-25.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0ed7475f3adf0c7750d75740b3267947b501a33f4625ceae709fda2e75ec9ed7"}, - {file = "pyzmq-25.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6d09c22ed4d0afcc662d17c2429a03fc1fae7fe7e3bc1f413e744bccfeaabdc3"}, - {file = "pyzmq-25.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:703ec5f5a8369c09d8f3eb626358bdb590a2b1375bcce8b7da01b3a03f8b8668"}, - {file = "pyzmq-25.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aea31cc0d1f6c3fb4685db08b4c771545cf3fed3c4b4c8942c0a4e97042ec8"}, - {file = "pyzmq-25.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b1c03b942557bb366fd3dc377a15763d5d688de1328228136c75e50f968333cc"}, - {file = "pyzmq-25.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4e8a5ced9d92837f52ccdae6351c627b5012669727bc3eede2dc0f581eca1d0e"}, - {file = "pyzmq-25.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d78f840d88244272fb7252e47522b1179833aff7ec64583bda3d21259c9c2c20"}, - {file = "pyzmq-25.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c3f78fa80780e24d294f9421123cb3bd3b68677953c53da85273a22d1c983298"}, - {file = "pyzmq-25.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f6de4305e02560111a5d4555758faa85d44a5bff70cccff58dbf30c81a079f0"}, - {file = "pyzmq-25.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:34a1b1a8ce9b20e01aba71b9279d9b1d4e5980a6a4e42092180e16628a444ca1"}, - {file = "pyzmq-25.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:625759a0112af7c3fb560de5724d749729f00b901f7625d1a3f3fb38897544b1"}, - {file = "pyzmq-25.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cff159b21438c24476a49865f3d5700c9cc5833600661bc0e672decec2ff357"}, - {file = "pyzmq-25.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cc47652d990de9ef967c494c526d73920ef064fef0444355a7cebec6fc50542"}, - {file = "pyzmq-25.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44db5162a6881f7d740dec65917f38f9bfbc5ad9a10e06d7d5deebb27eb63939"}, - {file = "pyzmq-25.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f38bf2c60a3f7b87cf5177043eb7a331a4f53bc9305a2452decbd42ad0c98741"}, - {file = "pyzmq-25.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1cf4becd15669bc62a41c1b1bb742e22ac25965134e4254cde82a4dc2554b1b"}, - {file = "pyzmq-25.0.1.tar.gz", hash = "sha256:44a24f7ce44e70d20e2a4c9ba5af70b4611df7a4b920eed2c8e0bdd5a5af225f"}, + {file = "pyzmq-25.0.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ac178e666c097c8d3deb5097b58cd1316092fc43e8ef5b5fdb259b51da7e7315"}, + {file = "pyzmq-25.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:659e62e1cbb063151c52f5b01a38e1df6b54feccfa3e2509d44c35ca6d7962ee"}, + {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8280ada89010735a12b968ec3ea9a468ac2e04fddcc1cede59cb7f5178783b9c"}, + {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9b5eeb5278a8a636bb0abdd9ff5076bcbb836cd2302565df53ff1fa7d106d54"}, + {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a2e5fe42dfe6b73ca120b97ac9f34bfa8414feb15e00e37415dbd51cf227ef6"}, + {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:827bf60e749e78acb408a6c5af6688efbc9993e44ecc792b036ec2f4b4acf485"}, + {file = "pyzmq-25.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7b504ae43d37e282301da586529e2ded8b36d4ee2cd5e6db4386724ddeaa6bbc"}, + {file = "pyzmq-25.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb1f69a0a2a2b1aae8412979dd6293cc6bcddd4439bf07e4758d864ddb112354"}, + {file = "pyzmq-25.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b9c9cc965cdf28381e36da525dcb89fc1571d9c54800fdcd73e3f73a2fc29bd"}, + {file = "pyzmq-25.0.2-cp310-cp310-win32.whl", hash = "sha256:24abbfdbb75ac5039205e72d6c75f10fc39d925f2df8ff21ebc74179488ebfca"}, + {file = "pyzmq-25.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6a821a506822fac55d2df2085a52530f68ab15ceed12d63539adc32bd4410f6e"}, + {file = "pyzmq-25.0.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:9af0bb0277e92f41af35e991c242c9c71920169d6aa53ade7e444f338f4c8128"}, + {file = "pyzmq-25.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:54a96cf77684a3a537b76acfa7237b1e79a8f8d14e7f00e0171a94b346c5293e"}, + {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88649b19ede1cab03b96b66c364cbbf17c953615cdbc844f7f6e5f14c5e5261c"}, + {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:715cff7644a80a7795953c11b067a75f16eb9fc695a5a53316891ebee7f3c9d5"}, + {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:312b3f0f066b4f1d17383aae509bacf833ccaf591184a1f3c7a1661c085063ae"}, + {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d488c5c8630f7e782e800869f82744c3aca4aca62c63232e5d8c490d3d66956a"}, + {file = "pyzmq-25.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:38d9f78d69bcdeec0c11e0feb3bc70f36f9b8c44fc06e5d06d91dc0a21b453c7"}, + {file = "pyzmq-25.0.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3059a6a534c910e1d5d068df42f60d434f79e6cc6285aa469b384fa921f78cf8"}, + {file = "pyzmq-25.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6526d097b75192f228c09d48420854d53dfbc7abbb41b0e26f363ccb26fbc177"}, + {file = "pyzmq-25.0.2-cp311-cp311-win32.whl", hash = "sha256:5c5fbb229e40a89a2fe73d0c1181916f31e30f253cb2d6d91bea7927c2e18413"}, + {file = "pyzmq-25.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:ed15e3a2c3c2398e6ae5ce86d6a31b452dfd6ad4cd5d312596b30929c4b6e182"}, + {file = "pyzmq-25.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:032f5c8483c85bf9c9ca0593a11c7c749d734ce68d435e38c3f72e759b98b3c9"}, + {file = "pyzmq-25.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:374b55516393bfd4d7a7daa6c3b36d6dd6a31ff9d2adad0838cd6a203125e714"}, + {file = "pyzmq-25.0.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:08bfcc21b5997a9be4fefa405341320d8e7f19b4d684fb9c0580255c5bd6d695"}, + {file = "pyzmq-25.0.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1a843d26a8da1b752c74bc019c7b20e6791ee813cd6877449e6a1415589d22ff"}, + {file = "pyzmq-25.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:b48616a09d7df9dbae2f45a0256eee7b794b903ddc6d8657a9948669b345f220"}, + {file = "pyzmq-25.0.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d4427b4a136e3b7f85516c76dd2e0756c22eec4026afb76ca1397152b0ca8145"}, + {file = "pyzmq-25.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:26b0358e8933990502f4513c991c9935b6c06af01787a36d133b7c39b1df37fa"}, + {file = "pyzmq-25.0.2-cp36-cp36m-win32.whl", hash = "sha256:c8fedc3ccd62c6b77dfe6f43802057a803a411ee96f14e946f4a76ec4ed0e117"}, + {file = "pyzmq-25.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:2da6813b7995b6b1d1307329c73d3e3be2fd2d78e19acfc4eff2e27262732388"}, + {file = "pyzmq-25.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a35960c8b2f63e4ef67fd6731851030df68e4b617a6715dd11b4b10312d19fef"}, + {file = "pyzmq-25.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef2a0b880ab40aca5a878933376cb6c1ec483fba72f7f34e015c0f675c90b20"}, + {file = "pyzmq-25.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85762712b74c7bd18e340c3639d1bf2f23735a998d63f46bb6584d904b5e401d"}, + {file = "pyzmq-25.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:64812f29d6eee565e129ca14b0c785744bfff679a4727137484101b34602d1a7"}, + {file = "pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:510d8e55b3a7cd13f8d3e9121edf0a8730b87d925d25298bace29a7e7bc82810"}, + {file = "pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b164cc3c8acb3d102e311f2eb6f3c305865ecb377e56adc015cb51f721f1dda6"}, + {file = "pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:28fdb9224a258134784a9cf009b59265a9dde79582fb750d4e88a6bcbc6fa3dc"}, + {file = "pyzmq-25.0.2-cp37-cp37m-win32.whl", hash = "sha256:dd771a440effa1c36d3523bc6ba4e54ff5d2e54b4adcc1e060d8f3ca3721d228"}, + {file = "pyzmq-25.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:9bdc40efb679b9dcc39c06d25629e55581e4c4f7870a5e88db4f1c51ce25e20d"}, + {file = "pyzmq-25.0.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:1f82906a2d8e4ee310f30487b165e7cc8ed09c009e4502da67178b03083c4ce0"}, + {file = "pyzmq-25.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:21ec0bf4831988af43c8d66ba3ccd81af2c5e793e1bf6790eb2d50e27b3c570a"}, + {file = "pyzmq-25.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbce982a17c88d2312ec2cf7673985d444f1beaac6e8189424e0a0e0448dbb3"}, + {file = "pyzmq-25.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9e1d2f2d86fc75ed7f8845a992c5f6f1ab5db99747fb0d78b5e4046d041164d2"}, + {file = "pyzmq-25.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e92ff20ad5d13266bc999a29ed29a3b5b101c21fdf4b2cf420c09db9fb690e"}, + {file = "pyzmq-25.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edbbf06cc2719889470a8d2bf5072bb00f423e12de0eb9ffec946c2c9748e149"}, + {file = "pyzmq-25.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77942243ff4d14d90c11b2afd8ee6c039b45a0be4e53fb6fa7f5e4fd0b59da39"}, + {file = "pyzmq-25.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ab046e9cb902d1f62c9cc0eca055b1d11108bdc271caf7c2171487298f229b56"}, + {file = "pyzmq-25.0.2-cp38-cp38-win32.whl", hash = "sha256:ad761cfbe477236802a7ab2c080d268c95e784fe30cafa7e055aacd1ca877eb0"}, + {file = "pyzmq-25.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8560756318ec7c4c49d2c341012167e704b5a46d9034905853c3d1ade4f55bee"}, + {file = "pyzmq-25.0.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:ab2c056ac503f25a63f6c8c6771373e2a711b98b304614151dfb552d3d6c81f6"}, + {file = "pyzmq-25.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cca8524b61c0eaaa3505382dc9b9a3bc8165f1d6c010fdd1452c224225a26689"}, + {file = "pyzmq-25.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb9f7eae02d3ac42fbedad30006b7407c984a0eb4189a1322241a20944d61e5"}, + {file = "pyzmq-25.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5eaeae038c68748082137d6896d5c4db7927e9349237ded08ee1bbd94f7361c9"}, + {file = "pyzmq-25.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a31992a8f8d51663ebf79df0df6a04ffb905063083d682d4380ab8d2c67257c"}, + {file = "pyzmq-25.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6a979e59d2184a0c8f2ede4b0810cbdd86b64d99d9cc8a023929e40dce7c86cc"}, + {file = "pyzmq-25.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1f124cb73f1aa6654d31b183810febc8505fd0c597afa127c4f40076be4574e0"}, + {file = "pyzmq-25.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:65c19a63b4a83ae45d62178b70223adeee5f12f3032726b897431b6553aa25af"}, + {file = "pyzmq-25.0.2-cp39-cp39-win32.whl", hash = "sha256:83d822e8687621bed87404afc1c03d83fa2ce39733d54c2fd52d8829edb8a7ff"}, + {file = "pyzmq-25.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:24683285cc6b7bf18ad37d75b9db0e0fefe58404e7001f1d82bf9e721806daa7"}, + {file = "pyzmq-25.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a4b4261eb8f9ed71f63b9eb0198dd7c934aa3b3972dac586d0ef502ba9ab08b"}, + {file = "pyzmq-25.0.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:62ec8d979f56c0053a92b2b6a10ff54b9ec8a4f187db2b6ec31ee3dd6d3ca6e2"}, + {file = "pyzmq-25.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:affec1470351178e892121b3414c8ef7803269f207bf9bef85f9a6dd11cde264"}, + {file = "pyzmq-25.0.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffc71111433bd6ec8607a37b9211f4ef42e3d3b271c6d76c813669834764b248"}, + {file = "pyzmq-25.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6fadc60970714d86eff27821f8fb01f8328dd36bebd496b0564a500fe4a9e354"}, + {file = "pyzmq-25.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:269968f2a76c0513490aeb3ba0dc3c77b7c7a11daa894f9d1da88d4a0db09835"}, + {file = "pyzmq-25.0.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f7c8b8368e84381ae7c57f1f5283b029c888504aaf4949c32e6e6fb256ec9bf0"}, + {file = "pyzmq-25.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25e6873a70ad5aa31e4a7c41e5e8c709296edef4a92313e1cd5fc87bbd1874e2"}, + {file = "pyzmq-25.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b733076ff46e7db5504c5e7284f04a9852c63214c74688bdb6135808531755a3"}, + {file = "pyzmq-25.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a6f6ae12478fdc26a6d5fdb21f806b08fa5403cd02fd312e4cb5f72df078f96f"}, + {file = "pyzmq-25.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:67da1c213fbd208906ab3470cfff1ee0048838365135a9bddc7b40b11e6d6c89"}, + {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531e36d9fcd66f18de27434a25b51d137eb546931033f392e85674c7a7cea853"}, + {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34a6fddd159ff38aa9497b2e342a559f142ab365576284bc8f77cb3ead1f79c5"}, + {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b491998ef886662c1f3d49ea2198055a9a536ddf7430b051b21054f2a5831800"}, + {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5d496815074e3e3d183fe2c7fcea2109ad67b74084c254481f87b64e04e9a471"}, + {file = "pyzmq-25.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:56a94ab1d12af982b55ca96c6853db6ac85505e820d9458ac76364c1998972f4"}, + {file = "pyzmq-25.0.2.tar.gz", hash = "sha256:6b8c1bbb70e868dc88801aa532cae6bd4e3b5233784692b786f17ad2962e5149"}, ] [package.dependencies] @@ -3674,52 +3672,50 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" [[package]] name = "symengine" -version = "0.9.2" +version = "0.10.0" description = "Python library providing wrappers to SymEngine" category = "main" optional = false python-versions = ">=3.7,<4" files = [ - {file = "symengine-0.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c57b542a88d88bf716f2ac15b928d37587030d5347d45aa3af18c741c07e04e2"}, - {file = "symengine-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:201a6c33a2c391d4b9350e9f171e05ca54011599bb9fa9cd188548f0a26d2f31"}, - {file = "symengine-0.9.2-cp310-cp310-manylinux2010_x86_64.whl", hash = "sha256:dee0df899abeb78c08fff6471f4d979dad7d3d235e00303c7a641da7b92b025b"}, - {file = "symengine-0.9.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:dfb3c764a52f2ade33c90c64baa14175103b6527773f2e23c961906159515725"}, - {file = "symengine-0.9.2-cp310-cp310-manylinux2014_ppc64le.whl", hash = "sha256:2ca84ce89c27788e9675fad31c8fa05317acd7ec7e034b562f3d3a6e72bf8004"}, - {file = "symengine-0.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:eaf3604c469af16c1aa9d8f4287295e616840d7d14eeaab13228dd11c5e5fe75"}, - {file = "symengine-0.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:78c116c6220baf3c0fa93858e965db44661455e5f8d34558fef649b7c7be5e57"}, - {file = "symengine-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:467621288f51f0315f5fc079e6919fad501faa99a5ed65c1f46197dc1be7fa47"}, - {file = "symengine-0.9.2-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1d6d92b02d2e72137d63520c4a2326ff4e1c1c24724160bd31e7f7370ad94185"}, - {file = "symengine-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:061e045b9fef170b1f11a6f1c9aa387ec44d60480988a0af91ed26c96fb9427b"}, - {file = "symengine-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:438b04f7089993caef00839a1e926f8b32cee77d7fb1f0e0d7cc69c351d16c08"}, - {file = "symengine-0.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:376f74c0885b2f041fc08c00b63aae1c6732804da7a591d658a82ba1b70f2167"}, - {file = "symengine-0.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4bd4e32bd3208477e5da0fa1c0a23f1f54c32bfc9d4fa25c433af03dfbb92342"}, - {file = "symengine-0.9.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:dd2b06fcb133bbbb41428a94c6c07f8f151a02c18deb26382b7e878a808971ba"}, - {file = "symengine-0.9.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:aa6e193701d244e49a141782cd87248c00d78cff398cd395d46db632bec41cf4"}, - {file = "symengine-0.9.2-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:eb4be488f1a8d9a04c813af342ab5c8cb69a7d0898df6619f67a4eafad722d2a"}, - {file = "symengine-0.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:e70728b93653c1787267e300d05ee696e067bc324d58ac0858d744c71a14e648"}, - {file = "symengine-0.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f6907a6b306d0b485d210557f99f1c2fbcba83aba88da5ec9b84a0a3f34165f8"}, - {file = "symengine-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:05608329bfb776de1390bb7981c074f866157792a7b4e2af60073b790e051520"}, - {file = "symengine-0.9.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:51d590cb488e7ff05e96896baa555f41feee0eec1cafb43756b46b966fb2eb57"}, - {file = "symengine-0.9.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:690f84811812ae5502c0852cad3a60dae9a9b45874f71caafe90b0bd3e6f887c"}, - {file = "symengine-0.9.2-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:a54aa2151b09ef4460d9142446d5404adb4c01ef8107d4060a7dc8673ca93cc4"}, - {file = "symengine-0.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:b97d6005c528a1935ad15c661f262e525f12dfb707ea30d2af32397ba534387b"}, - {file = "symengine-0.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fdea89508505882e2c7a802836810b552e7b79e73ff5daf5f8f4dda95b79be83"}, - {file = "symengine-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee122c716be397cf455f01e90a731636d9f6389179b207737e99b91d5e0baa8a"}, - {file = "symengine-0.9.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f709947e17c97e6ad18d6f4a2703b0360092d7193636f9a220a75b09ea262581"}, - {file = "symengine-0.9.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0a46099e3c1ed27dbeac28f1318b2da030170a001f3672d34a39dc2966d4a180"}, - {file = "symengine-0.9.2-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:614ac3807944c7ae3158f2a1600a31a3f6195b4b6805113f49352f52d2535082"}, - {file = "symengine-0.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:add5dd16568a82fbf7c8ad8f68776040ece19a8f02380121a65c6610b5849ec1"}, - {file = "symengine-0.9.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:516ce80e73de94e1952cdf8ecbb75c581c6512b61f05979b92d3ad09867663ed"}, - {file = "symengine-0.9.2-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:0698bc5a95784f791feae5c6afbf49c4ccc2ce64531e4db505a2c0d1276fd015"}, - {file = "symengine-0.9.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1bd97d07fb5b82965c60713407cc7f8145d62406185df812beb31150a3c29fd0"}, - {file = "symengine-0.9.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5040bf8d1fc34d958a83299dcc8a529e5f66fda416fe8f405466e10b0cd8e553"}, - {file = "symengine-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7670f0c305a404c70a757c1aa0d7a81dbd5693bd6a04345e470a7584f166d684"}, - {file = "symengine-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bdf6102e01e1f81eca818d1ff538b100fa9462f30aa050ca4bb3246cb4874aa"}, - {file = "symengine-0.9.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1c2157602dc8b2ff6bfe6e9fdba7d527e674ebbeb73de1eb4fe197b3ddf226bb"}, - {file = "symengine-0.9.2-pp39-pypy39_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6eeeb5adf713be620c80c9fc2c215fac51c971e2bd57982da60c6f791af63f96"}, - {file = "symengine-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ccaeba9637c16e7a6b6443dfba36de99e6020ff5a4ca76c1a1710d43d04db7"}, - {file = "symengine-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db8117e21bf73e0db144e060354cdbfb6b893e9125cf8fd43565e1546c186840"}, - {file = "symengine-0.9.2.tar.gz", hash = "sha256:0f7e45f5bba3fa844f7de7aa8d6640faaacb1075df76d8e4996e82b0ec6a4f62"}, + {file = "symengine-0.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef27fef138c364bd96fd16396a81249614d015a9afd98b7ac76b82fcb9b8331d"}, + {file = "symengine-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48b9c76225db65c93e6bce3fe9c65d6e8992e7cf837562818cfac276dfbd716e"}, + {file = "symengine-0.10.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a7605b88e68eb28fa66a0570a4a09ad0010788a0454ee2694c583a901c8e907"}, + {file = "symengine-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a661626b0dd438fbd9fc9c1329816f3ca2ac78cb015beeaef6ac6873d36baf58"}, + {file = "symengine-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7936e2a26606771967e0a8944c0dcf0120f3280db54b541b1c0334ceb2fd273"}, + {file = "symengine-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:3a9581e7122f66ac5d4e5ee28cf3a4316f1d441fa74fa822c9380c3d63bb81fc"}, + {file = "symengine-0.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f5699ebd5386d457caaf4b574aa09ed5fc8d9c01201b9fa7a67115ed3129e16e"}, + {file = "symengine-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:40c5bbe9fd3ee4e5c7be48c3721347871e29959af49ec76023364a6e8c676406"}, + {file = "symengine-0.10.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b83525d4ca358e60759f3d968d9eb141acc088a4c14516b444a6d530d8515429"}, + {file = "symengine-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6ff5576c51834eca41c0869d424461ac9168933800e95c09cdb740c4a935671"}, + {file = "symengine-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8136e347f011004d44a43eadfb2b1bc9d8f2c1a048bb474f62dd7a5ee8701511"}, + {file = "symengine-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:5805aac6ebc08057fe86331206428da3d7e78b91872538b84781fc3766514c34"}, + {file = "symengine-0.10.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6559b1d8ac4c3991a0f6a22ceb1eb85bf3fe346689f2c620b693a5bdfa3ea10d"}, + {file = "symengine-0.10.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f1bc98a8efcb90531a4fead08dae33f03f2cc52edb59f0b788cbbe714b887e55"}, + {file = "symengine-0.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcb24bc5515c1b2b527c0f7a109f97f81fa9c3e32a47ca88ec31f76489132377"}, + {file = "symengine-0.10.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a20c73b1d2ce55e03ccc789ebae515d163836c8855cdb5970d22515e92daca27"}, + {file = "symengine-0.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a8ee0a9d187d0309eaaa855b995faa491d95a6f6e4ff558f78d7db8001866215"}, + {file = "symengine-0.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3f3cd66947e5b814e998782514df048e2d2f69acec4e60028e6a4976f3387920"}, + {file = "symengine-0.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0371a63f01d6a6964b946592ae23d9c9fa65d5ce33ac48d7ec9228035aa96363"}, + {file = "symengine-0.10.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eadc47c44bab95778e533f435256fd1c875059db3f787a0079262ddefee42dbd"}, + {file = "symengine-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2831184bbf0798db1ed0d721fbb2c4254ec67cbae6977c3a36de5d31e2e8787"}, + {file = "symengine-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e5da66af97fa5cab1839f84c2cc95bf3d3e87a59c1c73e76c762ff5b639f26a"}, + {file = "symengine-0.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:d102569c35a2ac8eb1815709001ab2a85ba4922fe0c7cbe439d049072c6f0a11"}, + {file = "symengine-0.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46a51f70b52b058665752f8539f7b884ed1616afc3bfc4747ea5b6148a719609"}, + {file = "symengine-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d5d1bee03937fd64954bbbf55ccaa4522620caa759181c0f1217aea6ad674082"}, + {file = "symengine-0.10.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:db3e7040addc4ac8f96d0e13994a1e239f1d0442b3c518839b0eade968fb2593"}, + {file = "symengine-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb0416a7cd2297214c3140a289652c80e1e5459f39a8c969abde4f90b094d0b4"}, + {file = "symengine-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5852a0a72d6f2f594d1ba4b3dabbd682f17ad4ea68c31e6306fe60090e28e8f"}, + {file = "symengine-0.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:525e2fb233091ffd8fe2a27801b9b05341bcb4102db018bbcbeda64065c1fa3c"}, + {file = "symengine-0.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a5fcacc9d6ed3c560c16220368bd2814ef15871a220c7fb9b33e0796f3ea8281"}, + {file = "symengine-0.10.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:73cdbebc2708454692a4d65bcd0de8b5664edc1dfa47a5d654a8a76b42c992df"}, + {file = "symengine-0.10.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4be4cb2e563e762cc98b0337bf89d5e2aea84b1232a1825fe15fdedfa984851"}, + {file = "symengine-0.10.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a9d0ad0e65fa6f8b74cdb0315c1c5a7181f0bb3fab3da06e341d40b516a30a"}, + {file = "symengine-0.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:45b748a48a5b4cc5dcfe8158c7ac2411b671b3fa518cecb10f1d066aa1833b59"}, + {file = "symengine-0.10.0-pp39-pypy39_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32d1e9b7295f05f9579899c1437776c8ef826e771884e49b7849ff3c0e159353"}, + {file = "symengine-0.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec7d1a219fada1549b4e6a86aea6be35e737760cef46dc96fe422f99a68399e5"}, + {file = "symengine-0.10.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa1ad698ea13ab3a44c1b45fc4677feaca5e89360723d96b4ff57b095ba3b676"}, + {file = "symengine-0.10.0.tar.gz", hash = "sha256:4420e96cc25f01314a6a02ae9f0c39a3e4d2a2e1b31680509a604a04cda22745"}, ] [[package]] @@ -3970,16 +3966,20 @@ files = [ [[package]] name = "webcolors" -version = "1.12" -description = "A library for working with color names and color values formats defined by HTML and CSS." +version = "1.13" +description = "A library for working with the color formats defined by HTML and CSS." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "webcolors-1.12-py3-none-any.whl", hash = "sha256:d98743d81d498a2d3eaf165196e65481f0d2ea85281463d856b1e51b09f62dce"}, - {file = "webcolors-1.12.tar.gz", hash = "sha256:16d043d3a08fd6a1b1b7e3e9e62640d09790dce80d2bdd4792a175b35fe794a9"}, + {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, + {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, ] +[package.extras] +docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] +tests = ["pytest", "pytest-cov"] + [[package]] name = "webencodings" version = "0.5.1" @@ -4090,14 +4090,14 @@ files = [ [[package]] name = "widgetsnbextension" -version = "3.6.2" +version = "3.6.3" description = "IPython HTML widgets for Jupyter" category = "main" optional = false python-versions = "*" files = [ - {file = "widgetsnbextension-3.6.2-py2.py3-none-any.whl", hash = "sha256:ddc70ae828b5d5bfdeaa4444f11a2076a0b08216b82322f616439db25e259d22"}, - {file = "widgetsnbextension-3.6.2.tar.gz", hash = "sha256:401b3b4613acceb392f7b80f03ddaf0346a15f1cfe8c1e05702ff233a0dde26e"}, + {file = "widgetsnbextension-3.6.3-py2.py3-none-any.whl", hash = "sha256:5bf98c679f71cdbff02be832ea542eeb456252aff6448e1eb23089c1dcdd44cf"}, + {file = "widgetsnbextension-3.6.3.tar.gz", hash = "sha256:28cb103f3066a6fdd6fd63264dd2a9709266c351a9a5c4a50a0bfd5ae2557b46"}, ] [package.dependencies] diff --git a/symmer/operators/independent_op.py b/symmer/operators/independent_op.py index c59d12c4..c5e86dcc 100644 --- a/symmer/operators/independent_op.py +++ b/symmer/operators/independent_op.py @@ -88,7 +88,9 @@ def symmetry_generators(cls, S_symp = cref_matrix[PwordOp.n_terms:,np.all(~cref_matrix[:PwordOp.n_terms], axis=0)].T S = cls(S_symp, np.ones(S_symp.shape[0])) if S.n_terms==0: - raise RuntimeError('The input PauliwordOp has no Z2 symmetries.') + warnings.warn('The input PauliwordOp has no Z2 symmetries.') + return S + # raise RuntimeError('The input PauliwordOp has no Z2 symmetries.') if np.all(S.adjacency_matrix) or commuting_override: return S else: diff --git a/symmer/utils.py b/symmer/utils.py index 0bd0fc33..8fc69a85 100644 --- a/symmer/utils.py +++ b/symmer/utils.py @@ -1,7 +1,7 @@ from symmer.operators import PauliwordOp, QuantumState import numpy as np import scipy as sp -from typing import Union, List, Tuple +from typing import List, Tuple, Union from functools import reduce import py3Dmol @@ -48,51 +48,80 @@ def exact_gs_energy( ) ) expval_n_particle += Z_coeff * np.sum(sign * np.square(abs(psi.state_op.coeff_vec))) - if round(expval_n_particle) == n_particles: + if np.round(expval_n_particle) == n_particles: return evl, QuantumState.from_array(evc.reshape([-1,1])) # if a solution is not found within the first n_eig eigenvalues then error raise RuntimeError('No eigenvector of the correct particle number was identified - try increasing n_eigs.') -def random_anitcomm_2n_1_PauliwordOp(n_qubits, complex_coeff=True, apply_unitary=True): +def random_anitcomm_2n_1_PauliwordOp(n_qubits, complex_coeff=False, apply_clifford=True): """ Generate a anticommuting PauliOperator of size 2n+1 on n qubits (max possible size) with normally distributed coefficients. Generates in structured way then uses Clifford rotation (default) to try and make more random (can stop this to allow FAST build, but inherenet structure will be present as operator is formed in specific way!) """ - base = 'X' * n_qubits - I_term = 'I' * n_qubits + # base = 'X' * n_qubits + # I_term = 'I' * n_qubits + # P_list = [base] + # for i in range(n_qubits): + # # Z_term + # P_list.append(base[:i] + 'Z' + I_term[i + 1:]) + # # Y_term + # P_list.append(base[:i] + 'Y' + I_term[i + 1:]) + # coeff_vec = np.random.randn(len(P_list)).astype(complex) + # if complex_coeff: + # coeff_vec += 1j * np.random.randn((len(P_list))) + # P_anticomm = PauliwordOp.from_dictionary((dict(zip(P_list, coeff_vec)))) + + Y_base = np.hstack((np.eye(n_qubits), np.tril(np.ones(n_qubits)))) + X_base = Y_base.copy() + X_base[:, n_qubits:] = np.tril(np.ones(n_qubits), -1) + + ac_symp = np.vstack((Y_base, X_base)) + + Z_symp = np.zeros(2 * n_qubits) + Z_symp[n_qubits:] = np.ones(n_qubits) + + ac_symp = np.vstack((ac_symp, Z_symp)).astype(bool) + + coeff_vec = np.random.randn(ac_symp.shape[0]).astype(complex) + if complex_coeff: + coeff_vec += 1j * np.random.randn(2 * n_qubits + 1).astype(complex) - P_list = [base] - for i in range(n_qubits): - # Z_term - P_list.append(base[:i] + 'Z' + I_term[i + 1:]) - # Y_term - P_list.append(base[:i] + 'Y' + I_term[i + 1:]) + P_anticomm = PauliwordOp(ac_symp, coeff_vec) - coeff_vec = np.random.randn(len(P_list)).astype(complex) - if complex_coeff: - coeff_vec += 1j * np.random.randn((len(P_list))) + if apply_clifford: + # apply clifford rotations to get rid of structure + U_cliff_rotations = [] + for _ in range(n_qubits + 5): + P_rand = PauliwordOp.random(n_qubits, n_terms=1) + P_rand.coeff_vec = [1] + U_cliff_rotations.append((P_rand, None)) - P_anticomm = PauliwordOp.from_dictionary((dict(zip(P_list, coeff_vec)))) + P_anticomm = P_anticomm.perform_rotations(U_cliff_rotations) - # random rotations to get rid of structure - if apply_unitary: - U = PauliwordOp.haar_random(n_qubits=n_qubits) - P_anticomm = U * P_anticomm * U.dagger + assert P_anticomm.n_terms == 2 * n_qubits + 1 - anti_comm_check = P_anticomm.adjacency_matrix.astype(int) - np.eye(P_anticomm.adjacency_matrix.shape[0]) - assert(np.sum(anti_comm_check) == 0), 'operator needs to be made of anti-commuting Pauli operators' + ## expensive check + # anti_comm_check = P_anticomm.adjacency_matrix.astype(int) - np.eye(P_anticomm.adjacency_matrix.shape[0]) + # assert(np.sum(anti_comm_check) == 0), 'operator needs to be made of anti-commuting Pauli operators' return P_anticomm + def tensor_list(factor_list:List[PauliwordOp]) -> PauliwordOp: """ Given a list of PauliwordOps, recursively tensor from the right """ return reduce(lambda x,y:x.tensor(y), factor_list) -def gram_schmidt_from_quantum_state(state) ->np.array: +def product_list(product_list:List[PauliwordOp]) -> PauliwordOp: + """ Given a list of PauliwordOps, recursively take product from the right + """ + return reduce(lambda x,y:x*y, product_list) + + +def gram_schmidt_from_quantum_state(state:Union[np.array, list, QuantumState]) ->np.array: """ build a unitary to build a quantum state from the zero state (aka state defines first column of unitary) uses gram schmidt to find other (orthogonal) columns of matrix @@ -102,14 +131,17 @@ def gram_schmidt_from_quantum_state(state) ->np.array: Returns: M (np.array): unitary matrix preparing input state from zero state """ - state = np.asarray(state).reshape([-1]) - - N_qubits = round(np.log2(state.shape[0])) - missing_amps = 2**N_qubits - state.shape[0] - state = np.hstack((state, np.zeros(missing_amps, dtype=complex))) + if isinstance(state, QuantumState): + N_qubits = state.n_qubits + state = state.to_sparse_matrix.toarray().reshape([-1]) + else: + state = np.asarray(state).reshape([-1]) + N_qubits = round(np.log2(state.shape[0])) + missing_amps = 2**N_qubits - state.shape[0] + state = np.hstack((state, np.zeros(missing_amps, dtype=complex))) - assert len(state) == 2**N_qubits, 'state is not defined on power of two' + assert state.shape[0] == 2**N_qubits, 'state is not defined on power of two' assert np.isclose(np.linalg.norm(state), 1), 'state is not normalized' M = np.eye(2**N_qubits, dtype=complex) @@ -130,6 +162,7 @@ def gram_schmidt_from_quantum_state(state) ->np.array: return M + def Draw_molecule( xyz_string: str, width: int = 400, height: int = 400, style: str = "sphere" ) -> py3Dmol.view: diff --git a/tests/test_operators/test_independent_op.py b/tests/test_operators/test_independent_op.py index eab2ecf5..1b0bc716 100644 --- a/tests/test_operators/test_independent_op.py +++ b/tests/test_operators/test_independent_op.py @@ -42,10 +42,16 @@ def test_from_dictionary(): ) assert op1 == op2 -def test_no_symmetry_generator_error(): +# def test_no_symmetry_generator_error(): +# op = PauliwordOp.from_list(['X', 'Y','Z']) +# with pytest.raises(RuntimeError): +# IndependentOp.symmetry_generators(op) + +def test_no_symmetry_generators(): op = PauliwordOp.from_list(['X', 'Y','Z']) - with pytest.raises(RuntimeError): - IndependentOp.symmetry_generators(op) + ind_op = IndependentOp.symmetry_generators(op) + assert ind_op.n_terms == 0 + def test_commuting_overide_symmetry_generators(): op = PauliwordOp.from_list( diff --git a/tests/test_operators/test_noncontextual_op.py b/tests/test_operators/test_noncontextual_op.py index 13bfc05b..235fa01a 100644 --- a/tests/test_operators/test_noncontextual_op.py +++ b/tests/test_operators/test_noncontextual_op.py @@ -190,6 +190,17 @@ def test_from_hamiltonian_basis(): assert H_noncon_basis2.n_terms >= H_noncon_basis1.n_terms +def test_noncon_no_symmertry_generators(): + Pwords = PauliwordOp.from_list(['X', 'Y', 'Z']) + E_ground = -1.7320508075688772 + + with pytest.warns(): + # capture warning of no Z2 symmetries + H_noncon = NoncontextualOp.from_PauliwordOp(Pwords) + assert H_noncon.n_terms == Pwords.n_terms + H_noncon.solve() + assert np.isclose(H_noncon.energy, E_ground) + #################################### # Testing noncontextual optimizers # @@ -348,10 +359,12 @@ def test_solve_brute_force_discrete_partial_ref(): partial_reference_state = noncon_problem['partial_reference_state'] - H_noncon_op.solve(strategy='brute_force', - ref_state=partial_reference_state, - discrete_optimization_order=None, - num_anneals=None) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.solve(strategy='brute_force', + ref_state=partial_reference_state, + discrete_optimization_order=None, + num_anneals=None) assert np.isclose(H_noncon_op.energy, noncon_problem['E']) @@ -374,10 +387,12 @@ def test_solve_brute_force_PUSO_discrete_partial_ref(): partial_reference_state = noncon_problem['partial_reference_state'] - H_noncon_op.solve(strategy='brute_force_PUSO', - ref_state=partial_reference_state, - discrete_optimization_order='first', # <- HERE - num_anneals=None) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.solve(strategy='brute_force_PUSO', + ref_state=partial_reference_state, + discrete_optimization_order='first', # <- HERE + num_anneals=None) assert np.isclose(H_noncon_op.energy, noncon_problem['E']) @@ -387,10 +402,12 @@ def test_solve_brute_force_QUSO_discrete_partial_ref(): partial_reference_state = noncon_problem['partial_reference_state'] - H_noncon_op.solve(strategy='brute_force_QUSO', - ref_state=partial_reference_state, - discrete_optimization_order='first', # <- HERE - num_anneals=None) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.solve(strategy='brute_force_QUSO', + ref_state=partial_reference_state, + discrete_optimization_order='first', # <- HERE + num_anneals=None) assert np.isclose(H_noncon_op.energy, noncon_problem['E']) @@ -400,10 +417,12 @@ def test_solve_annealing_PUSO_discrete_partial_ref(): partial_reference_state = noncon_problem['partial_reference_state'] - H_noncon_op.solve(strategy='annealing_PUSO', - ref_state=partial_reference_state, - discrete_optimization_order='first', # <- HERE - num_anneals=1_000) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.solve(strategy='annealing_PUSO', + ref_state=partial_reference_state, + discrete_optimization_order='first', # <- HERE + num_anneals=1_000) assert np.isclose(H_noncon_op.energy, noncon_problem['E']) @@ -413,10 +432,12 @@ def test_solve_annealing_QUSO_discrete_partial_ref(): partial_reference_state = noncon_problem['partial_reference_state'] - H_noncon_op.solve(strategy='annealing_QUSO', - ref_state=partial_reference_state, - discrete_optimization_order='first', # <- HERE - num_anneals=1_000) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.solve(strategy='annealing_QUSO', + ref_state=partial_reference_state, + discrete_optimization_order='first', # <- HERE + num_anneals=1_000) assert np.isclose(H_noncon_op.energy, noncon_problem['E']) @@ -486,12 +507,17 @@ def test_get_qaoa_qubo_with_partial_reference(): H_noncon_op = NoncontextualOp.from_PauliwordOp(H_noncon) reference = noncon_problem['partial_reference_state'] - H_noncon_op.symmetry_generators.update_sector(reference) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.symmetry_generators.update_sector(reference) + ev_assignment = H_noncon_op.symmetry_generators.coeff_vec fixed_ev_mask = ev_assignment != 0 fixed_eigvals = (ev_assignment[fixed_ev_mask]).astype(int) - QAOA_dict = H_noncon_op.get_qaoa(ref_state=reference, type='qubo') + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + QAOA_dict = H_noncon_op.get_qaoa(ref_state=reference, type='qubo') for key in QAOA_dict.keys(): exp = QAOA_dict[key] @@ -575,12 +601,17 @@ def test_get_qaoa_pubo_with_partial_reference(): H_noncon_op = NoncontextualOp.from_PauliwordOp(H_noncon) reference = noncon_problem['partial_reference_state'] - H_noncon_op.symmetry_generators.update_sector(reference) + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + H_noncon_op.symmetry_generators.update_sector(reference) + ev_assignment = H_noncon_op.symmetry_generators.coeff_vec fixed_ev_mask = ev_assignment != 0 fixed_eigvals = (ev_assignment[fixed_ev_mask]).astype(int) - QAOA_dict = H_noncon_op.get_qaoa(ref_state=reference, type='pubo') + with pytest.warns(): + # capture warning when Z stabilizers measured give zero expec value + QAOA_dict = H_noncon_op.get_qaoa(ref_state=reference, type='pubo') for key in QAOA_dict.keys(): exp = QAOA_dict[key] diff --git a/tests/test_symmer_utils.py b/tests/test_symmer_utils.py new file mode 100644 index 00000000..cd1c256c --- /dev/null +++ b/tests/test_symmer_utils.py @@ -0,0 +1,456 @@ +from symmer.operators import PauliwordOp, QuantumState +from symmer.utils import (exact_gs_energy, random_anitcomm_2n_1_PauliwordOp,Draw_molecule, + tensor_list, gram_schmidt_from_quantum_state, product_list) +import numpy as np +from openfermion import QubitOperator +import py3Dmol + +H2_sto3g = {'qubit_encoding': 'jordan_wigner', + 'unit': 'angstrom', + 'geometry': '2\n \nH\t0\t0\t0\nH\t0\t0\t0.74', + 'basis': 'STO-3G', + 'charge': 0, + 'spin': 0, + 'hf_array': [1, 1, 0, 0], + 'hf_method': 'pyscf.scf.hf_symm.SymAdaptedRHF', + 'n_particles': {'total': 2, 'alpha': 1, 'beta': 1}, + 'n_qubits': 4, + 'convergence_threshold': 1e-06, + 'point_group': {'groupname': 'Dooh', 'topgroup': 'Dooh'}, + 'calculated_properties': {'HF': {'energy': -1.1167593073964255, + 'converged': True}, + 'MP2': {'energy': -1.1298973809859585, 'converged': True}, + 'CCSD': {'energy': -1.13728399861044, 'converged': True}, + 'FCI': {'energy': -1.137283834488502, 'converged': True}}, + 'auxiliary_operators': {'number_operator': {'IIII': (2.0, 0.0), + 'IIIZ': (-0.5, 0.0), + 'IIZI': (-0.5, 0.0), + 'IZII': (-0.5, 0.0), + 'ZIII': (-0.5, 0.0)}, + 'S^2_operator': {'IIII': (0.75, 0.0), + 'IIIZ': (0.5, 0.0), + 'IIZI': (-0.5, 0.0), + 'IIZZ': (-0.375, 0.0), + 'IZII': (0.5, 0.0), + 'IZIZ': (0.125, 0.0), + 'IZZI': (-0.125, 0.0), + 'ZIII': (-0.5, 0.0), + 'ZIIZ': (-0.125, 0.0), + 'ZIZI': (0.125, 0.0), + 'ZZII': (-0.375, 0.0), + 'XXXX': (0.125, 0.0), + 'XXYY': (0.125, 0.0), + 'XYXY': (0.125, 0.0), + 'XYYX': (-0.125, 0.0), + 'YXXY': (-0.125, 0.0), + 'YXYX': (0.125, 0.0), + 'YYXX': (0.125, 0.0), + 'YYYY': (0.125, 0.0)}, + 'Sz_operator': {'IIIZ': (0.25, 0.0), + 'IIZI': (-0.25, 0.0), + 'IZII': (0.25, 0.0), + 'ZIII': (-0.25, 0.0)}, + 'alpha_parity_operator': {'ZIZI': (1.0, 0.0)}, + 'beta_parity_operator': {'IZIZ': (1.0, 0.0)}, + 'MP2_operator': {'XXXX': (-0.004531358676614097, 0.0), + 'XXXY': (0.0, 0.004531358676614097), + 'XXYX': (0.0, 0.004531358676614097), + 'XXYY': (0.004531358676614097, 0.0), + 'XYXX': (0.0, -0.004531358676614097), + 'XYXY': (-0.004531358676614097, 0.0), + 'XYYX': (-0.004531358676614097, 0.0), + 'XYYY': (0.0, 0.004531358676614097), + 'YXXX': (0.0, -0.004531358676614097), + 'YXXY': (-0.004531358676614097, 0.0), + 'YXYX': (-0.004531358676614097, 0.0), + 'YXYY': (0.0, 0.004531358676614097), + 'YYXX': (0.004531358676614097, 0.0), + 'YYXY': (0.0, -0.004531358676614097), + 'YYYX': (0.0, -0.004531358676614097), + 'YYYY': (-0.004531358676614097, 0.0)}, + 'CCSD_operator': {'XXXX': (-0.007079023951543804, 0.0), + 'XXXY': (0.0, 0.007079023951543804), + 'XXYX': (0.0, 0.007079023951543804), + 'XXYY': (0.007079023951543804, 0.0), + 'XYXX': (0.0, -0.007079023951543804), + 'XYXY': (-0.007079023951543804, 0.0), + 'XYYX': (-0.007079023951543804, 0.0), + 'XYYY': (0.0, 0.007079023951543804), + 'YXXX': (0.0, -0.007079023951543804), + 'YXXY': (-0.007079023951543804, 0.0), + 'YXYX': (-0.007079023951543804, 0.0), + 'YXYY': (0.0, 0.007079023951543804), + 'YYXX': (0.007079023951543804, 0.0), + 'YYXY': (0.0, -0.007079023951543804), + 'YYYX': (0.0, -0.007079023951543804), + 'YYYY': (-0.007079023951543804, 0.0)}}, + 'H_dict': {'IIII': (-0.09706626816763123+0j), + 'IIIZ': (-0.22343153690813441+0j), + 'IIZI': (-0.22343153690813441+0j), + 'IIZZ': (0.17441287612261588+0j), + 'IZII': (0.17141282644776915+0j), + 'IZIZ': (0.12062523483390411+0j), + 'IZZI': (0.1659278503377034+0j), + 'ZIII': (0.17141282644776912+0j), + 'ZIIZ': (0.1659278503377034+0j), + 'ZIZI': (0.12062523483390411+0j), + 'ZZII': (0.16868898170361207+0j), + 'XXYY': (-0.04530261550379927+0j), + 'XYYX': (0.04530261550379927+0j), + 'YXXY': (0.04530261550379927+0j), + 'YYXX': (-0.04530261550379927+0j)}} + +He3_plus = {'qubit_encoding': 'jordan_wigner', + 'unit': 'angstrom', + 'geometry': '3\n \nH\t0\t0\t0\nH\t0\t0\t0.74\nH\t0\t0\t1.48', + 'basis': 'STO-3G', + 'charge': 1, + 'spin': 0, + 'hf_array': [1, 1, 0, 0, 0, 0], + 'hf_method': 'pyscf.scf.hf_symm.SymAdaptedRHF', + 'n_particles': {'total': 2, 'alpha': 1, 'beta': 1}, + 'n_qubits': 6, + 'convergence_threshold': 1e-06, + 'point_group': {'groupname': 'Dooh', 'topgroup': 'Dooh'}, + 'calculated_properties': {'HF': {'energy': -1.189999028637302, + 'converged': True}, + 'MP2': {'energy': -1.206775423813649, 'converged': True}, + 'CCSD': {'energy': -1.214628907244379, 'converged': True}, + 'FCI': {'energy': -1.214628846262647, 'converged': True}}, + 'auxiliary_operators': {'number_operator': {'IIIIII': (3.0, 0.0), + 'IIIIIZ': (-0.5, 0.0), + 'IIIIZI': (-0.5, 0.0), + 'IIIZII': (-0.5, 0.0), + 'IIZIII': (-0.5, 0.0), + 'IZIIII': (-0.5, 0.0), + 'ZIIIII': (-0.5, 0.0)}, + 'S^2_operator': {'IIIIII': (1.125, 0.0), + 'IIIIIZ': (0.5, 0.0), + 'IIIIZI': (-0.5, 0.0), + 'IIIIZZ': (-0.375, 0.0), + 'IIIZII': (0.5, 0.0), + 'IIIZIZ': (0.125, 0.0), + 'IIIZZI': (-0.125, 0.0), + 'IIZIII': (-0.5, 0.0), + 'IIZIIZ': (-0.125, 0.0), + 'IIZIZI': (0.125, 0.0), + 'IIZZII': (-0.375, 0.0), + 'IZIIII': (0.5, 0.0), + 'IZIIIZ': (0.125, 0.0), + 'IZIIZI': (-0.125, 0.0), + 'IZIZII': (0.125, 0.0), + 'IZZIII': (-0.125, 0.0), + 'ZIIIII': (-0.5, 0.0), + 'ZIIIIZ': (-0.125, 0.0), + 'ZIIIZI': (0.125, 0.0), + 'ZIIZII': (-0.125, 0.0), + 'ZIZIII': (0.125, 0.0), + 'ZZIIII': (-0.375, 0.0), + 'IIXXXX': (0.125, 0.0), + 'IIXXYY': (0.125, 0.0), + 'IIXYXY': (0.125, 0.0), + 'IIXYYX': (-0.125, 0.0), + 'IIYXXY': (-0.125, 0.0), + 'IIYXYX': (0.125, 0.0), + 'IIYYXX': (0.125, 0.0), + 'IIYYYY': (0.125, 0.0), + 'XXIIXX': (0.125, 0.0), + 'XXIIYY': (0.125, 0.0), + 'XYIIXY': (0.125, 0.0), + 'XYIIYX': (-0.125, 0.0), + 'YXIIXY': (-0.125, 0.0), + 'YXIIYX': (0.125, 0.0), + 'YYIIXX': (0.125, 0.0), + 'YYIIYY': (0.125, 0.0), + 'XXXXII': (0.125, 0.0), + 'XXYYII': (0.125, 0.0), + 'XYXYII': (0.125, 0.0), + 'XYYXII': (-0.125, 0.0), + 'YXXYII': (-0.125, 0.0), + 'YXYXII': (0.125, 0.0), + 'YYXXII': (0.125, 0.0), + 'YYYYII': (0.125, 0.0)}, + 'Sz_operator': {'IIIIIZ': (0.25, 0.0), + 'IIIIZI': (-0.25, 0.0), + 'IIIZII': (0.25, 0.0), + 'IIZIII': (-0.25, 0.0), + 'IZIIII': (0.25, 0.0), + 'ZIIIII': (-0.25, 0.0)}, + 'alpha_parity_operator': {'ZIZIZI': (1.0, 0.0)}, + 'beta_parity_operator': {'IZIZIZ': (1.0, 0.0)}, + 'MP2_operator': {'XXIIXX': (-0.0022135760877754116, 0.0), + 'XXIIXY': (0.0, 0.0022135760877754116), + 'XXIIYX': (0.0, 0.0022135760877754116), + 'XXIIYY': (0.0022135760877754116, 0.0), + 'XYIIXX': (0.0, -0.0022135760877754116), + 'XYIIXY': (-0.0022135760877754116, 0.0), + 'XYIIYX': (-0.0022135760877754116, 0.0), + 'XYIIYY': (0.0, 0.0022135760877754116), + 'YXIIXX': (0.0, -0.0022135760877754116), + 'YXIIXY': (-0.0022135760877754116, 0.0), + 'YXIIYX': (-0.0022135760877754116, 0.0), + 'YXIIYY': (0.0, 0.0022135760877754116), + 'YYIIXX': (0.0022135760877754116, 0.0), + 'YYIIXY': (0.0, -0.0022135760877754116), + 'YYIIYX': (0.0, -0.0022135760877754116), + 'YYIIYY': (-0.0022135760877754116, 0.0), + 'XXXXII': (-0.005258398458007929, 0.0), + 'XXXYII': (0.0, 0.005258398458007929), + 'XXYXII': (0.0, 0.005258398458007929), + 'XXYYII': (0.005258398458007929, 0.0), + 'XYXXII': (0.0, -0.005258398458007929), + 'XYXYII': (-0.005258398458007929, 0.0), + 'XYYXII': (-0.005258398458007929, 0.0), + 'XYYYII': (0.0, 0.005258398458007929), + 'YXXXII': (0.0, -0.005258398458007929), + 'YXXYII': (-0.005258398458007929, 0.0), + 'YXYXII': (-0.005258398458007929, 0.0), + 'YXYYII': (0.0, 0.005258398458007929), + 'YYXXII': (0.005258398458007929, 0.0), + 'YYXYII': (0.0, -0.005258398458007929), + 'YYYXII': (0.0, -0.005258398458007929), + 'YYYYII': (-0.005258398458007929, 0.0)}, + 'CCSD_operator': {'IXZZZX': (-0.0031353836158880214, 0.0), + 'IXZZZY': (0.0, 0.0031353836158880214), + 'IYZZZX': (0.0, -0.0031353836158880214), + 'IYZZZY': (-0.0031353836158880214, 0.0), + 'XZZZXI': (-0.0031353836158880214, 0.0), + 'XZZZYI': (0.0, 0.0031353836158880214), + 'YZZZXI': (0.0, -0.0031353836158880214), + 'YZZZYI': (-0.0031353836158880214, 0.0), + 'XXIIXX': (-0.0025494280723394984, 0.0), + 'XXIIXY': (0.0, 0.0025494280723394984), + 'XXIIYX': (0.0, 0.0025494280723394984), + 'XXIIYY': (0.0025494280723394984, 0.0), + 'XYIIXX': (0.0, -0.0025494280723394984), + 'XYIIXY': (-0.0025494280723394984, 0.0), + 'XYIIYX': (-0.0025494280723394984, 0.0), + 'XYIIYY': (0.0, 0.0025494280723394984), + 'YXIIXX': (0.0, -0.0025494280723394984), + 'YXIIXY': (-0.0025494280723394984, 0.0), + 'YXIIYX': (-0.0025494280723394984, 0.0), + 'YXIIYY': (0.0, 0.0025494280723394984), + 'YYIIXX': (0.0025494280723394984, 0.0), + 'YYIIXY': (0.0, -0.0025494280723394984), + 'YYIIYX': (0.0, -0.0025494280723394984), + 'YYIIYY': (-0.0025494280723394984, 0.0), + 'XXXXII': (-0.008347686124399265, 0.0), + 'XXXYII': (0.0, 0.008347686124399265), + 'XXYXII': (0.0, 0.008347686124399265), + 'XXYYII': (0.008347686124399265, 0.0), + 'XYXXII': (0.0, -0.008347686124399265), + 'XYXYII': (-0.008347686124399265, 0.0), + 'XYYXII': (-0.008347686124399265, 0.0), + 'XYYYII': (0.0, 0.008347686124399265), + 'YXXXII': (0.0, -0.008347686124399265), + 'YXXYII': (-0.008347686124399265, 0.0), + 'YXYXII': (-0.008347686124399265, 0.0), + 'YXYYII': (0.0, 0.008347686124399265), + 'YYXXII': (0.008347686124399265, 0.0), + 'YYXYII': (0.0, -0.008347686124399265), + 'YYYXII': (0.0, -0.008347686124399265), + 'YYYYII': (-0.008347686124399265, 0.0)}}, + 'H_dict': {'IIIIII': (0.24747487013571695+0j), + 'IIIIIZ': (-0.460046379318107+0j), + 'IIIIZI': (-0.460046379318107+0j), + 'IIIIZZ': (0.17501414371183724+0j), + 'IIIZII': (-0.008325684680054832+0j), + 'IIIZIZ': (0.10794008354812167+0j), + 'IIIZZI': (0.14596700512786398+0j), + 'IIZIII': (-0.008325684680054846+0j), + 'IIZIIZ': (0.14596700512786398+0j), + 'IIZIZI': (0.10794008354812167+0j), + 'IIZZII': (0.1464490594631947+0j), + 'IZIIII': (0.21618381471527337+0j), + 'IZIIIZ': (0.12892083226845963+0j), + 'IZIIZI': (0.16103166954501724+0j), + 'IZIZII': (0.10098551626926347+0j), + 'IZZIII': (0.13731813628698764+0j), + 'ZIIIII': (0.21618381471527337+0j), + 'ZIIIIZ': (0.16103166954501724+0j), + 'ZIIIZI': (0.12892083226845963+0j), + 'ZIIZII': (0.13731813628698764+0j), + 'ZIZIII': (0.10098551626926347+0j), + 'ZZIIII': (0.15887278686630402+0j), + 'IIXXYY': (-0.03802692157974233+0j), + 'IIXYYX': (0.03802692157974233+0j), + 'IIYXXY': (0.03802692157974233+0j), + 'IIYYXX': (-0.03802692157974233+0j), + 'IXIZZX': (0.0035462180491050393+0j), + 'IXZIZX': (-0.029756134618662153+0j), + 'IXZZIX': (-0.024481114159709064+0j), + 'IXZZZX': (0.02373733926074963+0j), + 'IYIZZY': (0.0035462180491050393+0j), + 'IYZIZY': (-0.029756134618662153+0j), + 'IYZZIY': (-0.024481114159709064+0j), + 'IYZZZY': (0.02373733926074963+0j), + 'ZXZZZX': (-0.026953621359169865+0j), + 'ZYZZZY': (-0.026953621359169865+0j), + 'IXXYYI': (0.03330235266776719+0j), + 'IXYYXI': (-0.03330235266776719+0j), + 'IYXXYI': (-0.03330235266776719+0j), + 'IYYXXI': (0.03330235266776719+0j), + 'XIZZXI': (-0.026953621359169868+0j), + 'XZIZXI': (-0.029756134618662153+0j), + 'XZZIXI': (0.0035462180491050393+0j), + 'XZZZXI': (0.023737339260749633+0j), + 'XZZZXZ': (-0.024481114159709064+0j), + 'YIZZYI': (-0.026953621359169868+0j), + 'YZIZYI': (-0.029756134618662153+0j), + 'YZZIYI': (0.0035462180491050393+0j), + 'YZZZYI': (0.023737339260749633+0j), + 'YZZZYZ': (-0.024481114159709064+0j), + 'XZXXZX': (-0.03330235266776719+0j), + 'XZXYZY': (-0.03330235266776719+0j), + 'YZYXZX': (-0.03330235266776719+0j), + 'YZYYZY': (-0.03330235266776719+0j), + 'XXIIYY': (-0.032110837276557606+0j), + 'XYIIYX': (0.032110837276557606+0j), + 'YXIIXY': (0.032110837276557606+0j), + 'YYIIXX': (-0.032110837276557606+0j), + 'XXYYII': (-0.036332620017724165+0j), + 'XYYXII': (0.036332620017724165+0j), + 'YXXYII': (0.036332620017724165+0j), + 'YYXXII': (-0.036332620017724165+0j)}} + + +def test_exact_gs_energy_H2(): + H = PauliwordOp.from_dictionary(H2_sto3g['H_dict']) + E_ref = H2_sto3g['calculated_properties']['FCI']['energy'] + + gs_energy, gs_state = exact_gs_energy(H.to_sparse_matrix) + assert np.isclose(gs_energy, E_ref), 'reference energy does NOT match true gs' + + assert isinstance(gs_state, QuantumState) + assert np.isclose(gs_state.dagger * H * gs_state, E_ref) + + +def test_exact_gs_energy_H3_plus(): + H = PauliwordOp.from_dictionary(He3_plus['H_dict']) + E_ref = He3_plus['calculated_properties']['FCI']['energy'] + + num_operator = PauliwordOp.from_dictionary(He3_plus['auxiliary_operators']['number_operator']) + n_part = He3_plus['n_particles']['total'] + + gs_energy, gs_state = exact_gs_energy(H.to_sparse_matrix, + number_operator=num_operator, + n_particles=n_part) + + assert np.isclose(gs_energy, E_ref), 'reference energy does NOT match true gs' + assert isinstance(gs_state, QuantumState) + assert np.isclose(gs_state.dagger * H * gs_state, E_ref) + + +def test_random_anitcomm_2n_1_PauliwordOp_method(): + n_qubits = 5 + complex_coeff = False + apply_clifford = False + + AC = random_anitcomm_2n_1_PauliwordOp(n_qubits, + apply_clifford=apply_clifford, + complex_coeff=complex_coeff) + + # underlying method manually coded: + base = 'Z' * n_qubits + I_term = 'I' * n_qubits + P_list = [base] + for i in range(n_qubits): + # Z_term + P_list.append(base[:i] + 'X' + I_term[i + 1:]) + # Y_term + P_list.append(base[:i] + 'Y' + I_term[i + 1:]) + + P_anticomm = PauliwordOp.from_list(P_list) + AC.coeff_vec = np.ones(AC.n_terms) + + output = P_anticomm - AC + + assert output.n_terms == 0 + assert np.allclose(output.coeff_vec, np.zeros_like(output.coeff_vec)) + + +def test_random_anitcomm_2n_1_PauliwordOp_real_with_clifford(): + n_qubits = 4 + complex_coeff = False + apply_clifford = True + + AC = random_anitcomm_2n_1_PauliwordOp(n_qubits, + apply_clifford=apply_clifford, + complex_coeff=complex_coeff) + + + assert AC.n_terms == 2*n_qubits + 1 + anti_comm_check = AC.adjacency_matrix.astype(int) - np.eye(AC.adjacency_matrix.shape[0]) + assert(np.sum(anti_comm_check) == 0), 'operator not made up of pairwisie anticommuting Pauli operators' + + +def test_random_anitcomm_2n_1_PauliwordOp_complex_with_clifford(): + n_qubits = 4 + complex_coeff = True + apply_clifford = True + + AC = random_anitcomm_2n_1_PauliwordOp(n_qubits, + apply_clifford=apply_clifford, + complex_coeff=complex_coeff) + + + assert AC.n_terms == 2*n_qubits + 1 + anti_comm_check = AC.adjacency_matrix.astype(int) - np.eye(AC.adjacency_matrix.shape[0]) + assert(np.sum(anti_comm_check) == 0), 'operator not made up of pairwisie anticommuting Pauli operators' + + +def test_tensor_list(): + + X_term = PauliwordOp.from_list(['X'], [0.25]) + Y_term = PauliwordOp.from_list(['Y'], [0.25]) + Z_term = PauliwordOp.from_list(['Z'], [0.25]) + + targ = PauliwordOp.from_list(['XYZ'], [0.25*0.25*0.25]) + + P_out = tensor_list([X_term, Y_term, Z_term]) + + assert P_out == targ + + +def test_product_list(): + n_qubits = 4 + P_random = PauliwordOp.random(n_qubits=n_qubits, + n_terms=10) + + open_F_prod = QubitOperator('', 1) + for p in P_random: + open_F_prod *= p.to_openfermion + + symmer_prod = product_list(P_random) + open_F_prod = PauliwordOp.from_openfermion(open_F_prod, n_qubits=n_qubits) + + assert open_F_prod == symmer_prod + + +def test_gram_schmidt_from_quantum_state_QuantumState(): + nq = 3 + psi = QuantumState.haar_random(nq) + + U_gram = gram_schmidt_from_quantum_state(psi) + assert np.allclose(U_gram[:, 0], psi.to_sparse_matrix.toarray().reshape([-1])), 'first column of U_gram not correct' + assert np.allclose(U_gram@U_gram.conj().T, np.eye(2**nq)), 'U_gram not unitary' + + +def test_gram_schmidt_from_quantum_state_numpy_array(): + nq = 3 + psi = np.arange(0,2**nq) + psi_norm = psi/np.linalg.norm(psi) + + U_gram = gram_schmidt_from_quantum_state(psi_norm) + assert np.allclose(U_gram[:, 0], psi_norm), 'first column of U_gram not correct' + assert np.allclose(U_gram @ U_gram.conj().T, np.eye(2 ** nq)), 'U_gram not unitary' + + +def test_Draw_molecule(): + + xyz = H2_sto3g['geometry'] + viewer_sphere = Draw_molecule(xyz, width=400, height=400, style='sphere') + assert isinstance(viewer_sphere, py3Dmol.view) + + viewer_stick = Draw_molecule(xyz, width=400, height=400, style='stick') + assert isinstance(viewer_stick, py3Dmol.view) \ No newline at end of file