diff --git a/poetry.lock b/poetry.lock index 42182093c..75062e20e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -64,14 +64,14 @@ files = [ name = "anyio" version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false +optional = true python-versions = ">=3.9" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} @@ -222,14 +222,14 @@ lxml = ["lxml"] name = "betterproto" version = "2.0.0b7" description = "A better Protobuf / gRPC generator & library" -optional = false +optional = true python-versions = "<4.0,>=3.7" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "betterproto-2.0.0b7-py3-none-any.whl", hash = "sha256:401ab8055e2f814e77b9c88a74d0e1ae3d1e8a969cced6aeb1b59f71ad63fbd2"}, {file = "betterproto-2.0.0b7.tar.gz", hash = "sha256:1b1458ca5278d519bcd62556a4c236f998a91d503f0f71c67b0b954747052af2"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] grpclib = ">=0.4.1,<0.5.0" @@ -266,7 +266,7 @@ version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false python-versions = ">=3.9" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, @@ -315,7 +315,7 @@ version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, @@ -409,7 +409,7 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, @@ -512,7 +512,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, @@ -553,7 +553,7 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "(sys_platform == \"win32\" or platform_system == \"Windows\") and (python_version <= \"3.11\" or python_version >= \"3.12\")", dev = "(python_version <= \"3.11\" or python_version >= \"3.12\") and sys_platform == \"win32\"", docs = "(platform_system == \"Windows\" or sys_platform == \"win32\") and (python_version <= \"3.11\" or python_version >= \"3.12\")", tests = "(platform_system == \"Windows\" or sys_platform == \"win32\") and (python_version <= \"3.11\" or python_version >= \"3.12\")"} +markers = {main = "(sys_platform == \"win32\" or platform_system == \"Windows\") and (python_version <= \"3.11\" or python_version >= \"3.12\")", dev = "(python_version <= \"3.11\" or python_version >= \"3.12\") and sys_platform == \"win32\"", docs = "(platform_system == \"Windows\" or sys_platform == \"win32\") and (python_version <= \"3.11\" or python_version >= \"3.12\")", tests = "(python_version <= \"3.11\" or python_version >= \"3.12\") and sys_platform == \"win32\""} [[package]] name = "colorlog" @@ -842,139 +842,18 @@ files = [ docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] tests = ["pytest", "pytest-cov", "pytest-xdist"] -[[package]] -name = "dash" -version = "2.18.2" -description = "A Python framework for building reactive web-apps. Developed by Plotly." -optional = false -python-versions = ">=3.8" -groups = ["main", "docs", "tests"] -files = [ - {file = "dash-2.18.2-py3-none-any.whl", hash = "sha256:0ce0479d1bc958e934630e2de7023b8a4558f23ce1f9f5a4b34b65eb3903a869"}, - {file = "dash-2.18.2.tar.gz", hash = "sha256:20e8404f73d0fe88ce2eae33c25bbc513cbe52f30d23a401fa5f24dbb44296c8"}, -] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} - -[package.dependencies] -dash-core-components = "2.0.0" -dash-html-components = "2.0.0" -dash-table = "5.0.0" -Flask = ">=1.0.4,<3.1" -importlib-metadata = "*" -nest-asyncio = "*" -plotly = ">=5.0.0" -requests = "*" -retrying = "*" -setuptools = "*" -typing-extensions = ">=4.1.1" -Werkzeug = "<3.1" - -[package.extras] -celery = ["celery[redis] (>=5.1.2)", "redis (>=3.5.3)"] -ci = ["black (==22.3.0)", "dash-dangerously-set-inner-html", "dash-flow-example (==0.0.5)", "flake8 (==7.0.0)", "flaky (==3.8.1)", "flask-talisman (==1.0.0)", "jupyterlab (<4.0.0)", "mimesis (<=11.1.0)", "mock (==4.0.3)", "numpy (<=1.26.3)", "openpyxl", "orjson (==3.10.3)", "pandas (>=1.4.0)", "pyarrow", "pylint (==3.0.3)", "pytest-mock", "pytest-rerunfailures", "pytest-sugar (==0.9.6)", "pyzmq (==25.1.2)", "xlrd (>=2.0.1)"] -compress = ["flask-compress"] -dev = ["PyYAML (>=5.4.1)", "coloredlogs (>=15.0.1)", "fire (>=0.4.0)"] -diskcache = ["diskcache (>=5.2.1)", "multiprocess (>=0.70.12)", "psutil (>=5.8.0)"] -testing = ["beautifulsoup4 (>=4.8.2)", "cryptography", "dash-testing-stub (>=0.0.2)", "lxml (>=4.6.2)", "multiprocess (>=0.70.12)", "percy (>=2.0.2)", "psutil (>=5.8.0)", "pytest (>=6.0.2)", "requests[security] (>=2.21.0)", "selenium (>=3.141.0,<=4.2.0)", "waitress (>=1.4.4)"] - -[[package]] -name = "dash-bootstrap-components" -version = "1.7.1" -description = "Bootstrap themed components for use in Plotly Dash" -optional = false -python-versions = "<4,>=3.9" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "dash_bootstrap_components-1.7.1-py3-none-any.whl", hash = "sha256:5e8eae7ee1d013f69e272c68c1015b53ab71802460152088f33fffa90d245199"}, - {file = "dash_bootstrap_components-1.7.1.tar.gz", hash = "sha256:30d48340d6dc89831d6c06e400cd4236f0d5363562c05b2a922f21545695a082"}, -] - -[package.dependencies] -dash = ">=2.0.0" - -[package.extras] -pandas = ["numpy (>=2.0.2)", "pandas (>=2.2.3)"] - -[[package]] -name = "dash-core-components" -version = "2.0.0" -description = "Core component suite for Dash" -optional = false -python-versions = "*" -groups = ["main", "docs", "tests"] -files = [ - {file = "dash_core_components-2.0.0-py3-none-any.whl", hash = "sha256:52b8e8cce13b18d0802ee3acbc5e888cb1248a04968f962d63d070400af2e346"}, - {file = "dash_core_components-2.0.0.tar.gz", hash = "sha256:c6733874af975e552f95a1398a16c2ee7df14ce43fa60bb3718a3c6e0b63ffee"}, -] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} - -[[package]] -name = "dash-cytoscape" -version = "0.3.0" -description = "A Component Library for Dash aimed at facilitating network visualization in Python, wrapped around Cytoscape.js" -optional = false -python-versions = "*" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "dash_cytoscape-0.3.0-py3-none-any.whl", hash = "sha256:718dc1568b9e7bfe7f64376aa903c64a1a1fe6daed4e559b254456f18dd3135f"}, - {file = "dash_cytoscape-0.3.0.tar.gz", hash = "sha256:a71ad4fe095570b71d4ad7c0d29199e9780c2e6796173d3b25fccc2cc58c855f"}, -] - -[package.dependencies] -dash = "*" - -[[package]] -name = "dash-dangerously-set-inner-html" -version = "0.0.2" -description = "A dash component for specifying raw HTML" -optional = false -python-versions = "*" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "dash_dangerously_set_inner_html-0.0.2.tar.gz", hash = "sha256:d7fe990755851fc4d2e22c8f10b7aea055cabf380bbceefba589779b269fea64"}, -] - -[[package]] -name = "dash-html-components" -version = "2.0.0" -description = "Vanilla HTML components for Dash" -optional = false -python-versions = "*" -groups = ["main", "docs", "tests"] -files = [ - {file = "dash_html_components-2.0.0-py3-none-any.whl", hash = "sha256:b42cc903713c9706af03b3f2548bda4be7307a7cf89b7d6eae3da872717d1b63"}, - {file = "dash_html_components-2.0.0.tar.gz", hash = "sha256:8703a601080f02619a6390998e0b3da4a5daabe97a1fd7a9cebc09d015f26e50"}, -] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} - -[[package]] -name = "dash-table" -version = "5.0.0" -description = "Dash table" -optional = false -python-versions = "*" -groups = ["main", "docs", "tests"] -files = [ - {file = "dash_table-5.0.0-py3-none-any.whl", hash = "sha256:19036fa352bb1c11baf38068ec62d172f0515f73ca3276c79dee49b95ddc16c9"}, - {file = "dash_table-5.0.0.tar.gz", hash = "sha256:18624d693d4c8ef2ddec99a6f167593437a7ea0bf153aa20f318c170c5bc7308"}, -] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} - [[package]] name = "datadog-api-client" version = "2.31.0" description = "Collection of all Datadog Public endpoints" -optional = false +optional = true python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "datadog_api_client-2.31.0-py3-none-any.whl", hash = "sha256:212747aa448ba09d30c71395a035616dac393651f34652824aee8512c21b633d"}, {file = "datadog_api_client-2.31.0.tar.gz", hash = "sha256:09895285879d4b3c4c7084ce0063d7b53e275b11818127f5f53a926803836d0c"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] certifi = "*" @@ -1018,9 +897,10 @@ files = [ name = "dependency-injector" version = "4.45.0" description = "Dependency injection framework for Python" -optional = false +optional = true python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "dependency_injector-4.45.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7ec03cd54b79b5fc8df46ae821392358a24dc371bda01a2a68917ab0e559a96b"}, {file = "dependency_injector-4.45.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:433883ccdfa353e6c8c2e20ba6eb08f77149a7e15f816f05be65bb791b86e5fe"}, @@ -1105,7 +985,6 @@ files = [ {file = "dependency_injector-4.45.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d1cd1034fdc8c4c9daeafdab146570260d5c8fe70fa87a2d428621fc5a07ea8c"}, {file = "dependency_injector-4.45.0.tar.gz", hash = "sha256:7effdb9e45f5c2813e2fd9dc2ef2c446dd59716f66f9c772ab27b9ed16efc894"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.extras] aiohttp = ["aiohttp"] @@ -1136,12 +1015,12 @@ version = "0.19" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\" or python_version >= \"3.12\""} [[package]] name = "engineering-notation" @@ -1226,7 +1105,7 @@ version = "3.0.3" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "flask-3.0.3-py3-none-any.whl", hash = "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3"}, @@ -1502,9 +1381,10 @@ test = ["objgraph", "psutil"] name = "grpcio" version = "1.69.0" description = "HTTP/2-based RPC framework" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "grpcio-1.69.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2060ca95a8db295ae828d0fc1c7f38fb26ccd5edf9aa51a0f44251f5da332e97"}, {file = "grpcio-1.69.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:2e52e107261fd8fa8fa457fe44bfadb904ae869d87c1280bf60f93ecd3e79278"}, @@ -1562,7 +1442,6 @@ files = [ {file = "grpcio-1.69.0-cp39-cp39-win_amd64.whl", hash = "sha256:c1fea55d26d647346acb0069b08dca70984101f2dc95066e003019207212e303"}, {file = "grpcio-1.69.0.tar.gz", hash = "sha256:936fa44241b5379c5afc344e1260d467bee495747eaf478de825bab2791da6f5"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.extras] protobuf = ["grpcio-tools (>=1.69.0)"] @@ -1571,13 +1450,13 @@ protobuf = ["grpcio-tools (>=1.69.0)"] name = "grpclib" version = "0.4.7" description = "Pure-Python gRPC implementation for asyncio" -optional = false +optional = true python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "grpclib-0.4.7.tar.gz", hash = "sha256:2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] h2 = ">=3.1.0,<5" @@ -1590,27 +1469,27 @@ protobuf = ["protobuf (>=3.20.0)"] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false +optional = true python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [[package]] name = "h2" version = "4.1.0" description = "HTTP/2 State-Machine based protocol implementation" -optional = false +optional = true python-versions = ">=3.6.1" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] hpack = ">=4.0,<5" @@ -1680,27 +1559,27 @@ numpy = ">=1.19.3" name = "hpack" version = "4.0.0" description = "Pure-Python HPACK header compression" -optional = false +optional = true python-versions = ">=3.6.1" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [[package]] name = "httpcore" version = "1.0.7" description = "A minimal low-level HTTP client." -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] certifi = "*" @@ -1716,14 +1595,14 @@ trio = ["trio (>=0.22.0,<1.0)"] name = "httpx" version = "0.28.1" description = "The next generation HTTP client." -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] anyio = "*" @@ -1743,14 +1622,14 @@ zstd = ["zstandard (>=0.18.0)"] name = "hyperframe" version = "6.0.1" description = "HTTP/2 framing layer for Python" -optional = false +optional = true python-versions = ">=3.6.1" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [[package]] name = "idna" @@ -1758,7 +1637,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, @@ -1800,12 +1679,12 @@ version = "8.5.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] +markers = "python_version < \"3.10\"" files = [ {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, ] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} [package.dependencies] zipp = ">=3.20" @@ -1939,7 +1818,7 @@ version = "2.2.0" description = "Safely pass data to untrusted environments and back." optional = false python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, @@ -1973,7 +1852,7 @@ version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, @@ -1992,12 +1871,12 @@ version = "1.4.2" description = "Lightweight pipelining with Python functions" optional = false python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\"", docs = "python_version <= \"3.11\""} [[package]] name = "jsonref" @@ -2459,7 +2338,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, @@ -2529,14 +2408,14 @@ files = [ name = "marshmallow" version = "3.25.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." -optional = false +optional = true python-versions = ">=3.9" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "marshmallow-3.25.1-py3-none-any.whl", hash = "sha256:ec5d00d873ce473b7f2ffcb7104286a376c354cab0c2fa12f5573dab03e87210"}, {file = "marshmallow-3.25.1.tar.gz", hash = "sha256:f4debda3bb11153d81ac34b0d582bf23053055ee11e791b54b4b35493468040a"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] packaging = ">=17.0" @@ -2550,13 +2429,13 @@ tests = ["pytest", "simplejson"] name = "marshmallow-polyfield" version = "5.11" description = "An unofficial extension to Marshmallow to allow for polymorphic fields" -optional = false +optional = true python-versions = ">=3.5" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "marshmallow-polyfield-5.11.tar.gz", hash = "sha256:8075a9cc490da4af58b902b4a40a99882dd031adb7aaa96abd147a4fcd53415f"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] marshmallow = ">=3.0.0b10" @@ -2734,9 +2613,10 @@ portalocker = ">=1.4,<3" name = "multidict" version = "6.1.0" description = "multidict implementation" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, @@ -2831,7 +2711,6 @@ files = [ {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} @@ -2949,12 +2828,12 @@ version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] +markers = "python_version <= \"3.11\" and (platform_machine == \"aarch64\" or platform_machine == \"armv7l\")" files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} [[package]] name = "networkx" @@ -3514,14 +3393,14 @@ type = ["mypy (>=1.11.2)"] name = "plotly" version = "5.24.1" description = "An open-source, interactive data visualization library for Python" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "plotly-5.24.1-py3-none-any.whl", hash = "sha256:f67073a1e637eb0dc3e46324d9d51e2fe76e9727c892dde64ddf1e1b51f29089"}, {file = "plotly-5.24.1.tar.gz", hash = "sha256:dbc8ac8339d248a4bcc36e08a5659bacfe1b079390b8953533f4eb22169b4bae"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} [package.dependencies] packaging = "*" @@ -4889,14 +4768,14 @@ full = ["pyro4"] name = "qm-octave" version = "2.1.3" description = "SDK to control an Octave with QUA" -optional = false +optional = true python-versions = "<3.13,>=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "qm_octave-2.1.3-py3-none-any.whl", hash = "sha256:1957eadaa6d8e3150c57bb8b378d3d9fbcd9dc66163ace3a317ecb94685e606a"}, {file = "qm_octave-2.1.3.tar.gz", hash = "sha256:f7981b73dc51276f306e553f9906e40119024067ce7cab79c19f07b53778cc7b"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] betterproto = "2.0.0b7" @@ -4911,14 +4790,14 @@ protobuf = [ name = "qm-qua" version = "1.2.1" description = "QUA language SDK to control a Quantum Computer" -optional = false +optional = true python-versions = "<3.13,>=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "qm_qua-1.2.1-py3-none-any.whl", hash = "sha256:3315379d16929468b058adbe489f6ac3979d1a5fcae102d4fc498bb7ac2feded"}, {file = "qm_qua-1.2.1.tar.gz", hash = "sha256:9a6af3cbab527bd95948c78a640d84d4ec8487ab1e146afd9e38f0ce9f939701"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [package.dependencies] betterproto = "2.0.0b7" @@ -4946,39 +4825,6 @@ typing-extensions = ">=4.5,<5.0" [package.extras] simulation = ["certifi"] -[[package]] -name = "qualang-tools" -version = "0.15.2" -description = "The qualang_tools package includes various tools related to QUA programs in Python" -optional = false -python-versions = ">=3.7.1,<4.0" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "qualang_tools-0.15.2-py3-none-any.whl", hash = "sha256:37a21a889eef947c144b08bb1c8b6e90142c7ca71fa0c9e3d4eb0591db48f71c"}, - {file = "qualang_tools-0.15.2.tar.gz", hash = "sha256:3db332071073e4fe503c178ae0f83477176d72ba6636f3f6df1383d694f69284"}, -] - -[package.dependencies] -dash = ">=2.0.0,<3.0.0" -dash-bootstrap-components = ">=1.0.0,<2.0.0" -dash-core-components = ">=2.0.0,<3.0.0" -dash-cytoscape = ">=0.3.0,<0.4.0" -dash-dangerously-set-inner-html = ">=0.0.2,<0.0.3" -dash-html-components = ">=2.0.0,<3.0.0" -dash-table = ">=5.0.0,<6.0.0" -docutils = ">=0.14.0" -matplotlib = ">=3.4.2,<4.0.0" -numpy = ">=1.17.0,<2.0.0" -pandas = ">=1.2.4" -qm-qua = ">=1.1.0" -scikit-learn = ">=1.0.2,<2.0.0" -scipy = ">=1.7.1,<2.0.0" -waitress = ">=2.0.0,<3.0.0" - -[package.extras] -interplot = ["dill (>=0.3.4,<0.4.0)", "ipython (>=7.31.1,<8.0.0)", "pypiwin32 (>=223,<224)"] - [[package]] name = "qutip" version = "5.0.4" @@ -5059,7 +4905,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, @@ -5076,22 +4922,6 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "retrying" -version = "1.3.4" -description = "Retrying" -optional = false -python-versions = "*" -groups = ["main", "docs", "tests"] -files = [ - {file = "retrying-1.3.4-py3-none-any.whl", hash = "sha256:8cc4d43cb8e1125e0ff3344e9de678fefd85db3b750b81b2240dc0183af37b35"}, - {file = "retrying-1.3.4.tar.gz", hash = "sha256:345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e"}, -] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} - -[package.dependencies] -six = ">=1.7.0" - [[package]] name = "rich" version = "13.9.4" @@ -5362,62 +5192,6 @@ files = [ {file = "schema-0.7.7.tar.gz", hash = "sha256:7da553abd2958a19dc2547c388cde53398b39196175a9be59ea1caf5ab0a1807"}, ] -[[package]] -name = "scikit-learn" -version = "1.6.1" -description = "A set of python modules for machine learning and data mining" -optional = false -python-versions = ">=3.9" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "scikit_learn-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d056391530ccd1e501056160e3c9673b4da4805eb67eb2bdf4e983e1f9c9204e"}, - {file = "scikit_learn-1.6.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0c8d036eb937dbb568c6242fa598d551d88fb4399c0344d95c001980ec1c7d36"}, - {file = "scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8634c4bd21a2a813e0a7e3900464e6d593162a29dd35d25bdf0103b3fce60ed5"}, - {file = "scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:775da975a471c4f6f467725dff0ced5c7ac7bda5e9316b260225b48475279a1b"}, - {file = "scikit_learn-1.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:8a600c31592bd7dab31e1c61b9bbd6dea1b3433e67d264d17ce1017dbdce8002"}, - {file = "scikit_learn-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72abc587c75234935e97d09aa4913a82f7b03ee0b74111dcc2881cba3c5a7b33"}, - {file = "scikit_learn-1.6.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b3b00cdc8f1317b5f33191df1386c0befd16625f49d979fe77a8d44cae82410d"}, - {file = "scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc4765af3386811c3ca21638f63b9cf5ecf66261cc4815c1db3f1e7dc7b79db2"}, - {file = "scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25fc636bdaf1cc2f4a124a116312d837148b5e10872147bdaf4887926b8c03d8"}, - {file = "scikit_learn-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:fa909b1a36e000a03c382aade0bd2063fd5680ff8b8e501660c0f59f021a6415"}, - {file = "scikit_learn-1.6.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:926f207c804104677af4857b2c609940b743d04c4c35ce0ddc8ff4f053cddc1b"}, - {file = "scikit_learn-1.6.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c2cae262064e6a9b77eee1c8e768fc46aa0b8338c6a8297b9b6759720ec0ff2"}, - {file = "scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1061b7c028a8663fb9a1a1baf9317b64a257fcb036dae5c8752b2abef31d136f"}, - {file = "scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e69fab4ebfc9c9b580a7a80111b43d214ab06250f8a7ef590a4edf72464dd86"}, - {file = "scikit_learn-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:70b1d7e85b1c96383f872a519b3375f92f14731e279a7b4c6cfd650cf5dffc52"}, - {file = "scikit_learn-1.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ffa1e9e25b3d93990e74a4be2c2fc61ee5af85811562f1288d5d055880c4322"}, - {file = "scikit_learn-1.6.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dc5cf3d68c5a20ad6d571584c0750ec641cc46aeef1c1507be51300e6003a7e1"}, - {file = "scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c06beb2e839ecc641366000ca84f3cf6fa9faa1777e29cf0c04be6e4d096a348"}, - {file = "scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8ca8cb270fee8f1f76fa9bfd5c3507d60c6438bbee5687f81042e2bb98e5a97"}, - {file = "scikit_learn-1.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:7a1c43c8ec9fde528d664d947dc4c0789be4077a3647f232869f41d9bf50e0fb"}, - {file = "scikit_learn-1.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a17c1dea1d56dcda2fac315712f3651a1fea86565b64b48fa1bc090249cbf236"}, - {file = "scikit_learn-1.6.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a7aa5f9908f0f28f4edaa6963c0a6183f1911e63a69aa03782f0d924c830a35"}, - {file = "scikit_learn-1.6.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0650e730afb87402baa88afbf31c07b84c98272622aaba002559b614600ca691"}, - {file = "scikit_learn-1.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:3f59fe08dc03ea158605170eb52b22a105f238a5d512c4470ddeca71feae8e5f"}, - {file = "scikit_learn-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6849dd3234e87f55dce1db34c89a810b489ead832aaf4d4550b7ea85628be6c1"}, - {file = "scikit_learn-1.6.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e7be3fa5d2eb9be7d77c3734ff1d599151bb523674be9b834e8da6abe132f44e"}, - {file = "scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44a17798172df1d3c1065e8fcf9019183f06c87609b49a124ebdf57ae6cb0107"}, - {file = "scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b7a3b86e411e4bce21186e1c180d792f3d99223dcfa3b4f597ecc92fa1a422"}, - {file = "scikit_learn-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7a73d457070e3318e32bdb3aa79a8d990474f19035464dfd8bede2883ab5dc3b"}, - {file = "scikit_learn-1.6.1.tar.gz", hash = "sha256:b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e"}, -] - -[package.dependencies] -joblib = ">=1.2.0" -numpy = ">=1.19.5" -scipy = ">=1.6.0" -threadpoolctl = ">=3.1.0" - -[package.extras] -benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] -build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-design (>=0.6.0)", "sphinx-gallery (>=0.17.1)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)", "towncrier (>=24.8.0)"] -examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] -install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] -maintenance = ["conda-lock (==2.5.6)"] -tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.5.1)", "scikit-image (>=0.17.2)"] - [[package]] name = "scipy" version = "1.13.1" @@ -5468,12 +5242,12 @@ version = "75.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] +markers = "python_version <= \"3.11\" and (platform_machine == \"aarch64\" or platform_machine == \"armv7l\")" files = [ {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, ] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] @@ -5490,7 +5264,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, @@ -5501,14 +5275,14 @@ files = [ name = "sniffio" version = "1.3.1" description = "Sniff out which async library your code is running under" -optional = false +optional = true python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [[package]] name = "snowballstemmer" @@ -5969,32 +5743,19 @@ widechars = ["wcwidth"] name = "tenacity" version = "9.0.0" description = "Retry code until it succeeds" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539"}, {file = "tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} [package.extras] doc = ["reno", "sphinx"] test = ["pytest", "tornado (>=4.5)", "typeguard"] -[[package]] -name = "threadpoolctl" -version = "3.5.0" -description = "threadpoolctl" -optional = false -python-versions = ">=3.8" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "threadpoolctl-3.5.0-py3-none-any.whl", hash = "sha256:56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467"}, - {file = "threadpoolctl-3.5.0.tar.gz", hash = "sha256:082433502dd922bf738de0d8bcc4fdcbf0979ff44c42bd40f5af8a282f6fa107"}, -] - [[package]] name = "tinycss2" version = "1.4.0" @@ -6019,14 +5780,14 @@ test = ["pytest", "ruff"] name = "tinydb" version = "4.8.2" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" -optional = false +optional = true python-versions = "<4.0,>=3.8" -groups = ["main", "docs"] +groups = ["main"] +markers = "(python_version <= \"3.11\" or python_version >= \"3.12\") and extra == \"qm\"" files = [ {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\" and extra == \"qm\"", docs = "python_version <= \"3.11\""} [[package]] name = "tomli" @@ -6139,12 +5900,12 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs", "tests"] +groups = ["main", "dev", "docs"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] -markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\"", dev = "python_version < \"3.10\"", docs = "python_version <= \"3.11\" or python_version >= \"3.12\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} +markers = {main = "python_version <= \"3.11\" or python_version >= \"3.12\"", dev = "python_version < \"3.10\"", docs = "python_version <= \"3.11\" or python_version >= \"3.12\""} [[package]] name = "tzdata" @@ -6196,7 +5957,7 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, @@ -6227,23 +5988,6 @@ importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} packaging = ">=17.1" tomli = {version = ">=1.2,<3.0", markers = "python_version < \"3.11\""} -[[package]] -name = "waitress" -version = "2.1.2" -description = "Waitress WSGI server" -optional = false -python-versions = ">=3.7.0" -groups = ["main", "docs"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "waitress-2.1.2-py3-none-any.whl", hash = "sha256:7500c9625927c8ec60f54377d590f67b30c8e70ef4b8894214ac6e4cad233d2a"}, - {file = "waitress-2.1.2.tar.gz", hash = "sha256:780a4082c5fbc0fde6a2fcfe5e26e6efc1e8f425730863c04085769781f51eba"}, -] - -[package.extras] -docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.9)"] -testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] - [[package]] name = "wcwidth" version = "0.2.13" @@ -6356,7 +6100,7 @@ version = "3.0.6" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "werkzeug-3.0.6-py3-none-any.whl", hash = "sha256:1bc0c2310d2fbb07b1dd1105eba2f7af72f322e1e455f2f93c993bee8c8a5f17"}, @@ -6619,12 +6363,12 @@ version = "3.21.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.9" -groups = ["main", "docs", "tests"] +groups = ["main", "docs"] +markers = "python_version < \"3.10\"" files = [ {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, ] -markers = {main = "python_version <= \"3.11\"", docs = "python_version <= \"3.11\"", tests = "python_version <= \"3.11\" or python_version >= \"3.12\""} [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] @@ -6639,7 +6383,7 @@ bluefors = ["pyyaml"] emulator = ["qutip"] los = ["pyvisa-py", "qcodes", "qcodes_contrib_drivers"] qblox = ["pyvisa-py", "qblox-instruments", "qcodes", "qcodes_contrib_drivers"] -qm = ["qm-qua", "qualang-tools"] +qm = ["qm-qua"] rfsoc = ["qibosoq"] twpa = ["pyvisa-py", "qcodes", "qcodes_contrib_drivers"] zh = ["laboneq"] @@ -6647,4 +6391,4 @@ zh = ["laboneq"] [metadata] lock-version = "2.1" python-versions = ">=3.9,<3.13" -content-hash = "99ead14d74bbbd979133651b88b3f41f78178483a79ee229d79dcd7123701f26" +content-hash = "0d9b2914468c0bfa4484c3770c00636fa94507c7a5a6162209cfaee56f4286b0" diff --git a/pyproject.toml b/pyproject.toml index 1cf8e2a79..04c110aa9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,6 @@ qcodes = { version = "^0.37.0", optional = true } qcodes_contrib_drivers = { version = "0.18.0", optional = true } pyvisa-py = { version = "0.5.3", optional = true } qm-qua = { version = "==1.2.1", optional = true } -qualang-tools = { version = "^0.15.0", python = "<3.12", optional = true } laboneq = { version = "==2.25.0", optional = true } qibosoq = { version = ">=0.1.2,<0.2", python = "<3.12", optional = true } qutip = { version = "^5.0.2", optional = true } @@ -61,7 +60,6 @@ qblox-instruments = "0.12.0" qcodes = "^0.37.0" qcodes_contrib_drivers = "0.18.0" qibosoq = { version = "^0.1.2", python = "<3.12" } -qualang-tools = { version = "^0.15.0", python = "<3.12" } laboneq = "==2.25.0" qutip = "^5.0.2" @@ -70,12 +68,9 @@ optional = true [tool.poetry.group.tests.dependencies] pytest = ">=7.2.2" -setuptools = ">67.0.0" pytest-cov = "^4.0.0" pytest-env = ">=0.8.1" pytest-mock = ">=3.10.0" -# TODO: https://github.com/qiboteam/qibolab/pull/1128#issuecomment-2593208150 -dash = "^2.10.0" [tool.poetry.group.analysis] optional = true @@ -85,7 +80,7 @@ ruff = "^0.9.1" [tool.poetry.extras] qblox = ["qblox-instruments", "qcodes", "qcodes_contrib_drivers", "pyvisa-py"] -qm = ["qm-qua", "qualang-tools"] +qm = ["qm-qua"] zh = ["laboneq"] rfsoc = ["qibosoq"] los = ["qcodes", "qcodes_contrib_drivers", "pyvisa-py"] diff --git a/src/qibolab/_core/instruments/qm/controller.py b/src/qibolab/_core/instruments/qm/controller.py index 634b76bc6..a35afd1dd 100644 --- a/src/qibolab/_core/instruments/qm/controller.py +++ b/src/qibolab/_core/instruments/qm/controller.py @@ -8,10 +8,9 @@ from typing import Optional, Union from pydantic import Field -from qm import QuantumMachinesManager, SimulationConfig, generate_qua_script +from qm import QuantumMachinesManager, generate_qua_script from qm.octave import QmOctaveConfig from qm.simulate.credentials import create_credentials -from qualang_tools.simulator_tools import create_simulator_controller_connections from qibolab._core.components import ( AcquisitionChannel, @@ -24,7 +23,7 @@ from qibolab._core.execution_parameters import ExecutionParameters from qibolab._core.identifier import ChannelId from qibolab._core.instruments.abstract import Controller -from qibolab._core.pulses import Acquisition, Align, Delay, Pulse, Readout +from qibolab._core.pulses import Align, Delay, Pulse, Readout from qibolab._core.sequence import PulseSequence from qibolab._core.sweeper import ParallelSweepers, Parameter, Sweeper from qibolab._core.unrolling import unroll_sequences @@ -194,8 +193,9 @@ class QmController(Controller): def model_post_init(self, __context): if self.simulation_duration is not None: - # convert simulation duration from ns to clock cycles - self.simulation_duration //= 4 + raise NotImplementedError( + "Simulation is no longer supported by the QM driver." + ) @property def sampling_rate(self): @@ -473,16 +473,6 @@ def execute_program(self, program): machine = self.manager.open_qm(asdict(self.config)) return machine.execute(program) - def simulate_program(self, program): - """Simulates an arbitrary program written in QUA language.""" - ncontrollers = len(self.config.controllers) - controller_connections = create_simulator_controller_connections(ncontrollers) - simulation_config = SimulationConfig( - duration=self.simulation_duration, - controller_connections=controller_connections, - ) - return self.manager.simulate(asdict(self.config), program, simulation_config) - def play( self, configs: dict[str, Config], @@ -530,13 +520,5 @@ def play( ) return {"program": experiment, "config": asdict(self.config)} - if self.simulation_duration is not None: - result = self.simulate_program(experiment) - results = {} - for _, pulse in sequence: - if isinstance(pulse, Acquisition): - results[pulse.id] = result - return results - result = self.execute_program(experiment) return fetch_results(result, acquisitions.values()) diff --git a/src/qibolab/_core/instruments/qm/program/acquisition.py b/src/qibolab/_core/instruments/qm/program/acquisition.py index b7e21afe2..4226f9ef5 100644 --- a/src/qibolab/_core/instruments/qm/program/acquisition.py +++ b/src/qibolab/_core/instruments/qm/program/acquisition.py @@ -4,10 +4,8 @@ import numpy as np from qm import qua -from qm.qua import declare, declare_stream, fixed +from qm.qua import Cast, declare, declare_stream, fixed, wait from qm.qua._dsl import _ResultSource, _Variable # for type declaration only -from qualang_tools.addons.variables import assign_variables_to_element -from qualang_tools.units import unit from qibolab._core.execution_parameters import ( AcquisitionType, @@ -92,6 +90,25 @@ def fetch(self): """Fetch downloaded streams to host device.""" +def raw_to_volts(signal): + """Convert raw acquisition to volts.""" + return signal / 4096 + + +def assign_variables_to_element(element, *variables): + """Forces the given variables to be used by the given element thread. + + Useful as a workaround for when the compiler wrongly assigns + variables which can cause gaps. + + Taken from qualang_tools library. + """ + _exp = Cast.to_int(variables[0]) + for variable in variables[1:]: + _exp += Cast.to_int(variable) + wait(4 + 0 * _exp, element) + + @dataclass class RawAcquisition(Acquisition): """QUA variables used for raw waveform acquisition.""" @@ -119,8 +136,7 @@ def fetch(self, handles): ires = handles.get(f"{self.name}_I").fetch_all() qres = handles.get(f"{self.name}_Q").fetch_all() # convert raw ADC signal to volts - u = unit() - signal = _collect(u.raw2volts(ires), u.raw2volts(qres), self.npulses) + signal = _collect(raw_to_volts(ires), raw_to_volts(qres), self.npulses) return _split(signal, self.npulses) diff --git a/src/qibolab/_core/instruments/qm/program/instructions.py b/src/qibolab/_core/instruments/qm/program/instructions.py index 616cdf961..41f332bfb 100644 --- a/src/qibolab/_core/instruments/qm/program/instructions.py +++ b/src/qibolab/_core/instruments/qm/program/instructions.py @@ -1,8 +1,9 @@ from typing import Optional +import numpy as np +import numpy.typing as npt from qm import qua -from qm.qua import declare, fixed, for_ -from qualang_tools.loops import from_array +from qm.qua import Cast, Variable, declare, fixed, for_, for_each_ from qibolab._core.execution_parameters import AcquisitionType, ExecutionParameters from qibolab._core.identifier import ChannelId @@ -136,6 +137,115 @@ def _process_sweeper(sweeper: Sweeper, args: ExecutionArguments): return variable, values +def _qua_for_loop(variables: list[Variable], values: list[npt.NDArray]): + """Generate QUA ``for_`` loop command for the sweeps. + + Partly copied from ``qualang_tools.from_array``. + """ + if len(variables) > 1: + return for_each_(variables, values) + + var = variables[0] + array = values[0] + + if len(array) == 0: + raise ValueError("Sweeper values must have length > 0.") + if len(array) == 1: + return for_(var, array[0], var <= array[0], var + 1) + + if not isinstance(var, Variable): + raise TypeError("The first argument must be a QUA variable.") + if (not isinstance(array[0], (np.generic, int, float))) or ( + isinstance(array[0], bool) + ): + raise TypeError("The array must be an array of python variables.") + + start = array[0] + stop = array[-1] + if var.is_fixed(): + if not (-8 <= start < 8) or not (-8 <= stop < 8): + raise ValueError("fixed numbers are bounded to [-8, 8).") + elif not var.is_int(): + raise TypeError( + "This variable type is not supported. Please use a QUA 'int' or 'fixed' when sweeping." + ) + + # Linear increment + if np.isclose(np.std(np.diff(array)), 0) == "lin": + step = array[1] - array[0] + + if var.is_int(): + # Check that the array is an array of int with integer increments + if not all(float(x).is_integer() for x in (step, start, stop)): + raise TypeError( + "When looping over a QUA int variable, the step and array elements must be integers." + ) + + if step > 0: + return for_(var, int(start), var <= int(stop), var + int(step)) + else: + return for_(var, int(start), var >= int(stop), var + int(step)) + + elif var.is_fixed(): + # Generate the loop parameters for positive and negative steps + if step > 0: + return for_( + var, + float(start), + var < float(stop) + float(step) / 2, + var + float(step), + ) + else: + return for_( + var, + float(start), + var > float(stop) + float(step) / 2, + var + float(step), + ) + + # Logarithmic increment + if np.isclose(np.std(array[1:] / array[:-1]), 0, atol=1e-3): + step = array[1] / array[0] + + if var.is_int(): + if step > 1: + if int(round(start) * float(step)) == int(round(start)): + return for_each_(var, array) + else: + return for_( + var, + round(start), + var < round(stop) * np.sqrt(float(step)), + Cast.mul_int_by_fixed(var, float(step)), + ) + else: + return for_( + var, + round(start), + var > round(stop) / np.sqrt(float(step)), + Cast.mul_int_by_fixed(var, float(step)), + ) + + elif var.is_fixed(): + if step > 1: + return for_( + var, + float(start), + var < float(stop) * np.sqrt(float(step)), + var * float(step), + ) + else: + return for_( + var, + float(start), + var > float(stop) * np.sqrt(float(step)), + var * float(step), + ) + + # Non-(linear or logarithmic) increment requires ``for_each_`` + return for_each_(var, array) + + def sweep( sweepers: list[ParallelSweepers], args: ExecutionArguments, @@ -147,18 +257,13 @@ def sweep( if len(sweepers) > 0: parallel_sweepers = sweepers[0] - variables, all_values = zip( + variables, values = zip( *(_process_sweeper(sweeper, args) for sweeper in parallel_sweepers) ) - if len(parallel_sweepers) > 1: - loop = qua.for_each_(variables, all_values) - else: - loop = for_(*from_array(variables[0], all_values[0])) + loop = _qua_for_loop(variables, values) with loop: - for sweeper, variable, values in zip( - parallel_sweepers, variables, all_values - ): + for sweeper, variable in zip(parallel_sweepers, variables): method = SWEEPER_METHODS[sweeper.parameter] if sweeper.pulses is not None: for pulse in sweeper.pulses: