From 7639c58c4889003777e5da36567f84caa424f157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicki=20K=C5=99=C3=AD=C5=BEek?= Date: Mon, 14 Oct 2024 14:44:06 +0200 Subject: [PATCH] Disable too-many/too-few pylint checks Enforcing pylint standards and default for our test code seems counter-productive. Since most of the newly added code are tests or is test-related, encountering these checks rarely make us refactor the code in other ways and we just disable these checks individually. Code that is too complex or convoluted will be pointed out in reviews anyways. --- .pylintrc | 11 +++++++++++ bin/tests/system/conftest.py | 8 +++----- bin/tests/system/isctest/asyncserver.py | 2 -- bin/tests/system/isctest/instance.py | 1 - bin/tests/system/isctest/kasp.py | 2 -- bin/tests/system/isctest/query.py | 1 - bin/tests/system/isctest/rndc.py | 1 - bin/tests/system/isctest/run.py | 2 +- bin/tests/system/ksr/tests_ksr.py | 10 ---------- bin/tests/system/shutdown/tests_shutdown.py | 2 -- bin/tests/system/tsiggss/tests_isc_spnego_flaws.py | 4 ---- doc/arm/_ext/iscconf.py | 2 -- doc/arm/conf.py | 2 +- util/parse_tsan.py | 3 --- 14 files changed, 16 insertions(+), 35 deletions(-) diff --git a/.pylintrc b/.pylintrc index a75e65d8d3..3fb33f3c9c 100644 --- a/.pylintrc +++ b/.pylintrc @@ -12,6 +12,17 @@ disable= C0116, # missing-function-docstring C0209, # consider-using-f-string C0301, # line-too-long, handled better by black + C0302, # too-many-lines C0415, # import-outside-toplevel R0801, # duplicate-code + R0901, # too-many-ancestors + R0902, # too-many-instance-attributes R0903, # too-few-public-methods + R0904, # too-many-public-methods + R0911, # too-many-return-statements + R0912, # too-many-branches + R0913, # too-many-arguments + R0914, # too-many-locals + R0915, # too-many-statements + R0916, # too-many-boolean-expressions + R0917, # too-many-positional-arguments diff --git a/bin/tests/system/conftest.py b/bin/tests/system/conftest.py index c578e4a8fd..b2c27c0a6d 100644 --- a/bin/tests/system/conftest.py +++ b/bin/tests/system/conftest.py @@ -297,9 +297,7 @@ def logger(request, system_test_name): @pytest.fixture(scope="module") -def system_test_dir( - request, system_test_name -): # pylint: disable=too-many-statements,too-many-locals +def system_test_dir(request, system_test_name): """ Temporary directory for executing the test. @@ -408,7 +406,7 @@ def system_test_dir( unlink(symlink_dst) -def _run_script( # pylint: disable=too-many-arguments +def _run_script( system_test_dir: Path, interpreter: str, script: str, @@ -471,7 +469,7 @@ def run_tests_sh(system_test_dir, shell): @pytest.fixture(scope="module", autouse=True) -def system_test( # pylint: disable=too-many-arguments,too-many-statements +def system_test( request, system_test_dir, shell, diff --git a/bin/tests/system/isctest/asyncserver.py b/bin/tests/system/isctest/asyncserver.py index 37eca8a672..ab508b404a 100644 --- a/bin/tests/system/isctest/asyncserver.py +++ b/bin/tests/system/isctest/asyncserver.py @@ -97,7 +97,6 @@ class _AsyncUdpHandler(asyncio.DatagramProtocol): loop.create_task(handler_coroutine) -# pylint: disable=too-few-public-methods class AsyncServer: """ A generic asynchronous server which may handle UDP and/or TCP traffic. @@ -225,7 +224,6 @@ class DnsProtocol(enum.Enum): TCP = enum.auto() -# pylint: disable=too-many-instance-attributes @dataclass class QueryContext: """ diff --git a/bin/tests/system/isctest/instance.py b/bin/tests/system/isctest/instance.py index e0e612fda0..d3b3083262 100644 --- a/bin/tests/system/isctest/instance.py +++ b/bin/tests/system/isctest/instance.py @@ -45,7 +45,6 @@ class NamedInstance: ``` """ - # pylint: disable=too-many-arguments def __init__( self, identifier: str, diff --git a/bin/tests/system/isctest/kasp.py b/bin/tests/system/isctest/kasp.py index b459b15b3e..ea1ec9878e 100644 --- a/bin/tests/system/isctest/kasp.py +++ b/bin/tests/system/isctest/kasp.py @@ -329,7 +329,6 @@ def check_dnssecstatus(server, zone, keys, policy=None, view=None): assert f"key: {key.tag}" in response -# pylint: disable=too-many-branches,too-many-locals def _check_signatures(signatures, covers, fqdn, keys): now = KeyTimingMetadata.now() numsigs = 0 @@ -455,7 +454,6 @@ def check_dnskeys(rrset, ksks, zsks, cdnskey=False): assert numkeys == len(dnskeys) -# pylint: disable=too-many-locals def check_cds(rrset, keys): # Check if the correct CDS records are published. If the current time # is between the timing metadata 'publish' and 'delete', the key must have diff --git a/bin/tests/system/isctest/query.py b/bin/tests/system/isctest/query.py index 5662d1e380..4c389af2d9 100644 --- a/bin/tests/system/isctest/query.py +++ b/bin/tests/system/isctest/query.py @@ -22,7 +22,6 @@ from isctest.compat import dns_rcode QUERY_TIMEOUT = 10 -# pylint: disable=too-many-arguments def generic_query( query_func: Callable[..., Any], message: dns.message.Message, diff --git a/bin/tests/system/isctest/rndc.py b/bin/tests/system/isctest/rndc.py index 6e869ab316..d4a0a1bd77 100644 --- a/bin/tests/system/isctest/rndc.py +++ b/bin/tests/system/isctest/rndc.py @@ -14,7 +14,6 @@ import os import subprocess -# pylint: disable=too-few-public-methods class RNDCExecutor(abc.ABC): """ An interface which RNDC executors have to implement in order for the diff --git a/bin/tests/system/isctest/run.py b/bin/tests/system/isctest/run.py index b3cb8200c0..dd9ac08906 100644 --- a/bin/tests/system/isctest/run.py +++ b/bin/tests/system/isctest/run.py @@ -20,7 +20,7 @@ from isctest.compat import dns_rcode import dns.message -def cmd( # pylint: disable=too-many-arguments +def cmd( args, cwd=None, timeout=60, diff --git a/bin/tests/system/ksr/tests_ksr.py b/bin/tests/system/ksr/tests_ksr.py index 6caf4e7672..be2c651aa1 100644 --- a/bin/tests/system/ksr/tests_ksr.py +++ b/bin/tests/system/ksr/tests_ksr.py @@ -9,8 +9,6 @@ # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. -# pylint: disable=too-many-lines - from datetime import timedelta import difflib import os @@ -97,7 +95,6 @@ def ksr(zone, policy, action, options="", raise_on_exception=True): return out.stdout.decode("utf-8"), out.stderr.decode("utf-8") -# pylint: disable=too-many-arguments,too-many-branches,too-many-locals,too-many-statements def check_keys( keys, lifetime, @@ -223,7 +220,6 @@ def check_keysigningrequest(out, zsks, start, end): assert line_no == len(lines) -# pylint: disable=too-many-arguments,too-many-branches,too-many-locals,too-many-statements def check_signedkeyresponse( out, zone, @@ -421,7 +417,6 @@ def test_ksr_errors(): assert "dnssec-ksr: fatal: 'sign' requires a KSR file" in err -# pylint: disable=too-many-locals,too-many-statements def test_ksr_common(servers): # common test cases (1) zone = "common.test" @@ -610,7 +605,6 @@ def test_ksr_common(servers): isctest.kasp.check_subdomain(ns1, zone, ksks, overlapping_zsks) -# pylint: disable=too-many-locals def test_ksr_lastbundle(servers): zone = "last-bundle.test" policy = "common" @@ -690,7 +684,6 @@ def test_ksr_lastbundle(servers): assert f"zone {zone}/IN (signed): zone_rekey: {warning}" in ns1.log -# pylint: disable=too-many-locals def test_ksr_inthemiddle(servers): zone = "in-the-middle.test" policy = "common" @@ -771,7 +764,6 @@ def test_ksr_inthemiddle(servers): assert f"zone {zone}/IN (signed): zone_rekey: {warning}" not in ns1.log -# pylint: disable=too-many-locals def check_ksr_rekey_logs_error(server, zone, policy, offset, end): n = 1 @@ -846,7 +838,6 @@ def test_ksr_rekey_logs_error(servers): ) -# pylint: disable=too-many-locals def test_ksr_unlimited(servers): zone = "unlimited.test" policy = "unlimited" @@ -962,7 +953,6 @@ def test_ksr_unlimited(servers): isctest.kasp.check_subdomain(ns1, zone, ksks, zsks) -# pylint: disable=too-many-locals def test_ksr_twotone(servers): zone = "two-tone.test" policy = "two-tone" diff --git a/bin/tests/system/shutdown/tests_shutdown.py b/bin/tests/system/shutdown/tests_shutdown.py index 566a84fc8e..93c4c3c704 100755 --- a/bin/tests/system/shutdown/tests_shutdown.py +++ b/bin/tests/system/shutdown/tests_shutdown.py @@ -61,8 +61,6 @@ def do_work(named_proc, resolver_ip, instance, kill_method, n_workers, n_queries :param n_queries: Total number of queries to send :type n_queries: int """ - # pylint: disable-msg=too-many-arguments - # pylint: disable-msg=too-many-locals # helper function, 'command' is the rndc command to run def launch_rndc(command): diff --git a/bin/tests/system/tsiggss/tests_isc_spnego_flaws.py b/bin/tests/system/tsiggss/tests_isc_spnego_flaws.py index b474fc1ab8..796da8fbc9 100755 --- a/bin/tests/system/tsiggss/tests_isc_spnego_flaws.py +++ b/bin/tests/system/tsiggss/tests_isc_spnego_flaws.py @@ -35,8 +35,6 @@ import dns.rrset class CraftedTKEYQuery: - # pylint: disable=too-few-public-methods - """ A class for preparing crafted TKEY queries """ @@ -81,8 +79,6 @@ class CraftedTKEYQuery: class ASN1Encoder: - # pylint: disable=too-few-public-methods - """ A custom ASN1 encoder which allows preparing malformed GSSAPI tokens """ diff --git a/doc/arm/_ext/iscconf.py b/doc/arm/_ext/iscconf.py index 7c0a3c9511..dc440e2928 100644 --- a/doc/arm/_ext/iscconf.py +++ b/doc/arm/_ext/iscconf.py @@ -52,7 +52,6 @@ def split_csv(argument, required): return outlist -# pylint: disable=too-many-statements def domain_factory(domainname, domainlabel, todolist, grammar): """ Return parametrized Sphinx domain object. @@ -318,7 +317,6 @@ def domain_factory(domainname, domainlabel, todolist, grammar): ] ) - # pylint: disable=too-many-arguments def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): """ Sphinx API: diff --git a/doc/arm/conf.py b/doc/arm/conf.py index 0f716fb085..4f2d9e98cd 100644 --- a/doc/arm/conf.py +++ b/doc/arm/conf.py @@ -26,7 +26,7 @@ from sphinx import addnodes try: from sphinx.util.docutils import ReferenceRole except ImportError: - # pylint: disable=too-few-public-methods + class ReferenceRole(roles.GenericRole): """ The ReferenceRole class (used as a base class by GitLabRefRole diff --git a/util/parse_tsan.py b/util/parse_tsan.py index e13e8ec49e..28afc34bff 100755 --- a/util/parse_tsan.py +++ b/util/parse_tsan.py @@ -24,9 +24,6 @@ from hashlib import sha256 class State: """Class that holds state of the TSAN parser.""" - # pylint: disable=too-many-instance-attributes - # pylint: disable=too-few-public-methods - inside = False block = "" last_line = None