diff --git a/src/qibolab/_core/dummy/platform.py b/src/qibolab/_core/dummy/platform.py index e4c40330a..8cab902ac 100644 --- a/src/qibolab/_core/dummy/platform.py +++ b/src/qibolab/_core/dummy/platform.py @@ -2,14 +2,15 @@ from qibolab._core.components import AcquisitionChannel, DcChannel, IqChannel from qibolab._core.instruments.dummy import DummyInstrument, DummyLocalOscillator +from qibolab._core.parameters import Hardware from qibolab._core.platform import Platform from qibolab._core.qubits import Qubit FOLDER = pathlib.Path(__file__).parent -def create_dummy() -> Platform: - """Create a dummy platform using the dummy instrument.""" +def create_dummy_hardware() -> Hardware: + """Create dummy hardware configuration based on the dummy instrument.""" qubits = {} channels = {} # attach the channels @@ -38,6 +39,10 @@ def create_dummy() -> Platform: pump_name: DummyLocalOscillator(address="0.0.0.0"), } - return Platform.load( - path=FOLDER, instruments=instruments, qubits=qubits, couplers=couplers - ) + return Hardware(instruments=instruments, qubits=qubits, couplers=couplers) + + +def create_dummy() -> Platform: + """Create a dummy platform using the dummy instrument.""" + hardware = create_dummy_hardware() + return Platform.load(path=FOLDER, **vars(hardware)) diff --git a/tests/dummy_hardware/platform.py b/tests/dummy_hardware/platform.py new file mode 100644 index 000000000..ce4f6ed7f --- /dev/null +++ b/tests/dummy_hardware/platform.py @@ -0,0 +1,8 @@ +"""Dummy platform to test loading via ``Hardware`` object.""" + +from qibolab import Hardware +from qibolab._core.dummy.platform import create_dummy_hardware + + +def create() -> Hardware: + return create_dummy_hardware() diff --git a/tests/test_platform.py b/tests/test_platform.py index 14d32fab4..88f4f66e6 100644 --- a/tests/test_platform.py +++ b/tests/test_platform.py @@ -9,11 +9,11 @@ from qibo.models import Circuit from qibo.result import CircuitResult -from qibolab import create_platform +from qibolab import create_platform, initialize_parameters from qibolab._core.backends import QibolabBackend from qibolab._core.components import AcquisitionConfig, IqConfig, OscillatorConfig from qibolab._core.dummy import create_dummy -from qibolab._core.dummy.platform import FOLDER +from qibolab._core.dummy.platform import FOLDER, create_dummy_hardware from qibolab._core.native import SingleQubitNatives, TwoQubitNatives from qibolab._core.parameters import NativeGates, Parameters, update_configs from qibolab._core.platform import Platform @@ -35,6 +35,22 @@ def test_create_platform_error(): _ = create_platform("nonexistent") +@pytest.fixture +def dummy_hardware(monkeypatch): + parameters = initialize_parameters(hardware=create_dummy_hardware()) + path = Path(__file__).parent / "dummy_hardware" / PARAMETERS + path.write_text(parameters.model_dump_json(indent=4)) + monkeypatch.setenv(PLATFORMS, str(Path(__file__).parent)) + yield + path.unlink() + + +def test_create_platform_from_hardware(dummy_hardware): + platform = create_platform("dummy_hardware") + assert isinstance(platform, Platform) + assert list(platform.qubits.keys()) == list(range(5)) + + def test_platform_basics(): platform = Platform( name="ciao",