Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions examples/balance_sheet_debugging.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

sheet = BalanceSheet()
deposit(sheet, 100)
print sheet.balance
print(sheet.balance)

for snapshot in sheet.replay():
print snapshot
print(snapshot)
11 changes: 8 additions & 3 deletions tracker/snapshot.py
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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
)
5 changes: 4 additions & 1 deletion tracker/tracker.py
Original file line number Diff line number Diff line change
@@ -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)
Expand Down Expand Up @@ -37,6 +38,7 @@ def __capture_state(self, name, value):
]
self._history.append(
Step(
time=datetime.now(),
name=name,
value=value,
stack=frames
Expand Down Expand Up @@ -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,
Expand Down