'Takes a snapshot of the entry under *name*. Snapshots can be accessed via :attr:`.snapshots`.
:param string name: Snapshot name'

def take_snapshot(self, name):

    snapshot = {}
    for (field, value) in self.items():
        try:
            snapshot[field] = copy.deepcopy(value)
        except TypeError:
            log.warning((u'Unable    to    take    `%s`    snapshot    for    field    `%s`    in    `%s`' % (name, field, self[u'title'])))
    if snapshot:
        if (name in self.snapshots):
            log.warning((u'Snapshot    `%s`    is    being    overwritten    for    `%s`' % (name, self[u'title'])))
        self.snapshots[name] = snapshot
