Source code for mqt.ionshuttler.multi_shuttler.outside.processing_zone

# Copyright (c) 2023 - 2026 Chair for Design Automation, TUM
# All rights reserved.
#
# SPDX-License-Identifier: MIT
#
# Licensed under the MIT License

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from qiskit.dagcircuit import DAGDepNode

    from .ion_types import Edge, Node


[docs] class ProcessingZone: def __init__(self, name: str, info: list[tuple[float, float]]) -> None: self.name = name self.pz_info = info self.exit_node = info[0] self.entry_node = info[1] self.processing_zone = info[2] # Initialize the attribute here self._active_start_t: int | None = None # ... existing properties ... @property def parking_node(self) -> Node: return self._parking_node @parking_node.setter def parking_node(self, value: Node) -> None: self._parking_node = value @property def parking_edge(self) -> Edge: return self._parking_edge @parking_edge.setter def parking_edge(self, value: Edge) -> None: self._parking_edge = value @property def time_in_pz_counter(self) -> int: return self._time_in_pz_counter @time_in_pz_counter.setter def time_in_pz_counter(self, value: int) -> None: self._time_in_pz_counter = value @property def gate_execution_finished(self) -> bool: return self._gate_execution_finished @gate_execution_finished.setter def gate_execution_finished(self, value: bool) -> None: self._gate_execution_finished = value @property def getting_processed(self) -> list[DAGDepNode]: return self._getting_processed @getting_processed.setter def getting_processed(self, value: list[DAGDepNode]) -> None: self._getting_processed = value @property def rotate_entry(self) -> bool: return self._rotate_entry @rotate_entry.setter def rotate_entry(self, value: bool) -> None: self._rotate_entry = value @property def out_of_parking_cycle(self) -> int | None: return self._out_of_parking_cycle @out_of_parking_cycle.setter def out_of_parking_cycle(self, value: int | None) -> None: self._out_of_parking_cycle = value @property def out_of_parking_move(self) -> int | None: return self._out_of_parking_move @out_of_parking_move.setter def out_of_parking_move(self, value: int | None) -> None: self._out_of_parking_move = value @property def entry_edge(self) -> Edge: return self._entry_edge @entry_edge.setter def entry_edge(self, value: Edge) -> None: self._entry_edge = value @property def exit_edge(self) -> Edge: return self._exit_edge @exit_edge.setter def exit_edge(self, value: Edge) -> None: self._exit_edge = value @property def ion_to_move_out_of_pz(self) -> int | None: return self._ion_to_move_out_of_pz @ion_to_move_out_of_pz.setter def ion_to_move_out_of_pz(self, value: int | None) -> None: self._ion_to_move_out_of_pz = value @property def path_from_pz(self) -> list[Edge]: return self._path_from_pz @path_from_pz.setter def path_from_pz(self, value: list[Edge]) -> None: self._path_from_pz = value @property def rest_of_path_from_pz(self) -> dict[Edge, list[Edge]]: return self._rest_of_path_from_pz @rest_of_path_from_pz.setter def rest_of_path_from_pz(self, value: dict[Edge, list[Edge]]) -> None: self._rest_of_path_from_pz = value @property def path_to_pz(self) -> list[Edge]: return self._path_to_pz @path_to_pz.setter def path_to_pz(self, value: list[Edge]) -> None: self._path_to_pz = value @property def rest_of_path_to_pz(self) -> dict[Edge, list[Edge]]: return self._rest_of_path_to_pz @rest_of_path_to_pz.setter def rest_of_path_to_pz(self, value: dict[Edge, list[Edge]]) -> None: self._rest_of_path_to_pz = value @property def first_entry_connection_from_pz(self) -> Edge: return self._first_entry_connection_from_pz @first_entry_connection_from_pz.setter def first_entry_connection_from_pz(self, value: Edge) -> None: self._first_entry_connection_from_pz = value @property def ion_to_park(self) -> int | None: return self._ion_to_park @ion_to_park.setter def ion_to_park(self, value: int | None) -> None: self._ion_to_park = value @property def max_num_parking(self) -> int: return self._max_num_parking @max_num_parking.setter def max_num_parking(self, value: int) -> None: self._max_num_parking = value @property def path_to_pz_idxs(self) -> list[int]: return self._path_to_pz_idxs @path_to_pz_idxs.setter def path_to_pz_idxs(self, value: list[int]) -> None: self._path_to_pz_idxs = value @property def path_from_pz_idxs(self) -> list[int]: return self._path_from_pz_idxs @path_from_pz_idxs.setter def path_from_pz_idxs(self, value: list[int]) -> None: self._path_from_pz_idxs = value @property def pz_edges_idx(self) -> list[int]: return self._pz_edges_idx @pz_edges_idx.setter def pz_edges_idx(self, value: list[int]) -> None: self._pz_edges_idx = value @property def num_edges(self) -> int: return self._num_edges @num_edges.setter def num_edges(self, value: int) -> None: self._num_edges = value # Explicitly define the property and setter @property def active_start_t(self) -> int | None: return self._active_start_t @active_start_t.setter def active_start_t(self, value: int | None) -> None: self._active_start_t = value