qpandalite.qcloud_config.originq_online_config 源代码

"""OriginQ QPilot online configuration utilities.

This module provides functions to create and save OriginQ QPilot
online service configuration files for full, simplified, and dummy modes.
"""

__all__ = ["create_originq_config", "create_originq_online_config", "create_originq_dummy_config"]
import json
from pathlib import Path

[文档] def create_originq_config(login_apitoken = None, login_url = None, submit_url = None, query_url = None, available_qubits = None, available_topology = None, task_group_size = 200, savepath = None): """Create full OriginQ QPilot configuration file with all settings. Args: login_apitoken: API token for QPilot login authentication. login_url: URL endpoint for user login (url 0). submit_url: URL endpoint for submitting quantum tasks (url 1). query_url: URL endpoint for querying task results (url 2). available_qubits: List of available qubit indices on the device. available_topology: List of connected qubit pairs [[q1, q2], ...]. task_group_size: Maximum circuits per task (default: 200). savepath: Directory to save config file. Defaults to cwd. Raises: RuntimeError: If required parameters missing or types invalid. """ if not login_apitoken: raise RuntimeError('You should input your token.') if not login_url: raise RuntimeError('You should input the login url (url 0).') if not submit_url: raise RuntimeError('You should input the submitting url (url 1).') if not query_url: raise RuntimeError('You should input the querying url (url 2).') if not isinstance(available_qubits, list): raise RuntimeError('Available qubits must be a list.') if not isinstance(available_topology, list): raise RuntimeError('Available topology must be a list.') if not isinstance(task_group_size, int): raise RuntimeError('Task group size (task_group_size) must be a number.') if not savepath: savepath = Path.cwd() default_online_config = { 'login_apitoken' : login_apitoken, 'login_url' : login_url, 'submit_url' : submit_url, 'query_url': query_url, 'available_qubits': available_qubits, 'available_topology': available_topology, 'task_group_size': task_group_size, } with open(savepath / 'originq_online_config.json', 'w') as fp: json.dump(default_online_config, fp, indent=2)
[文档] def create_originq_online_config(login_apitoken = None, login_url = None, submit_url = None, query_url = None, task_group_size = 200, savepath = None): """Create OriginQ QPilot online configuration without topology settings. Args: login_apitoken: API token for QPilot login authentication. login_url: URL endpoint for user login. submit_url: URL endpoint for submitting quantum tasks. query_url: URL endpoint for querying task results. task_group_size: Maximum circuits per task (default: 200). savepath: Directory to save config file. Defaults to cwd. Raises: RuntimeError: If required parameters missing or types invalid. """ if not login_apitoken: raise RuntimeError('You should input your token.') if not login_url: raise RuntimeError('You should input the login url (url 0).') if not submit_url: raise RuntimeError('You should input the submitting url (url 1).') if not query_url: raise RuntimeError('You should input the querying url (url 2).') if not isinstance(task_group_size, int): raise RuntimeError('Task group size (task_group_size) must be a number.') if not savepath: savepath = Path.cwd() default_online_config = { 'login_apitoken' : login_apitoken, 'login_url' : login_url, 'submit_url' : submit_url, 'query_url': query_url, 'available_qubits': None, 'available_topology': None, 'task_group_size': task_group_size, } with open(savepath / 'originq_online_config.json', 'w') as fp: json.dump(default_online_config, fp, indent=2)
[文档] def create_originq_dummy_config( available_qubits = None, available_topology = None, task_group_size = 200, savepath = None): """Create dummy OriginQ configuration for testing. Uses placeholder values for API credentials. Useful for local testing and development without real credentials. Args: available_qubits: List of available qubit indices. available_topology: List of connected qubit pairs. task_group_size: Maximum circuits per task (default: 200). savepath: Directory to save config file. Defaults to cwd. Raises: RuntimeError: If parameters have invalid types. """ if not isinstance(available_qubits, list): raise RuntimeError('Available qubits must be a list.') if not isinstance(available_topology, list): raise RuntimeError('Available topology must be a list.') if not isinstance(task_group_size, int): raise RuntimeError('Task group size (task_group_size) must be a number.') if not savepath: savepath = Path.cwd() default_online_config = { 'login_apitoken' : 'DUMMY', 'login_url' : 'DUMMY', 'submit_url' : 'DUMMY', 'query_url': 'DUMMY', 'available_qubits': available_qubits, 'available_topology': available_topology, 'task_group_size': task_group_size, } with open(savepath / 'originq_online_config.json', 'w') as fp: json.dump(default_online_config, fp, indent=2)
if __name__ == '__main__': # The originq qpilot login apitoken apitoken = 'TOKEN' # The url for logging login_url = 'LOGIN_URL' # The url for submitting the task submit_url = 'SUBMIT_URL' # The url for querying the task query_url = 'QUERY_URL' # Available qubits available_qubits = [0, 1, 2] # Available topology available_topology = [[0, 1], [1, 2]] # The maximum task group size, representing the maximum number of # quantum circuits contained in a single task. (default = 200) task_group_size = 200 create_originq_online_config(login_apitoken = apitoken, login_url = login_url, submit_url = submit_url, query_url = query_url, available_qubits = available_qubits, available_topology = available_topology, task_group_size = task_group_size)