typing_extensions icon indicating copy to clipboard operation
typing_extensions copied to clipboard

Multiple inheritance and ReadOnly issues?

Open alicederyn opened this issue 2 years ago • 1 comments

I believe the following should be a passing test suite for multiple inheritance and ReadOnly:

from typing_extensions import TypedDict, Required, NotRequired, ReadOnly

class A(TypedDict):
  k: ReadOnly[Required[int]]
  
class B(TypedDict):
  k: ReadOnly[NotRequired[int]]

class C(A, B): pass

assert C.__required_keys__ == {'k'}
assert C.__optional_keys__ == set()

class D(B, A): pass 

assert D.__required_keys__ == {'k'}
assert D.__optional_keys__ == set()

class E(TypedDict):
  k: Required[int]
  
class F(A, E): pass

assert F.__readonly_keys__ == set()
assert F.__mutable_keys__ == {'k'}

class G(E, A): pass

assert G.__readonly_keys__ == set()
assert G.__mutable_keys__ == {'k'}

Unfortunately, with typing-extensions 4.9.0-rc1 in Python 3.10.1, every one of these properties is {'k'}

alicederyn avatar Nov 29 '23 20:11 alicederyn

I'm going to punt on fixing this until after 4.9.0 since it feels fairly obscure.

JelleZijlstra avatar Dec 10 '23 01:12 JelleZijlstra