Ubuntu Pastebin

Paste from ajorgens at Mon, 18 Sep 2017 17:08:55 +0000

Download as text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Copyright (C) 2017 Amazon.com, Inc. or its affiliates
#
# Author: Ethan Faust <efaust@amazon.com>
# Author: Andrew Jorgensen <ajorgens@amazon.com>
#
# This file is part of cloud-init. See LICENSE file for license information.

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO


class SimpleTable(object):
    """A minimal implementation of PrettyTable
    for distribution with cloud-init.
    """

    def __init__(self, fields):
        self.fields = fields
        self.rows = []

        # initialize list of 0s the same length
        # as the number of fields
        self.column_widths = [0] * len(self.fields)
        self.update_column_widths(fields)

    def update_column_widths(self, values):
        for i, value in enumerate(values):
            self.column_widths[i] = max(
                len(value),
                self.column_widths[i])

    def add_row(self, values):
        if len(values) > len(self.fields):
            raise TypeError('too many values')
        values = [str(value) for value in values]
        self.rows.append(values)
        self.update_column_widths(values)

    def _hdiv(self):
        """Returns a horizontal divider for the table."""
        return '+' + '+'.join(
            ['-' * (w + 2) for w in self.column_widths]) + '+'

    def _row(self, row):
        """Returns a formatted row."""
        return '|' + '|'.join(
            [col.center(self.column_widths[i] + 2)
                for i, col in enumerate(row)]) + '|'

    def __repr__(self):
        """Returns a string representation of the table with lines around.

        +-----+-----+
        | one | two |
        +-----+-----+
        |  1  |  2  |
        |  01 |  10 |
        +-----+-----+
        """
        out = StringIO()

        out.write(self._hdiv() + '\n')
        out.write(self._row(self.fields) + '\n')
        out.write(self._hdiv() + '\n')
        for row in self.rows:
            out.write(self._row(row) + '\n')
        out.write(self._hdiv())

        result = out.getvalue()
        out.close()
        return result

    def get_string(self):
        return repr(self)
Download as text