Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ansible-lint for openSUSE:Factory checked in at 2025-04-04 17:31:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ansible-lint (Old) and /work/SRC/openSUSE:Factory/.ansible-lint.new.1907 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ansible-lint" Fri Apr 4 17:31:03 2025 rev:61 rq:1266998 version:25.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/ansible-lint/ansible-lint.changes 2025-04-03 16:50:56.013543204 +0200 +++ /work/SRC/openSUSE:Factory/.ansible-lint.new.1907/ansible-lint.changes 2025-04-04 17:31:17.897472150 +0200 @@ -1,0 +2,8 @@ +Thu Apr 3 13:18:14 UTC 2025 - Johannes Kastl <opensuse_buildserv...@ojkastl.de> + +- update to 25.2.1: + * Bugfixes + - Finish support for data tagging from ansible 2.19 (#4571) + @ssbarnea + +------------------------------------------------------------------- Old: ---- ansible-lint-25.2.0.tar.gz New: ---- ansible-lint-25.2.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ansible-lint.spec ++++++ --- /var/tmp/diff_new_pack.WhreeC/_old 2025-04-04 17:31:18.401493150 +0200 +++ /var/tmp/diff_new_pack.WhreeC/_new 2025-04-04 17:31:18.401493150 +0200 @@ -40,7 +40,7 @@ %global lib_name ansiblelint %{?python_enable_dependency_generator} Name: ansible-lint -Version: 25.2.0 +Version: 25.2.1 Release: 0%{?dist} Summary: Best practices checker for Ansible License: MIT ++++++ ansible-lint-25.2.0.tar.gz -> ansible-lint-25.2.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/.config/constraints.txt new/ansible-lint-25.2.1/.config/constraints.txt --- old/ansible-lint-25.2.0/.config/constraints.txt 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/.config/constraints.txt 2025-04-03 13:56:32.000000000 +0200 @@ -1,6 +1,6 @@ # This file was autogenerated by uv via the following command: # tox run -e deps -ansible-compat==25.1.4 # via ansible-lint (pyproject.toml) +ansible-compat==25.1.5 # via ansible-lint (pyproject.toml) astroid==3.3.9 # via pylint asttokens==3.0.0 # via stack-data attrs==25.3.0 # via jsonschema, referencing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/.config/requirements-lock.txt new/ansible-lint-25.2.1/.config/requirements-lock.txt --- old/ansible-lint-25.2.0/.config/requirements-lock.txt 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/.config/requirements-lock.txt 2025-04-03 13:56:32.000000000 +0200 @@ -1,6 +1,6 @@ # This file was autogenerated by uv via the following command: # tox run -e deps -ansible-compat==25.1.4 # via ansible-lint (pyproject.toml) +ansible-compat==25.1.5 # via ansible-lint (pyproject.toml) attrs==25.3.0 # via jsonschema, referencing black==25.1.0 # via ansible-lint (pyproject.toml) bracex==2.5.post1 # via wcmatch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/.config/requirements.in new/ansible-lint-25.2.1/.config/requirements.in --- old/ansible-lint-25.2.0/.config/requirements.in 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/.config/requirements.in 2025-04-03 13:56:32.000000000 +0200 @@ -1,6 +1,6 @@ # Special order section for helping pip: ansible-core>=2.16.11 # GPLv3 -ansible-compat>=25.1.3 # GPLv3 +ansible-compat>=25.1.5 # GPLv3 # alphabetically sorted: black>=24.3.0 # MIT (security) filelock>=3.8.2 # The Unlicense diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/.git_archival.txt new/ansible-lint-25.2.1/.git_archival.txt --- old/ansible-lint-25.2.0/.git_archival.txt 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/.git_archival.txt 2025-04-03 13:56:32.000000000 +0200 @@ -1,4 +1,4 @@ -node: 6a4fcdb135dd2be6e8ee5ddb5bf59d3d78cbe7b0 -node-date: 2025-04-01T16:41:08Z +node: c16f018b1bdfdea6717f4b5b1b141a78b86021cd +node-date: 2025-04-03T11:56:32Z describe-name: v25 -ref-names: HEAD -> main, tag: v25.2.0, tag: v25 +ref-names: HEAD -> main, tag: v25.2.1, tag: v25 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/.github/lower-constraints.txt new/ansible-lint-25.2.1/.github/lower-constraints.txt --- old/ansible-lint-25.2.0/.github/lower-constraints.txt 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/.github/lower-constraints.txt 2025-04-03 13:56:32.000000000 +0200 @@ -2,7 +2,7 @@ # automatically updated by dependabot. This should be kept in sync with # minimal requirements configured inside .config/requirements.in ansible-core==2.16.11 -ansible-compat==25.1.4 # GPLv3 +ansible-compat==25.1.5 # GPLv3 black==24.3.0 # MIT (security) filelock==3.16.1 # The Unlicense # due to tox-uv jsonschema==4.10.0 # MIT, version needed for improved errors diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/.pre-commit-config.yaml new/ansible-lint-25.2.1/.pre-commit-config.yaml --- old/ansible-lint-25.2.0/.pre-commit-config.yaml 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/.pre-commit-config.yaml 2025-04-03 13:56:32.000000000 +0200 @@ -161,7 +161,7 @@ args: ["."] pass_filenames: false additional_dependencies: &deps - - ansible-compat>=25.1.3 + - ansible-compat>=25.1.5 - black>=22.10.0 - cryptography>=39.0.1 - filelock>=3.12.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/src/ansiblelint/rules/jinja.py new/ansible-lint-25.2.1/src/ansiblelint/rules/jinja.py --- old/ansible-lint-25.2.0/src/ansiblelint/rules/jinja.py 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/src/ansiblelint/rules/jinja.py 2025-04-03 13:56:32.000000000 +0200 @@ -188,11 +188,15 @@ elif re.match(r"^lookup plugin (.*) not found$", exc.message): # lookup plugin 'template' not found bypass = True - elif isinstance( - orig_exc, AnsibleTemplateSyntaxError - ) and re.match( - r"^Syntax error in template: No filter named '.*'.", - exc.message, + elif ( + exc.message == "A template was resolved to an Omit scalar." + or ( + isinstance(orig_exc, AnsibleTemplateSyntaxError) + and re.match( + r"^Syntax error in template: No filter named '.*'.", + exc.message, + ) + ) ): bypass = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/src/ansiblelint/rules/syntax_check.py new/ansible-lint-25.2.1/src/ansiblelint/rules/syntax_check.py --- old/ansible-lint-25.2.0/src/ansiblelint/rules/syntax_check.py 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/src/ansiblelint/rules/syntax_check.py 2025-04-03 13:56:32.000000000 +0200 @@ -57,7 +57,7 @@ KnownError( tag="malformed", regex=re.compile( - r"^(statically imported: (?P<filename>[\w\/\.\-]+)\n)?ERROR! (?P<title>A malformed block was encountered while loading a block[^\n]*)", + rf"^(statically imported: (?P<filename>[\w\/\.\-]+)\n)?{_ansible_error_prefix}(?P<title>A malformed block was encountered while loading a block[^\n]*)", re.MULTILINE | re.DOTALL | re.DOTALL, ), ), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/src/ansiblelint/types.py new/ansible-lint-25.2.1/src/ansiblelint/types.py --- old/ansible-lint-25.2.0/src/ansiblelint/types.py 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/src/ansiblelint/types.py 2025-04-03 13:56:32.000000000 +0200 @@ -40,13 +40,7 @@ ) AnsibleBaseYAMLObject: TypeAlias = ( # type: ignore[no-redef] # pyright: ignore[reportRedeclaration] - AnsibleSequence - | AnsibleMapping - | AnsibleUnicode - | str - | Mapping - | Sequence - | None + Sequence | Mapping | str | None ) ansible_error_format = 2 # temporary ignoring the type parameters for Sequence and Mapping because once diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/src/ansiblelint/utils.py new/ansible-lint-25.2.1/src/ansiblelint/utils.py --- old/ansible-lint-25.2.0/src/ansiblelint/utils.py 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/src/ansiblelint/utils.py 2025-04-03 13:56:32.000000000 +0200 @@ -704,11 +704,12 @@ return result -def normalize_task_v2(task: Task) -> dict[str, Any]: +def normalize_task_v2(task: Task) -> MutableMapping[str, Any]: """Ensure tasks have a normalized action key and strings are converted to python objects.""" raw_task = task.raw_task - result: dict[str, Any] = {} + result: MutableMapping[str, Any] = {} ansible_parsed_keys = ("action", "local_action", "args", "delegate_to") + arguments = {} if is_nested_task(raw_task): _extract_ansible_parsed_keys_from_task(result, raw_task, ansible_parsed_keys) @@ -728,19 +729,32 @@ skip_action_validation=options.skip_action_validation, ) except AnsibleParserError as exc: # pragma: no cover - line = 0 - column = 0 - regex = LINE_COLUMN_REGEX.search(exc.message) - if regex: - line = int(regex.group("line")) - column = int(regex.group("column")) - raise MatchError( - rule=AnsibleParserErrorRule(), - message=exc.message, - lintable=Lintable(task.filename or ""), - lineno=line or raw_task.get(LINE_NUMBER_KEY, 1), - column=column or None, - ) from exc + if "get_line_column" not in globals(): + from ansiblelint.yaml_utils import get_line_column + # pylint: disable=possibly-used-before-assignment + line, column = get_line_column(raw_task, 0) + if not line: + line = 0 + column = 0 + regex = LINE_COLUMN_REGEX.search(exc.message) + if regex: + line = int(regex.group("line")) + column = int(regex.group("column")) + if not exc.message.startswith( + "Complex args containing variables cannot use bare variables" + ): + raise MatchError( + rule=AnsibleParserErrorRule(), + message=exc.message, + lintable=Lintable(task.filename or ""), + lineno=line or 1, + column=column or None, + ) from exc + result = sanitized_task + if "action" not in result: + msg = "Unable to normalize task" + raise NotImplementedError(msg) from exc + action = result["action"] # denormalize shell -> command conversion if "_uses_shell" in arguments: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/test/test_utils.py new/ansible-lint-25.2.1/test/test_utils.py --- old/ansible-lint-25.2.0/test/test_utils.py 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/test/test_utils.py 2025-04-03 13:56:32.000000000 +0200 @@ -250,11 +250,12 @@ ("template", "output"), ( pytest.param("{{ playbook_dir }}", "/a/b/c", id="simple"), - pytest.param( - "{{ 'hello' | doesnotexist }}", - "hello", # newer implementation ignores unknown filters - id="unknown_filter", - ), + # Does not work the same with ansible 2.19 with data tagging + # pytest.param( + # "{{ 'hello' | doesnotexist }}", + # "hello", # newer implementation ignores unknown filters + # id="unknown_filter", + # ), pytest.param( "{{ hello | to_json }}", "{{ hello | to_json }}", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansible-lint-25.2.0/tox.ini new/ansible-lint-25.2.1/tox.ini --- old/ansible-lint-25.2.0/tox.ini 2025-04-01 18:41:08.000000000 +0200 +++ new/ansible-lint-25.2.1/tox.ini 2025-04-03 13:56:32.000000000 +0200 @@ -56,7 +56,7 @@ PIP_CONSTRAINT = {tox_root}/.config/constraints.txt PIP_DISABLE_PIP_VERSION_CHECK = 1 PRE_COMMIT_COLOR = always - PYTEST_REQPASS = 909 + PYTEST_REQPASS = 908 UV_CONSTRAINT = {tox_root}/.config/constraints.txt deps, devel, hook, lint, pkg, pre, py310, schemas: PIP_CONSTRAINT = /dev/null deps, devel, hook, lint, pkg, pre, py310, schemas: UV_CONSTRAINT = /dev/null