autoreload is a bit black magic, so it's not a big surprise when it breaks.
I'd guess that the recursion error is because enum values have a reference back to their class (e.g. MyEnum.A.__objclass__, so there's an infinite chain of attributes that it's trying to replace: MyEnum.A.__objclass__.A.__objclass__.<etc>
seem like in update_class the two references old_obj and new_obj can be the same (I'm going to guess that's the point of enums, where instances are shared.
So continue if they are the same should be enough.