File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed
packages/@jsii/python-runtime Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -168,7 +168,7 @@ def implements(*interfaces: Type[Any]) -> Callable[[T], T]:
168
168
def deco (cls ):
169
169
cls .__jsii_type__ = getattr (cls , "__jsii_type__" , None )
170
170
cls .__jsii_ifaces__ = getattr (cls , "__jsii_ifaces__" , []) + list (interfaces )
171
- cls .__jsii_proxy_class__ = lambda : getattr (cls , "__jsii_proxy_class__" , None )
171
+ cls .__jsii_proxy_class__ = getattr (cls , "__jsii_proxy_class__" , lambda : None )
172
172
173
173
# https://github.com/agronholm/typeguard/issues/479
174
174
cls .__protocol_attrs__ = getattr (cls , "__protocol_attrs__" , [])
Original file line number Diff line number Diff line change @@ -27,6 +27,37 @@ def test_inheritance_maintained(self):
27
27
28
28
assert base_names == ["DerivedStruct" , "MyFirstStruct" ]
29
29
30
+
31
+ class TestImplementsInterface :
32
+
33
+ def test_jsii_proxy_class_defaults_to_none (self ) -> None :
34
+ @jsii .implements (IBaz )
35
+ class MyBaz :
36
+ pass
37
+
38
+ klass = getattr (MyBaz , "__jsii_proxy_class__" )()
39
+ assert klass == None
40
+
41
+ def test_jsii_proxy_class_preserves_user_defined_attribute (self ) -> None :
42
+
43
+ class _MyBazProxy :
44
+ def baz_method (self ) -> str :
45
+ return "_MyBazProxy"
46
+
47
+ @jsii .implements (IBaz )
48
+ class MyBaz :
49
+
50
+ @staticmethod
51
+ def __jsii_proxy_class__ ():
52
+ return _MyBazProxy
53
+
54
+ def baz_method (self ) -> str :
55
+ return "MyBaz"
56
+
57
+ klass = getattr (MyBaz , "__jsii_proxy_class__" )()
58
+ instance = klass ()
59
+ assert instance .baz_method () == "_MyBazProxy"
60
+
30
61
def test_implements_interface (self ) -> None :
31
62
"""Checks that jsii-generated classes correctly implement the relevant jsii-generated interfaces."""
32
63
You can’t perform that action at this time.
0 commit comments