Source code for qiskit.providers.fake_provider.fake_qasm_backend
# This code is part of Qiskit.
#
# (C) Copyright IBM 2020.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
"""
Fake backend abstract class for mock backends.
"""
import json
import os
from qiskit.exceptions import QiskitError
from qiskit.providers.models import BackendProperties, QasmBackendConfiguration
from .utils.json_decoder import (
decode_backend_configuration,
decode_backend_properties,
)
from .fake_backend import FakeBackend
[docs]class FakeQasmBackend(FakeBackend):
"""A fake OpenQASM backend."""
dirname = None
conf_filename = None
props_filename = None
backend_name = None
def __init__(self):
configuration = self._get_conf_from_json()
self._defaults = None
self._properties = None
super().__init__(configuration)
def properties(self):
"""Returns a snapshot of device properties"""
if not self._properties:
self._set_props_from_json()
return self._properties
def _get_conf_from_json(self):
if not self.conf_filename:
raise QiskitError("No configuration file has been defined")
conf = self._load_json(self.conf_filename)
decode_backend_configuration(conf)
configuration = self._get_config_from_dict(conf)
configuration.backend_name = self.backend_name
return configuration
def _set_props_from_json(self):
if not self.props_filename:
raise QiskitError("No properties file has been defined")
props = self._load_json(self.props_filename)
decode_backend_properties(props)
self._properties = BackendProperties.from_dict(props)
def _load_json(self, filename):
with open(os.path.join(self.dirname, filename)) as f_json:
the_json = json.load(f_json)
return the_json
def _get_config_from_dict(self, conf):
return QasmBackendConfiguration.from_dict(conf)