From 33beb4ffc64d461a8badf446fd42e8d730239987 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 11 Feb 2021 15:42:20 +0100 Subject: [PATCH] exceptions moved to single file --- pype/settings/entities/__init__.py | 21 ++++- pype/settings/entities/base_entity.py | 21 ++--- .../entities/dict_immutable_keys_entity.py | 4 +- .../entities/dict_mutable_keys_entity.py | 4 +- pype/settings/entities/exceptions.py | 86 +++++++++++++++++++ pype/settings/entities/input_entities.py | 4 +- pype/settings/entities/item_entities.py | 4 +- pype/settings/entities/lib.py | 75 +--------------- pype/settings/entities/list_entity.py | 4 +- pype/settings/entities/root_entities.py | 1 + 10 files changed, 125 insertions(+), 99 deletions(-) create mode 100644 pype/settings/entities/exceptions.py diff --git a/pype/settings/entities/__init__.py b/pype/settings/entities/__init__.py index 2fd837d2f2..5743a79d87 100644 --- a/pype/settings/entities/__init__.py +++ b/pype/settings/entities/__init__.py @@ -1,7 +1,15 @@ +from .exceptions import ( + DefaultsNotDefined, + InvalidValueType, + SchemaMissingFileInfo, + SchemeGroupHierarchyBug, + SchemaDuplicatedKeys, + SchemaDuplicatedEnvGroupKeys, + SchemaTemplateMissingKeys +) from .lib import ( NOT_SET, - OverrideState, - DefaultsNotDefined + OverrideState ) from .base_entity import ( BaseEntity, @@ -33,9 +41,16 @@ from .dict_mutable_keys_entity import DictMutableKeysEntity __all__ = ( + "DefaultsNotDefined", + "InvalidValueType", + "SchemaMissingFileInfo", + "SchemeGroupHierarchyBug", + "SchemaDuplicatedKeys", + "SchemaDuplicatedEnvGroupKeys", + "SchemaTemplateMissingKeys", + "NOT_SET", "OverrideState", - "DefaultsNotDefined", "BaseEntity", "GUIEntity", diff --git a/pype/settings/entities/base_entity.py b/pype/settings/entities/base_entity.py index 1c6ec617f7..0864b6a033 100644 --- a/pype/settings/entities/base_entity.py +++ b/pype/settings/entities/base_entity.py @@ -8,25 +8,14 @@ from .lib import ( OverrideState ) +from .exceptions import ( + InvalidValueType, + SchemeGroupHierarchyBug +) + from pype.lib import PypeLogger -class InvalidValueType(Exception): - msg_template = "{}" - - def __init__(self, valid_types, invalid_type, path): - msg = "Path \"{}\". ".format(path) - - joined_types = ", ".join( - [str(valid_type) for valid_type in valid_types] - ) - msg += "Got invalid type \"{}\". Expected: {}".format( - invalid_type, joined_types - ) - self.msg = msg - super(InvalidValueType, self).__init__(msg) - - @six.add_metaclass(ABCMeta) class BaseEntity: """Partially abstract class for Setting's item type workflow.""" diff --git a/pype/settings/entities/dict_immutable_keys_entity.py b/pype/settings/entities/dict_immutable_keys_entity.py index b355f801cc..d46ceac3fb 100644 --- a/pype/settings/entities/dict_immutable_keys_entity.py +++ b/pype/settings/entities/dict_immutable_keys_entity.py @@ -3,8 +3,7 @@ import copy from .lib import ( WRAPPER_TYPES, OverrideState, - NOT_SET, - SchemaDuplicatedKeys + NOT_SET ) from pype.settings.constants import ( METADATA_KEYS, @@ -15,6 +14,7 @@ from . import ( BoolEntity, GUIEntity ) +from .exceptions import SchemaDuplicatedKeys class DictImmutableKeysEntity(ItemEntity): diff --git a/pype/settings/entities/dict_mutable_keys_entity.py b/pype/settings/entities/dict_mutable_keys_entity.py index 0a3381111e..32f62403e6 100644 --- a/pype/settings/entities/dict_mutable_keys_entity.py +++ b/pype/settings/entities/dict_mutable_keys_entity.py @@ -2,10 +2,10 @@ import copy from .lib import ( NOT_SET, - OverrideState, - DefaultsNotDefined + OverrideState ) from . import ItemEntity +from .exceptions import DefaultsNotDefined from pype.settings.constants import ( METADATA_KEYS, M_DYNAMIC_KEY_LABEL, diff --git a/pype/settings/entities/exceptions.py b/pype/settings/entities/exceptions.py new file mode 100644 index 0000000000..92e6b13ba7 --- /dev/null +++ b/pype/settings/entities/exceptions.py @@ -0,0 +1,86 @@ +class DefaultsNotDefined(Exception): + def __init__(self, obj): + msg = "Default values for object are not set. {}".format(obj.path) + super(DefaultsNotDefined, self).__init__(msg) + + +class InvalidValueType(Exception): + msg_template = "{}" + + def __init__(self, valid_types, invalid_type, path): + msg = "Path \"{}\". ".format(path) + + joined_types = ", ".join( + [str(valid_type) for valid_type in valid_types] + ) + msg += "Got invalid type \"{}\". Expected: {}".format( + invalid_type, joined_types + ) + self.msg = msg + super(InvalidValueType, self).__init__(msg) + + +class SchemaMissingFileInfo(Exception): + def __init__(self, invalid): + full_path_keys = [] + for item in invalid: + full_path_keys.append("\"{}\"".format("/".join(item))) + + msg = ( + "Schema has missing definition of output file (\"is_file\" key)" + " for keys. [{}]" + ).format(", ".join(full_path_keys)) + super(SchemaMissingFileInfo, self).__init__(msg) + + +class SchemeGroupHierarchyBug(Exception): + def __init__(self, entity_path): + msg = ( + "Items with attribute \"is_group\" can't have another item with" + " \"is_group\" attribute as child. Error happened in entity: {}" + ).format(entity_path) + super(SchemeGroupHierarchyBug, self).__init__(msg) + + +class SchemaDuplicatedKeys(Exception): + def __init__(self, entity_path, key): + msg = ( + "Schema item contain duplicated key \"{}\" in" + " one hierarchy level. {}" + ).format(key, entity_path) + super(SchemaDuplicatedKeys, self).__init__(msg) + + +class SchemaDuplicatedEnvGroupKeys(Exception): + def __init__(self, invalid): + items = [] + for key_path, keys in invalid.items(): + joined_keys = ", ".join([ + "\"{}\"".format(key) for key in keys + ]) + items.append("\"{}\" ({})".format(key_path, joined_keys)) + + msg = ( + "Schema items contain duplicated environment group keys. {}" + ).format(" || ".join(items)) + super(SchemaDuplicatedEnvGroupKeys, self).__init__(msg) + + +class SchemaTemplateMissingKeys(Exception): + def __init__(self, missing_keys, required_keys, template_name=None): + self.missing_keys = missing_keys + self.required_keys = required_keys + if template_name: + msg = f"Schema template \"{template_name}\" require more keys.\n" + else: + msg = "" + msg += "Required keys: {}\nMissing keys: {}".format( + self.join_keys(required_keys), + self.join_keys(missing_keys) + ) + super(SchemaTemplateMissingKeys, self).__init__(msg) + + def join_keys(self, keys): + return ", ".join([ + f"\"{key}\"" for key in keys + ]) diff --git a/pype/settings/entities/input_entities.py b/pype/settings/entities/input_entities.py index 823e745248..a36ec6dd44 100644 --- a/pype/settings/entities/input_entities.py +++ b/pype/settings/entities/input_entities.py @@ -2,9 +2,9 @@ import copy from .item_entities import ItemEntity from .lib import ( NOT_SET, - OverrideState, - DefaultsNotDefined + OverrideState ) +from .exceptions import DefaultsNotDefined from pype.settings.constants import ( METADATA_KEYS, M_ENVIRONMENT_KEY diff --git a/pype/settings/entities/item_entities.py b/pype/settings/entities/item_entities.py index ded946d8c8..a9f956354b 100644 --- a/pype/settings/entities/item_entities.py +++ b/pype/settings/entities/item_entities.py @@ -2,7 +2,9 @@ from abc import abstractmethod from .lib import ( NOT_SET, - OverrideState, + OverrideState +) +from .exceptions import ( DefaultsNotDefined, SchemeGroupHierarchyBug ) diff --git a/pype/settings/entities/lib.py b/pype/settings/entities/lib.py index ca634e3999..032653f490 100644 --- a/pype/settings/entities/lib.py +++ b/pype/settings/entities/lib.py @@ -3,11 +3,10 @@ import re import json import copy - -class DefaultsNotDefined(Exception): - def __init__(self, obj): - msg = "Default values for object are not set. {}".format(obj.path) - super(DefaultsNotDefined, self).__init__(msg) +from .exceptions import ( + SchemaTemplateMissingKeys, + SchemaDuplicatedEnvGroupKeys +) WRAPPER_TYPES = ["form", "collapsible-wrap"] @@ -190,72 +189,6 @@ def _fill_inner_schemas(schema_data, schema_collection, schema_templates): return schema_data -class SchemaTemplateMissingKeys(Exception): - def __init__(self, missing_keys, required_keys, template_name=None): - self.missing_keys = missing_keys - self.required_keys = required_keys - if template_name: - msg = f"Schema template \"{template_name}\" require more keys.\n" - else: - msg = "" - msg += "Required keys: {}\nMissing keys: {}".format( - self.join_keys(required_keys), - self.join_keys(missing_keys) - ) - super(SchemaTemplateMissingKeys, self).__init__(msg) - - def join_keys(self, keys): - return ", ".join([ - f"\"{key}\"" for key in keys - ]) - - -class SchemaMissingFileInfo(Exception): - def __init__(self, invalid): - full_path_keys = [] - for item in invalid: - full_path_keys.append("\"{}\"".format("/".join(item))) - - msg = ( - "Schema has missing definition of output file (\"is_file\" key)" - " for keys. [{}]" - ).format(", ".join(full_path_keys)) - super(SchemaMissingFileInfo, self).__init__(msg) - - -class SchemeGroupHierarchyBug(Exception): - def __init__(self, entity_path): - msg = ( - "Items with attribute \"is_group\" can't have another item with" - " \"is_group\" attribute as child. Error happened in entity: {}" - ).format(entity_path) - super(SchemeGroupHierarchyBug, self).__init__(msg) - - -class SchemaDuplicatedKeys(Exception): - def __init__(self, entity_path, key): - msg = ( - "Schema item contain duplicated key \"{}\" in" - " one hierarchy level. {}" - ).format(key, entity_path) - super(SchemaDuplicatedKeys, self).__init__(msg) - - -class SchemaDuplicatedEnvGroupKeys(Exception): - def __init__(self, invalid): - items = [] - for key_path, keys in invalid.items(): - joined_keys = ", ".join([ - "\"{}\"".format(key) for key in keys - ]) - items.append("\"{}\" ({})".format(key_path, joined_keys)) - - msg = ( - "Schema items contain duplicated environment group keys. {}" - ).format(" || ".join(items)) - super(SchemaDuplicatedEnvGroupKeys, self).__init__(msg) - - # TODO reimplement logic inside entities def validate_environment_groups_uniquenes( schema_data, env_groups=None, keys=None diff --git a/pype/settings/entities/list_entity.py b/pype/settings/entities/list_entity.py index 6914d9a886..7c1e558eb7 100644 --- a/pype/settings/entities/list_entity.py +++ b/pype/settings/entities/list_entity.py @@ -5,9 +5,9 @@ from . import ( ) from .lib import ( NOT_SET, - OverrideState, - DefaultsNotDefined + OverrideState ) +from .exceptions import DefaultsNotDefined class ListEntity(ItemEntity): diff --git a/pype/settings/entities/root_entities.py b/pype/settings/entities/root_entities.py index 7957ffe933..1c657467b3 100644 --- a/pype/settings/entities/root_entities.py +++ b/pype/settings/entities/root_entities.py @@ -114,6 +114,7 @@ class RootEntity(BaseItemEntity): known_abstract_classes = ( entities.BaseEntity, + entities.BaseItemEntity, entities.ItemEntity, entities.InputEntity )