In cases like this, it might make sense to just get rid of self._purge, and put its code in place here.

I've been thinking about this for some of your other methods that have public/private versions. Some of them make more sense to keep separated when they have some validation or different arguments, but simple cases like this might make more sense to just not have a private version.