Actually, there are a few steps that `type.__new__` perform that are not
customizable in metaclasses.
I had sometimes thought about mailing this here, or Python ideas, but could
not
come up with a "real world" use case where the customization of those
would be meaningful.
Let'me see if I recall
PEP 487 introduced __init_subclass__ and __set_name__, and both of those were
wins for the common cases of metaclass usage.
Unfortunately, the implementation of PEP 487 with regards to __init_subclass__ has made the writing of correct
metaclasses significantly harder, if not impossible.
The