Convert all python code to use four-space indents instead of eight-space tabs.

Signed-off-by: John Admanski <[email protected]>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@1658 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/tko/display.py b/tko/display.py
index ccf1923..f233fb8 100755
--- a/tko/display.py
+++ b/tko/display.py
@@ -2,23 +2,23 @@
 import frontend, reason_qualifier
 
 color_map = {
-	'header'        : '#e5e5c0', # greyish yellow
-	'blank'         : '#ffffff', # white
-	'plain_text'    : '#e5e5c0', # greyish yellow
-	'borders'       : '#bbbbbb', # grey
-	'white'		: '#ffffff', # white
-	'green'		: '#66ff66', # green
-	'yellow'	: '#fffc00', # yellow
-	'red'		: '#ff6666', # red
+        'header'        : '#e5e5c0', # greyish yellow
+        'blank'         : '#ffffff', # white
+        'plain_text'    : '#e5e5c0', # greyish yellow
+        'borders'       : '#bbbbbb', # grey
+        'white'         : '#ffffff', # white
+        'green'         : '#66ff66', # green
+        'yellow'        : '#fffc00', # yellow
+        'red'           : '#ff6666', # red
 
-	#### additional keys for shaded color of a box 
-	#### depending on stats of GOOD/FAIL
-	'100pct'  : '#32CD32', # green, 94% to 100% of success
-	'95pct'   : '#c0ff80', # step twrds yellow, 88% to 94% of success
-	'90pct'   : '#ffff00', # yellow, 82% to 88%
-	'85pct'   : '#ffc040', # 76% to 82%
-	'75pct'   : '#ff4040', # red, 1% to 76%
-	'0pct'    : '#d080d0', # violet, <1% of success	
+        #### additional keys for shaded color of a box
+        #### depending on stats of GOOD/FAIL
+        '100pct'  : '#32CD32', # green, 94% to 100% of success
+        '95pct'   : '#c0ff80', # step twrds yellow, 88% to 94% of success
+        '90pct'   : '#ffff00', # yellow, 82% to 88%
+        '85pct'   : '#ffc040', # 76% to 82%
+        '75pct'   : '#ff4040', # red, 1% to 76%
+        '0pct'    : '#d080d0', # violet, <1% of success
 
 }
 
@@ -26,316 +26,315 @@
 
 
 def set_brief_mode():
-	global _brief_mode
-	_brief_mode = True
+    global _brief_mode
+    _brief_mode = True
 
 
 def is_brief_mode():
-	return _brief_mode
+    return _brief_mode
 
 
 def color_keys_row():
-	""" Returns one row table with samples of 'NNpct' colors
-		defined in the color_map
-		and numbers of corresponding %%
-	"""
-	### This function does not require maintenance in case of
-	### color_map augmenting - as long as 
-	### color keys for box shading have names that end with 'pct'
-	keys = filter(lambda key: key.endswith('pct'), color_map.keys())
-	def num_pct(key):
-		return int(key.replace('pct',''))
-	keys.sort(key=num_pct)
-	html = ''
-	for key in keys:
-		html+= "\t\t\t<td bgcolor =%s>&nbsp;&nbsp;&nbsp;</td>\n"\
-				% color_map[key]
-		hint = key.replace('pct',' %')
-		if hint[0]<>'0': ## anything but 0 %
-			hint = 'to ' + hint
-		html+= "\t\t\t<td> %s </td>\n" % hint
+    """ Returns one row table with samples of 'NNpct' colors
+            defined in the color_map
+            and numbers of corresponding %%
+    """
+    ### This function does not require maintenance in case of
+    ### color_map augmenting - as long as
+    ### color keys for box shading have names that end with 'pct'
+    keys = filter(lambda key: key.endswith('pct'), color_map.keys())
+    def num_pct(key):
+        return int(key.replace('pct',''))
+    keys.sort(key=num_pct)
+    html = ''
+    for key in keys:
+        html+= "\t\t\t<td bgcolor =%s>&nbsp;&nbsp;&nbsp;</td>\n"\
+                        % color_map[key]
+        hint = key.replace('pct',' %')
+        if hint[0]<>'0': ## anything but 0 %
+            hint = 'to ' + hint
+        html+= "\t\t\t<td> %s </td>\n" % hint
 
-	html = """
+    html = """
 <table width = "500" border="0" cellpadding="2" cellspacing="2">\n
-	<tbody>\n
-		<tr>\n
+    <tbody>\n
+            <tr>\n
 %s
-		</tr>\n
-	</tbody>
+            </tr>\n
+    </tbody>
 </table><br>
 """ % html
-	return html
+    return html
 
 
 def calculate_html(link, data, tooltip=None, row_label=None, column_label=None):
-	if not is_brief_mode():
-		hover_text = '%s:%s' % (row_label, column_label)
-		if data:  ## cell is not empty
-			hover_text += '<br>%s' % tooltip
-		else:
-			## avoid "None" printed in empty cells
-			data = '&nbsp;'
-		html = ('<center><a class="info" href="%s">'
-			'%s<span>%s</span></a></center>' %
-			(link, data, hover_text))
-		return html
-	# no hover if embedded into AFE but links shall redirect to new window
-	if data: ## cell is non empty
-		html =  '<a href="%s" target=NEW>%s</a>' % (link, data)
-		return html
-	else: ## cell is empty
-		return '&nbsp;'
+    if not is_brief_mode():
+        hover_text = '%s:%s' % (row_label, column_label)
+        if data:  ## cell is not empty
+            hover_text += '<br>%s' % tooltip
+        else:
+            ## avoid "None" printed in empty cells
+            data = '&nbsp;'
+        html = ('<center><a class="info" href="%s">'
+                '%s<span>%s</span></a></center>' %
+                (link, data, hover_text))
+        return html
+    # no hover if embedded into AFE but links shall redirect to new window
+    if data: ## cell is non empty
+        html =  '<a href="%s" target=NEW>%s</a>' % (link, data)
+        return html
+    else: ## cell is empty
+        return '&nbsp;'
 
 
 class box:
-	def __init__(self, data, color_key = None, header = False, link = None,
-		     tooltip = None, row_label = None, column_label = None):
-		
-		## in brief mode we display grid table only and nothing more
-		## - mouse hovering feature is stubbed in brief mode
-		## - any link opens new window or tab
+    def __init__(self, data, color_key = None, header = False, link = None,
+                 tooltip = None, row_label = None, column_label = None):
 
-		redirect = ""
-		if is_brief_mode():
-			## we are acting under AFE
-			## any link shall open new window
-			redirect = " target=NEW"
-			
-		if data:
-			data = "<tt>%s</tt>" % data
-		
-		if link and not tooltip:
-			## FlipAxis corner, column and row headers
-			self.data = ('<a href="%s"%s>%s</a>' %
-				     (link, redirect, data))
-		else:
-			self.data = calculate_html(link, data, tooltip,
-						   row_label, column_label)
+        ## in brief mode we display grid table only and nothing more
+        ## - mouse hovering feature is stubbed in brief mode
+        ## - any link opens new window or tab
 
-		if color_map.has_key(color_key):
-			self.color = color_map[color_key]
-		elif header:
-			self.color = color_map['header']
-		elif data:
-			self.color = color_map['plain_text']
-		else:
-			self.color = color_map['blank']
-		self.header = header
+        redirect = ""
+        if is_brief_mode():
+            ## we are acting under AFE
+            ## any link shall open new window
+            redirect = " target=NEW"
+
+        if data:
+            data = "<tt>%s</tt>" % data
+
+        if link and not tooltip:
+            ## FlipAxis corner, column and row headers
+            self.data = ('<a href="%s"%s>%s</a>' %
+                         (link, redirect, data))
+        else:
+            self.data = calculate_html(link, data, tooltip,
+                                       row_label, column_label)
+
+        if color_map.has_key(color_key):
+            self.color = color_map[color_key]
+        elif header:
+            self.color = color_map['header']
+        elif data:
+            self.color = color_map['plain_text']
+        else:
+            self.color = color_map['blank']
+        self.header = header
 
 
-	def html(self):
-		if self.data:
-			data = self.data
-		else:
-			data = '&nbsp'
+    def html(self):
+        if self.data:
+            data = self.data
+        else:
+            data = '&nbsp'
 
-		if self.header:
-			box_html = 'th'
-		else:
-			box_html = 'td'
+        if self.header:
+            box_html = 'th'
+        else:
+            box_html = 'td'
 
-		return "<%s bgcolor=%s>%s</%s>" % \
-					(box_html, self.color, data, box_html)
+        return "<%s bgcolor=%s>%s</%s>" % \
+                                (box_html, self.color, data, box_html)
 
 
 def grade_from_status(status):
-	# % of goodness
-	# GOOD (6)  -> 1
-	# TEST_NA (8) is not counted
-	# ##  If the test doesn't PASS, it FAILS
-	# else -> 0
+    # % of goodness
+    # GOOD (6)  -> 1
+    # TEST_NA (8) is not counted
+    # ##  If the test doesn't PASS, it FAILS
+    # else -> 0
 
-	if status == 6:
-		return 1.0
-	else:
-		return 0.0
+    if status == 6:
+        return 1.0
+    else:
+        return 0.0
 
 
 def average_grade_from_status_count(status_count):
-	average_grade = 0
-	total_count = 0
-	for key in status_count.keys():
-		if key != 8: # TEST_NA status
-			average_grade += (grade_from_status(key)
-						* status_count[key])
-			total_count += status_count[key]
-	if total_count != 0:
-		average_grade = average_grade / total_count
-	else:
-		average_grade = 0.0
-	return average_grade
+    average_grade = 0
+    total_count = 0
+    for key in status_count.keys():
+        if key != 8: # TEST_NA status
+            average_grade += (grade_from_status(key)
+                                    * status_count[key])
+            total_count += status_count[key]
+    if total_count != 0:
+        average_grade = average_grade / total_count
+    else:
+        average_grade = 0.0
+    return average_grade
 
 
 def shade_from_status_count(status_count):
-	if not status_count:
-		return None
-	
-	## average_grade defines a shade of the box
-	## 0 -> violet
-	## 0.76 -> red
-	## 0.88-> yellow
-	## 1.0 -> green	
-	average_grade = average_grade_from_status_count(status_count)
-	
-	## find appropiate keyword from color_map
-	if average_grade<0.01:
-		shade = '0pct'
-	elif average_grade<0.75:
-		shade = '75pct'
-	elif average_grade<0.85:
-		shade = '85pct'
-	elif average_grade<0.90:
-		shade = '90pct'
-	elif average_grade<0.95:
-		shade = '95pct'
-	else:
-		shade = '100pct'
-		
-	return shade
+    if not status_count:
+        return None
+
+    ## average_grade defines a shade of the box
+    ## 0 -> violet
+    ## 0.76 -> red
+    ## 0.88-> yellow
+    ## 1.0 -> green
+    average_grade = average_grade_from_status_count(status_count)
+
+    ## find appropiate keyword from color_map
+    if average_grade<0.01:
+        shade = '0pct'
+    elif average_grade<0.75:
+        shade = '75pct'
+    elif average_grade<0.85:
+        shade = '85pct'
+    elif average_grade<0.90:
+        shade = '90pct'
+    elif average_grade<0.95:
+        shade = '95pct'
+    else:
+        shade = '100pct'
+
+    return shade
 
 
 def status_html(db, box_data, shade):
-	"""
-	status_count: dict mapping from status (integer key) to count
-	eg. { 'GOOD' : 4, 'FAIL' : 1 }
-	"""
-	status_count = box_data.status_count
-	if 6 in status_count.keys():
-		html = "%d&nbsp;/&nbsp;%d " \
-			%(status_count[6],sum(status_count.values()))
-	else:
-		html = "%d&nbsp;/&nbsp;%d " % \
-			(0, sum(status_count.values()))
+    """
+    status_count: dict mapping from status (integer key) to count
+    eg. { 'GOOD' : 4, 'FAIL' : 1 }
+    """
+    status_count = box_data.status_count
+    if 6 in status_count.keys():
+        html = "%d&nbsp;/&nbsp;%d " \
+                %(status_count[6],sum(status_count.values()))
+    else:
+        html = "%d&nbsp;/&nbsp;%d " % \
+                (0, sum(status_count.values()))
 
-	if box_data.reasons_list:
-		reasons_list = box_data.reasons_list
-		aggregated_reasons_list = \
-			reason_qualifier.aggregate_reason_fields(reasons_list)
-		for reason in aggregated_reasons_list:
-			## a bit of more postprocessing
-			## to look nicer in a cell
-			## in future: to do subtable within the cell
-			reason = reason.replace('<br>','\n')
-			reason = reason.replace('<','[').replace('>',']')
-			reason = reason.replace('|','\n').replace('&',' AND ')
-			reason = reason.replace('\n','<br>')
-			html += '<br>' + reason
+    if box_data.reasons_list:
+        reasons_list = box_data.reasons_list
+        aggregated_reasons_list = \
+                reason_qualifier.aggregate_reason_fields(reasons_list)
+        for reason in aggregated_reasons_list:
+            ## a bit of more postprocessing
+            ## to look nicer in a cell
+            ## in future: to do subtable within the cell
+            reason = reason.replace('<br>','\n')
+            reason = reason.replace('<','[').replace('>',']')
+            reason = reason.replace('|','\n').replace('&',' AND ')
+            reason = reason.replace('\n','<br>')
+            html += '<br>' + reason
 
-	tooltip = ""
-	for status in sorted(status_count.keys(), reverse = True):
-		status_word = db.status_word[status]
-		tooltip += "%d %s " % (status_count[status], status_word)
-	return (html,tooltip)
+    tooltip = ""
+    for status in sorted(status_count.keys(), reverse = True):
+        status_word = db.status_word[status]
+        tooltip += "%d %s " % (status_count[status], status_word)
+    return (html,tooltip)
 
 
 def status_count_box(db, tests, link = None):
-	"""
-	Display a ratio of total number of GOOD tests
-	to total number of all tests in the group of tests.
-	More info (e.g. 10 GOOD, 2 WARN, 3 FAIL) is in tooltips
-	"""
-	if not tests:
-		return box(None, None)
+    """
+    Display a ratio of total number of GOOD tests
+    to total number of all tests in the group of tests.
+    More info (e.g. 10 GOOD, 2 WARN, 3 FAIL) is in tooltips
+    """
+    if not tests:
+        return box(None, None)
 
-	status_count = {}
-	for test in tests:
-		count = status_count.get(test.status_num, 0)
-		status_count[test.status_num] = count + 1
-	return status_precounted_box(db, status_count, link)
+    status_count = {}
+    for test in tests:
+        count = status_count.get(test.status_num, 0)
+        status_count[test.status_num] = count + 1
+    return status_precounted_box(db, status_count, link)
 
 
 def status_precounted_box(db, box_data, link = None,
-				 x_label = None, y_label = None):
-	"""
-	Display a ratio of total number of GOOD tests
-	to total number of all tests in the group of tests.
-	More info (e.g. 10 GOOD, 2 WARN, 3 FAIL) is in tooltips
-	"""
-	status_count = box_data.status_count
-	if not status_count:
-		return box(None, None)
-	
-	shade = shade_from_status_count(status_count)	
-	html,tooltip = status_html(db, box_data, shade)
-	precounted_box = box(html, shade, False, link, tooltip,
-				x_label, y_label)
-	return precounted_box
+                                 x_label = None, y_label = None):
+    """
+    Display a ratio of total number of GOOD tests
+    to total number of all tests in the group of tests.
+    More info (e.g. 10 GOOD, 2 WARN, 3 FAIL) is in tooltips
+    """
+    status_count = box_data.status_count
+    if not status_count:
+        return box(None, None)
+
+    shade = shade_from_status_count(status_count)
+    html,tooltip = status_html(db, box_data, shade)
+    precounted_box = box(html, shade, False, link, tooltip,
+                            x_label, y_label)
+    return precounted_box
 
 
 def print_table(matrix):
-	"""
-	matrix: list of lists of boxes, giving a matrix of data
-	Each of the inner lists is a row, not a column.
+    """
+    matrix: list of lists of boxes, giving a matrix of data
+    Each of the inner lists is a row, not a column.
 
-	Display the given matrix of data as a table.
-	"""
+    Display the given matrix of data as a table.
+    """
 
-	print ('<table bgcolor="%s" cellspacing="1" cellpadding="5" '
-	       'style="margin-right: 200px;">') % (
-	       color_map['borders'])
-	for row in matrix:
-		print '<tr>'
-		for element in row:
-			print element.html()
-		print '</tr>'
-	print '</table>'
+    print ('<table bgcolor="%s" cellspacing="1" cellpadding="5" '
+           'style="margin-right: 200px;">') % (
+           color_map['borders'])
+    for row in matrix:
+        print '<tr>'
+        for element in row:
+            print element.html()
+        print '</tr>'
+    print '</table>'
 
 
 def sort_tests(tests):
-	kernel_order = ['patch', 'config', 'build', 'mkinitrd', 'install']
+    kernel_order = ['patch', 'config', 'build', 'mkinitrd', 'install']
 
-	results = []
-	for kernel_op in kernel_order:
-		test = 'kernel.' + kernel_op
-		if tests.count(test):
-			results.append(test)
-			tests.remove(test)
-	if tests.count('boot'):
-		results.append('boot')
-		tests.remove('boot')
-	return results + sorted(tests)
+    results = []
+    for kernel_op in kernel_order:
+        test = 'kernel.' + kernel_op
+        if tests.count(test):
+            results.append(test)
+            tests.remove(test)
+    if tests.count('boot'):
+        results.append('boot')
+        tests.remove('boot')
+    return results + sorted(tests)
 
 
 def print_main_header():
-	hover_css="""\
+    hover_css="""\
 a.info{
-    position:relative; /*this is the key*/
-    z-index:1
-    color:#000;
-    text-decoration:none}
+position:relative; /*this is the key*/
+z-index:1
+color:#000;
+text-decoration:none}
 
 a.info:hover{z-index:25;}
 
 a.info span{display: none}
 
 a.info:hover span{ /*the span will display just on :hover state*/
-    display:block;
-    position:absolute;
-    top:1em; left:1em;
-    min-width: 100px;
-    overflow: visible;
-    border:1px solid #036;
-    background-color:#fff; color:#000;
-    text-align: left
+display:block;
+position:absolute;
+top:1em; left:1em;
+min-width: 100px;
+overflow: visible;
+border:1px solid #036;
+background-color:#fff; color:#000;
+text-align: left
 }
 """
-	print '<head><style type="text/css">'
-	print 'a { text-decoration: none }'
-	print hover_css
-	print '</style></head>'
-	print '<h2>'
-	print '<a href="compose_query.cgi">Functional</a>'
-	print '&nbsp&nbsp&nbsp'
-	print '<a href="machine_benchmark.cgi">Performance</a>'
-	print '&nbsp&nbsp&nbsp'
-	print '<a href="http://test.kernel.org/autotest">[about Autotest]</a>'
-	print '</h2><p>'
+    print '<head><style type="text/css">'
+    print 'a { text-decoration: none }'
+    print hover_css
+    print '</style></head>'
+    print '<h2>'
+    print '<a href="compose_query.cgi">Functional</a>'
+    print '&nbsp&nbsp&nbsp'
+    print '<a href="machine_benchmark.cgi">Performance</a>'
+    print '&nbsp&nbsp&nbsp'
+    print '<a href="http://test.kernel.org/autotest">[about Autotest]</a>'
+    print '</h2><p>'
 
 
 def group_name(group):
-	name = re.sub('_', '<br>', group.name)
-	if re.search('/', name):
-		(owner, machine) = name.split('/', 1)
-		name = owner + '<br>' + machine
-	return name
-
+    name = re.sub('_', '<br>', group.name)
+    if re.search('/', name):
+        (owner, machine) = name.split('/', 1)
+        name = owner + '<br>' + machine
+    return name