Source code for minorminer.utils.exceptions

# Copyright 2018 D-Wave Systems Inc.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
# ================================================================================================


[docs]class EmbeddingError(Exception): """Base class for all embedding exceptions."""
[docs]class MissingChainError(EmbeddingError): """Raised if a node in the source graph has no associated chain. Args: snode: The source node with no associated chain. """ def __init__(self, snode): msg = "chain for {} is empty or not contained in this embedding" super(MissingChainError, self).__init__(msg.format(snode)) self.source_node = snode
[docs]class ChainOverlapError(EmbeddingError): """Raised if two source nodes have an overlapping chain. Args: tnode: Location where the chains overlap. snode0: First source node with overlapping chain. snode1: Second source node with overlapping chain. """ def __init__(self, tnode, snode0, snode1): msg = "overlapped chains at target node {}: source nodes are {} and {}" super(ChainOverlapError, self).__init__(msg.format(tnode, snode0, snode1)) self.target_node = tnode self.source_nodes = (snode0, snode1)
[docs]class DisconnectedChainError(EmbeddingError): """Raised if a chain is not connected in the target graph. Args: snode: The source node associated with the broken chain. """ def __init__(self, snode): msg = "chain for {} is not connected" super(DisconnectedChainError, self).__init__(msg.format(snode)) self.source_node = snode
[docs]class InvalidNodeError(EmbeddingError): """Raised if a chain contains a node not in the target graph. Args: snode: The source node associated with the chain. tnode: The node in the chain not in the target graph. """ def __init__(self, snode, tnode): msg = "chain for {} contains a node label {} not contained in the target graph" super(InvalidNodeError, self).__init__(msg.format(snode, tnode)) self.source_node = snode self.target_node = tnode
[docs]class MissingEdgeError(EmbeddingError): """Raised when two source nodes sharing an edge to not have a corresponding edge between their chains. Args: snode0: First source node. snode1: Second source node. """ def __init__(self, snode0, snode1): msg = "source edge ({}, {}) is not represented by any target edge" super(MissingEdgeError, self).__init__(msg.format(snode0, snode1)) self.source_nodes = (snode0, snode1)