diff options
author | Chad Smith <chad.smith@canonical.com> | 2017-10-02 13:17:39 -0600 |
---|---|---|
committer | Chad Smith <chad.smith@canonical.com> | 2017-10-02 13:17:39 -0600 |
commit | b3acdff390329c8091b880b490e1f27441a7a486 (patch) | |
tree | d2797646aff98a76887dcc80cc26c1479af71f8c /cloudinit/simpletable.py | |
parent | f010594beb75e146091db47b7d72d1fc1d763e98 (diff) | |
download | vyos-cloud-init-b3acdff390329c8091b880b490e1f27441a7a486.tar.gz vyos-cloud-init-b3acdff390329c8091b880b490e1f27441a7a486.zip |
Add missing simpletable and simpletable tests for failed merge
Diffstat (limited to 'cloudinit/simpletable.py')
-rw-r--r-- | cloudinit/simpletable.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cloudinit/simpletable.py b/cloudinit/simpletable.py new file mode 100644 index 00000000..90603228 --- /dev/null +++ b/cloudinit/simpletable.py @@ -0,0 +1,62 @@ +# 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. + + +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 __str__(self): + """Returns a string representation of the table with lines around. + + +-----+-----+ + | one | two | + +-----+-----+ + | 1 | 2 | + | 01 | 10 | + +-----+-----+ + """ + lines = [self._hdiv(), self._row(self.fields), self._hdiv()] + lines += [self._row(r) for r in self.rows] + [self._hdiv()] + return '\n'.join(lines) + + def get_string(self): + return repr(self) |