Source code for networkx.exception

# -*- coding: utf-8 -*-

Base exceptions and errors for NetworkX.

__author__ = """Aric Hagberg (\nPieter Swart (\nDan Schult(\nLoïc Séguin-C. <>"""
#    Copyright (C) 2004-2016 by
#    Aric Hagberg <>
#    Dan Schult <>
#    Pieter Swart <>
#    All rights reserved.
#    BSD license.

# Exception handling

# the root of all Exceptions
[docs]class NetworkXException(Exception): """Base class for exceptions in NetworkX."""
[docs]class NetworkXError(NetworkXException): """Exception for a serious error in NetworkX"""
[docs]class NetworkXPointlessConcept(NetworkXException): """Harary, F. and Read, R. "Is the Null Graph a Pointless Concept?" In Graphs and Combinatorics Conference, George Washington University. New York: Springer-Verlag, 1973. """
[docs]class NetworkXAlgorithmError(NetworkXException): """Exception for unexpected termination of algorithms."""
[docs]class NetworkXUnfeasible(NetworkXAlgorithmError): """Exception raised by algorithms trying to solve a problem instance that has no feasible solution."""
[docs]class NetworkXNoPath(NetworkXUnfeasible): """Exception for algorithms that should return a path when running on graphs where such a path does not exist."""
[docs]class NetworkXNoCycle(NetworkXUnfeasible): """Exception for algorithms that should return a cycle when running on graphs where such a cycle does not exist."""
[docs]class NetworkXUnbounded(NetworkXAlgorithmError): """Exception raised by algorithms trying to solve a maximization or a minimization problem instance that is unbounded."""
[docs]class NetworkXNotImplemented(NetworkXException): """Exception raised by algorithms not implemented for a type of graph."""
[docs]class NodeNotFound(NetworkXException): """Exception raised if requested node is not present in the graph"""
[docs]class AmbiguousSolution(NetworkXException): """Raised if more than one valid solution exists for an intermediary step of an algorithm. In the face of ambiguity, refuse the temptation to guess. This may occur, for example, when trying to determine the bipartite node sets in a disconnected bipartite graph when computing bipartite matchings. """
[docs]class ExceededMaxIterations(NetworkXException): """Raised if a loop iterates too many times without breaking. This may occur, for example, in an algorithm that computes progressively better approximations to a value but exceeds an iteration bound specified by the user. """
[docs]class PowerIterationFailedConvergence(ExceededMaxIterations): """Raised when the power iteration method fails to converge within a specified iteration limit. `num_iterations` is the number of iterations that have been completed when this exception was raised. """ def __init__(self, num_iterations, *args, **kw): msg = 'power iteration failed to converge within {} iterations' msg = msg.format(num_iterations) superinit = super(PowerIterationFailedConvergence, self).__init__ superinit(self, msg, *args, **kw)