def _check_key_type(self, key, key_value):
     if not isinstance(key_value, key.key_type):
         raise TableKeyTypeError(self.name,
                                 key.key_name,
                                 friendly_type_name(key.key_type),
                                 friendly_type_name(type(key_value)),
                                 )
 def _raise_invalid_type_error(self):
     _raw_value_type = type(self.raw_value())
     actual_type: str = friendly_type_name(_raw_value_type)
     raise ConfigValueTypeError(
         self.path,
         f'config value must be of type "{self.type_name}", got "{actual_type}" instead.'
     )
Beispiel #3
0
 def _cast(self, raw_value: object) -> list:
     if not isinstance(raw_value, list):
         return self._raise_invalid_type_error()
     for index, item in enumerate(raw_value):
         if not isinstance(item, self.element_type):
             actual_type = friendly_type_name(type(item))
             raise ConfigValueTypeError(
                 self.path,
                 f'{self.name}: item at index {index} should be a "{self._expected_element_type}", but is '
                 f'"{actual_type}" instead')
     return raw_value
Beispiel #4
0
def test_element_type_check(value: ConfigValueList, not_a_string):
    value.default = ['string', 'string_too', not_a_string]
    actual_type = _utils.friendly_type_name(type(not_a_string))
    error = f'{value.name}: item at index 2 should be a "string", but is "{actual_type}" instead'
    with pytest.raises(ConfigValueTypeError, match=error):
        value()
Beispiel #5
0
 def _expected_element_type(self) -> str:
     return friendly_type_name(self.element_type)
def test_friendly_type_name(raw_type, friendly_name):
    assert friendly_name == _utils.friendly_type_name(raw_type)
 def user_friendly_type(self) -> str:
     """
     :return: user friendly type of the key
     :rtype: str
     """
     return friendly_type_name(self.key_type)