Source code for qudas.qudata.qudata
from qudas.annealing import QdAnnealingIR, QdAnnealingOutput
from qudas.gate import QdGateIR, QdGateOutput
from typing import Optional, Dict, Any, Union
[docs]class QuData:
"""gate/annealing 共通フロントエンド"""
[docs] @classmethod
def input(
cls, prob: Optional[Dict[str, Any]] = None, mode: str = "annealing"
) -> Union[QdAnnealingIR, QdGateIR]:
"""
新IR (QdAnnealingIR) を返却するラッパー。旧API互換のために残してある。
"""
if mode == "annealing":
return QdAnnealingIR(prob if prob else {})
elif mode == "gate":
return QdGateIR(prob if prob else {})
else:
raise TypeError(f"{type(prob)}は対応していない型です。")
[docs] @classmethod
def output(
cls,
result: Optional[Dict[str, Any]] = None,
result_type: Optional[str] = None,
mode: str = "annealing",
**kwargs,
) -> Union[QdAnnealingOutput, QdGateOutput]:
"""新しい出力クラス (QuDataAnnealingOutput) を返却する。
旧 API の `result`/`result_type` でも呼び出せるように互換を維持する。
"""
if mode == "annealing":
return QdAnnealingOutput(results={"block0": result}, **kwargs)
elif mode == "gate":
return QdGateOutput(results={"block0": result}, **kwargs)
else:
raise TypeError(f"{type(result)}は対応していない型です。")