Returns ICachableItem that matches id
        
        Args:
            id: String that identifies the item to return whose key matches

def getById(self, Id):
        """Returns ICachableItem that matches id
        
        Args:
            id: String that identifies the item to return whose key matches
        """
        # 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:
            for item in csvsource.items():
                if Id == item.getId():
                    return item
        except StopIteration:
            return None