From af79c4ee3b53ce5ebcecb8bba88d949bc8aca8b5 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:39:00 -0700 Subject: [PATCH 01/11] Add copyright headers to generated code and Getting Help to README Add a post-generation hook that prepends the Apache-2.0 copyright header to all generated .py files that don't already have one. Hand-written files are skipped since they already carry the header. Add a Getting Help section to the README directing users to GitHub Issues for bugs, IonQ Support for account questions, and docs.ionq.com for API documentation. Closes #18, closes #19. --- README.md | 6 ++++++ openapi-python-client-config.yaml | 1 + 2 files changed, 7 insertions(+) diff --git a/README.md b/README.md index 6b7fd9c..514430e 100644 --- a/README.md +++ b/README.md @@ -402,6 +402,12 @@ git tag v0.1.0 git push origin v0.1.0 ``` +## Getting help + +- **Bug reports and feature requests** - [GitHub Issues](https://github.com/ionq/ionq-core-python/issues) +- **Account, billing, or QPU questions** - [IonQ Support](https://ionq.com/contact) +- **API documentation** - [docs.ionq.com](https://docs.ionq.com/) + ## License Apache-2.0. See [LICENSE](LICENSE) for details. diff --git a/openapi-python-client-config.yaml b/openapi-python-client-config.yaml index f2c8973..2bb4de4 100644 --- a/openapi-python-client-config.yaml +++ b/openapi-python-client-config.yaml @@ -4,6 +4,7 @@ literal_enums: true post_hooks: - "python -Ic \"p=__import__('pathlib').Path('client.py');p.write_text(p.read_text().replace(' token: str\\n',' token: str = field(repr=False)\\n'))\"" + - "python -Ic \"h='# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n';[p.write_text(h+p.read_text()) for p in __import__('pathlib').Path('.').rglob('*.py') if not p.read_text().startswith('# Copyright')]\"" - "ruff check . --fix-only" - "ruff format ." From 6471292b98ba87f76aac48223f5fad07b59a0a8f Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:41:54 -0700 Subject: [PATCH 02/11] Use walrus operator to read each file once in copyright hook --- openapi-python-client-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi-python-client-config.yaml b/openapi-python-client-config.yaml index 2bb4de4..5eb9974 100644 --- a/openapi-python-client-config.yaml +++ b/openapi-python-client-config.yaml @@ -4,7 +4,7 @@ literal_enums: true post_hooks: - "python -Ic \"p=__import__('pathlib').Path('client.py');p.write_text(p.read_text().replace(' token: str\\n',' token: str = field(repr=False)\\n'))\"" - - "python -Ic \"h='# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n';[p.write_text(h+p.read_text()) for p in __import__('pathlib').Path('.').rglob('*.py') if not p.read_text().startswith('# Copyright')]\"" + - "python -Ic \"h='# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n';[p.write_text(h+t) for p in __import__('pathlib').Path('.').rglob('*.py') if not (t:=p.read_text()).startswith('# Copyright')]\"" - "ruff check . --fix-only" - "ruff format ." From ddb7865a484d498124a135d1e23f891178b9ef96 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:51:31 -0700 Subject: [PATCH 03/11] Remove unnecessary guard from copyright hook Generated files are always fresh - no need to check for existing headers. --- openapi-python-client-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi-python-client-config.yaml b/openapi-python-client-config.yaml index 5eb9974..349c997 100644 --- a/openapi-python-client-config.yaml +++ b/openapi-python-client-config.yaml @@ -4,7 +4,7 @@ literal_enums: true post_hooks: - "python -Ic \"p=__import__('pathlib').Path('client.py');p.write_text(p.read_text().replace(' token: str\\n',' token: str = field(repr=False)\\n'))\"" - - "python -Ic \"h='# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n';[p.write_text(h+t) for p in __import__('pathlib').Path('.').rglob('*.py') if not (t:=p.read_text()).startswith('# Copyright')]\"" + - "python -Ic \"h='# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n';[p.write_text(h+p.read_text()) for p in __import__('pathlib').Path('.').rglob('*.py')]\"" - "ruff check . --fix-only" - "ruff format ." From 426c556a1896527a9a24cb5103668a032e7e6e6d Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:58:33 -0700 Subject: [PATCH 04/11] Remove copyright header from template; post-hook handles it --- custom-templates/package_init.py.jinja | 3 --- 1 file changed, 3 deletions(-) diff --git a/custom-templates/package_init.py.jinja b/custom-templates/package_init.py.jinja index 59d3878..c602cf0 100644 --- a/custom-templates/package_init.py.jinja +++ b/custom-templates/package_init.py.jinja @@ -1,7 +1,4 @@ {% from "helpers.jinja" import safe_docstring %} -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - {{ safe_docstring(package_description) }} from ._exceptions import ( APIConnectionError, From d5b3328d032ec3e8ded1eb34921639964506b38d Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:22:44 -0700 Subject: [PATCH 05/11] Simplify post hooks from Python one-liners to perl regexes Replace verbose Python __import__/pathlib one-liners with concise perl -pi -e commands for both the token repr and copyright header post hooks. Both are shorter, use the same tool, and are cross-platform (macOS + Linux). --- openapi-python-client-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openapi-python-client-config.yaml b/openapi-python-client-config.yaml index 349c997..cc90cbd 100644 --- a/openapi-python-client-config.yaml +++ b/openapi-python-client-config.yaml @@ -3,8 +3,8 @@ package_name_override: ionq_core literal_enums: true post_hooks: - - "python -Ic \"p=__import__('pathlib').Path('client.py');p.write_text(p.read_text().replace(' token: str\\n',' token: str = field(repr=False)\\n'))\"" - - "python -Ic \"h='# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n';[p.write_text(h+p.read_text()) for p in __import__('pathlib').Path('.').rglob('*.py')]\"" + - "perl -pi -e 's/token: str\\K$/ = field(repr=False)/' client.py" + - "perl -pi -e 'print \"# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n\" if !$s{$ARGV}++' $(find . -name '*.py')" - "ruff check . --fix-only" - "ruff format ." From 6ad1752ba857bfe4a5ed563a552fe21cdeab7c97 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:26:26 -0700 Subject: [PATCH 06/11] Remove hand-written copyright headers; post-hook is sole source The staleness CI check failed because the post-generation hook was prepending copyright headers to files that already had them, producing duplicates. Removing the hand-written headers lets the hook handle all files uniformly. --- ionq_core/__init__.py | 3 --- ionq_core/_exceptions.py | 3 --- ionq_core/_extensions.py | 3 --- ionq_core/_gates.py | 3 --- ionq_core/_pagination.py | 3 --- ionq_core/_polling.py | 3 --- ionq_core/_session.py | 3 --- ionq_core/_transport.py | 3 --- ionq_core/ionq_client.py | 3 --- 9 files changed, 27 deletions(-) diff --git a/ionq_core/__init__.py b/ionq_core/__init__.py index fbee532..2e57748 100644 --- a/ionq_core/__init__.py +++ b/ionq_core/__init__.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """A client library for accessing IonQ Cloud Platform API""" from ._exceptions import ( diff --git a/ionq_core/_exceptions.py b/ionq_core/_exceptions.py index 686deb4..3a534e0 100644 --- a/ionq_core/_exceptions.py +++ b/ionq_core/_exceptions.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Structured exceptions for the IonQ API client.""" diff --git a/ionq_core/_extensions.py b/ionq_core/_extensions.py index 3844206..80f4c4f 100644 --- a/ionq_core/_extensions.py +++ b/ionq_core/_extensions.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Extension API for downstream SDKs building on ionq-core.""" import logging diff --git a/ionq_core/_gates.py b/ionq_core/_gates.py index d9b1798..20f842c 100644 --- a/ionq_core/_gates.py +++ b/ionq_core/_gates.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Pure-Python unitary matrices for IonQ native gates. Phase parameters (phi, phi0, phi1) are in turns (fractions of 2*pi). diff --git a/ionq_core/_pagination.py b/ionq_core/_pagination.py index 4c28aec..256a456 100644 --- a/ionq_core/_pagination.py +++ b/ionq_core/_pagination.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Pagination helpers for cursor-based IonQ API endpoints.""" from __future__ import annotations diff --git a/ionq_core/_polling.py b/ionq_core/_polling.py index 33c86d7..9847b7a 100644 --- a/ionq_core/_polling.py +++ b/ionq_core/_polling.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Job polling helpers for waiting on quantum job completion.""" from __future__ import annotations diff --git a/ionq_core/_session.py b/ionq_core/_session.py index df6d7d7..57e1d87 100644 --- a/ionq_core/_session.py +++ b/ionq_core/_session.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Session lifecycle manager for IonQ QPU sessions.""" from __future__ import annotations diff --git a/ionq_core/_transport.py b/ionq_core/_transport.py index a678ae7..10433ff 100644 --- a/ionq_core/_transport.py +++ b/ionq_core/_transport.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """Transport layer: retry via httpx-retries, error raising for IonQ API responses.""" import httpx diff --git a/ionq_core/ionq_client.py b/ionq_core/ionq_client.py index b34198e..829b38d 100644 --- a/ionq_core/ionq_client.py +++ b/ionq_core/ionq_client.py @@ -1,6 +1,3 @@ -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - """IonQ-specific client convenience wrapper.""" import os From 86b2c502ac9478726d835d66c88cef3b9008ff32 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:30:02 -0700 Subject: [PATCH 07/11] Regenerate with copyright headers from post-hook Run the generator so the post-hook adds copyright headers to all .py files, matching what the staleness CI check produces. --- ionq_core/__init__.py | 3 +++ ionq_core/_exceptions.py | 3 +++ ionq_core/_extensions.py | 3 +++ ionq_core/_gates.py | 3 +++ ionq_core/_pagination.py | 3 +++ ionq_core/_polling.py | 3 +++ ionq_core/_session.py | 3 +++ ionq_core/_transport.py | 3 +++ ionq_core/api/__init__.py | 3 +++ ionq_core/api/backends/__init__.py | 3 +++ ionq_core/api/backends/get_backend.py | 3 +++ ionq_core/api/backends/get_backends.py | 3 +++ ionq_core/api/characterizations/__init__.py | 3 +++ ionq_core/api/characterizations/get_characterization.py | 3 +++ .../api/characterizations/get_characterizations_for_backend.py | 3 +++ ionq_core/api/default/__init__.py | 3 +++ ionq_core/api/default/cancel_job.py | 3 +++ ionq_core/api/default/cancel_jobs.py | 3 +++ ionq_core/api/default/create_job.py | 3 +++ ionq_core/api/default/create_session.py | 3 +++ ionq_core/api/default/delete_job.py | 3 +++ ionq_core/api/default/delete_jobs.py | 3 +++ ionq_core/api/default/end_session.py | 3 +++ ionq_core/api/default/estimate_job_cost.py | 3 +++ ionq_core/api/default/get_compiled_file.py | 3 +++ ionq_core/api/default/get_job.py | 3 +++ ionq_core/api/default/get_job_cost.py | 3 +++ ionq_core/api/default/get_job_probabilities.py | 3 +++ ionq_core/api/default/get_jobs.py | 3 +++ ionq_core/api/default/get_session.py | 3 +++ ionq_core/api/default/get_session_jobs.py | 3 +++ ionq_core/api/default/get_sessions.py | 3 +++ ionq_core/api/default/get_variant_histogram.py | 3 +++ ionq_core/api/default/get_variant_probabilities.py | 3 +++ ionq_core/api/default/get_variant_shots.py | 3 +++ ionq_core/api/usage/__init__.py | 3 +++ ionq_core/api/usage/get_usages.py | 3 +++ ionq_core/api/whoami/__init__.py | 3 +++ ionq_core/api/whoami/get_whoami.py | 3 +++ ionq_core/client.py | 3 +++ ionq_core/errors.py | 3 +++ ionq_core/ionq_client.py | 3 +++ ionq_core/models/__init__.py | 3 +++ ionq_core/models/add_job_results_payload.py | 3 +++ ionq_core/models/add_job_results_response.py | 3 +++ ionq_core/models/ansatz.py | 3 +++ ionq_core/models/backend.py | 3 +++ ionq_core/models/bad_request_error.py | 3 +++ ionq_core/models/base_job.py | 3 +++ ionq_core/models/characterization.py | 3 +++ ionq_core/models/characterization_fidelity.py | 3 +++ ionq_core/models/characterization_fidelity_spam.py | 3 +++ ionq_core/models/characterization_timing.py | 3 +++ ionq_core/models/circuit_job_compilation_settings.py | 3 +++ ionq_core/models/circuit_job_creation_payload.py | 3 +++ ionq_core/models/circuit_job_creation_payload_settings.py | 3 +++ .../circuit_job_creation_payload_settings_compilation.py | 3 +++ .../circuit_job_creation_payload_settings_error_mitigation.py | 3 +++ ionq_core/models/circuit_job_creation_payload_type.py | 3 +++ ionq_core/models/circuit_job_result.py | 3 +++ ionq_core/models/circuit_job_result_histogram.py | 3 +++ ionq_core/models/circuit_job_result_probabilities.py | 3 +++ ionq_core/models/circuit_job_result_shots.py | 3 +++ ionq_core/models/circuit_job_settings.py | 3 +++ ionq_core/models/circuit_job_settings_error_mitigation.py | 3 +++ .../circuit_job_settings_error_mitigation_debiasing_type_0.py | 3 +++ ...tings_error_mitigation_debiasing_type_0_phi_chi_twirling.py | 3 +++ ionq_core/models/circuit_job_stats.py | 3 +++ ionq_core/models/create_session_request.py | 3 +++ ionq_core/models/error.py | 3 +++ ionq_core/models/failure.py | 3 +++ ionq_core/models/failure_code.py | 3 +++ ionq_core/models/gate_native_gate.py | 3 +++ ionq_core/models/gate_qis_gate.py | 3 +++ ionq_core/models/generic_quantum_function_input.py | 3 +++ ionq_core/models/generic_quantum_function_input_data.py | 3 +++ ionq_core/models/get_backend_backend.py | 3 +++ ionq_core/models/get_characterization_backend.py | 3 +++ ionq_core/models/get_characterizations_for_backend_backend.py | 3 +++ .../models/get_characterizations_for_backend_response_200.py | 3 +++ ionq_core/models/get_circuit_job_response.py | 3 +++ ionq_core/models/get_compiled_file_lang.py | 3 +++ ionq_core/models/get_job_cost_response.py | 3 +++ ionq_core/models/get_job_cost_response_cost.py | 3 +++ ionq_core/models/get_job_cost_response_estimated_cost.py | 3 +++ ionq_core/models/get_job_estimate_query_params.py | 3 +++ ionq_core/models/get_job_estimate_response.py | 3 +++ ionq_core/models/get_job_estimate_response_rate_information.py | 3 +++ ionq_core/models/get_job_response.py | 3 +++ ionq_core/models/get_jobs_query_params.py | 3 +++ ionq_core/models/get_jobs_response.py | 3 +++ ionq_core/models/get_results_response.py | 3 +++ ionq_core/models/get_sessions_query_params.py | 3 +++ ionq_core/models/get_variant_results_response.py | 3 +++ ionq_core/models/group_by.py | 3 +++ ionq_core/models/group_usage.py | 3 +++ ionq_core/models/hamiltonian_energy_data.py | 3 +++ ionq_core/models/hamiltonian_energy_input.py | 3 +++ ionq_core/models/hamiltonian_energy_input_data.py | 3 +++ ionq_core/models/hamiltonian_energy_input_data_type.py | 3 +++ ionq_core/models/hamiltonian_pauli_term.py | 3 +++ ionq_core/models/job_canceled_response.py | 3 +++ ionq_core/models/job_canceled_response_status.py | 3 +++ ionq_core/models/job_creation_response.py | 3 +++ ionq_core/models/job_deleted_response.py | 3 +++ ionq_core/models/job_deleted_response_status.py | 3 +++ ionq_core/models/job_metadata.py | 3 +++ ionq_core/models/job_q_ctrl_status.py | 3 +++ ionq_core/models/job_status.py | 3 +++ ionq_core/models/jobs_bulk_operation_request.py | 3 +++ ionq_core/models/jobs_canceled_response.py | 3 +++ ionq_core/models/jobs_canceled_response_status.py | 3 +++ ionq_core/models/jobs_deleted_response.py | 3 +++ ionq_core/models/jobs_deleted_response_status.py | 3 +++ ionq_core/models/json_multi_circuit_input.py | 3 +++ ionq_core/models/json_multi_circuit_input_gateset.py | 3 +++ ionq_core/models/json_multi_circuit_job.py | 3 +++ ionq_core/models/json_multi_circuit_job_settings.py | 3 +++ .../models/json_multi_circuit_job_settings_compilation.py | 3 +++ .../models/json_multi_circuit_job_settings_error_mitigation.py | 3 +++ ionq_core/models/json_multi_circuit_job_type.py | 3 +++ ionq_core/models/json_object.py | 3 +++ ionq_core/models/linear_constraint.py | 3 +++ ionq_core/models/modality.py | 3 +++ ionq_core/models/native_circuit.py | 3 +++ ionq_core/models/native_circuit_gateset.py | 3 +++ ionq_core/models/native_circuit_input.py | 3 +++ ionq_core/models/native_circuit_input_gateset.py | 3 +++ ionq_core/models/native_gate.py | 3 +++ ionq_core/models/noise.py | 3 +++ ionq_core/models/noise_model.py | 3 +++ ionq_core/models/number_map.py | 3 +++ ionq_core/models/qis_circuit.py | 3 +++ ionq_core/models/qis_circuit_gateset.py | 3 +++ ionq_core/models/qis_circuit_input.py | 3 +++ ionq_core/models/qis_circuit_input_gateset.py | 3 +++ ionq_core/models/qis_gate.py | 3 +++ ionq_core/models/quadratic_constraint.py | 3 +++ ionq_core/models/quantum_function_job_creation_payload.py | 3 +++ .../models/quantum_function_job_creation_payload_settings.py | 3 +++ ..._function_job_creation_payload_settings_error_mitigation.py | 3 +++ ionq_core/models/quantum_function_job_creation_payload_type.py | 3 +++ ionq_core/models/registers.py | 3 +++ ionq_core/models/request_validation.py | 3 +++ ionq_core/models/session.py | 3 +++ ionq_core/models/session_cost_limit.py | 3 +++ ionq_core/models/session_settings.py | 3 +++ ionq_core/models/session_settings_request.py | 3 +++ ionq_core/models/session_status_enum.py | 3 +++ ionq_core/models/sessions_response.py | 3 +++ ionq_core/models/usage.py | 3 +++ ionq_core/models/usages.py | 3 +++ ionq_core/models/whoami.py | 3 +++ ionq_core/types.py | 3 +++ 154 files changed, 462 insertions(+) diff --git a/ionq_core/__init__.py b/ionq_core/__init__.py index 2e57748..fbee532 100644 --- a/ionq_core/__init__.py +++ b/ionq_core/__init__.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """A client library for accessing IonQ Cloud Platform API""" from ._exceptions import ( diff --git a/ionq_core/_exceptions.py b/ionq_core/_exceptions.py index 3a534e0..686deb4 100644 --- a/ionq_core/_exceptions.py +++ b/ionq_core/_exceptions.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Structured exceptions for the IonQ API client.""" diff --git a/ionq_core/_extensions.py b/ionq_core/_extensions.py index 80f4c4f..3844206 100644 --- a/ionq_core/_extensions.py +++ b/ionq_core/_extensions.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Extension API for downstream SDKs building on ionq-core.""" import logging diff --git a/ionq_core/_gates.py b/ionq_core/_gates.py index 20f842c..d9b1798 100644 --- a/ionq_core/_gates.py +++ b/ionq_core/_gates.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Pure-Python unitary matrices for IonQ native gates. Phase parameters (phi, phi0, phi1) are in turns (fractions of 2*pi). diff --git a/ionq_core/_pagination.py b/ionq_core/_pagination.py index 256a456..4c28aec 100644 --- a/ionq_core/_pagination.py +++ b/ionq_core/_pagination.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Pagination helpers for cursor-based IonQ API endpoints.""" from __future__ import annotations diff --git a/ionq_core/_polling.py b/ionq_core/_polling.py index 9847b7a..33c86d7 100644 --- a/ionq_core/_polling.py +++ b/ionq_core/_polling.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Job polling helpers for waiting on quantum job completion.""" from __future__ import annotations diff --git a/ionq_core/_session.py b/ionq_core/_session.py index 57e1d87..df6d7d7 100644 --- a/ionq_core/_session.py +++ b/ionq_core/_session.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Session lifecycle manager for IonQ QPU sessions.""" from __future__ import annotations diff --git a/ionq_core/_transport.py b/ionq_core/_transport.py index 10433ff..a678ae7 100644 --- a/ionq_core/_transport.py +++ b/ionq_core/_transport.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """Transport layer: retry via httpx-retries, error raising for IonQ API responses.""" import httpx diff --git a/ionq_core/api/__init__.py b/ionq_core/api/__init__.py index dc035f4..ecdc005 100644 --- a/ionq_core/api/__init__.py +++ b/ionq_core/api/__init__.py @@ -1 +1,4 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains methods for accessing the API """ diff --git a/ionq_core/api/backends/__init__.py b/ionq_core/api/backends/__init__.py index c9921b5..a8af097 100644 --- a/ionq_core/api/backends/__init__.py +++ b/ionq_core/api/backends/__init__.py @@ -1 +1,4 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains endpoint functions for accessing the API """ diff --git a/ionq_core/api/backends/get_backend.py b/ionq_core/api/backends/get_backend.py index 4724203..fba04f3 100644 --- a/ionq_core/api/backends/get_backend.py +++ b/ionq_core/api/backends/get_backend.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/backends/get_backends.py b/ionq_core/api/backends/get_backends.py index 998deab..1b5c45d 100644 --- a/ionq_core/api/backends/get_backends.py +++ b/ionq_core/api/backends/get_backends.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/characterizations/__init__.py b/ionq_core/api/characterizations/__init__.py index c9921b5..a8af097 100644 --- a/ionq_core/api/characterizations/__init__.py +++ b/ionq_core/api/characterizations/__init__.py @@ -1 +1,4 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains endpoint functions for accessing the API """ diff --git a/ionq_core/api/characterizations/get_characterization.py b/ionq_core/api/characterizations/get_characterization.py index 4ab9cca..58f0038 100644 --- a/ionq_core/api/characterizations/get_characterization.py +++ b/ionq_core/api/characterizations/get_characterization.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/characterizations/get_characterizations_for_backend.py b/ionq_core/api/characterizations/get_characterizations_for_backend.py index df6d356..6295c90 100644 --- a/ionq_core/api/characterizations/get_characterizations_for_backend.py +++ b/ionq_core/api/characterizations/get_characterizations_for_backend.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/__init__.py b/ionq_core/api/default/__init__.py index c9921b5..a8af097 100644 --- a/ionq_core/api/default/__init__.py +++ b/ionq_core/api/default/__init__.py @@ -1 +1,4 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains endpoint functions for accessing the API """ diff --git a/ionq_core/api/default/cancel_job.py b/ionq_core/api/default/cancel_job.py index 0ca3e58..545ec9a 100644 --- a/ionq_core/api/default/cancel_job.py +++ b/ionq_core/api/default/cancel_job.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/cancel_jobs.py b/ionq_core/api/default/cancel_jobs.py index 3fc7b24..0a8ea2a 100644 --- a/ionq_core/api/default/cancel_jobs.py +++ b/ionq_core/api/default/cancel_jobs.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/create_job.py b/ionq_core/api/default/create_job.py index 2efe84b..9f3a5a6 100644 --- a/ionq_core/api/default/create_job.py +++ b/ionq_core/api/default/create_job.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/create_session.py b/ionq_core/api/default/create_session.py index 2b99611..680e5cb 100644 --- a/ionq_core/api/default/create_session.py +++ b/ionq_core/api/default/create_session.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/delete_job.py b/ionq_core/api/default/delete_job.py index 0d5f0be..25c6698 100644 --- a/ionq_core/api/default/delete_job.py +++ b/ionq_core/api/default/delete_job.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/delete_jobs.py b/ionq_core/api/default/delete_jobs.py index a49e356..36db6bf 100644 --- a/ionq_core/api/default/delete_jobs.py +++ b/ionq_core/api/default/delete_jobs.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/end_session.py b/ionq_core/api/default/end_session.py index c81c4cb..21d9802 100644 --- a/ionq_core/api/default/end_session.py +++ b/ionq_core/api/default/end_session.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/estimate_job_cost.py b/ionq_core/api/default/estimate_job_cost.py index f144ea4..fb8d300 100644 --- a/ionq_core/api/default/estimate_job_cost.py +++ b/ionq_core/api/default/estimate_job_cost.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_compiled_file.py b/ionq_core/api/default/get_compiled_file.py index fcc740c..d95ba13 100644 --- a/ionq_core/api/default/get_compiled_file.py +++ b/ionq_core/api/default/get_compiled_file.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_job.py b/ionq_core/api/default/get_job.py index 47e2869..efc8f52 100644 --- a/ionq_core/api/default/get_job.py +++ b/ionq_core/api/default/get_job.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_job_cost.py b/ionq_core/api/default/get_job_cost.py index 6f2675b..e8b74e6 100644 --- a/ionq_core/api/default/get_job_cost.py +++ b/ionq_core/api/default/get_job_cost.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_job_probabilities.py b/ionq_core/api/default/get_job_probabilities.py index eeaeadc..d2f6143 100644 --- a/ionq_core/api/default/get_job_probabilities.py +++ b/ionq_core/api/default/get_job_probabilities.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_jobs.py b/ionq_core/api/default/get_jobs.py index f511d06..0ff90db 100644 --- a/ionq_core/api/default/get_jobs.py +++ b/ionq_core/api/default/get_jobs.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_session.py b/ionq_core/api/default/get_session.py index 3ec0e6f..e83f4f1 100644 --- a/ionq_core/api/default/get_session.py +++ b/ionq_core/api/default/get_session.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_session_jobs.py b/ionq_core/api/default/get_session_jobs.py index c81e0c2..03ab64e 100644 --- a/ionq_core/api/default/get_session_jobs.py +++ b/ionq_core/api/default/get_session_jobs.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_sessions.py b/ionq_core/api/default/get_sessions.py index ef5534f..eeeca76 100644 --- a/ionq_core/api/default/get_sessions.py +++ b/ionq_core/api/default/get_sessions.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_variant_histogram.py b/ionq_core/api/default/get_variant_histogram.py index ed84900..e48ad55 100644 --- a/ionq_core/api/default/get_variant_histogram.py +++ b/ionq_core/api/default/get_variant_histogram.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_variant_probabilities.py b/ionq_core/api/default/get_variant_probabilities.py index cb3681f..3a1d9ae 100644 --- a/ionq_core/api/default/get_variant_probabilities.py +++ b/ionq_core/api/default/get_variant_probabilities.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/default/get_variant_shots.py b/ionq_core/api/default/get_variant_shots.py index 339ea1c..f96961c 100644 --- a/ionq_core/api/default/get_variant_shots.py +++ b/ionq_core/api/default/get_variant_shots.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/usage/__init__.py b/ionq_core/api/usage/__init__.py index c9921b5..a8af097 100644 --- a/ionq_core/api/usage/__init__.py +++ b/ionq_core/api/usage/__init__.py @@ -1 +1,4 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains endpoint functions for accessing the API """ diff --git a/ionq_core/api/usage/get_usages.py b/ionq_core/api/usage/get_usages.py index c344a44..110a1e5 100644 --- a/ionq_core/api/usage/get_usages.py +++ b/ionq_core/api/usage/get_usages.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/api/whoami/__init__.py b/ionq_core/api/whoami/__init__.py index c9921b5..a8af097 100644 --- a/ionq_core/api/whoami/__init__.py +++ b/ionq_core/api/whoami/__init__.py @@ -1 +1,4 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains endpoint functions for accessing the API """ diff --git a/ionq_core/api/whoami/get_whoami.py b/ionq_core/api/whoami/get_whoami.py index f71e4ed..9d67057 100644 --- a/ionq_core/api/whoami/get_whoami.py +++ b/ionq_core/api/whoami/get_whoami.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from http import HTTPStatus from typing import Any, cast from urllib.parse import quote diff --git a/ionq_core/client.py b/ionq_core/client.py index b1f783b..8953532 100644 --- a/ionq_core/client.py +++ b/ionq_core/client.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + import ssl from typing import Any diff --git a/ionq_core/errors.py b/ionq_core/errors.py index b912123..9e42266 100644 --- a/ionq_core/errors.py +++ b/ionq_core/errors.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains shared errors types that can be raised from API functions """ class UnexpectedStatus(Exception): diff --git a/ionq_core/ionq_client.py b/ionq_core/ionq_client.py index 829b38d..b34198e 100644 --- a/ionq_core/ionq_client.py +++ b/ionq_core/ionq_client.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """IonQ-specific client convenience wrapper.""" import os diff --git a/ionq_core/models/__init__.py b/ionq_core/models/__init__.py index b42d329..5dafaea 100644 --- a/ionq_core/models/__init__.py +++ b/ionq_core/models/__init__.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains all the data models used in inputs/outputs """ from .add_job_results_payload import AddJobResultsPayload diff --git a/ionq_core/models/add_job_results_payload.py b/ionq_core/models/add_job_results_payload.py index 11fbb20..3b22b9f 100644 --- a/ionq_core/models/add_job_results_payload.py +++ b/ionq_core/models/add_job_results_payload.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/add_job_results_response.py b/ionq_core/models/add_job_results_response.py index 6625d37..02253dc 100644 --- a/ionq_core/models/add_job_results_response.py +++ b/ionq_core/models/add_job_results_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/ansatz.py b/ionq_core/models/ansatz.py index b855ea8..c155252 100644 --- a/ionq_core/models/ansatz.py +++ b/ionq_core/models/ansatz.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/backend.py b/ionq_core/models/backend.py index 5149b6f..ec4f24b 100644 --- a/ionq_core/models/backend.py +++ b/ionq_core/models/backend.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/bad_request_error.py b/ionq_core/models/bad_request_error.py index 332588d..0e11278 100644 --- a/ionq_core/models/bad_request_error.py +++ b/ionq_core/models/bad_request_error.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/base_job.py b/ionq_core/models/base_job.py index a83aae7..4d5ecd4 100644 --- a/ionq_core/models/base_job.py +++ b/ionq_core/models/base_job.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/characterization.py b/ionq_core/models/characterization.py index 3985de7..aef19b9 100644 --- a/ionq_core/models/characterization.py +++ b/ionq_core/models/characterization.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/characterization_fidelity.py b/ionq_core/models/characterization_fidelity.py index 8d39333..691858b 100644 --- a/ionq_core/models/characterization_fidelity.py +++ b/ionq_core/models/characterization_fidelity.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/characterization_fidelity_spam.py b/ionq_core/models/characterization_fidelity_spam.py index 7df6d97..c6ab354 100644 --- a/ionq_core/models/characterization_fidelity_spam.py +++ b/ionq_core/models/characterization_fidelity_spam.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/characterization_timing.py b/ionq_core/models/characterization_timing.py index 33372c8..8c10125 100644 --- a/ionq_core/models/characterization_timing.py +++ b/ionq_core/models/characterization_timing.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_compilation_settings.py b/ionq_core/models/circuit_job_compilation_settings.py index fea1198..6774c98 100644 --- a/ionq_core/models/circuit_job_compilation_settings.py +++ b/ionq_core/models/circuit_job_compilation_settings.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_creation_payload.py b/ionq_core/models/circuit_job_creation_payload.py index 89ae243..482247c 100644 --- a/ionq_core/models/circuit_job_creation_payload.py +++ b/ionq_core/models/circuit_job_creation_payload.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_creation_payload_settings.py b/ionq_core/models/circuit_job_creation_payload_settings.py index f953986..2d8c22d 100644 --- a/ionq_core/models/circuit_job_creation_payload_settings.py +++ b/ionq_core/models/circuit_job_creation_payload_settings.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_creation_payload_settings_compilation.py b/ionq_core/models/circuit_job_creation_payload_settings_compilation.py index f6bbca9..31a7d83 100644 --- a/ionq_core/models/circuit_job_creation_payload_settings_compilation.py +++ b/ionq_core/models/circuit_job_creation_payload_settings_compilation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_creation_payload_settings_error_mitigation.py b/ionq_core/models/circuit_job_creation_payload_settings_error_mitigation.py index a38d591..f83b2a1 100644 --- a/ionq_core/models/circuit_job_creation_payload_settings_error_mitigation.py +++ b/ionq_core/models/circuit_job_creation_payload_settings_error_mitigation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_creation_payload_type.py b/ionq_core/models/circuit_job_creation_payload_type.py index e507d48..cbb03e5 100644 --- a/ionq_core/models/circuit_job_creation_payload_type.py +++ b/ionq_core/models/circuit_job_creation_payload_type.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast CircuitJobCreationPayloadType = Literal['ionq.circuit.v1'] diff --git a/ionq_core/models/circuit_job_result.py b/ionq_core/models/circuit_job_result.py index 317a470..f6161be 100644 --- a/ionq_core/models/circuit_job_result.py +++ b/ionq_core/models/circuit_job_result.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_result_histogram.py b/ionq_core/models/circuit_job_result_histogram.py index 28bed18..f555bfe 100644 --- a/ionq_core/models/circuit_job_result_histogram.py +++ b/ionq_core/models/circuit_job_result_histogram.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_result_probabilities.py b/ionq_core/models/circuit_job_result_probabilities.py index 78a17c1..7b2f5cd 100644 --- a/ionq_core/models/circuit_job_result_probabilities.py +++ b/ionq_core/models/circuit_job_result_probabilities.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_result_shots.py b/ionq_core/models/circuit_job_result_shots.py index ad939c9..aad1ecb 100644 --- a/ionq_core/models/circuit_job_result_shots.py +++ b/ionq_core/models/circuit_job_result_shots.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_settings.py b/ionq_core/models/circuit_job_settings.py index 090357a..47645d5 100644 --- a/ionq_core/models/circuit_job_settings.py +++ b/ionq_core/models/circuit_job_settings.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_settings_error_mitigation.py b/ionq_core/models/circuit_job_settings_error_mitigation.py index 704bdb6..5bc529e 100644 --- a/ionq_core/models/circuit_job_settings_error_mitigation.py +++ b/ionq_core/models/circuit_job_settings_error_mitigation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0.py b/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0.py index 17f18a6..025249c 100644 --- a/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0.py +++ b/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0_phi_chi_twirling.py b/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0_phi_chi_twirling.py index fb298b9..334c4b3 100644 --- a/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0_phi_chi_twirling.py +++ b/ionq_core/models/circuit_job_settings_error_mitigation_debiasing_type_0_phi_chi_twirling.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/circuit_job_stats.py b/ionq_core/models/circuit_job_stats.py index 5b475bd..cf1dd81 100644 --- a/ionq_core/models/circuit_job_stats.py +++ b/ionq_core/models/circuit_job_stats.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/create_session_request.py b/ionq_core/models/create_session_request.py index 1f094d9..2e77c88 100644 --- a/ionq_core/models/create_session_request.py +++ b/ionq_core/models/create_session_request.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/error.py b/ionq_core/models/error.py index 5a04b15..e80c603 100644 --- a/ionq_core/models/error.py +++ b/ionq_core/models/error.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/failure.py b/ionq_core/models/failure.py index f24d7f9..7544c7f 100644 --- a/ionq_core/models/failure.py +++ b/ionq_core/models/failure.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/failure_code.py b/ionq_core/models/failure_code.py index 961fe56..49019be 100644 --- a/ionq_core/models/failure_code.py +++ b/ionq_core/models/failure_code.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast FailureCode = Literal['CompilationError', 'ContractExpiredError', 'DebiasingError', 'InternalError', 'InvalidInput', 'NotEnoughQubits', 'OptimizationError', 'PreflightError', 'QuantumCircuitComplexityError', 'QuantumComputerError', 'QuotaExhaustedError', 'SimulationError', 'SimulationTimeout', 'SystemCancel', 'TooLongPredictedExecutionTime', 'TooManyControls', 'TooManyGates', 'TooManyShots', 'UnknownBillingError', 'UnsupportedGate'] diff --git a/ionq_core/models/gate_native_gate.py b/ionq_core/models/gate_native_gate.py index 4714aa7..5e17143 100644 --- a/ionq_core/models/gate_native_gate.py +++ b/ionq_core/models/gate_native_gate.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/gate_qis_gate.py b/ionq_core/models/gate_qis_gate.py index 1a07921..67f9f62 100644 --- a/ionq_core/models/gate_qis_gate.py +++ b/ionq_core/models/gate_qis_gate.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/generic_quantum_function_input.py b/ionq_core/models/generic_quantum_function_input.py index 36525fa..e084e6c 100644 --- a/ionq_core/models/generic_quantum_function_input.py +++ b/ionq_core/models/generic_quantum_function_input.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/generic_quantum_function_input_data.py b/ionq_core/models/generic_quantum_function_input_data.py index 96a915c..d2eccc0 100644 --- a/ionq_core/models/generic_quantum_function_input_data.py +++ b/ionq_core/models/generic_quantum_function_input_data.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_backend_backend.py b/ionq_core/models/get_backend_backend.py index 6855f01..b6cf10d 100644 --- a/ionq_core/models/get_backend_backend.py +++ b/ionq_core/models/get_backend_backend.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast GetBackendBackend = Literal['qpu.aria-1', 'qpu.aria-2', 'qpu.forte-1', 'qpu.forte-enterprise-1', 'qpu.forte-enterprise-2', 'qpu.forte-enterprise-3'] diff --git a/ionq_core/models/get_characterization_backend.py b/ionq_core/models/get_characterization_backend.py index 3a27cea..f2ada3d 100644 --- a/ionq_core/models/get_characterization_backend.py +++ b/ionq_core/models/get_characterization_backend.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast GetCharacterizationBackend = Literal['qpu.aria-1', 'qpu.aria-2', 'qpu.forte-1', 'qpu.forte-enterprise-1', 'qpu.forte-enterprise-2', 'qpu.forte-enterprise-3'] diff --git a/ionq_core/models/get_characterizations_for_backend_backend.py b/ionq_core/models/get_characterizations_for_backend_backend.py index 682b135..12b24f9 100644 --- a/ionq_core/models/get_characterizations_for_backend_backend.py +++ b/ionq_core/models/get_characterizations_for_backend_backend.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast GetCharacterizationsForBackendBackend = Literal['qpu.aria-1', 'qpu.aria-2', 'qpu.forte-1', 'qpu.forte-enterprise-1', 'qpu.forte-enterprise-2', 'qpu.forte-enterprise-3'] diff --git a/ionq_core/models/get_characterizations_for_backend_response_200.py b/ionq_core/models/get_characterizations_for_backend_response_200.py index 70a7f90..b8591fb 100644 --- a/ionq_core/models/get_characterizations_for_backend_response_200.py +++ b/ionq_core/models/get_characterizations_for_backend_response_200.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_circuit_job_response.py b/ionq_core/models/get_circuit_job_response.py index 6c9cb1c..6a44a88 100644 --- a/ionq_core/models/get_circuit_job_response.py +++ b/ionq_core/models/get_circuit_job_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_compiled_file_lang.py b/ionq_core/models/get_compiled_file_lang.py index 2d4ebfe..7aef42f 100644 --- a/ionq_core/models/get_compiled_file_lang.py +++ b/ionq_core/models/get_compiled_file_lang.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast GetCompiledFileLang = Literal['native', 'qasm3'] diff --git a/ionq_core/models/get_job_cost_response.py b/ionq_core/models/get_job_cost_response.py index 91208b9..b07776f 100644 --- a/ionq_core/models/get_job_cost_response.py +++ b/ionq_core/models/get_job_cost_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_job_cost_response_cost.py b/ionq_core/models/get_job_cost_response_cost.py index f22c32a..c47a0d1 100644 --- a/ionq_core/models/get_job_cost_response_cost.py +++ b/ionq_core/models/get_job_cost_response_cost.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_job_cost_response_estimated_cost.py b/ionq_core/models/get_job_cost_response_estimated_cost.py index 6c9a936..d7fc71a 100644 --- a/ionq_core/models/get_job_cost_response_estimated_cost.py +++ b/ionq_core/models/get_job_cost_response_estimated_cost.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_job_estimate_query_params.py b/ionq_core/models/get_job_estimate_query_params.py index 17b96c8..76fe491 100644 --- a/ionq_core/models/get_job_estimate_query_params.py +++ b/ionq_core/models/get_job_estimate_query_params.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_job_estimate_response.py b/ionq_core/models/get_job_estimate_response.py index 0dc4fa8..4b14906 100644 --- a/ionq_core/models/get_job_estimate_response.py +++ b/ionq_core/models/get_job_estimate_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_job_estimate_response_rate_information.py b/ionq_core/models/get_job_estimate_response_rate_information.py index 8f2c938..3dd2382 100644 --- a/ionq_core/models/get_job_estimate_response_rate_information.py +++ b/ionq_core/models/get_job_estimate_response_rate_information.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_job_response.py b/ionq_core/models/get_job_response.py index d37132d..ef9d6fc 100644 --- a/ionq_core/models/get_job_response.py +++ b/ionq_core/models/get_job_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_jobs_query_params.py b/ionq_core/models/get_jobs_query_params.py index 7aa2260..1c300d5 100644 --- a/ionq_core/models/get_jobs_query_params.py +++ b/ionq_core/models/get_jobs_query_params.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_jobs_response.py b/ionq_core/models/get_jobs_response.py index e4c3014..80cafce 100644 --- a/ionq_core/models/get_jobs_response.py +++ b/ionq_core/models/get_jobs_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_results_response.py b/ionq_core/models/get_results_response.py index 05f3f0c..589c444 100644 --- a/ionq_core/models/get_results_response.py +++ b/ionq_core/models/get_results_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_sessions_query_params.py b/ionq_core/models/get_sessions_query_params.py index c0ebb43..d641545 100644 --- a/ionq_core/models/get_sessions_query_params.py +++ b/ionq_core/models/get_sessions_query_params.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/get_variant_results_response.py b/ionq_core/models/get_variant_results_response.py index 4409286..949fae7 100644 --- a/ionq_core/models/get_variant_results_response.py +++ b/ionq_core/models/get_variant_results_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/group_by.py b/ionq_core/models/group_by.py index 6e6053b..d621d46 100644 --- a/ionq_core/models/group_by.py +++ b/ionq_core/models/group_by.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast GroupBy = Literal['job', 'project', 'user'] diff --git a/ionq_core/models/group_usage.py b/ionq_core/models/group_usage.py index 1cbee24..a13c9ee 100644 --- a/ionq_core/models/group_usage.py +++ b/ionq_core/models/group_usage.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/hamiltonian_energy_data.py b/ionq_core/models/hamiltonian_energy_data.py index fffe715..f81d5a8 100644 --- a/ionq_core/models/hamiltonian_energy_data.py +++ b/ionq_core/models/hamiltonian_energy_data.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/hamiltonian_energy_input.py b/ionq_core/models/hamiltonian_energy_input.py index b8b80cd..2d287f1 100644 --- a/ionq_core/models/hamiltonian_energy_input.py +++ b/ionq_core/models/hamiltonian_energy_input.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/hamiltonian_energy_input_data.py b/ionq_core/models/hamiltonian_energy_input_data.py index d4bd812..e5bbc52 100644 --- a/ionq_core/models/hamiltonian_energy_input_data.py +++ b/ionq_core/models/hamiltonian_energy_input_data.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/hamiltonian_energy_input_data_type.py b/ionq_core/models/hamiltonian_energy_input_data_type.py index 3e3ac14..4d3f671 100644 --- a/ionq_core/models/hamiltonian_energy_input_data_type.py +++ b/ionq_core/models/hamiltonian_energy_input_data_type.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast HamiltonianEnergyInputDataType = Literal['hamiltonian-energy'] diff --git a/ionq_core/models/hamiltonian_pauli_term.py b/ionq_core/models/hamiltonian_pauli_term.py index e8d11f0..f1d64a0 100644 --- a/ionq_core/models/hamiltonian_pauli_term.py +++ b/ionq_core/models/hamiltonian_pauli_term.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/job_canceled_response.py b/ionq_core/models/job_canceled_response.py index 88a5c9c..44f40fc 100644 --- a/ionq_core/models/job_canceled_response.py +++ b/ionq_core/models/job_canceled_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/job_canceled_response_status.py b/ionq_core/models/job_canceled_response_status.py index 4516efd..b3783b6 100644 --- a/ionq_core/models/job_canceled_response_status.py +++ b/ionq_core/models/job_canceled_response_status.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JobCanceledResponseStatus = Literal['canceled'] diff --git a/ionq_core/models/job_creation_response.py b/ionq_core/models/job_creation_response.py index 9e73f9f..af9a218 100644 --- a/ionq_core/models/job_creation_response.py +++ b/ionq_core/models/job_creation_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/job_deleted_response.py b/ionq_core/models/job_deleted_response.py index 9e8453b..867c547 100644 --- a/ionq_core/models/job_deleted_response.py +++ b/ionq_core/models/job_deleted_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/job_deleted_response_status.py b/ionq_core/models/job_deleted_response_status.py index 37e47d0..2bbef20 100644 --- a/ionq_core/models/job_deleted_response_status.py +++ b/ionq_core/models/job_deleted_response_status.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JobDeletedResponseStatus = Literal['deleted'] diff --git a/ionq_core/models/job_metadata.py b/ionq_core/models/job_metadata.py index b66651b..db7bd8c 100644 --- a/ionq_core/models/job_metadata.py +++ b/ionq_core/models/job_metadata.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/job_q_ctrl_status.py b/ionq_core/models/job_q_ctrl_status.py index fa0fc73..83c5748 100644 --- a/ionq_core/models/job_q_ctrl_status.py +++ b/ionq_core/models/job_q_ctrl_status.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JobQCtrlStatus = Literal['complete', 'max_iteration', 'running'] diff --git a/ionq_core/models/job_status.py b/ionq_core/models/job_status.py index def021e..60b89b6 100644 --- a/ionq_core/models/job_status.py +++ b/ionq_core/models/job_status.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JobStatus = Literal['canceled', 'completed', 'failed', 'ready', 'started', 'submitted'] diff --git a/ionq_core/models/jobs_bulk_operation_request.py b/ionq_core/models/jobs_bulk_operation_request.py index 8ebb3ff..5c2fab6 100644 --- a/ionq_core/models/jobs_bulk_operation_request.py +++ b/ionq_core/models/jobs_bulk_operation_request.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/jobs_canceled_response.py b/ionq_core/models/jobs_canceled_response.py index 0849261..ec3f428 100644 --- a/ionq_core/models/jobs_canceled_response.py +++ b/ionq_core/models/jobs_canceled_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/jobs_canceled_response_status.py b/ionq_core/models/jobs_canceled_response_status.py index 795573f..4bbccbe 100644 --- a/ionq_core/models/jobs_canceled_response_status.py +++ b/ionq_core/models/jobs_canceled_response_status.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JobsCanceledResponseStatus = Literal['canceled'] diff --git a/ionq_core/models/jobs_deleted_response.py b/ionq_core/models/jobs_deleted_response.py index 45e0ef2..7c0bfdc 100644 --- a/ionq_core/models/jobs_deleted_response.py +++ b/ionq_core/models/jobs_deleted_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/jobs_deleted_response_status.py b/ionq_core/models/jobs_deleted_response_status.py index 55d328b..6bdf9e8 100644 --- a/ionq_core/models/jobs_deleted_response_status.py +++ b/ionq_core/models/jobs_deleted_response_status.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JobsDeletedResponseStatus = Literal['deleted'] diff --git a/ionq_core/models/json_multi_circuit_input.py b/ionq_core/models/json_multi_circuit_input.py index 81433fa..7f8bbda 100644 --- a/ionq_core/models/json_multi_circuit_input.py +++ b/ionq_core/models/json_multi_circuit_input.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/json_multi_circuit_input_gateset.py b/ionq_core/models/json_multi_circuit_input_gateset.py index c351b5a..ff7b878 100644 --- a/ionq_core/models/json_multi_circuit_input_gateset.py +++ b/ionq_core/models/json_multi_circuit_input_gateset.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JsonMultiCircuitInputGateset = Literal['native', 'qis'] diff --git a/ionq_core/models/json_multi_circuit_job.py b/ionq_core/models/json_multi_circuit_job.py index 9f34451..7ad4f47 100644 --- a/ionq_core/models/json_multi_circuit_job.py +++ b/ionq_core/models/json_multi_circuit_job.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/json_multi_circuit_job_settings.py b/ionq_core/models/json_multi_circuit_job_settings.py index 5a35f6e..c3c3479 100644 --- a/ionq_core/models/json_multi_circuit_job_settings.py +++ b/ionq_core/models/json_multi_circuit_job_settings.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/json_multi_circuit_job_settings_compilation.py b/ionq_core/models/json_multi_circuit_job_settings_compilation.py index db79c8b..ca7c784 100644 --- a/ionq_core/models/json_multi_circuit_job_settings_compilation.py +++ b/ionq_core/models/json_multi_circuit_job_settings_compilation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/json_multi_circuit_job_settings_error_mitigation.py b/ionq_core/models/json_multi_circuit_job_settings_error_mitigation.py index 37a2a16..426c0c2 100644 --- a/ionq_core/models/json_multi_circuit_job_settings_error_mitigation.py +++ b/ionq_core/models/json_multi_circuit_job_settings_error_mitigation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/json_multi_circuit_job_type.py b/ionq_core/models/json_multi_circuit_job_type.py index be34d08..7ab2d5b 100644 --- a/ionq_core/models/json_multi_circuit_job_type.py +++ b/ionq_core/models/json_multi_circuit_job_type.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast JSONMultiCircuitJobType = Literal['ionq.multi-circuit.v1'] diff --git a/ionq_core/models/json_object.py b/ionq_core/models/json_object.py index b0df3c9..ffd0e1e 100644 --- a/ionq_core/models/json_object.py +++ b/ionq_core/models/json_object.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/linear_constraint.py b/ionq_core/models/linear_constraint.py index 22999f2..7c998cf 100644 --- a/ionq_core/models/linear_constraint.py +++ b/ionq_core/models/linear_constraint.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/modality.py b/ionq_core/models/modality.py index b2afbff..2cc1322 100644 --- a/ionq_core/models/modality.py +++ b/ionq_core/models/modality.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast Modality = Literal['daily', 'monthly', 'weekly'] diff --git a/ionq_core/models/native_circuit.py b/ionq_core/models/native_circuit.py index 7d783ca..03322d6 100644 --- a/ionq_core/models/native_circuit.py +++ b/ionq_core/models/native_circuit.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/native_circuit_gateset.py b/ionq_core/models/native_circuit_gateset.py index 1880125..9f2cb41 100644 --- a/ionq_core/models/native_circuit_gateset.py +++ b/ionq_core/models/native_circuit_gateset.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast NativeCircuitGateset = Literal['native'] diff --git a/ionq_core/models/native_circuit_input.py b/ionq_core/models/native_circuit_input.py index 23dcb60..cbdf126 100644 --- a/ionq_core/models/native_circuit_input.py +++ b/ionq_core/models/native_circuit_input.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/native_circuit_input_gateset.py b/ionq_core/models/native_circuit_input_gateset.py index d520123..b20afa1 100644 --- a/ionq_core/models/native_circuit_input_gateset.py +++ b/ionq_core/models/native_circuit_input_gateset.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast NativeCircuitInputGateset = Literal['native'] diff --git a/ionq_core/models/native_gate.py b/ionq_core/models/native_gate.py index 06e71d1..10d10fa 100644 --- a/ionq_core/models/native_gate.py +++ b/ionq_core/models/native_gate.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast NativeGate = Literal['gpi', 'gpi2', 'ms', 'nop', 'zz'] diff --git a/ionq_core/models/noise.py b/ionq_core/models/noise.py index a2518ae..2a22158 100644 --- a/ionq_core/models/noise.py +++ b/ionq_core/models/noise.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/noise_model.py b/ionq_core/models/noise_model.py index fa45414..8c87085 100644 --- a/ionq_core/models/noise_model.py +++ b/ionq_core/models/noise_model.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast NoiseModel = Literal['aria-1', 'aria-2', 'forte-1', 'forte-enterprise-1', 'harmony', 'harmony-1', 'harmony-2', 'ideal'] diff --git a/ionq_core/models/number_map.py b/ionq_core/models/number_map.py index 3e61282..8d35d6e 100644 --- a/ionq_core/models/number_map.py +++ b/ionq_core/models/number_map.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/qis_circuit.py b/ionq_core/models/qis_circuit.py index 4967e55..803abaa 100644 --- a/ionq_core/models/qis_circuit.py +++ b/ionq_core/models/qis_circuit.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/qis_circuit_gateset.py b/ionq_core/models/qis_circuit_gateset.py index da22171..95b02ff 100644 --- a/ionq_core/models/qis_circuit_gateset.py +++ b/ionq_core/models/qis_circuit_gateset.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast QISCircuitGateset = Literal['qis'] diff --git a/ionq_core/models/qis_circuit_input.py b/ionq_core/models/qis_circuit_input.py index dfcf9a1..ec7f424 100644 --- a/ionq_core/models/qis_circuit_input.py +++ b/ionq_core/models/qis_circuit_input.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/qis_circuit_input_gateset.py b/ionq_core/models/qis_circuit_input_gateset.py index 5721f60..ebf93e5 100644 --- a/ionq_core/models/qis_circuit_input_gateset.py +++ b/ionq_core/models/qis_circuit_input_gateset.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast QisCircuitInputGateset = Literal['qis'] diff --git a/ionq_core/models/qis_gate.py b/ionq_core/models/qis_gate.py index bb44881..8f4837a 100644 --- a/ionq_core/models/qis_gate.py +++ b/ionq_core/models/qis_gate.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast QisGate = Literal['cnot', 'h', 'not', 'pauliexp', 'rx', 'ry', 'rz', 's', 'si', 'swap', 't', 'ti', 'v', 'vi', 'x', 'xx', 'y', 'yy', 'z', 'zz'] diff --git a/ionq_core/models/quadratic_constraint.py b/ionq_core/models/quadratic_constraint.py index 9c41d01..ca242ba 100644 --- a/ionq_core/models/quadratic_constraint.py +++ b/ionq_core/models/quadratic_constraint.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/quantum_function_job_creation_payload.py b/ionq_core/models/quantum_function_job_creation_payload.py index 69cc3e9..c04571a 100644 --- a/ionq_core/models/quantum_function_job_creation_payload.py +++ b/ionq_core/models/quantum_function_job_creation_payload.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/quantum_function_job_creation_payload_settings.py b/ionq_core/models/quantum_function_job_creation_payload_settings.py index 393bbe7..8c39398 100644 --- a/ionq_core/models/quantum_function_job_creation_payload_settings.py +++ b/ionq_core/models/quantum_function_job_creation_payload_settings.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/quantum_function_job_creation_payload_settings_error_mitigation.py b/ionq_core/models/quantum_function_job_creation_payload_settings_error_mitigation.py index a8d89ff..fb5d4de 100644 --- a/ionq_core/models/quantum_function_job_creation_payload_settings_error_mitigation.py +++ b/ionq_core/models/quantum_function_job_creation_payload_settings_error_mitigation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/quantum_function_job_creation_payload_type.py b/ionq_core/models/quantum_function_job_creation_payload_type.py index 86aee1f..42fb0b0 100644 --- a/ionq_core/models/quantum_function_job_creation_payload_type.py +++ b/ionq_core/models/quantum_function_job_creation_payload_type.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast QuantumFunctionJobCreationPayloadType = Literal['quantum-function'] diff --git a/ionq_core/models/registers.py b/ionq_core/models/registers.py index 424eb33..458873c 100644 --- a/ionq_core/models/registers.py +++ b/ionq_core/models/registers.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/request_validation.py b/ionq_core/models/request_validation.py index e5b8b1c..a11a8ac 100644 --- a/ionq_core/models/request_validation.py +++ b/ionq_core/models/request_validation.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/session.py b/ionq_core/models/session.py index c1cf130..14324ff 100644 --- a/ionq_core/models/session.py +++ b/ionq_core/models/session.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/session_cost_limit.py b/ionq_core/models/session_cost_limit.py index 0d10e3e..b93fe4f 100644 --- a/ionq_core/models/session_cost_limit.py +++ b/ionq_core/models/session_cost_limit.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/session_settings.py b/ionq_core/models/session_settings.py index ceb950a..52ab58e 100644 --- a/ionq_core/models/session_settings.py +++ b/ionq_core/models/session_settings.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/session_settings_request.py b/ionq_core/models/session_settings_request.py index 9b2a919..f9247e5 100644 --- a/ionq_core/models/session_settings_request.py +++ b/ionq_core/models/session_settings_request.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/session_status_enum.py b/ionq_core/models/session_status_enum.py index 309276a..6a2f5f8 100644 --- a/ionq_core/models/session_status_enum.py +++ b/ionq_core/models/session_status_enum.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from typing import Literal, cast SessionStatusEnum = Literal['created', 'ended', 'started'] diff --git a/ionq_core/models/sessions_response.py b/ionq_core/models/sessions_response.py index e42de81..acb17b3 100644 --- a/ionq_core/models/sessions_response.py +++ b/ionq_core/models/sessions_response.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/usage.py b/ionq_core/models/usage.py index e97837c..462697c 100644 --- a/ionq_core/models/usage.py +++ b/ionq_core/models/usage.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/usages.py b/ionq_core/models/usages.py index 2f3a153..e263929 100644 --- a/ionq_core/models/usages.py +++ b/ionq_core/models/usages.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/models/whoami.py b/ionq_core/models/whoami.py index 3358abe..dd1acba 100644 --- a/ionq_core/models/whoami.py +++ b/ionq_core/models/whoami.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + from __future__ import annotations from collections.abc import Mapping diff --git a/ionq_core/types.py b/ionq_core/types.py index f74db0a..484d085 100644 --- a/ionq_core/types.py +++ b/ionq_core/types.py @@ -1,3 +1,6 @@ +# Copyright 2026 IonQ, Inc. +# SPDX-License-Identifier: Apache-2.0 + """ Contains some shared types for properties """ from collections.abc import Mapping, MutableMapping From 94281ff9896ba97f9f2cb34f7f8e881dfe3e7ff3 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:31:41 -0700 Subject: [PATCH 08/11] Make copyright post-hook idempotent Skip files that already start with '# Copyright' so the hook does not duplicate headers on handwritten files that the generator leaves untouched. --- openapi-python-client-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi-python-client-config.yaml b/openapi-python-client-config.yaml index cc90cbd..430cefb 100644 --- a/openapi-python-client-config.yaml +++ b/openapi-python-client-config.yaml @@ -4,7 +4,7 @@ literal_enums: true post_hooks: - "perl -pi -e 's/token: str\\K$/ = field(repr=False)/' client.py" - - "perl -pi -e 'print \"# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n\" if !$s{$ARGV}++' $(find . -name '*.py')" + - "perl -pi -e 'print \"# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n\" if !$s{$ARGV}++ && !/^# Copyright/' $(find . -name '*.py')" - "ruff check . --fix-only" - "ruff format ." From 4b8d3ffbbca123ca9e117c5e462b5445bd874401 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:33:24 -0700 Subject: [PATCH 09/11] Simplify copyright post-hook with perl slurp mode Use -0777 slurp mode with a single substitution instead of line-by-line processing with a per-file hash tracker. --- openapi-python-client-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi-python-client-config.yaml b/openapi-python-client-config.yaml index 430cefb..f5cd209 100644 --- a/openapi-python-client-config.yaml +++ b/openapi-python-client-config.yaml @@ -4,7 +4,7 @@ literal_enums: true post_hooks: - "perl -pi -e 's/token: str\\K$/ = field(repr=False)/' client.py" - - "perl -pi -e 'print \"# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n\" if !$s{$ARGV}++ && !/^# Copyright/' $(find . -name '*.py')" + - "perl -0777 -pi -e 's/\\A(?!# Copyright)/# Copyright 2026 IonQ, Inc.\\n# SPDX-License-Identifier: Apache-2.0\\n\\n/' $(find . -name '*.py')" - "ruff check . --fix-only" - "ruff format ." From 5150eec4dcbc90a655e92962493b76b8124293f1 Mon Sep 17 00:00:00 2001 From: Guen Prawiroatmodjo <4041805+guenp@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:24:18 -0700 Subject: [PATCH 10/11] Remove package documentation from package_init template Removed detailed package documentation and examples from the Jinja template. --- custom-templates/package_init.py.jinja | 130 +------------------------ 1 file changed, 1 insertion(+), 129 deletions(-) diff --git a/custom-templates/package_init.py.jinja b/custom-templates/package_init.py.jinja index 8e3bcbf..57227d4 100644 --- a/custom-templates/package_init.py.jinja +++ b/custom-templates/package_init.py.jinja @@ -2,132 +2,4 @@ # Copyright 2026 IonQ, Inc. # SPDX-License-Identifier: Apache-2.0 -"""A Python client library for the [IonQ Cloud Platform API](https://docs.ionq.com/). - -Provides full access to IonQ's quantum computing services with typed models for all -request and response objects. Supports both synchronous and asynchronous usage. - -## Quick start - -```python -from ionq_core import IonQClient -from ionq_core.api.backends import get_backends - -# Authenticate with the IONQ_API_KEY environment variable -client = IonQClient() - -# List available quantum backends -for backend in get_backends.sync(client=client): - print(f"{backend.backend}: {backend.status}") -``` - -## Authentication - -Get an API key from the [IonQ Cloud Console](https://cloud.ionq.com), then -either set the ``IONQ_API_KEY`` environment variable or pass it directly: - -```python -client = IonQClient() # reads IONQ_API_KEY -client = IonQClient(api_key="your-key") # explicit key -``` - -## Submitting a job - -```python -from ionq_core.api.default import create_job -from ionq_core.models.circuit_job_creation_payload import CircuitJobCreationPayload - -job = create_job.sync( - client=client, - body=CircuitJobCreationPayload.from_dict({ - "type": "ionq.circuit.v1", - "backend": "simulator", - "shots": 1000, - "input": { - "gateset": "qis", - "circuit": [ - {"gate": "h", "targets": [0]}, - {"gate": "cnot", "targets": [0], "controls": [1]}, - ], - }, - }), -) -``` - -## Key features - -- **Sync and async** - every endpoint has ``.sync()`` and ``.asyncio()`` variants. -- **Automatic retries** - transient errors (429, 5xx) are retried with exponential - backoff. See `IonQClient` for configuration. -- **Typed exceptions** - HTTP errors are raised as `AuthenticationError`, - `RateLimitError`, `ServerError`, etc. See `_exceptions` for the full hierarchy. -- **Pagination helpers** - `iter_jobs` and `aiter_jobs` follow cursors automatically. -- **Job polling** - `wait_for_job` and `async_wait_for_job` poll until completion. -- **Session management** - `SessionManager` wraps the session lifecycle as a - context manager. -- **Native gate matrices** - `gpi_matrix`, `gpi2_matrix`, `ms_matrix`, and - `zz_matrix` return pure-Python unitary matrices for simulation and verification. -- **Extensibility** - `ClientExtension` lets downstream SDKs inject hooks, headers, - custom transports, and error mappers without modifying this library. -""" - -from ._exceptions import ( - APIConnectionError, - APIError, - APITimeoutError, - AuthenticationError, - BadRequestError, - IonQError, - NotFoundError, - PermissionDeniedError, - RateLimitError, - ServerError, -) -from ._extensions import AsyncEventHook, ClientExtension, EventHook -from ._gates import gpi2_matrix, gpi_matrix, ms_matrix, zz_matrix -from ._pagination import aiter_jobs, aiter_session_jobs, iter_jobs, iter_session_jobs -from ._polling import ( - JobFailedError, - JobTimeoutError, - async_wait_for_job, - wait_for_job, -) -from ._session import SessionManager -from .client import AuthenticatedClient, Client -from .ionq_client import IonQClient, __version__ -from .types import UNSET, Unset - -__all__ = ( - "UNSET", - "APIConnectionError", - "APIError", - "APITimeoutError", - "AsyncEventHook", - "AuthenticatedClient", - "AuthenticationError", - "BadRequestError", - "Client", - "ClientExtension", - "EventHook", - "IonQClient", - "IonQError", - "JobFailedError", - "JobTimeoutError", - "NotFoundError", - "PermissionDeniedError", - "RateLimitError", - "ServerError", - "SessionManager", - "Unset", - "__version__", - "aiter_jobs", - "aiter_session_jobs", - "async_wait_for_job", - "gpi2_matrix", - "gpi_matrix", - "iter_jobs", - "iter_session_jobs", - "ms_matrix", - "wait_for_job", - "zz_matrix", -) +{{ safe_docstring(package_description) }} From ae88c49eaf4a6771e099b9f9d65e32f86c3283b2 Mon Sep 17 00:00:00 2001 From: Spencer Churchill <25377399+splch@users.noreply.github.com> Date: Sun, 26 Apr 2026 07:19:03 -0700 Subject: [PATCH 11/11] Fix merge conflict: restore imports in template, remove copyright The merge from main lost the imports and __all__ from the package_init template and re-introduced the copyright header that the post-hook now handles. --- custom-templates/package_init.py.jinja | 63 +++++++++++++++++++++-- ionq_core/__init__.py | 71 +------------------------- 2 files changed, 61 insertions(+), 73 deletions(-) diff --git a/custom-templates/package_init.py.jinja b/custom-templates/package_init.py.jinja index 57227d4..c602cf0 100644 --- a/custom-templates/package_init.py.jinja +++ b/custom-templates/package_init.py.jinja @@ -1,5 +1,62 @@ {% from "helpers.jinja" import safe_docstring %} -# Copyright 2026 IonQ, Inc. -# SPDX-License-Identifier: Apache-2.0 - {{ safe_docstring(package_description) }} +from ._exceptions import ( + APIConnectionError, + APIError, + APITimeoutError, + AuthenticationError, + BadRequestError, + IonQError, + NotFoundError, + PermissionDeniedError, + RateLimitError, + ServerError, +) +from ._extensions import AsyncEventHook, ClientExtension, EventHook +from ._gates import gpi2_matrix, gpi_matrix, ms_matrix, zz_matrix +from ._pagination import aiter_jobs, aiter_session_jobs, iter_jobs, iter_session_jobs +from ._polling import ( + JobFailedError, + JobTimeoutError, + async_wait_for_job, + wait_for_job, +) +from ._session import SessionManager +from .client import AuthenticatedClient, Client +from .ionq_client import IonQClient, __version__ +from .types import UNSET, Unset + +__all__ = ( + "UNSET", + "APIConnectionError", + "APIError", + "APITimeoutError", + "AsyncEventHook", + "AuthenticatedClient", + "AuthenticationError", + "BadRequestError", + "Client", + "ClientExtension", + "EventHook", + "IonQClient", + "IonQError", + "JobFailedError", + "JobTimeoutError", + "NotFoundError", + "PermissionDeniedError", + "RateLimitError", + "ServerError", + "SessionManager", + "Unset", + "__version__", + "aiter_jobs", + "aiter_session_jobs", + "async_wait_for_job", + "gpi2_matrix", + "gpi_matrix", + "iter_jobs", + "iter_session_jobs", + "ms_matrix", + "wait_for_job", + "zz_matrix", +) diff --git a/ionq_core/__init__.py b/ionq_core/__init__.py index f84d0bc..fbee532 100644 --- a/ionq_core/__init__.py +++ b/ionq_core/__init__.py @@ -1,76 +1,7 @@ # Copyright 2026 IonQ, Inc. # SPDX-License-Identifier: Apache-2.0 -"""A Python client library for the [IonQ Cloud Platform API](https://docs.ionq.com/). - -Provides full access to IonQ's quantum computing services with typed models for all -request and response objects. Supports both synchronous and asynchronous usage. - -## Quick start - -```python -from ionq_core import IonQClient -from ionq_core.api.backends import get_backends - -# Authenticate with the IONQ_API_KEY environment variable -client = IonQClient() - -# List available quantum backends -for backend in get_backends.sync(client=client): - print(f"{backend.backend}: {backend.status}") -``` - -## Authentication - -Get an API key from the [IonQ Cloud Console](https://cloud.ionq.com), then -either set the ``IONQ_API_KEY`` environment variable or pass it directly: - -```python -client = IonQClient() # reads IONQ_API_KEY -client = IonQClient(api_key="your-key") # explicit key -``` - -## Submitting a job - -```python -from ionq_core.api.default import create_job -from ionq_core.models.circuit_job_creation_payload import CircuitJobCreationPayload - -job = create_job.sync( - client=client, - body=CircuitJobCreationPayload.from_dict( - { - "type": "ionq.circuit.v1", - "backend": "simulator", - "shots": 1000, - "input": { - "gateset": "qis", - "circuit": [ - {"gate": "h", "targets": [0]}, - {"gate": "cnot", "targets": [0], "controls": [1]}, - ], - }, - } - ), -) -``` - -## Key features - -- **Sync and async** - every endpoint has ``.sync()`` and ``.asyncio()`` variants. -- **Automatic retries** - transient errors (429, 5xx) are retried with exponential - backoff. See `IonQClient` for configuration. -- **Typed exceptions** - HTTP errors are raised as `AuthenticationError`, - `RateLimitError`, `ServerError`, etc. See `_exceptions` for the full hierarchy. -- **Pagination helpers** - `iter_jobs` and `aiter_jobs` follow cursors automatically. -- **Job polling** - `wait_for_job` and `async_wait_for_job` poll until completion. -- **Session management** - `SessionManager` wraps the session lifecycle as a - context manager. -- **Native gate matrices** - `gpi_matrix`, `gpi2_matrix`, `ms_matrix`, and - `zz_matrix` return pure-Python unitary matrices for simulation and verification. -- **Extensibility** - `ClientExtension` lets downstream SDKs inject hooks, headers, - custom transports, and error mappers without modifying this library. -""" +"""A client library for accessing IonQ Cloud Platform API""" from ._exceptions import ( APIConnectionError,