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):
133133 for name in schema_members
134134 ], key = lambda x : x [0 ])
135135 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
138145 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 ]))
140147 )
141- for item in items :
148+ for item in sorted_items :
142149 if item [0 ] not in schema_members :
143150 children .append (item )
144151 elif ISequenceNode .providedBy (self ):
Original file line number Diff line number Diff line change 11from node .behaviors import DefaultInit
2+ from node .behaviors import MappingNode
23from node .behaviors import Node
34from node .behaviors import NodeInit
45from node .interfaces import IDefaultInit
@@ -31,6 +32,13 @@ class NodeObject(object):
3132 pass
3233
3334
35+ @plumbing (DefaultInit , Node , MappingNode )
36+ class BrokenMapping (object ):
37+
38+ def __iter__ (self ):
39+ yield 'child'
40+
41+
3442class NoInterface (Interface ):
3543 pass
3644
@@ -98,3 +106,10 @@ def test_Node(self):
98106 node .noderepr ,
99107 "<class 'node.tests.test_node.NodeObject'>: node"
100108 )
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