docs: def cast(self, value, custom_formatters=None, strict=True):
          """Cast value to schema type"""
          if value is None:
              if not self.nullable:
                  raise InvalidSchemaValue("Null value for non-nullable schema", value, self.type)
              return self.default
  
          cast_mapping = self.get_cast_mapping(
              custom_formatters=custom_formatters, strict=strict)
  
          if self.type is not SchemaType.STRING and value == '':
              return None
  
          cast_callable = cast_mapping[self.type]
          try:
              return cast_callable(value)
          except ValueError:
              raise InvalidSchemaValue(
                  "Failed to cast value {value} to type {type}", value, self.type)