Source code for ipytracer.tracer
# -*- coding: UTF-8 -*-
# Copyright (c) Han Lee.
# Distributed under the terms of the Modified BSD License.
from IPython.core.display import display
from .model import *
from .view import *
import time
[문서]class Tracer(object):
def __init__(self, data):
self.data = data
self.delay = 0.25
self.tracer = TracerView(self.data)
self._observers = []
def __add__(self, other):
self.data += other
self.update_data()
time.sleep(self.delay)
def __getitem__(self, key):
self.tracer.update_visited(key)
time.sleep(self.delay)
return self.data[key]
def __len__(self):
return len(self.data)
def __setitem__(self, key, value):
self.data[key] = value
self.update_data()
self.tracer.update_selected(key)
time.sleep(self.delay)
[문서] def append(self, value):
self.data.append(value)
self.data = list(self.data)
[문서] def extend(self, L):
self.data.extend(L)
self.update_data()
[문서] def insert(self, i, x):
self.data.insert(i, x)
self.update_data()
[문서] def remove(self, x):
self.data.remove(x)
self.update_data()
[문서] def pop(self, i):
self.data.pop(i)
self.update_data()
[문서] def index(self, x):
return self.data.index(x)
[문서] def count(self, x):
return self.data.count(x)
[문서] def sort(self, key=None, reverse=False):
self.data.sort(key=key, reverse=reverse)
self.update_data()
[문서] def reverse(self):
self.data.reverse()
self.update_data()
[문서] def update_data(self):
self.tracer.update_data(self.data)
[문서] def tolist(self):
return self.data
def _ipython_display_(self, **kwargs):
display(self.tracer)
[문서]class ChartTracer(Tracer):
def __init__(self, data):
super(ChartTracer, self).__init__(data)
self.tracer = ChartTracerView(self.data)
[문서]class List1DTracer(Tracer):
def __init__(self, data):
super(List1DTracer, self).__init__(data)
self.tracer = List1DTracerView(self.data)
[문서]class List2DTracer(Tracer):
def __init__(self, data):
super(List2DTracer, self).__init__(data)
self.tracer = List2DTracerView(self.data)
self._set_data()
def _set_data(self):
for i in range(len(self.data)):
if isinstance(self.data[i], list):
self._observers.append(List2D(self.data[i]))
self._observers[i].set_observer(self)
self.data = self._observers
[문서] def update_visited_col(self, index):
self.tracer.update_visited_col(index)
[문서] def update_selected_col(self, index):
self.tracer.update_selected_col(index)
self.update_data()