* [gentoo-portage-dev] [PATCH] Eliminate the most of explicit py3 conditionals
@ 2020-07-16 12:18 Michał Górny
2020-07-16 17:42 ` Zac Medico
0 siblings, 1 reply; 2+ messages in thread
From: Michał Górny @ 2020-07-16 12:18 UTC (permalink / raw
To: gentoo-portage-dev; +Cc: Michał Górny
Eliminate the most of py2/py3 conditions in the code. Leave a few
where the relevant code is unclear, they will be addressed later.
Closes: https://github.com/gentoo/portage/pull/574
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
bin/check-implicit-pointer-usage.py | 25 ++--------
bin/chmod-lite.py | 11 ++---
bin/dohtml.py | 11 ++---
bin/doins.py | 7 ++-
bin/ebuild | 15 +-----
bin/filter-bash-environment.py | 11 ++---
bin/install.py | 19 ++++---
bin/pid-ns-init | 10 ++--
bin/xattr-helper.py | 32 +++---------
lib/_emerge/DependencyArg.py | 10 ----
lib/_emerge/JobStatusDisplay.py | 4 +-
lib/_emerge/Package.py | 8 ---
lib/_emerge/PackageVirtualDbapi.py | 3 --
lib/_emerge/SequentialTaskQueue.py | 3 --
lib/_emerge/TaskSequence.py | 3 --
lib/_emerge/UseFlagDisplay.py | 8 ---
lib/_emerge/UserQuery.py | 17 +++----
lib/_emerge/actions.py | 2 -
lib/_emerge/resolver/DbapiProvidesIndex.py | 3 --
lib/_emerge/resolver/output_helpers.py | 16 ------
lib/_emerge/resolver/slot_collision.py | 8 ---
lib/portage/__init__.py | 49 +++++++------------
lib/portage/_emirrordist/Config.py | 4 --
lib/portage/_selinux.py | 12 -----
lib/portage/_sets/base.py | 3 --
lib/portage/dbapi/porttree.py | 7 +--
lib/portage/dep/__init__.py | 18 +------
lib/portage/dep/soname/SonameAtom.py | 8 ---
lib/portage/elog/mod_save_summary.py | 2 -
lib/portage/elog/mod_syslog.py | 4 --
lib/portage/exception.py | 45 ++++-------------
lib/portage/mail.py | 49 +++----------------
lib/portage/manifest.py | 7 ---
lib/portage/output.py | 4 +-
lib/portage/process.py | 16 +-----
lib/portage/proxy/objectproxy.py | 6 ---
lib/portage/repository/config.py | 6 ---
.../tests/unicode/test_string_format.py | 44 ++++-------------
lib/portage/util/_ShelveUnicodeWrapper.py | 45 -----------------
39 files changed, 102 insertions(+), 453 deletions(-)
delete mode 100644 lib/portage/util/_ShelveUnicodeWrapper.py
diff --git a/bin/check-implicit-pointer-usage.py b/bin/check-implicit-pointer-usage.py
index a49db8107..868e4b3c8 100755
--- a/bin/check-implicit-pointer-usage.py
+++ b/bin/check-implicit-pointer-usage.py
@@ -33,22 +33,10 @@ pointer_pattern = (
+ r"|"
+ r"cast to pointer from integer of different size)")
-if sys.hexversion < 0x3000000:
- # Use encoded byte strings in python-2.x, since the python ebuilds are
- # known to remove the encodings module when USE=build is enabled (thus
- # disabling unicode decoding/encoding). The portage module has a
- # workaround for this, but currently we don't import that here since we
- # don't want to trigger potential sandbox violations due to stale pyc
- # files for the portage module.
- unicode_quote_open = '\xE2\x80\x98'
- unicode_quote_close = '\xE2\x80\x99'
- def write(msg):
- sys.stdout.write(msg)
-else:
- unicode_quote_open = '\u2018'
- unicode_quote_close = '\u2019'
- def write(msg):
- sys.stdout.buffer.write(msg.encode('utf_8', 'backslashreplace'))
+unicode_quote_open = '\u2018'
+unicode_quote_close = '\u2019'
+def write(msg):
+ sys.stdout.buffer.write(msg.encode('utf_8', 'backslashreplace'))
pointer_pattern = re.compile(pointer_pattern)
@@ -57,10 +45,7 @@ last_implicit_linenum = -1
last_implicit_func = ""
while True:
- if sys.hexversion >= 0x3000000:
- line = sys.stdin.buffer.readline().decode('utf_8', 'replace')
- else:
- line = sys.stdin.readline()
+ line = sys.stdin.buffer.readline().decode('utf_8', 'replace')
if not line:
break
# translate unicode open/close quotes to ascii ones
diff --git a/bin/chmod-lite.py b/bin/chmod-lite.py
index 177be7eab..7fe743ed1 100755
--- a/bin/chmod-lite.py
+++ b/bin/chmod-lite.py
@@ -12,12 +12,11 @@ os.chdir(os.environ["__PORTAGE_HELPER_CWD"])
def main(files):
- if sys.hexversion >= 0x3000000:
- # We can't trust that the filesystem encoding (locale dependent)
- # correctly matches the arguments, so use surrogateescape to
- # pass through the original argv bytes for Python 3.
- fs_encoding = sys.getfilesystemencoding()
- files = [x.encode(fs_encoding, 'surrogateescape') for x in files]
+ # We can't trust that the filesystem encoding (locale dependent)
+ # correctly matches the arguments, so use surrogateescape to
+ # pass through the original argv bytes for Python 3.
+ fs_encoding = sys.getfilesystemencoding()
+ files = [x.encode(fs_encoding, 'surrogateescape') for x in files]
for filename in files:
# Emulate 'chmod -fR a+rX,u+w,g-w,o-w' with minimal chmod calls.
diff --git a/bin/dohtml.py b/bin/dohtml.py
index df8552b83..67c5eb9d1 100755
--- a/bin/dohtml.py
+++ b/bin/dohtml.py
@@ -163,12 +163,11 @@ def print_help():
def parse_args():
argv = sys.argv[:]
- if sys.hexversion >= 0x3000000:
- # We can't trust that the filesystem encoding (locale dependent)
- # correctly matches the arguments, so use surrogateescape to
- # pass through the original argv bytes for Python 3.
- fs_encoding = sys.getfilesystemencoding()
- argv = [x.encode(fs_encoding, 'surrogateescape') for x in argv]
+ # We can't trust that the filesystem encoding (locale dependent)
+ # correctly matches the arguments, so use surrogateescape to
+ # pass through the original argv bytes for Python 3.
+ fs_encoding = sys.getfilesystemencoding()
+ argv = [x.encode(fs_encoding, 'surrogateescape') for x in argv]
for x, arg in enumerate(argv):
try:
diff --git a/bin/doins.py b/bin/doins.py
index 6bc30c90b..98dc4f810 100644
--- a/bin/doins.py
+++ b/bin/doins.py
@@ -514,10 +514,9 @@ def _parse_args(argv):
# Encode back to the original byte stream. Please see
# http://bugs.python.org/issue8776.
- if sys.version_info.major >= 3:
- opts.distdir = os.fsencode(opts.distdir) + b'/'
- opts.dest = os.fsencode(opts.dest)
- opts.sources = [os.fsencode(source) for source in opts.sources]
+ opts.distdir = os.fsencode(opts.distdir) + b'/'
+ opts.dest = os.fsencode(opts.dest)
+ opts.sources = [os.fsencode(source) for source in opts.sources]
return opts
diff --git a/bin/ebuild b/bin/ebuild
index 460aa0fd1..ea02fa95a 100755
--- a/bin/ebuild
+++ b/bin/ebuild
@@ -144,9 +144,6 @@ if not os.path.isabs(ebuild):
# the canonical path returned from os.getcwd() may may be unusable in
# cases where the directory stucture is built from symlinks.
pwd = os.environ.get('PWD', '')
- if sys.hexversion < 0x3000000:
- pwd = _unicode_decode(pwd, encoding=_encodings['content'],
- errors='strict')
if pwd and pwd != mycwd and \
os.path.realpath(pwd) == mycwd:
mycwd = portage.normalize_path(pwd)
@@ -163,16 +160,8 @@ vdb_path = os.path.realpath(os.path.join(portage.settings['EROOT'], VDB_PATH))
if ebuild_portdir != vdb_path and \
ebuild_portdir not in portage.portdb.porttrees:
portdir_overlay = portage.settings.get("PORTDIR_OVERLAY", "")
- if sys.hexversion >= 0x3000000:
- os.environ["PORTDIR_OVERLAY"] = \
- portdir_overlay + \
- " " + _shell_quote(ebuild_portdir)
- else:
- os.environ["PORTDIR_OVERLAY"] = \
- _unicode_encode(portdir_overlay,
- encoding=_encodings['content'], errors='strict') + \
- " " + _unicode_encode(_shell_quote(ebuild_portdir),
- encoding=_encodings['content'], errors='strict')
+ os.environ["PORTDIR_OVERLAY"] = (
+ portdir_overlay + " " + _shell_quote(ebuild_portdir))
print("Appending %s to PORTDIR_OVERLAY..." % ebuild_portdir)
portage._reset_legacy_globals()
diff --git a/bin/filter-bash-environment.py b/bin/filter-bash-environment.py
index 045ea6f52..5e82fc91c 100755
--- a/bin/filter-bash-environment.py
+++ b/bin/filter-bash-environment.py
@@ -136,14 +136,9 @@ if __name__ == "__main__":
sys.stderr.flush()
sys.exit(2)
- file_in = sys.stdin
- file_out = sys.stdout
- if sys.hexversion >= 0x3000000:
- file_in = sys.stdin.buffer
- file_out = sys.stdout.buffer
- var_pattern = os.fsencode(args[0]).split()
- else:
- var_pattern = args[0].split()
+ file_in = sys.stdin.buffer
+ file_out = sys.stdout.buffer
+ var_pattern = os.fsencode(args[0]).split()
# Filter invalid variable names that are not supported by bash.
var_pattern.append(br'\d.*')
diff --git a/bin/install.py b/bin/install.py
index 495534d33..c013f07e5 100755
--- a/bin/install.py
+++ b/bin/install.py
@@ -232,16 +232,15 @@ def main(args):
cmdline = [install_binary]
cmdline += args
- if sys.hexversion >= 0x3000000:
- # We can't trust that the filesystem encoding (locale dependent)
- # correctly matches the arguments, so use surrogateescape to
- # pass through the original argv bytes for Python 3.
- fs_encoding = sys.getfilesystemencoding()
- cmdline = [x.encode(fs_encoding, 'surrogateescape') for x in cmdline]
- files = [x.encode(fs_encoding, 'surrogateescape') for x in files]
- if opts.target_directory is not None:
- opts.target_directory = \
- opts.target_directory.encode(fs_encoding, 'surrogateescape')
+ # We can't trust that the filesystem encoding (locale dependent)
+ # correctly matches the arguments, so use surrogateescape to
+ # pass through the original argv bytes for Python 3.
+ fs_encoding = sys.getfilesystemencoding()
+ cmdline = [x.encode(fs_encoding, 'surrogateescape') for x in cmdline]
+ files = [x.encode(fs_encoding, 'surrogateescape') for x in files]
+ if opts.target_directory is not None:
+ opts.target_directory = \
+ opts.target_directory.encode(fs_encoding, 'surrogateescape')
returncode = subprocess.call(cmdline)
if returncode == os.EX_OK:
diff --git a/bin/pid-ns-init b/bin/pid-ns-init
index 18c74f799..3a218a5df 100644
--- a/bin/pid-ns-init
+++ b/bin/pid-ns-init
@@ -39,7 +39,7 @@ def preexec_fn(uid, gid, groups, umask):
os.umask(umask)
# CPython >= 3 subprocess.Popen handles this internally.
- if sys.version_info.major < 3 or platform.python_implementation() != 'CPython':
+ if platform.python_implementation() != 'CPython':
for signum in (
signal.SIGHUP,
signal.SIGINT,
@@ -70,10 +70,10 @@ def main(argv):
groups = tuple(int(group) for group in groups.split(',')) if groups else None
umask = int(umask) if umask else None
- popen_kwargs = {}
- popen_kwargs['preexec_fn'] = functools.partial(preexec_fn, uid, gid, groups, umask)
- if sys.version_info.major > 2:
- popen_kwargs['pass_fds'] = pass_fds
+ popen_kwargs = {
+ 'preexec_fn': functools.partial(preexec_fn, uid, gid, groups, umask),
+ 'pass_fds': pass_fds,
+ }
# Isolate parent process from process group SIGSTOP (bug 675870)
setsid = True
os.setsid()
diff --git a/bin/xattr-helper.py b/bin/xattr-helper.py
index 49c981580..7658934a0 100755
--- a/bin/xattr-helper.py
+++ b/bin/xattr-helper.py
@@ -26,24 +26,14 @@ _UNQUOTE_RE = re.compile(br'\\[0-7]{3}')
_FS_ENCODING = sys.getfilesystemencoding()
-if sys.hexversion < 0x3000000:
+def octal_quote_byte(b):
+ return ('\\%03o' % ord(b)).encode('ascii')
- def octal_quote_byte(b):
- return b'\\%03o' % ord(b)
- def unicode_encode(s):
- if isinstance(s, unicode):
- s = s.encode(_FS_ENCODING)
- return s
-else:
-
- def octal_quote_byte(b):
- return ('\\%03o' % ord(b)).encode('ascii')
-
- def unicode_encode(s):
- if isinstance(s, str):
- s = s.encode(_FS_ENCODING, 'surrogateescape')
- return s
+def unicode_encode(s):
+ if isinstance(s, str):
+ s = s.encode(_FS_ENCODING, 'surrogateescape')
+ return s
def quote(s, quote_chars):
@@ -157,20 +147,14 @@ def main(argv):
options = parser.parse_args(argv)
- if sys.hexversion >= 0x3000000:
- file_in = sys.stdin.buffer.raw
- else:
- file_in = sys.stdin
+ file_in = sys.stdin.buffer.raw
if options.dump:
if options.paths:
options.paths = [unicode_encode(x) for x in options.paths]
else:
options.paths = [x for x in file_in.read().split(b'\0') if x]
- if sys.hexversion >= 0x3000000:
- file_out = sys.stdout.buffer
- else:
- file_out = sys.stdout
+ file_out = sys.stdout.buffer
dump_xattrs(options.paths, file_out)
elif options.restore:
diff --git a/lib/_emerge/DependencyArg.py b/lib/_emerge/DependencyArg.py
index 87f255f10..a997f0f90 100644
--- a/lib/_emerge/DependencyArg.py
+++ b/lib/_emerge/DependencyArg.py
@@ -31,14 +31,4 @@ class DependencyArg(object):
return hash((self.arg, self.root_config.root))
def __str__(self):
- # Use unicode_literals format string for python-2.x safety,
- # ensuring that self.arg.__unicode__() is used
- # when necessary.
return "%s" % (self.arg,)
-
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(), encoding=_encodings['content'])
diff --git a/lib/_emerge/JobStatusDisplay.py b/lib/_emerge/JobStatusDisplay.py
index b3160a4cc..2ef3f8465 100644
--- a/lib/_emerge/JobStatusDisplay.py
+++ b/lib/_emerge/JobStatusDisplay.py
@@ -83,9 +83,7 @@ class JobStatusDisplay(object):
# avoid potential UnicodeEncodeError
s = _unicode_encode(s,
encoding=_encodings['stdio'], errors='backslashreplace')
- out = self.out
- if sys.hexversion >= 0x3000000:
- out = out.buffer
+ out = self.out.buffer
out.write(s)
out.flush()
diff --git a/lib/_emerge/Package.py b/lib/_emerge/Package.py
index 76f4066bb..1fb0bb20b 100644
--- a/lib/_emerge/Package.py
+++ b/lib/_emerge/Package.py
@@ -528,14 +528,6 @@ class Package(Task):
s += ")"
return s
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'])
-
class _use_class(object):
__slots__ = ("enabled", "_expand", "_expand_hidden",
diff --git a/lib/_emerge/PackageVirtualDbapi.py b/lib/_emerge/PackageVirtualDbapi.py
index 26293dd98..957eab594 100644
--- a/lib/_emerge/PackageVirtualDbapi.py
+++ b/lib/_emerge/PackageVirtualDbapi.py
@@ -41,9 +41,6 @@ class PackageVirtualDbapi(dbapi):
def __bool__(self):
return bool(self._cpv_map)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
def __iter__(self):
return iter(self._cpv_map.values())
diff --git a/lib/_emerge/SequentialTaskQueue.py b/lib/_emerge/SequentialTaskQueue.py
index d2551b1c6..1cadbca41 100644
--- a/lib/_emerge/SequentialTaskQueue.py
+++ b/lib/_emerge/SequentialTaskQueue.py
@@ -85,8 +85,5 @@ class SequentialTaskQueue(SlotObject):
def __bool__(self):
return bool(self._task_queue or self.running_tasks)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
def __len__(self):
return len(self._task_queue) + len(self.running_tasks)
diff --git a/lib/_emerge/TaskSequence.py b/lib/_emerge/TaskSequence.py
index 1f2ba94c2..2fd349810 100644
--- a/lib/_emerge/TaskSequence.py
+++ b/lib/_emerge/TaskSequence.py
@@ -54,8 +54,5 @@ class TaskSequence(CompositeTask):
def __bool__(self):
return bool(self._task_queue)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
def __len__(self):
return len(self._task_queue)
diff --git a/lib/_emerge/UseFlagDisplay.py b/lib/_emerge/UseFlagDisplay.py
index c16e7ba0d..6f6e27fb8 100644
--- a/lib/_emerge/UseFlagDisplay.py
+++ b/lib/_emerge/UseFlagDisplay.py
@@ -30,14 +30,6 @@ class UseFlagDisplay(object):
s = '(%s)' % s
return s
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'])
-
def _cmp_combined(a, b):
"""
Sort by name, combining enabled and disabled flags.
diff --git a/lib/_emerge/UserQuery.py b/lib/_emerge/UserQuery.py
index faa32cf50..a9b3a4865 100644
--- a/lib/_emerge/UserQuery.py
+++ b/lib/_emerge/UserQuery.py
@@ -54,17 +54,12 @@ class UserQuery(object):
print(bold(prompt), end=' ')
try:
while True:
- if sys.hexversion >= 0x3000000:
- try:
- response = input("[%s] " %
- "/".join([colours[i](responses[i])
- for i in range(len(responses))]))
- except UnicodeDecodeError as e:
- response = _unicode_decode(e.object).rstrip('\n')
- else:
- response=raw_input("["+"/".join([colours[i](responses[i])
- for i in range(len(responses))])+"] ")
- response = _unicode_decode(response)
+ try:
+ response = input("[%s] " %
+ "/".join([colours[i](responses[i])
+ for i in range(len(responses))]))
+ except UnicodeDecodeError as e:
+ response = _unicode_decode(e.object).rstrip('\n')
if response or not enter_invalid:
for key in responses:
# An empty response will match the
diff --git a/lib/_emerge/actions.py b/lib/_emerge/actions.py
index dc54372a3..e717bc828 100644
--- a/lib/_emerge/actions.py
+++ b/lib/_emerge/actions.py
@@ -3194,8 +3194,6 @@ def run_action(emerge_config):
if not "--pretend" in emerge_config.opts:
time_fmt = "%b %d, %Y %H:%M:%S"
- if sys.hexversion < 0x3000000:
- time_fmt = portage._unicode_encode(time_fmt)
time_str = time.strftime(time_fmt, time.localtime(time.time()))
# Avoid potential UnicodeDecodeError in Python 2, since strftime
# returns bytes in Python 2, and %b may contain non-ascii chars.
diff --git a/lib/_emerge/resolver/DbapiProvidesIndex.py b/lib/_emerge/resolver/DbapiProvidesIndex.py
index 1650edd4e..9d122a7e5 100644
--- a/lib/_emerge/resolver/DbapiProvidesIndex.py
+++ b/lib/_emerge/resolver/DbapiProvidesIndex.py
@@ -73,9 +73,6 @@ class PackageDbapiProvidesIndex(DbapiProvidesIndex):
def __bool__(self):
return bool(self._db)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
def __iter__(self):
return iter(self._db)
diff --git a/lib/_emerge/resolver/output_helpers.py b/lib/_emerge/resolver/output_helpers.py
index 4279590dc..0616bb6ac 100644
--- a/lib/_emerge/resolver/output_helpers.py
+++ b/lib/_emerge/resolver/output_helpers.py
@@ -76,14 +76,6 @@ class _RepoDisplay(object):
" indicates that the source repository could not be determined\n")
return "".join(output)
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'])
-
class _PackageCounters(object):
@@ -677,11 +669,3 @@ class PkgAttrDisplay(SlotObject):
output.append(self.mask)
return "".join(output)
-
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'])
diff --git a/lib/_emerge/resolver/slot_collision.py b/lib/_emerge/resolver/slot_collision.py
index 0bed08785..e77433fb8 100644
--- a/lib/_emerge/resolver/slot_collision.py
+++ b/lib/_emerge/resolver/slot_collision.py
@@ -1130,14 +1130,6 @@ class _solution_candidate_generator(object):
def __str__(self):
return "%s" % (self.value,)
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'], errors='backslashreplace')
-
def __init__(self, all_involved_flags):
#A copy of all_involved_flags with all "cond" values
#replaced by a _value_helper object.
diff --git a/lib/portage/__init__.py b/lib/portage/__init__.py
index 8ac899f7b..2c44376cb 100644
--- a/lib/portage/__init__.py
+++ b/lib/portage/__init__.py
@@ -163,43 +163,30 @@ _encodings = {
'stdio' : 'utf_8',
}
-if sys.hexversion >= 0x3000000:
-
- def _decode_argv(argv):
- # With Python 3, the surrogateescape encoding error handler makes it
- # possible to access the original argv bytes, which can be useful
- # if their actual encoding does no match the filesystem encoding.
- fs_encoding = sys.getfilesystemencoding()
- return [_unicode_decode(x.encode(fs_encoding, 'surrogateescape'))
- for x in argv]
-
- def _unicode_encode(s, encoding=_encodings['content'], errors='backslashreplace'):
- if isinstance(s, str):
- s = s.encode(encoding, errors)
- return s
- def _unicode_decode(s, encoding=_encodings['content'], errors='replace'):
- if isinstance(s, bytes):
- s = str(s, encoding=encoding, errors=errors)
- return s
+def _decode_argv(argv):
+ # With Python 3, the surrogateescape encoding error handler makes it
+ # possible to access the original argv bytes, which can be useful
+ # if their actual encoding does no match the filesystem encoding.
+ fs_encoding = sys.getfilesystemencoding()
+ return [_unicode_decode(x.encode(fs_encoding, 'surrogateescape'))
+ for x in argv]
- _native_string = _unicode_decode
-else:
- def _decode_argv(argv):
- return [_unicode_decode(x) for x in argv]
+def _unicode_encode(s, encoding=_encodings['content'], errors='backslashreplace'):
+ if isinstance(s, str):
+ s = s.encode(encoding, errors)
+ return s
- def _unicode_encode(s, encoding=_encodings['content'], errors='backslashreplace'):
- if isinstance(s, unicode):
- s = s.encode(encoding, errors)
- return s
- def _unicode_decode(s, encoding=_encodings['content'], errors='replace'):
- if isinstance(s, bytes):
- s = unicode(s, encoding=encoding, errors=errors)
- return s
+def _unicode_decode(s, encoding=_encodings['content'], errors='replace'):
+ if isinstance(s, bytes):
+ s = str(s, encoding=encoding, errors=errors)
+ return s
+
+
+_native_string = _unicode_decode
- _native_string = _unicode_encode
class _unicode_func_wrapper(object):
"""
diff --git a/lib/portage/_emirrordist/Config.py b/lib/portage/_emirrordist/Config.py
index c1f59f725..d5dea7ab4 100644
--- a/lib/portage/_emirrordist/Config.py
+++ b/lib/portage/_emirrordist/Config.py
@@ -12,7 +12,6 @@ import portage
from portage import os
from portage.package.ebuild.fetch import MirrorLayoutConfig
from portage.util import grabdict, grablines
-from portage.util._ShelveUnicodeWrapper import ShelveUnicodeWrapper
class Config(object):
def __init__(self, options, portdb, event_loop):
@@ -126,9 +125,6 @@ class Config(object):
from bsddb3 import dbshelve
db = dbshelve.open(db_file, flags=open_flag)
- if sys.hexversion < 0x3000000:
- db = ShelveUnicodeWrapper(db)
-
if self.options.dry_run:
logging.warning("dry-run: %s db opened in readonly mode" % db_desc)
if not isinstance(db, dict):
diff --git a/lib/portage/_selinux.py b/lib/portage/_selinux.py
index 49e2e8e58..a64215f27 100644
--- a/lib/portage/_selinux.py
+++ b/lib/portage/_selinux.py
@@ -23,8 +23,6 @@ def copyfile(src, dest):
dest = _native_string(dest, encoding=_encodings['fs'], errors='strict')
(rc, ctx) = selinux.lgetfilecon(src)
if rc < 0:
- if sys.hexversion < 0x3000000:
- src = _unicode_decode(src, encoding=_encodings['fs'], errors='replace')
raise OSError(_("copyfile: Failed getting context of \"%s\".") % src)
setfscreate(ctx)
@@ -48,8 +46,6 @@ def mkdir(target, refdir):
refdir = _native_string(refdir, encoding=_encodings['fs'], errors='strict')
(rc, ctx) = selinux.getfilecon(refdir)
if rc < 0:
- if sys.hexversion < 0x3000000:
- refdir = _unicode_decode(refdir, encoding=_encodings['fs'], errors='replace')
raise OSError(
_("mkdir: Failed getting context of reference directory \"%s\".") \
% refdir)
@@ -65,8 +61,6 @@ def rename(src, dest):
dest = _native_string(dest, encoding=_encodings['fs'], errors='strict')
(rc, ctx) = selinux.lgetfilecon(src)
if rc < 0:
- if sys.hexversion < 0x3000000:
- src = _unicode_decode(src, encoding=_encodings['fs'], errors='replace')
raise OSError(_("rename: Failed getting context of \"%s\".") % src)
setfscreate(ctx)
@@ -98,8 +92,6 @@ def setexec(ctx="\n"):
portage.writemsg("!!! %s\n" % msg, noiselevel=-1)
if rc < 0:
- if sys.hexversion < 0x3000000:
- ctx = _unicode_decode(ctx, encoding=_encodings['content'], errors='replace')
if selinux.security_getenforce() == 1:
raise OSError(_("Failed setting exec() context \"%s\".") % ctx)
else:
@@ -110,8 +102,6 @@ def setexec(ctx="\n"):
def setfscreate(ctx="\n"):
ctx = _native_string(ctx, encoding=_encodings['content'], errors='strict')
if selinux.setfscreatecon(ctx) < 0:
- if sys.hexversion < 0x3000000:
- ctx = _unicode_decode(ctx, encoding=_encodings['content'], errors='replace')
raise OSError(
_("setfscreate: Failed setting fs create context \"%s\".") % ctx)
@@ -148,8 +138,6 @@ def symlink(target, link, reflnk):
reflnk = _native_string(reflnk, encoding=_encodings['fs'], errors='strict')
(rc, ctx) = selinux.lgetfilecon(reflnk)
if rc < 0:
- if sys.hexversion < 0x3000000:
- reflnk = _unicode_decode(reflnk, encoding=_encodings['fs'], errors='replace')
raise OSError(
_("symlink: Failed getting context of reference symlink \"%s\".") \
% reflnk)
diff --git a/lib/portage/_sets/base.py b/lib/portage/_sets/base.py
index 4d0a42179..a9c898da7 100644
--- a/lib/portage/_sets/base.py
+++ b/lib/portage/_sets/base.py
@@ -43,9 +43,6 @@ class PackageSet(object):
self._load()
return bool(self._atoms or self._nonatoms)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
def supportsOperation(self, op):
if not op in OPERATIONS:
raise ValueError(op)
diff --git a/lib/portage/dbapi/porttree.py b/lib/portage/dbapi/porttree.py
index da337ad0e..4916114cd 100644
--- a/lib/portage/dbapi/porttree.py
+++ b/lib/portage/dbapi/porttree.py
@@ -1455,12 +1455,7 @@ class FetchlistDict(Mapping):
infinite recursion in some cases."""
return len(self.portdb.cp_list(self.cp, mytree=self.mytree))
- def keys(self):
- """Returns keys for all packages within pkgdir"""
- return self.portdb.cp_list(self.cp, mytree=self.mytree)
-
- if sys.hexversion >= 0x3000000:
- keys = __iter__
+ keys = __iter__
def _async_manifest_fetchlist(portdb, repo_config, cp, cpv_list=None,
diff --git a/lib/portage/dep/__init__.py b/lib/portage/dep/__init__.py
index baeea4bf7..bfb957d89 100644
--- a/lib/portage/dep/__init__.py
+++ b/lib/portage/dep/__init__.py
@@ -960,22 +960,11 @@ class _use_dep(object):
def __bool__(self):
return bool(self.tokens)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
def __str__(self):
if not self.tokens:
return ""
return "[%s]" % (",".join(self.tokens),)
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'], errors='backslashreplace')
-
def __repr__(self):
return "portage.dep._use_dep(%s)" % repr(self.tokens)
@@ -1715,9 +1704,8 @@ class ExtendedAtomDict(portage.cache.mappings.MutableMapping):
else:
return self._normal.__delitem__(cp)
- if sys.hexversion >= 0x3000000:
- keys = __iter__
- items = iteritems
+ keys = __iter__
+ items = iteritems
def __len__(self):
return len(self._normal) + len(self._extended)
@@ -2575,8 +2563,6 @@ class _RequiredUseBranch(object):
return " ".join(tokens)
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
def check_required_use(required_use, use, iuse_match, eapi=None):
"""
diff --git a/lib/portage/dep/soname/SonameAtom.py b/lib/portage/dep/soname/SonameAtom.py
index 12d79386b..2dae03c36 100644
--- a/lib/portage/dep/soname/SonameAtom.py
+++ b/lib/portage/dep/soname/SonameAtom.py
@@ -56,14 +56,6 @@ class SonameAtom(object):
def __str__(self):
return "%s: %s" % (self.multilib_category, self.soname)
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'])
-
def match(self, pkg):
"""
Check if the given package instance matches this atom. Unbuilt
diff --git a/lib/portage/elog/mod_save_summary.py b/lib/portage/elog/mod_save_summary.py
index 48c006037..7aa6f2bef 100644
--- a/lib/portage/elog/mod_save_summary.py
+++ b/lib/portage/elog/mod_save_summary.py
@@ -73,8 +73,6 @@ def process(mysettings, key, logentries, fulltext):
mode=elogdir_grp_mode, mask=0)
time_fmt = "%Y-%m-%d %H:%M:%S %Z"
- if sys.hexversion < 0x3000000:
- time_fmt = _unicode_encode(time_fmt)
time_str = time.strftime(time_fmt, time.localtime(time.time()))
# Avoid potential UnicodeDecodeError in Python 2, since strftime
# returns bytes in Python 2, and %Z may contain non-ascii chars.
diff --git a/lib/portage/elog/mod_syslog.py b/lib/portage/elog/mod_syslog.py
index d2ad89d65..e5d1bbca8 100644
--- a/lib/portage/elog/mod_syslog.py
+++ b/lib/portage/elog/mod_syslog.py
@@ -26,9 +26,5 @@ def process(mysettings, key, logentries, fulltext):
msgcontent = [msgcontent]
for line in msgcontent:
line = "%s: %s: %s" % (key, phase, line)
- if sys.hexversion < 0x3000000 and not isinstance(line, bytes):
- # Avoid TypeError from syslog.syslog()
- line = line.encode(_encodings['content'],
- 'backslashreplace')
syslog.syslog(_pri[msgtype], line.rstrip("\n"))
syslog.closelog()
diff --git a/lib/portage/exception.py b/lib/portage/exception.py
index fa59f1f14..e2be95c1e 100644
--- a/lib/portage/exception.py
+++ b/lib/portage/exception.py
@@ -9,35 +9,15 @@ from portage.localization import _
class PortageException(Exception):
"""General superclass for portage exceptions"""
- if sys.hexversion >= 0x3000000:
- def __init__(self, value):
- self.value = value[:]
-
- def __str__(self):
- if isinstance(self.value, str):
- return self.value
- else:
- return repr(self.value)
- else:
- def __init__(self, value):
- self.value = value[:]
- if isinstance(self.value, str):
- self.value = _unicode_decode(self.value,
- encoding=_encodings['content'], errors='replace')
-
- def __unicode__(self):
- if isinstance(self.value, unicode):
- return self.value
- else:
- return _unicode_decode(repr(self.value),
- encoding=_encodings['content'], errors='replace')
-
- def __str__(self):
- if isinstance(self.value, unicode):
- return _unicode_encode(self.value,
- encoding=_encodings['content'], errors='backslashreplace')
- else:
- return repr(self.value)
+ def __init__(self, value):
+ self.value = value[:]
+
+ def __str__(self):
+ if isinstance(self.value, str):
+ return self.value
+ else:
+ return repr(self.value)
+
class PortageKeyError(KeyError, PortageException):
__doc__ = KeyError.__doc__
@@ -187,13 +167,6 @@ class UnsupportedAPIException(PortagePackageException):
return _unicode_decode(msg,
encoding=_encodings['content'], errors='replace')
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['content'], errors='backslashreplace')
class SignatureException(PortageException):
"""Signature was not present in the checked file"""
diff --git a/lib/portage/mail.py b/lib/portage/mail.py
index 6a351aa24..730c9352e 100644
--- a/lib/portage/mail.py
+++ b/lib/portage/mail.py
@@ -19,20 +19,15 @@ from portage import _unicode_decode, _unicode_encode
from portage.localization import _
import portage
-if sys.hexversion >= 0x3000000:
- def _force_ascii_if_necessary(s):
- # Force ascii encoding in order to avoid UnicodeEncodeError
- # from smtplib.sendmail with python3 (bug #291331).
- s = _unicode_encode(s,
- encoding='ascii', errors='backslashreplace')
- s = _unicode_decode(s,
- encoding='ascii', errors='replace')
- return s
+def _force_ascii_if_necessary(s):
+ # Force ascii encoding in order to avoid UnicodeEncodeError
+ # from smtplib.sendmail with python3 (bug #291331).
+ s = _unicode_encode(s,
+ encoding='ascii', errors='backslashreplace')
+ s = _unicode_decode(s,
+ encoding='ascii', errors='replace')
+ return s
-else:
-
- def _force_ascii_if_necessary(s):
- return s
def TextMessage(_text):
from email.mime.text import MIMEText
@@ -47,16 +42,6 @@ def create_message(sender, recipient, subject, body, attachments=None):
from email.mime.multipart import MIMEMultipart as MultipartMessage
from email.utils import formatdate
- if sys.hexversion < 0x3000000:
- sender = _unicode_encode(sender,
- encoding=_encodings['content'], errors='strict')
- recipient = _unicode_encode(recipient,
- encoding=_encodings['content'], errors='strict')
- subject = _unicode_encode(subject,
- encoding=_encodings['content'], errors='backslashreplace')
- body = _unicode_encode(body,
- encoding=_encodings['content'], errors='backslashreplace')
-
if attachments == None:
mymessage = TextMessage(body)
else:
@@ -66,10 +51,6 @@ def create_message(sender, recipient, subject, body, attachments=None):
if isinstance(x, BaseMessage):
mymessage.attach(x)
elif isinstance(x, str):
- if sys.hexversion < 0x3000000:
- x = _unicode_encode(x,
- encoding=_encodings['content'],
- errors='backslashreplace')
mymessage.attach(TextMessage(x))
else:
raise portage.exception.PortageException(_("Can't handle type of attachment: %s") % type(x))
@@ -129,20 +110,6 @@ def send_mail(mysettings, message):
myfrom = message.get("From")
- if sys.hexversion < 0x3000000:
- myrecipient = _unicode_encode(myrecipient,
- encoding=_encodings['content'], errors='strict')
- mymailhost = _unicode_encode(mymailhost,
- encoding=_encodings['content'], errors='strict')
- mymailport = _unicode_encode(mymailport,
- encoding=_encodings['content'], errors='strict')
- myfrom = _unicode_encode(myfrom,
- encoding=_encodings['content'], errors='strict')
- mymailuser = _unicode_encode(mymailuser,
- encoding=_encodings['content'], errors='strict')
- mymailpasswd = _unicode_encode(mymailpasswd,
- encoding=_encodings['content'], errors='strict')
-
# user wants to use a sendmail binary instead of smtp
if mymailhost[0] == os.sep and os.path.exists(mymailhost):
fd = os.popen(mymailhost+" -f "+myfrom+" "+myrecipient, "w")
diff --git a/lib/portage/manifest.py b/lib/portage/manifest.py
index b2c3923a1..7671bae34 100644
--- a/lib/portage/manifest.py
+++ b/lib/portage/manifest.py
@@ -107,13 +107,6 @@ class Manifest2Entry(ManifestEntry):
def __ne__(self, other):
return not self.__eq__(other)
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__(),
- encoding=_encodings['repo.content'], errors='strict')
class Manifest(object):
parsers = (parseManifest2,)
diff --git a/lib/portage/output.py b/lib/portage/output.py
index 6fbb24f4c..8bfcd91c2 100644
--- a/lib/portage/output.py
+++ b/lib/portage/output.py
@@ -256,9 +256,7 @@ def xtermTitle(mystr, raw=False):
# avoid potential UnicodeEncodeError
mystr = _unicode_encode(mystr,
encoding=_encodings['stdio'], errors='backslashreplace')
- f = sys.stderr
- if sys.hexversion >= 0x3000000:
- f = f.buffer
+ f = sys.stderr.buffer
f.write(mystr)
f.flush()
diff --git a/lib/portage/process.py b/lib/portage/process.py
index bbe8d02f0..f550bcb30 100644
--- a/lib/portage/process.py
+++ b/lib/portage/process.py
@@ -198,10 +198,7 @@ def run_exitfuncs():
exc_info = sys.exc_info()
if exc_info is not None:
- if sys.hexversion >= 0x3000000:
- raise exc_info[0](exc_info[1]).with_traceback(exc_info[2])
- else:
- exec("raise exc_info[0], exc_info[1], exc_info[2]")
+ raise exc_info[0](exc_info[1]).with_traceback(exc_info[2])
atexit.register(run_exitfuncs)
@@ -289,15 +286,6 @@ def spawn(mycommand, env=None, opt_name=None, fd_pipes=None, returnpid=False,
env = os.environ if env is None else env
- if sys.hexversion < 0x3000000:
- # Avoid a potential UnicodeEncodeError from os.execve().
- env_bytes = {}
- for k, v in env.items():
- env_bytes[_unicode_encode(k, encoding=_encodings['content'])] = \
- _unicode_encode(v, encoding=_encodings['content'])
- env = env_bytes
- del env_bytes
-
# If an absolute path to an executable file isn't given
# search for it unless we've been told not to.
binary = mycommand[0]
@@ -964,7 +952,7 @@ def find_binary(binary):
@return: full path to binary or None if the binary could not be located.
"""
paths = os.environ.get("PATH", "")
- if sys.hexversion >= 0x3000000 and isinstance(binary, bytes):
+ if isinstance(binary, bytes):
# return bytes when input is bytes
paths = paths.encode(sys.getfilesystemencoding(), 'surrogateescape')
paths = paths.split(b':')
diff --git a/lib/portage/proxy/objectproxy.py b/lib/portage/proxy/objectproxy.py
index a755774ae..e3bf4f75a 100644
--- a/lib/portage/proxy/objectproxy.py
+++ b/lib/portage/proxy/objectproxy.py
@@ -88,11 +88,5 @@ class ObjectProxy(object):
def __bool__(self):
return bool(object.__getattribute__(self, '_get_target')())
- if sys.hexversion < 0x3000000:
- __nonzero__ = __bool__
-
- def __unicode__(self):
- return unicode(object.__getattribute__(self, '_get_target')())
-
def __int__(self):
return int(object.__getattribute__(self, '_get_target')())
diff --git a/lib/portage/repository/config.py b/lib/portage/repository/config.py
index e75b6b543..210ae3aa0 100644
--- a/lib/portage/repository/config.py
+++ b/lib/portage/repository/config.py
@@ -530,12 +530,6 @@ class RepoConfig(object):
d[k] = getattr(self, k, None)
return "%s" % (d,)
- if sys.hexversion < 0x3000000:
-
- __unicode__ = __str__
-
- def __str__(self):
- return _unicode_encode(self.__unicode__())
class RepoConfigLoader(object):
"""Loads and store config of several repositories, loaded from PORTDIR_OVERLAY or repos.conf"""
diff --git a/lib/portage/tests/unicode/test_string_format.py b/lib/portage/tests/unicode/test_string_format.py
index 713aca8ae..561feeea1 100644
--- a/lib/portage/tests/unicode/test_string_format.py
+++ b/lib/portage/tests/unicode/test_string_format.py
@@ -10,8 +10,6 @@ from _emerge.DependencyArg import DependencyArg
from _emerge.UseFlagDisplay import UseFlagDisplay
-STR_IS_UNICODE = sys.hexversion >= 0x3000000
-
class StringFormatTestCase(TestCase):
"""
Test that string formatting works correctly in the current interpretter,
@@ -39,17 +37,9 @@ class StringFormatTestCase(TestCase):
formatted_str = "%s" % (dependency_arg,)
self.assertEqual(formatted_str, arg_unicode)
- if STR_IS_UNICODE:
-
- # Test the __str__ method which returns unicode in python3
- formatted_str = "%s" % (dependency_arg,)
- self.assertEqual(formatted_str, arg_unicode)
-
- else:
-
- # Test the __str__ method which returns encoded bytes in python2
- formatted_bytes = b"%s" % (dependency_arg,)
- self.assertEqual(formatted_bytes, arg_bytes)
+ # Test the __str__ method which returns unicode in python3
+ formatted_str = "%s" % (dependency_arg,)
+ self.assertEqual(formatted_str, arg_unicode)
def testPortageException(self):
@@ -64,17 +54,9 @@ class StringFormatTestCase(TestCase):
formatted_str = "%s" % (e,)
self.assertEqual(formatted_str, arg_unicode)
- if STR_IS_UNICODE:
-
- # Test the __str__ method which returns unicode in python3
- formatted_str = "%s" % (e,)
- self.assertEqual(formatted_str, arg_unicode)
-
- else:
-
- # Test the __str__ method which returns encoded bytes in python2
- formatted_bytes = b"%s" % (e,)
- self.assertEqual(formatted_bytes, arg_bytes)
+ # Test the __str__ method which returns unicode in python3
+ formatted_str = "%s" % (e,)
+ self.assertEqual(formatted_str, arg_unicode)
def testUseFlagDisplay(self):
@@ -90,14 +72,6 @@ class StringFormatTestCase(TestCase):
formatted_str = "%s" % (e,)
self.assertEqual(isinstance(formatted_str, str), True)
- if STR_IS_UNICODE:
-
- # Test the __str__ method which returns unicode in python3
- formatted_str = "%s" % (e,)
- self.assertEqual(isinstance(formatted_str, str), True)
-
- else:
-
- # Test the __str__ method which returns encoded bytes in python2
- formatted_bytes = b"%s" % (e,)
- self.assertEqual(isinstance(formatted_bytes, bytes), True)
+ # Test the __str__ method which returns unicode in python3
+ formatted_str = "%s" % (e,)
+ self.assertEqual(isinstance(formatted_str, str), True)
diff --git a/lib/portage/util/_ShelveUnicodeWrapper.py b/lib/portage/util/_ShelveUnicodeWrapper.py
deleted file mode 100644
index adbd5199f..000000000
--- a/lib/portage/util/_ShelveUnicodeWrapper.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-class ShelveUnicodeWrapper(object):
- """
- Convert unicode to str and back again, since python-2.x shelve
- module doesn't support unicode.
- """
- def __init__(self, shelve_instance):
- self._shelve = shelve_instance
-
- def _encode(self, s):
- if isinstance(s, unicode):
- s = s.encode('utf_8')
- return s
-
- def __len__(self):
- return len(self._shelve)
-
- def __contains__(self, k):
- return self._encode(k) in self._shelve
-
- def __iter__(self):
- return self._shelve.__iter__()
-
- def items(self):
- return self._shelve.iteritems()
-
- def __setitem__(self, k, v):
- self._shelve[self._encode(k)] = self._encode(v)
-
- def __getitem__(self, k):
- return self._shelve[self._encode(k)]
-
- def __delitem__(self, k):
- del self._shelve[self._encode(k)]
-
- def get(self, k, *args):
- return self._shelve.get(self._encode(k), *args)
-
- def close(self):
- self._shelve.close()
-
- def clear(self):
- self._shelve.clear()
--
2.27.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [gentoo-portage-dev] [PATCH] Eliminate the most of explicit py3 conditionals
2020-07-16 12:18 [gentoo-portage-dev] [PATCH] Eliminate the most of explicit py3 conditionals Michał Górny
@ 2020-07-16 17:42 ` Zac Medico
0 siblings, 0 replies; 2+ messages in thread
From: Zac Medico @ 2020-07-16 17:42 UTC (permalink / raw
To: gentoo-portage-dev, Michał Górny
[-- Attachment #1.1: Type: text/plain, Size: 2882 bytes --]
On 7/16/20 5:18 AM, Michał Górny wrote:
> Eliminate the most of py2/py3 conditions in the code. Leave a few
> where the relevant code is unclear, they will be addressed later.
>
> Closes: https://github.com/gentoo/portage/pull/574
> Signed-off-by: Michał Górny <mgorny@gentoo.org>
> ---
> bin/check-implicit-pointer-usage.py | 25 ++--------
> bin/chmod-lite.py | 11 ++---
> bin/dohtml.py | 11 ++---
> bin/doins.py | 7 ++-
> bin/ebuild | 15 +-----
> bin/filter-bash-environment.py | 11 ++---
> bin/install.py | 19 ++++---
> bin/pid-ns-init | 10 ++--
> bin/xattr-helper.py | 32 +++---------
> lib/_emerge/DependencyArg.py | 10 ----
> lib/_emerge/JobStatusDisplay.py | 4 +-
> lib/_emerge/Package.py | 8 ---
> lib/_emerge/PackageVirtualDbapi.py | 3 --
> lib/_emerge/SequentialTaskQueue.py | 3 --
> lib/_emerge/TaskSequence.py | 3 --
> lib/_emerge/UseFlagDisplay.py | 8 ---
> lib/_emerge/UserQuery.py | 17 +++----
> lib/_emerge/actions.py | 2 -
> lib/_emerge/resolver/DbapiProvidesIndex.py | 3 --
> lib/_emerge/resolver/output_helpers.py | 16 ------
> lib/_emerge/resolver/slot_collision.py | 8 ---
> lib/portage/__init__.py | 49 +++++++------------
> lib/portage/_emirrordist/Config.py | 4 --
> lib/portage/_selinux.py | 12 -----
> lib/portage/_sets/base.py | 3 --
> lib/portage/dbapi/porttree.py | 7 +--
> lib/portage/dep/__init__.py | 18 +------
> lib/portage/dep/soname/SonameAtom.py | 8 ---
> lib/portage/elog/mod_save_summary.py | 2 -
> lib/portage/elog/mod_syslog.py | 4 --
> lib/portage/exception.py | 45 ++++-------------
> lib/portage/mail.py | 49 +++----------------
> lib/portage/manifest.py | 7 ---
> lib/portage/output.py | 4 +-
> lib/portage/process.py | 16 +-----
> lib/portage/proxy/objectproxy.py | 6 ---
> lib/portage/repository/config.py | 6 ---
> .../tests/unicode/test_string_format.py | 44 ++++-------------
> lib/portage/util/_ShelveUnicodeWrapper.py | 45 -----------------
> 39 files changed, 102 insertions(+), 453 deletions(-)
> delete mode 100644 lib/portage/util/_ShelveUnicodeWrapper.py
Looks good. Please merge.
--
Thanks,
Zac
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 981 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-07-16 17:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-16 12:18 [gentoo-portage-dev] [PATCH] Eliminate the most of explicit py3 conditionals Michał Górny
2020-07-16 17:42 ` Zac Medico
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox