From 2d46ee36cc4d920ae97d5cb36ea04c90f52582d5 Mon Sep 17 00:00:00 2001 From: mhilbrunner Date: Sun, 1 Oct 2017 21:00:32 +0200 Subject: doc_status.py Python 2.7 backwards compatibility --- doc/tools/doc_status.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'doc/tools/doc_status.py') diff --git a/doc/tools/doc_status.py b/doc/tools/doc_status.py index 6b6b794f11..c0e6f52f19 100644 --- a/doc/tools/doc_status.py +++ b/doc/tools/doc_status.py @@ -91,7 +91,7 @@ def validate_tag(elem, tag): def color(color, string): - if flags['c']: + if flags['c'] and terminal_supports_color(): color_format = '' for code in colors[color]: color_format += '\033[' + str(code) + 'm' @@ -105,6 +105,15 @@ ansi_escape = re.compile(r'\x1b[^m]*m') def nonescape_len(s): return len(ansi_escape.sub('', s)) +def terminal_supports_color(): + p = sys.platform + supported_platform = p != 'Pocket PC' and (p != 'win32' or + 'ANSICON' in os.environ) + + is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty() + if not supported_platform or not is_a_tty: + return False + return True ################################################################################ # Classes # @@ -134,8 +143,8 @@ class ClassStatusProgress: return self.to_colored_string() def to_colored_string(self, format='{has}/{total}', pad_format='{pad_described}{s}{pad_total}'): - ratio = self.described / self.total if self.total != 0 else 1 - percent = round(100 * ratio) + ratio = float(self.described) / float(self.total) if self.total != 0 else 1 + percent = int(round(100 * ratio)) s = format.format(has=str(self.described), total=str(self.total), percent=str(percent)) if self.described >= self.total: s = color('part_good', s) @@ -218,6 +227,7 @@ class ClassStatus: return output + @staticmethod def generate_for_class(c): status = ClassStatus() status.name = c.attrib['name'] @@ -436,7 +446,7 @@ for row_i, row in enumerate(table): if cell_i == 0: row_string += table_row_chars[3] + cell + table_row_chars[3] * (padding_needed - 1) else: - row_string += table_row_chars[3] * math.floor(padding_needed / 2) + cell + table_row_chars[3] * math.ceil((padding_needed / 2)) + row_string += table_row_chars[3] * int(math.floor(float(padding_needed) / 2)) + cell + table_row_chars[3] * int(math.ceil(float(padding_needed) / 2)) row_string += table_column_chars print(row_string) -- cgit v1.2.3