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
Source:
Lines 1449 to 1458 in91afe66
| defformatannotation(annotation,base_module=None): | |
| ifgetattr(annotation,'__module__',None)=='typing': | |
| returnrepr(annotation).replace('typing.','') | |
| ifisinstance(annotation,types.GenericAlias): | |
| returnstr(annotation) | |
| ifisinstance(annotation,type): | |
| ifannotation.__module__in ('builtins',base_module): | |
| returnannotation.__qualname__ | |
| returnannotation.__module__+'.'+annotation.__qualname__ | |
| returnrepr(annotation) |
An error replacement happens in:
repr(annotation).replace('typing.','')
Suppose that I define a class or Protocol underfoo/typing.py:
classA:pass
ThenUnion[int, A] will turn toUnion[int, foo.A], but expected result isUnion[int, foo.typing.A]
Any module with suffix likexxtyping will be replaced, such asnptyping.
Solution
Replace the line to:
defrepl(match):text=match.group()iftext.startswith('typing.'):returntext[len('typing.'):]returntextreturnre.sub(r'[\w\.]+',repl,repr(annotation))