File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed
com.oracle.graal.python.test/src/tests/unittest_tags Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change 49
49
*graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_nested
50
50
*graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_pickle
51
51
*graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_recursive
52
+ *graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_recursive_repr
52
53
*graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_repr
53
54
*graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_subclass
54
55
*graalpython.lib-python.3.test.test_types.SimpleNamespaceTests.test_unbound
Original file line number Diff line number Diff line change @@ -75,11 +75,39 @@ def func(self):
75
75
return named_tuple
76
76
77
77
78
+ def recursive_repr (fillfn ):
79
+ def inner (fn ):
80
+ data = None
81
+
82
+ def wrapper (self ):
83
+ nonlocal data
84
+ if data is None :
85
+ # lazy initialization to avoid bootstrap issues
86
+ import threading
87
+ data = threading .local ()
88
+ data .running = set ()
89
+ key = id (self )
90
+ if key in data .running :
91
+ return fillfn (self )
92
+ data .running .add (key )
93
+ try :
94
+ result = fn (self )
95
+ finally :
96
+ data .running .discard (key )
97
+ return result
98
+
99
+ wrapper .__name__ = fn .__name__
100
+ wrapper .__qualname__ = fn .__qualname__
101
+ return wrapper
102
+ return inner
103
+
104
+
78
105
class SimpleNamespace (object ):
79
106
def __init__ (self , ** kwargs ):
80
107
for k , v in kwargs .items ():
81
108
setattr (self , k , v )
82
109
110
+ @recursive_repr (lambda self : "%s(...)" % 'namespace' if type (self ) is SimpleNamespace else type (self ).__name__ )
83
111
def __repr__ (self ):
84
112
sb = []
85
113
for k , v in sorted (self .__dict__ .items ()):
You can’t perform that action at this time.
0 commit comments