The fact that copy doesn't work as expected without providing a__copy__method means that pickling is broken in the same way as copy uses it as a fallback. Maybe pickle should be fixed too? Also, I don't really get why by definition 'always' deep ...