Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
Bug description:
When running the following example:
fromtypingimportAnnotated,get_type_hintsclassMessageCode(str):passclassDisplayName(str):passclassMessage:field_a:Annotated[str,MessageCode("A")]classForm:box_a:Annotated[str,DisplayName("A")]hints=get_type_hints(Message,include_extras=True)metadata=hints["field_a"].__metadata__[0]print(f"MessageCode metadata type:{type(metadata)}")hints=get_type_hints(Form,include_extras=True)metadata=hints["box_a"].__metadata__[0]print(f"DisplayName metadata type:{type(metadata)}")
the output will be:
MessageCode metadata type: <class '__main__.MessageCode'>DisplayName metadata type: <class '__main__.MessageCode'>when it should be:
MessageCode metadata type: <class '__main__.MessageCode'>DisplayName metadata type: <class '__main__.DisplayName'>This issue seems to occur only when:
- the metadata subclasses an immutable type
- when multiple instances of such metadata appear in different class definitions and they have the same value
CPython versions tested on:
3.9
Operating systems tested on:
Linux, Windows