code: def cast_row(self, row, fail_fast=False):
          
  
          # Prepare
          result = []
          errors = []
  
          # Check row length
          if len(row) != len(self.fields):
              message = 'Row length %s doesn\'t match fields count %s'
              message = message % (len(row), len(self.fields))
              raise exceptions.CastError(message)
  
          # Cast row
          for field, value in zip(self.fields, row):
              try:
                  result.append(field.cast_value(value))
              except exceptions.CastError as exception:
                  if fail_fast:
                      raise
                  errors.append(exception)
  
          # Raise errors
          if errors:
              message = 'There are %s cast errors (see exception.errors)' % len(errors)
              raise exceptions.CastError(message, errors=errors)
  
          return result
docs: https://github.com/frictionlessdata/tableschema-py#schema