code: def cast_value(self, value, constraints=True):
          
  
          # Null value
          if value in self.__missing_values:
              value = None
  
          # Cast value
          cast_value = value
          if value is not None:
              cast_value = self.__cast_function(value)
              if cast_value == config.ERROR:
                  raise exceptions.CastError((
                      'Field "{field.name}" can\'t cast value "{value}" '
                      'for type "{field.type}" with format "{field.format}"'
                      ).format(field=self, value=value))
  
          # Check value
          if constraints:
              for name, check in self.__check_functions.items():
                  if isinstance(constraints, list):
                      if name not in constraints:
                          continue
                  passed = check(cast_value)
                  if not passed:
                      raise exceptions.CastError((
                          'Field "{field.name}" has constraint "{name}" '
                          'which is not satisfied for value "{value}"'
                          ).format(field=self, name=name, value=value))
  
          return cast_value
docs: https://github.com/frictionlessdata/tableschema-py#field