'Remove the `instance` from this ``Session``.
This will free all internal references to the instance.  Cascading
will be applied according to the *expunge* cascade rule.'

def expunge(self, instance):

    try:
        state = attributes.instance_state(instance)
    except exc.NO_STATE:
        raise exc.UnmappedInstanceError(instance)
    if (state.session_id is not self.hash_key):
        raise sa_exc.InvalidRequestError(('Instance    %s    is    not    present    in    this    Session' % state_str(state)))
    cascaded = list(state.manager.mapper.cascade_iterator('expunge', state))
    self._expunge_state(state)
    for (o, m, st_, dct_) in cascaded:
        self._expunge_state(st_)
