| 
									
										
										
										
											2019-10-18 09:43:44 +02:00
										 |  |  | # -*- coding: utf-8 -*- | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Copyright (c) 2017-2019 Red Hat Inc. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Authors: | 
					
						
							|  |  |  | #  Markus Armbruster <armbru@redhat.com> | 
					
						
							|  |  |  | #  Marc-André Lureau <marcandre.lureau@redhat.com> | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This work is licensed under the terms of the GNU GPL, version 2. | 
					
						
							|  |  |  | # See the COPYING file in the top-level directory. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:30 -04:00
										 |  |  | """
 | 
					
						
							|  |  |  | QAPI error classes | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Common error classes used throughout the package.  Additional errors may | 
					
						
							|  |  |  | be defined in other modules.  At present, `QAPIParseError` is defined in | 
					
						
							|  |  |  | parser.py. | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:32 -04:00
										 |  |  | from typing import Optional | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .source import QAPISourceInfo | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-18 09:43:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class QAPIError(Exception): | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:26 -04:00
										 |  |  |     """Base class for all exceptions from the QAPI package.""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QAPISourceError(QAPIError): | 
					
						
							|  |  |  |     """Error class for all exceptions identifying a source location.""" | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:32 -04:00
										 |  |  |     def __init__(self, | 
					
						
							|  |  |  |                  info: Optional[QAPISourceInfo], | 
					
						
							|  |  |  |                  msg: str, | 
					
						
							|  |  |  |                  col: Optional[int] = None): | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:27 -04:00
										 |  |  |         super().__init__() | 
					
						
							| 
									
										
										
										
											2019-10-18 09:43:44 +02:00
										 |  |  |         self.info = info | 
					
						
							|  |  |  |         self.msg = msg | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:28 -04:00
										 |  |  |         self.col = col | 
					
						
							| 
									
										
										
										
											2019-10-18 09:43:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:32 -04:00
										 |  |  |     def __str__(self) -> str: | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:29 -04:00
										 |  |  |         assert self.info is not None | 
					
						
							| 
									
										
										
										
											2019-10-18 09:43:44 +02:00
										 |  |  |         loc = str(self.info) | 
					
						
							|  |  |  |         if self.col is not None: | 
					
						
							|  |  |  |             assert self.info.line is not None | 
					
						
							|  |  |  |             loc += ':%s' % self.col | 
					
						
							|  |  |  |         return loc + ': ' + self.msg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 15:22:26 -04:00
										 |  |  | class QAPISemError(QAPISourceError): | 
					
						
							|  |  |  |     """Error class for semantic QAPI errors.""" |