code: def detect_types(
      field_names,
      field_values,
      field_types=DEFAULT_TYPES,
      skip_indexes=None,
      type_detector=TypeDetector,
      fallback_type=TextField,
      *args,
      **kwargs
  ):
      
  
      # TODO: look strategy of csv.Sniffer.has_header
      # TODO: may receive 'type hints'
      detector = type_detector(
          field_names,
          field_types=field_types,
          fallback_type=fallback_type,
          skip_indexes=skip_indexes,
      )
      detector.feed(field_values)
      return detector.fields
docs: Detect column types (or "where the magic happens")