From 30c3bba23add31914db2d180872b7496d9074292 Mon Sep 17 00:00:00 2001 From: MatteoRobbiati Date: Mon, 10 Feb 2025 11:18:09 +0100 Subject: [PATCH] fix: change the order or the inheritance to impose the correct __mro__ --- src/qibotn/backends/abstract.py | 6 ++++++ src/qibotn/backends/cutensornet.py | 2 +- src/qibotn/backends/qmatchatea.py | 8 +++----- src/qibotn/backends/quimb.py | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/qibotn/backends/abstract.py b/src/qibotn/backends/abstract.py index 8747313..24e87f6 100644 --- a/src/qibotn/backends/abstract.py +++ b/src/qibotn/backends/abstract.py @@ -20,10 +20,16 @@ class QibotnBackend(ABC): def set_precision(self, precision): if precision != self.precision: super().set_precision(precision) + self._setup_backend_specifics() def set_device(self, device): self.device = device + self._setup_backend_specifics() def configure_tn_simulation(self, **config): """Configure the TN simulation that will be performed.""" pass + + def _setup_backend_specifics(self): + """Configure the backend specific according to the used package.""" + pass diff --git a/src/qibotn/backends/cutensornet.py b/src/qibotn/backends/cutensornet.py index 83c6b46..553fc51 100644 --- a/src/qibotn/backends/cutensornet.py +++ b/src/qibotn/backends/cutensornet.py @@ -8,7 +8,7 @@ from qibotn.backends.abstract import QibotnBackend CUDA_TYPES = {} -class CuTensorNet(NumpyBackend, QibotnBackend): # pragma: no cover +class CuTensorNet(QibotnBackend, NumpyBackend): # pragma: no cover # CI does not test for GPU """Creates CuQuantum backend for QiboTN.""" diff --git a/src/qibotn/backends/qmatchatea.py b/src/qibotn/backends/qmatchatea.py index 00a5124..42559fb 100644 --- a/src/qibotn/backends/qmatchatea.py +++ b/src/qibotn/backends/qmatchatea.py @@ -15,7 +15,7 @@ from qibotn.result import TensorNetworkResult @dataclass -class QMatchaTeaBackend(NumpyBackend, QibotnBackend): +class QMatchaTeaBackend(QibotnBackend, NumpyBackend): def __init__(self): super().__init__() @@ -25,9 +25,7 @@ class QMatchaTeaBackend(NumpyBackend, QibotnBackend): # Set default configurations self.configure_tn_simulation() - # TODO: update this function whenever ``set_device`` and ``set_precision`` - # are set (?) - self._setup_qmatchatea_backend() + self._setup_backend_specifics() def configure_tn_simulation( self, @@ -52,7 +50,7 @@ class QMatchaTeaBackend(NumpyBackend, QibotnBackend): ) self.ansatz = ansatz - def _setup_qmatchatea_backend(self): + def _setup_backend_specifics(self): """Configure qmatchatea QCBackend object.""" qmatchatea_device = ( diff --git a/src/qibotn/backends/quimb.py b/src/qibotn/backends/quimb.py index 951bec1..13a8cf1 100644 --- a/src/qibotn/backends/quimb.py +++ b/src/qibotn/backends/quimb.py @@ -5,7 +5,7 @@ from qibo.result import QuantumState from qibotn.backends.abstract import QibotnBackend -class QuimbBackend(NumpyBackend, QibotnBackend): +class QuimbBackend(QibotnBackend, NumpyBackend): def __init__(self, runcard): super().__init__()