<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def first(self):
 """Returns the first ICachableItem in the ICachableSource"""

        # we need to create a new object to insure we don't corrupt the generator count
        csvsource = CSVSource(self.source, self.factory, self.key())
        try:
            item = csvsource.items().next()
            return item
        except StopIteration:
            return None