|
- # Copyright 2019 Huawei Technologies Co., Ltd
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # ============================================================================
- """Define a validation class which contain all check methods of datavisual module."""
- from numbers import Number
- from mindinsight.utils.exceptions import ParamValueError
- from mindinsight.utils.exceptions import ParamMissError
- from mindinsight.datavisual.common.enums import PluginNameEnum
- from mindinsight.datavisual.utils.tools import to_int
-
-
- class Validation:
- """Validation class, define all check methods."""
-
- @classmethod
- def check_offset(cls, offset, default_value=0):
- """
- Check offset parameter, it must be greater or equal 0.
-
- Args:
- offset (Union[str, int]): Value can be string number or int.
- default_value (int): Default value for checked offset. Default: 0.
-
- Returns:
- int, offset.
- """
-
- if offset is None:
- return default_value
- offset = to_int(offset, 'offset')
- if offset < 0:
- raise ParamValueError("'offset' should be greater than or equal to 0.")
- return offset
-
- @classmethod
- def check_limit(cls, limit, min_value=1, max_value=1000, default_value=100):
- """
- Check limit parameter, it should between min_value and max_value.
-
- Args:
- limit (Union[str, int]): Value can be string number or int.
- min_value (int): Limit should greater or equal this value. Default: 1.
- max_value (int): Limit should less or equal this value. Default: 1000.
- default_value (int): Default value for limit. Default: 100.
-
- Returns:
- int, limit.
- """
-
- if limit is None:
- return default_value
-
- limit = to_int(limit, 'limit')
- if limit < min_value or limit > max_value:
- raise ParamValueError("'limit' should in [{}, {}].".format(min_value, max_value))
- return limit
-
- @classmethod
- def check_param_empty(cls, **kwargs):
- """
- Check param.
-
- Args:
- kwargs (Any): Check if arg is truthy.
-
- Raises:
- ParamMissError: When param missing.
- """
- for key, value in kwargs.items():
- # When value is 0, 0.0 or False, it is not empty.
- if isinstance(value, Number):
- continue
-
- if not value:
- raise ParamMissError(key)
-
- @classmethod
- def check_plugin_name(cls, plugin_name):
- """
- Check plugin name.
-
- Args:
- plugin_name (str): The plugin name.
-
- Raises:
- ParamValueError: When plugin name is not valid.
- """
- plugin_name_list = PluginNameEnum.list_members()
- if plugin_name not in plugin_name_list:
- raise ParamValueError("'plugin_name' only can be one of {}"
- "".format(plugin_name_list))
|