11# log21.TreePrint.py
22# CodeWriter21
33
4- from typing import Union as _Union
4+ from typing import Union as _Union , Mapping as _Mapping , Sequence as _Sequence
55
66from log21 .Colors import get_colors as _gc
77
@@ -13,8 +13,8 @@ class Node:
1313 'fruit' : _gc ('LightMagenta' ),
1414 }
1515
16- def __init__ (self , value : _Union [str , int ], children : list = None , indent : int = 4 , colors : dict = None ,
17- mode = '-' ):
16+ def __init__ (self , value : _Union [str , int ], children : list = None , indent : int = 4 ,
17+ colors : _Mapping [ str , str ] = None , mode = '-' ):
1818 self .value = str (value )
1919 if children :
2020 self ._children = children
@@ -106,9 +106,9 @@ def get_child(self, value: str = None, index: int = None):
106106 return self ._children [index ]
107107
108108 @staticmethod
109- def add_to (node : 'TreePrint.Node' , data : _Union [dict , list , str , int ], indent : int = 4 , colors : dict = None ,
110- mode = '-' ):
111- if isinstance (data , dict ):
109+ def add_to (node : 'TreePrint.Node' , data : _Union [_Mapping , _Sequence , str , int ], indent : int = 4 ,
110+ colors : _Mapping [ str , str ] = None , mode = '-' ):
111+ if isinstance (data , _Mapping ):
112112 if len (data ) == 1 :
113113 child = TreePrint .Node (list (data .keys ())[0 ], indent = indent , colors = colors , mode = mode )
114114 TreePrint .Node .add_to (child , list (data .values ())[0 ], indent = indent , colors = colors , mode = mode )
@@ -118,14 +118,14 @@ def add_to(node: 'TreePrint.Node', data: _Union[dict, list, str, int], indent: i
118118 child = TreePrint .Node (key , indent = indent , colors = colors , mode = mode )
119119 TreePrint .Node .add_to (child , value , indent = indent , colors = colors , mode = mode )
120120 node .add_child (child )
121- elif isinstance (data , list ):
121+ elif isinstance (data , _Sequence ):
122122 for value in data :
123- if isinstance (value , dict ):
123+ if isinstance (value , _Mapping ):
124124 for key , dict_value in value .items ():
125125 child = TreePrint .Node (key , indent = indent , colors = colors , mode = mode )
126126 TreePrint .Node .add_to (child , dict_value , indent = indent , colors = colors , mode = mode )
127127 node .add_child (child )
128- elif isinstance (value , list ):
128+ elif isinstance (value , _Sequence ):
129129 child = TreePrint .Node ('>' , indent = indent , colors = colors , mode = mode )
130130 TreePrint .Node .add_to (child , value , indent = indent , colors = colors , mode = mode )
131131 node .add_child (child )
@@ -136,23 +136,24 @@ def add_to(node: 'TreePrint.Node', data: _Union[dict, list, str, int], indent: i
136136 child = TreePrint .Node (str (data ), indent = indent , colors = colors , mode = mode )
137137 node .add_child (child )
138138
139- def __init__ (self , data : _Union [dict , list , str , int ], indent : int = 4 , colors : dict = None , mode = '-' ):
139+ def __init__ (self , data : _Union [_Mapping , _Sequence , str , int ], indent : int = 4 ,
140+ colors : _Mapping [str , str ] = None , mode = '-' ):
140141 self .indent = indent
141142 self .mode = mode
142- if isinstance (data , dict ):
143+ if isinstance (data , _Mapping ):
143144 if len (data ) == 1 :
144145 self .root = self .Node (list (data .keys ())[0 ], indent = indent , colors = colors )
145146 self .add_to_root (list (data .values ()), colors = colors )
146147 else :
147148 self .root = self .Node ('root' , indent = indent , colors = colors )
148149 self .add_to_root (data , colors = colors )
149- elif isinstance (data , list ):
150+ elif isinstance (data , _Sequence ):
150151 self .root = self .Node ('root' , indent = indent , colors = colors )
151152 self .add_to_root (data , colors = colors )
152153 else :
153154 self .root = self .Node (str (data ), indent = indent , colors = colors )
154155
155- def add_to_root (self , data : _Union [dict , list , str , int ], colors : dict = None ):
156+ def add_to_root (self , data : _Union [_Mapping , _Sequence , str , int ], colors : _Mapping [ str , str ] = None ):
156157 self .Node .add_to (self .root , data , indent = self .indent , colors = colors , mode = self .mode )
157158
158159 def __str__ (self , mode = None ):
@@ -161,5 +162,6 @@ def __str__(self, mode=None):
161162 return self .root .__str__ (mode = mode )
162163
163164
164- def tree_format (data : _Union [dict , list , str , int ], indent : int = 4 , mode = '-' , colors : dict = None ):
165+ def tree_format (data : _Union [_Mapping , _Sequence , str , int ], indent : int = 4 , mode = '-' ,
166+ colors : _Mapping [str , str ] = None ):
165167 return str (TreePrint (data , indent = indent , colors = colors , mode = mode ))
0 commit comments