spiffyscore

Hex Artifact Content
Login

Artifact 29c78902c837093747735116c1dba08bb3157f68:


0000: 69 6d 70 6f 72 74 20 70 64 62 0a 0a 63 6c 61 73  import pdb..clas
0010: 73 20 54 72 65 65 28 29 3a 0a 20 20 20 20 64 65  s Tree():.    de
0020: 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c  f __init__(self,
0030: 20 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20   name):.        
0040: 73 65 6c 66 2e 6e 6f 64 65 73 20 3d 20 5b 5d 0a  self.nodes = [].
0050: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 61 6d          self.nam
0060: 65 20 3d 20 6e 61 6d 65 0a 0a 20 20 20 20 64 65  e = name..    de
0070: 66 20 74 72 61 76 65 72 73 65 5f 64 65 70 74 68  f traverse_depth
0080: 5f 66 69 72 73 74 28 73 65 6c 66 29 3a 0a 20 20  _first(self):.  
0090: 20 20 20 20 20 20 61 6c 6c 5f 6e 6f 64 65 73 20        all_nodes 
00a0: 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 66 6f 72  = [].        for
00b0: 20 6e 6f 64 65 20 69 6e 20 73 65 6c 66 2e 6e 6f   node in self.no
00c0: 64 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20  des:.           
00d0: 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 6e   if isinstance(n
00e0: 6f 64 65 2c 20 4e 6f 64 65 29 3a 0a 20 20 20 20  ode, Node):.    
00f0: 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 5f              all_
0100: 6e 6f 64 65 73 2e 61 70 70 65 6e 64 28 6e 6f 64  nodes.append(nod
0110: 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  e).            e
0120: 6c 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 6e  lif isinstance(n
0130: 6f 64 65 2c 20 54 72 65 65 29 3a 0a 23 20 20 20  ode, Tree):.#   
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 64 62               pdb
0150: 2e 73 65 74 5f 74 72 61 63 65 28 29 0a 20 20 20  .set_trace().   
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c               all
0170: 5f 6e 6f 64 65 73 2e 65 78 74 65 6e 64 28 6e 6f  _nodes.extend(no
0180: 64 65 2e 74 72 61 76 65 72 73 65 5f 64 65 70 74  de.traverse_dept
0190: 68 5f 66 69 72 73 74 28 29 29 0a 20 20 20 20 20  h_first()).     
01a0: 20 20 20 72 65 74 75 72 6e 20 61 6c 6c 5f 6e 6f     return all_no
01b0: 64 65 73 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73  des..    def __s
01c0: 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20  tr__(self):.    
01d0: 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 28 73      return str(s
01e0: 65 6c 66 2e 5f 5f 75 6e 69 63 6f 64 65 5f 5f 28  elf.__unicode__(
01f0: 29 29 0a 20 20 20 20 64 65 66 20 5f 5f 75 6e 69  )).    def __uni
0200: 63 6f 64 65 5f 5f 28 73 65 6c 66 29 3a 0a 20 20  code__(self):.  
0210: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c        return sel
0220: 66 2e 6e 6f 64 65 73 0a 0a 0a 63 6c 61 73 73 20  f.nodes...class 
0230: 4e 6f 64 65 28 29 3a 0a 20 20 20 20 64 65 66 20  Node():.    def 
0240: 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70  __init__(self, p
0250: 61 72 65 6e 74 2c 20 64 61 74 61 29 3a 0a 20 20  arent, data):.  
0260: 20 20 20 20 20 20 73 65 6c 66 2e 70 61 72 65 6e        self.paren
0270: 74 20 3d 20 70 61 72 65 6e 74 0a 20 20 20 20 20  t = parent.     
0280: 20 20 20 73 65 6c 66 2e 64 61 74 61 20 3d 20 64     self.data = d
0290: 61 74 61 0a 0a 20 20 20 20 64 65 66 20 5f 5f 73  ata..    def __s
02a0: 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20  tr__(self):.    
02b0: 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 28 73      return str(s
02c0: 65 6c 66 2e 5f 5f 75 6e 69 63 6f 64 65 5f 5f 28  elf.__unicode__(
02d0: 29 29 0a 20 20 20 20 64 65 66 20 5f 5f 75 6e 69  )).    def __uni
02e0: 63 6f 64 65 5f 5f 28 73 65 6c 66 29 3a 0a 20 20  code__(self):.  
02f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c        return sel
0300: 66 2e 64 61 74 61 0a                             f.data.