@@ -15,6 +15,7 @@ class Elememt:
1515 def __init__ (self , name ,initial_value ,max_value = None ,display_name = "normal" ,value_display_mode = 0 ,separator = ":" ,f = None ):
1616 self .name = name
1717 self .value = initial_value
18+ self .initial_value = initial_value
1819 self .value_display_mode = value_display_mode
1920 self .max_value = max_value
2021 self .display_name = display_name
@@ -49,20 +50,28 @@ def get_element(self):
4950 element += self .name + " "
5051 if self .display_name == "hide" :
5152 pass
52-
53- return element
53+
54+ return element
55+ def reset (self ):
56+ self .value = self .initial_value
5457
5558 #Class Bar
5659 class Bar :
57- def __init__ (self ,max_value = None ,bar_len = 20 , bar_marker = "=" , bar_pointer = ">" ):
58- self . max_value = max_value
60+ def __init__ (self , max_value = None , bar_len = 25 , fill = "=" , pointer = ">" ):
61+ #Bar properties
5962 self .val = 0
63+ self .max_value = max_value
6064 self .bar_len = bar_len
61- self .bar_marker = bar_marker
62- if len (bar_pointer ) == 1 :
63- self .bar_pointer = bar_pointer
65+
66+ # style properties
67+ self .fill = fill
68+ self .empty_fill = ' '
69+ self .prefix = '['
70+ self .postfix = ']'
71+ if len (pointer ) == 1 :
72+ self .pointer = pointer
6473 else :
65- self .bar_pointer = " "
74+ self .pointer = ""
6675
6776 def __call__ (self ,value = None ):
6877 if value != None :
@@ -73,12 +82,34 @@ def update_bar(self,val):
7382 persent = int ((val * 100 ) / self .max_value )
7483 bar_unit = 100 / self .bar_len
7584
76- num_marker = int (persent / bar_unit )
85+ num_fill = int (persent / bar_unit )
7786
78- bar = self .bar_marker * num_marker + \
79- self .bar_pointer + \
80- " " * (self .bar_len - num_marker - 1 )
81- return "[" + bar [:self .bar_len ]+ "]"
87+ bar = self .fill * num_fill + \
88+ self .pointer + \
89+ self .empty_fill * (self .bar_len - num_fill - len (self .pointer ))
90+ return self .prefix + bar [:self .bar_len ] + self .postfix
91+
92+ def reset (self ):
93+ pass
94+
95+ #Fill Bar class
96+ class FillBar (Bar ):
97+ def __init__ (self , mode = None , max_value = None , bar_len = 25 ):
98+ super ().__init__ (max_value = max_value , bar_len = bar_len , pointer = "" )
99+ self .prefix = ''
100+ self .postfix = ''
101+
102+ if mode == "c" or mode == "circle" or mode == 0 :
103+ self .empty_fill = '○'
104+ self .fill = '●'
105+ if mode == "s" or mode == "square" or mode == 1 :
106+ self .empty_fill = '□'
107+ self .fill = '■'
108+ if mode == None or mode == 'n' or mode == "Normal" or mode == 2 :
109+ self .empty_fill = '●'
110+ self .fill = '█'
111+ self .prefix = '|'
112+ self .postfix = '|'
82113
83114 class ProgressTime :
84115 def __init__ (self , postfix = "" ):
@@ -88,17 +119,14 @@ def __init__(self, postfix=""):
88119 def __call__ (self ):
89120 return self .calculate_elapsed_time ()
90121
91- def initialize (self ):
92- self .start_time = time .time ()
93-
94122 def calculate_elapsed_time (self ):
95123 elapsed_time = time .time () - self .start_time
96124 if elapsed_time < 1 :
97125 elapsed_time = elapsed_time * 1000
98126
99127 if elapsed_time < 1 :
100128 elapsed_time = (elapsed_time * 1000 )// 1
101- return str (int (elapsed_time ))+ "um " + self .postfix
129+ return str (int (elapsed_time ))+ "us " + self .postfix
102130 else :
103131 return str (int (elapsed_time ))+ "ms" + self .postfix
104132 else :
@@ -107,6 +135,9 @@ def calculate_elapsed_time(self):
107135 def get_element (self ):
108136 element = " {} "
109137 return element
138+
139+ def reset (self ):
140+ self .start_time = time .time ()
110141
111142
112143 def __init__ (self , max_val , desc = "Step" , mode = "no-bar" ):
@@ -128,7 +159,7 @@ def initialize(self):
128159 self .history = []
129160 self .max_string_len = 0
130161 if self .progress_time != None :
131- self .progress_time .initialize ()
162+ self .progress_time .reset ()
132163
133164 def add (self ,element ):
134165 if element == None :
@@ -151,7 +182,7 @@ def add(self,element):
151182 self .elements .append (element )
152183 return
153184
154- if type (element ) == Progress .Bar :
185+ if type (element ) == Progress .Bar or type ( element ) == Progress . FillBar :
155186 self .add_postfix = True
156187 element .max_value = self .max_val
157188 self .bar = element
@@ -178,8 +209,6 @@ def update(self,step = 1):
178209 self .val += step
179210 if self .val > self .max_val :
180211 self .val = 1
181- if self .progress_time != None :
182- self .progress_time .initialize ()
183212 self .output ()
184213
185214 def output (self ):
@@ -206,11 +235,17 @@ def set_cursor_position(self):
206235 bar = ""
207236 if self .bar_mode :
208237 bar = "{}"
238+ self .bar (self .val )
239+
240+ # saving history of progress
209241 out = self .prefix + bar + self .postfix
210-
211- self .bar (self .val )
212242 history = out .format (* [ e () for e in self .elements ])
213243 self .history .append (history )
214-
215- print ("\r " + history )
244+
245+ # reset progress bar
246+ for e in self .elements :
247+ e .reset ()
248+
249+ #line Change
250+ print ()
216251 self .max_string_len = 0
0 commit comments