Allow `issubclass` for protocols with class variables
Currently issubclass cannot be used for runtime_checkable protocols with data members, because those attributes could be set in __init__. I propose to relax this restriction to allow protocols with ClassVar members, as those should be present in the class definition.
That looks reasonable. Could you submit a PR? Does this need changing in mypy too?
I do not think this needs to change in mypy, as the problem is using issubclass at runtime. I am also not familiar with the codebase, so I do not know how to made the PR.
Maybe a project for @Fidget-Spinner? This would be a new feature in 3.11.
Sure, I'll take a shot at this. Currently I'm a little busy with other things in CPython, so I might not be able to work on this immediately.
We're not in a hurry (yet), 3.11's first alpha is in October 2021, and beta freeze in April 2022.
@gvanrossum @Fidget-Spinner I can help with this feature if you need help. I am familiar with typing module so I think it won't be a problem to implement this feature.
@uriyyo sorry, I'm working on this. I will tell you if I need any help.
@Fidget-Spinner Great, I am waiting to see your implementation)
PR for CPython is open at https://github.com/python/cpython/pull/27883. Once that is merged, we can downstream it to typing_extensions.