98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| class PlotlyError(Exception):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class PlotlyEmptyDataError(PlotlyError):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| class PlotlyGraphObjectError(PlotlyError):
 | |
|     def __init__(self, message="", path=(), notes=()):
 | |
|         """
 | |
|         General graph object error for validation failures.
 | |
| 
 | |
|         :param (str|unicode) message: The error message.
 | |
|         :param (iterable) path: A path pointing to the error.
 | |
|         :param notes: Add additional notes, but keep default exception message.
 | |
| 
 | |
|         """
 | |
|         self.message = message
 | |
|         self.plain_message = message  # for backwards compat
 | |
|         self.path = list(path)
 | |
|         self.notes = notes
 | |
|         super(PlotlyGraphObjectError, self).__init__(message)
 | |
| 
 | |
|     def __str__(self):
 | |
|         """This is called by Python to present the error message."""
 | |
|         format_dict = {
 | |
|             "message": self.message,
 | |
|             "path": "[" + "][".join(repr(k) for k in self.path) + "]",
 | |
|             "notes": "\n".join(self.notes),
 | |
|         }
 | |
|         return "{message}\n\nPath To Error: {path}\n\n{notes}".format(**format_dict)
 | |
| 
 | |
| 
 | |
| class PlotlyDictKeyError(PlotlyGraphObjectError):
 | |
|     def __init__(self, obj, path, notes=()):
 | |
|         """See PlotlyGraphObjectError.__init__ for param docs."""
 | |
|         format_dict = {"attribute": path[-1], "object_name": obj._name}
 | |
|         message = "'{attribute}' is not allowed in '{object_name}'".format(
 | |
|             **format_dict
 | |
|         )
 | |
|         notes = [obj.help(return_help=True)] + list(notes)
 | |
|         super(PlotlyDictKeyError, self).__init__(
 | |
|             message=message, path=path, notes=notes
 | |
|         )
 | |
| 
 | |
| 
 | |
| class PlotlyDictValueError(PlotlyGraphObjectError):
 | |
|     def __init__(self, obj, path, notes=()):
 | |
|         """See PlotlyGraphObjectError.__init__ for param docs."""
 | |
|         format_dict = {"attribute": path[-1], "object_name": obj._name}
 | |
|         message = "'{attribute}' has invalid value inside '{object_name}'".format(
 | |
|             **format_dict
 | |
|         )
 | |
|         notes = [obj.help(path[-1], return_help=True)] + list(notes)
 | |
|         super(PlotlyDictValueError, self).__init__(
 | |
|             message=message, notes=notes, path=path
 | |
|         )
 | |
| 
 | |
| 
 | |
| class PlotlyListEntryError(PlotlyGraphObjectError):
 | |
|     def __init__(self, obj, path, notes=()):
 | |
|         """See PlotlyGraphObjectError.__init__ for param docs."""
 | |
|         format_dict = {"index": path[-1], "object_name": obj._name}
 | |
|         message = "Invalid entry found in '{object_name}' at index, '{index}'".format(
 | |
|             **format_dict
 | |
|         )
 | |
|         notes = [obj.help(return_help=True)] + list(notes)
 | |
|         super(PlotlyListEntryError, self).__init__(
 | |
|             message=message, path=path, notes=notes
 | |
|         )
 | |
| 
 | |
| 
 | |
| class PlotlyDataTypeError(PlotlyGraphObjectError):
 | |
|     def __init__(self, obj, path, notes=()):
 | |
|         """See PlotlyGraphObjectError.__init__ for param docs."""
 | |
|         format_dict = {"index": path[-1], "object_name": obj._name}
 | |
|         message = "Invalid entry found in '{object_name}' at index, '{index}'".format(
 | |
|             **format_dict
 | |
|         )
 | |
|         note = "It's invalid because it doesn't contain a valid 'type' value."
 | |
|         notes = [note] + list(notes)
 | |
|         super(PlotlyDataTypeError, self).__init__(
 | |
|             message=message, path=path, notes=notes
 | |
|         )
 | |
| 
 | |
| 
 | |
| class PlotlyKeyError(KeyError):
 | |
|     """
 | |
|     KeyErrors are not printed as beautifully as other errors (this is so that
 | |
|     {}[''] prints    "KeyError: ''" and not "KeyError:"). So here we use
 | |
|     LookupError's __str__ to make a PlotlyKeyError object which will print nicer
 | |
|     error messages for KeyErrors.
 | |
|     """
 | |
| 
 | |
|     def __str__(self):
 | |
|         return LookupError.__str__(self)
 |