Quapp common library supporting Quapp Platform for Quantum Computing
Project description
quapp-common
Quapp common library supporting Quapp Platform for Quantum Computing.
Overview
quapp-common is a Python library designed to support the Quapp Platform for
Quantum Computing by providing common utilities, configurations, and
abstractions for working with
quantum providers and devices.
Recent improvements add first-class asynchronous job processing with a
cross-process JobManager,
background task execution, and standardized result models for immediate client
responses while work continues in the background.
Features
- Provider and device factory for quantum computing platforms.
- Logging and configuration utilities with improved and detailed log messages.
- Support for AWS Braket, OQC Cloud, Qiskit, PennyLane, DWave Ocean, and Quapp quantum simulators.
- Refactored classes and utilities to remove tenant-specific request, response, and promise classes.
- Standardized naming by renaming
ProjectHeadertoCustomHeader. - Enhanced error handling and job metadata update mechanisms.
- Simplified and cleaner HTTP request/response logging and URL parsing utilities.
- Asynchronous job processing:
- AsyncInvocationTask to run handlers in a background thread pool and return immediate responses.
- JobManager for cross-process job registry with atomic add/update/get and pub-sub updates.
- Standard Event/Result (Success, Error) models for consistent async responses.
- Scheduler integration via callback URL; local updates are patched to the scheduler.
- Safety: updates to jobs already DONE/FAILED are ignored to prevent post-completion mutations.
- Multi-language SDK support (v0.0.12.dev1):
- Language enum for validating and resolving Python/JavaScript runtimes.
- SubprocessDispatcher to delegate tasks to non-Python runtimes via subprocess with timeout management and JSON payload processing.
- SubprocessBridge integrating dispatcher, circuit adapter, and result serializer for seamless JS-Python handler interaction.
- CircuitAdapter for converting JS subprocess circuit outputs into native SDK formats (OpenQASM, QUBO, JSON) across Qiskit, Braket, PennyLane, etc.
- ResultSerializer for converting complex job results into JSON-serializable dictionaries for subprocess communication.
Installation
Install via pip:
pip install quapp-common
Notes:
- From version 0.0.11.dev7,
starletteis a direct dependency to support background execution helpers. - From version 0.0.12.dev1,
qiboanddimodare added as dependencies to support Qibo and D-Wave Ocean SDK integrations.
Recently Changes Highlights
v0.0.12.dev5
- Version bump to 0.0.12.dev5.
- Refactor: update logger imports in
SubprocessBridge,CircuitAdapter, andSubprocessDispatcherto use relative paths (from ..config.logging_config import logger) for consistency across modules.
v0.0.12.dev4
- Version bumps to 0.0.12.dev4.
- Fix:
AsyncInvocationTask._on_task_donenow properly fires the step error callback when a background task raises an unhandled exception — readsonErrorCallbackUrlfrom the event'spreparationstep and callsupdate_job_metadatawith a structured error response. - Fix: circuit preparation failure in
Invocation.__pre_executenow returnsNoneinstead of raisingValueError, allowing the caller to handle the empty result gracefully without an unhandled exception propagating. - Refactor: replace stdlib
loggingwith the project’s loguru-based logger (viaconfig.logging_config) inSubprocessBridge,CircuitAdapter, andSubprocessDispatcher; all three now calllogger.bind(context=__name__). - Style: reformat
SubprocessBridgeandSubprocessDispatcherfrom 2-space to 4-space indentation, consistent with the rest of the codebase.
v0.0.12.dev3
- Version bumps to 0.0.12.dev3.
- Add
QUANTUM_HPCSDK enum value (display name"quantum hpc") to support the Quapp HPC backend. - Make
circuitExportUrloptional inInvocationfor SDKs that do not require a circuit-export step.
v0.0.12.dev2
- Version bumps to 0.0.12.dev2.
- Fix: correct JavaScript handler runner path in
SubprocessDispatcher.RUNNER_MAP— removed the erroneousfunction/directory prefix so the subprocess command resolves tohandler_runner.jsrelative to the working directory.
v0.0.12.dev1
- Version bump to 0.0.12.dev1 and dependency update (add
qibo,dimod). - Introduce multi-language SDK support primitives:
Languageenum for validating and resolving Python/JavaScript runtimes.SubprocessDispatcherfor delegating tasks to non-Python runtimes via subprocess with runner configuration and timeout management.SubprocessBridgeintegrating dispatcher, circuit adapter, and result serializer for JS-Python handler interaction.CircuitAdapterfor converting JS subprocess circuit outputs into native SDK formats (OpenQASM, QUBO, JSON) across Qiskit, Braket, PennyLane, etc.ResultSerializerfor converting complex job results (numpy, complex numbers, Enums, datetime) into JSON-serializable dictionaries.
v0.0.11.dev7 – v0.0.11.dev10
- Version bump to 0.0.11.dev7 and dependency update (add
starlette). - Introduce asynchronous job processing primitives:
- AsyncInvocationTask for background execution with immediate client response.
- Event and standardized Result models (Success, Error).
- Introduce JobManager for cross-process job management and update publication.
- Integrate JobManager into Request to register jobs and carry scheduler callback URL.
- Modularize update_job_metadata with clearer helpers; patch scheduler on local state changes.
- Fix: ignore updates for jobs that are already DONE or FAILED.
- Improve logging and error handling (use full tracebacks, cleaner logs).
For detailed usage and API references, please refer to the in-code documentation or contact the maintainers.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quapp_common-0.0.12.dev5.tar.gz.
File metadata
- Download URL: quapp_common-0.0.12.dev5.tar.gz
- Upload date:
- Size: 37.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f72f7022aa75b6ef7df8981931faefbfa6a3566ebbc8a41291aa79ed010744b2
|
|
| MD5 |
d7173706f13e2782a63b6170ccd1aaa8
|
|
| BLAKE2b-256 |
e2f7c81aa82b541ac97ee6db1e46b07337bdd9947f6565fe303c886198ddd818
|
File details
Details for the file quapp_common-0.0.12.dev5-py3-none-any.whl.
File metadata
- Download URL: quapp_common-0.0.12.dev5-py3-none-any.whl
- Upload date:
- Size: 57.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61bf76e49cc54bece72796225fae25d86d98e0afb28fa01f84b9ea68da886958
|
|
| MD5 |
c94ec5869a2c8c02d036eb03a1751bf4
|
|
| BLAKE2b-256 |
4f89254db418293fee88acec9b947d7b58a4e25f17a1a33b675ceaa5f6c0550c
|