Metadata-Version: 2.4
Name: iqm-pulla
Version: 14.0.0
Summary: Client library for pulse-level access to an IQM quantum computer
Project-URL: Documentation, https://docs.iqm.tech/iqm-pulla/
Project-URL: Homepage, https://pypi.org/project/iqm-pulla/
Author-email: IQM Finland Oy <developers@iqm.tech>
License-Expression: Apache-2.0
License-File: LICENSE.txt
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: <3.15,>=3.11
Requires-Dist: ipython
Requires-Dist: iqm-client>=35.0.0,<36.0.0
Requires-Dist: iqm-data-definitions<3,>=2.22
Requires-Dist: iqm-exa-common>=28.0.0,<29.0.0
Requires-Dist: iqm-pulse>=14.0.0,<15.0.0
Requires-Dist: iqm-station-control-client>=13.0.0,<14.0.0
Requires-Dist: pylatexenc<3,>=2.10
Requires-Dist: scipy-stubs
Requires-Dist: scipy<2,>=1.13.0
Requires-Dist: xarray>=2024.10.0
Provides-Extra: notebook
Requires-Dist: matplotlib<4,>=3.9.2; extra == 'notebook'
Requires-Dist: nbclient~=0.5.10; extra == 'notebook'
Requires-Dist: notebook<8,>=7; extra == 'notebook'
Provides-Extra: qir
Requires-Dist: iqm-pyqir==0.12.0; extra == 'qir'
Requires-Dist: iqm-qiskit-qir==0.10.0; extra == 'qir'
Requires-Dist: qiskit<2.2,>=1.0; extra == 'qir'
Provides-Extra: qiskit
Requires-Dist: iqm-client[qiskit]>=35.0.0,<36.0.0; extra == 'qiskit'
Provides-Extra: notebook-pin-all
Provides-Extra: notebook-pin-iqm
Provides-Extra: pin-all
Provides-Extra: pin-iqm
Provides-Extra: qir-pin-all
Provides-Extra: qir-pin-iqm
Provides-Extra: qiskit-pin-all
Provides-Extra: qiskit-pin-iqm
Requires-Dist: annotated-types==0.7.0; extra == "notebook-pin-all"
Requires-Dist: anyio==4.12.1; extra == "notebook-pin-all"
Requires-Dist: appnope==0.1.4; (sys_platform == 'darwin') and extra == "notebook-pin-all"
Requires-Dist: argon2-cffi==25.1.0; extra == "notebook-pin-all"
Requires-Dist: argon2-cffi-bindings==25.1.0; extra == "notebook-pin-all"
Requires-Dist: arrow==1.4.0; extra == "notebook-pin-all"
Requires-Dist: asttokens==3.0.1; extra == "notebook-pin-all"
Requires-Dist: async-lru==2.1.0; extra == "notebook-pin-all"
Requires-Dist: attrs==22.2.0; extra == "notebook-pin-all"
Requires-Dist: babel==2.18.0; extra == "notebook-pin-all"
Requires-Dist: beautifulsoup4==4.14.3; extra == "notebook-pin-all"
Requires-Dist: bleach==6.3.0; extra == "notebook-pin-all"
Requires-Dist: certifi==2026.1.4; extra == "notebook-pin-all"
Requires-Dist: cffi==2.0.0; extra == "notebook-pin-all"
Requires-Dist: charset-normalizer==3.4.4; extra == "notebook-pin-all"
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == "notebook-pin-all"
Requires-Dist: comm==0.2.3; extra == "notebook-pin-all"
Requires-Dist: contourpy==1.3.3; extra == "notebook-pin-all"
Requires-Dist: cycler==0.12.1; extra == "notebook-pin-all"
Requires-Dist: debugpy==1.8.20; extra == "notebook-pin-all"
Requires-Dist: decorator==5.2.1; extra == "notebook-pin-all"
Requires-Dist: defusedxml==0.7.1; extra == "notebook-pin-all"
Requires-Dist: executing==2.2.1; extra == "notebook-pin-all"
Requires-Dist: fastjsonschema==2.21.2; extra == "notebook-pin-all"
Requires-Dist: fonttools==4.61.1; extra == "notebook-pin-all"
Requires-Dist: fqdn==1.5.1; extra == "notebook-pin-all"
Requires-Dist: googleapis-common-protos==1.72.0; extra == "notebook-pin-all"
Requires-Dist: grpcio==1.76.0; extra == "notebook-pin-all"
Requires-Dist: h11==0.16.0; extra == "notebook-pin-all"
Requires-Dist: httpcore==1.0.9; extra == "notebook-pin-all"
Requires-Dist: httpx==0.28.1; extra == "notebook-pin-all"
Requires-Dist: idna==3.11; extra == "notebook-pin-all"
Requires-Dist: importlib-metadata==7.1.0; extra == "notebook-pin-all"
Requires-Dist: ipykernel==7.1.0; extra == "notebook-pin-all"
Requires-Dist: ipython==8.21.0; extra == "notebook-pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "notebook-pin-all"
Requires-Dist: iqm-data-definitions==2.24; extra == "notebook-pin-all"
Requires-Dist: iqm-exa-common==28.0.0; extra == "notebook-pin-all"
Requires-Dist: iqm-pulse==14.0.0; extra == "notebook-pin-all"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "notebook-pin-all"
Requires-Dist: isoduration==20.11.0; extra == "notebook-pin-all"
Requires-Dist: jedi==0.18.2; extra == "notebook-pin-all"
Requires-Dist: jinja2==3.1.6; extra == "notebook-pin-all"
Requires-Dist: json5==0.13.0; extra == "notebook-pin-all"
Requires-Dist: jsonpointer==3.0.0; extra == "notebook-pin-all"
Requires-Dist: jsonschema==4.26.0; extra == "notebook-pin-all"
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "notebook-pin-all"
Requires-Dist: jupyter-client==8.8.0; extra == "notebook-pin-all"
Requires-Dist: jupyter-core==5.9.1; extra == "notebook-pin-all"
Requires-Dist: jupyter-events==0.12.0; extra == "notebook-pin-all"
Requires-Dist: jupyter-lsp==2.3.0; extra == "notebook-pin-all"
Requires-Dist: jupyter-server==2.17.0; extra == "notebook-pin-all"
Requires-Dist: jupyter-server-terminals==0.5.4; extra == "notebook-pin-all"
Requires-Dist: jupyterlab==4.5.3; extra == "notebook-pin-all"
Requires-Dist: jupyterlab-pygments==0.3.0; extra == "notebook-pin-all"
Requires-Dist: jupyterlab-server==2.28.0; extra == "notebook-pin-all"
Requires-Dist: kiwisolver==1.4.9; extra == "notebook-pin-all"
Requires-Dist: lark==1.3.1; extra == "notebook-pin-all"
Requires-Dist: markupsafe==3.0.3; extra == "notebook-pin-all"
Requires-Dist: matplotlib==3.10.8; extra == "notebook-pin-all"
Requires-Dist: matplotlib-inline==0.2.1; extra == "notebook-pin-all"
Requires-Dist: mistune==3.2.0; extra == "notebook-pin-all"
Requires-Dist: nbclient==0.5.13; extra == "notebook-pin-all"
Requires-Dist: nbconvert==7.17.0; extra == "notebook-pin-all"
Requires-Dist: nbformat==5.10.4; extra == "notebook-pin-all"
Requires-Dist: nest-asyncio==1.6.0; extra == "notebook-pin-all"
Requires-Dist: notebook==7.5.3; extra == "notebook-pin-all"
Requires-Dist: notebook-shim==0.2.4; extra == "notebook-pin-all"
Requires-Dist: numpy==2.3.5; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-api==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-exporter-otlp==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-proto==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-sdk==1.40.0; extra == "notebook-pin-all"
Requires-Dist: opentelemetry-semantic-conventions==0.61b0; extra == "notebook-pin-all"
Requires-Dist: optype==0.15.0; extra == "notebook-pin-all"
Requires-Dist: overrides==7.7.0; (python_full_version < '3.12') and extra == "notebook-pin-all"
Requires-Dist: packaging==24.2; extra == "notebook-pin-all"
Requires-Dist: pandas==2.3.3; extra == "notebook-pin-all"
Requires-Dist: pandocfilters==1.5.1; extra == "notebook-pin-all"
Requires-Dist: parso==0.8.5; extra == "notebook-pin-all"
Requires-Dist: pexpect==4.9.0; (sys_platform != 'win32') and extra == "notebook-pin-all"
Requires-Dist: pillow==12.1.0; extra == "notebook-pin-all"
Requires-Dist: platformdirs==4.5.1; extra == "notebook-pin-all"
Requires-Dist: prometheus-client==0.21.0; extra == "notebook-pin-all"
Requires-Dist: prompt-toolkit==3.0.52; extra == "notebook-pin-all"
Requires-Dist: protobuf==6.33.6; extra == "notebook-pin-all"
Requires-Dist: psutil==7.2.2; extra == "notebook-pin-all"
Requires-Dist: ptyprocess==0.7.0; ((sys_platform != 'win32') or (os_name != 'nt')) and extra == "notebook-pin-all"
Requires-Dist: pure-eval==0.2.3; extra == "notebook-pin-all"
Requires-Dist: pycparser==3.0; ((implementation_name == 'pypy') and (implementation_name != 'PyPy')) and extra == "notebook-pin-all"
Requires-Dist: pydantic==2.12.5; extra == "notebook-pin-all"
Requires-Dist: pydantic-core==2.41.5; extra == "notebook-pin-all"
Requires-Dist: pygments==2.19.2; extra == "notebook-pin-all"
Requires-Dist: pylatexenc==2.10; extra == "notebook-pin-all"
Requires-Dist: pyparsing==3.3.2; extra == "notebook-pin-all"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "notebook-pin-all"
Requires-Dist: python-dotenv==1.2.2; extra == "notebook-pin-all"
Requires-Dist: python-json-logger==2.0.4; extra == "notebook-pin-all"
Requires-Dist: python-rapidjson==1.20; extra == "notebook-pin-all"
Requires-Dist: pytz==2024.1; extra == "notebook-pin-all"
Requires-Dist: pywinpty==3.0.2; (os_name == 'nt') and extra == "notebook-pin-all"
Requires-Dist: pyyaml==6.0.2; extra == "notebook-pin-all"
Requires-Dist: pyzmq==27.1.0; extra == "notebook-pin-all"
Requires-Dist: referencing==0.37.0; extra == "notebook-pin-all"
Requires-Dist: requests==2.32.3; extra == "notebook-pin-all"
Requires-Dist: rfc3339-validator==0.1.4; extra == "notebook-pin-all"
Requires-Dist: rfc3986-validator==0.1.1; extra == "notebook-pin-all"
Requires-Dist: rfc3987-syntax==1.1.0; extra == "notebook-pin-all"
Requires-Dist: rpds-py==0.30.0; extra == "notebook-pin-all"
Requires-Dist: ruamel-yaml==0.17.32; extra == "notebook-pin-all"
Requires-Dist: ruamel-yaml-clib==0.2.11; (python_full_version < '3.12' and platform_python_implementation == 'CPython') and extra == "notebook-pin-all"
Requires-Dist: scipy==1.17.0; extra == "notebook-pin-all"
Requires-Dist: scipy-stubs==1.16.0.0; extra == "notebook-pin-all"
Requires-Dist: send2trash==2.1.0; extra == "notebook-pin-all"
Requires-Dist: setuptools==80.10.2; extra == "notebook-pin-all"
Requires-Dist: six==1.16.0; extra == "notebook-pin-all"
Requires-Dist: soupsieve==2.8.3; extra == "notebook-pin-all"
Requires-Dist: stack-data==0.6.3; extra == "notebook-pin-all"
Requires-Dist: terminado==0.18.1; extra == "notebook-pin-all"
Requires-Dist: tinycss2==1.4.0; extra == "notebook-pin-all"
Requires-Dist: tornado==6.5.4; extra == "notebook-pin-all"
Requires-Dist: tqdm==4.67.2; extra == "notebook-pin-all"
Requires-Dist: traitlets==5.9.0; extra == "notebook-pin-all"
Requires-Dist: types-protobuf==6.32.1.20251210; extra == "notebook-pin-all"
Requires-Dist: types-requests==2.32.4.20260107; extra == "notebook-pin-all"
Requires-Dist: types-six==1.17.0.20251009; extra == "notebook-pin-all"
Requires-Dist: types-tqdm==4.67.2.20260202; extra == "notebook-pin-all"
Requires-Dist: typing-extensions==4.15.0; extra == "notebook-pin-all"
Requires-Dist: typing-inspection==0.4.2; extra == "notebook-pin-all"
Requires-Dist: tzdata==2025.3; extra == "notebook-pin-all"
Requires-Dist: uri-template==1.3.0; extra == "notebook-pin-all"
Requires-Dist: urllib3==2.6.3; extra == "notebook-pin-all"
Requires-Dist: wcwidth==0.5.3; extra == "notebook-pin-all"
Requires-Dist: webcolors==25.10.0; extra == "notebook-pin-all"
Requires-Dist: webencodings==0.5.1; extra == "notebook-pin-all"
Requires-Dist: websocket-client==1.9.0; extra == "notebook-pin-all"
Requires-Dist: xarray==2024.10.0; extra == "notebook-pin-all"
Requires-Dist: zipp==3.23.0; extra == "notebook-pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "notebook-pin-iqm"
Requires-Dist: iqm-exa-common==28.0.0; extra == "notebook-pin-iqm"
Requires-Dist: iqm-pulse==14.0.0; extra == "notebook-pin-iqm"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "notebook-pin-iqm"
Requires-Dist: matplotlib<4,>=3.9.2; extra == "notebook-pin-iqm"
Requires-Dist: nbclient~=0.5.10; extra == "notebook-pin-iqm"
Requires-Dist: notebook<8,>=7; extra == "notebook-pin-iqm"
Requires-Dist: annotated-types==0.7.0; extra == "pin-all"
Requires-Dist: asttokens==3.0.1; extra == "pin-all"
Requires-Dist: certifi==2026.1.4; extra == "pin-all"
Requires-Dist: charset-normalizer==3.4.4; extra == "pin-all"
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == "pin-all"
Requires-Dist: decorator==5.2.1; extra == "pin-all"
Requires-Dist: executing==2.2.1; extra == "pin-all"
Requires-Dist: googleapis-common-protos==1.72.0; extra == "pin-all"
Requires-Dist: grpcio==1.76.0; extra == "pin-all"
Requires-Dist: idna==3.11; extra == "pin-all"
Requires-Dist: importlib-metadata==7.1.0; extra == "pin-all"
Requires-Dist: ipython==8.21.0; extra == "pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "pin-all"
Requires-Dist: iqm-data-definitions==2.24; extra == "pin-all"
Requires-Dist: iqm-exa-common==28.0.0; extra == "pin-all"
Requires-Dist: iqm-pulse==14.0.0; extra == "pin-all"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "pin-all"
Requires-Dist: jedi==0.18.2; extra == "pin-all"
Requires-Dist: jinja2==3.1.6; extra == "pin-all"
Requires-Dist: markupsafe==3.0.3; extra == "pin-all"
Requires-Dist: matplotlib-inline==0.2.1; extra == "pin-all"
Requires-Dist: numpy==2.3.5; extra == "pin-all"
Requires-Dist: opentelemetry-api==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-exporter-otlp==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-proto==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-sdk==1.40.0; extra == "pin-all"
Requires-Dist: opentelemetry-semantic-conventions==0.61b0; extra == "pin-all"
Requires-Dist: optype==0.15.0; extra == "pin-all"
Requires-Dist: packaging==24.2; extra == "pin-all"
Requires-Dist: pandas==2.3.3; extra == "pin-all"
Requires-Dist: parso==0.8.5; extra == "pin-all"
Requires-Dist: pexpect==4.9.0; (sys_platform != 'win32') and extra == "pin-all"
Requires-Dist: prompt-toolkit==3.0.52; extra == "pin-all"
Requires-Dist: protobuf==6.33.6; extra == "pin-all"
Requires-Dist: ptyprocess==0.7.0; (sys_platform != 'win32') and extra == "pin-all"
Requires-Dist: pure-eval==0.2.3; extra == "pin-all"
Requires-Dist: pydantic==2.12.5; extra == "pin-all"
Requires-Dist: pydantic-core==2.41.5; extra == "pin-all"
Requires-Dist: pygments==2.19.2; extra == "pin-all"
Requires-Dist: pylatexenc==2.10; extra == "pin-all"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "pin-all"
Requires-Dist: python-dotenv==1.2.2; extra == "pin-all"
Requires-Dist: python-rapidjson==1.20; extra == "pin-all"
Requires-Dist: pytz==2024.1; extra == "pin-all"
Requires-Dist: pyyaml==6.0.2; extra == "pin-all"
Requires-Dist: requests==2.32.3; extra == "pin-all"
Requires-Dist: ruamel-yaml==0.17.32; extra == "pin-all"
Requires-Dist: ruamel-yaml-clib==0.2.11; (python_full_version < '3.12' and platform_python_implementation == 'CPython') and extra == "pin-all"
Requires-Dist: scipy==1.17.0; extra == "pin-all"
Requires-Dist: scipy-stubs==1.16.0.0; extra == "pin-all"
Requires-Dist: six==1.16.0; extra == "pin-all"
Requires-Dist: stack-data==0.6.3; extra == "pin-all"
Requires-Dist: tqdm==4.67.2; extra == "pin-all"
Requires-Dist: traitlets==5.9.0; extra == "pin-all"
Requires-Dist: types-protobuf==6.32.1.20251210; extra == "pin-all"
Requires-Dist: types-requests==2.32.4.20260107; extra == "pin-all"
Requires-Dist: types-six==1.17.0.20251009; extra == "pin-all"
Requires-Dist: types-tqdm==4.67.2.20260202; extra == "pin-all"
Requires-Dist: typing-extensions==4.15.0; extra == "pin-all"
Requires-Dist: typing-inspection==0.4.2; extra == "pin-all"
Requires-Dist: tzdata==2025.3; extra == "pin-all"
Requires-Dist: urllib3==2.6.3; extra == "pin-all"
Requires-Dist: wcwidth==0.5.3; extra == "pin-all"
Requires-Dist: xarray==2024.10.0; extra == "pin-all"
Requires-Dist: zipp==3.23.0; extra == "pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "pin-iqm"
Requires-Dist: iqm-exa-common==28.0.0; extra == "pin-iqm"
Requires-Dist: iqm-pulse==14.0.0; extra == "pin-iqm"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "pin-iqm"
Requires-Dist: annotated-types==0.7.0; extra == "qir-pin-all"
Requires-Dist: asttokens==3.0.1; extra == "qir-pin-all"
Requires-Dist: certifi==2026.1.4; extra == "qir-pin-all"
Requires-Dist: charset-normalizer==3.4.4; extra == "qir-pin-all"
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == "qir-pin-all"
Requires-Dist: decorator==5.2.1; extra == "qir-pin-all"
Requires-Dist: dill==0.4.1; extra == "qir-pin-all"
Requires-Dist: executing==2.2.1; extra == "qir-pin-all"
Requires-Dist: googleapis-common-protos==1.72.0; extra == "qir-pin-all"
Requires-Dist: grpcio==1.76.0; extra == "qir-pin-all"
Requires-Dist: idna==3.11; extra == "qir-pin-all"
Requires-Dist: importlib-metadata==7.1.0; extra == "qir-pin-all"
Requires-Dist: ipython==8.21.0; extra == "qir-pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "qir-pin-all"
Requires-Dist: iqm-data-definitions==2.24; extra == "qir-pin-all"
Requires-Dist: iqm-exa-common==28.0.0; extra == "qir-pin-all"
Requires-Dist: iqm-pulse==14.0.0; extra == "qir-pin-all"
Requires-Dist: iqm-pyqir==0.12.0; extra == "qir-pin-all"
Requires-Dist: iqm-qiskit-qir==0.10.0; extra == "qir-pin-all"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "qir-pin-all"
Requires-Dist: jedi==0.18.2; extra == "qir-pin-all"
Requires-Dist: jinja2==3.1.6; extra == "qir-pin-all"
Requires-Dist: markupsafe==3.0.3; extra == "qir-pin-all"
Requires-Dist: matplotlib-inline==0.2.1; extra == "qir-pin-all"
Requires-Dist: numpy==2.3.5; extra == "qir-pin-all"
Requires-Dist: opentelemetry-api==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-exporter-otlp==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-proto==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-sdk==1.40.0; extra == "qir-pin-all"
Requires-Dist: opentelemetry-semantic-conventions==0.61b0; extra == "qir-pin-all"
Requires-Dist: optype==0.15.0; extra == "qir-pin-all"
Requires-Dist: packaging==24.2; extra == "qir-pin-all"
Requires-Dist: pandas==2.3.3; extra == "qir-pin-all"
Requires-Dist: parso==0.8.5; extra == "qir-pin-all"
Requires-Dist: pexpect==4.9.0; (sys_platform != 'win32') and extra == "qir-pin-all"
Requires-Dist: prompt-toolkit==3.0.52; extra == "qir-pin-all"
Requires-Dist: protobuf==6.33.6; extra == "qir-pin-all"
Requires-Dist: ptyprocess==0.7.0; (sys_platform != 'win32') and extra == "qir-pin-all"
Requires-Dist: pure-eval==0.2.3; extra == "qir-pin-all"
Requires-Dist: pydantic==2.12.5; extra == "qir-pin-all"
Requires-Dist: pydantic-core==2.41.5; extra == "qir-pin-all"
Requires-Dist: pygments==2.19.2; extra == "qir-pin-all"
Requires-Dist: pylatexenc==2.10; extra == "qir-pin-all"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "qir-pin-all"
Requires-Dist: python-dotenv==1.2.2; extra == "qir-pin-all"
Requires-Dist: python-rapidjson==1.20; extra == "qir-pin-all"
Requires-Dist: pytz==2024.1; extra == "qir-pin-all"
Requires-Dist: pyyaml==6.0.2; extra == "qir-pin-all"
Requires-Dist: qiskit==2.1.2; extra == "qir-pin-all"
Requires-Dist: requests==2.32.3; extra == "qir-pin-all"
Requires-Dist: ruamel-yaml==0.17.32; extra == "qir-pin-all"
Requires-Dist: ruamel-yaml-clib==0.2.11; (python_full_version < '3.12' and platform_python_implementation == 'CPython') and extra == "qir-pin-all"
Requires-Dist: rustworkx==0.17.1; extra == "qir-pin-all"
Requires-Dist: scipy==1.17.0; extra == "qir-pin-all"
Requires-Dist: scipy-stubs==1.16.0.0; extra == "qir-pin-all"
Requires-Dist: six==1.16.0; extra == "qir-pin-all"
Requires-Dist: stack-data==0.6.3; extra == "qir-pin-all"
Requires-Dist: stevedore==5.6.0; extra == "qir-pin-all"
Requires-Dist: tqdm==4.67.2; extra == "qir-pin-all"
Requires-Dist: traitlets==5.9.0; extra == "qir-pin-all"
Requires-Dist: types-protobuf==6.32.1.20251210; extra == "qir-pin-all"
Requires-Dist: types-requests==2.32.4.20260107; extra == "qir-pin-all"
Requires-Dist: types-six==1.17.0.20251009; extra == "qir-pin-all"
Requires-Dist: types-tqdm==4.67.2.20260202; extra == "qir-pin-all"
Requires-Dist: typing-extensions==4.15.0; extra == "qir-pin-all"
Requires-Dist: typing-inspection==0.4.2; extra == "qir-pin-all"
Requires-Dist: tzdata==2025.3; extra == "qir-pin-all"
Requires-Dist: urllib3==2.6.3; extra == "qir-pin-all"
Requires-Dist: wcwidth==0.5.3; extra == "qir-pin-all"
Requires-Dist: xarray==2024.10.0; extra == "qir-pin-all"
Requires-Dist: zipp==3.23.0; extra == "qir-pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "qir-pin-iqm"
Requires-Dist: iqm-exa-common==28.0.0; extra == "qir-pin-iqm"
Requires-Dist: iqm-pulse==14.0.0; extra == "qir-pin-iqm"
Requires-Dist: iqm-pyqir==0.12.0; extra == "qir-pin-iqm"
Requires-Dist: iqm-qiskit-qir==0.10.0; extra == "qir-pin-iqm"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "qir-pin-iqm"
Requires-Dist: qiskit<2.2,>=1.0; extra == "qir-pin-iqm"
Requires-Dist: annotated-types==0.7.0; extra == "qiskit-pin-all"
Requires-Dist: asttokens==3.0.1; extra == "qiskit-pin-all"
Requires-Dist: certifi==2026.1.4; extra == "qiskit-pin-all"
Requires-Dist: charset-normalizer==3.4.4; extra == "qiskit-pin-all"
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == "qiskit-pin-all"
Requires-Dist: decorator==5.2.1; extra == "qiskit-pin-all"
Requires-Dist: dill==0.4.1; extra == "qiskit-pin-all"
Requires-Dist: executing==2.2.1; extra == "qiskit-pin-all"
Requires-Dist: googleapis-common-protos==1.72.0; extra == "qiskit-pin-all"
Requires-Dist: grpcio==1.76.0; extra == "qiskit-pin-all"
Requires-Dist: idna==3.11; extra == "qiskit-pin-all"
Requires-Dist: importlib-metadata==7.1.0; extra == "qiskit-pin-all"
Requires-Dist: ipython==8.21.0; extra == "qiskit-pin-all"
Requires-Dist: iqm-client==35.0.0; extra == "qiskit-pin-all"
Requires-Dist: iqm-data-definitions==2.24; extra == "qiskit-pin-all"
Requires-Dist: iqm-exa-common==28.0.0; extra == "qiskit-pin-all"
Requires-Dist: iqm-pulse==14.0.0; extra == "qiskit-pin-all"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "qiskit-pin-all"
Requires-Dist: jedi==0.18.2; extra == "qiskit-pin-all"
Requires-Dist: jinja2==3.1.6; extra == "qiskit-pin-all"
Requires-Dist: markupsafe==3.0.3; extra == "qiskit-pin-all"
Requires-Dist: matplotlib-inline==0.2.1; extra == "qiskit-pin-all"
Requires-Dist: numpy==2.3.5; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-api==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-exporter-otlp==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-proto==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-sdk==1.40.0; extra == "qiskit-pin-all"
Requires-Dist: opentelemetry-semantic-conventions==0.61b0; extra == "qiskit-pin-all"
Requires-Dist: optype==0.15.0; extra == "qiskit-pin-all"
Requires-Dist: packaging==24.2; extra == "qiskit-pin-all"
Requires-Dist: pandas==2.3.3; extra == "qiskit-pin-all"
Requires-Dist: parso==0.8.5; extra == "qiskit-pin-all"
Requires-Dist: pexpect==4.9.0; (sys_platform != 'win32') and extra == "qiskit-pin-all"
Requires-Dist: prompt-toolkit==3.0.52; extra == "qiskit-pin-all"
Requires-Dist: protobuf==6.33.6; extra == "qiskit-pin-all"
Requires-Dist: psutil==7.2.2; extra == "qiskit-pin-all"
Requires-Dist: ptyprocess==0.7.0; (sys_platform != 'win32') and extra == "qiskit-pin-all"
Requires-Dist: pure-eval==0.2.3; extra == "qiskit-pin-all"
Requires-Dist: pydantic==2.12.5; extra == "qiskit-pin-all"
Requires-Dist: pydantic-core==2.41.5; extra == "qiskit-pin-all"
Requires-Dist: pygments==2.19.2; extra == "qiskit-pin-all"
Requires-Dist: pylatexenc==2.10; extra == "qiskit-pin-all"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "qiskit-pin-all"
Requires-Dist: python-dotenv==1.2.2; extra == "qiskit-pin-all"
Requires-Dist: python-rapidjson==1.20; extra == "qiskit-pin-all"
Requires-Dist: pytz==2024.1; extra == "qiskit-pin-all"
Requires-Dist: pyyaml==6.0.2; extra == "qiskit-pin-all"
Requires-Dist: qiskit==2.1.2; extra == "qiskit-pin-all"
Requires-Dist: qiskit-aer==0.17.2; extra == "qiskit-pin-all"
Requires-Dist: requests==2.32.3; extra == "qiskit-pin-all"
Requires-Dist: ruamel-yaml==0.17.32; extra == "qiskit-pin-all"
Requires-Dist: ruamel-yaml-clib==0.2.11; (python_full_version < '3.12' and platform_python_implementation == 'CPython') and extra == "qiskit-pin-all"
Requires-Dist: rustworkx==0.17.1; extra == "qiskit-pin-all"
Requires-Dist: scipy==1.17.0; extra == "qiskit-pin-all"
Requires-Dist: scipy-stubs==1.16.0.0; extra == "qiskit-pin-all"
Requires-Dist: six==1.16.0; extra == "qiskit-pin-all"
Requires-Dist: stack-data==0.6.3; extra == "qiskit-pin-all"
Requires-Dist: stevedore==5.6.0; extra == "qiskit-pin-all"
Requires-Dist: tqdm==4.67.2; extra == "qiskit-pin-all"
Requires-Dist: traitlets==5.9.0; extra == "qiskit-pin-all"
Requires-Dist: types-protobuf==6.32.1.20251210; extra == "qiskit-pin-all"
Requires-Dist: types-requests==2.32.4.20260107; extra == "qiskit-pin-all"
Requires-Dist: types-six==1.17.0.20251009; extra == "qiskit-pin-all"
Requires-Dist: types-tqdm==4.67.2.20260202; extra == "qiskit-pin-all"
Requires-Dist: typing-extensions==4.15.0; extra == "qiskit-pin-all"
Requires-Dist: typing-inspection==0.4.2; extra == "qiskit-pin-all"
Requires-Dist: tzdata==2025.3; extra == "qiskit-pin-all"
Requires-Dist: urllib3==2.6.3; extra == "qiskit-pin-all"
Requires-Dist: wcwidth==0.5.3; extra == "qiskit-pin-all"
Requires-Dist: xarray==2024.10.0; extra == "qiskit-pin-all"
Requires-Dist: zipp==3.23.0; extra == "qiskit-pin-all"
Requires-Dist: iqm-client[qiskit]==35.0.0; extra == "qiskit-pin-iqm"
Requires-Dist: iqm-exa-common==28.0.0; extra == "qiskit-pin-iqm"
Requires-Dist: iqm-pulse==14.0.0; extra == "qiskit-pin-iqm"
Requires-Dist: iqm-station-control-client==13.0.0; extra == "qiskit-pin-iqm"
Description-Content-Type: text/markdown

# IQM Pulla

Pulla (pulse-level access) is a client-side Python library which enables
the generation and execution of pulse-level jobs on an [IQM](https://iqm.tech/)
quantum computer.
Within the existing IQM QCCSW stack, Pulla is somewhere between
circuit-level execution and EXA experiments.

An interactive user guide is available as a Jupyter notebook in the `docs`
folder.

## Testing

If you want to run a particular notebook and see the output cells printed in
the terminal, you can use `nbconvert` with [`jq`](https://jqlang.github.io/jq/download/)
like so:

<!-- markdownlint-disable MD013 -->
```bash
jupyter nbconvert --to notebook --execute  "docs/Quick Start.ipynb" --stdout |
  jq -r '.cells[] | select(.outputs) | .outputs[] | select(.output_type == "stream") | .text[]'
```
<!-- markdownlint-enable MD013 -->

## Installation

> **Note:** [uv](https://docs.astral.sh/uv/) is highly recommended
> for practical Python environment and package management.
> The supported Python versions are
> >=3.11, <3.15.

```bash
uv pip install iqm-pulla
```

### Optional extras

The following optional extras are available:

- `notebook`: Jupyter notebook support for running example notebooks
- `qir`: QIR (Quantum Intermediate Representation) support
- `qiskit`: Qiskit-related features and utilities

All extras are inter-compatible and each adds more dependencies
on top of the base install. To install all of them:

```bash
uv pip install "iqm-pulla[notebook,qir,qiskit]"
```

### Reproducible installations

For reproducible installations, pinned dependency extras
are available:

- `pin-iqm`: pins inter-IQM package dependencies to exact
  co-released versions.
- `pin-all`: like `pin-iqm`, but additionally pins all
  transitive third-party dependencies.

These can be combined with other extras. The following
combined extras are available:

- `notebook-pin-iqm`
- `qir-pin-iqm`
- `qiskit-pin-iqm`
- `notebook-pin-all`
- `qir-pin-all`
- `qiskit-pin-all`

For example:

```bash
uv pip install "iqm-pulla[notebook-pin-all]"
```

All extras are inter-compatible, so you can combine multiple
extras with pinning as needed.

> **Note:** This package was tested at release time for clean
> installation with `uv 0.11.20` and `pip 25.1.1`.
> Other versions are likely to work but are not verified
> per release.
