comparison env/lib/python3.7/site-packages/networkx/exception.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2004-2019 by
3 # Aric Hagberg <hagberg@lanl.gov>
4 # Dan Schult <dschult@colgate.edu>
5 # Pieter Swart <swart@lanl.gov>
6 # All rights reserved.
7 # BSD license.
8 #
9 # Authors:
10 # Aric Hagberg <hagberg@lanl.gov>
11 # Pieter Swart <swart@lanl.gov>
12 # Dan Schult <dschult@colgate.edu>
13 # Loïc Séguin-C. <loicseguin@gmail.com>
14 """
15 **********
16 Exceptions
17 **********
18
19 Base exceptions and errors for NetworkX.
20 """
21
22 __all__ = [
23 'HasACycle',
24 'NodeNotFound',
25 'PowerIterationFailedConvergence',
26 'ExceededMaxIterations',
27 'AmbiguousSolution',
28 'NetworkXAlgorithmError',
29 'NetworkXException',
30 'NetworkXError',
31 'NetworkXNoCycle',
32 'NetworkXNoPath',
33 'NetworkXNotImplemented',
34 'NetworkXPointlessConcept',
35 'NetworkXUnbounded',
36 'NetworkXUnfeasible',
37 ]
38
39
40 class NetworkXException(Exception):
41 """Base class for exceptions in NetworkX."""
42
43
44 class NetworkXError(NetworkXException):
45 """Exception for a serious error in NetworkX"""
46
47
48 class NetworkXPointlessConcept(NetworkXException):
49 """Raised when a null graph is provided as input to an algorithm
50 that cannot use it.
51
52 The null graph is sometimes considered a pointless concept [1]_,
53 thus the name of the exception.
54
55 References
56 ----------
57 .. [1] Harary, F. and Read, R. "Is the Null Graph a Pointless
58 Concept?" In Graphs and Combinatorics Conference, George
59 Washington University. New York: Springer-Verlag, 1973.
60
61 """
62
63
64 class NetworkXAlgorithmError(NetworkXException):
65 """Exception for unexpected termination of algorithms."""
66
67
68 class NetworkXUnfeasible(NetworkXAlgorithmError):
69 """Exception raised by algorithms trying to solve a problem
70 instance that has no feasible solution."""
71
72
73 class NetworkXNoPath(NetworkXUnfeasible):
74 """Exception for algorithms that should return a path when running
75 on graphs where such a path does not exist."""
76
77
78 class NetworkXNoCycle(NetworkXUnfeasible):
79 """Exception for algorithms that should return a cycle when running
80 on graphs where such a cycle does not exist."""
81
82
83 class HasACycle(NetworkXException):
84 """Raised if a graph has a cycle when an algorithm expects that it
85 will have no cycles.
86
87 """
88
89
90 class NetworkXUnbounded(NetworkXAlgorithmError):
91 """Exception raised by algorithms trying to solve a maximization
92 or a minimization problem instance that is unbounded."""
93
94
95 class NetworkXNotImplemented(NetworkXException):
96 """Exception raised by algorithms not implemented for a type of graph."""
97
98
99 class NodeNotFound(NetworkXException):
100 """Exception raised if requested node is not present in the graph"""
101
102
103 class AmbiguousSolution(NetworkXException):
104 """Raised if more than one valid solution exists for an intermediary step
105 of an algorithm.
106
107 In the face of ambiguity, refuse the temptation to guess.
108 This may occur, for example, when trying to determine the
109 bipartite node sets in a disconnected bipartite graph when
110 computing bipartite matchings.
111
112 """
113
114
115 class ExceededMaxIterations(NetworkXException):
116 """Raised if a loop iterates too many times without breaking.
117
118 This may occur, for example, in an algorithm that computes
119 progressively better approximations to a value but exceeds an
120 iteration bound specified by the user.
121
122 """
123
124
125 class PowerIterationFailedConvergence(ExceededMaxIterations):
126 """Raised when the power iteration method fails to converge within a
127 specified iteration limit.
128
129 `num_iterations` is the number of iterations that have been
130 completed when this exception was raised.
131
132 """
133
134 def __init__(self, num_iterations, *args, **kw):
135 msg = 'power iteration failed to converge within {} iterations'
136 exception_message = msg.format(num_iterations)
137 superinit = super(PowerIterationFailedConvergence, self).__init__
138 superinit(self, exception_message, *args, **kw)