summaryrefslogtreecommitdiff
path: root/lib/spack/llnl/util/tty/colify.py
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2017-03-07 14:25:48 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2017-03-31 13:40:41 -0700
commit1d1a14dbe9cfc512cedff7430b694df87b2cd5ee (patch)
tree0736128966d347b5cf84a9f9781562b5ec3a17bf /lib/spack/llnl/util/tty/colify.py
parent0331b08c64abbc3d7c185d9650007be1de238cfc (diff)
downloadspack-1d1a14dbe9cfc512cedff7430b694df87b2cd5ee.tar.gz
spack-1d1a14dbe9cfc512cedff7430b694df87b2cd5ee.tar.bz2
spack-1d1a14dbe9cfc512cedff7430b694df87b2cd5ee.tar.xz
spack-1d1a14dbe9cfc512cedff7430b694df87b2cd5ee.zip
Convert Python 2 idioms to Python 2/3-compatible ones.
- convert print, StringIO, except as, octals, izip - convert print statement to print function - convert StringIO to six.StringIO - remove usage of csv reader in Spec, in favor of simple regex - csv reader only does byte strings - convert 0755 octal literals to 0o755 - convert `except Foo, e` to `except Foo as e` - fix a few places `str` is used. - may need to switch everything to str later. - convert iteritems usages to use six.iteritems - fix urllib and HTMLParser - port metaclasses to use six.with_metaclass - More octal literal conversions for Python 2/3 - Fix a new octal literal. - Convert `basestring` to `six.string_types` - Convert xrange -> range - Fix various issues with encoding, iteritems, and Python3 semantics. - Convert contextlib.nested to explicitly nexted context managers. - Convert use of filter() to list comprehensions. - Replace reduce() with list comprehensions. - Clean up composite: replace inspect.ismethod() with callable() - Python 3 doesn't have "method" objects; inspect.ismethod returns False. - Need to use callable in Composite to make it work. - Update colify to use future division. - Fix zip() usages that need to be lists. - Python3: Use line-buffered logging instead of unbuffered. - Python3 raises an error with unbuffered I/O - See https://bugs.python.org/issue17404
Diffstat (limited to 'lib/spack/llnl/util/tty/colify.py')
-rw-r--r--lib/spack/llnl/util/tty/colify.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py
index 67acdfa517..83de530ef1 100644
--- a/lib/spack/llnl/util/tty/colify.py
+++ b/lib/spack/llnl/util/tty/colify.py
@@ -25,9 +25,11 @@
"""
Routines for printing columnar output. See colify() for more information.
"""
+from __future__ import division
+
import os
import sys
-from StringIO import StringIO
+from six import StringIO
from llnl.util.tty import terminal_size
from llnl.util.tty.color import clen, cextra
@@ -64,18 +66,18 @@ def config_variable_cols(elts, console_width, padding, cols=0):
# Get a bound on the most columns we could possibly have.
# 'clen' ignores length of ansi color sequences.
lengths = [clen(e) for e in elts]
- max_cols = max(1, console_width / (min(lengths) + padding))
+ max_cols = max(1, console_width // (min(lengths) + padding))
max_cols = min(len(elts), max_cols)
# Range of column counts to try. If forced, use the supplied value.
- col_range = [cols] if cols else xrange(1, max_cols + 1)
+ col_range = [cols] if cols else range(1, max_cols + 1)
# Determine the most columns possible for the console width.
configs = [ColumnConfig(c) for c in col_range]
for i, length in enumerate(lengths):
for conf in configs:
if conf.valid:
- col = i / ((len(elts) + conf.cols - 1) / conf.cols)
+ col = i // ((len(elts) + conf.cols - 1) // conf.cols)
p = padding if col < (conf.cols - 1) else 0
if conf.widths[col] < (length + p):
@@ -107,7 +109,7 @@ def config_uniform_cols(elts, console_width, padding, cols=0):
# 'clen' ignores length of ansi color sequences.
max_len = max(clen(e) for e in elts) + padding
if cols == 0:
- cols = max(1, console_width / max_len)
+ cols = max(1, console_width // max_len)
cols = min(len(elts), cols)
config = ColumnConfig(cols)
@@ -193,12 +195,12 @@ def colify(elts, **options):
raise ValueError("method must be one of: " + allowed_methods)
cols = config.cols
- rows = (len(elts) + cols - 1) / cols
+ rows = (len(elts) + cols - 1) // cols
rows_last_col = len(elts) % rows
- for row in xrange(rows):
+ for row in range(rows):
output.write(" " * indent)
- for col in xrange(cols):
+ for col in range(cols):
elt = col * rows + row
width = config.widths[col] + cextra(elts[elt])
if col < cols - 1:
@@ -233,7 +235,7 @@ def colify_table(table, **options):
columns = len(table[0])
def transpose():
- for i in xrange(columns):
+ for i in range(columns):
for row in table:
yield row[i]