[elbe-devel] [PATCH] pylint: Clean up some messages with revised config
Bastian Germann
bage at linutronix.de
Wed May 17 17:47:54 CEST 2023
Run pylint in version 2.16.2 and fix the configuration by removing
non-existing message classes and filtering often violated ones.
Fix some obviously smelly code indicated by pylint.
Signed-off-by: Bastian Germann <bage at linutronix.de>
---
.pylintrc | 44 ++-----------------------
docs/conf.py | 14 ++++----
elbe | 6 ++--
elbepack/aptpkgutils.py | 16 ++++-----
elbepack/aptprogress.py | 3 +-
elbepack/cdroms.py | 3 --
elbepack/commands/check-build.py | 17 ++++------
elbepack/commands/control.py | 6 ++--
elbepack/commands/pkgdiff.py | 8 ++---
elbepack/commands/prjrepo.py | 6 ++--
elbepack/commands/test.py | 2 +-
elbepack/daemons/soap/authentication.py | 2 --
elbepack/daemons/soap/esoap.py | 10 ------
elbepack/daemons/soap/faults.py | 16 ++++-----
elbepack/db.py | 18 +++-------
elbepack/debpkg.py | 15 ++++-----
elbepack/directories.py | 4 +--
elbepack/dump.py | 1 -
elbepack/efilesystem.py | 15 ++++-----
elbepack/elbeproject.py | 6 +---
elbepack/elbexml.py | 4 +--
elbepack/filesystem.py | 2 +-
elbepack/finetuning.py | 8 ++---
elbepack/hdimg.py | 10 +-----
elbepack/initvmaction.py | 11 +++----
elbepack/junit.py | 4 +--
elbepack/log.py | 6 ++--
elbepack/pkgarchive.py | 2 --
elbepack/repomanager.py | 9 -----
elbepack/rfs.py | 6 ++--
elbepack/rpcaptcache.py | 11 +++----
elbepack/shellhelper.py | 2 +-
elbepack/soapclient.py | 3 --
elbepack/tests/test_doctest.py | 4 +--
elbepack/updated.py | 1 -
elbepack/updated_monitors.py | 5 ++-
elbepack/updatepkg.py | 1 -
elbepack/validate.py | 2 +-
elbepack/virtapt.py | 7 ++--
test/updated.py | 2 +-
40 files changed, 99 insertions(+), 213 deletions(-)
diff --git a/.pylintrc b/.pylintrc
index c301422900..8f0870cf35 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -13,20 +13,9 @@
# pygtk.require().
#init-hook=
-# Profiled execution.
-profile=no
-
-# Add files or directories to the blacklist. They should be base names, not
-# paths.
-ignore=CVS
-
# Pickle collected data for later comparisons.
persistent=yes
-# List of plugins (as comma separated values of python modules names) to load,
-# usually to register additional checkers.
-load-plugins=
-
extension-pkg-whitelist=apt_pkg,gpg.constants,lxml,_ped
@@ -41,22 +30,14 @@ extension-pkg-whitelist=apt_pkg,gpg.constants,lxml,_ped
# can either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once).
-disable=bad-whitespace,missing-docstring,bad-continuation,invalid-name,line-too-long,too-few-public-methods
+disable=missing-docstring,invalid-name,line-too-long,too-few-public-methods,no-member,raise-missing-from,too-many-arguments
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html
-output-format=text
-
-# Include message's id in output
-include-ids=no
-
-# Put messages in a separate file for each module / package specified on the
-# command line instead of printing them on stdout. Reports (if any) will be
-# written in a file name "pylint_global.[txt|html]".
-files-output=no
+output-format=colorized
# Tells whether to display a full report or only the messages
reports=yes
@@ -68,10 +49,6 @@ reports=yes
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
-# Add a comment according to your evaluation note. This is used by the global
-# evaluation report (RP0004).
-comment=no
-
[VARIABLES]
@@ -109,10 +86,6 @@ ignore-mixin-members=yes
# (useful for classes with attributes dynamically set).
ignored-classes=SQLObject
-# When zope mode is activated, add a predefined set of Zope acquired attributes
-# to generated-members.
-zope=no
-
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E0201 when accessed. Python regular
# expressions are accepted.
@@ -121,9 +94,6 @@ generated-members=REQUEST,acl_users,aq_parent,sigsum.*,sig\.mode\.NORMAL
[BASIC]
-# List of builtins function names that should not be used, separated by a comma
-bad-functions=map,filter,apply,input
-
# Regular expression which should only match correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
@@ -197,9 +167,6 @@ max-locals=15
# Maximum number of return / yield for function / method body
max-returns=6
-# Maximum number of branch for function / method body
-max-branchs=12
-
# Maximum number of statements in function / method body
max-statements=50
@@ -241,10 +208,3 @@ ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
-
-
-[EXCEPTIONS]
-
-# Exceptions that will emit a warning when being caught. Defaults to
-# "Exception"
-overgeneral-exceptions=Exception
diff --git a/docs/conf.py b/docs/conf.py
index 2cd19607f1..3f3df9c4e0 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -47,9 +47,9 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
-project = u'ELBE'
-copyright = u'2017, Linutronix GmbH' #pylint: disable=redefined-builtin
-author = u'Torben Hohn, Manuel Traut'
+project = 'ELBE'
+copyright = '2017, Linutronix GmbH' #pylint: disable=redefined-builtin
+author = 'Torben Hohn, Manuel Traut'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -130,8 +130,8 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
- (master_doc, 'ELBE.tex', u'ELBE Documentation',
- u'Torben Hohn, Manuel Traut', 'manual'),
+ (master_doc, 'ELBE.tex', 'ELBE Documentation',
+ 'Torben Hohn, Manuel Traut', 'manual'),
]
@@ -140,7 +140,7 @@ latex_documents = [
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- (master_doc, 'elbe', u'ELBE Documentation',
+ (master_doc, 'elbe', 'ELBE Documentation',
[author], 1)
]
@@ -151,7 +151,7 @@ man_pages = [
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
- (master_doc, 'ELBE', u'ELBE Documentation',
+ (master_doc, 'ELBE', 'ELBE Documentation',
author, 'ELBE', 'One line description of project.',
'Miscellaneous'),
]
diff --git a/elbe b/elbe
index eb0cdca94a..5c9a41d8ab 100755
--- a/elbe
+++ b/elbe
@@ -24,11 +24,11 @@ from elbepack.directories import init_directories, get_cmdlist
def usage():
- print("elbe v%s" % elbe_version)
+ print(f"elbe v{elbe_version}")
print("need a subcommand: e.g. \'elbe initvm\'. \n\
Available subcommands are: \n")
for i in get_cmdlist():
- print(" * %s" % i)
+ print(f" * {i}")
# First initialise the directories module
# so that it knows, where the current elbe
@@ -42,7 +42,7 @@ if len(sys.argv) < 2:
sys.exit(20)
if sys.argv[1] == "--version":
- print("elbe v%s" % (elbe_version))
+ print(f"elbe v{elbe_version}")
sys.exit(0)
cmd_list = get_cmdlist()
diff --git a/elbepack/aptpkgutils.py b/elbepack/aptpkgutils.py
index e21f82cab3..4ac3291bbf 100644
--- a/elbepack/aptpkgutils.py
+++ b/elbepack/aptpkgutils.py
@@ -32,9 +32,8 @@ statestring = {
def apt_pkg_md5(pkg):
# pylint: disable=protected-access
hashes = pkg._records.hashes
- # pylint: disable=consider-using-enumerate
- for i in range(len(hashes)):
- h = str(hashes[i])
+ for hash_entry in hashes:
+ h = str(hash_entry)
if h.startswith("MD5"):
return h.split(':')[1]
return ""
@@ -42,9 +41,8 @@ def apt_pkg_md5(pkg):
def apt_pkg_sha256(pkg):
# pylint: disable=protected-access
hashes = pkg._records.hashes
- # pylint: disable=consider-using-enumerate
- for i in range(len(hashes)):
- h = str(hashes[i])
+ for hash_entry in hashes:
+ h = str(hash_entry)
if h.startswith("SHA256"):
return h.split(':')[1]
return ""
@@ -162,8 +160,6 @@ class PackageBase:
installed_prio, candidate_prio,
state, is_auto_installed, origin, architecture):
- # pylint: disable=too-many-arguments
-
self.name = name
self.installed_version = installed_version
self.candidate_version = candidate_version
@@ -183,8 +179,8 @@ class PackageBase:
f"{statestring[self.state]}>")
def __eq__(self, other):
- vereq = (self.installed_version == other.installed_version)
- nameq = (self.name == other.name)
+ vereq = self.installed_version == other.installed_version
+ nameq = self.name == other.name
return vereq and nameq
diff --git a/elbepack/aptprogress.py b/elbepack/aptprogress.py
index b2311d0e27..2359892bd9 100644
--- a/elbepack/aptprogress.py
+++ b/elbepack/aptprogress.py
@@ -100,8 +100,7 @@ class ElbeAcquireProgress (AcquireProgress):
self.write(line)
- @staticmethod
- def pulse(_owner):
+ def pulse(self, owner):
return True
diff --git a/elbepack/cdroms.py b/elbepack/cdroms.py
index 17045affde..5edbd5e473 100644
--- a/elbepack/cdroms.py
+++ b/elbepack/cdroms.py
@@ -25,7 +25,6 @@ from elbepack.isooptions import get_iso_options
CDROM_SIZE = 640 * 1000 * 1000
-# pylint: disable=too-many-arguments
def add_source_pkg(repo, component, cache, pkg, version, forbid):
if pkg in forbid:
return
@@ -45,7 +44,6 @@ def mk_source_cdrom(components, codename,
cdrom_size=CDROM_SIZE, xml=None,
mirror='http://ftp.de.debian.org/debian'):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
@@ -122,7 +120,6 @@ def mk_source_cdrom(components, codename,
options=options)) for component, repo in repos.items()]
def mk_binary_cdrom(rfs, arch, codename, init_codename, xml, target):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements
diff --git a/elbepack/commands/check-build.py b/elbepack/commands/check-build.py
index e95ced262b..91af2f1d4f 100644
--- a/elbepack/commands/check-build.py
+++ b/elbepack/commands/check-build.py
@@ -8,6 +8,7 @@ import logging
import optparse
import os
import shutil
+import sys
import tempfile
import traceback
@@ -68,7 +69,7 @@ class CheckException(Exception):
class CheckBase:
- tests = dict()
+ tests = {}
def __init__(self):
self.ret = 0
@@ -91,14 +92,8 @@ class CheckBase:
return test
return _register
- # pylint: disable=no-self-use
def run(self):
raise Exception("Check run method not implemented")
- # pylint: disable=unreachable
- return 0
-
- def fail(self, reason):
- raise CheckException(reason)
@CheckBase.register("cdrom")
class CheckCdroms(CheckBase):
@@ -109,7 +104,7 @@ class CheckCdroms(CheckBase):
try:
do(f'7z x -o"{tgt}" "{cdrom}"')
except CommandError as E:
- self.fail(f"Failed to extract cdrom {cdrom}:\n{E}")
+ raise CheckException(f"Failed to extract cdrom {cdrom}:\n{E}")
def dpkg_get_infos(self, path, fmt):
"""Get dpkg infos for .deb and .dsc file formats"""
@@ -120,7 +115,7 @@ class CheckCdroms(CheckBase):
cmd = f'grep -E "^({"|".join(fmt)}):" {path}'
return get_command_out(cmd).decode("utf-8")
except CommandError as E:
- self.fail(
+ raise CheckException(
f"Failed to get debian infos ({'|'.join(fmt)}) "
f"for {path}:\n{E}")
@@ -368,8 +363,8 @@ class CheckCdroms(CheckBase):
self.ret = 1
# List all missing binaries
- for bin_name in binaries:
- for bin_version in binaries[bin_name]:
+ for bin_name, versions in binaries.items():
+ for bin_version in versions:
logging.error("Missing binary %s_%s", bin_name, bin_version)
logging.info("Succesfully validated %d binary packages out of %d",
diff --git a/elbepack/commands/control.py b/elbepack/commands/control.py
index 000e5f5058..d6af9ae5fe 100644
--- a/elbepack/commands/control.py
+++ b/elbepack/commands/control.py
@@ -129,7 +129,7 @@ def run_command(argv):
debug=opt.debug,
retries=int(
opt.retries))
- except URLError as e:
+ except URLError:
print(
f"Failed to connect to Soap server {opt.host}:{opt.port}\n",
file=sys.stderr)
@@ -137,7 +137,7 @@ def run_command(argv):
print("Check, whether the initvm is actually running.", file=sys.stderr)
print("try 'elbe initvm start'", file=sys.stderr)
sys.exit(10)
- except socket.error as e:
+ except socket.error:
print(
f"Failed to connect to Soap server {opt.host}:{opt.port}\n",
file=sys.stderr)
@@ -147,7 +147,7 @@ def run_command(argv):
file=sys.stderr)
print("try 'elbe initvm attach'", file=sys.stderr)
sys.exit(10)
- except BadStatusLine as e:
+ except BadStatusLine:
print(
f"Failed to connect to Soap server {opt.host}:{opt.port}\n",
file=sys.stderr)
diff --git a/elbepack/commands/pkgdiff.py b/elbepack/commands/pkgdiff.py
index 789c70825a..305649e7a6 100644
--- a/elbepack/commands/pkgdiff.py
+++ b/elbepack/commands/pkgdiff.py
@@ -54,7 +54,7 @@ def run_command(argv):
gc = apt.Cache()
gen_pkgs = {}
- # pylint: disable=E1133
+ # pylint: disable=not-an-iterable
for p in gen_cache.packages:
if opt.noauto:
if p.current_ver and not \
@@ -73,7 +73,7 @@ def run_command(argv):
fc = apt.Cache()
fix_pkgs = {}
- # pylint: disable=E1133
+ # pylint: disable=not-an-iterable
for p in fix_cache.packages:
if opt.noauto:
if p.current_ver and not \
@@ -89,9 +89,9 @@ def run_command(argv):
print(f"+<pkg>{p}</pkg>")
for p in gen_pkgs:
- if p not in fix_pkgs.keys():
+ if p not in fix_pkgs:
print(f"-<pkg>{p}</pkg>")
for p in fix_pkgs:
- if p in gen_pkgs.keys() and fix_pkgs[p] != gen_pkgs[p]:
+ if p in gen_pkgs and fix_pkgs[p] != gen_pkgs[p]:
print(f"{p}: Version mismatch {fix_pkgs[p]} != {gen_pkgs[p]}")
diff --git a/elbepack/commands/prjrepo.py b/elbepack/commands/prjrepo.py
index 2488291145..1e1a260454 100644
--- a/elbepack/commands/prjrepo.py
+++ b/elbepack/commands/prjrepo.py
@@ -74,7 +74,7 @@ def run_command(argv):
debug=opt.debug,
retries=int(
opt.retries))
- except URLError as e:
+ except URLError:
print(
f"Failed to connect to Soap server {opt.host}:{opt.port}\n",
file=sys.stderr)
@@ -82,7 +82,7 @@ def run_command(argv):
print("Check, wether the initvm is actually running.", file=sys.stderr)
print("try `elbe initvm start`", file=sys.stderr)
sys.exit(10)
- except socket.error as e:
+ except socket.error:
print(
f"Failed to connect to Soap server {opt.host}:{opt.port}\n",
file=sys.stderr)
@@ -92,7 +92,7 @@ def run_command(argv):
file=sys.stderr)
print("try 'elbe initvm attach'", file=sys.stderr)
sys.exit(10)
- except BadStatusLine as e:
+ except BadStatusLine:
print(
f"Failed to connect to Soap server {opt.host}:{opt.port}\n",
file=sys.stderr)
diff --git a/elbepack/commands/test.py b/elbepack/commands/test.py
index 2686826e7e..84e249bf8d 100644
--- a/elbepack/commands/test.py
+++ b/elbepack/commands/test.py
@@ -52,7 +52,7 @@ class ElbeTestCase(unittest.TestCase):
super().__init__(methodName)
def __str__(self):
- name = super(ElbeTestCase, self).__str__()
+ name = super().__str__()
if self.param:
return f"{name} : param={self.param}"
return name
diff --git a/elbepack/daemons/soap/authentication.py b/elbepack/daemons/soap/authentication.py
index febca6ae21..0802613741 100644
--- a/elbepack/daemons/soap/authentication.py
+++ b/elbepack/daemons/soap/authentication.py
@@ -87,7 +87,6 @@ def authenticated_uid(func):
if func.__code__.co_argcount == 7:
@wraps(func)
def wrapped(self, arg1, arg2, arg3, arg4, arg5):
- # pylint: disable=too-many-arguments
s = self.transport.req_env['beaker.session']
try:
uid = s['userid']
@@ -162,7 +161,6 @@ def authenticated_admin(func):
if func.__code__.co_argcount == 6:
@wraps(func)
def wrapped(self, arg1, arg2, arg3, arg4, arg5):
- # pylint: disable=too-many-arguments
s = self.transport.req_env['beaker.session']
try:
uid = s['userid']
diff --git a/elbepack/daemons/soap/esoap.py b/elbepack/daemons/soap/esoap.py
index 2cf6fcd2ac..056fb02d1b 100644
--- a/elbepack/daemons/soap/esoap.py
+++ b/elbepack/daemons/soap/esoap.py
@@ -41,7 +41,6 @@ class ESoap (ServiceBase):
@rpc(_returns=String)
@soap_faults
def get_version(self):
- # pylint: disable=no-self-use
return elbe_version
@rpc(String, String, _returns=Boolean)
@@ -62,7 +61,6 @@ class ESoap (ServiceBase):
@soap_faults
@authenticated_admin
def install_elbe_version(self, version, pkglist):
- # pylint: disable=no-self-use
if is_devel:
return SoapCmdReply(10,
'Initvm is in devel mode: installing another\n'
@@ -97,8 +95,6 @@ class ESoap (ServiceBase):
@authenticated_admin
def add_user(self, name, fullname, password, email, admin):
- # pylint: disable=too-many-arguments
-
self.app.pm.db.add_user(name, fullname, password, email, admin)
@rpc(_returns=Array(SoapProject))
@@ -127,8 +123,6 @@ class ESoap (ServiceBase):
@soap_faults
def upload_file(self, uid, builddir, fname, blob, part):
- # pylint: disable=too-many-arguments
-
fn = os.path.join(builddir, fname)
if part == 0:
if self.app.pm.db.is_busy(builddir):
@@ -214,8 +208,6 @@ class ESoap (ServiceBase):
@soap_faults
def build(self, uid, builddir, build_bin, build_src, skip_pbuilder):
- # pylint: disable=too-many-arguments
-
self.app.pm.open_project(uid, builddir)
self.app.pm.build_current_project(uid, build_bin, build_src,
skip_pbuilder)
@@ -297,7 +289,6 @@ class ESoap (ServiceBase):
@rpc(String, Integer, String, Boolean)
@authenticated_uid
@soap_faults
- # pylint: disable=too-many-arguments
def finish_pdebuild(self, uid, builddir, cpuset, profile, cross):
self.app.pm.open_project(uid, builddir)
self.app.pm.build_current_pdebuild(uid, cpuset, profile, cross)
@@ -383,7 +374,6 @@ class ESoap (ServiceBase):
@authenticated_admin
@soap_faults
def shutdown_initvm(self):
- # pylint: disable=no-self-use
system("systemctl --no-block poweroff")
@rpc(String)
diff --git a/elbepack/daemons/soap/faults.py b/elbepack/daemons/soap/faults.py
index 88d6ed3c52..267c92c2f1 100644
--- a/elbepack/daemons/soap/faults.py
+++ b/elbepack/daemons/soap/faults.py
@@ -88,7 +88,7 @@ def soap_faults(func):
def wrapped(self):
try:
return func(self)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
@@ -108,7 +108,7 @@ def soap_faults(func):
def wrapped(self, arg1):
try:
return func(self, arg1)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
@@ -128,7 +128,7 @@ def soap_faults(func):
def wrapped(self, arg1, arg2):
try:
return func(self, arg1, arg2)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
@@ -148,7 +148,7 @@ def soap_faults(func):
def wrapped(self, arg1, arg2, arg3):
try:
return func(self, arg1, arg2, arg3)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
@@ -168,7 +168,7 @@ def soap_faults(func):
def wrapped(self, arg1, arg2, arg3, arg4):
try:
return func(self, arg1, arg2, arg3, arg4)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
@@ -186,10 +186,9 @@ def soap_faults(func):
if func.__code__.co_argcount == 6:
@wraps(func)
def wrapped(self, arg1, arg2, arg3, arg4, arg5):
- # pylint: disable=too-many-arguments
try:
return func(self, arg1, arg2, arg3, arg4, arg5)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
@@ -207,10 +206,9 @@ def soap_faults(func):
if func.__code__.co_argcount == 7:
@wraps(func)
def wrapped(self, arg1, arg2, arg3, arg4, arg5, arg6):
- # pylint: disable=too-many-arguments
try:
return func(self, arg1, arg2, arg3, arg4, arg5, arg6)
- except InvalidState as e:
+ except InvalidState:
raise SoapElbeInvalidState()
except ProjectManagerError as e:
raise SoapElbeProjectError(str(e))
diff --git a/elbepack/db.py b/elbepack/db.py
index 6824554d62..f6482af911 100644
--- a/elbepack/db.py
+++ b/elbepack/db.py
@@ -70,8 +70,6 @@ def get_versioned_filename(name, version, suffix):
def _update_project_file(s, builddir, name, mime_type, description):
- # pylint: disable=too-many-arguments
-
filename = os.path.join(builddir, name)
try:
f = s.query(ProjectFile).\
@@ -195,7 +193,7 @@ class ElbeDB:
f"cannot set savesh file while project {builddir} is busy")
p.edit = datetime.utcnow()
- if p.status == "empty_project" or p.status == "build_failed":
+ if p.status in ("empty_project", "build_failed"):
p.status = "needs_build"
elif p.status == "build_done":
p.status = "has_changes"
@@ -228,7 +226,7 @@ class ElbeDB:
f"cannot set presh file while project {builddir} is busy")
p.edit = datetime.utcnow()
- if p.status == "empty_project" or p.status == "build_failed":
+ if p.status in ("empty_project", "build_failed"):
p.status = "needs_build"
elif p.status == "build_done":
p.status = "has_changes"
@@ -259,7 +257,7 @@ class ElbeDB:
f"cannot set postsh file while project {builddir} is busy")
p.edit = datetime.utcnow()
- if p.status == "empty_project" or p.status == "build_failed":
+ if p.status in ("empty_project", "build_failed"):
p.status = "needs_build"
elif p.status == "build_done":
p.status = "has_changes"
@@ -304,7 +302,7 @@ class ElbeDB:
p.name = xml.text("project/name")
p.version = xml.text("project/version")
p.edit = datetime.utcnow()
- if p.status == "empty_project" or p.status == "build_failed":
+ if p.status in ("empty_project", "build_failed"):
p.status = "needs_build"
elif p.status == "build_done":
p.status = "has_changes"
@@ -574,7 +572,7 @@ class ElbeDB:
raise ElbeDBError(
f"project {builddir} is not registered in the database")
- if p.status == "empty_project" or p.status == "busy":
+ if p.status in ("empty_project", "busy"):
raise ElbeDBError(
"project: " +
builddir +
@@ -861,8 +859,6 @@ class ElbeDB:
def add_user(self, name, fullname, password, email, admin):
- # pylint: disable=too-many-arguments
-
pwhash = pbkdf2_sha512.hash(password)
u = User(name=name,
@@ -879,8 +875,6 @@ class ElbeDB:
def modify_user(self, userid, name, fullname, email, admin,
password=None):
- # pylint: disable=too-many-arguments
-
with session_scope(self.session) as s:
try:
u = s.query(User).filter(User.id == userid).one()
@@ -977,8 +971,6 @@ class ElbeDB:
@classmethod
def init_db(cls, name, fullname, password, email, admin):
- # pylint: disable=too-many-arguments
-
if not os.path.exists(cls.db_path):
try:
os.makedirs(cls.db_path)
diff --git a/elbepack/debpkg.py b/elbepack/debpkg.py
index 4e21865c08..50d0ce46fd 100644
--- a/elbepack/debpkg.py
+++ b/elbepack/debpkg.py
@@ -24,12 +24,13 @@ control_template = string.Template(control_template_string)
def gen_controlfile(name, version, arch, description, deps):
- d = dict(
- name=name,
- version=version,
- arch=arch,
- description=description,
- deps=deps)
+ d = {
+ 'name': name,
+ 'version': version,
+ 'arch': arch,
+ 'description': description,
+ 'deps': deps
+ }
return control_template.substitute(d)
@@ -49,8 +50,6 @@ def build_binary_deb(
deps,
target_dir):
- # pylint: disable=too-many-arguments
-
tmpdir = mkdtemp()
pkgfname = f"{name}_{version}_{arch}"
pkgdir = os.path.join(tmpdir, pkgfname)
diff --git a/elbepack/directories.py b/elbepack/directories.py
index c088269c13..81f6538f2f 100644
--- a/elbepack/directories.py
+++ b/elbepack/directories.py
@@ -11,8 +11,8 @@ from pkgutil import iter_modules
import elbepack
-elbe_exe = None
-elbe_dir = None
+elbe_exe = ""
+elbe_dir = ""
def init_directories(elbe_relpath):
diff --git a/elbepack/dump.py b/elbepack/dump.py
index 36db39402b..8df0a742ee 100644
--- a/elbepack/dump.py
+++ b/elbepack/dump.py
@@ -180,7 +180,6 @@ def check_full_pkgs(pkgs, fullpkgs, cache):
def elbe_report(xml, buildenv, cache, targetfs):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
# pylint: disable=too-many-branches
diff --git a/elbepack/efilesystem.py b/elbepack/efilesystem.py
index 59a86502d9..15386ecaea 100644
--- a/elbepack/efilesystem.py
+++ b/elbepack/efilesystem.py
@@ -205,8 +205,7 @@ class ElbeFilesystem(Filesystem):
except IOError as e:
logging.exception("Error while processing license file %s",
copyright_fname)
- lic_text = u"Error while processing license file %s: '%s'" % (
- copyright_file, e.strerror)
+ lic_text = f"Error while processing license file {copyright_file}: '{e.strerror}'"
else:
logging.warning("License file does not exist, skipping %s",
copyright_fname)
@@ -440,12 +439,12 @@ class TargetFs(ChRootFilesystem):
if self.xml.has("target/package/tar/options"):
options = self.xml.text("target/package/tar/options")
cmd = "tar cfz %(dest)s/%(fname)s -C %(sdir)s %(options)s ."
- args = dict(
- options=options,
- dest=targetdir,
- fname=targz_name,
- sdir=self.fname('')
- )
+ args = {
+ 'options': options,
+ 'dest': targetdir,
+ 'fname': targz_name,
+ 'sdir': self.fname('')
+ }
do(cmd % args)
# only append filename if creating tarball was successful
self.images.append(targz_name)
diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
index 993eeb04de..4d28739657 100644
--- a/elbepack/elbeproject.py
+++ b/elbepack/elbeproject.py
@@ -88,7 +88,6 @@ def gen_sdk_scripts(triplet,
prj_version,
builddir,
sdkpath):
- # pylint: disable=too-many-arguments
prj_name = prj_name.replace(" ", "_")
prj_version = prj_version.replace(" ", "_")
@@ -134,8 +133,6 @@ class ElbeProject:
postsh_file=None,
savesh_file=None):
- # pylint: disable=too-many-arguments
-
self.builddir = os.path.abspath(str(builddir))
self.chrootpath = os.path.join(self.builddir, "chroot")
self.targetpath = os.path.join(self.builddir, "target")
@@ -276,7 +273,7 @@ class ElbeProject:
try:
cache.mark_install_devpkgs(set(ignore_pkgs),
set(ignore_dev_pkgs))
- except SystemError as e:
+ except SystemError:
logging.exception("Mark install devpkgs failed")
try:
cache.commit()
@@ -546,7 +543,6 @@ class ElbeProject:
def build(self, build_bin=False, build_sources=False, cdrom_size=None,
skip_pkglist=False, skip_pbuild=False):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
# pylint: disable=too-many-branches
diff --git a/elbepack/elbexml.py b/elbepack/elbexml.py
index bc86ff3ce1..bc2afa843c 100644
--- a/elbepack/elbexml.py
+++ b/elbepack/elbexml.py
@@ -294,9 +294,9 @@ class ElbeXML:
try:
section = lsplit[3]
if line.startswith("deb "):
- r["binstr"] = (f"{section}/binary-{arch}/Packages")
+ r["binstr"] = f"{section}/binary-{arch}/Packages"
else:
- r["srcstr"] = (f"{section}/source/Sources")
+ r["srcstr"] = f"{section}/source/Sources"
except IndexError:
if line.startswith("deb "):
r["binstr"] = "Packages"
diff --git a/elbepack/filesystem.py b/elbepack/filesystem.py
index 8a3bb08eb3..3c80572bf6 100644
--- a/elbepack/filesystem.py
+++ b/elbepack/filesystem.py
@@ -320,7 +320,7 @@ class Filesystem:
False
"""
try:
- return os.remove(self.fname(path))
+ os.remove(self.fname(path))
except BaseException:
if not noerr:
raise
diff --git a/elbepack/finetuning.py b/elbepack/finetuning.py
index e67fe6d3ec..f2bd78892b 100644
--- a/elbepack/finetuning.py
+++ b/elbepack/finetuning.py
@@ -341,8 +341,8 @@ class AddFileAction(FinetuningAction):
try:
target.mkdir_p(os.path.dirname(dst))
- except OSError as E:
- if E.errno is not errno.EEXIST:
+ except OSError as e:
+ if e.errno is not errno.EEXIST:
raise
content = AddFileAction.decode(content, encoding)
@@ -731,8 +731,8 @@ class TestSuites(FinetuningAction):
ts = TestSuite(test_suite, target)
try:
tss.append(ts())
- except TestException as E:
- logging.exception(str(E))
+ except TestException as e:
+ logging.exception(str(e))
TestSuite.to_file(output, tss)
diff --git a/elbepack/hdimg.py b/elbepack/hdimg.py
index 6ac259e702..f764138040 100644
--- a/elbepack/hdimg.py
+++ b/elbepack/hdimg.py
@@ -308,8 +308,6 @@ def create_partition(
size_in_sectors,
current_sector):
- # pylint: disable=too-many-arguments
-
sector_size = 512
if part.text("size") == "remain" and disk.type == "gpt":
sz = size_in_sectors - 35 - current_sector
@@ -348,8 +346,6 @@ def create_partition(
def create_label(disk, part, ppart, fslabel, target, grub):
- # pylint: disable=too-many-arguments
-
entry = fslabel[part.text("label")]
entry.set_geometry(ppart, disk)
@@ -402,8 +398,6 @@ def create_logical_partitions(disk,
target,
grub):
- # pylint: disable=too-many-arguments
-
current_sector = epart.geometry.start
size_in_sectors = current_sector + epart.geometry.length
@@ -429,7 +423,6 @@ def create_logical_partitions(disk,
def do_image_hd(hd, fslabel, target, grub_version, grub_fw_type=None):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
@@ -529,7 +522,6 @@ def add_binary_blob(hd, target):
def do_hdimg(xml, target, rfs, grub_version, grub_fw_type=None):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
@@ -619,7 +611,7 @@ def do_hdimg(xml, target, rfs, grub_version, grub_fw_type=None):
# dd binary blobs onto images
for i in xml.tgt.node("images"):
- if (i.tag == "msdoshd") or (i.tag == "gpthd"):
+ if i.tag in ("msdoshd", "gpthd"):
add_binary_blob(i, target)
# use set() to remove duplicates, but
diff --git a/elbepack/initvmaction.py b/elbepack/initvmaction.py
index 497385bb89..7875c69b7e 100644
--- a/elbepack/initvmaction.py
+++ b/elbepack/initvmaction.py
@@ -16,8 +16,7 @@ import datetime
import elbepack
from elbepack.treeutils import etree
from elbepack.directories import elbe_exe
-from elbepack.shellhelper import CommandError, system, command_out_stderr, \
- command_out
+from elbepack.shellhelper import CommandError, system, command_out_stderr
from elbepack.filesystem import TmpdirFilesystem
from elbepack.elbexml import ElbeXML, ValidationError, ValidationMode
from elbepack.config import cfg
@@ -96,10 +95,10 @@ class InitVMAction:
time.sleep(10)
try:
self.conn = libvirt.open("qemu:///system")
- except libvirt.libvirtError as verr:
- if not isinstance(verr.args[0], str):
+ except libvirt.libvirtError as virterr:
+ if not isinstance(virterr.args[0], str):
raise
- if verr.args[0].startswith('Failed to connect socket to'):
+ if virterr.args[0].startswith('Failed to connect socket to'):
pass
if self.conn:
@@ -696,7 +695,7 @@ class SubmitAction(InitVMAction):
class SyncAction(InitVMAction):
def __init__(self, node):
- super(SyncAction, self).__init__(node)
+ super().__init__(node)
def execute(self, _initvmdir, opt, args):
top_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
diff --git a/elbepack/junit.py b/elbepack/junit.py
index bbaf5a8278..0aacb722c5 100644
--- a/elbepack/junit.py
+++ b/elbepack/junit.py
@@ -15,7 +15,7 @@ class TestSuite:
test_dict = {}
def __init__(self, node, target):
- super(TestSuite, self).__init__()
+ super().__init__()
self.node = node
self.target = target
@@ -56,7 +56,7 @@ class BaseTest:
tag = None
def __init__(self, node, target):
- super(BaseTest, self).__init__()
+ super().__init__()
self.node = node
self.target = target
diff --git a/elbepack/log.py b/elbepack/log.py
index 051737c0e7..9619949ab9 100644
--- a/elbepack/log.py
+++ b/elbepack/log.py
@@ -23,7 +23,7 @@ logging_methods = []
class LoggingQueue(collections.deque):
def __init__(self):
- super(LoggingQueue, self).__init__(maxlen=1024)
+ super().__init__(maxlen=1024)
self.max_level = logging.NOTSET
def note_level(self, level):
@@ -36,7 +36,7 @@ class QHandler(logging.Handler):
queues = {}
def __init__(self, target, *args, **kwargs):
- super(QHandler, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
if target not in QHandler.queues:
QHandler.queues[target] = LoggingQueue()
self.Q = QHandler.queues[target]
@@ -79,7 +79,7 @@ def reset_level(proj):
class ThreadFilter(logging.Filter):
def __init__(self, allowed, *args, **kwargs):
- super(ThreadFilter, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
self.allowed = allowed
self.thread = threading.current_thread().ident
diff --git a/elbepack/pkgarchive.py b/elbepack/pkgarchive.py
index 92babf7194..4187de2ec8 100644
--- a/elbepack/pkgarchive.py
+++ b/elbepack/pkgarchive.py
@@ -15,8 +15,6 @@ from elbepack.repomanager import RepoBase, RepoAttributes
class ArchiveRepo(RepoBase):
def __init__(self, xml, pathname, origin, description, components):
- # pylint: disable=too-many-arguments
-
arch = xml.text("project/arch", key="arch")
codename = xml.text("project/suite")
diff --git a/elbepack/repomanager.py b/elbepack/repomanager.py
index 1718f849cf..1565d962b5 100644
--- a/elbepack/repomanager.py
+++ b/elbepack/repomanager.py
@@ -8,7 +8,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
import os
-import shutil
from debian.deb822 import Deb822
@@ -59,8 +58,6 @@ class RepoBase:
description,
maxsize=None):
- # pylint: disable=too-many-arguments
-
self.vol_path = path
self.volume_count = 0
@@ -384,8 +381,6 @@ class CdromInitRepo(RepoBase):
def __init__(self, init_codename, path,
mirror='http://ftp.de.debian.org/debian'):
- # pylint: disable=too-many-arguments
-
init_attrs = RepoAttributes(
init_codename, "amd64", [
"main", "main/debian-installer"], mirror)
@@ -407,8 +402,6 @@ class CdromBinRepo(RepoBase):
path,
mirror='http://ftp.debian.org/debian'):
- # pylint: disable=too-many-arguments
-
repo_attrs = RepoAttributes(codename, arch, ["main", "added"], mirror)
if init_codename is not None:
init_attrs = RepoAttributes(
@@ -429,8 +422,6 @@ class CdromSrcRepo(RepoBase):
def __init__(self, codename, init_codename, path, maxsize,
mirror='http://ftp.debian.org/debian'):
- # pylint: disable=too-many-arguments
-
repo_attrs = RepoAttributes(codename,
"source",
["main",
diff --git a/elbepack/rfs.py b/elbepack/rfs.py
index 6974e2d69a..bc4adf453b 100644
--- a/elbepack/rfs.py
+++ b/elbepack/rfs.py
@@ -64,8 +64,6 @@ class DebootstrapException (Exception):
class BuildEnv:
def __init__(self, xml, path, build_sources=False, clean=False, arch="default", hostsysroot=False):
- # pylint: disable=too-many-arguments
-
self.xml = xml
self.path = path
self.rpcaptcache = None
@@ -305,7 +303,7 @@ class BuildEnv:
preseed_txt = preseed_to_text(preseed)
self.rfs.write_file("var/cache/elbe/preseed.txt", 0o644, preseed_txt)
with self.rfs:
- cmd = (f'debconf-set-selections < {self.rfs.fname("var/cache/elbe/preseed.txt")}')
+ cmd = f'debconf-set-selections < {self.rfs.fname("var/cache/elbe/preseed.txt")}'
chroot(self.rfs.path, cmd)
@@ -317,7 +315,7 @@ class BuildEnv:
hostname = self.xml.text("target/hostname")
fqdn = hostname
if self.xml.has("target/domain"):
- fqdn = (f"{hostname}.{self.xml.text('target/domain')}")
+ fqdn = f"{hostname}.{self.xml.text('target/domain')}"
chroot(self.rfs.path,
"""/bin/sh -c 'echo "127.0.0.1 localhost" >> /etc/hosts'""")
diff --git a/elbepack/rpcaptcache.py b/elbepack/rpcaptcache.py
index 2177498fc7..6c1f28e441 100644
--- a/elbepack/rpcaptcache.py
+++ b/elbepack/rpcaptcache.py
@@ -56,7 +56,7 @@ class MyMan(BaseManager):
def start(self):
"""Redirect outputs of the process to an async logging thread"""
r, w = os.pipe()
- super(MyMan, self).start(MyMan.redirect_outputs, [r, w])
+ super().start(MyMan.redirect_outputs, [r, w])
async_logging(r, w, soap, log)
class InChRootObject:
@@ -73,7 +73,6 @@ class RPCAPTCache(InChRootObject):
def __init__(self, rfs, arch,
notifier=None, norecommend=False, noauth=True):
- # pylint: disable=too-many-arguments
InChRootObject.__init__(self, rfs)
self.notifier = notifier
@@ -351,7 +350,7 @@ class RPCAPTCache(InChRootObject):
return list(src_set)
@staticmethod
- def compare_versions(self, ver1, ver2):
+ def compare_versions(ver1, ver2):
return version_compare(ver1, ver2)
def download_binary(self, pkgname, path, version=None):
@@ -393,6 +392,8 @@ class RPCAPTCache(InChRootObject):
# Copy from src to dst all files of the source package
dsc = None
files = []
+
+ # pylint: disable=not-an-iterable
for _file in rec.files:
src = os.path.basename(_file.path)
dst = os.path.join(dest_dir, src)
@@ -415,6 +416,7 @@ class RPCAPTCache(InChRootObject):
if dsc is None:
raise ValueError(f"No source found for {src_name}_{src_version}")
+ # pylint: disable=not-an-iterable
for item in acq.items:
if item.STAT_DONE != item.status:
raise FetchError(
@@ -426,8 +428,6 @@ class RPCAPTCache(InChRootObject):
def get_rpcaptcache(rfs, arch,
notifier=None, norecommend=False, noauth=True):
- # pylint: disable=too-many-arguments
-
mm = MyMan()
mm.start()
@@ -435,5 +435,4 @@ def get_rpcaptcache(rfs, arch,
# see the creation of MyMan.RPCAPTCache by
# MyMan.register()
#
- # pylint: disable=no-member
return mm.RPCAPTCache(rfs, arch, notifier, norecommend, noauth)
diff --git a/elbepack/shellhelper.py b/elbepack/shellhelper.py
index f8ee0b58a6..17b888620e 100644
--- a/elbepack/shellhelper.py
+++ b/elbepack/shellhelper.py
@@ -21,7 +21,7 @@ soap = logging.getLogger("soap")
class CommandError(Exception):
def __init__(self, cmd, returncode):
- super(CommandError, self).__init__(cmd, returncode)
+ super().__init__(cmd, returncode)
self.returncode = returncode
self.cmd = cmd
diff --git a/elbepack/soapclient.py b/elbepack/soapclient.py
index 5203e198f0..2fb9150220 100644
--- a/elbepack/soapclient.py
+++ b/elbepack/soapclient.py
@@ -45,8 +45,6 @@ def set_suds_debug(debug):
class ElbeSoapClient:
def __init__(self, host, port, user, passwd, retries=10, debug=False):
- # pylint: disable=too-many-arguments
-
# Mess with suds logging, for debug, or squelch warnings
set_suds_debug(debug)
@@ -894,7 +892,6 @@ class UploadPackageAction(RepoAction):
def __init__(self, node):
RepoAction.__init__(self, node)
- # pylint: disable=arguments-differ
@staticmethod
def upload_file(client, f, builddir):
# Uploads file f into builddir in intivm
diff --git a/elbepack/tests/test_doctest.py b/elbepack/tests/test_doctest.py
index 58c2143260..6a2fa3e2a0 100644
--- a/elbepack/tests/test_doctest.py
+++ b/elbepack/tests/test_doctest.py
@@ -5,8 +5,8 @@
import doctest
-import elbepack.shellhelper as shellhelper
-import elbepack.filesystem as filesystem
+from elbepack import shellhelper
+from elbepack import filesystem
from elbepack.commands.test import ElbeTestCase
diff --git a/elbepack/updated.py b/elbepack/updated.py
index 3f99168a91..50eb725add 100644
--- a/elbepack/updated.py
+++ b/elbepack/updated.py
@@ -109,7 +109,6 @@ class UpdateService (ServiceBase):
@rpc(_returns=String)
def list_snapshots(self):
- # pylint: disable=no-self-use
# use comma separated string because array of strings triggers a bug in
# python suds :(
snapshots = ""
diff --git a/elbepack/updated_monitors.py b/elbepack/updated_monitors.py
index f1d237b44a..90da2480d7 100644
--- a/elbepack/updated_monitors.py
+++ b/elbepack/updated_monitors.py
@@ -27,7 +27,7 @@ class UpdateMonitor:
class USBMonitor (UpdateMonitor):
def __init__(self, status, recursive=False):
- super(USBMonitor, self).__init__(status)
+ super().__init__(status)
self.recursive = recursive
self.context = pyudev.Context()
self.monitor = pyudev.Monitor.from_netlink(self.context)
@@ -114,11 +114,10 @@ class FileMonitor (UpdateMonitor):
return
def __init__(self, status, update_dir):
- super(FileMonitor, self).__init__(status)
+ super().__init__(status)
self.wm = pyinotify.WatchManager()
self.notifier = pyinotify.Notifier(self.wm)
- # pylint: disable=no-member
self.wm.add_watch(update_dir, pyinotify.IN_CLOSE_WRITE,
proc_fun=FileMonitor.EventHandler(self.status))
self.observer = FileMonitor.ObserverThread(self.status, self)
diff --git a/elbepack/updatepkg.py b/elbepack/updatepkg.py
index 1cb9cfaab0..00c9085067 100644
--- a/elbepack/updatepkg.py
+++ b/elbepack/updatepkg.py
@@ -35,7 +35,6 @@ def gen_update_pkg(project, xml_filename, upd_filename,
override_buildtype=None, skip_validate=False, debug=False,
cmd_dir=None, cfg_dir=None):
- # pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
# pylint: disable=too-many-branches
diff --git a/elbepack/validate.py b/elbepack/validate.py
index 93f4ea2fb8..1f0f26a418 100644
--- a/elbepack/validate.py
+++ b/elbepack/validate.py
@@ -72,7 +72,7 @@ def validate_xml_content(xml):
# Check if primary mirror is using https
primary_proto = xml.findtext("/project/mirror/primary_proto", "")
- is_primary_proto_https = (primary_proto.lower() == "https")
+ is_primary_proto_https = primary_proto.lower() == "https"
# Check if any additional mirror is using https
has_https_urls = False
diff --git a/elbepack/virtapt.py b/elbepack/virtapt.py
index 9703493186..09b5ff29c0 100644
--- a/elbepack/virtapt.py
+++ b/elbepack/virtapt.py
@@ -60,7 +60,6 @@ def lookup_uri(v, d, target_pkg):
if not x.is_trusted:
return target_pkg, uri, ""
- # pylint: disable=no-member
hashval = str(r.hashes.find('SHA256')).split(':')[1]
return target_pkg, uri, hashval
@@ -168,8 +167,7 @@ class VirtApt:
def stop(self):
pass
- @staticmethod
- def pulse(_obj):
+ def pulse(self, owner):
return True
def initialize_dirs(self):
@@ -218,7 +216,6 @@ class VirtApt:
x = self.source.find_index(c.file_list[0][0])
uri = x.archive_uri(r.filename)
- # pylint: disable=no-member
hashval = str(r.hashes.find('SHA256'))
acq = apt_pkg.AcquireFile(self.acquire,
@@ -269,7 +266,7 @@ class VirtApt:
pkg = None
c = None
if not c:
- # pylint: disable=E1133
+ # pylint: disable=not-an-iterable
for p in self.cache.packages:
for x in p.provides_list:
if pp == x[0]:
diff --git a/test/updated.py b/test/updated.py
index eb244ab949..c41a88c7e9 100755
--- a/test/updated.py
+++ b/test/updated.py
@@ -33,7 +33,7 @@ class MonitorThread (threading.Thread):
self.server = None
def run(self):
- print("monitor ready :%s" % (self.port))
+ print(f"monitor ready :{self.port}")
application = Application([MonitorService], 'monitor',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11())
--
2.39.2
More information about the elbe-devel
mailing list