[arm/master] Marking GraphPanel attributes as private

commit b764fb7e446677c0b56a2c31e6d83077ed4f7b4c Author: Damian Johnson <atagar@torproject.org> Date: Sat Nov 15 17:29:17 2014 -0800 Marking GraphPanel attributes as private We already had getters and setters for them (since they're customized via the menu), so mostly just renaming. --- arm/graph_panel.py | 141 ++++++++++++++++++++++++++------------------------- arm/menu/actions.py | 2 +- 2 files changed, 73 insertions(+), 70 deletions(-) diff --git a/arm/graph_panel.py b/arm/graph_panel.py index af6751e..60006db 100644 --- a/arm/graph_panel.py +++ b/arm/graph_panel.py @@ -356,23 +356,23 @@ class GraphPanel(panel.Panel): def __init__(self, stdscr): panel.Panel.__init__(self, stdscr, 'graph', 0) - self.current_display = None if CONFIG['features.graph.type'] == 'none' else CONFIG['features.graph.type'] - self.update_interval = CONFIG['features.graph.interval'] - self.bounds = CONFIG['features.graph.bound'] + self._current_display = None if CONFIG['features.graph.type'] == 'none' else CONFIG['features.graph.type'] + self._update_interval = CONFIG['features.graph.interval'] + self._bounds = CONFIG['features.graph.bound'] - self.graph_height = max(1, CONFIG['features.graph.height']) + self._graph_height = max(1, CONFIG['features.graph.height']) self._accounting_stats = None self._last_redraw = 0 - self.stats = { + self._stats = { GraphStat.BANDWIDTH: BandwidthStats(), GraphStat.SYSTEM_RESOURCES: ResourceStats(), } if CONFIG['features.panels.show.connection']: - self.stats[GraphStat.CONNECTIONS] = ConnectionStats() + self._stats[GraphStat.CONNECTIONS] = ConnectionStats() - self.set_pause_attr('stats') + self.set_pause_attr('_stats') self.set_pause_attr('_accounting_stats') # prepopulates bandwidth values from state file @@ -381,14 +381,14 @@ class GraphPanel(panel.Panel): if controller.is_alive() and CONFIG['features.graph.bw.prepopulate']: try: - missing_seconds = self.stats[GraphStat.BANDWIDTH].prepopulate_from_state() + missing_seconds = self._stats[GraphStat.BANDWIDTH].prepopulate_from_state() if missing_seconds: log.notice(msg('panel.graphing.prepopulation_successful', duration = str_tools.time_label(missing_seconds, 0, True))) else: log.notice(msg('panel.graphing.prepopulation_all_successful')) - self.update_interval = Interval.FIFTEEN_MINUTE + self._update_interval = Interval.FIFTEEN_MINUTE except ValueError as exc: log.info(msg('panel.graphing.prepopulation_failure', error = exc)) @@ -396,7 +396,7 @@ class GraphPanel(panel.Panel): controller.add_status_listener(self.reset_listener) def bandwidth_event(self, event): - for stat in self.stats.values(): + for stat in self._stats.values(): stat.bandwidth_event(event) if not CONFIG['features.graph.bw.accounting.show']: @@ -410,7 +410,7 @@ class GraphPanel(panel.Panel): arm.controller.get_controller().redraw() - update_rate = INTERVAL_SECONDS[self.update_interval] + update_rate = INTERVAL_SECONDS[self._update_interval] if time.time() - self._last_redraw > update_rate: self.redraw(True) @@ -423,7 +423,7 @@ class GraphPanel(panel.Panel): Provides the rate that we update the graph at. """ - return self.update_interval + return self._update_interval def set_update_interval(self, update_interval): """ @@ -433,14 +433,14 @@ class GraphPanel(panel.Panel): update_interval - update time enum """ - self.update_interval = update_interval + self._update_interval = update_interval def get_bounds_type(self): """ Provides the type of graph bounds used. """ - return self.bounds + return self._bounds def set_bounds_type(self, bounds_type): """ @@ -450,7 +450,7 @@ class GraphPanel(panel.Panel): bounds_type - graph bounds enum """ - self.bounds = bounds_type + self._bounds = bounds_type def get_height(self): """ @@ -458,12 +458,12 @@ class GraphPanel(panel.Panel): (zero if hidden). """ - if self.current_display: - height = DEFAULT_CONTENT_HEIGHT + self.graph_height + if self._current_display: + height = DEFAULT_CONTENT_HEIGHT + self._graph_height else: height = 0 - if self.current_display == GraphStat.BANDWIDTH and self._accounting_stats: + if self._current_display == GraphStat.BANDWIDTH and self._accounting_stats: height += 3 return height @@ -476,7 +476,7 @@ class GraphPanel(panel.Panel): new_graph_height - new height for the graph """ - self.graph_height = max(1, new_graph_height) + self._graph_height = max(1, new_graph_height) def resize_graph(self): """ @@ -504,9 +504,9 @@ class GraphPanel(panel.Panel): current_height = self.get_height() if current_height < max_height + 1: - self.set_graph_height(self.graph_height + 1) + self.set_graph_height(self._graph_height + 1) elif key.match('up'): - self.set_graph_height(self.graph_height - 1) + self.set_graph_height(self._graph_height - 1) elif key.is_selection(): break @@ -519,12 +519,12 @@ class GraphPanel(panel.Panel): self.resize_graph() elif key.match('b'): # uses the next boundary type - self.bounds = Bounds.next(self.bounds) + self._bounds = Bounds.next(self._bounds) self.redraw(True) elif key.match('s'): # provides a menu to pick the graphed stats - available_stats = self.stats.keys() + available_stats = self._stats.keys() available_stats.sort() # uses sorted, camel cased labels for the options @@ -535,8 +535,8 @@ class GraphPanel(panel.Panel): words = label.split() options.append(' '.join(word[0].upper() + word[1:] for word in words)) - if self.current_display: - initial_selection = available_stats.index(self.current_display) + 1 + if self._current_display: + initial_selection = available_stats.index(self._current_display) + 1 else: initial_selection = 0 @@ -551,10 +551,10 @@ class GraphPanel(panel.Panel): elif key.match('i'): # provides menu to pick graph panel update interval - selection = arm.popups.show_menu('Update Interval:', list(Interval), list(Interval).index(self.update_interval)) + selection = arm.popups.show_menu('Update Interval:', list(Interval), list(Interval).index(self._update_interval)) if selection != -1: - self.update_interval = list(Interval)[selection] + self._update_interval = list(Interval)[selection] else: return False @@ -563,57 +563,57 @@ class GraphPanel(panel.Panel): def get_help(self): return [ ('r', 'resize graph', None), - ('s', 'graphed stats', self.current_display if self.current_display else 'none'), - ('b', 'graph bounds', self.bounds.lower()), - ('i', 'graph update interval', self.update_interval), + ('s', 'graphed stats', self._current_display if self._current_display else 'none'), + ('b', 'graph bounds', self._bounds.lower()), + ('i', 'graph update interval', self._update_interval), ] def draw(self, width, height): - if not self.current_display: + if not self._current_display: return self._last_redraw = time.time() - param = self.get_attr('stats')[self.current_display] + param = self.get_attr('_stats')[self._current_display] graph_column = min((width - 10) / 2, CONFIG['features.graph.max_width']) if self.is_title_visible(): - title = CONFIG['attr.graph.title'].get(self.current_display, '') + title = CONFIG['attr.graph.title'].get(self._current_display, '') title_stats = str_tools.join(param.title_stats, ', ', width - len(title) - 4) title = '%s (%s):' % (title, title_stats) if title_stats else '%s:' % title self.addstr(0, 0, title, curses.A_STANDOUT) # top labels - primary_header = CONFIG['attr.graph.header.primary'].get(self.current_display, '') + primary_header = CONFIG['attr.graph.header.primary'].get(self._current_display, '') primary_header_stats = str_tools.join(param.primary_header_stats, '', (width / 2) - len(primary_header) - 4) left = '%s (%s):' % (primary_header, primary_header_stats) if primary_header_stats else '%s:' % primary_header self.addstr(1, 0, left, curses.A_BOLD, PRIMARY_COLOR) - secondary_header = CONFIG['attr.graph.header.secondary'].get(self.current_display, '') + secondary_header = CONFIG['attr.graph.header.secondary'].get(self._current_display, '') secondary_header_stats = str_tools.join(param.secondary_header_stats, '', (width / 2) - len(secondary_header) - 4) right = '%s (%s):' % (secondary_header, secondary_header_stats) if secondary_header_stats else '%s:' % secondary_header self.addstr(1, graph_column + 5, right, curses.A_BOLD, SECONDARY_COLOR) # determines max/min value on the graph - if self.bounds == Bounds.GLOBAL_MAX: - primary_max_bound = param.primary.max_value[self.update_interval] - secondary_max_bound = param.secondary.max_value[self.update_interval] + if self._bounds == Bounds.GLOBAL_MAX: + primary_max_bound = param.primary.max_value[self._update_interval] + secondary_max_bound = param.secondary.max_value[self._update_interval] else: # both Bounds.LOCAL_MAX and Bounds.TIGHT use local maxima if graph_column < 2: # nothing being displayed primary_max_bound, secondary_max_bound = 0, 0 else: - primary_max_bound = max(param.primary.values[self.update_interval][:graph_column]) - secondary_max_bound = max(param.secondary.values[self.update_interval][:graph_column]) + primary_max_bound = max(param.primary.values[self._update_interval][:graph_column]) + secondary_max_bound = max(param.secondary.values[self._update_interval][:graph_column]) primary_min_bound = secondary_min_bound = 0 - if self.bounds == Bounds.TIGHT: - primary_min_bound = min(param.primary.values[self.update_interval][:graph_column]) - secondary_min_bound = min(param.secondary.values[self.update_interval][:graph_column]) + if self._bounds == Bounds.TIGHT: + primary_min_bound = min(param.primary.values[self._update_interval][:graph_column]) + secondary_min_bound = min(param.secondary.values[self._update_interval][:graph_column]) # if the max = min (ie, all values are the same) then use zero lower # bound so a graph is still displayed @@ -627,30 +627,30 @@ class GraphPanel(panel.Panel): # displays upper and lower bounds self.addstr(2, 0, param.y_axis_label(primary_max_bound, True), PRIMARY_COLOR) - self.addstr(self.graph_height + 1, 0, param.y_axis_label(primary_min_bound, True), PRIMARY_COLOR) + self.addstr(self._graph_height + 1, 0, param.y_axis_label(primary_min_bound, True), PRIMARY_COLOR) self.addstr(2, graph_column + 5, param.y_axis_label(secondary_max_bound, False), SECONDARY_COLOR) - self.addstr(self.graph_height + 1, graph_column + 5, param.y_axis_label(secondary_min_bound, False), SECONDARY_COLOR) + self.addstr(self._graph_height + 1, graph_column + 5, param.y_axis_label(secondary_min_bound, False), SECONDARY_COLOR) # displays intermediate bounds on every other row if CONFIG['features.graph.showIntermediateBounds']: - ticks = (self.graph_height - 3) / 2 + ticks = (self._graph_height - 3) / 2 for i in range(ticks): - row = self.graph_height - (2 * i) - 3 + row = self._graph_height - (2 * i) - 3 - if self.graph_height % 2 == 0 and i >= (ticks / 2): + if self._graph_height % 2 == 0 and i >= (ticks / 2): row -= 1 if primary_min_bound != primary_max_bound: - primary_val = (primary_max_bound - primary_min_bound) * (self.graph_height - row - 1) / (self.graph_height - 1) + primary_val = (primary_max_bound - primary_min_bound) * (self._graph_height - row - 1) / (self._graph_height - 1) if primary_val not in (primary_min_bound, primary_max_bound): self.addstr(row + 2, 0, param.y_axis_label(primary_val, True), PRIMARY_COLOR) if secondary_min_bound != secondary_max_bound: - secondary_val = (secondary_max_bound - secondary_min_bound) * (self.graph_height - row - 1) / (self.graph_height - 1) + secondary_val = (secondary_max_bound - secondary_min_bound) * (self._graph_height - row - 1) / (self._graph_height - 1) if secondary_val not in (secondary_min_bound, secondary_max_bound): self.addstr(row + 2, graph_column + 5, param.y_axis_label(secondary_val, False), SECONDARY_COLOR) @@ -658,21 +658,21 @@ class GraphPanel(panel.Panel): # creates bar graph (both primary and secondary) for col in range(graph_column): - column_count = int(param.primary.values[self.update_interval][col]) - primary_min_bound - column_height = int(min(self.graph_height, self.graph_height * column_count / (max(1, primary_max_bound) - primary_min_bound))) + column_count = int(param.primary.values[self._update_interval][col]) - primary_min_bound + column_height = int(min(self._graph_height, self._graph_height * column_count / (max(1, primary_max_bound) - primary_min_bound))) for row in range(column_height): - self.addstr(self.graph_height + 1 - row, col + 5, ' ', curses.A_STANDOUT, PRIMARY_COLOR) + self.addstr(self._graph_height + 1 - row, col + 5, ' ', curses.A_STANDOUT, PRIMARY_COLOR) - column_count = int(param.secondary.values[self.update_interval][col]) - secondary_min_bound - column_height = int(min(self.graph_height, self.graph_height * column_count / (max(1, secondary_max_bound) - secondary_min_bound))) + column_count = int(param.secondary.values[self._update_interval][col]) - secondary_min_bound + column_height = int(min(self._graph_height, self._graph_height * column_count / (max(1, secondary_max_bound) - secondary_min_bound))) for row in range(column_height): - self.addstr(self.graph_height + 1 - row, col + graph_column + 10, ' ', curses.A_STANDOUT, SECONDARY_COLOR) + self.addstr(self._graph_height + 1 - row, col + graph_column + 10, ' ', curses.A_STANDOUT, SECONDARY_COLOR) # bottom labeling of x-axis - interval_sec = INTERVAL_SECONDS[self.update_interval] + interval_sec = INTERVAL_SECONDS[self._update_interval] interval_spacing = 10 if graph_column >= WIDE_LABELING_GRAPH_COL else 5 units_label, decimal_precision = None, 0 @@ -691,14 +691,14 @@ class GraphPanel(panel.Panel): # if constrained on space then strips labeling since already provided time_label = time_label[:-1] - self.addstr(self.graph_height + 2, 4 + loc, time_label, PRIMARY_COLOR) - self.addstr(self.graph_height + 2, graph_column + 10 + loc, time_label, SECONDARY_COLOR) + self.addstr(self._graph_height + 2, 4 + loc, time_label, PRIMARY_COLOR) + self.addstr(self._graph_height + 2, graph_column + 10 + loc, time_label, SECONDARY_COLOR) # if display is narrow, overwrites x-axis labels with avg / total stats - labeling_line = DEFAULT_CONTENT_HEIGHT + self.graph_height - 2 + labeling_line = DEFAULT_CONTENT_HEIGHT + self._graph_height - 2 - if self.current_display == GraphStat.BANDWIDTH and width <= COLLAPSE_WIDTH: + if self._current_display == GraphStat.BANDWIDTH and width <= COLLAPSE_WIDTH: # clears line self.addstr(labeling_line, 0, ' ' * width) @@ -715,7 +715,7 @@ class GraphPanel(panel.Panel): accounting_stats = self.get_attr('_accounting_stats') - if self.current_display == GraphStat.BANDWIDTH and accounting_stats: + if self._current_display == GraphStat.BANDWIDTH and accounting_stats: if tor_controller().is_alive(): hibernate_color = CONFIG['attr.hibernate_color'].get(accounting_stats.status, 'red') @@ -737,23 +737,26 @@ class GraphPanel(panel.Panel): Provides the currently selected stats label. """ - return self.current_display + return self._current_display def set_stats(self, label): """ Sets the currently displayed stats instance, hiding panel if None. """ - if label != self.current_display: + if label != self._current_display: if not label: - self.current_display = None - elif label in self.stats.keys(): - self.current_display = label + self._current_display = None + elif label in self._stats.keys(): + self._current_display = label else: raise ValueError('Unrecognized stats label: %s' % label) + def get_all_stats(self): + return self._stats + def copy_attr(self, attr): - if attr == 'stats': - return dict([(key, type(self.stats[key])(self.stats[key])) for key in self.stats]) + if attr == '_stats': + return dict([(key, type(self._stats[key])(self._stats[key])) for key in self._stats]) else: return panel.Panel.copy_attr(self, attr) diff --git a/arm/menu/actions.py b/arm/menu/actions.py index 3f70e66..5608d6b 100644 --- a/arm/menu/actions.py +++ b/arm/menu/actions.py @@ -150,7 +150,7 @@ def make_graph_menu(graph_panel): # stats options stat_group = arm.menu.item.SelectionGroup(graph_panel.set_stats, graph_panel.get_stats()) - available_stats = graph_panel.stats.keys() + available_stats = graph_panel.get_all_stats().keys() available_stats.sort() for stat_key in ["None"] + available_stats:
participants (1)
-
atagar@torproject.org