Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-ansible-compat for 
openSUSE:Factory checked in at 2025-01-27 20:58:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ansible-compat (Old)
 and      /work/SRC/openSUSE:Factory/.python-ansible-compat.new.2316 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ansible-compat"

Mon Jan 27 20:58:41 2025 rev:32 rq:1240616 version:25.1.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-ansible-compat/python-ansible-compat.changes  
    2025-01-16 18:34:40.451293450 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-ansible-compat.new.2316/python-ansible-compat.changes
    2025-01-27 20:59:32.117221143 +0100
@@ -1,0 +2,12 @@
+Mon Jan 27 16:42:57 UTC 2025 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- update to 25.1.0:
+  * Major
+    - Inject venv site-packages at the top of collection path (test
+      isolation) (#447) @ssbarnea
+    - Fail if old ANSIBLE_COLLECTIONS_PATHS is detected (#449)
+      @ssbarnea
+  * Bugfixes
+    - Patch #449 to use ANSIBLE_COLLECTIONS_PATH (#450) @ssbarnea
+
+-------------------------------------------------------------------

Old:
----
  python-ansible-compat-25.0.0.tar.gz

New:
----
  python-ansible-compat-25.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-ansible-compat.spec ++++++
--- /var/tmp/diff_new_pack.isAllz/_old  2025-01-27 20:59:32.597240928 +0100
+++ /var/tmp/diff_new_pack.isAllz/_new  2025-01-27 20:59:32.597240928 +0100
@@ -24,7 +24,7 @@
 %endif
 
 Name:           python-ansible-compat
-Version:        25.0.0
+Version:        25.1.0
 Release:        0
 Summary:        Compatibility shim for Ansible 2.9 and newer
 License:        MIT
@@ -96,6 +96,8 @@
 # tests that need network connectivity
 IGNORED_CHECKS="${IGNORED_CHECKS} or test_scan_sys_path[0]"
 IGNORED_CHECKS="${IGNORED_CHECKS} or test_scan_sys_path[1]"
+IGNORED_CHECKS="${IGNORED_CHECKS} or test_scan_sys_path[disabled]"
+IGNORED_CHECKS="${IGNORED_CHECKS} or test_scan_sys_path[enabled]"
 # Disable checks on test names: 
https://github.com/pytest-dev/pytest-plus#user-content-avoiding-problematic-test-identifiers
 https://github.com/ansible/ansible-compat/issues/340
 export PYTEST_CHECK_TEST_ID_REGEX=0
 %pytest -k "not (${IGNORED_CHECKS})"

++++++ python-ansible-compat-25.0.0.tar.gz -> 
python-ansible-compat-25.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/.config/constraints.txt 
new/ansible-compat-25.1.0/.config/constraints.txt
--- old/ansible-compat-25.0.0/.config/constraints.txt   2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/.config/constraints.txt   2025-01-27 
17:15:25.000000000 +0100
@@ -1,7 +1,7 @@
 # This file was autogenerated by uv via the following command:
 #    tox run deps
 argparse-manpage==4.6     # via ansible-compat (pyproject.toml)
-attrs==24.3.0             # via jsonschema, referencing
+attrs==25.1.0             # via jsonschema, referencing
 babel==2.16.0             # via mkdocs-material
 beautifulsoup4==4.12.3    # via linkchecker, mkdocs-htmlproofer-plugin
 black==24.10.0            # via ansible-compat (pyproject.toml)
@@ -20,7 +20,7 @@
 dnspython==2.7.0          # via linkchecker
 exceptiongroup==1.2.2     # via pytest
 ghp-import==2.1.0         # via mkdocs
-griffe==1.5.4             # via mkdocstrings-python
+griffe==1.5.5             # via mkdocstrings-python
 hjson==3.1.0              # via mkdocs-macros-plugin, super-collections
 htmlmin2==0.1.13          # via mkdocs-minify-plugin
 idna==3.10                # via requests
@@ -37,12 +37,12 @@
 mergedeep==1.3.4          # via mkdocs, mkdocs-get-deps
 mkdocs==1.6.1             # via mkdocs-ansible, mkdocs-autorefs, 
mkdocs-gen-files, mkdocs-htmlproofer-plugin, mkdocs-macros-plugin, 
mkdocs-material, mkdocs-minify-plugin, mkdocs-monorepo-plugin, mkdocstrings
 mkdocs-ansible==24.12.0   # via ansible-compat (pyproject.toml)
-mkdocs-autorefs==1.2.0    # via mkdocstrings, mkdocstrings-python
+mkdocs-autorefs==1.3.0    # via mkdocstrings, mkdocstrings-python
 mkdocs-gen-files==0.5.0   # via mkdocs-ansible
 mkdocs-get-deps==0.2.0    # via mkdocs
 mkdocs-htmlproofer-plugin==1.3.0  # via mkdocs-ansible
 mkdocs-macros-plugin==1.3.7  # via mkdocs-ansible
-mkdocs-material==9.5.49   # via mkdocs-ansible
+mkdocs-material==9.5.50   # via mkdocs-ansible
 mkdocs-material-extensions==1.3.1  # via mkdocs-ansible, mkdocs-material
 mkdocs-minify-plugin==0.8.0  # via mkdocs-ansible
 mkdocs-monorepo-plugin==1.1.0  # via mkdocs-ansible
@@ -57,7 +57,7 @@
 pluggy==1.5.0             # via pytest
 pycparser==2.22           # via cffi
 pygments==2.19.1          # via mkdocs-material
-pymdown-extensions==10.14  # via markdown-exec, mkdocs-ansible, 
mkdocs-material, mkdocstrings
+pymdown-extensions==10.14.1  # via markdown-exec, mkdocs-ansible, 
mkdocs-material, mkdocstrings
 pytest==8.3.4             # via pytest-instafail, pytest-mock, pytest-plus, 
ansible-compat (pyproject.toml)
 pytest-instafail==0.5.0   # via ansible-compat (pyproject.toml)
 pytest-mock==3.14.0       # via ansible-compat (pyproject.toml)
@@ -66,7 +66,7 @@
 python-slugify==8.0.4     # via mkdocs-monorepo-plugin
 pyyaml==6.0.2             # via ansible-core, mkdocs, mkdocs-get-deps, 
mkdocs-macros-plugin, pymdown-extensions, pyyaml-env-tag, ansible-compat 
(pyproject.toml)
 pyyaml-env-tag==0.1       # via mkdocs
-referencing==0.35.1       # via jsonschema, jsonschema-specifications
+referencing==0.36.2       # via jsonschema, jsonschema-specifications
 regex==2024.11.6          # via mkdocs-material
 requests==2.32.3          # via linkchecker, mkdocs-htmlproofer-plugin, 
mkdocs-material
 rpds-py==0.22.3           # via jsonschema, referencing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/.config/pydoclint-baseline.txt 
new/ansible-compat-25.1.0/.config/pydoclint-baseline.txt
--- old/ansible-compat-25.0.0/.config/pydoclint-baseline.txt    2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/.config/pydoclint-baseline.txt    2025-01-27 
17:15:25.000000000 +0100
@@ -1,21 +1,18 @@
 src/ansible_compat/config.py
-    DOC201: Function `ansible_collections_path` does not have a return section 
in docstring
     DOC101: Function `parse_ansible_version`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Function `parse_ansible_version`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [stdout: str].
     DOC201: Function `parse_ansible_version` does not have a return section in 
docstring
     DOC501: Function `parse_ansible_version` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Function `parse_ansible_version` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
+    DOC503: Function `parse_ansible_version` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
     DOC101: Function `ansible_version`: Docstring contains fewer arguments 
than in function signature.
     DOC103: Function `ansible_version`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [version: str].
     DOC201: Function `ansible_version` does not have a return section in 
docstring
     DOC501: Function `ansible_version` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Function `ansible_version` exceptions in the "Raises" section in 
the docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['MissingAnsibleError'].
-    DOC601: Class `AnsibleConfig`: Class docstring contains fewer class 
attributes than actual class attributes.  (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
-    DOC603: Class `AnsibleConfig`: Class docstring attributes are different 
from actual class attributes. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Attributes in the class definition but not in the docstring: [_aliases: , 
action_warnings: bool, agnostic_become_prompt: bool, 
allow_world_readable_tmpfiles: bool, ansible_connection_path: str | None, 
ansible_cow_acceptlist: list[str], ansible_cow_path: str | None, 
ansible_cow_selection: str, ansible_force_color: bool, ansible_nocolor: bool, 
ansible_nocows: bool, ansible_pipelining: bool, any_errors_fatal: bool, 
become_allow_same_user: bool, become_plugin_path: list[str], cache_plugin: str, 
cache_plugin_connection: str | None, cache_plugin_prefix: str, 
cache_plugin_timeout: int, callable_accept_list: list[str], callbacks_enabled: 
list[str], collections_on_ansible_version_mismatch: Literal['warning', 
'ignore'], collections_paths: list[str], collections_scan_sys_path: boo
 l, color_changed: str, color_console_prompt: str, color_debug: str, 
color_deprecate: str, color_diff_add: str, color_diff_lines: str, 
color_diff_remove: str, color_error: str, color_highlight: str, color_ok: str, 
color_skip: str, color_unreachable: str, color_verbose: str, color_warn: str, 
command_warnings: bool, conditional_bare_vars: bool, connection_facts_modules: 
dict[str, str], controller_python_warning: bool, coverage_remote_output: str | 
None, coverage_remote_paths: list[str], default_action_plugin_path: list[str], 
default_allow_unsafe_lookups: bool, default_ask_pass: bool, 
default_ask_vault_pass: bool, default_become: bool, default_become_ask_pass: 
bool, default_become_exe: str | None, default_become_flags: str, 
default_become_method: str, default_become_user: str, 
default_cache_plugin_path: list[str], default_callback_plugin_path: list[str], 
default_cliconf_plugin_path: list[str], default_collections_path: list[str], 
default_connection_plugin_path: list[str], default_debug:
  bool, default_executable: str, default_fact_path: str | None, 
default_filter_plugin_path: list[str], default_force_handlers: bool, 
default_forks: int, default_gather_subset: list[str], default_gather_timeout: 
int, default_gathering: Literal['smart', 'explicit', 'implicit'], 
default_handler_includes_static: bool, default_hash_behaviour: str, 
default_host_list: list[str], default_httpapi_plugin_path: list[str], 
default_internal_poll_interval: float, default_inventory_plugin_path: 
list[str], default_jinja2_extensions: list[str], default_jinja2_native: bool, 
default_keep_remote_files: bool, default_libvirt_lxc_noseclabel: bool, 
default_load_callback_plugins: bool, default_local_tmp: str, 
default_log_filter: list[str], default_log_path: str | None, 
default_lookup_lugin_path: list[str], default_managed_str: str, 
default_module_args: str, default_module_compression: str, default_module_name: 
str, default_module_path: list[str], default_module_utils_path: list[str], 
default_netconf_plugin_
 path: list[str], default_no_log: bool, default_no_target_syslog: bool, 
default_null_representation: str | None, default_poll_interval: int, 
default_private_key_file: str | None, default_private_role_vars: bool, 
default_remote_port: str | None, default_remote_user: str | None, 
default_roles_path: list[str], default_selinux_special_fs: list[str], 
default_stdout_callback: str, default_strategy: str, 
default_strategy_plugin_path: list[str], default_su: bool, 
default_syslog_facility: str, default_task_includes_static: bool, 
default_terminal_plugin_path: list[str], default_test_plugin_path: list[str], 
default_timeout: int, default_transport: str, default_undefined_var_behavior: 
bool, default_vars_plugin_path: list[str], default_vault_encrypt_identity: str 
| None, default_vault_id_match: bool, default_vault_identity: str, 
default_vault_identity_list: list[str], default_vault_password_file: str | 
None, default_verbosity: int, deprecation_warnings: bool, devel_warning: bool, 
diff_always: boo
 l, diff_context: int, display_args_to_stdout: bool, display_skipped_hosts: 
bool, doc_fragment_plugin_path: list[str], docsite_root_url: str, 
duplicate_yaml_dict_key: Literal['warn', 'error', 'ignore'], 
enable_task_debugger: bool, error_on_missing_handler: bool, facts_modules: 
list[str], galaxy_cache_dir: str, galaxy_display_progress: str | None, 
galaxy_ignore_certs: bool, galaxy_role_skeleton: str | None, 
galaxy_role_skeleton_ignore: list[str], galaxy_server: str, galaxy_server_list: 
str | None, galaxy_token_path: str, host_key_checking: bool, 
host_pattern_mismatch: Literal['warning', 'error', 'ignore'], 
inject_facts_as_vars: bool, interpreter_python: str, 
interpreter_python_distro_map: dict[str, str], interpreter_python_fallback: 
list[str], invalid_task_attribute_failed: bool, 
inventory_any_unparsed_is_failed: bool, inventory_cache_enabled: bool, 
inventory_cache_plugin: str | None, inventory_cache_plugin_connection: str | 
None, inventory_cache_plugin_prefix: str, inventory_cache_ti
 meout: int, inventory_enabled: list[str], inventory_export: bool, 
inventory_ignore_exts: str, inventory_ignore_patterns: list[str], 
inventory_unparsed_is_failed: bool, localhost_warning: bool, 
max_file_size_for_diff: int, module_ignore_exts: str, netconf_ssh_config: str | 
None, network_group_modules: list[str], old_plugin_cache_clearing: bool, 
paramiko_host_key_auto_add: bool, paramiko_look_for_keys: bool, 
persistent_command_timeout: int, persistent_connect_retry_timeout: int, 
persistent_connect_timeout: int, persistent_control_path_dir: str, 
playbook_dir: str | None, playbook_vars_root: Literal['top', 'bottom', 'all'], 
plugin_filters_cfg: str | None, python_module_rlimit_nofile: int, 
retry_files_enabled: bool, retry_files_save_path: str | None, run_vars_plugins: 
str, show_custom_stats: bool, string_conversion_action: Literal['warn', 
'error', 'ignore'], string_type_filters: list[str], system_warnings: bool, 
tags_run: list[str], tags_skip: list[str], task_debugger_ignore_errors: bool
 , task_timeout: int, transform_invalid_group_chars: Literal['always', 'never', 
'ignore', 'silently'], use_persistent_connections: bool, 
variable_plugins_enabled: list[str], variable_precedence: list[str], 
verbose_to_stderr: bool, win_async_startup_timeout: int, 
worker_shutdown_poll_count: int, worker_shutdown_poll_delay: float, 
yaml_filename_extensions: list[str]]. (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
+    DOC503: Function `ansible_version` exceptions in the "Raises" section in 
the docstring do not match those in the function body. Raised exceptions in the 
docstring: []. Raised exceptions in the body: ['MissingAnsibleError'].
+    DOC604: Class `AnsibleConfig`: Attributes are the same in docstring and 
class def, but are in a different order.  (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
+    DOC605: Class `AnsibleConfig`: Attribute names match, but type hints in 
these attributes do not match: action_warnings, agnostic_become_prompt, 
allow_world_readable_tmpfiles, ansible_connection_path, ansible_cow_acceptlist, 
ansible_cow_path, ansible_cow_selection, ansible_force_color, ansible_nocolor, 
ansible_nocows, ansible_pipelining, any_errors_fatal, become_allow_same_user, 
become_plugin_path, cache_plugin, cache_plugin_connection, cache_plugin_prefix, 
cache_plugin_timeout, callable_accept_list, callbacks_enabled, 
collections_on_ansible_version_mismatch, collections_paths, 
collections_scan_sys_path, color_changed, color_console_prompt, color_debug, 
color_deprecate, color_diff_add, color_diff_lines, color_diff_remove, 
color_error, color_highlight, color_ok, color_skip, color_unreachable, 
color_verbose, color_warn, command_warnings, conditional_bare_vars, 
connection_facts_modules, controller_python_warning, coverage_remote_output, 
coverage_remote_paths, default_action_plugin_p
 ath, default_allow_unsafe_lookups, default_ask_pass, default_ask_vault_pass, 
default_become, default_become_ask_pass, default_become_exe, 
default_become_flags, default_become_method, default_become_user, 
default_cache_plugin_path, default_callback_plugin_path, 
default_cliconf_plugin_path, default_connection_plugin_path, default_debug, 
default_executable, default_fact_path, default_filter_plugin_path, 
default_force_handlers, default_forks, default_gather_subset, 
default_gather_timeout, default_gathering, default_handler_includes_static, 
default_hash_behaviour, default_host_list, default_httpapi_plugin_path, 
default_internal_poll_interval, default_inventory_plugin_path, 
default_jinja2_extensions, default_jinja2_native, default_keep_remote_files, 
default_libvirt_lxc_noseclabel, default_load_callback_plugins, 
default_local_tmp, default_log_filter, default_log_path, 
default_lookup_plugin_path, default_managed_str, default_module_args, 
default_module_compression, default_module_name, defa
 ult_module_path, default_module_utils_path, default_netconf_plugin_path, 
default_no_log, default_no_target_syslog, default_null_representation, 
default_poll_interval, default_private_key_file, default_private_role_vars, 
default_remote_port, default_remote_user, default_collections_path, 
default_roles_path, default_selinux_special_fs, default_stdout_callback, 
default_strategy, default_strategy_plugin_path, default_su, 
default_syslog_facility, default_task_includes_static, 
default_terminal_plugin_path, default_test_plugin_path, default_timeout, 
default_transport, default_undefined_var_behavior, default_vars_plugin_path, 
default_vault_encrypt_identity, default_vault_id_match, default_vault_identity, 
default_vault_identity_list, default_vault_password_file, default_verbosity, 
deprecation_warnings, devel_warning, diff_always, diff_context, 
display_args_to_stdout, display_skipped_hosts, docsite_root_url, 
doc_fragment_plugin_path, duplicate_yaml_dict_key, enable_task_debugger, 
error_on_mis
 sing_handler, facts_modules, galaxy_cache_dir, galaxy_display_progress, 
galaxy_ignore_certs, galaxy_role_skeleton, galaxy_role_skeleton_ignore, 
galaxy_server, galaxy_server_list, galaxy_token_path, host_key_checking, 
host_pattern_mismatch, inject_facts_as_vars, interpreter_python, 
interpreter_python_distro_map, interpreter_python_fallback, 
invalid_task_attribute_failed, inventory_any_unparsed_is_failed, 
inventory_cache_enabled, inventory_cache_plugin, 
inventory_cache_plugin_connection, inventory_cache_plugin_prefix, 
inventory_cache_timeout, inventory_enabled, inventory_export, 
inventory_ignore_exts, inventory_ignore_patterns, inventory_unparsed_is_failed, 
localhost_warning, max_file_size_for_diff, module_ignore_exts, 
netconf_ssh_config, network_group_modules, old_plugin_cache_clearing, 
paramiko_host_key_auto_add, paramiko_look_for_keys, persistent_command_timeout, 
persistent_connect_retry_timeout, persistent_connect_timeout, 
persistent_control_path_dir, playbook_dir, playbook_vars_r
 oot, plugin_filters_cfg, python_module_rlimit_nofile, retry_files_enabled, 
retry_files_save_path, run_vars_plugins, show_custom_stats, 
string_conversion_action, string_type_filters, system_warnings, tags_run, 
tags_skip, task_debugger_ignore_errors, task_timeout, 
transform_invalid_group_chars, use_persistent_connections, 
variable_plugins_enabled, variable_precedence, verbose_to_stderr, 
win_async_startup_timeout, worker_shutdown_poll_count, 
worker_shutdown_poll_delay, yaml_filename_extensions  (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
     DOC101: Method `AnsibleConfig.__init__`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `AnsibleConfig.__init__`: Docstring arguments are different 
from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [cache_dir: Path 
| None, config_dump: str | None, data: dict[str, object] | None].
-    DOC501: Method `AnsibleConfig.__init__` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Method `AnsibleConfig.__init__` exceptions in the "Raises" section 
in the docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['RuntimeError'].
     DOC101: Method `AnsibleConfig.__getattribute__`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `AnsibleConfig.__getattribute__`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [attr_name: str].
     DOC201: Method `AnsibleConfig.__getattribute__` does not have a return 
section in docstring
@@ -49,7 +46,7 @@
     DOC103: Function `colpath_from_path`: Docstring arguments are different 
from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [path: Path].
     DOC201: Function `colpath_from_path` does not have a return section in 
docstring
     DOC501: Function `colpath_from_path` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Function `colpath_from_path` exceptions in the "Raises" section in 
the docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['InvalidPrerequisiteError'].
+    DOC503: Function `colpath_from_path` exceptions in the "Raises" section in 
the docstring do not match those in the function body. Raised exceptions in the 
docstring: []. Raised exceptions in the body: ['InvalidPrerequisiteError'].
 --------------------
 src/ansible_compat/runtime.py
     DOC601: Class `Collection`: Class docstring contains fewer class 
attributes than actual class attributes.  (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
@@ -62,26 +59,26 @@
     DOC103: Method `Plugins.__getattribute__`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [attr: str].
     DOC201: Method `Plugins.__getattribute__` does not have a return section 
in docstring
     DOC501: Method `Plugins.__getattribute__` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Method `Plugins.__getattribute__` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: ['AnsibleCompatError'].
+    DOC503: Method `Plugins.__getattribute__` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['AnsibleCompatError'].
     DOC601: Class `Runtime`: Class docstring contains fewer class attributes 
than actual class attributes.  (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
     DOC603: Class `Runtime`: Class docstring attributes are different from 
actual class attributes. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Attributes in the class definition but not in the docstring: 
[_has_playbook_cache: dict[tuple[str, Path | None], bool], _version: Version | 
None, cache_dir: Path, collections: OrderedDict[str, Collection], initialized: 
bool, plugins: Plugins, require_module: bool]. (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
     DOC101: Method `Runtime.__init__`: Docstring contains fewer arguments than 
in function signature.
     DOC103: Method `Runtime.__init__`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [environ: 
dict[str, str] | None, isolated: bool, max_retries: int, min_required_version: 
str | None, project_dir: Path | None, require_module: bool, verbosity: int].
     DOC501: Method `Runtime.__init__` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Method `Runtime.__init__` exceptions in the "Raises" section in 
the docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['RuntimeError'].
+    DOC503: Method `Runtime.__init__` exceptions in the "Raises" section in 
the docstring do not match those in the function body. Raised exceptions in the 
docstring: []. Raised exceptions in the body: ['RuntimeError'].
     DOC101: Function `warning`: Docstring contains fewer arguments than in 
function signature.
     DOC103: Function `warning`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [formatted: bool, 
msg: str, self: Display].
     DOC101: Method `Runtime.initialize_logger`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `Runtime.initialize_logger`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [level: int].
     DOC501: Method `Runtime.load_collections` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Method `Runtime.load_collections` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: ['RuntimeError', 
'TypeError'].
+    DOC503: Method `Runtime.load_collections` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['RuntimeError', 'TypeError'].
     DOC501: Method `Runtime._ensure_module_available` has "raise" statements, 
but the docstring does not have a "Raises" section
-    DOC503: Method `Runtime._ensure_module_available` exceptions in the 
"Raises" section in the docstring do not match those in the function body 
Raises values in the docstring: []. Raised exceptions in the body: 
['RuntimeError'].
+    DOC503: Method `Runtime._ensure_module_available` exceptions in the 
"Raises" section in the docstring do not match those in the function body. 
Raised exceptions in the docstring: []. Raised exceptions in the body: 
['RuntimeError'].
     DOC101: Method `Runtime.run`: Docstring contains fewer arguments than in 
function signature.
     DOC103: Method `Runtime.run`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [args: str | 
list[str], cwd: Path | None, env: dict[str, str] | None, retry: bool, set_acp: 
bool, tee: bool].
     DOC201: Method `Runtime.run` does not have a return section in docstring
     DOC501: Method `Runtime.version` has "raise" statements, but the docstring 
does not have a "Raises" section
-    DOC503: Method `Runtime.version` exceptions in the "Raises" section in the 
docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['MissingAnsibleError'].
+    DOC503: Method `Runtime.version` exceptions in the "Raises" section in the 
docstring do not match those in the function body. Raised exceptions in the 
docstring: []. Raised exceptions in the body: ['MissingAnsibleError'].
     DOC101: Method `Runtime.version_in_range`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `Runtime.version_in_range`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [lower: str | 
None, upper: str | None].
     DOC201: Method `Runtime.version_in_range` does not have a return section 
in docstring
@@ -91,22 +88,22 @@
     DOC101: Method `Runtime.install_collection`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `Runtime.install_collection`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [collection: str 
| Path, destination: Path | None, force: bool].
     DOC501: Method `Runtime.install_collection` has "raise" statements, but 
the docstring does not have a "Raises" section
-    DOC503: Method `Runtime.install_collection` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
+    DOC503: Method `Runtime.install_collection` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
     DOC101: Method `Runtime.install_collection_from_disk`: Docstring contains 
fewer arguments than in function signature.
     DOC103: Method `Runtime.install_collection_from_disk`: Docstring arguments 
are different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [destination: 
Path | None, path: Path].
     DOC101: Method `Runtime.install_requirements`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `Runtime.install_requirements`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [offline: bool, 
requirement: Path, retry: bool].
     DOC501: Method `Runtime.install_requirements` has "raise" statements, but 
the docstring does not have a "Raises" section
-    DOC503: Method `Runtime.install_requirements` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: ['AnsibleCommandError', 
'InvalidPrerequisiteError'].
+    DOC503: Method `Runtime.install_requirements` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['AnsibleCommandError', 'InvalidPrerequisiteError'].
     DOC101: Method `Runtime.prepare_environment`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `Runtime.prepare_environment`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [install_local: 
bool, offline: bool, required_collections: dict[str, str] | None, retry: bool, 
role_name_check: int].
     DOC501: Method `Runtime.require_collection` has "raise" statements, but 
the docstring does not have a "Raises" section
-    DOC503: Method `Runtime.require_collection` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
+    DOC503: Method `Runtime.require_collection` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
     DOC501: Method `Runtime._prepare_ansible_paths` has "raise" statements, 
but the docstring does not have a "Raises" section
-    DOC503: Method `Runtime._prepare_ansible_paths` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: ['RuntimeError'].
+    DOC503: Method `Runtime._prepare_ansible_paths` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['RuntimeError'].
     DOC201: Method `Runtime._get_roles_path` does not have a return section in 
docstring
     DOC501: Method `Runtime._install_galaxy_role` has "raise" statements, but 
the docstring does not have a "Raises" section
-    DOC503: Method `Runtime._install_galaxy_role` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
+    DOC503: Method `Runtime._install_galaxy_role` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['InvalidPrerequisiteError'].
     DOC101: Method `Runtime._update_env`: Docstring contains fewer arguments 
than in function signature.
     DOC103: Method `Runtime._update_env`: Docstring arguments are different 
from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [default: str, 
value: list[str], varname: str].
     DOC101: Function `_get_role_fqrn`: Docstring contains fewer arguments than 
in function signature.
@@ -116,7 +113,7 @@
     DOC103: Function `_get_galaxy_role_ns`: Docstring arguments are different 
from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [galaxy_infos: 
dict[str, Any]].
     DOC201: Function `_get_galaxy_role_ns` does not have a return section in 
docstring
     DOC501: Function `_get_galaxy_role_ns` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Function `_get_galaxy_role_ns` exceptions in the "Raises" section 
in the docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['AnsibleCompatError'].
+    DOC503: Function `_get_galaxy_role_ns` exceptions in the "Raises" section 
in the docstring do not match those in the function body. Raised exceptions in 
the docstring: []. Raised exceptions in the body: ['AnsibleCompatError'].
     DOC101: Function `_get_galaxy_role_name`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Function `_get_galaxy_role_name`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [galaxy_infos: 
dict[str, Any]].
     DOC201: Function `_get_galaxy_role_name` does not have a return section in 
docstring
@@ -130,12 +127,12 @@
     DOC601: Class `JsonSchemaError`: Class docstring contains fewer class 
attributes than actual class attributes.  (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
     DOC603: Class `JsonSchemaError`: Class docstring attributes are different 
from actual class attributes. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Attributes in the class definition but not in the docstring: [data_path: str, 
expected: bool | int | str, found: str, json_path: str, message: str, 
relative_schema: str, schema_path: str, validator: str]. (Please read 
https://jsh9.github.io/pydoclint/checking_class_attributes.html on how to 
correctly document class attributes.)
     DOC201: Method `JsonSchemaError.to_friendly` does not have a return 
section in docstring
-    DOC001: Function/method `validate`: Potential formatting errors in 
docstring. Error message: Expected a colon in 'SchemaError if the schema is 
invalid'.
+    DOC001: Function/method `validate`: Potential formatting errors in 
docstring. Error message: Expected a colon in 'SchemaError if the schema is 
invalid'. (Note: DOC001 could trigger other unrelated violations under this 
function/method too. Please fix the docstring formatting first.)
     DOC101: Function `validate`: Docstring contains fewer arguments than in 
function signature.
     DOC103: Function `validate`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [data: JSON, 
schema: JSON].
     DOC201: Function `validate` does not have a return section in docstring
     DOC501: Function `validate` has "raise" statements, but the docstring does 
not have a "Raises" section
-    DOC503: Function `validate` exceptions in the "Raises" section in the 
docstring do not match those in the function body Raises values in the 
docstring: []. Raised exceptions in the body: ['jsonschema.SchemaError'].
+    DOC503: Function `validate` exceptions in the "Raises" section in the 
docstring do not match those in the function body. Raised exceptions in the 
docstring: []. Raised exceptions in the body: ['jsonschema.SchemaError'].
 --------------------
 test/conftest.py
     DOC101: Function `runtime`: Docstring contains fewer arguments than in 
function signature.
@@ -157,7 +154,7 @@
     DOC201: Method `VirtualEnvironment.python_script_run` does not have a 
return section in docstring
     DOC201: Method `VirtualEnvironment.site_package_dirs` does not have a 
return section in docstring
     DOC501: Method `VirtualEnvironment.site_package_dirs` has "raise" 
statements, but the docstring does not have a "Raises" section
-    DOC503: Method `VirtualEnvironment.site_package_dirs` exceptions in the 
"Raises" section in the docstring do not match those in the function body 
Raises values in the docstring: []. Raised exceptions in the body: 
['TypeError'].
+    DOC503: Method `VirtualEnvironment.site_package_dirs` exceptions in the 
"Raises" section in the docstring do not match those in the function body. 
Raised exceptions in the docstring: []. Raised exceptions in the body: 
['TypeError'].
     DOC101: Function `venv_module`: Docstring contains fewer arguments than in 
function signature.
     DOC103: Function `venv_module`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: 
[tmp_path_factory: pytest.TempPathFactory].
     DOC201: Function `venv_module` does not have a return section in docstring
@@ -165,8 +162,6 @@
 test/test_config.py
     DOC101: Function `test_ansible_version_missing`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Function `test_ansible_version_missing`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [monkeypatch: 
MonkeyPatch].
-    DOC101: Function `test_ansible_collections_path_env`: Docstring contains 
fewer arguments than in function signature.
-    DOC103: Function `test_ansible_collections_path_env`: Docstring arguments 
are different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [monkeypatch: 
MonkeyPatch, var: str].
 --------------------
 test/test_runtime.py
     DOC101: Function `test_runtime_version`: Docstring contains fewer 
arguments than in function signature.
@@ -178,7 +173,7 @@
     DOC101: Method `RaiseException.__init__`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Method `RaiseException.__init__`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [**kwargs: Any, 
*args: Any].
     DOC501: Method `RaiseException.__init__` has "raise" statements, but the 
docstring does not have a "Raises" section
-    DOC503: Method `RaiseException.__init__` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: ['ModuleNotFoundError'].
+    DOC503: Method `RaiseException.__init__` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['ModuleNotFoundError'].
     DOC101: Function `test_runtime_mismatch_ansible_module`: Docstring 
contains fewer arguments than in function signature.
     DOC103: Function `test_runtime_mismatch_ansible_module`: Docstring 
arguments are different from function arguments. (Or could be other formatting 
issues: https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 
). Arguments in the function signature but not in the docstring: [monkeypatch: 
MonkeyPatch].
     DOC101: Function `test_runtime_version_fail_module`: Docstring contains 
fewer arguments than in function signature.
@@ -230,7 +225,7 @@
     DOC101: Function `test_install_collection_dest`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Function `test_install_collection_dest`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [runtime: 
Runtime, tmp_path: pathlib.Path].
     DOC501: Function `test_install_collection_dest` has "raise" statements, 
but the docstring does not have a "Raises" section
-    DOC503: Function `test_install_collection_dest` exceptions in the "Raises" 
section in the docstring do not match those in the function body Raises values 
in the docstring: []. Raised exceptions in the body: ['AssertionError'].
+    DOC503: Function `test_install_collection_dest` exceptions in the "Raises" 
section in the docstring do not match those in the function body. Raised 
exceptions in the docstring: []. Raised exceptions in the body: 
['AssertionError'].
     DOC101: Function `test_install_collection_fail`: Docstring contains fewer 
arguments than in function signature.
     DOC103: Function `test_install_collection_fail`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [runtime: 
Runtime].
     DOC101: Function `test_install_galaxy_role`: Docstring contains fewer 
arguments than in function signature.
@@ -277,6 +272,8 @@
     DOC103: Function `test_is_url`: Docstring arguments are different from 
function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [name: str, 
result: bool].
     DOC101: Function `test_prepare_environment_symlink`: Docstring contains 
fewer arguments than in function signature.
     DOC103: Function `test_prepare_environment_symlink`: Docstring arguments 
are different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [caplog: 
pytest.LogCaptureFixture, dest: str | Path, message: str].
+    DOC101: Function `test_runtime_exception`: Docstring contains fewer 
arguments than in function signature.
+    DOC103: Function `test_runtime_exception`: Docstring arguments are 
different from function arguments. (Or could be other formatting issues: 
https://jsh9.github.io/pydoclint/violation_codes.html#notes-on-doc103 ). 
Arguments in the function signature but not in the docstring: [monkeypatch: 
pytest.MonkeyPatch].
 --------------------
 test/test_schema.py
     DOC101: Function `json_from_asset`: Docstring contains fewer arguments 
than in function signature.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/.git_archival.txt 
new/ansible-compat-25.1.0/.git_archival.txt
--- old/ansible-compat-25.0.0/.git_archival.txt 2025-01-12 21:15:20.000000000 
+0100
+++ new/ansible-compat-25.1.0/.git_archival.txt 2025-01-27 17:15:25.000000000 
+0100
@@ -1,4 +1,4 @@
-node: 4db0011d8fc2c093255ef673e5bf8388832407e5
-node-date: 2025-01-12T20:15:20Z
-describe-name: v25.0.0
-ref-names: HEAD -> main, tag: v25.0.0
+node: 83c5cfbc78480382a6e8f194d0e83129e4d0f2c2
+node-date: 2025-01-27T21:45:25+05:30
+describe-name: v25.1.0
+ref-names: HEAD -> main, tag: v25.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/.pre-commit-config.yaml 
new/ansible-compat-25.1.0/.pre-commit-config.yaml
--- old/ansible-compat-25.0.0/.pre-commit-config.yaml   2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/.pre-commit-config.yaml   2025-01-27 
17:15:25.000000000 +0100
@@ -19,7 +19,7 @@
   )$
 repos:
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: "v0.8.6"
+    rev: "v0.9.2"
     hooks:
       - id: ruff
         args: [--fix, --exit-non-zero-on-fix]
@@ -54,13 +54,16 @@
       - id: debug-statements
         language_version: python3
   - repo: https://github.com/codespell-project/codespell
-    rev: v2.3.0
+    rev: v2.4.0
     hooks:
       - id: codespell
   - repo: https://github.com/jsh9/pydoclint
-    rev: 0.5.9
+    rev: 0.6.0
     hooks:
       - id: pydoclint
+        # This allows automatic reduction of the baseline file when needed.
+        entry: sh -ec "pydoclint . && pydoclint --generate-baseline=1 ."
+        pass_filenames: false
   - repo: https://github.com/adrienverge/yamllint.git
     rev: v1.35.1
     hooks:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/pyproject.toml 
new/ansible-compat-25.1.0/pyproject.toml
--- old/ansible-compat-25.0.0/pyproject.toml    2025-01-12 21:15:20.000000000 
+0100
+++ new/ansible-compat-25.1.0/pyproject.toml    2025-01-27 17:15:25.000000000 
+0100
@@ -88,8 +88,7 @@
 baseline = ".config/pydoclint-baseline.txt"
 check-return-types = false
 check-yield-types = false
-exclude = '\.cache|\.git|\.tox|build|out|venv'
-quiet = true # no need to print out the files being checked
+exclude = '\.ansible|\.cache|\.git|\.tox|build|ansible_collections|out|venv'
 should-document-private-class-attributes = true
 show-filenames-in-every-violation-message = true
 skip-checking-short-docstrings = false
@@ -350,7 +349,7 @@
 ]
 
 [tool.pytest.ini_options]
-addopts = "-p no:pytest_cov --durations=10 --durations-min=1.0 --failed-first"
+addopts = "-p no:pytest_cov --durations=10 --durations-min=1.0 --failed-first 
--instafail"
 # ensure we treat warnings as error
 filterwarnings = [
   "error",
@@ -369,6 +368,9 @@
 docstring-code-format = true
 
 [tool.ruff.lint]
+external = [
+  "DOC" # pydoclint
+]
 ignore = [
   # Disabled on purpose:
   "CPY001",
@@ -405,8 +407,11 @@
   "PLR0917",
   "S101",
   "S404",
+  "S603", # subprocess
+  "S607", # subprocess
   "SLF001"
 ]
+"tools/*.py" = ["S603"]
 
 [tool.ruff.lint.pydocstyle]
 convention = "google"
@@ -439,10 +444,4 @@
 [tool.uv.pip]
 annotation-style = "line"
 custom-compile-command = "tox run deps"
-no-emit-package = [
-  "ansible-core",
-  "pip",
-  "resolvelib",
-  "typing_extensions",
-  "uv"
-]
+no-emit-package = ["ansible-core", "pip", "resolvelib", "typing_extensions", 
"uv"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/src/ansible_compat/config.py 
new/ansible-compat-25.1.0/src/ansible_compat/config.py
--- old/ansible-compat-25.0.0/src/ansible_compat/config.py      2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/src/ansible_compat/config.py      2025-01-27 
17:15:25.000000000 +0100
@@ -20,18 +20,6 @@
     from pathlib import Path
 
 
-# do not use lru_cache here, as environment can change between calls
-def ansible_collections_path() -> str:
-    """Return collection path variable for current version of Ansible."""
-    for env_var in [
-        "ANSIBLE_COLLECTIONS_PATH",
-        "ANSIBLE_COLLECTIONS_PATHS",
-    ]:
-        if env_var in os.environ:
-            return env_var
-    return "ANSIBLE_COLLECTIONS_PATH"
-
-
 def parse_ansible_version(stdout: str) -> Version:
     """Parse output of 'ansible --version'."""
     # Ansible can produce extra output before displaying version in debug mode.
@@ -71,10 +59,206 @@
     return parse_ansible_version(proc.stdout)
 
 
-class AnsibleConfig(UserDict[str, object]):  # pylint: 
disable=too-many-ancestors
+class AnsibleConfig(
+    UserDict[str, object],
+):  # pylint: disable=too-many-ancestors # noqa: DOC605
     """Interface to query Ansible configuration.
 
     This should allow user to access everything provided by `ansible-config 
dump` without having to parse the data himself.
+
+    Attributes:
+        _aliases:
+        action_warnings:
+        agnostic_become_prompt:
+        allow_world_readable_tmpfiles:
+        ansible_connection_path:
+        ansible_cow_acceptlist:
+        ansible_cow_path:
+        ansible_cow_selection:
+        ansible_force_color:
+        ansible_nocolor:
+        ansible_nocows:
+        ansible_pipelining:
+        any_errors_fatal:
+        become_allow_same_user:
+        become_plugin_path:
+        cache_plugin:
+        cache_plugin_connection:
+        cache_plugin_prefix:
+        cache_plugin_timeout:
+        callable_accept_list:
+        callbacks_enabled:
+        collections_on_ansible_version_mismatch:
+        collections_paths:
+        collections_scan_sys_path:
+        color_changed:
+        color_console_prompt:
+        color_debug:
+        color_deprecate:
+        color_diff_add:
+        color_diff_lines:
+        color_diff_remove:
+        color_error:
+        color_highlight:
+        color_ok:
+        color_skip:
+        color_unreachable:
+        color_verbose:
+        color_warn:
+        command_warnings:
+        conditional_bare_vars:
+        connection_facts_modules:
+        controller_python_warning:
+        coverage_remote_output:
+        coverage_remote_paths:
+        default_action_plugin_path:
+        default_allow_unsafe_lookups:
+        default_ask_pass:
+        default_ask_vault_pass:
+        default_become:
+        default_become_ask_pass:
+        default_become_exe:
+        default_become_flags:
+        default_become_method:
+        default_become_user:
+        default_cache_plugin_path:
+        default_callback_plugin_path:
+        default_cliconf_plugin_path:
+        default_collections_path:
+        default_connection_plugin_path:
+        default_debug:
+        default_executable:
+        default_fact_path:
+        default_filter_plugin_path:
+        default_force_handlers:
+        default_forks:
+        default_gather_subset:
+        default_gather_timeout:
+        default_gathering:
+        default_handler_includes_static:
+        default_hash_behaviour:
+        default_host_list:
+        default_httpapi_plugin_path:
+        default_internal_poll_interval:
+        default_inventory_plugin_path:
+        default_jinja2_extensions:
+        default_jinja2_native:
+        default_keep_remote_files:
+        default_libvirt_lxc_noseclabel:
+        default_load_callback_plugins:
+        default_local_tmp:
+        default_log_filter:
+        default_log_path:
+        default_lookup_plugin_path:
+        default_managed_str:
+        default_module_args:
+        default_module_compression:
+        default_module_name:
+        default_module_path:
+        default_module_utils_path:
+        default_netconf_plugin_path:
+        default_no_log:
+        default_no_target_syslog:
+        default_null_representation:
+        default_poll_interval:
+        default_private_key_file:
+        default_private_role_vars:
+        default_remote_port:
+        default_remote_user:
+        default_roles_path:
+        default_selinux_special_fs:
+        default_stdout_callback:
+        default_strategy:
+        default_strategy_plugin_path:
+        default_su:
+        default_syslog_facility:
+        default_task_includes_static:
+        default_terminal_plugin_path:
+        default_test_plugin_path:
+        default_timeout:
+        default_transport:
+        default_undefined_var_behavior:
+        default_vars_plugin_path:
+        default_vault_encrypt_identity:
+        default_vault_id_match:
+        default_vault_identity:
+        default_vault_identity_list:
+        default_vault_password_file:
+        default_verbosity:
+        deprecation_warnings:
+        devel_warning:
+        diff_always:
+        diff_context:
+        display_args_to_stdout:
+        display_skipped_hosts:
+        doc_fragment_plugin_path:
+        docsite_root_url:
+        duplicate_yaml_dict_key:
+        enable_task_debugger:
+        error_on_missing_handler:
+        facts_modules:
+        galaxy_cache_dir:
+        galaxy_display_progress:
+        galaxy_ignore_certs:
+        galaxy_role_skeleton:
+        galaxy_role_skeleton_ignore:
+        galaxy_server:
+        galaxy_server_list:
+        galaxy_token_path:
+        host_key_checking:
+        host_pattern_mismatch:
+        inject_facts_as_vars:
+        interpreter_python:
+        interpreter_python_distro_map:
+        interpreter_python_fallback:
+        invalid_task_attribute_failed:
+        inventory_any_unparsed_is_failed:
+        inventory_cache_enabled:
+        inventory_cache_plugin:
+        inventory_cache_plugin_connection:
+        inventory_cache_plugin_prefix:
+        inventory_cache_timeout:
+        inventory_enabled:
+        inventory_export:
+        inventory_ignore_exts:
+        inventory_ignore_patterns:
+        inventory_unparsed_is_failed:
+        localhost_warning:
+        max_file_size_for_diff:
+        module_ignore_exts:
+        netconf_ssh_config:
+        network_group_modules:
+        old_plugin_cache_clearing:
+        paramiko_host_key_auto_add:
+        paramiko_look_for_keys:
+        persistent_command_timeout:
+        persistent_connect_retry_timeout:
+        persistent_connect_timeout:
+        persistent_control_path_dir:
+        playbook_dir:
+        playbook_vars_root:
+        plugin_filters_cfg:
+        python_module_rlimit_nofile:
+        retry_files_enabled:
+        retry_files_save_path:
+        run_vars_plugins:
+        show_custom_stats:
+        string_conversion_action:
+        string_type_filters:
+        system_warnings:
+        tags_run:
+        tags_skip:
+        task_debugger_ignore_errors:
+        task_timeout:
+        transform_invalid_group_chars:
+        use_persistent_connections:
+        variable_plugins_enabled:
+        variable_precedence:
+        verbose_to_stderr:
+        win_async_startup_timeout:
+        worker_shutdown_poll_count:
+        worker_shutdown_poll_delay:
+        yaml_filename_extensions:
     """
 
     _aliases = {
@@ -169,9 +353,9 @@
     ]
     default_force_handlers: bool = False
     default_forks: int = 5
-    default_gathering: Literal["smart", "explicit", "implicit"] = "smart"
     default_gather_subset: list[str] = ["all"]
     default_gather_timeout: int = 10
+    default_gathering: Literal["smart", "explicit", "implicit"] = "smart"
     default_handler_includes_static: bool = False
     default_hash_behaviour: str = "replace"
     default_host_list: list[str] = ["/etc/ansible/hosts"]
@@ -192,7 +376,7 @@
     default_local_tmp: str = "~/.ansible/tmp"
     default_log_filter: list[str] = []
     default_log_path: str | None = None
-    default_lookup_lugin_path: list[str] = [
+    default_lookup_plugin_path: list[str] = [
         "~/.ansible/plugins/lookup",
         "/usr/share/ansible/plugins/lookup",
     ]
@@ -263,9 +447,9 @@
         "/usr/share/ansible/plugins/vars",
     ]
     default_vault_encrypt_identity: str | None = None
+    default_vault_id_match: bool = False
     default_vault_identity: str = "default"
     default_vault_identity_list: list[str] = []
-    default_vault_id_match: bool = False
     default_vault_password_file: str | None = None
     default_verbosity: int = 0
     deprecation_warnings: bool = False
@@ -430,17 +614,6 @@
                     self[key] = ast.literal_eval(value)
                 except (NameError, SyntaxError, ValueError):
                     self[key] = value
-        # inject isolation collections paths into the config
-        if self.cache_dir:
-            cpaths = self.data["COLLECTIONS_PATHS"]
-            if cpaths and isinstance(cpaths, list):
-                cpaths.insert(
-                    0,
-                    f"{self.cache_dir}/collections",
-                )
-            else:  # pragma: no cover
-                msg = f"Unexpected data type for COLLECTIONS_PATHS: {cpaths}"
-                raise RuntimeError(msg)
         if data:
             return
 
@@ -477,7 +650,6 @@
 
 __all__ = [
     "AnsibleConfig",
-    "ansible_collections_path",
     "ansible_version",
     "parse_ansible_version",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/src/ansible_compat/runtime.py 
new/ansible-compat-25.1.0/src/ansible_compat/runtime.py
--- old/ansible-compat-25.0.0/src/ansible_compat/runtime.py     2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/src/ansible_compat/runtime.py     2025-01-27 
17:15:25.000000000 +0100
@@ -11,6 +11,7 @@
 import os
 import re
 import shutil
+import site
 import subprocess  # noqa: S404
 import sys
 import warnings
@@ -24,7 +25,6 @@
 
 from ansible_compat.config import (
     AnsibleConfig,
-    ansible_collections_path,
     parse_ansible_version,
 )
 from ansible_compat.constants import (
@@ -195,6 +195,9 @@
         self.isolated = isolated
         self.max_retries = max_retries
         self.environ = environ or os.environ.copy()
+        if "ANSIBLE_COLLECTIONS_PATHS" in self.environ:
+            msg = "ANSIBLE_COLLECTIONS_PATHS was detected, replace it with 
ANSIBLE_COLLECTIONS_PATH to continue."
+            raise RuntimeError(msg)
         self.plugins = Plugins(runtime=self)
         self.verbosity = verbosity
 
@@ -214,7 +217,7 @@
         self.config = AnsibleConfig(cache_dir=self.cache_dir)
 
         # Add the sys.path to the collection paths if not isolated
-        self._add_sys_path_to_collection_paths()
+        self._patch_collection_paths()
 
         if not self.version_in_range(lower=min_required_version):
             msg = f"Found incompatible version of ansible runtime 
{self.version}, instead of {min_required_version} or newer."
@@ -259,17 +262,43 @@
         # Use module-level _logger instance to validate it
         _logger.debug("Logging initialized to level %s", logging_level)
 
-    def _add_sys_path_to_collection_paths(self) -> None:
-        """Add the sys.path to the collection paths."""
+    def _patch_collection_paths(self) -> None:
+        """Modify Ansible collection path for testing purposes.
+
+        - Add the sys.path to the end of collection paths.
+        - Add the site-packages to the beginning of collection paths to match
+          ansible-core and ade behavior and trick ansible-galaxy to install
+          default to the venv site-packages location (isolation).
+        """
+        collections_paths: list[str] = self.config.collections_paths.copy()
         if self.config.collections_scan_sys_path:
             for path in sys.path:
                 if (
-                    path not in self.config.collections_paths
+                    path not in collections_paths
                     and (Path(path) / "ansible_collections").is_dir()
                 ):
-                    self.config.collections_paths.append(  # pylint: 
disable=E1101
+                    collections_paths.append(  # pylint: disable=E1101
                         path,
                     )
+            # When inside a venv, we also add the site-packages to the top of 
the
+            # collections path because this is the first place where 
ansible-core
+            # will look for them. This also ensures that when calling 
ansible-galaxy
+            # to install content, it will be installed in the venv 
site-packages instead
+            # of altering the user configuration. Matches behavior of ADE and
+            # ensures isolation.
+            for path in reversed(site.getsitepackages()):
+                if path not in collections_paths:
+                    collections_paths.insert(0, path)
+
+            if collections_paths != self.config.collections_paths:
+                _logger.info(
+                    "Collection paths was patch to include extra directories 
%s",
+                    ",".join(collections_paths),
+                )
+        else:
+            msg = "ANSIBLE_COLLECTIONS_SCAN_SYS_PATH is disabled, not patching 
collection paths. This may lead to unexpected behavior when using dev tools and 
prevent full isolation from user environment."
+            _logger.warning(msg)
+        self.config.collections_paths = collections_paths
 
     def load_collections(self) -> None:
         """Load collection data."""
@@ -505,7 +534,7 @@
         cpaths: list[str] = self.config.collections_paths
         if destination and str(destination) not in cpaths:
             # we cannot use '-p' because it breaks galaxy ability to ignore 
already installed collections, so
-            # we hack ansible_collections_path instead and inject our own path 
there.
+            # we hack ANSIBLE_COLLECTIONS_PATH instead and inject our own path 
there.
             # pylint: disable=no-member
             cpaths.insert(0, str(destination))
         cmd.append(f"{collection}")
@@ -514,7 +543,7 @@
         process = self.run(
             cmd,
             retry=True,
-            env={**self.environ, ansible_collections_path(): ":".join(cpaths)},
+            env={**self.environ, "ANSIBLE_COLLECTIONS_PATH": ":".join(cpaths)},
         )
         if process.returncode != 0:
             msg = f"Command {' '.join(cmd)}, returned {process.returncode} 
code:\n{process.stdout}\n{process.stderr}"
@@ -822,7 +851,7 @@
         if library_paths != self.config.DEFAULT_MODULE_PATH:
             self._update_env("ANSIBLE_LIBRARY", library_paths)
         if collections_path != self.config.default_collections_path:
-            self._update_env(ansible_collections_path(), collections_path)
+            self._update_env("ANSIBLE_COLLECTIONS_PATH", collections_path)
         if roles_path != self.config.default_roles_path:
             self._update_env("ANSIBLE_ROLES_PATH", roles_path)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/test/test_config.py 
new/ansible-compat-25.1.0/test/test_config.py
--- old/ansible-compat-25.0.0/test/test_config.py       2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/test/test_config.py       2025-01-27 
17:15:25.000000000 +0100
@@ -9,7 +9,6 @@
 
 from ansible_compat.config import (
     AnsibleConfig,
-    ansible_collections_path,
     ansible_version,
     parse_ansible_version,
 )
@@ -90,17 +89,3 @@
 def test_ansible_version_arg() -> None:
     """Validate ansible_version behavior."""
     assert ansible_version("2.0") >= Version("1.0")
-
-
-@pytest.mark.parametrize(
-    "var",
-    ("", "ANSIBLE_COLLECTIONS_PATH", "ANSIBLE_COLLECTIONS_PATHS"),
-    ids=["blank", "singular", "plural"],
-)
-def test_ansible_collections_path_env(var: str, monkeypatch: MonkeyPatch) -> 
None:
-    """Test that ansible_collections_path returns the appropriate env var."""
-    # Set the variable
-    if var:
-        monkeypatch.setenv(var, "")
-
-    assert ansible_collections_path() == (var or "ANSIBLE_COLLECTIONS_PATH")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/test/test_runtime.py 
new/ansible-compat-25.1.0/test/test_runtime.py
--- old/ansible-compat-25.0.0/test/test_runtime.py      2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/test/test_runtime.py      2025-01-27 
17:15:25.000000000 +0100
@@ -401,7 +401,7 @@
 
 def test_require_collection_wrong_version(runtime: Runtime) -> None:
     """Tests behaviour of require_collection."""
-    subprocess.check_output(  # noqa: S603
+    subprocess.check_output(
         [
             "ansible-galaxy",
             "collection",
@@ -1030,3 +1030,13 @@
     assert not runtime.has_playbook("this-does-not-exist.yml", basedir=Path())
     # this is part of community.molecule collection
     assert runtime.has_playbook("community.molecule.validate.yml")
+
+
+def test_runtime_exception(monkeypatch: pytest.MonkeyPatch) -> None:
+    """Asserts that we raise a runtime exception if unsupported environment 
variable is detected."""
+    monkeypatch.setenv("ANSIBLE_COLLECTIONS_PATHS", "foo")
+    with pytest.raises(
+        RuntimeError,
+        match=r"ANSIBLE_COLLECTIONS_PATHS was detected, replace it with 
ANSIBLE_COLLECTIONS_PATH to continue.",
+    ):
+        Runtime()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/test/test_runtime_scan_path.py 
new/ansible-compat-25.1.0/test/test_runtime_scan_path.py
--- old/ansible-compat-25.0.0/test/test_runtime_scan_path.py    2025-01-12 
21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/test/test_runtime_scan_path.py    2025-01-27 
17:15:25.000000000 +0100
@@ -21,15 +21,14 @@
 @pytest.mark.parametrize(
     ("scan", "raises_not_found"),
     (
-        pytest.param(False, True, id="0"),
-        pytest.param(True, False, id="1"),
+        pytest.param(False, True, id="disabled"),
+        pytest.param(True, False, id="enabled"),
     ),
     ids=str,
 )
 def test_scan_sys_path(
     venv_module: VirtualEnvironment,
     monkeypatch: MonkeyPatch,
-    runtime_tmp: Runtime,
     tmp_path: Path,
     scan: bool,
     raises_not_found: bool,
@@ -39,7 +38,6 @@
     Args:
         venv_module: Fixture for a virtual environment
         monkeypatch: Fixture for monkeypatching
-        runtime_tmp: Fixture for a Runtime object
         tmp_path: Fixture for a temporary directory
         scan: Whether to scan the sys path
         raises_not_found: Whether the collection is expected to be found
@@ -48,6 +46,12 @@
     # that might be installed by other tests.
     monkeypatch.setenv("VIRTUAL_ENV", venv_module.project.as_posix())
     monkeypatch.setenv("ANSIBLE_HOME", tmp_path.as_posix())
+    # Set the sys scan path environment variable
+    monkeypatch.setenv("ANSIBLE_COLLECTIONS_SCAN_SYS_PATH", str(scan))
+    # Set the ansible collections paths to avoid bleed from other tests
+    monkeypatch.setenv("ANSIBLE_COLLECTIONS_PATH", str(tmp_path))
+
+    runtime_tmp = Runtime(project_dir=tmp_path, isolated=True)
     first_site_package_dir = venv_module.site_package_dirs()[0]
 
     installed_to = (
@@ -66,10 +70,6 @@
         )
     # Confirm the collection is installed
     assert installed_to.exists()
-    # Set the sys scan path environment variable
-    monkeypatch.setenv("ANSIBLE_COLLECTIONS_SCAN_SYS_PATH", str(scan))
-    # Set the ansible collections paths to avoid bleed from other tests
-    monkeypatch.setenv("ANSIBLE_COLLECTIONS_PATH", str(tmp_path))
 
     script = textwrap.dedent(
         f"""
@@ -91,3 +91,5 @@
         result = json.loads(proc.stdout)
         assert result["found_version"] == V2_COLLECTION_VERSION
         assert result["collection_path"] == str(installed_to)
+
+    runtime_tmp.clean()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/tools/smoke.py 
new/ansible-compat-25.1.0/tools/smoke.py
--- old/ansible-compat-25.0.0/tools/smoke.py    1970-01-01 01:00:00.000000000 
+0100
+++ new/ansible-compat-25.1.0/tools/smoke.py    2025-01-27 17:15:25.000000000 
+0100
@@ -0,0 +1,55 @@
+#!python3
+"""Runs downstream projects tests with current code from compat injected in 
them."""
+
+import hashlib
+import logging
+import os
+import tempfile
+from pathlib import Path
+from subprocess import run  # noqa: S404
+
+logging.basicConfig(
+    level=logging.DEBUG,
+    format="%(levelname)s: %(message)s",
+)
+logger = logging.getLogger()
+
+
+parent_project_dir = Path(__file__).parent.parent.resolve().as_posix()
+checksum = hashlib.sha256(parent_project_dir.encode("utf-8")).hexdigest()[:4]
+tmp_path = Path(tempfile.gettempdir()) / f"ansible-compat-smoke-{checksum}"
+
+logger.info("Using %s temporary directory...", tmp_path)
+
+for project in ("molecule", "ansible-lint"):
+
+    logger.info("Running tests for %s", project)
+    project_dir = tmp_path / project
+    if (project_dir / ".git").exists():
+        run(["git", "-C", project_dir, "pull"], check=True)
+    else:
+        project_dir.mkdir(parents=True, exist_ok=True)
+        run(
+            [
+                "git",
+                "clone",
+                "--recursive",
+                f"https://github.com/ansible/{project}";,
+                project_dir,
+            ],
+            check=True,
+        )
+
+    os.chdir(project_dir)
+    venv_dir = (project_dir / ".venv").as_posix()
+    os.environ["VIRTUAL_ENV"] = venv_dir
+    run(
+        ["uv", "venv", "--seed", venv_dir],
+        check=True,
+    )  # creates .venv (implicit for next commands)
+    run(
+        ["uv", "pip", "install", "-e", f"{parent_project_dir}[test]", "-e", 
".[test]"],
+        check=True,
+    )
+    run(["uv", "pip", "freeze"], check=True)
+    run(["uv", "run", "pytest", "-v", "-n", "auto"], check=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible-compat-25.0.0/tox.ini 
new/ansible-compat-25.1.0/tox.ini
--- old/ansible-compat-25.0.0/tox.ini   2025-01-12 21:15:20.000000000 +0100
+++ new/ansible-compat-25.1.0/tox.ini   2025-01-27 17:15:25.000000000 +0100
@@ -1,5 +1,4 @@
 [tox]
-minversion = 4.6.3
 envlist =
   lint
   pkg
@@ -18,9 +17,8 @@
 isolated_build = true
 skip_missing_interpreters = True
 requires =
-  tox >= 4.6.3
-  tox-extra >= 2.0.1
-  tox-uv
+  tox >= 4.24.1
+  tox-uv >= 1.20.1
   setuptools >= 65.3.0 # editable installs
 
 [testenv]
@@ -36,7 +34,7 @@
   ansible217: ansible-core>=2.17,<2.18
   ansible218: ansible-core>=2.18,<2.19
 
-  devel: ansible-core @ 
git+https://github.com/ansible/ansible.git@c5d18c39d81e2b3b10856b2fb76747230e4fac4a
  # GPLv3+
+  devel: ansible-core @ git+https://github.com/ansible/ansible.git@devel  # 
GPLv3+
   # avoid installing ansible-core on -devel envs:
   !devel: ansible-core
 extras =
@@ -80,6 +78,7 @@
   COVERAGE_PROCESS_START={toxinidir}/pyproject.toml
   PIP_DISABLE_PIP_VERSION_CHECK = 1
   PIP_CONSTRAINT = {toxinidir}/.config/constraints.txt
+  UV_CONSTRAINT = {toxinidir}/.config/constraints.txt
   PRE_COMMIT_COLOR = always
   FORCE_COLOR = 1
 allowlist_externals =
@@ -88,6 +87,7 @@
   sh
 # https://tox.wiki/en/latest/upgrading.html#editable-mode
 package = editable
+uv_seed = true
 
 [testenv:lint]
 description = Run all linters
@@ -108,6 +108,7 @@
 setenv =
   {[testenv]setenv}
   PIP_CONSTRAINT = /dev/null
+  UV_CONSTRAINT = /dev/null
 
 [testenv:deps]
 description = Bump all test dependencies
@@ -121,6 +122,7 @@
 setenv =
   {[testenv]setenv}
   PIP_CONSTRAINT = /dev/null
+  UV_CONSTRAINT = /dev/null
 
 [testenv:pkg]
 description =
@@ -171,20 +173,11 @@
 passenv = *
 
 [testenv:smoke]
-description = Run ansible-lint own testing with current code from compat 
library
-commands_pre =
-  ansible localhost -m ansible.builtin.git -a 
'repo=https://github.com/ansible/ansible-lint dest={envdir}/tmp/ansible-lint'
-  pip install -e "{envdir}/tmp/ansible-lint[test]"
+description = Run ansible-lint and molecule own testing with current code from 
compat library
 commands =
-  bash -c "pip freeze|grep ansible"
-  pytest -k role
-deps =
-  ansible-core
-setenv =
-  {[testenv]setenv}
-  PIP_CONSTRAINT = /dev/null
-  PYTEST_REQPASS = 0
-changedir = {envdir}/tmp/ansible-lint
-allowlist_externals =
-  pwd
-  bash
+  python3 tools/smoke.py
+del_env =
+  PIP_CONSTRAINT
+  UV_CONSTRAINT
+editable = true
+skip_install = true

Reply via email to