@@ -0,0 +1,1325 @@
+#!/usr/bin/env python%0A%0Afrom copy import copy%0A%0Afrom agate.column_types import *%0Afrom agate.exceptions import *%0A%0Adef infer_types(rows, overrides=%7B%7D):%0A    possible_types = %7B%0A        'boolean': BooleanType(),%0A        'date': DateType(),%0A        'datetime': DateTimeType(),%0A        'timedelta': TimeDeltaType(),%0A        'number': NumberType(),%0A        'text': TextType()%0A    %7D%0A%0A    num_columns = len(rows%5B0%5D)%0A    hypotheses = %5Bset(possible_types.values()) for i in range(num_columns)%5D%0A%0A    for row in rows:%0A        for i in range(num_columns):%0A            h = hypotheses%5Bi%5D%0A%0A            if len(h) == 1:%0A                continue%0A%0A            for column_type in copy(h):%0A                try:%0A                    column_type.cast(row%5Bi%5D)%0A                except CastError:%0A                    h.remove(column_type)%0A%0A    preference_order = %5B%0A        possible_types%5B'boolean'%5D,%0A        possible_types%5B'number'%5D,%0A        possible_types%5B'timedelta'%5D,%0A        possible_types%5B'datetime'%5D,%0A        # possible_types%5B'date'%5D,%0A        possible_types%5B'text'%5D%0A    %5D%0A%0A    column_types = %5B%5D%0A%0A    for i in range(num_columns):%0A        h = hypotheses%5Bi%5D%0A%0A        for t in preference_order:%0A            if t in h:%0A                column_types.append(t)%0A                break%0A        else:%0A            column_types.append(None)%0A%0A    return column_types%0A

Add missing file.