summaryrefslogtreecommitdiff
path: root/lib/spack/llnl/util
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2022-11-15 10:07:54 +0100
committerGitHub <noreply@github.com>2022-11-15 10:07:54 +0100
commitb3124bff7c08d0f9ae8f0754c91ef72a025bd574 (patch)
tree9dd90f611ccfd054a1499d7168210014798356f0 /lib/spack/llnl/util
parent5c4137baf19b9e271a2f13e886d6b875aab067dd (diff)
downloadspack-b3124bff7c08d0f9ae8f0754c91ef72a025bd574.tar.gz
spack-b3124bff7c08d0f9ae8f0754c91ef72a025bd574.tar.bz2
spack-b3124bff7c08d0f9ae8f0754c91ef72a025bd574.tar.xz
spack-b3124bff7c08d0f9ae8f0754c91ef72a025bd574.zip
Stop using `six` in Spack (#33905)
Since we dropped support for Python 2.7, there's no need so use `six` anymore. We still need to vendor it until we update our vendored dependencies.
Diffstat (limited to 'lib/spack/llnl/util')
-rw-r--r--lib/spack/llnl/util/argparsewriter.py5
-rw-r--r--lib/spack/llnl/util/filesystem.py18
-rw-r--r--lib/spack/llnl/util/lang.py16
-rw-r--r--lib/spack/llnl/util/tty/__init__.py23
-rw-r--r--lib/spack/llnl/util/tty/colify.py7
-rw-r--r--lib/spack/llnl/util/tty/color.py4
-rw-r--r--lib/spack/llnl/util/tty/log.py10
7 files changed, 32 insertions, 51 deletions
diff --git a/lib/spack/llnl/util/argparsewriter.py b/lib/spack/llnl/util/argparsewriter.py
index a8db508c2f..ad5bf3e83d 100644
--- a/lib/spack/llnl/util/argparsewriter.py
+++ b/lib/spack/llnl/util/argparsewriter.py
@@ -7,11 +7,10 @@ from __future__ import print_function
import argparse
import errno
+import io
import re
import sys
-from six import StringIO
-
class Command(object):
"""Parsed representation of a command from argparse.
@@ -181,7 +180,7 @@ class ArgparseRstWriter(ArgparseWriter):
self.rst_levels = rst_levels
def format(self, cmd):
- string = StringIO()
+ string = io.StringIO()
string.write(self.begin_command(cmd.prog))
if cmd.description:
diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py
index 30ecc1ebc8..db83cea6fc 100644
--- a/lib/spack/llnl/util/filesystem.py
+++ b/lib/spack/llnl/util/filesystem.py
@@ -18,8 +18,6 @@ import tempfile
from contextlib import contextmanager
from sys import platform as _platform
-import six
-
from llnl.util import tty
from llnl.util.lang import dedupe, memoized
from llnl.util.symlink import islink, symlink
@@ -520,7 +518,7 @@ def chgrp(path, group, follow_symlinks=True):
if is_windows:
raise OSError("Function 'chgrp' is not supported on Windows")
- if isinstance(group, six.string_types):
+ if isinstance(group, str):
gid = grp.getgrnam(group).gr_gid
else:
gid = group
@@ -1017,7 +1015,7 @@ def open_if_filename(str_or_file, mode="r"):
If it's a file object, just yields the file object.
"""
- if isinstance(str_or_file, six.string_types):
+ if isinstance(str_or_file, str):
with open(str_or_file, mode) as f:
yield f
else:
@@ -1602,7 +1600,7 @@ def find(root, files, recursive=True):
Returns:
list: The files that have been found
"""
- if isinstance(files, six.string_types):
+ if isinstance(files, str):
files = [files]
if recursive:
@@ -1666,7 +1664,7 @@ class FileList(collections.abc.Sequence):
"""
def __init__(self, files):
- if isinstance(files, six.string_types):
+ if isinstance(files, str):
files = [files]
self.files = list(dedupe(files))
@@ -1762,7 +1760,7 @@ class HeaderList(FileList):
def directories(self, value):
value = value or []
# Accept a single directory as input
- if isinstance(value, six.string_types):
+ if isinstance(value, str):
value = [value]
self._directories = [path_to_os_path(os.path.normpath(x))[0] for x in value]
@@ -1898,7 +1896,7 @@ def find_headers(headers, root, recursive=False):
Returns:
HeaderList: The headers that have been found
"""
- if isinstance(headers, six.string_types):
+ if isinstance(headers, str):
headers = [headers]
elif not isinstance(headers, collections.abc.Sequence):
message = "{0} expects a string or sequence of strings as the "
@@ -2064,7 +2062,7 @@ def find_system_libraries(libraries, shared=True):
Returns:
LibraryList: The libraries that have been found
"""
- if isinstance(libraries, six.string_types):
+ if isinstance(libraries, str):
libraries = [libraries]
elif not isinstance(libraries, collections.abc.Sequence):
message = "{0} expects a string or sequence of strings as the "
@@ -2121,7 +2119,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True):
Returns:
LibraryList: The libraries that have been found
"""
- if isinstance(libraries, six.string_types):
+ if isinstance(libraries, str):
libraries = [libraries]
elif not isinstance(libraries, collections.abc.Sequence):
message = "{0} expects a string or sequence of strings as the "
diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py
index d8f3cc9b9b..6deb224d70 100644
--- a/lib/spack/llnl/util/lang.py
+++ b/lib/spack/llnl/util/lang.py
@@ -17,9 +17,6 @@ import traceback
from datetime import datetime, timedelta
from typing import Any, Callable, Iterable, List, Tuple
-import six
-from six import string_types
-
# Ignore emacs backups when listing modules
ignore_modules = [r"^\.#", "~$"]
@@ -200,14 +197,9 @@ def memoized(func):
return ret
except TypeError as e:
# TypeError is raised when indexing into a dict if the key is unhashable.
- raise six.raise_from(
- UnhashableArguments(
- "args + kwargs '{}' was not hashable for function '{}'".format(
- key, func.__name__
- ),
- ),
- e,
- )
+ raise UnhashableArguments(
+ "args + kwargs '{}' was not hashable for function '{}'".format(key, func.__name__),
+ ) from e
return _memoized_function
@@ -574,7 +566,7 @@ def match_predicate(*args):
def match(string):
for arg in args:
- if isinstance(arg, string_types):
+ if isinstance(arg, str):
if re.search(arg, string):
return True
elif isinstance(arg, list) or isinstance(arg, tuple):
diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py
index 7c86411dbe..4b289438fa 100644
--- a/lib/spack/llnl/util/tty/__init__.py
+++ b/lib/spack/llnl/util/tty/__init__.py
@@ -6,6 +6,7 @@
from __future__ import unicode_literals
import contextlib
+import io
import os
import struct
import sys
@@ -14,10 +15,6 @@ import traceback
from datetime import datetime
from sys import platform as _platform
-import six
-from six import StringIO
-from six.moves import input
-
if _platform != "win32":
import fcntl
import termios
@@ -183,7 +180,7 @@ def msg(message, *args, **kwargs):
else:
cwrite("@*b{%s==>} %s%s" % (st_text, get_timestamp(), cescape(_output_filter(message))))
for arg in args:
- print(indent + _output_filter(six.text_type(arg)))
+ print(indent + _output_filter(str(arg)))
def info(message, *args, **kwargs):
@@ -201,13 +198,13 @@ def info(message, *args, **kwargs):
st_text = process_stacktrace(st_countback)
cprint(
"@%s{%s==>} %s%s"
- % (format, st_text, get_timestamp(), cescape(_output_filter(six.text_type(message)))),
+ % (format, st_text, get_timestamp(), cescape(_output_filter(str(message)))),
stream=stream,
)
for arg in args:
if wrap:
lines = textwrap.wrap(
- _output_filter(six.text_type(arg)),
+ _output_filter(str(arg)),
initial_indent=indent,
subsequent_indent=indent,
break_long_words=break_long_words,
@@ -215,7 +212,7 @@ def info(message, *args, **kwargs):
for line in lines:
stream.write(line + "\n")
else:
- stream.write(indent + _output_filter(six.text_type(arg)) + "\n")
+ stream.write(indent + _output_filter(str(arg)) + "\n")
def verbose(message, *args, **kwargs):
@@ -238,7 +235,7 @@ def error(message, *args, **kwargs):
kwargs.setdefault("format", "*r")
kwargs.setdefault("stream", sys.stderr)
- info("Error: " + six.text_type(message), *args, **kwargs)
+ info("Error: " + str(message), *args, **kwargs)
def warn(message, *args, **kwargs):
@@ -247,7 +244,7 @@ def warn(message, *args, **kwargs):
kwargs.setdefault("format", "*Y")
kwargs.setdefault("stream", sys.stderr)
- info("Warning: " + six.text_type(message), *args, **kwargs)
+ info("Warning: " + str(message), *args, **kwargs)
def die(message, *args, **kwargs):
@@ -271,7 +268,7 @@ def get_number(prompt, **kwargs):
while number is None:
msg(prompt, newline=False)
ans = input()
- if ans == six.text_type(abort):
+ if ans == str(abort):
return None
if ans:
@@ -336,11 +333,11 @@ def hline(label=None, **kwargs):
cols -= 2
cols = min(max_width, cols)
- label = six.text_type(label)
+ label = str(label)
prefix = char * 2 + " "
suffix = " " + (cols - len(prefix) - clen(label)) * char
- out = StringIO()
+ out = io.StringIO()
out.write(prefix)
out.write(label)
out.write(suffix)
diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py
index 73c1daf0d5..4520aad38f 100644
--- a/lib/spack/llnl/util/tty/colify.py
+++ b/lib/spack/llnl/util/tty/colify.py
@@ -8,11 +8,10 @@ Routines for printing columnar output. See ``colify()`` for more information.
"""
from __future__ import division, unicode_literals
+import io
import os
import sys
-from six import StringIO, text_type
-
from llnl.util.tty import terminal_size
from llnl.util.tty.color import cextra, clen
@@ -134,7 +133,7 @@ def colify(elts, **options):
)
# elts needs to be an array of strings so we can count the elements
- elts = [text_type(elt) for elt in elts]
+ elts = [str(elt) for elt in elts]
if not elts:
return (0, ())
@@ -232,7 +231,7 @@ def colify_table(table, **options):
def colified(elts, **options):
"""Invokes the ``colify()`` function but returns the result as a string
instead of writing it to an output string."""
- sio = StringIO()
+ sio = io.StringIO()
options["output"] = sio
colify(elts, **options)
return sio.getvalue()
diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py
index ad6862fc28..83e8316914 100644
--- a/lib/spack/llnl/util/tty/color.py
+++ b/lib/spack/llnl/util/tty/color.py
@@ -65,8 +65,6 @@ import re
import sys
from contextlib import contextmanager
-import six
-
class ColorParseError(Exception):
"""Raised when a color format fails to parse."""
@@ -259,7 +257,7 @@ def cescape(string):
Returns:
(str): the string with color codes escaped
"""
- string = six.text_type(string)
+ string = str(string)
string = string.replace("@", "@@")
string = string.replace("}", "}}")
return string
diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py
index 2d6609c390..0b79dd01ac 100644
--- a/lib/spack/llnl/util/tty/log.py
+++ b/lib/spack/llnl/util/tty/log.py
@@ -24,8 +24,6 @@ from threading import Thread
from types import ModuleType # novm
from typing import Optional # novm
-from six import StringIO, string_types
-
import llnl.util.tty as tty
termios = None # type: Optional[ModuleType]
@@ -308,7 +306,7 @@ class FileWrapper(object):
self.file_like = file_like
- if isinstance(file_like, string_types):
+ if isinstance(file_like, str):
self.open = True
elif _file_descriptors_work(file_like):
self.open = False
@@ -324,7 +322,7 @@ class FileWrapper(object):
if self.file_like:
self.file = open(self.file_like, "w", encoding="utf-8")
else:
- self.file = StringIO()
+ self.file = io.StringIO()
return self.file
else:
# We were handed an already-open file object. In this case we also
@@ -787,7 +785,7 @@ class winlog(object):
raise RuntimeError("file argument must be set by __init__ ")
# Open both write and reading on logfile
- if type(self.logfile) == StringIO:
+ if type(self.logfile) == io.StringIO:
self._ioflag = True
# cannot have two streams on tempfile, so we must make our own
sys.stdout = self.logfile
@@ -1013,7 +1011,7 @@ def _writer_daemon(
finally:
# send written data back to parent if we used a StringIO
- if isinstance(log_file, StringIO):
+ if isinstance(log_file, io.StringIO):
control_pipe.send(log_file.getvalue())
log_file_wrapper.close()
close_connection_and_file(read_multiprocess_fd, in_pipe)