File tree Expand file tree Collapse file tree 2 files changed +26
-4
lines changed Expand file tree Collapse file tree 2 files changed +26
-4
lines changed Original file line number Diff line number Diff line change @@ -133,12 +133,19 @@ def collect_schema_members(cls):
133
133
for name in schema_members
134
134
], key = lambda x : x [0 ])
135
135
if IMappingNode .providedBy (self ):
136
- items = (
137
- self .items ()
136
+ items = list ()
137
+ for key in self :
138
+ try :
139
+ value = self [key ]
140
+ except Exception as e :
141
+ value = repr (e )
142
+ items .append ((key , value ))
143
+ sorted_items = (
144
+ items
138
145
if IOrdered .providedBy (self )
139
- else sorted (self . items () , key = lambda x : safe_decode (x [0 ]))
146
+ else sorted (items , key = lambda x : safe_decode (x [0 ]))
140
147
)
141
- for item in items :
148
+ for item in sorted_items :
142
149
if item [0 ] not in schema_members :
143
150
children .append (item )
144
151
elif ISequenceNode .providedBy (self ):
Original file line number Diff line number Diff line change 1
1
from node .behaviors import DefaultInit
2
+ from node .behaviors import MappingNode
2
3
from node .behaviors import Node
3
4
from node .behaviors import NodeInit
4
5
from node .interfaces import IDefaultInit
@@ -31,6 +32,13 @@ class NodeObject(object):
31
32
pass
32
33
33
34
35
+ @plumbing (DefaultInit , Node , MappingNode )
36
+ class BrokenMapping (object ):
37
+
38
+ def __iter__ (self ):
39
+ yield 'child'
40
+
41
+
34
42
class NoInterface (Interface ):
35
43
pass
36
44
@@ -98,3 +106,10 @@ def test_Node(self):
98
106
node .noderepr ,
99
107
"<class 'node.tests.test_node.NodeObject'>: node"
100
108
)
109
+
110
+ # treerepr
111
+ broken = BrokenMapping (name = 'broken' )
112
+ self .checkOutput ("""
113
+ <class 'node.tests.test_node.BrokenMapping'>: broken
114
+ __child: 'NotImplementedError()'
115
+ """ , broken .treerepr (prefix = '_' ))
You can’t perform that action at this time.
0 commit comments