From febcf37d56a1ef466d77221fbd50d680ebfec559 Mon Sep 17 00:00:00 2001 From: Nicky van Foreest Date: Thu, 30 Jun 2016 18:34:42 +0200 Subject: [PATCH] added timestamps to history --- examples/balance_sheet_debugging.py | 4 ++-- tracker/snapshot.py | 11 ++++++++--- tracker/tracker.py | 5 ++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/examples/balance_sheet_debugging.py b/examples/balance_sheet_debugging.py index a46ef83..cf91ce5 100644 --- a/examples/balance_sheet_debugging.py +++ b/examples/balance_sheet_debugging.py @@ -2,7 +2,7 @@ sheet = BalanceSheet() deposit(sheet, 100) -print sheet.balance +print(sheet.balance) for snapshot in sheet.replay(): - print snapshot + print(snapshot) diff --git a/tracker/snapshot.py b/tracker/snapshot.py index 2c0caa8..b7615d4 100644 --- a/tracker/snapshot.py +++ b/tracker/snapshot.py @@ -1,5 +1,9 @@ +import sys import textwrap -from itertools import izip_longest +if (sys.version_info > (3, 0)): + from itertools import zip_longest as izip_longest +else: + from itertools import izip_longest from .tracker import __file__ as SOURCE_FILE @@ -46,9 +50,10 @@ def __getitem__(self, name): return self.state.__getitem__(name) def __str__(self): - state = repr(self.state) + t = self.state['time'] + state = {k:v for k,v in self.state.items() if k != 'time'} divider = '-' * 80 frames = "\n".join(map(Snapshot.format_frame, self.stack)) - return "\n{state}\n{divider}\n{frames}".format( + return "\n{time} {state}\n{divider}\n{frames}".format(time=t, state=state, divider=divider, frames=frames ) diff --git a/tracker/tracker.py b/tracker/tracker.py index 4361ba9..e5be1df 100644 --- a/tracker/tracker.py +++ b/tracker/tracker.py @@ -1,11 +1,12 @@ from collections import namedtuple import inspect +from datetime import datetime from .snapshot import Snapshot Frame = namedtuple('Frame', ['file', 'line', 'context']) -Step = namedtuple('Step', ['name', 'value', 'stack']) +Step = namedtuple('Step', ['time', 'name', 'value', 'stack']) def tracked(*tracked, **kwargs): code_context = kwargs.pop('code_context', 1) @@ -37,6 +38,7 @@ def __capture_state(self, name, value): ] self._history.append( Step( + time=datetime.now(), name=name, value=value, stack=frames @@ -66,6 +68,7 @@ def replay(self, names=None): for step in self._history: if step.name in names: state[step.name] = step.value + state['time'] = step.time yield Snapshot( state=state, stack=step.stack,