On Sun, 2021-04-11 at 23:34 -0700, Larry Hastings wrote:
Your example was valid, and I think your workaround should be fine. Do you have a use case for this, or is this question motivated purely by curiosity?
It took a few readings for me to understand the limitations in the PEP. My example and workaround were mostly for me to confirm I had read it correctly.
It's fine to modify the __annotations__ dict after the creation of the class or module. It's code that modifies "__annotations__" from within the class or module that is disallowed here. Similarly for dataclasses; once it creates a class object, it can explicitly set and / or modify the annotations dict on that class.
Thanks. I think this clarification should be added to the PEP.