Skip to content

Commit c0b986c

Browse files
BlendingJakeJacob Morris
authored andcommitted
keyword support for evaluate(), reordered automatic split messages, made evaluate() directly call function because more efficient
1 parent 91661e7 commit c0b986c

1 file changed

Lines changed: 17 additions & 23 deletions

File tree

pytimer.py

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ def _parse_kwargs_reps_iter(self, kwargs: dict, rep_default: int, iter_default:
166166
self._write("Reps cannot be less than 1\n")
167167
else:
168168
self._write("Reps must be an integer value\n")
169+
del kwargs['reps']
169170

170171
iterations = iter_default
171172
if 'iterations' in kwargs:
@@ -175,6 +176,7 @@ def _parse_kwargs_reps_iter(self, kwargs: dict, rep_default: int, iter_default:
175176
self._write("Iterations cannot be less than 1\n")
176177
else:
177178
self._write("Iterations must be an integer value\n")
179+
del kwargs['iterations']
178180

179181
return reps, iterations
180182

@@ -246,7 +248,7 @@ def wrapper(*args, **kwargs):
246248
for j in range(self._decorator_reps):
247249
val = function(*args, **kwargs)
248250
self.log()
249-
self.split("Function -> " + function.__name__)
251+
self.split("{} : Decorator ({} reps)".format(function.__name__, self._decorator_reps))
250252

251253
return val # make sure value gets returned
252254
else:
@@ -377,42 +379,34 @@ def evaluate(self, block, *args, **kwargs):
377379
self.pause()
378380

379381
reps, iterations = self._parse_kwargs_reps_iter(kwargs, 10, 10)
380-
381-
# build string with function and needed variables
382-
string = ""
383382
split_message = kwargs['message'] if 'message' in kwargs else ""
384383

385384
if callable(block):
386385
if not split_message: # if no message was passed in
387-
split_message = "Function -> {}".format(block.__name__)
388-
389-
string_builder = ["block("]
390-
for i in range(len(args)):
391-
string_builder.append("args[")
392-
string_builder.append(str(i))
393-
string_builder.append("]")
394-
395-
if i != len(args) - 1:
396-
string_builder.append(", ")
397-
string_builder.append(")")
398-
string = "".join(string_builder)
386+
split_message = "{} : Evaluate Function ({} reps)".format(block.__name__, reps)
387+
388+
self.resume()
389+
for i in range(iterations):
390+
for j in range(reps):
391+
block(*args, **kwargs)
392+
self.log()
393+
self.split(message=split_message)
399394
elif isinstance(block, str):
400395
if not split_message: # if not message was passed in
401396
if len(block) > 50: # shorten string if really long
402-
split_message = "String Block -> '{}'...".format(block[0:50])
397+
split_message = "'{}'... : Evaluate String ({} reps)".format(block[0:50], reps)
403398
else:
404-
split_message = "String Block -> '{}'".format(block)
405-
406-
string = block
399+
split_message = "'{}' : Evaluate String ({} reps)".format(block, reps)
407400

408-
if string != "":
409401
self.resume()
410-
411402
for i in range(iterations):
412403
for j in range(reps):
413-
exec(string)
404+
exec(block)
414405
self.log()
415406
self.split(message=split_message)
407+
else:
408+
self.resume()
409+
self._write("Block is not callable or str\n")
416410

417411
def log(self, message=""):
418412
"""

0 commit comments

Comments
 (0)