summaryrefslogtreecommitdiff
path: root/src/buildstream/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/exceptions.py')
-rw-r--r--src/buildstream/exceptions.py141
1 files changed, 141 insertions, 0 deletions
diff --git a/src/buildstream/exceptions.py b/src/buildstream/exceptions.py
new file mode 100644
index 000000000..123e18d72
--- /dev/null
+++ b/src/buildstream/exceptions.py
@@ -0,0 +1,141 @@
+#
+# Copyright (C) 2018 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+#
+# Authors:
+# Tristan Van Berkom <tristan.vanberkom@codethink.co.uk>
+# Tiago Gomes <tiago.gomes@codethink.co.uk>
+"""
+Exceptions - API for Error Handling
+===================================
+
+This module contains some Enums used in Error Handling which are useful in
+testing external plugins.
+"""
+
+from enum import Enum, unique
+
+
+@unique
+class ErrorDomain(Enum):
+ """ErrorDomain
+
+ Describes what the error is related to.
+ """
+
+ PLUGIN = 1
+ LOAD = 2
+ IMPL = 3
+ PLATFORM = 4
+ SANDBOX = 5
+ ARTIFACT = 6
+ PIPELINE = 7
+ UTIL = 8
+ SOURCE = 9
+ ELEMENT = 10
+ APP = 11
+ STREAM = 12
+ VIRTUAL_FS = 13
+ CAS = 14
+ PROG_NOT_FOUND = 15
+ REMOTE = 16
+ PROFILE = 17
+
+
+class LoadErrorReason(Enum):
+ """LoadErrorReason
+
+ Describes the reason why a :class:`.LoadError` was raised.
+ """
+
+ MISSING_FILE = 1
+ """A file was not found."""
+
+ INVALID_YAML = 2
+ """The parsed data was not valid YAML."""
+
+ INVALID_DATA = 3
+ """Data was malformed, a value was not of the expected type, etc"""
+
+ ILLEGAL_COMPOSITE = 4
+ """An error occurred during YAML dictionary composition.
+
+ This can happen by overriding a value with a new differently typed
+ value, or by overwriting some named value when that was not allowed.
+ """
+
+ CIRCULAR_DEPENDENCY = 5
+ """A circular dependency chain was detected"""
+
+ UNRESOLVED_VARIABLE = 6
+ """A variable could not be resolved. This can happen if your project
+ has cyclic dependencies in variable declarations, or, when substituting
+ a string which refers to an undefined variable.
+ """
+
+ UNSUPPORTED_PROJECT = 7
+ """BuildStream does not support the required project format version"""
+
+ UNSUPPORTED_PLUGIN = 8
+ """Project requires a newer version of a plugin than the one which was
+ loaded
+ """
+
+ EXPRESSION_FAILED = 9
+ """A conditional expression failed to resolve"""
+
+ USER_ASSERTION = 10
+ """An assertion was intentionally encoded into project YAML"""
+
+ TRAILING_LIST_DIRECTIVE = 11
+ """A list composition directive did not apply to any underlying list"""
+
+ CONFLICTING_JUNCTION = 12
+ """Conflicting junctions in subprojects"""
+
+ INVALID_JUNCTION = 13
+ """Failure to load a project from a specified junction"""
+
+ SUBPROJECT_INCONSISTENT = 15
+ """Subproject has no ref"""
+
+ INVALID_SYMBOL_NAME = 16
+ """An invalid symbol name was encountered"""
+
+ MISSING_PROJECT_CONF = 17
+ """A project.conf file was missing"""
+
+ LOADING_DIRECTORY = 18
+ """Try to load a directory not a yaml file"""
+
+ PROJ_PATH_INVALID = 19
+ """A project path leads outside of the project directory"""
+
+ PROJ_PATH_INVALID_KIND = 20
+ """A project path points to a file of the not right kind (e.g. a
+ socket)
+ """
+
+ RECURSIVE_INCLUDE = 21
+ """A recursive include has been encountered"""
+
+ RECURSIVE_VARIABLE = 22
+ """A recursive variable has been encountered"""
+
+ PROTECTED_VARIABLE_REDEFINED = 23
+ """An attempt was made to set the value of a protected variable"""
+
+ DUPLICATE_DEPENDENCY = 24
+ """A duplicate dependency was detected"""