'Constructor.
Populates this Loader\'s kind and properties map.
Args:
kind: a string containing the entity kind that this loader handles
properties: list of (name, converter) tuples.
This is used to automatically convert the input columns into
properties.  The converter should be a function that takes one
argument, a string value from the input file, and returns a
correctly typed property value that should be inserted. The
tuples in this list should match the columns in your input file,
in order.
For example:
[(\'name\', str),
(\'id_number\', int),
(\'user\', users.User),
(\'birthdate\', lambda x: datetime.datetime.fromtimestamp(float(x))),
(\'description\', datastore_types.Text),'

def __init__(self, kind, properties):

    Validate(kind, (basestring, tuple))
    self.kind = kind
    self.__openfile = open
    self.__create_csv_reader = csv.reader
    GetImplementationClass(kind)
    Validate(properties, list)
    for (name, fn) in properties:
        Validate(name, basestring)
        assert callable(fn), ('Conversion    function    %s    for    property    %s    is    not    callable.' % (fn, name))
    self.__properties = properties
