diff --git a/doc/source/api-reference/qibolab.rst b/doc/source/api-reference/qibolab.rst index 223dc04ca..b2023ec3d 100644 --- a/doc/source/api-reference/qibolab.rst +++ b/doc/source/api-reference/qibolab.rst @@ -277,10 +277,10 @@ IcarusQFPGA :members: :member-order: bysource -RFSoC 4x2 ---------- +RFSoC +----- -.. autoclass:: qibolab.instruments.rfsoc.TII_RFSOC4x2 +.. autoclass:: qibolab.instruments.rfsoc.RFSoC :members: :member-order: bysource diff --git a/poetry.lock b/poetry.lock index 4359419a6..3c067a733 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -16,7 +15,6 @@ files = [ name = "antlr4-python3-runtime" version = "4.11.1" description = "ANTLR 4.11.1 runtime for Python 3" -category = "main" optional = true python-versions = "*" files = [ @@ -28,7 +26,6 @@ files = [ name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" -category = "main" optional = false python-versions = "*" files = [ @@ -40,7 +37,6 @@ files = [ name = "astroid" version = "2.15.5" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -60,7 +56,6 @@ wrapt = [ name = "asttokens" version = "2.2.1" description = "Annotate AST trees with source code positions" -category = "main" optional = false python-versions = "*" files = [ @@ -78,7 +73,6 @@ test = ["astroid", "pytest"] name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -95,14 +89,13 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "azure-core" -version = "1.26.4" +version = "1.27.0" description = "Microsoft Azure Core Library for Python" -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "azure-core-1.26.4.zip", hash = "sha256:075fe06b74c3007950dd93d49440c2f3430fd9b4a5a2756ec8c79454afc989c6"}, - {file = "azure_core-1.26.4-py3-none-any.whl", hash = "sha256:d9664b4bc2675d72fba461a285ac43ae33abb2967014a955bf136d9703a2ab3c"}, + {file = "azure-core-1.27.0.zip", hash = "sha256:068ea8b61888165b1e749892785936e293e35070a10ea10c8c11ec9f5186a2f8"}, + {file = "azure_core-1.27.0-py3-none-any.whl", hash = "sha256:8ec1b607d11ab0dc762606c4804b52b6b2fae83524e89ed575055046b69f1afe"}, ] [package.dependencies] @@ -117,7 +110,6 @@ aio = ["aiohttp (>=3.0)"] name = "azure-identity" version = "1.13.0" description = "Microsoft Azure Identity Library for Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -136,7 +128,6 @@ six = ">=1.12.0" name = "babel" version = "2.12.1" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -148,7 +139,6 @@ files = [ name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" -category = "main" optional = false python-versions = "*" files = [ @@ -160,7 +150,6 @@ files = [ name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" -category = "dev" optional = false python-versions = ">=3.6.0" files = [ @@ -179,7 +168,6 @@ lxml = ["lxml"] name = "betterproto" version = "2.0.0b5" description = "A better Protobuf / gRPC generator & library" -category = "main" optional = true python-versions = ">=3.6.2,<4.0" files = [ @@ -198,7 +186,6 @@ compiler = ["black (>=19.3b0)", "isort (>=5.10.1,<6.0.0)", "jinja2 (>=3.0.3)"] name = "bleach" version = "6.0.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -217,7 +204,6 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] name = "broadbean" version = "0.11.0" description = "Package for easily generating and manipulating signal" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -238,7 +224,6 @@ test = ["black (>=22.3.0)", "coverage[toml] (>=6.2)", "hypothesis (>=5.49.0)", " name = "cachetools" version = "5.3.1" description = "Extensible memoizing collections and decorators" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -250,7 +235,6 @@ files = [ name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -262,7 +246,6 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -339,7 +322,6 @@ pycparser = "*" name = "charset-normalizer" version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -424,7 +406,6 @@ files = [ name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -439,7 +420,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "cma" version = "3.3.0" description = "CMA-ES, Covariance Matrix Adaptation Evolution Strategy for non-linear numerical optimization in Python" -category = "main" optional = false python-versions = "*" files = [ @@ -458,7 +438,6 @@ plotting = ["matplotlib"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -470,7 +449,6 @@ files = [ name = "comm" version = "0.1.3" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -490,7 +468,6 @@ typing = ["mypy (>=0.990)"] name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" -category = "dev" optional = false python-versions = "*" files = [ @@ -505,7 +482,6 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] name = "contextlib2" version = "21.6.0" description = "Backports and enhancements for the contextlib module" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -517,7 +493,6 @@ files = [ name = "contourpy" version = "1.0.7" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -590,63 +565,71 @@ test-no-images = ["pytest"] [[package]] name = "coverage" -version = "7.2.6" +version = "7.2.7" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:496b86f1fc9c81a1cd53d8842ef712e950a4611bba0c42d33366a7b91ba969ec"}, - {file = "coverage-7.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fbe6e8c0a9a7193ba10ee52977d4d5e7652957c1f56ccefed0701db8801a2a3b"}, - {file = "coverage-7.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d06b721c2550c01a60e5d3093f417168658fb454e5dfd9a23570e9bffe39a1"}, - {file = "coverage-7.2.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:77a04b84d01f0e12c66f16e69e92616442dc675bbe51b90bfb074b1e5d1c7fbd"}, - {file = "coverage-7.2.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35db06450272473eab4449e9c2ad9bc6a0a68dab8e81a0eae6b50d9c2838767e"}, - {file = "coverage-7.2.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6727a0d929ff0028b1ed8b3e7f8701670b1d7032f219110b55476bb60c390bfb"}, - {file = "coverage-7.2.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aac1d5fdc5378f6bac2c0c7ebe7635a6809f5b4376f6cf5d43243c1917a67087"}, - {file = "coverage-7.2.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1c9e4a5eb1bbc3675ee57bc31f8eea4cd7fb0cbcbe4912cf1cb2bf3b754f4a80"}, - {file = "coverage-7.2.6-cp310-cp310-win32.whl", hash = "sha256:71f739f97f5f80627f1fee2331e63261355fd1e9a9cce0016394b6707ac3f4ec"}, - {file = "coverage-7.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:fde5c7a9d9864d3e07992f66767a9817f24324f354caa3d8129735a3dc74f126"}, - {file = "coverage-7.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc7b667f8654376e9353dd93e55e12ce2a59fb6d8e29fce40de682273425e044"}, - {file = "coverage-7.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:697f4742aa3f26c107ddcb2b1784a74fe40180014edbd9adaa574eac0529914c"}, - {file = "coverage-7.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:541280dde49ce74a4262c5e395b48ea1207e78454788887118c421cb4ffbfcac"}, - {file = "coverage-7.2.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7f1a8328eeec34c54f1d5968a708b50fc38d31e62ca8b0560e84a968fbf9a9"}, - {file = "coverage-7.2.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bbd58eb5a2371bf160590f4262109f66b6043b0b991930693134cb617bc0169"}, - {file = "coverage-7.2.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ae82c5f168d2a39a5d69a12a69d4dc23837a43cf2ca99be60dfe59996ea6b113"}, - {file = "coverage-7.2.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f5440cdaf3099e7ab17a5a7065aed59aff8c8b079597b61c1f8be6f32fe60636"}, - {file = "coverage-7.2.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a6f03f87fea579d55e0b690d28f5042ec1368650466520fbc400e7aeaf09e995"}, - {file = "coverage-7.2.6-cp311-cp311-win32.whl", hash = "sha256:dc4d5187ef4d53e0d4c8eaf530233685667844c5fb0b855fea71ae659017854b"}, - {file = "coverage-7.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:c93d52c3dc7b9c65e39473704988602300e3cc1bad08b5ab5b03ca98bbbc68c1"}, - {file = "coverage-7.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:42c692b55a647a832025a4c048007034fe77b162b566ad537ce65ad824b12a84"}, - {file = "coverage-7.2.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7786b2fa7809bf835f830779ad285215a04da76293164bb6745796873f0942d"}, - {file = "coverage-7.2.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25bad4196104761bc26b1dae9b57383826542ec689ff0042f7f4f4dd7a815cba"}, - {file = "coverage-7.2.6-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2692306d3d4cb32d2cceed1e47cebd6b1d2565c993d6d2eda8e6e6adf53301e6"}, - {file = "coverage-7.2.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:392154d09bd4473b9d11351ab5d63391f3d5d24d752f27b3be7498b0ee2b5226"}, - {file = "coverage-7.2.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:fa079995432037b5e2ef5ddbb270bcd2ded9f52b8e191a5de11fe59a00ea30d8"}, - {file = "coverage-7.2.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d712cefff15c712329113b01088ba71bbcef0f7ea58478ca0bbec63a824844cb"}, - {file = "coverage-7.2.6-cp37-cp37m-win32.whl", hash = "sha256:004948e296149644d208964300cb3d98affc5211e9e490e9979af4030b0d6473"}, - {file = "coverage-7.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:c1d7a31603c3483ac49c1726723b0934f88f2c011c660e6471e7bd735c2fa110"}, - {file = "coverage-7.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3436927d1794fa6763b89b60c896f9e3bd53212001026ebc9080d23f0c2733c1"}, - {file = "coverage-7.2.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44c9b9f1a245f3d0d202b1a8fa666a80b5ecbe4ad5d0859c0fb16a52d9763224"}, - {file = "coverage-7.2.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e3783a286d5a93a2921396d50ce45a909aa8f13eee964465012f110f0cbb611"}, - {file = "coverage-7.2.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cff6980fe7100242170092bb40d2b1cdad79502cd532fd26b12a2b8a5f9aee0"}, - {file = "coverage-7.2.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c534431153caffc7c495c3eddf7e6a6033e7f81d78385b4e41611b51e8870446"}, - {file = "coverage-7.2.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3062fd5c62df988cea9f2972c593f77fed1182bfddc5a3b12b1e606cb7aba99e"}, - {file = "coverage-7.2.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6284a2005e4f8061c58c814b1600ad0074ccb0289fe61ea709655c5969877b70"}, - {file = "coverage-7.2.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:97729e6828643f168a2a3f07848e1b1b94a366b13a9f5aba5484c2215724edc8"}, - {file = "coverage-7.2.6-cp38-cp38-win32.whl", hash = "sha256:dc11b42fa61ff1e788dd095726a0aed6aad9c03d5c5984b54cb9e1e67b276aa5"}, - {file = "coverage-7.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:cbcc874f454ee51f158afd604a315f30c0e31dff1d5d5bf499fc529229d964dd"}, - {file = "coverage-7.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d3cacc6a665221108ecdf90517a8028d07a2783df3417d12dcfef1c517e67478"}, - {file = "coverage-7.2.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:272ab31228a9df857ab5df5d67936d8861464dc89c5d3fab35132626e9369379"}, - {file = "coverage-7.2.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a8723ccec4e564d4b9a79923246f7b9a8de4ec55fa03ec4ec804459dade3c4f"}, - {file = "coverage-7.2.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5906f6a84b47f995cd1bf0aca1c72d591c55ee955f98074e93660d64dfc66eb9"}, - {file = "coverage-7.2.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52c139b7ab3f0b15f9aad0a3fedef5a1f8c0b2bdc291d88639ca2c97d3682416"}, - {file = "coverage-7.2.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a5ffd45c6b93c23a8507e2f436983015c6457aa832496b6a095505ca2f63e8f1"}, - {file = "coverage-7.2.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4f3c7c19581d471af0e9cb49d928172cd8492cd78a2b7a4e82345d33662929bb"}, - {file = "coverage-7.2.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e8c0e79820cdd67978e1120983786422d279e07a381dbf89d03bbb23ec670a6"}, - {file = "coverage-7.2.6-cp39-cp39-win32.whl", hash = "sha256:13cde6bb0e58fb67d09e2f373de3899d1d1e866c5a9ff05d93615f2f54fbd2bb"}, - {file = "coverage-7.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:6b9f64526286255735847aed0221b189486e0b9ed943446936e41b7e44b08783"}, - {file = "coverage-7.2.6-pp37.pp38.pp39-none-any.whl", hash = "sha256:6babcbf1e66e46052442f10833cfc4a0d3554d8276aa37af8531a83ed3c1a01d"}, - {file = "coverage-7.2.6.tar.gz", hash = "sha256:2025f913f2edb0272ef15d00b1f335ff8908c921c8eb2013536fcaf61f5a683d"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, ] [package.dependencies] @@ -657,31 +640,30 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "40.0.2" +version = "41.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "cryptography-40.0.2-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:8f79b5ff5ad9d3218afb1e7e20ea74da5f76943ee5edb7f76e56ec5161ec782b"}, - {file = "cryptography-40.0.2-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:05dc219433b14046c476f6f09d7636b92a1c3e5808b9a6536adf4932b3b2c440"}, - {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df2af28d7bedc84fe45bd49bc35d710aede676e2a4cb7fc6d103a2adc8afe4d"}, - {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dcca15d3a19a66e63662dc8d30f8036b07be851a8680eda92d079868f106288"}, - {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a04386fb7bc85fab9cd51b6308633a3c271e3d0d3eae917eebab2fac6219b6d2"}, - {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:adc0d980fd2760c9e5de537c28935cc32b9353baaf28e0814df417619c6c8c3b"}, - {file = "cryptography-40.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d5a1bd0e9e2031465761dfa920c16b0065ad77321d8a8c1f5ee331021fda65e9"}, - {file = "cryptography-40.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a95f4802d49faa6a674242e25bfeea6fc2acd915b5e5e29ac90a32b1139cae1c"}, - {file = "cryptography-40.0.2-cp36-abi3-win32.whl", hash = "sha256:aecbb1592b0188e030cb01f82d12556cf72e218280f621deed7d806afd2113f9"}, - {file = "cryptography-40.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:b12794f01d4cacfbd3177b9042198f3af1c856eedd0a98f10f141385c809a14b"}, - {file = "cryptography-40.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:142bae539ef28a1c76794cca7f49729e7c54423f615cfd9b0b1fa90ebe53244b"}, - {file = "cryptography-40.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:956ba8701b4ffe91ba59665ed170a2ebbdc6fc0e40de5f6059195d9f2b33ca0e"}, - {file = "cryptography-40.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f01c9863da784558165f5d4d916093737a75203a5c5286fde60e503e4276c7a"}, - {file = "cryptography-40.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3daf9b114213f8ba460b829a02896789751626a2a4e7a43a28ee77c04b5e4958"}, - {file = "cryptography-40.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48f388d0d153350f378c7f7b41497a54ff1513c816bcbbcafe5b829e59b9ce5b"}, - {file = "cryptography-40.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c0764e72b36a3dc065c155e5b22f93df465da9c39af65516fe04ed3c68c92636"}, - {file = "cryptography-40.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:cbaba590180cba88cb99a5f76f90808a624f18b169b90a4abb40c1fd8c19420e"}, - {file = "cryptography-40.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7a38250f433cd41df7fcb763caa3ee9362777fdb4dc642b9a349721d2bf47404"}, - {file = "cryptography-40.0.2.tar.gz", hash = "sha256:c33c0d32b8594fa647d2e01dbccc303478e16fdd7cf98652d5b3ed11aa5e5c99"}, + {file = "cryptography-41.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:f73bff05db2a3e5974a6fd248af2566134d8981fd7ab012e5dd4ddb1d9a70699"}, + {file = "cryptography-41.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:1a5472d40c8f8e91ff7a3d8ac6dfa363d8e3138b961529c996f3e2df0c7a411a"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fa01527046ca5facdf973eef2535a27fec4cb651e4daec4d043ef63f6ecd4ca"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b46e37db3cc267b4dea1f56da7346c9727e1209aa98487179ee8ebed09d21e43"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d198820aba55660b4d74f7b5fd1f17db3aa5eb3e6893b0a41b75e84e4f9e0e4b"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:948224d76c4b6457349d47c0c98657557f429b4e93057cf5a2f71d603e2fc3a3"}, + {file = "cryptography-41.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:059e348f9a3c1950937e1b5d7ba1f8e968508ab181e75fc32b879452f08356db"}, + {file = "cryptography-41.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b4ceb5324b998ce2003bc17d519080b4ec8d5b7b70794cbd2836101406a9be31"}, + {file = "cryptography-41.0.1-cp37-abi3-win32.whl", hash = "sha256:8f4ab7021127a9b4323537300a2acfb450124b2def3756f64dc3a3d2160ee4b5"}, + {file = "cryptography-41.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:1fee5aacc7367487b4e22484d3c7e547992ed726d14864ee33c0176ae43b0d7c"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9a6c7a3c87d595608a39980ebaa04d5a37f94024c9f24eb7d10262b92f739ddb"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5d092fdfedaec4cbbffbf98cddc915ba145313a6fdaab83c6e67f4e6c218e6f3"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a8e6c2de6fbbcc5e14fd27fb24414507cb3333198ea9ab1258d916f00bc3039"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb33ccf15e89f7ed89b235cff9d49e2e62c6c981a6061c9c8bb47ed7951190bc"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f0ff6e18d13a3de56f609dd1fd11470918f770c6bd5d00d632076c727d35485"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7bfc55a5eae8b86a287747053140ba221afc65eb06207bedf6e019b8934b477c"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eb8163f5e549a22888c18b0d53d6bb62a20510060a22fd5a995ec8a05268df8a"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8dde71c4169ec5ccc1087bb7521d54251c016f126f922ab2dfe6649170a3b8c5"}, + {file = "cryptography-41.0.1.tar.gz", hash = "sha256:d34579085401d3f49762d2f7d6634d6b6c2ae1242202e860f4d26b046e3a1006"}, ] [package.dependencies] @@ -690,18 +672,17 @@ 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"] -sdist = ["setuptools-rust (>=0.11.4)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-shard (>=0.1.2)", "pytest-subtests", "pytest-xdist"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] -tox = ["tox"] [[package]] name = "cycler" version = "0.11.0" description = "Composable style cycles" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -711,23 +692,22 @@ files = [ [[package]] name = "dash" -version = "2.10.0" +version = "2.10.2" description = "A Python framework for building reactive web-apps. Developed by Plotly." -category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "dash-2.10.0-py3-none-any.whl", hash = "sha256:2a010cd593f952041ab1737ea8af574b19be54584f52665f269eb0bcfef765fa"}, - {file = "dash-2.10.0.tar.gz", hash = "sha256:33abd550733a609247b792d29d5b8fc9663e5161409a3179ec24551f4b74f2a6"}, + {file = "dash-2.10.2-py3-none-any.whl", hash = "sha256:f1b7132558bd2341e6cf7ca1e83e216d46bbb27a255ca962a0fa5561c6776953"}, + {file = "dash-2.10.2.tar.gz", hash = "sha256:b99839890b44171da0e3668c2e607ef4b4f6948a6074c034693534ba52aa1d2b"}, ] [package.dependencies] dash-core-components = "2.0.0" dash-html-components = "2.0.0" dash-table = "5.0.0" -Flask = ">=1.0.4,<=2.2.3" +Flask = ">=1.0.4,<2.3.0" plotly = ">=5.0.0" -Werkzeug = "<=2.2.3" +Werkzeug = "<2.3.0" [package.extras] celery = ["celery[redis] (>=5.1.2)", "importlib-metadata (<5)", "redis (>=3.5.3)"] @@ -741,7 +721,6 @@ testing = ["beautifulsoup4 (>=4.8.2)", "cryptography (<3.4)", "dash-testing-stub name = "dash-bootstrap-components" version = "1.4.1" description = "Bootstrap themed components for use in Plotly Dash" -category = "main" optional = true python-versions = ">=3.7, <4" files = [ @@ -759,7 +738,6 @@ pandas = ["numpy", "pandas"] name = "dash-core-components" version = "2.0.0" description = "Core component suite for Dash" -category = "main" optional = true python-versions = "*" files = [ @@ -771,7 +749,6 @@ files = [ name = "dash-cytoscape" version = "0.3.0" description = "A Component Library for Dash aimed at facilitating network visualization in Python, wrapped around Cytoscape.js" -category = "main" optional = true python-versions = "*" files = [ @@ -786,7 +763,6 @@ dash = "*" name = "dash-dangerously-set-inner-html" version = "0.0.2" description = "A dash component for specifying raw HTML" -category = "main" optional = true python-versions = "*" files = [ @@ -797,7 +773,6 @@ files = [ name = "dash-html-components" version = "2.0.0" description = "Vanilla HTML components for Dash" -category = "main" optional = true python-versions = "*" files = [ @@ -809,7 +784,6 @@ files = [ name = "dash-table" version = "5.0.0" description = "Dash table" -category = "main" optional = true python-versions = "*" files = [ @@ -819,24 +793,23 @@ files = [ [[package]] name = "datadog-api-client" -version = "2.12.0" +version = "2.13.1" description = "Collection of all Datadog Public endpoints" -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "datadog-api-client-2.12.0.tar.gz", hash = "sha256:8d139a535249b8bea516537b8ada7c746eadd59187f9e02de8c2ae85c3ae0b31"}, - {file = "datadog_api_client-2.12.0-py3-none-any.whl", hash = "sha256:28b3bd1f4dfe27d44c71ae13f8906fce8483f69c950a078c330778de49f10746"}, + {file = "datadog-api-client-2.13.1.tar.gz", hash = "sha256:daa1e32d3ce71b9e0bc01d909a748706b880ad36248f9773b3068545026cb94c"}, + {file = "datadog_api_client-2.13.1-py3-none-any.whl", hash = "sha256:9e5dc669ea4e428e54520e188594a552e0f4f10385abb2cf34c164d93f4e8ab3"}, ] [package.dependencies] certifi = "*" python-dateutil = "*" typing-extensions = "*" -urllib3 = ">=1.15" +urllib3 = ">=1.15,<2.0" [package.extras] -apm = ["ddtrace (>=1.2.0)"] +apm = ["ddtrace (>=1.12.0,<1.13.0)"] async = ["aiosonic (==0.15.1)"] tests = ["aiosonic (==0.15.1)", "glom", "jinja2", "mypy", "pytest", "pytest-asyncio", "pytest-bdd (==6.0.1)", "pytest-randomly", "pytest-recording", "python-dateutil", "types-python-dateutil", "zstandard"] zstandard = ["zstandard"] @@ -845,7 +818,6 @@ zstandard = ["zstandard"] name = "debugpy" version = "1.6.7" description = "An implementation of the Debug Adapter Protocol for Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -873,7 +845,6 @@ files = [ name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -885,7 +856,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -897,7 +867,6 @@ files = [ name = "dependency-injector" version = "4.41.0" description = "Dependency injection framework for Python" -category = "main" optional = true python-versions = "*" files = [ @@ -986,7 +955,6 @@ yaml = ["pyyaml"] name = "deprecation" version = "2.1.0" description = "A library to handle automated deprecations" -category = "main" optional = true python-versions = "*" files = [ @@ -1001,7 +969,6 @@ packaging = "*" name = "dill" version = "0.3.6" description = "serialize all of python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1016,7 +983,6 @@ graph = ["objgraph (>=1.7.2)"] name = "docutils" version = "0.19" description = "Docutils -- Python Documentation Utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1028,7 +994,6 @@ files = [ name = "engineering-notation" version = "0.8.0" description = "Easy engineering notation" -category = "main" optional = true python-versions = "*" files = [ @@ -1039,7 +1004,6 @@ files = [ name = "exceptiongroup" version = "1.1.1" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1054,7 +1018,6 @@ test = ["pytest (>=6)"] name = "executing" version = "1.2.0" description = "Get the currently executing AST node of a frame, and other information" -category = "main" optional = false python-versions = "*" files = [ @@ -1069,7 +1032,6 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] name = "fastjsonschema" version = "2.17.1" description = "Fastest Python implementation of JSON schema" -category = "main" optional = false python-versions = "*" files = [ @@ -1082,14 +1044,13 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "flask" -version = "2.2.3" +version = "2.2.5" description = "A simple framework for building complex web applications." -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "Flask-2.2.3-py3-none-any.whl", hash = "sha256:c0bec9477df1cb867e5a67c9e1ab758de9cb4a3e52dd70681f59fa40a62b3f2d"}, - {file = "Flask-2.2.3.tar.gz", hash = "sha256:7eb373984bf1c770023fce9db164ed0c3353cd0b53f130f4693da0ca756a2e6d"}, + {file = "Flask-2.2.5-py3-none-any.whl", hash = "sha256:58107ed83443e86067e41eff4631b058178191a355886f8e479e347fa1285fdf"}, + {file = "Flask-2.2.5.tar.gz", hash = "sha256:edee9b0a7ff26621bd5a8c10ff484ae28737a2410d99b0bb9a6850c7fb977aa0"}, ] [package.dependencies] @@ -1107,7 +1068,6 @@ dotenv = ["python-dotenv"] name = "fonttools" version = "4.39.4" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1133,7 +1093,6 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "furo" version = "2023.5.20" description = "A clean customisable Sphinx documentation theme." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1151,7 +1110,6 @@ sphinx-basic-ng = "*" name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" -category = "main" optional = true python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1162,7 +1120,6 @@ files = [ name = "google-api-core" version = "2.11.0" description = "Google API client core library" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1183,21 +1140,21 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] [[package]] name = "google-auth" -version = "2.17.3" +version = "2.19.1" description = "Google Authentication Library" -category = "main" optional = true -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" +python-versions = ">=3.6" files = [ - {file = "google-auth-2.17.3.tar.gz", hash = "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc"}, - {file = "google_auth-2.17.3-py2.py3-none-any.whl", hash = "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f"}, + {file = "google-auth-2.19.1.tar.gz", hash = "sha256:a9cfa88b3e16196845e64a3658eb953992129d13ac7337b064c6546f77c17183"}, + {file = "google_auth-2.19.1-py2.py3-none-any.whl", hash = "sha256:ea165e014c7cbd496558796b627c271aa8c18b4cba79dc1cc962b24c5efdfb85"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" -rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} +rsa = ">=3.1.4,<5" six = ">=1.9.0" +urllib3 = "<2.0" [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] @@ -1210,7 +1167,6 @@ requests = ["requests (>=2.20.0,<3.0.0dev)"] name = "googleapis-common-protos" version = "1.59.0" description = "Common protobufs used in Google APIs" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1228,7 +1184,6 @@ grpc = ["grpcio (>=1.44.0,<2.0.0dev)"] name = "grpcio" version = "1.54.2" description = "HTTP/2-based RPC framework" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1286,7 +1241,6 @@ protobuf = ["grpcio-tools (>=1.54.2)"] name = "grpclib" version = "0.4.4" description = "Pure-Python gRPC implementation for asyncio" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1304,7 +1258,6 @@ protobuf = ["protobuf (>=3.15.0)"] name = "h2" version = "4.1.0" description = "HTTP/2 State-Machine based protocol implementation" -category = "main" optional = true python-versions = ">=3.6.1" files = [ @@ -1318,25 +1271,26 @@ hyperframe = ">=6.0,<7" [[package]] name = "h5netcdf" -version = "1.1.0" +version = "1.2.0" description = "netCDF4 via h5py" -category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.9" files = [ - {file = "h5netcdf-1.1.0-py2.py3-none-any.whl", hash = "sha256:338e65212cee129e4508a49994f230a3083910fbf20454bb57aa1ca99687ad34"}, - {file = "h5netcdf-1.1.0.tar.gz", hash = "sha256:932c3b573bed7370ebfc9e802cd60f1a4da5236efb11b36eeff897324d76bf56"}, + {file = "h5netcdf-1.2.0-py3-none-any.whl", hash = "sha256:aa53c39b94bcd4595a2e5a2f62f3fb4fb8a723b5ca0a05f2db352f014bcfe72c"}, + {file = "h5netcdf-1.2.0.tar.gz", hash = "sha256:7f6b2733bde06ea2575b79a6450d9bd5c38918ff4cb2a355bf22bbe8c86c6bcf"}, ] [package.dependencies] h5py = "*" packaging = "*" +[package.extras] +test = ["netCDF4", "pytest"] + [[package]] name = "h5py" version = "3.8.0" description = "Read and write HDF5 files from Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1374,7 +1328,6 @@ numpy = ">=1.14.5" name = "hpack" version = "4.0.0" description = "Pure-Python HPACK header compression" -category = "main" optional = true python-versions = ">=3.6.1" files = [ @@ -1386,7 +1339,6 @@ files = [ name = "hyperframe" version = "6.0.1" description = "HTTP/2 framing layer for Python" -category = "main" optional = true python-versions = ">=3.6.1" files = [ @@ -1398,7 +1350,6 @@ files = [ name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1410,7 +1361,6 @@ files = [ name = "ifaddr" version = "0.2.0" description = "Cross-platform network interface and IP address enumeration library" -category = "main" optional = true python-versions = "*" files = [ @@ -1422,7 +1372,6 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1434,7 +1383,6 @@ files = [ name = "importlib-metadata" version = "6.6.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1454,7 +1402,6 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1473,7 +1420,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1485,7 +1431,6 @@ files = [ name = "intervaltree" version = "3.1.0" description = "Editable interval tree data structure for Python 2 and 3" -category = "main" optional = true python-versions = "*" files = [ @@ -1499,7 +1444,6 @@ sortedcontainers = ">=2.0,<3.0" name = "ipykernel" version = "6.23.1" description = "IPython Kernel for Jupyter" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -1513,7 +1457,7 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -1531,14 +1475,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" [[package]] name = "ipython" -version = "8.13.2" +version = "8.14.0" description = "IPython: Productive Interactive Computing" -category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "ipython-8.13.2-py3-none-any.whl", hash = "sha256:ffca270240fbd21b06b2974e14a86494d6d29290184e788275f55e0b55914926"}, - {file = "ipython-8.13.2.tar.gz", hash = "sha256:7dff3fad32b97f6488e02f87b970f309d082f758d7b7fc252e3b19ee0e432dbb"}, + {file = "ipython-8.14.0-py3-none-any.whl", hash = "sha256:248aca623f5c99a6635bc3857677b7320b9b8039f99f070ee0d20a5ca5a8e6bf"}, + {file = "ipython-8.14.0.tar.gz", hash = "sha256:1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1"}, ] [package.dependencies] @@ -1573,7 +1516,6 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "ipywidgets" version = "8.0.6" description = "Jupyter interactive widgets" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1595,7 +1537,6 @@ test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1613,7 +1554,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1625,7 +1565,6 @@ files = [ name = "jedi" version = "0.18.2" description = "An autocompletion tool for Python that can be used for text editors." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1645,7 +1584,6 @@ testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1663,7 +1601,6 @@ i18n = ["Babel (>=2.7)"] name = "joblib" version = "1.2.0" description = "Lightweight pipelining with Python functions" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1675,7 +1612,6 @@ files = [ name = "jsonref" version = "1.1.0" description = "jsonref is a library for automatic dereferencing of JSON Reference objects for Python." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1687,7 +1623,6 @@ files = [ name = "jsonschema" version = "4.17.3" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1707,7 +1642,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jupyter-client" version = "8.2.0" description = "Jupyter protocol implementation and client libraries" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1717,7 +1651,7 @@ files = [ [package.dependencies] importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" @@ -1731,7 +1665,6 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-core" 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 = [ @@ -1752,7 +1685,6 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] name = "jupyterlab-pygments" version = "0.2.2" description = "Pygments theme using JupyterLab CSS variables" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1764,7 +1696,6 @@ files = [ name = "jupyterlab-widgets" version = "3.0.7" description = "Jupyter interactive widgets for JupyterLab" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1776,7 +1707,6 @@ files = [ name = "kiwisolver" version = "1.4.4" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1854,7 +1784,6 @@ files = [ name = "laboneq" version = "2.5.0" description = "Zurich Instruments LabOne Q software framework for quantum computing control" -category = "main" optional = true python-versions = ">=3.9" files = [ @@ -1891,7 +1820,6 @@ zhinst-utils = ">=0.3.0,<0.4.0" name = "latexcodec" version = "2.0.1" description = "A lexer and codec to work with LaTeX code in Python." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1906,7 +1834,6 @@ six = ">=1.4.1" name = "lazy-loader" version = "0.2" description = "lazy_loader" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1922,7 +1849,6 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "lazy-object-proxy" version = "1.9.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1968,7 +1894,6 @@ files = [ name = "markdown" version = "3.4.3" description = "Python implementation of John Gruber's Markdown." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1984,69 +1909,67 @@ testing = ["coverage", "pyyaml"] [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, ] [[package]] name = "marshmallow" version = "3.19.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2067,7 +1990,6 @@ tests = ["pytest", "pytz", "simplejson"] name = "marshmallow-enum" version = "1.5.1" description = "Enum field for Marshmallow" -category = "main" optional = true python-versions = "*" files = [ @@ -2082,7 +2004,6 @@ marshmallow = ">=2.0.0" name = "marshmallow-polyfield" version = "5.11" description = "An unofficial extension to Marshmallow to allow for polymorphic fields" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -2096,7 +2017,6 @@ marshmallow = ">=3.0.0b10" name = "marshmallow-union" version = "0.1.15.post1" description = "Union fields for marshmallow." -category = "main" optional = true python-versions = "*" files = [ @@ -2111,7 +2031,6 @@ marshmallow = ">=3.0.0" name = "matplotlib" version = "3.7.1" description = "Python plotting package" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2174,7 +2093,6 @@ python-dateutil = ">=2.7" name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2189,7 +2107,6 @@ traitlets = "*" name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2201,7 +2118,6 @@ files = [ name = "mistune" version = "2.0.5" description = "A sane Markdown parser with useful plugins and renderers" -category = "dev" optional = false python-versions = "*" files = [ @@ -2213,7 +2129,6 @@ files = [ name = "more-itertools" version = "9.1.0" description = "More routines for operating on iterables, beyond itertools" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2225,7 +2140,6 @@ files = [ name = "mpmath" version = "1.3.0" description = "Python library for arbitrary-precision floating-point arithmetic" -category = "main" optional = false python-versions = "*" files = [ @@ -2243,7 +2157,6 @@ tests = ["pytest (>=4.6)"] name = "msal" version = "1.22.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." -category = "main" optional = true python-versions = "*" files = [ @@ -2263,7 +2176,6 @@ broker = ["pymsalruntime (>=0.13.2,<0.14)"] name = "msal-extensions" version = "1.0.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." -category = "main" optional = true python-versions = "*" files = [ @@ -2282,7 +2194,6 @@ portalocker = [ name = "multidict" version = "6.0.4" description = "multidict implementation" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2366,7 +2277,6 @@ files = [ name = "nbclient" version = "0.8.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -2376,7 +2286,7 @@ files = [ [package.dependencies] jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" nbformat = ">=5.1" traitlets = ">=5.4" @@ -2389,7 +2299,6 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= name = "nbconvert" version = "7.4.0" description = "Converting Jupyter Notebooks" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2426,14 +2335,13 @@ webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.8.0" +version = "5.9.0" description = "The Jupyter Notebook format" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "nbformat-5.8.0-py3-none-any.whl", hash = "sha256:d910082bd3e0bffcf07eabf3683ed7dda0727a326c446eeb2922abe102e65162"}, - {file = "nbformat-5.8.0.tar.gz", hash = "sha256:46dac64c781f1c34dfd8acba16547024110348f9fc7eab0f31981c2a3dc48d1f"}, + {file = "nbformat-5.9.0-py3-none-any.whl", hash = "sha256:8c8fa16d6d05062c26177754bfbfac22de644888e2ef69d27ad2a334cf2576e5"}, + {file = "nbformat-5.9.0.tar.gz", hash = "sha256:e98ebb6120c3efbafdee2a40af2a140cadee90bb06dd69a2a63d9551fcc7f976"}, ] [package.dependencies] @@ -2450,7 +2358,6 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nbsphinx" version = "0.9.2" description = "Jupyter Notebook Tools for Sphinx" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2470,7 +2377,6 @@ traitlets = ">=5" name = "nest-asyncio" version = "1.5.6" description = "Patch asyncio to allow nested event loops" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -2482,7 +2388,6 @@ files = [ name = "networkx" version = "3.1" description = "Python package for creating and manipulating graphs and networks" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2501,7 +2406,6 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "numpy" version = "1.24.3" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2539,7 +2443,6 @@ files = [ name = "opencensus" version = "0.11.2" description = "A stats collection and distributed tracing framework" -category = "main" optional = true python-versions = "*" files = [ @@ -2555,7 +2458,6 @@ opencensus-context = ">=0.1.3" name = "opencensus-context" version = "0.1.3" description = "OpenCensus Runtime Context" -category = "main" optional = true python-versions = "*" files = [ @@ -2567,7 +2469,6 @@ files = [ name = "opencensus-ext-azure" version = "1.1.9" description = "OpenCensus Azure Monitor Exporter" -category = "main" optional = true python-versions = "*" files = [ @@ -2586,7 +2487,6 @@ requests = ">=2.19.0" name = "openpulse" version = "0.4.2" description = "Reference OpenPulse AST in Python" -category = "main" optional = true python-versions = "*" files = [ @@ -2607,7 +2507,6 @@ tests = ["pytest (>=6.0)", "pyyaml"] name = "openqasm3" version = "0.4.0" description = "Reference OpenQASM AST in Python" -category = "main" optional = true python-versions = "*" files = [ @@ -2626,65 +2525,63 @@ tests = ["pytest (>=6.0)", "pyyaml"] [[package]] name = "orjson" -version = "3.8.14" +version = "3.9.0" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "orjson-3.8.14-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7a7b0fead2d0115ef927fa46ad005d7a3988a77187500bf895af67b365c10d1f"}, - {file = "orjson-3.8.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca90db8f551b8960da95b0d4cad6c0489df52ea03585b6979595be7b31a3f946"}, - {file = "orjson-3.8.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4ac01a3db4e6a98a8ad1bb1a3e8bfc777928939e87c04e93e0d5006df574a4b"}, - {file = "orjson-3.8.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf6825e160e4eb0ef65ce37d8c221edcab96ff2ffba65e5da2437a60a12b3ad1"}, - {file = "orjson-3.8.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f80e62afe49e6bfc706e041faa351d7520b5f86572b8e31455802251ea989613"}, - {file = "orjson-3.8.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6112194c11e611596eed72f46efb0e6b4812682eff3c7b48473d1146c3fa0efb"}, - {file = "orjson-3.8.14-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:739f9f633e1544f2a477fa3bef380f488c8dca6e2521c8dc36424b12554ee31e"}, - {file = "orjson-3.8.14-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d3d8faded5a514b80b56d0429eb38b429d7a810f8749d25dc10a0cc15b8a3c8"}, - {file = "orjson-3.8.14-cp310-none-win_amd64.whl", hash = "sha256:0bf00c42333412a9338297bf888d7428c99e281e20322070bde8c2314775508b"}, - {file = "orjson-3.8.14-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d66966fd94719beb84e8ed84833bc59c3c005d3d2d0c42f11d7552d3267c6de7"}, - {file = "orjson-3.8.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087c0dc93379e8ba2d59e9f586fab8de8c137d164fccf8afd5523a2137570917"}, - {file = "orjson-3.8.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04c70dc8ca79b0072a16d82f94b9d9dd6598a43dd753ab20039e9f7d2b14f017"}, - {file = "orjson-3.8.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aedba48264fe87e5060c0e9c2b28909f1e60626e46dc2f77e0c8c16939e2e1f7"}, - {file = "orjson-3.8.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01640ab79111dd97515cba9fab7c66cb3b0967b0892cc74756a801ff681a01b6"}, - {file = "orjson-3.8.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b206cca6836a4c6683bcaa523ab467627b5f03902e5e1082dc59cd010e6925f"}, - {file = "orjson-3.8.14-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ee0299b2dda9afce351a5e8c148ea7a886de213f955aa0288fb874fb44829c36"}, - {file = "orjson-3.8.14-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:31a2a29be559e92dcc5c278787b4166da6f0d45675b59a11c4867f5d1455ebf4"}, - {file = "orjson-3.8.14-cp311-none-win_amd64.whl", hash = "sha256:20b7ffc7736000ea205f9143df322b03961f287b4057606291c62c842ff3c5b5"}, - {file = "orjson-3.8.14-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:de1ee13d6b6727ee1db38722695250984bae81b8fc9d05f1176c74d14b1322d9"}, - {file = "orjson-3.8.14-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ee09bfbf1d54c127d3061f6721a1a11d2ce502b50597c3d0d2e1bd2d235b764"}, - {file = "orjson-3.8.14-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:97ebb7fab5f1ae212a6501f17cb7750a6838ffc2f1cebbaa5dec1a90038ca3c6"}, - {file = "orjson-3.8.14-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38ca39bae7fbc050332a374062d4cdec28095540fa8bb245eada467897a3a0bb"}, - {file = "orjson-3.8.14-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:92374bc35b6da344a927d5a850f7db80a91c7b837de2f0ea90fc870314b1ff44"}, - {file = "orjson-3.8.14-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9393a63cb0424515ec5e434078b3198de6ec9e057f1d33bad268683935f0a5d5"}, - {file = "orjson-3.8.14-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5fb66f0ac23e861b817c858515ac1f74d1cd9e72e3f82a5b2c9bae9f92286adc"}, - {file = "orjson-3.8.14-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19415aaf30525a5baff0d72a089fcdd68f19a3674998263c885c3908228c1086"}, - {file = "orjson-3.8.14-cp37-none-win_amd64.whl", hash = "sha256:87ba7882e146e24a7d8b4a7971c20212c2af75ead8096fc3d55330babb1015fb"}, - {file = "orjson-3.8.14-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9f5cf61b6db68f213c805c55bf0aab9b4cb75a4e9c7f5bfbd4deb3a0aef0ec53"}, - {file = "orjson-3.8.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33bc310da4ad2ffe8f7f1c9e89692146d9ec5aec2d1c9ef6b67f8dc5e2d63241"}, - {file = "orjson-3.8.14-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:67a7e883b6f782b106683979ccc43d89b98c28a1f4a33fe3a22e253577499bb1"}, - {file = "orjson-3.8.14-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9df820e6c8c84c52ec39ea2cc9c79f7999c839c7d1481a056908dce3b90ce9f9"}, - {file = "orjson-3.8.14-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebca14ae80814219ea3327e3dfa7ff618621ff335e45781fac26f5cd0b48f2b4"}, - {file = "orjson-3.8.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27967be4c16bd09f4aeff8896d9be9cbd00fd72f5815d5980e4776f821e2f77c"}, - {file = "orjson-3.8.14-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:062829b5e20cd8648bf4c11c3a5ee7cf196fa138e573407b5312c849b0cf354d"}, - {file = "orjson-3.8.14-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e53bc5beb612df8ddddb065f079d3fd30b5b4e73053518524423549d61177f3f"}, - {file = "orjson-3.8.14-cp38-none-win_amd64.whl", hash = "sha256:d03f29b0369bb1ab55c8a67103eb3a9675daaf92f04388568034fe16be48fa5d"}, - {file = "orjson-3.8.14-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:716a3994e039203f0a59056efa28185d4cac51b922cc5bf27ab9182cfa20e12e"}, - {file = "orjson-3.8.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cb35dd3ba062c1d984d57e6477768ed7b62ed9260f31362b2d69106f9c60ebd"}, - {file = "orjson-3.8.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0bc6b7abf27f1dc192dadad249df9b513912506dd420ce50fd18864a33789b71"}, - {file = "orjson-3.8.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7e2f75b7d9285e35c3d4dff9811185535ff2ea637f06b2b242cb84385f8ffe63"}, - {file = "orjson-3.8.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:017de5ba22e58dfa6f41914f5edb8cd052d23f171000684c26b2d2ab219db31e"}, - {file = "orjson-3.8.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09a3bf3154f40299b8bc95e9fb8da47436a59a2106fc22cae15f76d649e062da"}, - {file = "orjson-3.8.14-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:64b4fca0531030040e611c6037aaf05359e296877ab0a8e744c26ef9c32738b9"}, - {file = "orjson-3.8.14-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8a896a12b38fe201a72593810abc1f4f1597e65b8c869d5fc83bbcf75d93398f"}, - {file = "orjson-3.8.14-cp39-none-win_amd64.whl", hash = "sha256:9725226478d1dafe46d26f758eadecc6cf98dcbb985445e14a9c74aaed6ccfea"}, - {file = "orjson-3.8.14.tar.gz", hash = "sha256:5ea93fd3ef7be7386f2516d728c877156de1559cda09453fc7dd7b696d0439b3"}, + {file = "orjson-3.9.0-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:128b1cd0f00a37ba64a12cceeba4e8070655d4400edd55a737513ee663c1ed5a"}, + {file = "orjson-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a3693fde44b2eeb80074ecbe8c504b25baf71e66c080af2a574193a5ba81960"}, + {file = "orjson-3.9.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f1193417b5a93deb41bcb8db27b61179b9b3e299b337b578c31f19159664da3"}, + {file = "orjson-3.9.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88626d898c408450c57664899831cf072787898af4847fa4466607ad2a83f454"}, + {file = "orjson-3.9.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e3bde77c1e0061eb34bae6fea44818b2198e043ee10a16ad7b160921fee26ea"}, + {file = "orjson-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45df5bf6531ffda518331cc93cdcd4c84f4a4a0507d72af8fb698c7131a440a0"}, + {file = "orjson-3.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2536a7f30fd4d77532769ea9285cd20c69bd2b40acf980de94bbc79b1c6fad5a"}, + {file = "orjson-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:21f6a6fdfbc13cd715c61e9fa9daeff732df6401ab7d6a2ebad0042313a40bd1"}, + {file = "orjson-3.9.0-cp310-none-win_amd64.whl", hash = "sha256:46c9733330b75c116438f555c0b971a2388b5f502e2dd4ec3bf6bacb96f82741"}, + {file = "orjson-3.9.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47d7e4a3effc0e9314bd5b06e7431f2490a5e64dcdcbbc4d60e713786fec327d"}, + {file = "orjson-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c41d1ef6ec308e9e3701764b3de889ed8c1c126eceaea881dd1027bffbed89fe"}, + {file = "orjson-3.9.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:86da00836029b2a071229c8aecab998a2f316c1bc7de10ae020d7311de3a6d0d"}, + {file = "orjson-3.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4fcf598bd5a99a94caa7ec92ce657939f12491e4753ea7e4d6c03faf5f7912e"}, + {file = "orjson-3.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09522937479bd39d5bb32d11a5ecdf6926fda43ac2cbde21cc1a9508b4e4ea29"}, + {file = "orjson-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2fbf34667a8be48ec89d5ef479a00d4e7b3acda62d722c97377702da0c30ffd"}, + {file = "orjson-3.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:edd77183c154cbedaa6dac32fee9cb770b04e2a7f367a5864f444578554cc946"}, + {file = "orjson-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2af7dff1c7ddb0c83eb5773acf6566b153f8cd32e4ba782ae9ccd6d0f324efd3"}, + {file = "orjson-3.9.0-cp311-none-win_amd64.whl", hash = "sha256:44fa74b497e608a8cdca1ee37fe3533a30f17163c7e2872ab1b854900cf0dfcf"}, + {file = "orjson-3.9.0-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f6476e2487c0b7387187de15e5b8f6635c29b75934f2e689ca8cad6550439f3d"}, + {file = "orjson-3.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7b241c3229084035b38cac9b5c96b43644da829da41d9d5be0fefb96fb116e1"}, + {file = "orjson-3.9.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d414fd0678e949779104f5b307f0f9fac861728e19d3cdde66759af77f892da0"}, + {file = "orjson-3.9.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a1fcddcabe121e393f3c4a31ed6d3535214d42a4ece0f9dde2e250006d6a58d"}, + {file = "orjson-3.9.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd89d63707ac616462832bfc5d16fa0c12483f86add2432ce55c8710c9531c03"}, + {file = "orjson-3.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c50654e4870805e4b1a587c2c3c5ef2f36f3e67fc463a738339ff40d65f7db1"}, + {file = "orjson-3.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:721d47dffedb7795ffea8a06f2de7d192de7b58e085cf357a99abf0eb931f2c3"}, + {file = "orjson-3.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9de2129d40674007cb24164939e075b5b39fee768bf20801e08c0e3283bfb18e"}, + {file = "orjson-3.9.0-cp37-none-win_amd64.whl", hash = "sha256:5afd22847b07b63f2b8fcfddd5b7a6f47c5aaa25e19b97a3d6d39508b8fd465a"}, + {file = "orjson-3.9.0-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d4c2d31178e3027affd98eead033f1c406890df83a0ca2016604cc21f722a1d1"}, + {file = "orjson-3.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebe372e9f4e4f0335b7b4ebfab991b3734371e3d5b7f989ca3baa5da25185f4a"}, + {file = "orjson-3.9.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4949fc1304b702197c0840882e84b86d8d5ca33c3d945cc60727bc1786c2b20"}, + {file = "orjson-3.9.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:748c1e8df0b0880c63d323e167ad17ab4db2e1178a40902c2fcb68cbe402d7c8"}, + {file = "orjson-3.9.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6ab80b60195f166a9d666b2eaf6d2c74202b6da2a1fb4b4d66b9cc0ce5c9957"}, + {file = "orjson-3.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e44ebe2129d43c5a48f3affa3fa59c6484ed16faf5b00486add1061a95384ab0"}, + {file = "orjson-3.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:04e61db09ff155846b69d07cf5aa21001f2010ea669ec3169c1fbad9c9e40cd5"}, + {file = "orjson-3.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c68af71b1110820c914f9df75842895b5528ff524d3286fde57097b2b5ed8f22"}, + {file = "orjson-3.9.0-cp38-none-win_amd64.whl", hash = "sha256:3a208d0bca609de3152eb8320d5093ad9c52979332f626c13500d1645c66bf8d"}, + {file = "orjson-3.9.0-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a901c432828c191332d75f358142736c433d4a192f7794123e1d30d68193de86"}, + {file = "orjson-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:271b6f1018757fc6bca40ae72e6cdb6cf84584dde2d1e5eaac30e387a13d9e72"}, + {file = "orjson-3.9.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:949698bdddb1daff986d73e6bbe6cd68833cd80c4adc6b69fafbd46634d4672c"}, + {file = "orjson-3.9.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:108c58d2c7648c991f82f9b2217c50981ad7cf6aaee3efbfaa9d807e49cd69b8"}, + {file = "orjson-3.9.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08cb43569198c1f5c89ecafcbfc62414f6115d894ff908d8cf8e5e24801364e6"}, + {file = "orjson-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09ee828572fadcd58bf356d2c1bad99a95c7c9c1f182b407abbc7dec1810f542"}, + {file = "orjson-3.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e7fe5d603ee9177ff2e45858b4fc47fea2da0688f23d9773654889d56dfbc82"}, + {file = "orjson-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ee5f1ba82146a50d61fb58d310a37c0f406eda898172f9c98673b5d6f9461c3"}, + {file = "orjson-3.9.0-cp39-none-win_amd64.whl", hash = "sha256:3235c31d0fe674f6e3433e9ddfed212aa840c83a9b6ef5ae128950e2c808c303"}, + {file = "orjson-3.9.0.tar.gz", hash = "sha256:f6dd27c71cd6e146795f876449a8eae74f67ae1e4e244dfc1203489103eb2d94"}, ] [[package]] name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2696,7 +2593,6 @@ files = [ name = "pandas" version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2745,7 +2641,6 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] name = "pandocfilters" version = "1.5.0" description = "Utilities for writing pandoc filters in python" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2757,7 +2652,6 @@ files = [ name = "parso" version = "0.8.3" description = "A Python Parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2773,7 +2667,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." -category = "main" optional = false python-versions = "*" files = [ @@ -2788,7 +2681,6 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" -category = "main" optional = false python-versions = "*" files = [ @@ -2800,7 +2692,6 @@ files = [ name = "pillow" version = "9.5.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2880,7 +2771,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "platformdirs" version = "3.5.1" 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 = [ @@ -2896,7 +2786,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "plotly" version = "5.14.1" description = "An open-source, interactive data visualization library for Python" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2912,7 +2801,6 @@ tenacity = ">=6.2.0" name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2928,7 +2816,6 @@ testing = ["pytest", "pytest-benchmark"] name = "portalocker" version = "2.7.0" description = "Wraps the portalocker recipe for easy usage" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -2948,7 +2835,6 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "pretty-errors" version = "1.2.25" description = "Prettifies Python exception output to make it legible." -category = "main" optional = true python-versions = "*" files = [ @@ -2963,7 +2849,6 @@ colorama = "*" name = "prompt-toolkit" version = "3.0.38" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -2978,7 +2863,6 @@ wcwidth = "*" name = "protobuf" version = "3.20.3" description = "Protocol Buffers" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3010,7 +2894,6 @@ files = [ name = "psutil" version = "5.9.5" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3037,7 +2920,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -3049,7 +2931,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "main" optional = false python-versions = "*" files = [ @@ -3064,7 +2945,6 @@ tests = ["pytest"] name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -3076,7 +2956,6 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -3091,7 +2970,6 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pybase64" version = "1.2.3" description = "Fast Base64 encoding/decoding" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -3202,7 +3080,6 @@ test = ["pytest (>=5.0.0)"] name = "pybtex" version = "0.24.0" description = "A BibTeX-compatible bibliography processor in Python" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" files = [ @@ -3222,7 +3099,6 @@ test = ["pytest"] name = "pybtex-docutils" version = "1.0.2" description = "A docutils backend for pybtex." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3238,7 +3114,6 @@ pybtex = ">=0.16" name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3246,11 +3121,62 @@ files = [ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] +[[package]] +name = "pydantic" +version = "1.10.8" +description = "Data validation and settings management using python type hints" +optional = true +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1243d28e9b05003a89d72e7915fdb26ffd1d39bdd39b00b7dbe4afae4b557f9d"}, + {file = "pydantic-1.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0ab53b609c11dfc0c060d94335993cc2b95b2150e25583bec37a49b2d6c6c3f"}, + {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9613fadad06b4f3bc5db2653ce2f22e0de84a7c6c293909b48f6ed37b83c61f"}, + {file = "pydantic-1.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df7800cb1984d8f6e249351139667a8c50a379009271ee6236138a22a0c0f319"}, + {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0c6fafa0965b539d7aab0a673a046466d23b86e4b0e8019d25fd53f4df62c277"}, + {file = "pydantic-1.10.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e82d4566fcd527eae8b244fa952d99f2ca3172b7e97add0b43e2d97ee77f81ab"}, + {file = "pydantic-1.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab523c31e22943713d80d8d342d23b6f6ac4b792a1e54064a8d0cf78fd64e800"}, + {file = "pydantic-1.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:666bdf6066bf6dbc107b30d034615d2627e2121506c555f73f90b54a463d1f33"}, + {file = "pydantic-1.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:35db5301b82e8661fa9c505c800d0990bc14e9f36f98932bb1d248c0ac5cada5"}, + {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90c1e29f447557e9e26afb1c4dbf8768a10cc676e3781b6a577841ade126b85"}, + {file = "pydantic-1.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93e766b4a8226e0708ef243e843105bf124e21331694367f95f4e3b4a92bbb3f"}, + {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88f195f582851e8db960b4a94c3e3ad25692c1c1539e2552f3df7a9e972ef60e"}, + {file = "pydantic-1.10.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:34d327c81e68a1ecb52fe9c8d50c8a9b3e90d3c8ad991bfc8f953fb477d42fb4"}, + {file = "pydantic-1.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:d532bf00f381bd6bc62cabc7d1372096b75a33bc197a312b03f5838b4fb84edd"}, + {file = "pydantic-1.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7d5b8641c24886d764a74ec541d2fc2c7fb19f6da2a4001e6d580ba4a38f7878"}, + {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b1f6cb446470b7ddf86c2e57cd119a24959af2b01e552f60705910663af09a4"}, + {file = "pydantic-1.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c33b60054b2136aef8cf190cd4c52a3daa20b2263917c49adad20eaf381e823b"}, + {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1952526ba40b220b912cdc43c1c32bcf4a58e3f192fa313ee665916b26befb68"}, + {file = "pydantic-1.10.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb14388ec45a7a0dc429e87def6396f9e73c8c77818c927b6a60706603d5f2ea"}, + {file = "pydantic-1.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:16f8c3e33af1e9bb16c7a91fc7d5fa9fe27298e9f299cff6cb744d89d573d62c"}, + {file = "pydantic-1.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ced8375969673929809d7f36ad322934c35de4af3b5e5b09ec967c21f9f7887"}, + {file = "pydantic-1.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93e6bcfccbd831894a6a434b0aeb1947f9e70b7468f274154d03d71fabb1d7c6"}, + {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:191ba419b605f897ede9892f6c56fb182f40a15d309ef0142212200a10af4c18"}, + {file = "pydantic-1.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:052d8654cb65174d6f9490cc9b9a200083a82cf5c3c5d3985db765757eb3b375"}, + {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ceb6a23bf1ba4b837d0cfe378329ad3f351b5897c8d4914ce95b85fba96da5a1"}, + {file = "pydantic-1.10.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f2e754d5566f050954727c77f094e01793bcb5725b663bf628fa6743a5a9108"}, + {file = "pydantic-1.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:6a82d6cda82258efca32b40040228ecf43a548671cb174a1e81477195ed3ed56"}, + {file = "pydantic-1.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e59417ba8a17265e632af99cc5f35ec309de5980c440c255ab1ca3ae96a3e0e"}, + {file = "pydantic-1.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84d80219c3f8d4cad44575e18404099c76851bc924ce5ab1c4c8bb5e2a2227d0"}, + {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e4148e635994d57d834be1182a44bdb07dd867fa3c2d1b37002000646cc5459"}, + {file = "pydantic-1.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f7b0bf8553e310e530e9f3a2f5734c68699f42218bf3568ef49cd9b0e44df4"}, + {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42aa0c4b5c3025483240a25b09f3c09a189481ddda2ea3a831a9d25f444e03c1"}, + {file = "pydantic-1.10.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17aef11cc1b997f9d574b91909fed40761e13fac438d72b81f902226a69dac01"}, + {file = "pydantic-1.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:66a703d1983c675a6e0fed8953b0971c44dba48a929a2000a493c3772eb61a5a"}, + {file = "pydantic-1.10.8-py3-none-any.whl", hash = "sha256:7456eb22ed9aaa24ff3e7b4757da20d9e5ce2a81018c1b3ebd81a0b88a18f3b2"}, + {file = "pydantic-1.10.8.tar.gz", hash = "sha256:1410275520dfa70effadf4c21811d755e7ef9bb1f1d077a21958153a92c8d9ca"}, +] + +[package.dependencies] +typing-extensions = ">=4.2.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + [[package]] name = "pyelftools" version = "0.29" description = "Library for analyzing ELF files and DWARF debugging information" -category = "main" optional = true python-versions = "*" files = [ @@ -3262,7 +3188,6 @@ files = [ name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3277,7 +3202,6 @@ plugins = ["importlib-metadata"] name = "pyjwt" version = "2.7.0" description = "JSON Web Token implementation in Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3298,7 +3222,6 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pylint" version = "2.17.4" description = "python code static checker" -category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -3324,11 +3247,60 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] +[[package]] +name = "pynq" +version = "3.0.1" +description = "(PY)thon productivity for zy(NQ)" +optional = true +python-versions = ">=3.5.2" +files = [ + {file = "pynq-3.0.1.tar.gz", hash = "sha256:9c8833212ad91bbb8e95fb0bc76ee4f8deefff0780d02ea90845ea73afd54451"}, +] + +[package.dependencies] +cffi = "*" +nest_asyncio = "*" +numpy = "*" +pynqmetadata = ">=0.0.1" +pynqutils = ">=0.0.1" +setuptools = ">=24.2.0" + +[[package]] +name = "pynqmetadata" +version = "0.1.5" +description = "Extensible, Modular, Metadata layer for PYNQ projects" +optional = true +python-versions = ">=3.8" +files = [ + {file = "pynqmetadata-0.1.5.tar.gz", hash = "sha256:8e0ebb213b4251d095ac92f06fae16715746c36486ec2d28aa515f7594fd649a"}, +] + +[package.dependencies] +jsonschema = ">=3.2.0" +pydantic = "*" + +[[package]] +name = "pynqutils" +version = "0.1.1" +description = "Utilities for PYNQ" +optional = true +python-versions = ">=3.5.2" +files = [ + {file = "pynqutils-0.1.1-py3-none-any.whl", hash = "sha256:044e37c59b97a1f5d1fd51351aaf7f485d644c6a01c67147b206a3fce0463d02"}, +] + +[package.dependencies] +cffi = "*" +numpy = "*" +pynqmetadata = ">=0.0.1" +python-magic = ">=0.4.25" +setuptools = ">=24.2.0" +tqdm = "*" + [[package]] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -3343,7 +3315,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyrsistent" version = "0.19.3" description = "Persistent/Functional/Immutable data structures" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3380,7 +3351,6 @@ files = [ name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = true python-versions = "*" files = [ @@ -3395,7 +3365,6 @@ cp2110 = ["hidapi"] name = "pytest" version = "7.3.1" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3418,7 +3387,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3437,7 +3405,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pytest-env" version = "0.8.1" description = "py.test plugin that allows you to add environment variables." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3455,7 +3422,6 @@ test = ["coverage (>=6.5)", "pytest-mock (>=3.10)"] name = "python-box" version = "7.0.1" description = "Advanced Python dictionaries with dot notation access" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3490,7 +3456,6 @@ yaml = ["ruamel.yaml (>=0.17)"] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -3501,11 +3466,21 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-magic" +version = "0.4.27" +description = "File type identification using libmagic" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "python-magic-0.4.27.tar.gz", hash = "sha256:c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b"}, + {file = "python_magic-0.4.27-py2.py3-none-any.whl", hash = "sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3"}, +] + [[package]] name = "pytz" version = "2023.3" description = "World timezone definitions, modern and historical" -category = "main" optional = true python-versions = "*" files = [ @@ -3517,7 +3492,6 @@ files = [ name = "pyvisa" version = "1.13.0" description = "Python VISA bindings for GPIB, RS232, TCPIP and USB instruments" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -3532,7 +3506,6 @@ typing-extensions = "*" name = "pyvisa-py" version = "0.5.3" description = "Pure Python implementation of a VISA library." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3553,7 +3526,6 @@ usb = ["pyusb"] name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ @@ -3577,7 +3549,6 @@ files = [ name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3627,7 +3598,6 @@ files = [ name = "pyzmq" version = "25.1.0" description = "Python bindings for 0MQ" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3717,7 +3687,6 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "qblox-instruments" version = "0.9.0" description = "Instrument drivers for Qblox devices." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3738,7 +3707,6 @@ dev = ["anybadge", "pylint (<=2.14.5)", "pylint-exit", "pytest", "pytest-cov", " name = "qcodes" version = "0.37.0" description = "Python-based data acquisition framework developed by the Copenhagen / Delft / Sydney / Microsoft quantum computing consortium" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -3785,7 +3753,6 @@ zurichinstruments = ["zhinst-qcodes (>=0.3)"] name = "qcodes-contrib-drivers" version = "0.18.0" description = "User contributed drivers for QCoDeS" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -3804,14 +3771,13 @@ test = ["coverage[toml] (>=6.2)", "mypy (>=0.940)", "pytest (>=6.2.2)", "pytest- [[package]] name = "qibo" -version = "0.1.13" +version = "0.1.14" description = "A framework for quantum computing with hardware acceleration." -category = "main" optional = false python-versions = ">=3.8,<3.12" files = [ - {file = "qibo-0.1.13-py3-none-any.whl", hash = "sha256:2a3ae42c9b5c38c4fd93814d29a7041936f418907dffaf5d70cf84585b4ec68b"}, - {file = "qibo-0.1.13.tar.gz", hash = "sha256:bdd78e9e1d719ca6db512b14c36f329c64e8cff1b3a2a50824dd207eb0998034"}, + {file = "qibo-0.1.14-py3-none-any.whl", hash = "sha256:3b6597b43fb3bfd9f4d22b441192e7e7d187b34957df0a37c2fa57e3ee6f1b66"}, + {file = "qibo-0.1.14.tar.gz", hash = "sha256:59aaa9b22d4ab2f4a9c8e6a52474682e552e35729391ff4711faea159866f000"}, ] [package.dependencies] @@ -3823,11 +3789,47 @@ scipy = ">=1.10.1,<2.0.0" sympy = ">=1.11.1,<2.0.0" tabulate = ">=0.9.0,<0.10.0" +[[package]] +name = "qibosoq" +version = "0.0.1" +description = "QIBO Server On Qick (qibosoq) is the server component of qibolab to be run on RFSoC boards" +optional = true +python-versions = ">=3.8, <3.12" +files = [] +develop = false + +[package.dependencies] +qick = "^0.2" + +[package.source] +type = "git" +url = "https://github.com/qiboteam/qibosoq.git" +reference = "main" +resolved_reference = "16679989617a47730720d38b60a24f20b95770a7" + +[[package]] +name = "qick" +version = "0.2.150" +description = "Quantum Instrumentation Controller Kit software library" +optional = true +python-versions = ">=3.6, <4" +files = [ + {file = "qick-0.2.150-py3-none-any.whl", hash = "sha256:049b11e36b7b2b26c84d7a0db0e19ea2ee03b4191c8a033950acf38718e8c018"}, + {file = "qick-0.2.150.tar.gz", hash = "sha256:d3ce6c37e8a0e9663c0cb533c5a2166e818f339f1f8b30cf5623e46858edc6a2"}, +] + +[package.dependencies] +numpy = "*" +pynq = {version = ">=2.6", markers = "platform_machine == \"aarch64\" or platform_machine == \"armv7l\""} +tqdm = "*" + +[package.extras] +full = ["pyro4"] + [[package]] name = "qm-octave" version = "1.1.0" description = "SDK to control an Octave with QUA" -category = "main" optional = true python-versions = ">=3.7,<4.0" files = [ @@ -3847,7 +3849,6 @@ protobuf = ">=3.17.3,<4.0.0" name = "qm-qua" version = "1.1.1" description = "QUA language SDK to control a Quantum Computer" -category = "main" optional = true python-versions = ">=3.7,<4.0" files = [ @@ -3878,7 +3879,6 @@ simulation = ["certifi"] name = "qualang-tools" version = "0.14.0" description = "The qualang_tools package includes various tools related to QUA programs in Python" -category = "main" optional = true python-versions = ">=3.7.1,<4.0" files = [ @@ -3910,7 +3910,6 @@ interplot = ["dill (>=0.3.4,<0.4.0)", "ipython (>=7.31.1,<8.0.0)", "pypiwin32 (> name = "recommonmark" version = "0.7.1" description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects." -category = "dev" optional = false python-versions = "*" files = [ @@ -3927,7 +3926,6 @@ sphinx = ">=1.3.1" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3949,7 +3947,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = true python-versions = ">=3.6,<4" files = [ @@ -3962,14 +3959,13 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruamel-yaml" -version = "0.17.28" +version = "0.17.31" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" -category = "main" optional = true python-versions = ">=3" files = [ - {file = "ruamel.yaml-0.17.28-py3-none-any.whl", hash = "sha256:823aff68f88260805049d6a4825e36cb7f1e273a7dd8f391e7b35a16a67a30ea"}, - {file = "ruamel.yaml-0.17.28.tar.gz", hash = "sha256:3bf6df1c481d2463a633be6ee86e8aece941bb3298a9a0cd6d0865f47b1ddce6"}, + {file = "ruamel.yaml-0.17.31-py3-none-any.whl", hash = "sha256:3cf153f0047ced526e723097ac615d3009371779432e304dbd5596b6f3a4c777"}, + {file = "ruamel.yaml-0.17.31.tar.gz", hash = "sha256:098ed1eb6d338a684891a72380277c1e6fc4d4ae0e120de9a447275056dda335"}, ] [package.dependencies] @@ -3983,7 +3979,6 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" -category = "main" optional = true python-versions = ">=3.5" files = [ @@ -3994,7 +3989,8 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -4029,7 +4025,6 @@ files = [ name = "rustworkx" version = "0.12.1" description = "A python graph library implemented in Rust" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4096,7 +4091,6 @@ mpl = ["matplotlib (>=3.0)"] name = "schema" version = "0.7.5" description = "Simple data validation library" -category = "main" optional = true python-versions = "*" files = [ @@ -4111,7 +4105,6 @@ contextlib2 = ">=0.5.5" name = "scikit-learn" version = "1.2.2" description = "A set of python modules for machine learning and data mining" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -4154,7 +4147,6 @@ tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.3)", "mypy ( name = "scipy" version = "1.10.1" description = "Fundamental algorithms for scientific computing in Python" -category = "main" optional = false python-versions = "<3.12,>=3.8" files = [ @@ -4189,11 +4181,26 @@ dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +[[package]] +name = "setuptools" +version = "67.8.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = true +python-versions = ">=3.7" +files = [ + {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, + {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -4205,7 +4212,6 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" files = [ @@ -4217,7 +4223,6 @@ files = [ name = "sortedcollections" version = "2.1.0" description = "Python Sorted Collections" -category = "main" optional = true python-versions = "*" files = [ @@ -4232,7 +4237,6 @@ sortedcontainers = "*" name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -category = "main" optional = true python-versions = "*" files = [ @@ -4244,7 +4248,6 @@ files = [ name = "soupsieve" version = "2.4.1" description = "A modern CSS selector implementation for Beautiful Soup." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4256,7 +4259,6 @@ files = [ name = "sphinx" version = "6.2.1" description = "Python documentation generator" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -4292,7 +4294,6 @@ test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] name = "sphinx-basic-ng" version = "1.0.0b1" description = "A modern skeleton for Sphinx themes." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4310,7 +4311,6 @@ docs = ["furo", "ipython", "myst-parser", "sphinx-copybutton", "sphinx-inline-ta name = "sphinx-copybutton" version = "0.5.2" description = "Add a copy button to each of your code cells." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4329,7 +4329,6 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"] name = "sphinx-markdown-tables" version = "0.0.17" description = "A Sphinx extension for rendering tables written in markdown" -category = "dev" optional = false python-versions = "*" files = [ @@ -4344,7 +4343,6 @@ markdown = ">=3.4" name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -4360,7 +4358,6 @@ test = ["pytest"] name = "sphinxcontrib-bibtex" version = "2.5.0" description = "Sphinx extension for BibTeX style citations." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -4379,7 +4376,6 @@ Sphinx = ">=2.1" name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4395,7 +4391,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -4411,7 +4406,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4426,7 +4420,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4442,7 +4435,6 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -4458,7 +4450,6 @@ test = ["pytest"] name = "spirack" version = "0.2.4" description = "Drivers for the QuTech SPI-rack" -category = "main" optional = true python-versions = "*" files = [ @@ -4474,7 +4465,6 @@ pyserial = "*" name = "stack-data" version = "0.6.2" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "main" optional = false python-versions = "*" files = [ @@ -4494,7 +4484,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "sympy" version = "1.12" description = "Computer algebra system (CAS) in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4509,7 +4498,6 @@ mpmath = ">=0.19" name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4524,7 +4512,6 @@ widechars = ["wcwidth"] name = "tenacity" version = "8.2.2" description = "Retry code until it succeeds" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -4539,7 +4526,6 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] name = "threadpoolctl" version = "3.1.0" description = "threadpoolctl" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -4551,7 +4537,6 @@ files = [ name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4570,7 +4555,6 @@ test = ["flake8", "isort", "pytest"] name = "tinydb" version = "4.7.1" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" -category = "main" optional = true python-versions = ">=3.7,<4.0" files = [ @@ -4582,7 +4566,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4594,7 +4577,6 @@ files = [ name = "tomlkit" version = "0.11.8" description = "Style preserving TOML library" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4606,7 +4588,6 @@ files = [ name = "tornado" version = "6.3.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "main" optional = false python-versions = ">= 3.8" files = [ @@ -4627,7 +4608,6 @@ files = [ name = "tqdm" version = "4.65.0" description = "Fast, Extensible Progress Meter" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4648,7 +4628,6 @@ telegram = ["requests"] name = "traitlets" version = "5.9.0" description = "Traitlets Python configuration system" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4662,21 +4641,19 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] [[package]] name = "typing-extensions" -version = "4.6.2" +version = "4.6.3" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.2-py3-none-any.whl", hash = "sha256:3a8b36f13dd5fdc5d1b16fe317f5668545de77fa0b8e02006381fd49d731ab98"}, - {file = "typing_extensions-4.6.2.tar.gz", hash = "sha256:06006244c70ac8ee83fa8282cb188f697b8db25bc8b4df07be1873c43897060c"}, + {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, + {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, ] [[package]] name = "uncertainties" version = "3.1.7" description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" -category = "main" optional = true python-versions = "*" files = [ @@ -4695,27 +4672,24 @@ tests = ["nose", "numpy"] [[package]] name = "urllib3" -version = "2.0.2" +version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"}, - {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"}, + {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, + {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "versioningit" version = "2.2.0" description = "Versioning It with your Version In Git" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4732,7 +4706,6 @@ tomli = {version = ">=1.2,<3.0", markers = "python_version < \"3.11\""} name = "waitress" version = "2.1.2" description = "Waitress WSGI server" -category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -4748,7 +4721,6 @@ testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -4760,7 +4732,6 @@ files = [ name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "dev" optional = false python-versions = "*" files = [ @@ -4772,7 +4743,6 @@ files = [ name = "websockets" version = "11.0.3" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4852,7 +4822,6 @@ files = [ name = "werkzeug" version = "2.2.3" description = "The comprehensive WSGI web application library." -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4870,7 +4839,6 @@ watchdog = ["watchdog"] name = "widgetsnbextension" version = "4.0.7" description = "Jupyter interactive widgets for Jupyter Notebook" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4882,7 +4850,6 @@ files = [ name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -4967,7 +4934,6 @@ files = [ name = "xarray" version = "2023.5.0" description = "N-D labeled arrays and datasets in Python" -category = "main" optional = true python-versions = ">=3.9" files = [ @@ -4992,7 +4958,6 @@ viz = ["matplotlib", "nc-time-axis", "seaborn"] name = "zhinst-core" version = "23.2.42414" description = "Python API for Zurich Instruments Devices" -category = "main" optional = true python-versions = "*" files = [ @@ -5029,7 +4994,6 @@ typing-extensions = "*" name = "zhinst-toolkit" version = "0.5.3" description = "Zurich Instruments Toolkit High Level API" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -5050,7 +5014,6 @@ zhinst-utils = ">=0.3.1" name = "zhinst-utils" version = "0.3.1" description = "Zurich Instruments utils for device control" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -5065,7 +5028,6 @@ zhinst-core = ">=23.02" name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5078,11 +5040,12 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -qblox = ["qblox-instruments", "qcodes", "qcodes_contrib_drivers", "pyvisa-py"] -qm = ["qm-qua", "qualang-tools"] +qblox = ["pyvisa-py", "qblox-instruments", "qcodes", "qcodes_contrib_drivers"] +qm = ["qm-qua", "qualang-tools", "setuptools"] +rfsoc = ["qcodes", "qcodes_contrib_drivers", "qibosoq"] zh = ["laboneq"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "f945e3519290211347264ae318397bf464814b06e9d1096bf6ee115970f82f92" +content-hash = "4b32421967810306a3ba89c557032e812f78b70007babf5671fca77992c35d18" diff --git a/pyproject.toml b/pyproject.toml index 6b12dd838..bc7110952 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,13 +26,16 @@ qibo = "^0.1.12" networkx = "^3.0" more-itertools = "^9.1.0" pyyaml = "^6.0" -qblox-instruments = { version = "0.9.0", optional = true } +qblox-instruments = { version = "0.9.0", optional = true} qcodes = { version = "^0.37.0", optional = true } -qcodes_contrib_drivers = { version = "0.18.0", optional = true } +qcodes_contrib_drivers = { version ="0.18.0", optional = true } pyvisa-py = { version = "0.5.3", optional = true } qm-qua = { version = "==1.1.1", optional = true } -qualang-tools = { version = "==0.14.0", optional = true } -laboneq = { version ="==2.5.0", optional = true } +qualang-tools = { version = "==0.14.0", optional = true} +setuptools = { version = ">67.0.0", optional = true } +laboneq = { version ="==2.5.0", optional = true } +# TODO change qibosoq when release +qibosoq = { git = "https://github.com/qiboteam/qibosoq.git", branch = "main", optional = true} [tool.poetry.group.docs] optional = true @@ -63,8 +66,9 @@ pylint = ">=2.16.0" [tool.poetry.extras] qblox = ["qblox-instruments", "qcodes", "qcodes_contrib_drivers", "pyvisa-py"] -qm = ["qm-qua", "qualang-tools"] +qm = ["qm-qua", "qualang-tools", "setuptools"] zh = ["laboneq"] +rfsoc = ["qibosoq", "qcodes", "qcodes_contrib_drivers"] [tool.poe.tasks] diff --git a/src/qibolab/instruments/rfsoc.py b/src/qibolab/instruments/rfsoc.py index 4175ccb93..6e812838d 100644 --- a/src/qibolab/instruments/rfsoc.py +++ b/src/qibolab/instruments/rfsoc.py @@ -1,54 +1,165 @@ """ RFSoC FPGA driver. -This driver needs the library Qick installed -Supports the following FPGA: +This driver needs a Qibosoq server installed and running +Tested on the following FPGA: * RFSoC 4x2 + * ZCU111 """ -import pickle +import copy +import json import socket -from dataclasses import dataclass -from typing import Dict, List, Optional, Tuple, Union +from dataclasses import asdict +from typing import Dict, List, Tuple, Union import numpy as np +import qibosoq.components as rfsoc from qibolab import AcquisitionType, AveragingMode, ExecutionParameters from qibolab.instruments.abstract import AbstractInstrument from qibolab.platform import Qubit -from qibolab.pulses import PulseSequence, PulseType +from qibolab.pulses import Pulse, PulseSequence, PulseShape, PulseType from qibolab.result import IntegratedResults, SampleResults from qibolab.sweeper import Parameter, Sweeper +HZ_TO_MHZ = 1e-6 +NS_TO_US = 1e-3 + + +def convert_qubit(qubit: Qubit) -> rfsoc.Qubit: + """Convert `qibolab.platforms.abstract.Qubit` to `qibosoq.abstract.Qubit`""" + if qubit.flux: + return rfsoc.Qubit(qubit.flux.bias, qubit.flux.ports[0][1]) + return rfsoc.Qubit(0.0, None) + + +def replace_pulse_shape(rfsoc_pulse: rfsoc.Pulse, shape: PulseShape) -> rfsoc.Pulse: + """Set pulse shape parameters in rfsoc pulse object""" + new = copy.copy(rfsoc_pulse) + shape_name = new.shape = shape.name.lower() + if shape_name in {"gaussian", "drag"}: + new.rel_sigma = shape.rel_sigma + if shape_name == "drag": + new.beta = shape.beta + return new + + +def pulse_lo_frequency(pulse: Pulse, qubits: Dict[int, Qubit]) -> int: + """Returns local_oscillator frequency (HZ) of a pulse""" + pulse_type = pulse.type.name.lower() + try: + lo_frequency = getattr(qubits[pulse.qubit], pulse_type).local_oscillator._frequency + except NotImplementedError: + lo_frequency = 0 + return lo_frequency + + +def convert_pulse(pulse: Pulse, qubits: Dict[int, Qubit]) -> rfsoc.Pulse: + """Convert `qibolab.pulses.pulse` to `qibosoq.abstract.Pulse`""" + pulse_type = pulse.type.name.lower() + dac = getattr(qubits[pulse.qubit], pulse_type).ports[0][1] + adc = qubits[pulse.qubit].feedback.ports[0][1] if pulse_type == "readout" else None + lo_frequency = pulse_lo_frequency(pulse, qubits) + + rfsoc_pulse = rfsoc.Pulse( + frequency=(pulse.frequency - lo_frequency) * HZ_TO_MHZ, + amplitude=pulse.amplitude, + relative_phase=np.degrees(pulse.relative_phase), + start=pulse.start * NS_TO_US, + duration=pulse.duration * NS_TO_US, + dac=dac, + adc=adc, + shape=None, + name=pulse.serial, + type=pulse_type, + ) + return replace_pulse_shape(rfsoc_pulse, pulse.shape) + + +def convert_frequency_sweeper(sweeper: rfsoc.Sweeper, sequence: PulseSequence, qubits: Dict[int, Qubit]): + """Converts frequencies for `qibosoq.abstract.Sweeper` considering LO and HZ_TO_MHZ""" + for idx, jdx in enumerate(sweeper.indexes): + if sweeper.parameter[idx] is rfsoc.Parameter.FREQUENCY: + pulse = sequence[jdx] + lo_frequency = pulse_lo_frequency(pulse, qubits) + + sweeper.starts[idx] = (sweeper.starts[idx] - lo_frequency) * HZ_TO_MHZ + sweeper.stops[idx] = (sweeper.stops[idx] - lo_frequency) * HZ_TO_MHZ + + +def convert_sweep(sweeper: Sweeper, sequence: PulseSequence, qubits: Dict[int, Qubit]) -> rfsoc.Sweeper: + """Convert `qibolab.sweeper.Sweeper` to `qibosoq.abstract.Sweeper`""" + + parameters = [] + starts = [] + stops = [] + indexes = [] + + if sweeper.parameter is Parameter.bias: + for qubit in sweeper.qubits: + parameters.append(rfsoc.Parameter.BIAS) + indexes.append(list(qubits.values()).index(qubit)) + + starts.append(sweeper.values[0] + qubit.flux.bias) + stops.append(sweeper.values[-1] + qubit.flux.bias) + + if max(np.abs(starts)) > 1 or max(np.abs(stops)) > 1: + raise ValueError("Sweeper amplitude is set to reach values higher than 1") + else: + for pulse in sweeper.pulses: + indexes.append(sequence.index(pulse)) + + name = sweeper.parameter.name + parameters.append(getattr(rfsoc.Parameter, name.upper())) + value = getattr(pulse, name) + if sweeper.parameter in {Parameter.frequency, Parameter.relative_phase}: + starts.append(sweeper.values[0] + value) + stops.append(sweeper.values[-1] + value) + elif sweeper.parameter is Parameter.amplitude: + starts.append(sweeper.values[0] * value) + stops.append(sweeper.values[-1] * value) + else: + raise NotImplementedError(f"Sweep parameter {sweeper.parameter} not implemented") + + return rfsoc.Sweeper( + parameter=parameters, + indexes=indexes, + starts=starts, + stops=stops, + expts=len(sweeper.values), + ) + -@dataclass -class QickProgramConfig: - sampling_rate: int = 9_830_400_000 - repetition_duration: int = 100_000 - adc_trig_offset: int = 200 - max_gain: int = 32_000 - reps: int = 1000 - expts: Optional[int] = None +class QibosoqError(RuntimeError): + """Exception raised when qibosoq server encounters an error + + Attributes: + message -- The error message received from the server (qibosoq) + """ -class TII_RFSOC4x2(AbstractInstrument): - """Instrument object for controlling the RFSoC4x2 FPGA. - Playing pulses requires first the execution of the ``setup`` function. +class RFSoC(AbstractInstrument): + """Instrument object for controlling RFSoC FPGAs. The two way of executing pulses are with ``play`` (for arbitrary qibolab ``PulseSequence``) or with ``sweep`` that execute a ``PulseSequence`` object with one or more ``Sweeper``. - Args: - name (str): Name of the instrument instance. Attributes: - cfg (QickProgramConfig): Configuration dictionary required for pulse execution. - soc (QickSoc): ``Qick`` object needed to access system blocks. + cfg (rfsoc.Config): Configuration dictionary required for pulse execution. """ - def __init__(self, name: str, address: str): + def __init__(self, name: str, address: str, port: int): + """__init__ + Args: + name (str): Name of the instrument instance. + address (str): IP and port of the server (ex. 192.168.0.10) + port (int): Port of the server (ex.6000) + """ + super().__init__(name, address=address) - self.host, self.port = address.split(":") - self.port = int(self.port) - self.cfg = QickProgramConfig() # Containes the main settings + self.host = address + self.port = port + self.cfg = rfsoc.Config() def connect(self): """Empty method to comply with AbstractInstrument interface.""" @@ -62,92 +173,64 @@ def stop(self): def disconnect(self): """Empty method to comply with AbstractInstrument interface.""" - def setup( - self, - sampling_rate: int = None, - relaxation_time: int = None, - adc_trig_offset: int = None, - max_gain: int = None, - ): - """Changes the configuration of the instrument. - - Args: - sampling_rate (int): sampling rate of the RFSoC (Hz). - relaxation_time (int): delay before readout (ns). - adc_trig_offset (int): single offset for all adc triggers - (tproc CLK ticks). - max_gain (int): maximum output power of the DAC (DAC units). - """ - if sampling_rate is not None: - self.cfg.sampling_rate = sampling_rate - if relaxation_time is not None: - self.cfg.repetition_duration = relaxation_time - if adc_trig_offset is not None: - self.cfg.adc_trig_offset = adc_trig_offset - if max_gain is not None: - self.cfg.max_gain = max_gain + def setup(self): + """Deprecated method.""" def _execute_pulse_sequence( self, - cfg: QickProgramConfig, sequence: PulseSequence, - qubits: List[Qubit], - readouts_per_experiment: int, + qubits: Dict[int, Qubit], average: bool, ) -> Tuple[list, list]: """Prepares the dictionary to send to the qibosoq server in order to execute a PulseSequence. Args: - cfg: QickProgramConfig object with general settings for Qick programs - sequence: arbitrary PulseSequence object to execute - qubits: list of qubits of the platform - readouts_per_experiment: number of readout pulse to execute + sequence (`qibolab.pulses.PulseSequence`): arbitrary PulseSequence object to execute + qubits: list of qubits (`qibolab.platforms.abstract.Qubit`) of the platform in the form of a dictionary average: if True returns averaged results, otherwise single shots Returns: Lists of I and Q value measured """ server_commands = { - "operation_code": "execute_pulse_sequence", - "cfg": cfg, - "sequence": sequence, - "qubits": qubits, - "readouts_per_experiment": readouts_per_experiment, + "operation_code": rfsoc.OperationCode.EXECUTE_PULSE_SEQUENCE, + "cfg": asdict(self.cfg), + "sequence": [asdict(convert_pulse(pulse, qubits)) for pulse in sequence], + "qubits": [asdict(convert_qubit(qubits[idx])) for idx in qubits], + "readouts_per_experiment": len(sequence.ro_pulses), "average": average, } return self._open_connection(self.host, self.port, server_commands) - def _execute_single_sweep( + def _execute_sweeps( self, - cfg: QickProgramConfig, sequence: PulseSequence, - qubits: List[Qubit], - sweeper: Sweeper, - readouts_per_experiment: int, + qubits: Dict[int, Qubit], + sweepers: List[rfsoc.Sweeper], average: bool, ) -> Tuple[list, list]: """Prepares the dictionary to send to the qibosoq server in order to execute a sweep. Args: - cfg: QickProgramConfig object with general settings for Qick programs - sequence: arbitrary PulseSequence object to execute - qubits: list of qubits of the platform - sweeper: Sweeper object - readouts_per_experiment: number of readout pulse to execute + sequence (`qibolab.pulses.PulseSequence`): arbitrary PulseSequence object to execute + qubits: list of qubits (`qibolab.platforms.abstract.Qubit`) of the platform in the form of a dictionary + sweepers: list of `qibosoq.abstract.Sweeper` objects average: if True returns averaged results, otherwise single shots Returns: Lists of I and Q value measured """ + for sweeper in sweepers: + convert_frequency_sweeper(sweeper, sequence, qubits) server_commands = { - "operation_code": "execute_single_sweep", - "cfg": cfg, - "sequence": sequence, - "qubits": qubits, - "sweeper": sweeper, - "readouts_per_experiment": readouts_per_experiment, + "operation_code": rfsoc.OperationCode.EXECUTE_SWEEPS, + "cfg": asdict(self.cfg), + "sequence": [asdict(convert_pulse(pulse, qubits)) for pulse in sequence], + "qubits": [asdict(convert_qubit(qubits[idx])) for idx in qubits], + "sweepers": [asdict(sweeper) for sweeper in sweepers], + "readouts_per_experiment": len(sequence.ro_pulses), "average": average, } return self._open_connection(self.host, self.port, server_commands) @@ -158,10 +241,10 @@ def _open_connection(host: str, port: int, server_commands: dict): executing a sweep or a pulse sequence. The communication protocol is: - * pickle the dictionary containing all needed information - * send to the server the length in byte of the pickled dictionary + * convert the dictionary containing all needed information in json + * send to the server the length in byte of the encoded dictionary * the server now will wait for that number of bytes - * send the pickled dictionary + * send the encoded dictionary * wait for response (arbitray number of bytes) Returns: Lists of I and Q value measured @@ -171,7 +254,7 @@ def _open_connection(host: str, port: int, server_commands: dict): # open a connection with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.connect((host, port)) - msg_encoded = pickle.dumps(server_commands) + msg_encoded = bytes(json.dumps(server_commands), "utf-8") # first send 4 bytes with the length of the message sock.send(len(msg_encoded).to_bytes(4, "big")) sock.send(msg_encoded) @@ -182,14 +265,14 @@ def _open_connection(host: str, port: int, server_commands: dict): if not tmp: break received.extend(tmp) - results = pickle.loads(received) - if isinstance(results, Exception): - raise results + results = json.loads(received.decode("utf-8")) + if isinstance(results, str) and "Error" in results: + raise QibosoqError(results) return results["i"], results["q"] def play( self, - qubits: List[Qubit], + qubits: Dict[int, Qubit], sequence: PulseSequence, execution_parameters: ExecutionParameters, ) -> Dict[str, Union[IntegratedResults, SampleResults]]: @@ -198,9 +281,9 @@ def play( The relaxation_time and the number of shots have default values. Args: - qubits (list): List of `qibolab.platforms.utils.Qubit` objects + qubits (dict): List of `qibolab.platforms.utils.Qubit` objects passed from the platform. - execution_parameters (ExecutionParameters): Parameters (nshots, + execution_parameters (`qibolab.ExecutionParameters`): Parameters (nshots, relaxation_time, fast_reset, acquisition_type, @@ -211,32 +294,24 @@ def play( qibolab results objects """ - if execution_parameters.acquisition_type is AcquisitionType.RAW: - raise NotImplementedError("Raw data acquisition is not supported") - if execution_parameters.fast_reset: - raise NotImplementedError("Fast reset is not supported") - # if new value are passed, they are updated in the config obj - if execution_parameters.nshots is not None: - self.cfg.reps = execution_parameters.nshots - if execution_parameters.relaxation_time is not None: - self.cfg.repetition_duration = execution_parameters.relaxation_time + self.validate_input_command(sequence, execution_parameters) + self.update_cfg(execution_parameters) if execution_parameters.acquisition_type is AcquisitionType.DISCRIMINATION: average = False else: average = execution_parameters.averaging_mode is AveragingMode.CYCLIC - toti, totq = self._execute_pulse_sequence(self.cfg, sequence, qubits, len(sequence.ro_pulses), average) + toti, totq = self._execute_pulse_sequence(sequence, qubits, average) results = {} - adcs = np.unique([qubits[p.qubit].feedback.ports[0][1] for p in sequence.ro_pulses]) - for j in range(len(adcs)): - for i, ro_pulse in enumerate(sequence.ro_pulses): + adc_chs = np.unique([qubits[p.qubit].feedback.ports[0][1] for p in sequence.ro_pulses]) + + for j, channel in enumerate(adc_chs): + for i, ro_pulse in enumerate(sequence.ro_pulses.get_qubit_pulses(channel)): i_pulse = np.array(toti[j][i]) q_pulse = np.array(totq[j][i]) - serial = ro_pulse.serial - if execution_parameters.acquisition_type is AcquisitionType.DISCRIMINATION: discriminated_shots = self.classify_shots(i_pulse, q_pulse, qubits[ro_pulse.qubit]) if execution_parameters.averaging_mode is AveragingMode.CYCLIC: @@ -244,10 +319,27 @@ def play( result = execution_parameters.results_type(discriminated_shots) else: result = execution_parameters.results_type(i_pulse + 1j * q_pulse) - results[ro_pulse.qubit] = results[serial] = result + results[ro_pulse.qubit] = results[ro_pulse.serial] = result return results + @staticmethod + def validate_input_command(sequence: PulseSequence, execution_parameters: ExecutionParameters): + """Checks if sequence and execution_parameters are supported""" + if any(pulse.duration < 10 for pulse in sequence): + raise ValueError("The minimum pulse length supported is 10 ns") + if execution_parameters.acquisition_type is AcquisitionType.RAW: + raise NotImplementedError("Raw data acquisition is not supported") + if execution_parameters.fast_reset: + raise NotImplementedError("Fast reset is not supported") + + def update_cfg(self, execution_parameters: ExecutionParameters): + """Update rfsoc.Config object with new parameters""" + if execution_parameters.nshots is not None: + self.cfg.reps = execution_parameters.nshots + if execution_parameters.relaxation_time is not None: + self.cfg.repetition_duration = execution_parameters.relaxation_time * NS_TO_US + def classify_shots(self, i_values: List[float], q_values: List[float], qubit: Qubit) -> List[float]: """Classify IQ values using qubit threshold and rotation_angle if available in runcard""" @@ -262,12 +354,38 @@ def classify_shots(self, i_values: List[float], q_values: List[float], qubit: Qu return [shots] return shots + def play_sequence_in_sweep_recursion( + self, + qubits: List[Qubit], + sequence: PulseSequence, + or_sequence: PulseSequence, + execution_parameters: ExecutionParameters, + ) -> Dict[str, Union[IntegratedResults, SampleResults]]: + """Last recursion layer, if no sweeps are present + + After playing the sequence, the resulting dictionary keys need + to be converted to the correct values. + Even indexes correspond to qubit number and are not changed. + Odd indexes correspond to readout pulses serials and are convert + to match the original sequence (of the sweep) and not the one just executed. + """ + res = self.play(qubits, sequence, execution_parameters) + newres = {} + serials = [pulse.serial for pulse in or_sequence.ro_pulses] + for idx, key in enumerate(res): + if idx % 2 == 1: + newres[serials[idx // 2]] = res[key] + else: + newres[key] = res[key] + + return newres + def recursive_python_sweep( self, qubits: List[Qubit], sequence: PulseSequence, or_sequence: PulseSequence, - *sweepers: Sweeper, + *sweepers: rfsoc.Sweeper, average: bool, execution_parameters: ExecutionParameters, ) -> Dict[str, Union[IntegratedResults, SampleResults]]: @@ -283,7 +401,7 @@ def recursive_python_sweep( sequence to not modify. *sweepers (`qibolab.Sweeper`): Sweeper objects. average (bool): if True averages on nshots - execution_parameters (ExecutionParameters): Parameters (nshots, + execution_parameters (`qibolab.ExecutionParameters`): Parameters (nshots, relaxation_time, fast_reset, acquisition_type, @@ -291,66 +409,44 @@ def recursive_python_sweep( Returns: A dictionary mapping the readout pulses serial and respective qubits to results objects - Raises: - NotImplementedError: if a sweep refers to more than one pulse. - NotImplementedError: if a sweep refers to a parameter different - from frequency or amplitude. """ - # gets a list containing the original sequence output serials - original_ro = [ro.serial for ro in or_sequence.ro_pulses] - # If there are no sweepers run ExecutePulseSequence acquisition. # Last layer for recursion. + if len(sweepers) == 0: - res = self.play(qubits, sequence, execution_parameters) - newres = {} - for idx, key in enumerate(res): - newres[original_ro[idx // 2]] = res[key] - return newres + return self.play_sequence_in_sweep_recursion(qubits, sequence, or_sequence, execution_parameters) - # If sweepers are still in queue - else: - # check that the first (outest) sweeper is supported - sweeper = sweepers[0] - if len(sweeper.pulses) > 1: - raise NotImplementedError("Only one pulse per sweep supported") - is_amp = sweeper.parameter == Parameter.amplitude - is_freq = sweeper.parameter == Parameter.frequency - if not (is_amp or is_freq): - raise NotImplementedError("Parameter type not implemented") - - # if there is one sweeper supported by qick than use hardware sweep - if len(sweepers) == 1 and not self.get_if_python_sweep(sequence, qubits, *sweepers): - toti, totq = self._execute_single_sweep( - self.cfg, sequence, qubits, sweepers[0], len(sequence.ro_pulses), average - ) - # convert results - res = self.convert_sweep_results( - sweepers[0], original_ro, sequence, qubits, toti, totq, execution_parameters - ) - return res - - # if it's not possible to execute qick sweep re-call function + if not self.get_if_python_sweep(sequence, qubits, *sweepers): + toti, totq = self._execute_sweeps(sequence, qubits, sweepers, average) + res = self.convert_sweep_results(or_sequence, qubits, toti, totq, execution_parameters) + return res + + sweeper = sweepers[0] + values = [] + for idx, _ in enumerate(sweeper.indexes): + val = np.linspace(sweeper.starts[idx], sweeper.stops[idx], sweeper.expts) + values.append(val) + + results = {} + for idx in range(sweeper.expts): + # update values + sweeper_parameter = sweeper.parameter[0].name.lower() + if sweeper_parameter in { + "amplitude", + "frequency", + "relative_phase", + }: + for jdx, _ in enumerate(sweeper.indexes): + setattr(sequence[sweeper.indexes[jdx]], sweeper_parameter, values[jdx][idx]) else: - sweep_results = {} - idx_pulse = or_sequence.index(sweeper.pulses[0]) - for val in sweeper.values: - if is_freq: - sequence[idx_pulse].frequency = val - elif is_amp: - sequence[idx_pulse].amplitude = val - res = self.recursive_python_sweep( - qubits, - sequence, - or_sequence, - *sweepers[1:], - average=average, - execution_parameters=execution_parameters, - ) - # merge the dictionary obtained with the one already saved - sweep_results = self.merge_sweep_results(sweep_results, res) - - return sweep_results + for kdx, jdx in enumerate(sweeper.indexes): + qubits[jdx].flux.bias = values[kdx][idx] + + res = self.recursive_python_sweep( + qubits, sequence, or_sequence, *sweepers[1:], average=average, execution_parameters=execution_parameters + ) + results = self.merge_sweep_results(results, res) + return results # already in the right format @staticmethod def merge_sweep_results( @@ -374,54 +470,51 @@ def merge_sweep_results( dict_a[serial] = dict_b[serial] return dict_a - def get_if_python_sweep(self, sequence: PulseSequence, qubits: List[Qubit], *sweepers: Sweeper) -> bool: + def get_if_python_sweep(self, sequence: PulseSequence, qubits: List[Qubit], *sweepers: rfsoc.Sweeper) -> bool: """Check if a sweeper must be run with python loop or on hardware. To be run on qick internal loop a sweep must: * not be on the readout frequency - * be just one sweeper - * only one pulse per channel supported (for now) + * only one pulse per channel supported Args: sequence (`qibolab.pulses.PulseSequence`). Pulse sequence to play. qubits (list): List of `qibolab.platforms.utils.Qubit` objects passed from the platform. - *sweepers (`qibolab.Sweeper`): Sweeper objects. + *sweepers (`qibosoq.abstract.Sweeper`): Sweeper objects. Returns: A boolean value true if the sweeper must be executed by python loop, false otherwise """ - # if there isn't only a sweeper do a python sweep - if len(sweepers) != 1: - return True - - is_freq = sweepers[0].parameter is Parameter.frequency - is_ro = sweepers[0].pulses[0].type is PulseType.READOUT - # if it's a sweep on the readout freq do a python sweep - if is_freq and is_ro: - return True - - # check if the sweeped pulse is the first on the DAC channel - already_pulsed = [] - for pulse in sequence: - pulse_q = qubits[pulse.qubit] - pulse_is_ro = pulse.type == PulseType.READOUT - pulse_ch = pulse_q.readout.ports[0][1] if pulse_is_ro else pulse_q.drive.ports[0][1] - - if pulse_ch in already_pulsed: - return True - else: - already_pulsed.append(pulse_ch) - + for sweeper in sweepers: + is_amp = sweeper.parameter[0] is rfsoc.Parameter.AMPLITUDE + is_freq = sweeper.parameter[0] is rfsoc.Parameter.FREQUENCY + + if is_freq or is_amp: + is_ro = sequence[sweeper.indexes[0]].type == PulseType.READOUT + # if it's a sweep on the readout freq do a python sweep + if is_freq and is_ro: + return True + + # check if the sweeped pulse is the first and only on the DAC channel + for idx in sweeper.indexes: + sweep_pulse = sequence[idx] + already_pulsed = [] + for pulse in sequence: + pulse_q = qubits[pulse.qubit] + pulse_is_ro = pulse.type == PulseType.READOUT + pulse_ch = pulse_q.readout.ports[0][1] if pulse_is_ro else pulse_q.drive.ports[0][1] + + if pulse_ch in already_pulsed and pulse == sweep_pulse: + return True + already_pulsed.append(pulse_ch) # if all passed, do a firmware sweep return False def convert_sweep_results( self, - sweeper: Sweeper, - original_ro: List[str], - sequence: PulseSequence, + original_ro: PulseSequence, qubits: List[Qubit], toti: List[float], totq: List[float], @@ -430,15 +523,13 @@ def convert_sweep_results( """Convert sweep res to qibolab dict res Args: - *sweepers (`qibolab.Sweeper`): Sweeper objects. - original_ro (list): list of ro serials of the original sequence - sequence (`qibolab.pulses.PulseSequence`). Pulse sequence to play. + original_ro (`qibolab.pulses.PulseSequence`): Original PulseSequence qubits (list): List of `qibolab.platforms.utils.Qubit` objects passed from the platform. toti (list): i values totq (list): q values results_type: qibolab results object - execution_parameters (ExecutionParameters): Parameters (nshots, + execution_parameters (`qibolab.ExecutionParameters`): Parameters (nshots, relaxation_time, fast_reset, acquisition_type, @@ -448,14 +539,12 @@ def convert_sweep_results( """ results = {} - adcs = np.unique([qubits[p.qubit].feedback.ports[0][1] for p in sequence.ro_pulses]) - for k in range(len(adcs)): - for i, serial in enumerate(original_ro): - i_pulse = np.array(toti[k][i]) - q_pulse = np.array(totq[k][i]) - - i_vals = i_pulse - q_vals = q_pulse + adcs = np.unique([qubits[p.qubit].feedback.ports[0][1] for p in original_ro]) + for k, k_val in enumerate(adcs): + adc_ro = [pulse for pulse in original_ro if qubits[pulse.qubit].feedback.ports[0][1] == k_val] + for i, (ro_pulse, original_ro_pulse) in enumerate(zip(adc_ro, original_ro)): + i_vals = np.array(toti[k][i]) + q_vals = np.array(totq[k][i]) if execution_parameters.acquisition_type is AcquisitionType.DISCRIMINATION: average = False @@ -463,12 +552,11 @@ def convert_sweep_results( average = execution_parameters.averaging_mode is AveragingMode.CYCLIC if not average: - shape = i_vals.shape - i_vals = np.reshape(i_vals, (self.cfg.reps, *shape[:-1])) - q_vals = np.reshape(q_vals, (self.cfg.reps, *shape[:-1])) + i_vals = np.reshape(i_vals, (self.cfg.reps, *i_vals.shape[:-1])) + q_vals = np.reshape(q_vals, (self.cfg.reps, *q_vals.shape[:-1])) if execution_parameters.acquisition_type is AcquisitionType.DISCRIMINATION: - qubit = qubits[sequence.ro_pulses[i].qubit] + qubit = qubits[original_ro_pulse.qubit] discriminated_shots = self.classify_shots(i_vals, q_vals, qubit) if execution_parameters.averaging_mode is AveragingMode.CYCLIC: discriminated_shots = np.mean(discriminated_shots, axis=0) @@ -476,12 +564,12 @@ def convert_sweep_results( else: result = execution_parameters.results_type(i_vals + 1j * q_vals) - results[sequence.ro_pulses[i].qubit] = results[serial] = result + results[original_ro_pulse.qubit] = results[ro_pulse.serial] = result return results def sweep( self, - qubits: List[Qubit], + qubits: Dict[int, Qubit], sequence: PulseSequence, execution_parameters: ExecutionParameters, *sweepers: Sweeper, @@ -493,7 +581,7 @@ def sweep( Args: qubits (list): List of `qibolab.platforms.utils.Qubit` objects passed from the platform. - execution_parameters (ExecutionParameters): Parameters (nshots, + execution_parameters (`qibolab.ExecutionParameters`): Parameters (nshots, relaxation_time, fast_reset, acquisition_type, @@ -505,39 +593,34 @@ def sweep( results objects """ - if execution_parameters.acquisition_type is AcquisitionType.RAW: - raise NotImplementedError("Raw data acquisition is not supported") - if execution_parameters.fast_reset: - raise NotImplementedError("Fast reset is not supported") - # if new value are passed, they are updated in the config obj - if execution_parameters.nshots is not None: - self.cfg.reps = execution_parameters.nshots - if execution_parameters.relaxation_time is not None: - self.cfg.repetition_duration = execution_parameters.relaxation_time + self.validate_input_command(sequence, execution_parameters) + self.update_cfg(execution_parameters) if execution_parameters.acquisition_type is AcquisitionType.DISCRIMINATION: average = False else: average = execution_parameters.averaging_mode is AveragingMode.CYCLIC - # sweepers.values are modified to reflect actual sweeped values - for sweeper in sweepers: - if sweeper.parameter == Parameter.frequency: - sweeper.values += sweeper.pulses[0].frequency - elif sweeper.parameter == Parameter.amplitude: - sweeper.values *= sweeper.pulses[0].amplitude + rfsoc_sweepers = [convert_sweep(sweep, sequence, qubits) for sweep in sweepers] sweepsequence = sequence.copy() + bias_change = any(sweep.parameter is Parameter.bias for sweep in sweepers) + if bias_change: + initial_biases = [qubits[idx].flux.bias if qubits[idx].flux is not None else None for idx in qubits] + results = self.recursive_python_sweep( - qubits, sweepsequence, sequence, *sweepers, average=average, execution_parameters=execution_parameters + qubits, + sweepsequence, + sequence.ro_pulses, + *rfsoc_sweepers, + average=average, + execution_parameters=execution_parameters, ) - # sweepers.values are converted back to original relative values - for sweeper in sweepers: - if sweeper.parameter == Parameter.frequency: - sweeper.values -= sweeper.pulses[0].frequency - elif sweeper.parameter == Parameter.amplitude: - sweeper.values /= sweeper.pulses[0].amplitude + if bias_change: + for idx, qubit in enumerate(qubits): + if qubit.flux is not None: + qubit.flux.bias = initial_biases[idx] return results diff --git a/tests/dummy_qrc/rfsoc.py b/tests/dummy_qrc/rfsoc.py index 73a2408d2..e6a447bf3 100644 --- a/tests/dummy_qrc/rfsoc.py +++ b/tests/dummy_qrc/rfsoc.py @@ -1,6 +1,7 @@ import pathlib from qibolab.channels import ChannelMap +from qibolab.instruments.erasynth import ERA from qibolab.platform import Platform RUNCARD = pathlib.Path(__file__).parent / "rfsoc.yml" @@ -11,7 +12,7 @@ def create(runcard=RUNCARD): Used in ``test_instruments_rfsoc.py``. """ - from qibolab.instruments.rfsoc import TII_RFSOC4x2 + from qibolab.instruments.rfsoc import RFSoC as TII_RFSOC4x2 from qibolab.instruments.rohde_schwarz import SGS100A as LocalOscillator # Create channel objects @@ -19,20 +20,26 @@ def create(runcard=RUNCARD): channels |= "L3-18_ro" # readout (DAC) channels |= "L2-RO" # feedback (readout DAC) channels |= "L3-18_qd" # drive + channels |= "L2-22_qf" # flux # Map controllers to qubit channels (HARDCODED) channels["L3-18_ro"].ports = [("o0", 0)] # readout channels["L2-RO"].ports = [("i0", 0)] # feedback channels["L3-18_qd"].ports = [("o1", 1)] # drive + channels["L2-22_qf"].ports = [("o2", 2)] # flux local_oscillators = [ LocalOscillator("twpa_a", "192.168.0.32"), + ERA("ErasynthLO", "192.168.0.212", ethernet=True), ] local_oscillators[0].frequency = 6_200_000_000 local_oscillators[0].power = -1 + local_oscillators[1].frequency = 0 + channels["L3-18_ro"].local_oscillator = local_oscillators[1] + # Instantiate QICK instruments - controller = TII_RFSOC4x2("tii_rfsoc4x2", "0.0.0.0:0") + controller = TII_RFSOC4x2("tii_rfsoc4x2", "0.0.0.0", 0) instruments = [controller] + local_oscillators platform = Platform("tii_rfsoc4x2", RUNCARD, instruments, channels) @@ -41,6 +48,9 @@ def create(runcard=RUNCARD): qubits = platform.qubits qubits[0].readout = channels["L3-18_ro"] qubits[0].feedback = channels["L2-RO"] - qubits[0].drive = channels["L3-18_qd"] # Create channel objects + qubits[0].drive = channels["L3-18_qd"] + qubits[0].flux = channels["L2-22_qf"] + + channels["L2-22_qf"].qubit = qubits[0] return platform diff --git a/tests/test_instruments_rfsoc.py b/tests/test_instruments_rfsoc.py index 5825a2ee0..e92b7d493 100644 --- a/tests/test_instruments_rfsoc.py +++ b/tests/test_instruments_rfsoc.py @@ -1,10 +1,18 @@ +"""Tests for RFSoC driver""" + import numpy as np import pytest +import qibosoq.components as rfsoc from qibolab import AcquisitionType, AveragingMode, ExecutionParameters, create_platform -from qibolab.instruments.rfsoc import QickProgramConfig +from qibolab.instruments.rfsoc import ( + convert_frequency_sweeper, + convert_pulse, + convert_qubit, + convert_sweep, +) from qibolab.platform import Qubit -from qibolab.pulses import PulseSequence +from qibolab.pulses import Drag, Gaussian, Pulse, PulseSequence, PulseType, Rectangular from qibolab.result import ( AveragedIntegratedResults, AveragedSampleResults, @@ -14,28 +22,80 @@ from qibolab.sweeper import Parameter, Sweeper -def test_tii_rfsoc4x2_init(): - """Tests instrument can initilize and its attribute are assigned""" +def test_convert_qubit(): + """Tests conversion from `qibolab.platforms.abstract.Qubit` to `rfsoc.Qubit`""" + platform = create_platform("rfsoc") - instrument = platform.instruments[0] + qubit = platform.qubits[0] + qubit.flux.bias = 0.05 + qubit.flux.ports = [("name", 4)] + qubit = convert_qubit(qubit) + targ = rfsoc.Qubit(0.05, 4) - assert instrument.host == "0.0.0.0" - assert instrument.port == 0 - assert isinstance(instrument.cfg, QickProgramConfig) + assert qubit == targ + + platform = create_platform("rfsoc") + qubit = platform.qubits[0] + qubit.flux = None + qubit = convert_qubit(qubit) + targ = rfsoc.Qubit(0.0, None) + + assert qubit == targ -def test_tii_rfsoc4x2_setup(): - """Modify the QickProgramConfig object using `setup` and check that it changes accordingly""" +def test_convert_pulse(): + """Tests conversion from `qibolab.pulses.Pulse` to `rfsoc.Pulse`""" + platform = create_platform("rfsoc") - instrument = platform.instruments[0] + qubit = platform.qubits[0] + qubit.drive.ports = [("name", 4)] + qubit.readout.ports = [("name", 2)] + qubit.feedback.ports = [("name", 1)] + qubit.readout.local_oscillator._frequency = 1e6 - target_cfg = QickProgramConfig( - sampling_rate=5_000_000_000, repetition_duration=1_000, adc_trig_offset=150, max_gain=30_000 - ) + pulse = Pulse(0, 40, 0.9, 50e6, 0, Drag(5, 2), 0, PulseType.DRIVE, 0) + targ = rfsoc.Pulse(50, 0.9, 0, 0, 0.04, pulse.serial, "drive", 4, None, "drag", 5, 2) + assert convert_pulse(pulse, platform.qubits) == targ - instrument.setup(sampling_rate=5_000_000_000, relaxation_time=1_000, adc_trig_offset=150, max_gain=30_000) + pulse = Pulse(0, 40, 0.9, 50e6, 0, Gaussian(2), 0, PulseType.DRIVE, 0) + targ = rfsoc.Pulse(50, 0.9, 0, 0, 0.04, pulse.serial, "drive", 4, None, "gaussian", 2) + assert convert_pulse(pulse, platform.qubits) == targ - assert instrument.cfg == target_cfg + pulse = Pulse(0, 40, 0.9, 50e6, 0, Rectangular(), 0, PulseType.READOUT, 0) + targ = rfsoc.Pulse(49, 0.9, 0, 0, 0.04, pulse.serial, "readout", 2, 1, "rectangular") + assert convert_pulse(pulse, platform.qubits) == targ + + +def test_convert_frequency_sweeper(): + """Tests frequency conversion for `rfsoc.Sweeper` objects""" + platform = create_platform("rfsoc") + qubit = platform.qubits[0] + qubit.drive.ports = [("name", 4)] + qubit.readout.ports = [("name", 2)] + qubit.feedback.ports = [("name", 1)] + qubit.readout.local_oscillator._frequency = 1e6 + + seq = PulseSequence() + pulse0 = Pulse(0, 40, 0.9, 50e6, 0, Gaussian(2), 0, PulseType.DRIVE, 0) + pulse1 = Pulse(0, 40, 0.9, 50e6, 0, Rectangular(), 0, PulseType.READOUT, 0) + seq.add(pulse0) + seq.add(pulse1) + + sweeper = rfsoc.Sweeper(10, [rfsoc.Parameter.FREQUENCY], [0], [10e6], [1]) + convert_frequency_sweeper(sweeper, seq, platform.qubits) + + assert sweeper.starts == [-1] + assert sweeper.stops == [9] + + +def test_rfsoc_init(): + """Tests instrument can initilize and its attribute are assigned""" + platform = create_platform("rfsoc") + instrument = platform.instruments[0] + + assert instrument.host == "0.0.0.0" + assert instrument.port == 0 + assert isinstance(instrument.cfg, rfsoc.Config) def test_classify_shots(): @@ -72,6 +132,7 @@ def test_merge_sweep_results(): platform = create_platform("rfsoc") instrument = platform.instruments[0] + out_dict1 = instrument.merge_sweep_results(dict_a, dict_b) out_dict2 = instrument.merge_sweep_results(dict_c, dict_a) @@ -91,30 +152,61 @@ def test_get_if_python_sweep(): at the same time, sweep on channels where multiple pulses are sent. If Qibosoq does not support the sweep, the driver will use a python loop """ + platform = create_platform("rfsoc") instrument = platform.instruments[0] sequence_1 = PulseSequence() sequence_1.add(platform.create_RX_pulse(qubit=0, start=0)) sequence_1.add(platform.create_MZ_pulse(qubit=0, start=100)) + sweep1 = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 100, 10), pulses=[sequence_1[0]]) sweep2 = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 100, 10), pulses=[sequence_1[1]]) sweep3 = Sweeper(parameter=Parameter.amplitude, values=np.arange(0.01, 0.5, 0.1), pulses=[sequence_1[1]]) - sequence_2 = PulseSequence() - sequence_2.add(platform.create_RX_pulse(qubit=0, start=0)) - sequence_2.add(platform.create_RX_pulse(qubit=0, start=100)) + sweep1 = convert_sweep(sweep1, sequence_1, platform.qubits) + sweep2 = convert_sweep(sweep2, sequence_1, platform.qubits) + sweep3 = convert_sweep(sweep3, sequence_1, platform.qubits) assert instrument.get_if_python_sweep(sequence_1, platform.qubits, sweep2) - assert instrument.get_if_python_sweep(sequence_2, platform.qubits, sweep1) - assert instrument.get_if_python_sweep(sequence_2, platform.qubits, sweep1, sweep1) assert not instrument.get_if_python_sweep(sequence_1, platform.qubits, sweep1) assert not instrument.get_if_python_sweep(sequence_1, platform.qubits, sweep3) + sequence_2 = PulseSequence() + sequence_2.add(platform.create_RX_pulse(qubit=0, start=0)) + + sweep1 = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 100, 10), pulses=[sequence_2[0]]) + sweep2 = Sweeper(parameter=Parameter.amplitude, values=np.arange(0.01, 0.5, 0.1), pulses=[sequence_2[0]]) + sweep1 = convert_sweep(sweep1, sequence_2, platform.qubits) + sweep2 = convert_sweep(sweep2, sequence_2, platform.qubits) + + assert not instrument.get_if_python_sweep(sequence_2, platform.qubits, sweep1) + assert not instrument.get_if_python_sweep(sequence_2, platform.qubits, sweep1, sweep2) + + # TODO repetition + platform = create_platform("rfsoc") + instrument = platform.instruments[0] + + sequence_1 = PulseSequence() + sequence_1.add(platform.create_RX_pulse(qubit=0, start=0)) + sweep1 = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 100, 10), pulses=[sequence_1[0]]) + sweep2 = Sweeper(parameter=Parameter.relative_phase, values=np.arange(0, 1, 0.01), pulses=[sequence_1[0]]) + sweep3 = Sweeper(parameter=Parameter.bias, values=np.arange(-0.1, 0.1, 0.001), qubits=[platform.qubits[0]]) + sweep1 = convert_sweep(sweep1, sequence_1, platform.qubits) + sweep2 = convert_sweep(sweep2, sequence_1, platform.qubits) + sweep3 = convert_sweep(sweep3, sequence_1, platform.qubits) + assert not instrument.get_if_python_sweep(sequence_1, platform.qubits, sweep1, sweep2, sweep3) + + platform.qubits[0].flux.bias = 0.5 + sweep1 = Sweeper(parameter=Parameter.bias, values=np.arange(-1, 1, 0.1), qubits=[0]) + with pytest.raises(ValueError): + sweep1 = convert_sweep(sweep1, sequence_1, platform.qubits) + def test_convert_av_sweep_results(): """Qibosoq sends results using nested lists, check if the conversion to dictionary of AveragedResults, for averaged sweep, works as expected """ + platform = create_platform("rfsoc") instrument = platform.instruments[0] @@ -123,22 +215,20 @@ def test_convert_av_sweep_results(): sequence.add(platform.create_MZ_pulse(qubit=0, start=100)) sequence.add(platform.create_MZ_pulse(qubit=0, start=200)) sweep1 = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 35, 10), pulses=[sequence[0]]) + sweep1 = convert_sweep(sweep1, sequence, platform.qubits) serial1 = sequence[1].serial serial2 = sequence[2].serial - avgi = [[[1, 2, 3], [0, 1, 2]]] + avgi = [[[1, 2, 3], [4, 1, 2]]] avgq = [[[7, 8, 9], [-1, -2, -3]]] - ro_serials = [ro.serial for ro in sequence.ro_pulses] execution_parameters = ExecutionParameters( acquisition_type=AcquisitionType.INTEGRATION, averaging_mode=AveragingMode.CYCLIC ) - out_dict = instrument.convert_sweep_results( - sweep1, ro_serials, sequence, platform.qubits, avgi, avgq, execution_parameters - ) + out_dict = instrument.convert_sweep_results(sequence.ro_pulses, platform.qubits, avgi, avgq, execution_parameters) targ_dict = { serial1: AveragedIntegratedResults(np.array([1, 2, 3]) + 1j * np.array([7, 8, 9])), - serial2: AveragedIntegratedResults(np.array([0, 1, 2]) + 1j * np.array([-1, -2, -3])), + serial2: AveragedIntegratedResults(np.array([4, 1, 2]) + 1j * np.array([-1, -2, -3])), } assert (out_dict[serial1].serialize["i[V]"] == targ_dict[serial1].serialize["i[V]"]).all() @@ -159,22 +249,20 @@ def test_convert_nav_sweep_results(): sequence.add(platform.create_MZ_pulse(qubit=0, start=100)) sequence.add(platform.create_MZ_pulse(qubit=0, start=200)) sweep1 = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 35, 10), pulses=[sequence[0]]) + sweep1 = convert_sweep(sweep1, sequence, platform.qubits) serial1 = sequence[1].serial serial2 = sequence[2].serial - avgi = [[[[1, 1], [2, 2], [3, 3]], [[0, 0], [1, 1], [2, 2]]]] + avgi = [[[[1, 1], [2, 2], [3, 3]], [[4, 4], [1, 1], [2, 2]]]] avgq = [[[[7, 7], [8, 8], [9, 9]], [[-1, -1], [-2, -2], [-3, -3]]]] - ro_serials = [ro.serial for ro in sequence.ro_pulses] execution_parameters = ExecutionParameters( acquisition_type=AcquisitionType.INTEGRATION, averaging_mode=AveragingMode.CYCLIC ) - out_dict = instrument.convert_sweep_results( - sweep1, ro_serials, sequence, platform.qubits, avgi, avgq, execution_parameters - ) + out_dict = instrument.convert_sweep_results(sequence.ro_pulses, platform.qubits, avgi, avgq, execution_parameters) targ_dict = { serial1: AveragedIntegratedResults(np.array([1, 1, 2, 2, 3, 3]) + 1j * np.array([7, 7, 8, 8, 9, 9])), - serial2: AveragedIntegratedResults(np.array([0, 0, 1, 1, 2, 2]) + 1j * np.array([-1, -1, -2, -2, -3, -3])), + serial2: AveragedIntegratedResults(np.array([4, 4, 1, 1, 2, 2]) + 1j * np.array([-1, -1, -2, -2, -3, -3])), } assert (out_dict[serial1].serialize["i[V]"] == targ_dict[serial1].serialize["i[V]"]).all() @@ -205,7 +293,7 @@ def test_call_executepulsesequence(): @pytest.mark.qpu -def test_call_executesinglesweep(): +def test_call_execute_sweeps(): """Executes a firmware sweep and check if result shape is as expected. Both for averaged results and not averaged results. """ @@ -216,16 +304,16 @@ def test_call_executesinglesweep(): sequence.add(platform.create_RX_pulse(qubit=0, start=0)) sequence.add(platform.create_MZ_pulse(qubit=0, start=100)) sweep = Sweeper(parameter=Parameter.frequency, values=np.arange(10, 35, 10), pulses=[sequence[0]]) + expts = len(sweep.values) - i_vals_nav, q_vals_nav = instrument._execute_single_sweep( - instrument.cfg, sequence, platform.qubits, sweep, 1, False - ) - i_vals_av, q_vals_av = instrument._execute_single_sweep(instrument.cfg, sequence, platform.qubits, sweep, 1, True) + sweep = [convert_sweep(sweep, sequence, platform.qubits)] + i_vals_nav, q_vals_nav = instrument._execute_sweeps(instrument.cfg, sequence, platform.qubits, sweep, 1, False) + i_vals_av, q_vals_av = instrument._execute_sweeps(instrument.cfg, sequence, platform.qubits, sweep, 1, True) - assert np.shape(i_vals_nav) == (1, 1, len(sweep.values), 1000) - assert np.shape(q_vals_nav) == (1, 1, len(sweep.values), 1000) - assert np.shape(i_vals_av) == (1, 1, len(sweep.values)) - assert np.shape(q_vals_av) == (1, 1, len(sweep.values)) + assert np.shape(i_vals_nav) == (1, 1, expts, 1000) + assert np.shape(q_vals_nav) == (1, 1, expts, 1000) + assert np.shape(i_vals_av) == (1, 1, expts) + assert np.shape(q_vals_av) == (1, 1, expts) @pytest.mark.qpu