summaryrefslogtreecommitdiffstats
path: root/test/sanity
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:55:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:55:41 +0000
commit634758cfc77dff535c5e9e17cc99c6ba19e965b1 (patch)
treebb1c1a6bbff7abf9ed2d0e3b888480e70f0f109a /test/sanity
parentAdding upstream version 2.14.13. (diff)
downloadansible-core-634758cfc77dff535c5e9e17cc99c6ba19e965b1.tar.xz
ansible-core-634758cfc77dff535c5e9e17cc99c6ba19e965b1.zip
Adding upstream version 2.16.5.upstream/2.16.5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/sanity')
-rw-r--r--test/sanity/code-smell/ansible-requirements.py1
-rw-r--r--test/sanity/code-smell/deprecated-config.requirements.in2
-rw-r--r--test/sanity/code-smell/deprecated-config.requirements.txt6
-rw-r--r--test/sanity/code-smell/obsolete-files.json2
-rw-r--r--test/sanity/code-smell/package-data.requirements.in8
-rw-r--r--test/sanity/code-smell/package-data.requirements.txt25
-rw-r--r--test/sanity/code-smell/pymarkdown.config.json11
-rw-r--r--test/sanity/code-smell/pymarkdown.json7
-rw-r--r--test/sanity/code-smell/pymarkdown.py64
-rw-r--r--test/sanity/code-smell/pymarkdown.requirements.in1
-rw-r--r--test/sanity/code-smell/pymarkdown.requirements.txt9
-rw-r--r--test/sanity/code-smell/release-names.py7
-rw-r--r--test/sanity/code-smell/release-names.requirements.in1
-rw-r--r--test/sanity/code-smell/release-names.requirements.txt4
-rw-r--r--test/sanity/code-smell/test-constraints.py6
-rw-r--r--test/sanity/code-smell/update-bundled.requirements.txt3
-rw-r--r--test/sanity/ignore.txt113
17 files changed, 161 insertions, 109 deletions
diff --git a/test/sanity/code-smell/ansible-requirements.py b/test/sanity/code-smell/ansible-requirements.py
index 4d1a652..25d4ec8 100644
--- a/test/sanity/code-smell/ansible-requirements.py
+++ b/test/sanity/code-smell/ansible-requirements.py
@@ -1,7 +1,6 @@
from __future__ import annotations
import re
-import sys
def read_file(path):
diff --git a/test/sanity/code-smell/deprecated-config.requirements.in b/test/sanity/code-smell/deprecated-config.requirements.in
index 859c4ee..4e859bb 100644
--- a/test/sanity/code-smell/deprecated-config.requirements.in
+++ b/test/sanity/code-smell/deprecated-config.requirements.in
@@ -1,2 +1,2 @@
-jinja2 # ansible-core requirement
+jinja2
pyyaml
diff --git a/test/sanity/code-smell/deprecated-config.requirements.txt b/test/sanity/code-smell/deprecated-config.requirements.txt
index 338e3f3..ae96cdf 100644
--- a/test/sanity/code-smell/deprecated-config.requirements.txt
+++ b/test/sanity/code-smell/deprecated-config.requirements.txt
@@ -1,6 +1,4 @@
# edit "deprecated-config.requirements.in" and generate with: hacking/update-sanity-requirements.py --test deprecated-config
-# pre-build requirement: pyyaml == 6.0
-# pre-build constraint: Cython < 3.0
Jinja2==3.1.2
-MarkupSafe==2.1.1
-PyYAML==6.0
+MarkupSafe==2.1.3
+PyYAML==6.0.1
diff --git a/test/sanity/code-smell/obsolete-files.json b/test/sanity/code-smell/obsolete-files.json
index 02d3920..3f69cdd 100644
--- a/test/sanity/code-smell/obsolete-files.json
+++ b/test/sanity/code-smell/obsolete-files.json
@@ -1,6 +1,8 @@
{
"include_symlinks": true,
"prefixes": [
+ "docs/",
+ "examples/",
"test/runner/",
"test/sanity/ansible-doc/",
"test/sanity/compile/",
diff --git a/test/sanity/code-smell/package-data.requirements.in b/test/sanity/code-smell/package-data.requirements.in
index 3162feb..81b58bc 100644
--- a/test/sanity/code-smell/package-data.requirements.in
+++ b/test/sanity/code-smell/package-data.requirements.in
@@ -1,8 +1,8 @@
build # required to build sdist
wheel # required to build wheel
jinja2
-pyyaml # ansible-core requirement
-resolvelib < 0.9.0
-rstcheck < 4 # match version used in other sanity tests
+pyyaml
+resolvelib < 1.1.0
+rstcheck < 6 # newer versions have too many dependencies
antsibull-changelog
-setuptools == 45.2.0 # minimum supported setuptools
+setuptools == 66.1.0 # minimum supported setuptools
diff --git a/test/sanity/code-smell/package-data.requirements.txt b/test/sanity/code-smell/package-data.requirements.txt
index b66079d..ce0fb9c 100644
--- a/test/sanity/code-smell/package-data.requirements.txt
+++ b/test/sanity/code-smell/package-data.requirements.txt
@@ -1,18 +1,17 @@
# edit "package-data.requirements.in" and generate with: hacking/update-sanity-requirements.py --test package-data
-# pre-build requirement: pyyaml == 6.0
-# pre-build constraint: Cython < 3.0
-antsibull-changelog==0.16.0
-build==0.10.0
-docutils==0.17.1
+antsibull-changelog==0.23.0
+build==1.0.3
+docutils==0.18.1
Jinja2==3.1.2
-MarkupSafe==2.1.1
-packaging==21.3
+MarkupSafe==2.1.3
+packaging==23.2
pyproject_hooks==1.0.0
-pyparsing==3.0.9
-PyYAML==6.0
-resolvelib==0.8.1
-rstcheck==3.5.0
+PyYAML==6.0.1
+resolvelib==1.0.1
+rstcheck==5.0.0
semantic-version==2.10.0
-setuptools==45.2.0
+setuptools==66.1.0
tomli==2.0.1
-wheel==0.41.0
+types-docutils==0.18.3
+typing_extensions==4.8.0
+wheel==0.41.2
diff --git a/test/sanity/code-smell/pymarkdown.config.json b/test/sanity/code-smell/pymarkdown.config.json
new file mode 100644
index 0000000..afe83a3
--- /dev/null
+++ b/test/sanity/code-smell/pymarkdown.config.json
@@ -0,0 +1,11 @@
+{
+ "plugins": {
+ "line-length": {
+ "line_length": 160,
+ "code_block_line_length": 160
+ },
+ "first-line-heading": {
+ "enabled": false
+ }
+ }
+}
diff --git a/test/sanity/code-smell/pymarkdown.json b/test/sanity/code-smell/pymarkdown.json
new file mode 100644
index 0000000..986848d
--- /dev/null
+++ b/test/sanity/code-smell/pymarkdown.json
@@ -0,0 +1,7 @@
+{
+ "output": "path-line-column-code-message",
+ "error_code": "ansible-test",
+ "extensions": [
+ ".md"
+ ]
+}
diff --git a/test/sanity/code-smell/pymarkdown.py b/test/sanity/code-smell/pymarkdown.py
new file mode 100644
index 0000000..721c893
--- /dev/null
+++ b/test/sanity/code-smell/pymarkdown.py
@@ -0,0 +1,64 @@
+"""Sanity test for Markdown files."""
+from __future__ import annotations
+
+import pathlib
+import re
+import subprocess
+import sys
+
+import typing as t
+
+
+def main() -> None:
+ paths = sys.argv[1:] or sys.stdin.read().splitlines()
+
+ cmd = [
+ sys.executable,
+ '-m', 'pymarkdown',
+ '--config', pathlib.Path(__file__).parent / 'pymarkdown.config.json',
+ '--strict-config',
+ 'scan',
+ ] + paths
+
+ process = subprocess.run(
+ cmd,
+ stdin=subprocess.DEVNULL,
+ capture_output=True,
+ check=False,
+ text=True,
+ )
+
+ if process.stderr:
+ print(process.stderr.strip(), file=sys.stderr)
+ sys.exit(1)
+
+ if not (stdout := process.stdout.strip()):
+ return
+
+ pattern = re.compile(r'^(?P<path_line_column>[^:]*:[0-9]+:[0-9]+): (?P<code>[^:]*): (?P<message>.*) \((?P<aliases>.*)\)$')
+ matches = parse_to_list_of_dict(pattern, stdout)
+ results = [f"{match['path_line_column']}: {match['aliases'].split(', ')[0]}: {match['message']}" for match in matches]
+
+ print('\n'.join(results))
+
+
+def parse_to_list_of_dict(pattern: re.Pattern, value: str) -> list[dict[str, t.Any]]:
+ matched = []
+ unmatched = []
+
+ for line in value.splitlines():
+ match = re.search(pattern, line)
+
+ if match:
+ matched.append(match.groupdict())
+ else:
+ unmatched.append(line)
+
+ if unmatched:
+ raise Exception('Pattern {pattern!r} did not match values:\n' + '\n'.join(unmatched))
+
+ return matched
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/sanity/code-smell/pymarkdown.requirements.in b/test/sanity/code-smell/pymarkdown.requirements.in
new file mode 100644
index 0000000..f007771
--- /dev/null
+++ b/test/sanity/code-smell/pymarkdown.requirements.in
@@ -0,0 +1 @@
+pymarkdownlnt
diff --git a/test/sanity/code-smell/pymarkdown.requirements.txt b/test/sanity/code-smell/pymarkdown.requirements.txt
new file mode 100644
index 0000000..f906e14
--- /dev/null
+++ b/test/sanity/code-smell/pymarkdown.requirements.txt
@@ -0,0 +1,9 @@
+# edit "pymarkdown.requirements.in" and generate with: hacking/update-sanity-requirements.py --test pymarkdown
+application-properties==0.8.1
+Columnar==1.4.1
+pymarkdownlnt==0.9.13.4
+PyYAML==6.0.1
+tomli==2.0.1
+toolz==0.12.0
+typing_extensions==4.8.0
+wcwidth==0.2.8
diff --git a/test/sanity/code-smell/release-names.py b/test/sanity/code-smell/release-names.py
index 81d90d8..cac3071 100644
--- a/test/sanity/code-smell/release-names.py
+++ b/test/sanity/code-smell/release-names.py
@@ -22,7 +22,7 @@ Test that the release name is present in the list of used up release names
from __future__ import annotations
-from yaml import safe_load
+import pathlib
from ansible.release import __codename__
@@ -30,8 +30,7 @@ from ansible.release import __codename__
def main():
"""Entrypoint to the script"""
- with open('.github/RELEASE_NAMES.yml') as f:
- releases = safe_load(f.read())
+ releases = pathlib.Path('.github/RELEASE_NAMES.txt').read_text().splitlines()
# Why this format? The file's sole purpose is to be read by a human when they need to know
# which release names have already been used. So:
@@ -41,7 +40,7 @@ def main():
if __codename__ == name:
break
else:
- print('.github/RELEASE_NAMES.yml: Current codename was not present in the file')
+ print(f'.github/RELEASE_NAMES.txt: Current codename {__codename__!r} not present in the file')
if __name__ == '__main__':
diff --git a/test/sanity/code-smell/release-names.requirements.in b/test/sanity/code-smell/release-names.requirements.in
deleted file mode 100644
index c3726e8..0000000
--- a/test/sanity/code-smell/release-names.requirements.in
+++ /dev/null
@@ -1 +0,0 @@
-pyyaml
diff --git a/test/sanity/code-smell/release-names.requirements.txt b/test/sanity/code-smell/release-names.requirements.txt
deleted file mode 100644
index bb6a130..0000000
--- a/test/sanity/code-smell/release-names.requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-# edit "release-names.requirements.in" and generate with: hacking/update-sanity-requirements.py --test release-names
-# pre-build requirement: pyyaml == 6.0
-# pre-build constraint: Cython < 3.0
-PyYAML==6.0
diff --git a/test/sanity/code-smell/test-constraints.py b/test/sanity/code-smell/test-constraints.py
index df30fe1..ac5bb4e 100644
--- a/test/sanity/code-smell/test-constraints.py
+++ b/test/sanity/code-smell/test-constraints.py
@@ -65,12 +65,6 @@ def main():
# keeping constraints for tests other than sanity tests in one file helps avoid conflicts
print('%s:%d:%d: put the constraint (%s%s) in `%s`' % (path, lineno, 1, name, raw_constraints, constraints_path))
- for name, requirements in frozen_sanity.items():
- if len(set(req[3].group('constraints').strip() for req in requirements)) != 1:
- for req in requirements:
- print('%s:%d:%d: sanity constraint (%s) does not match others for package `%s`' % (
- req[0], req[1], req[3].start('constraints') + 1, req[3].group('constraints'), name))
-
def check_ansible_test(path: str, requirements: list[tuple[int, str, re.Match]]) -> None:
sys.path.insert(0, str(pathlib.Path(__file__).parent.parent.parent.joinpath('lib')))
diff --git a/test/sanity/code-smell/update-bundled.requirements.txt b/test/sanity/code-smell/update-bundled.requirements.txt
index d9785e7..53f1e43 100644
--- a/test/sanity/code-smell/update-bundled.requirements.txt
+++ b/test/sanity/code-smell/update-bundled.requirements.txt
@@ -1,3 +1,2 @@
# edit "update-bundled.requirements.in" and generate with: hacking/update-sanity-requirements.py --test update-bundled
-packaging==21.3
-pyparsing==3.0.9
+packaging==23.2
diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt
index 869522b..c683fbe 100644
--- a/test/sanity/ignore.txt
+++ b/test/sanity/ignore.txt
@@ -1,16 +1,21 @@
-.azure-pipelines/scripts/publish-codecov.py replace-urlopen
lib/ansible/cli/scripts/ansible_connection_cli_stub.py shebang
lib/ansible/config/base.yml no-unwanted-files
-lib/ansible/executor/playbook_executor.py pylint:disallowed-name
lib/ansible/executor/powershell/async_watchdog.ps1 pslint:PSCustomUseLiteralPath
lib/ansible/executor/powershell/async_wrapper.ps1 pslint:PSCustomUseLiteralPath
lib/ansible/executor/powershell/exec_wrapper.ps1 pslint:PSCustomUseLiteralPath
-lib/ansible/executor/task_queue_manager.py pylint:disallowed-name
+lib/ansible/galaxy/collection/__init__.py mypy-3.10:attr-defined # inline ignore has no effect
+lib/ansible/galaxy/collection/__init__.py mypy-3.11:attr-defined # inline ignore has no effect
+lib/ansible/galaxy/collection/__init__.py mypy-3.12:attr-defined # inline ignore has no effect
+lib/ansible/galaxy/collection/gpg.py mypy-3.10:arg-type
+lib/ansible/galaxy/collection/gpg.py mypy-3.11:arg-type
+lib/ansible/galaxy/collection/gpg.py mypy-3.12:arg-type
+lib/ansible/parsing/yaml/constructor.py mypy-3.10:type-var # too many occurrences to ignore inline
+lib/ansible/parsing/yaml/constructor.py mypy-3.11:type-var # too many occurrences to ignore inline
+lib/ansible/parsing/yaml/constructor.py mypy-3.12:type-var # too many occurrences to ignore inline
lib/ansible/keyword_desc.yml no-unwanted-files
lib/ansible/modules/apt.py validate-modules:parameter-invalid
lib/ansible/modules/apt_repository.py validate-modules:parameter-invalid
lib/ansible/modules/assemble.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/async_status.py use-argspec-type-path
lib/ansible/modules/async_status.py validate-modules!skip
lib/ansible/modules/async_wrapper.py ansible-doc!skip # not an actual module
lib/ansible/modules/async_wrapper.py pylint:ansible-bad-function # ignore, required
@@ -21,61 +26,48 @@ lib/ansible/modules/command.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/command.py validate-modules:doc-missing-type
lib/ansible/modules/command.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/command.py validate-modules:undocumented-parameter
-lib/ansible/modules/copy.py pylint:disallowed-name
lib/ansible/modules/copy.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/copy.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/copy.py validate-modules:undocumented-parameter
-lib/ansible/modules/dnf.py validate-modules:doc-required-mismatch
lib/ansible/modules/dnf.py validate-modules:parameter-invalid
+lib/ansible/modules/dnf5.py validate-modules:parameter-invalid
lib/ansible/modules/file.py validate-modules:undocumented-parameter
lib/ansible/modules/find.py use-argspec-type-path # fix needed
-lib/ansible/modules/git.py pylint:disallowed-name
lib/ansible/modules/git.py use-argspec-type-path
-lib/ansible/modules/git.py validate-modules:doc-missing-type
lib/ansible/modules/git.py validate-modules:doc-required-mismatch
-lib/ansible/modules/iptables.py pylint:disallowed-name
lib/ansible/modules/lineinfile.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/lineinfile.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/lineinfile.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/package_facts.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/pip.py pylint:disallowed-name
lib/ansible/modules/replace.py validate-modules:nonexistent-parameter-documented
+lib/ansible/modules/replace.py pylint:used-before-assignment # false positive detection by pylint
lib/ansible/modules/service.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/service.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/stat.py validate-modules:doc-default-does-not-match-spec # get_md5 is undocumented
lib/ansible/modules/stat.py validate-modules:parameter-invalid
-lib/ansible/modules/stat.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/stat.py validate-modules:undocumented-parameter
lib/ansible/modules/systemd_service.py validate-modules:parameter-invalid
-lib/ansible/modules/systemd_service.py validate-modules:return-syntax-error
-lib/ansible/modules/sysvinit.py validate-modules:return-syntax-error
lib/ansible/modules/uri.py validate-modules:doc-required-mismatch
lib/ansible/modules/user.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/user.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/yum.py pylint:disallowed-name
lib/ansible/modules/yum.py validate-modules:parameter-invalid
-lib/ansible/modules/yum_repository.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/yum_repository.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/yum_repository.py validate-modules:undocumented-parameter
+lib/ansible/module_utils/basic.py pylint:unused-import # deferring resolution to allow enabling the rule now
lib/ansible/module_utils/compat/_selectors2.py future-import-boilerplate # ignore bundled
lib/ansible/module_utils/compat/_selectors2.py metaclass-boilerplate # ignore bundled
-lib/ansible/module_utils/compat/_selectors2.py pylint:disallowed-name
lib/ansible/module_utils/compat/selinux.py import-2.7!skip # pass/fail depends on presence of libselinux.so
-lib/ansible/module_utils/compat/selinux.py import-3.5!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.6!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.7!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.8!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.9!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.10!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.11!skip # pass/fail depends on presence of libselinux.so
+lib/ansible/module_utils/compat/selinux.py import-3.12!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/distro/_distro.py future-import-boilerplate # ignore bundled
lib/ansible/module_utils/distro/_distro.py metaclass-boilerplate # ignore bundled
lib/ansible/module_utils/distro/_distro.py no-assert
-lib/ansible/module_utils/distro/_distro.py pylint:using-constant-test # bundled code we don't want to modify
lib/ansible/module_utils/distro/_distro.py pep8!skip # bundled code we don't want to modify
+lib/ansible/module_utils/distro/_distro.py pylint:undefined-variable # ignore bundled
+lib/ansible/module_utils/distro/_distro.py pylint:using-constant-test # bundled code we don't want to modify
lib/ansible/module_utils/distro/__init__.py empty-init # breaks namespacing, bundled, do not override
lib/ansible/module_utils/facts/__init__.py empty-init # breaks namespacing, deprecate and eventually remove
-lib/ansible/module_utils/facts/network/linux.py pylint:disallowed-name
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.ArgvParser.psm1 pslint:PSUseApprovedVerbs
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 pslint:PSProvideCommentHelp # need to agree on best format for comment location
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 pslint:PSUseApprovedVerbs
@@ -93,33 +85,23 @@ lib/ansible/module_utils/six/__init__.py no-dict-iteritems
lib/ansible/module_utils/six/__init__.py no-dict-iterkeys
lib/ansible/module_utils/six/__init__.py no-dict-itervalues
lib/ansible/module_utils/six/__init__.py pylint:self-assigning-variable
+lib/ansible/module_utils/six/__init__.py pylint:trailing-comma-tuple
lib/ansible/module_utils/six/__init__.py replace-urlopen
-lib/ansible/module_utils/urls.py pylint:arguments-renamed
-lib/ansible/module_utils/urls.py pylint:disallowed-name
lib/ansible/module_utils/urls.py replace-urlopen
-lib/ansible/parsing/vault/__init__.py pylint:disallowed-name
lib/ansible/parsing/yaml/objects.py pylint:arguments-renamed
-lib/ansible/playbook/base.py pylint:disallowed-name
lib/ansible/playbook/collectionsearch.py required-and-default-attributes # https://github.com/ansible/ansible/issues/61460
-lib/ansible/playbook/helpers.py pylint:disallowed-name
-lib/ansible/playbook/playbook_include.py pylint:arguments-renamed
lib/ansible/playbook/role/include.py pylint:arguments-renamed
lib/ansible/plugins/action/normal.py action-plugin-docs # default action plugin for modules without a dedicated action plugin
lib/ansible/plugins/cache/base.py ansible-doc!skip # not a plugin, but a stub for backwards compatibility
lib/ansible/plugins/callback/__init__.py pylint:arguments-renamed
lib/ansible/plugins/inventory/advanced_host_list.py pylint:arguments-renamed
lib/ansible/plugins/inventory/host_list.py pylint:arguments-renamed
-lib/ansible/plugins/lookup/random_choice.py pylint:arguments-renamed
-lib/ansible/plugins/lookup/sequence.py pylint:disallowed-name
-lib/ansible/plugins/shell/cmd.py pylint:arguments-renamed
-lib/ansible/plugins/strategy/__init__.py pylint:disallowed-name
-lib/ansible/plugins/strategy/linear.py pylint:disallowed-name
lib/ansible/utils/collection_loader/_collection_finder.py pylint:deprecated-class
lib/ansible/utils/collection_loader/_collection_meta.py pylint:deprecated-class
-lib/ansible/vars/hostvars.py pylint:disallowed-name
test/integration/targets/ansible-test-sanity/ansible_collections/ns/col/tests/integration/targets/hello/files/bad.py pylint:ansible-bad-function # ignore, required for testing
test/integration/targets/ansible-test-sanity/ansible_collections/ns/col/tests/integration/targets/hello/files/bad.py pylint:ansible-bad-import-from # ignore, required for testing
test/integration/targets/ansible-test-sanity/ansible_collections/ns/col/tests/integration/targets/hello/files/bad.py pylint:ansible-bad-import # ignore, required for testing
+test/integration/targets/ansible-test-sanity/ansible_collections/ns/col/plugins/plugin_utils/check_pylint.py pylint:disallowed-name # ignore, required for testing
test/integration/targets/ansible-test-integration/ansible_collections/ns/col/plugins/modules/hello.py pylint:relative-beyond-top-level
test/integration/targets/ansible-test-units/ansible_collections/ns/col/plugins/modules/hello.py pylint:relative-beyond-top-level
test/integration/targets/ansible-test-units/ansible_collections/ns/col/tests/unit/plugins/modules/test_hello.py pylint:relative-beyond-top-level
@@ -132,8 +114,10 @@ test/integration/targets/collections_relative_imports/collection_root/ansible_co
test/integration/targets/collections_relative_imports/collection_root/ansible_collections/my_ns/my_col/plugins/module_utils/my_util2.py pylint:relative-beyond-top-level
test/integration/targets/fork_safe_stdio/vendored_pty.py pep8!skip # vendored code
test/integration/targets/gathering_facts/library/bogus_facts shebang
+test/integration/targets/gathering_facts/library/dummy1 shebang
test/integration/targets/gathering_facts/library/facts_one shebang
test/integration/targets/gathering_facts/library/facts_two shebang
+test/integration/targets/gathering_facts/library/slow shebang
test/integration/targets/incidental_win_reboot/templates/post_reboot.ps1 pslint!skip
test/integration/targets/json_cleanup/library/bad_json shebang
test/integration/targets/lookup_csvfile/files/crlf.csv line-endings
@@ -143,11 +127,6 @@ test/integration/targets/module_precedence/lib_with_extension/ping.ini shebang
test/integration/targets/module_precedence/roles_with_extension/foo/library/a.ini shebang
test/integration/targets/module_precedence/roles_with_extension/foo/library/ping.ini shebang
test/integration/targets/module_utils/library/test.py future-import-boilerplate # allow testing of Python 2.x implicit relative imports
-test/integration/targets/module_utils/module_utils/bar0/foo.py pylint:disallowed-name
-test/integration/targets/module_utils/module_utils/foo.py pylint:disallowed-name
-test/integration/targets/module_utils/module_utils/sub/bar/bar.py pylint:disallowed-name
-test/integration/targets/module_utils/module_utils/sub/bar/__init__.py pylint:disallowed-name
-test/integration/targets/module_utils/module_utils/yak/zebra/foo.py pylint:disallowed-name
test/integration/targets/old_style_modules_posix/library/helloworld.sh shebang
test/integration/targets/template/files/encoding_1252_utf-8.expected no-smart-quotes
test/integration/targets/template/files/encoding_1252_windows-1252.expected no-smart-quotes
@@ -165,28 +144,9 @@ test/integration/targets/win_script/files/test_script_removes_file.ps1 pslint:PS
test/integration/targets/win_script/files/test_script_with_args.ps1 pslint:PSAvoidUsingWriteHost # Keep
test/integration/targets/win_script/files/test_script_with_splatting.ps1 pslint:PSAvoidUsingWriteHost # Keep
test/lib/ansible_test/_data/requirements/sanity.pslint.ps1 pslint:PSCustomUseLiteralPath # Uses wildcards on purpose
-test/lib/ansible_test/_util/target/setup/ConfigureRemotingForAnsible.ps1 pslint:PSCustomUseLiteralPath
-test/lib/ansible_test/_util/target/setup/requirements.py replace-urlopen
-test/support/integration/plugins/modules/timezone.py pylint:disallowed-name
-test/support/integration/plugins/module_utils/compat/ipaddress.py future-import-boilerplate
-test/support/integration/plugins/module_utils/compat/ipaddress.py metaclass-boilerplate
-test/support/integration/plugins/module_utils/compat/ipaddress.py no-unicode-literals
-test/support/integration/plugins/module_utils/network/common/utils.py future-import-boilerplate
-test/support/integration/plugins/module_utils/network/common/utils.py metaclass-boilerplate
-test/support/integration/plugins/module_utils/network/common/utils.py pylint:use-a-generator
-test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/network/netconf/netconf.py pylint:used-before-assignment
-test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/filter/network.py pylint:consider-using-dict-comprehension
test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/compat/ipaddress.py no-unicode-literals
-test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/compat/ipaddress.py pep8:E203
-test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts.py pylint:unnecessary-comprehension
-test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/utils.py pylint:use-a-generator
-test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/netconf/default.py pylint:unnecessary-comprehension
test/support/network-integration/collections/ansible_collections/cisco/ios/plugins/cliconf/ios.py pylint:arguments-renamed
-test/support/network-integration/collections/ansible_collections/cisco/ios/plugins/modules/ios_config.py pep8:E501
test/support/network-integration/collections/ansible_collections/vyos/vyos/plugins/cliconf/vyos.py pylint:arguments-renamed
-test/support/network-integration/collections/ansible_collections/vyos/vyos/plugins/modules/vyos_command.py pep8:E231
-test/support/network-integration/collections/ansible_collections/vyos/vyos/plugins/modules/vyos_command.py pylint:disallowed-name
-test/support/windows-integration/plugins/action/win_copy.py pylint:used-before-assignment
test/support/windows-integration/collections/ansible_collections/ansible/windows/plugins/module_utils/WebRequest.psm1 pslint!skip
test/support/windows-integration/collections/ansible_collections/ansible/windows/plugins/modules/win_uri.ps1 pslint!skip
test/support/windows-integration/plugins/modules/async_status.ps1 pslint!skip
@@ -207,19 +167,11 @@ test/support/windows-integration/plugins/modules/win_user_right.ps1 pslint!skip
test/support/windows-integration/plugins/modules/win_user.ps1 pslint!skip
test/support/windows-integration/plugins/modules/win_wait_for.ps1 pslint!skip
test/support/windows-integration/plugins/modules/win_whoami.ps1 pslint!skip
-test/units/executor/test_play_iterator.py pylint:disallowed-name
-test/units/modules/test_apt.py pylint:disallowed-name
test/units/module_utils/basic/test_deprecate_warn.py pylint:ansible-deprecated-no-version
test/units/module_utils/basic/test_deprecate_warn.py pylint:ansible-deprecated-version
-test/units/module_utils/basic/test_run_command.py pylint:disallowed-name
+test/units/module_utils/common/warnings/test_deprecate.py pylint:ansible-deprecated-no-version # testing Display.deprecated call without a version or date
+test/units/module_utils/common/warnings/test_deprecate.py pylint:ansible-deprecated-version # testing Deprecated version found in call to Display.deprecated or AnsibleModule.deprecate
test/units/module_utils/urls/fixtures/multipart.txt line-endings # Fixture for HTTP tests that use CRLF
-test/units/module_utils/urls/test_fetch_url.py replace-urlopen
-test/units/module_utils/urls/test_gzip.py replace-urlopen
-test/units/module_utils/urls/test_Request.py replace-urlopen
-test/units/parsing/vault/test_vault.py pylint:disallowed-name
-test/units/playbook/role/test_role.py pylint:disallowed-name
-test/units/plugins/test_plugins.py pylint:disallowed-name
-test/units/template/test_templar.py pylint:disallowed-name
test/units/utils/collection_loader/fixtures/collections/ansible_collections/testns/testcoll/plugins/action/my_action.py pylint:relative-beyond-top-level
test/units/utils/collection_loader/fixtures/collections/ansible_collections/testns/testcoll/plugins/modules/__init__.py empty-init # testing that collections don't need inits
test/units/utils/collection_loader/fixtures/collections_masked/ansible_collections/ansible/__init__.py empty-init # testing that collections don't need inits
@@ -227,3 +179,26 @@ test/units/utils/collection_loader/fixtures/collections_masked/ansible_collectio
test/units/utils/collection_loader/fixtures/collections_masked/ansible_collections/testns/__init__.py empty-init # testing that collections don't need inits
test/units/utils/collection_loader/fixtures/collections_masked/ansible_collections/testns/testcoll/__init__.py empty-init # testing that collections don't need inits
test/units/utils/collection_loader/test_collection_loader.py pylint:undefined-variable # magic runtime local var splatting
+.github/CONTRIBUTING.md pymarkdown:line-length
+hacking/backport/README.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/bug_internal_api.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/bug_wrong_repo.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/collections.md pymarkdown:line-length
+hacking/ticket_stubs/collections.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/guide_newbie_about_gh_and_contributing_to_ansible.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/no_thanks.md pymarkdown:line-length
+hacking/ticket_stubs/no_thanks.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/pr_duplicate.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/pr_merged.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/proposal.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/question_not_bug.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/resolved.md pymarkdown:no-bare-urls
+hacking/ticket_stubs/wider_discussion.md pymarkdown:no-bare-urls
+lib/ansible/galaxy/data/apb/README.md pymarkdown:line-length
+lib/ansible/galaxy/data/container/README.md pymarkdown:line-length
+lib/ansible/galaxy/data/default/role/README.md pymarkdown:line-length
+lib/ansible/galaxy/data/network/README.md pymarkdown:line-length
+README.md pymarkdown:line-length
+test/integration/targets/ansible-vault/invalid_format/README.md pymarkdown:no-bare-urls
+test/support/README.md pymarkdown:no-bare-urls
+test/units/cli/test_data/role_skeleton/README.md pymarkdown:line-length