After looking at this, I find that the bug is in formless' MetaTypedInterface, which is trying to hash the partially constructed object from within its own __new__ (i.e., before invoking the __init__ of its superclass).
Note that the proposed change to zope.interface (using '' as the default value for __name__) actually defeats the point of storing the values in the module-scope '_typedInterfaceMetadata' mapping: the object will hash differently after it is fully initialized, and therefore won't be found in that mapping at all. A better fix would be to set __name__ on the instance inside the __new__.
After looking at this, I find that the bug is in formless' MetaTypedInterface, which is trying to hash the partially constructed object from within its own __new__ (i.e., before invoking the __init__ of its superclass).
Note that the proposed change to zope.interface (using '' as the default value for __name__) actually defeats the point of storing the values in the module-scope '_typedInterfac eMetadata' mapping: the object will hash differently after it is fully initialized, and therefore won't be found in that mapping at all. A better fix would be to set __name__ on the instance inside the __new__.