ansible-core 2.16.5__py3-none-any.whl → 2.17.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ansible-core might be problematic. Click here for more details.
- ansible/__init__.py +1 -3
- ansible/__main__.py +1 -0
- ansible/_vendor/__init__.py +1 -2
- ansible/cli/__init__.py +7 -8
- ansible/cli/adhoc.py +1 -2
- ansible/cli/arguments/__init__.py +1 -2
- ansible/cli/arguments/option_helpers.py +1 -2
- ansible/cli/config.py +1 -2
- ansible/cli/console.py +1 -2
- ansible/cli/doc.py +320 -198
- ansible/cli/galaxy.py +9 -3
- ansible/cli/inventory.py +5 -27
- ansible/cli/playbook.py +1 -2
- ansible/cli/pull.py +4 -5
- ansible/cli/scripts/ansible_connection_cli_stub.py +1 -4
- ansible/cli/vault.py +1 -2
- ansible/collections/list.py +1 -0
- ansible/compat/__init__.py +1 -4
- ansible/compat/importlib_resources.py +1 -2
- ansible/compat/{selectors/__init__.py → selectors.py} +12 -12
- ansible/config/ansible_builtin_runtime.yml +2 -0
- ansible/config/base.yml +154 -149
- ansible/config/manager.py +32 -25
- ansible/constants.py +41 -2
- ansible/context.py +1 -4
- ansible/errors/__init__.py +1 -3
- ansible/errors/yaml_strings.py +1 -3
- ansible/executor/__init__.py +1 -3
- ansible/executor/discovery/python_target.py +1 -2
- ansible/executor/interpreter_discovery.py +9 -8
- ansible/executor/module_common.py +1 -3
- ansible/executor/play_iterator.py +1 -3
- ansible/executor/playbook_executor.py +1 -3
- ansible/executor/powershell/module_manifest.py +2 -3
- ansible/executor/process/__init__.py +1 -3
- ansible/executor/process/worker.py +1 -3
- ansible/executor/stats.py +1 -3
- ansible/executor/task_executor.py +10 -5
- ansible/executor/task_queue_manager.py +1 -3
- ansible/executor/task_result.py +2 -3
- ansible/galaxy/__init__.py +1 -2
- ansible/galaxy/api.py +10 -2
- ansible/galaxy/collection/__init__.py +38 -24
- ansible/galaxy/collection/concrete_artifact_manager.py +1 -2
- ansible/galaxy/collection/galaxy_api_proxy.py +1 -2
- ansible/galaxy/collection/gpg.py +4 -2
- ansible/galaxy/data/apb/meta/main.yml.j2 +0 -15
- ansible/galaxy/data/container/meta/main.yml.j2 +0 -18
- ansible/galaxy/data/default/role/meta/main.yml.j2 +0 -18
- ansible/galaxy/data/network/cliconf_plugins/example.py.j2 +1 -2
- ansible/galaxy/data/network/library/example_command.py.j2 +1 -2
- ansible/galaxy/data/network/library/example_config.py.j2 +1 -2
- ansible/galaxy/data/network/library/example_facts.py.j2 +1 -2
- ansible/galaxy/data/network/meta/main.yml.j2 +0 -15
- ansible/galaxy/data/network/module_utils/example.py.j2 +1 -2
- ansible/galaxy/data/network/netconf_plugins/example.py.j2 +1 -2
- ansible/galaxy/data/network/terminal_plugins/example.py.j2 +1 -2
- ansible/galaxy/dependency_resolution/__init__.py +1 -2
- ansible/galaxy/dependency_resolution/dataclasses.py +5 -6
- ansible/galaxy/dependency_resolution/errors.py +1 -2
- ansible/galaxy/dependency_resolution/providers.py +3 -4
- ansible/galaxy/dependency_resolution/reporters.py +2 -3
- ansible/galaxy/dependency_resolution/resolvers.py +1 -2
- ansible/galaxy/dependency_resolution/versioning.py +1 -2
- ansible/galaxy/role.py +2 -3
- ansible/galaxy/token.py +1 -2
- ansible/galaxy/user_agent.py +1 -2
- ansible/inventory/data.py +1 -2
- ansible/inventory/group.py +1 -2
- ansible/inventory/helpers.py +1 -2
- ansible/inventory/host.py +1 -3
- ansible/inventory/manager.py +1 -2
- ansible/module_utils/_text.py +1 -2
- ansible/module_utils/ansible_release.py +3 -5
- ansible/module_utils/api.py +1 -2
- ansible/module_utils/basic.py +113 -158
- ansible/module_utils/common/_collections_compat.py +1 -2
- ansible/module_utils/common/_utils.py +1 -3
- ansible/module_utils/common/arg_spec.py +1 -2
- ansible/module_utils/common/collections.py +1 -2
- ansible/module_utils/common/dict_transformations.py +1 -2
- ansible/module_utils/common/file.py +10 -5
- ansible/module_utils/common/json.py +1 -3
- ansible/module_utils/common/locale.py +1 -2
- ansible/module_utils/common/network.py +2 -3
- ansible/module_utils/common/parameters.py +9 -9
- ansible/module_utils/common/process.py +12 -5
- ansible/module_utils/common/respawn.py +2 -3
- ansible/module_utils/common/sys_info.py +1 -2
- ansible/module_utils/common/text/converters.py +1 -2
- ansible/module_utils/common/text/formatters.py +1 -2
- ansible/module_utils/common/validation.py +5 -6
- ansible/module_utils/common/warnings.py +1 -2
- ansible/module_utils/common/yaml.py +1 -2
- ansible/module_utils/compat/datetime.py +1 -3
- ansible/module_utils/compat/importlib.py +21 -13
- ansible/module_utils/compat/paramiko.py +1 -2
- ansible/module_utils/compat/selectors.py +10 -34
- ansible/module_utils/compat/selinux.py +1 -2
- ansible/module_utils/compat/typing.py +1 -2
- ansible/module_utils/compat/version.py +1 -2
- ansible/module_utils/connection.py +1 -2
- ansible/module_utils/csharp/Ansible.Basic.cs +20 -3
- ansible/module_utils/distro/__init__.py +2 -3
- ansible/module_utils/distro/_distro.py +230 -234
- ansible/module_utils/errors.py +1 -2
- ansible/module_utils/facts/__init__.py +1 -2
- ansible/module_utils/facts/ansible_collector.py +1 -2
- ansible/module_utils/facts/collector.py +1 -2
- ansible/module_utils/facts/compat.py +1 -2
- ansible/module_utils/facts/default_collectors.py +1 -2
- ansible/module_utils/facts/hardware/aix.py +1 -2
- ansible/module_utils/facts/hardware/base.py +1 -2
- ansible/module_utils/facts/hardware/darwin.py +1 -2
- ansible/module_utils/facts/hardware/dragonfly.py +1 -2
- ansible/module_utils/facts/hardware/freebsd.py +1 -2
- ansible/module_utils/facts/hardware/hpux.py +1 -2
- ansible/module_utils/facts/hardware/hurd.py +1 -2
- ansible/module_utils/facts/hardware/linux.py +8 -6
- ansible/module_utils/facts/hardware/netbsd.py +1 -2
- ansible/module_utils/facts/hardware/openbsd.py +1 -2
- ansible/module_utils/facts/hardware/sunos.py +2 -3
- ansible/module_utils/facts/namespace.py +1 -2
- ansible/module_utils/facts/network/aix.py +1 -2
- ansible/module_utils/facts/network/base.py +1 -2
- ansible/module_utils/facts/network/darwin.py +1 -2
- ansible/module_utils/facts/network/dragonfly.py +1 -2
- ansible/module_utils/facts/network/fc_wwn.py +1 -2
- ansible/module_utils/facts/network/freebsd.py +1 -2
- ansible/module_utils/facts/network/generic_bsd.py +1 -2
- ansible/module_utils/facts/network/hpux.py +1 -2
- ansible/module_utils/facts/network/hurd.py +1 -2
- ansible/module_utils/facts/network/iscsi.py +1 -2
- ansible/module_utils/facts/network/linux.py +1 -2
- ansible/module_utils/facts/network/netbsd.py +1 -2
- ansible/module_utils/facts/network/nvme.py +1 -2
- ansible/module_utils/facts/network/openbsd.py +1 -2
- ansible/module_utils/facts/network/sunos.py +1 -2
- ansible/module_utils/facts/other/facter.py +1 -2
- ansible/module_utils/facts/other/ohai.py +1 -2
- ansible/module_utils/facts/packages.py +1 -2
- ansible/module_utils/facts/sysctl.py +1 -2
- ansible/module_utils/facts/system/apparmor.py +1 -2
- ansible/module_utils/facts/system/caps.py +1 -2
- ansible/module_utils/facts/system/chroot.py +1 -2
- ansible/module_utils/facts/system/cmdline.py +1 -2
- ansible/module_utils/facts/system/date_time.py +1 -2
- ansible/module_utils/facts/system/distribution.py +4 -5
- ansible/module_utils/facts/system/dns.py +1 -2
- ansible/module_utils/facts/system/env.py +1 -2
- ansible/module_utils/facts/system/fips.py +1 -2
- ansible/module_utils/facts/system/loadavg.py +1 -2
- ansible/module_utils/facts/system/local.py +1 -2
- ansible/module_utils/facts/system/lsb.py +1 -2
- ansible/module_utils/facts/system/pkg_mgr.py +7 -30
- ansible/module_utils/facts/system/platform.py +1 -2
- ansible/module_utils/facts/system/python.py +1 -2
- ansible/module_utils/facts/system/selinux.py +1 -2
- ansible/module_utils/facts/system/service_mgr.py +1 -2
- ansible/module_utils/facts/system/ssh_pub_keys.py +1 -2
- ansible/module_utils/facts/system/user.py +1 -2
- ansible/module_utils/facts/timeout.py +1 -2
- ansible/module_utils/facts/utils.py +1 -2
- ansible/module_utils/facts/virtual/base.py +1 -2
- ansible/module_utils/facts/virtual/dragonfly.py +1 -2
- ansible/module_utils/facts/virtual/freebsd.py +1 -2
- ansible/module_utils/facts/virtual/hpux.py +1 -2
- ansible/module_utils/facts/virtual/linux.py +2 -3
- ansible/module_utils/facts/virtual/netbsd.py +1 -2
- ansible/module_utils/facts/virtual/openbsd.py +1 -2
- ansible/module_utils/facts/virtual/sunos.py +1 -2
- ansible/module_utils/facts/virtual/sysctl.py +1 -2
- ansible/module_utils/json_utils.py +1 -2
- ansible/module_utils/parsing/convert_bool.py +1 -2
- ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 +5 -2
- ansible/module_utils/powershell/Ansible.ModuleUtils.WebRequest.psm1 +1 -1
- ansible/module_utils/pycompat24.py +24 -4
- ansible/module_utils/service.py +31 -5
- ansible/module_utils/six/__init__.py +1 -1
- ansible/module_utils/splitter.py +1 -2
- ansible/module_utils/urls.py +335 -1052
- ansible/module_utils/yumdnf.py +13 -35
- ansible/modules/add_host.py +1 -2
- ansible/modules/apt.py +38 -22
- ansible/modules/apt_key.py +1 -2
- ansible/modules/apt_repository.py +18 -10
- ansible/modules/assemble.py +1 -2
- ansible/modules/assert.py +8 -4
- ansible/modules/async_status.py +17 -14
- ansible/modules/async_wrapper.py +11 -9
- ansible/modules/blockinfile.py +3 -4
- ansible/modules/command.py +1 -2
- ansible/modules/copy.py +4 -76
- ansible/modules/cron.py +3 -3
- ansible/modules/deb822_repository.py +5 -5
- ansible/modules/debconf.py +19 -8
- ansible/modules/debug.py +1 -2
- ansible/modules/dnf.py +63 -188
- ansible/modules/dnf5.py +57 -43
- ansible/modules/dpkg_selections.py +1 -2
- ansible/modules/expect.py +23 -15
- ansible/modules/fail.py +1 -2
- ansible/modules/fetch.py +1 -2
- ansible/modules/file.py +4 -3
- ansible/modules/find.py +25 -9
- ansible/modules/gather_facts.py +1 -2
- ansible/modules/get_url.py +2 -3
- ansible/modules/getent.py +2 -3
- ansible/modules/git.py +28 -17
- ansible/modules/group.py +1 -2
- ansible/modules/group_by.py +1 -2
- ansible/modules/hostname.py +2 -19
- ansible/modules/import_playbook.py +1 -2
- ansible/modules/import_role.py +9 -2
- ansible/modules/import_tasks.py +1 -2
- ansible/modules/include_role.py +1 -2
- ansible/modules/include_tasks.py +1 -2
- ansible/modules/include_vars.py +1 -2
- ansible/modules/iptables.py +38 -21
- ansible/modules/known_hosts.py +15 -8
- ansible/modules/lineinfile.py +1 -6
- ansible/modules/meta.py +3 -2
- ansible/modules/package.py +6 -5
- ansible/modules/package_facts.py +1 -2
- ansible/modules/pause.py +2 -3
- ansible/modules/ping.py +1 -2
- ansible/modules/pip.py +40 -20
- ansible/modules/raw.py +1 -2
- ansible/modules/reboot.py +1 -2
- ansible/modules/replace.py +7 -5
- ansible/modules/rpm_key.py +1 -2
- ansible/modules/script.py +1 -2
- ansible/modules/service.py +3 -21
- ansible/modules/service_facts.py +3 -12
- ansible/modules/set_fact.py +1 -2
- ansible/modules/set_stats.py +1 -2
- ansible/modules/setup.py +1 -2
- ansible/modules/shell.py +1 -2
- ansible/modules/slurp.py +1 -2
- ansible/modules/stat.py +1 -2
- ansible/modules/subversion.py +2 -3
- ansible/modules/systemd.py +12 -9
- ansible/modules/systemd_service.py +12 -9
- ansible/modules/sysvinit.py +7 -2
- ansible/modules/tempfile.py +7 -2
- ansible/modules/template.py +2 -3
- ansible/modules/unarchive.py +14 -4
- ansible/modules/uri.py +5 -8
- ansible/modules/user.py +11 -10
- ansible/modules/validate_argument_spec.py +15 -16
- ansible/modules/wait_for.py +1 -2
- ansible/modules/wait_for_connection.py +1 -2
- ansible/modules/yum_repository.py +2 -3
- ansible/parsing/__init__.py +1 -3
- ansible/parsing/ajson.py +1 -3
- ansible/parsing/dataloader.py +23 -12
- ansible/parsing/mod_args.py +14 -8
- ansible/parsing/plugin_docs.py +1 -2
- ansible/parsing/quoting.py +1 -3
- ansible/parsing/splitter.py +1 -3
- ansible/parsing/utils/__init__.py +1 -3
- ansible/parsing/utils/addresses.py +1 -3
- ansible/parsing/utils/jsonify.py +1 -3
- ansible/parsing/utils/yaml.py +1 -3
- ansible/parsing/vault/__init__.py +6 -8
- ansible/parsing/yaml/__init__.py +1 -3
- ansible/parsing/yaml/constructor.py +1 -3
- ansible/parsing/yaml/dumper.py +1 -3
- ansible/parsing/yaml/loader.py +1 -3
- ansible/parsing/yaml/objects.py +1 -3
- ansible/playbook/__init__.py +1 -3
- ansible/playbook/attribute.py +1 -3
- ansible/playbook/base.py +2 -3
- ansible/playbook/block.py +1 -3
- ansible/playbook/collectionsearch.py +1 -2
- ansible/playbook/conditional.py +1 -3
- ansible/playbook/delegatable.py +1 -0
- ansible/playbook/handler.py +2 -4
- ansible/playbook/handler_task_include.py +1 -3
- ansible/playbook/helpers.py +1 -4
- ansible/playbook/included_file.py +4 -4
- ansible/playbook/loop_control.py +1 -3
- ansible/playbook/notifiable.py +1 -0
- ansible/playbook/play.py +1 -3
- ansible/playbook/play_context.py +1 -3
- ansible/playbook/playbook_include.py +1 -3
- ansible/playbook/role/__init__.py +2 -4
- ansible/playbook/role/definition.py +1 -3
- ansible/playbook/role/include.py +1 -3
- ansible/playbook/role/metadata.py +1 -3
- ansible/playbook/role/requirement.py +1 -3
- ansible/playbook/role_include.py +2 -10
- ansible/playbook/taggable.py +1 -3
- ansible/playbook/task.py +2 -4
- ansible/playbook/task_include.py +1 -3
- ansible/plugins/__init__.py +4 -5
- ansible/plugins/action/__init__.py +20 -14
- ansible/plugins/action/add_host.py +2 -4
- ansible/plugins/action/assemble.py +2 -3
- ansible/plugins/action/assert.py +1 -2
- ansible/plugins/action/async_status.py +1 -2
- ansible/plugins/action/command.py +1 -2
- ansible/plugins/action/copy.py +12 -9
- ansible/plugins/action/debug.py +1 -2
- ansible/plugins/action/dnf.py +4 -4
- ansible/plugins/action/fail.py +1 -2
- ansible/plugins/action/fetch.py +6 -3
- ansible/plugins/action/gather_facts.py +3 -4
- ansible/plugins/action/group_by.py +1 -2
- ansible/plugins/action/include_vars.py +1 -2
- ansible/plugins/action/normal.py +1 -2
- ansible/plugins/action/package.py +36 -21
- ansible/plugins/action/pause.py +1 -2
- ansible/plugins/action/raw.py +2 -3
- ansible/plugins/action/reboot.py +30 -15
- ansible/plugins/action/script.py +3 -4
- ansible/plugins/action/service.py +1 -2
- ansible/plugins/action/set_fact.py +1 -2
- ansible/plugins/action/set_stats.py +1 -2
- ansible/plugins/action/shell.py +1 -2
- ansible/plugins/action/template.py +1 -2
- ansible/plugins/action/unarchive.py +1 -2
- ansible/plugins/action/uri.py +2 -3
- ansible/plugins/action/validate_argument_spec.py +1 -2
- ansible/plugins/action/wait_for_connection.py +2 -3
- ansible/plugins/become/__init__.py +1 -2
- ansible/plugins/become/runas.py +1 -2
- ansible/plugins/become/su.py +1 -2
- ansible/plugins/become/sudo.py +1 -2
- ansible/plugins/cache/__init__.py +3 -2
- ansible/plugins/cache/base.py +1 -2
- ansible/plugins/cache/jsonfile.py +1 -3
- ansible/plugins/cache/memory.py +1 -2
- ansible/plugins/callback/__init__.py +2 -4
- ansible/plugins/callback/default.py +2 -3
- ansible/plugins/callback/junit.py +1 -2
- ansible/plugins/callback/minimal.py +1 -3
- ansible/plugins/callback/oneline.py +1 -3
- ansible/plugins/callback/tree.py +1 -2
- ansible/plugins/cliconf/__init__.py +1 -2
- ansible/plugins/connection/__init__.py +4 -5
- ansible/plugins/connection/local.py +3 -4
- ansible/plugins/connection/paramiko_ssh.py +1 -2
- ansible/plugins/connection/psrp.py +1 -2
- ansible/plugins/connection/ssh.py +18 -54
- ansible/plugins/connection/winrm.py +17 -6
- ansible/plugins/doc_fragments/action_common_attributes.py +2 -3
- ansible/plugins/doc_fragments/action_core.py +3 -4
- ansible/plugins/doc_fragments/backup.py +1 -2
- ansible/plugins/doc_fragments/connection_pipelining.py +1 -2
- ansible/plugins/doc_fragments/constructed.py +1 -2
- ansible/plugins/doc_fragments/decrypt.py +2 -3
- ansible/plugins/doc_fragments/default_callback.py +1 -2
- ansible/plugins/doc_fragments/files.py +1 -2
- ansible/plugins/doc_fragments/inventory_cache.py +1 -2
- ansible/plugins/doc_fragments/result_format_callback.py +1 -2
- ansible/plugins/doc_fragments/return_common.py +1 -2
- ansible/plugins/doc_fragments/shell_common.py +1 -2
- ansible/plugins/doc_fragments/shell_windows.py +1 -2
- ansible/plugins/doc_fragments/template_common.py +1 -2
- ansible/plugins/doc_fragments/url.py +1 -2
- ansible/plugins/doc_fragments/url_windows.py +1 -2
- ansible/plugins/doc_fragments/validate.py +1 -2
- ansible/plugins/doc_fragments/vars_plugin_staging.py +1 -2
- ansible/plugins/filter/__init__.py +1 -2
- ansible/plugins/filter/b64decode.yml +8 -8
- ansible/plugins/filter/b64encode.yml +4 -4
- ansible/plugins/filter/comment.yml +1 -1
- ansible/plugins/filter/core.py +11 -9
- ansible/plugins/filter/encryption.py +1 -3
- ansible/plugins/filter/extract.yml +1 -1
- ansible/plugins/filter/from_yaml_all.yml +1 -1
- ansible/plugins/filter/human_readable.yml +3 -3
- ansible/plugins/filter/human_to_bytes.yml +2 -2
- ansible/plugins/filter/mandatory.yml +1 -1
- ansible/plugins/filter/mathstuff.py +2 -2
- ansible/plugins/filter/password_hash.yml +3 -2
- ansible/plugins/filter/regex_replace.yml +15 -0
- ansible/plugins/filter/regex_search.yml +12 -0
- ansible/plugins/filter/strftime.yml +2 -9
- ansible/plugins/filter/to_datetime.yml +17 -2
- ansible/plugins/filter/to_nice_json.yml +4 -0
- ansible/plugins/filter/union.yml +1 -1
- ansible/plugins/filter/urls.py +1 -2
- ansible/plugins/filter/urlsplit.py +1 -2
- ansible/plugins/filter/zip.yml +2 -2
- ansible/plugins/filter/zip_longest.yml +1 -1
- ansible/plugins/httpapi/__init__.py +1 -2
- ansible/plugins/inventory/__init__.py +2 -4
- ansible/plugins/inventory/advanced_host_list.py +1 -2
- ansible/plugins/inventory/auto.py +2 -3
- ansible/plugins/inventory/constructed.py +3 -2
- ansible/plugins/inventory/generator.py +1 -2
- ansible/plugins/inventory/host_list.py +1 -2
- ansible/plugins/inventory/ini.py +1 -2
- ansible/plugins/inventory/script.py +122 -3
- ansible/plugins/inventory/toml.py +1 -2
- ansible/plugins/inventory/yaml.py +3 -4
- ansible/plugins/list.py +2 -3
- ansible/plugins/loader.py +10 -11
- ansible/plugins/lookup/__init__.py +1 -3
- ansible/plugins/lookup/config.py +19 -15
- ansible/plugins/lookup/csvfile.py +16 -7
- ansible/plugins/lookup/dict.py +2 -3
- ansible/plugins/lookup/env.py +4 -4
- ansible/plugins/lookup/file.py +1 -2
- ansible/plugins/lookup/fileglob.py +1 -2
- ansible/plugins/lookup/first_found.py +8 -7
- ansible/plugins/lookup/indexed_items.py +1 -2
- ansible/plugins/lookup/ini.py +6 -3
- ansible/plugins/lookup/inventory_hostnames.py +1 -2
- ansible/plugins/lookup/items.py +1 -2
- ansible/plugins/lookup/lines.py +1 -2
- ansible/plugins/lookup/list.py +1 -3
- ansible/plugins/lookup/nested.py +1 -2
- ansible/plugins/lookup/password.py +16 -14
- ansible/plugins/lookup/pipe.py +1 -2
- ansible/plugins/lookup/random_choice.py +1 -2
- ansible/plugins/lookup/sequence.py +21 -52
- ansible/plugins/lookup/subelements.py +1 -2
- ansible/plugins/lookup/template.py +1 -2
- ansible/plugins/lookup/together.py +1 -2
- ansible/plugins/lookup/unvault.py +1 -2
- ansible/plugins/lookup/url.py +9 -3
- ansible/plugins/lookup/varnames.py +1 -2
- ansible/plugins/lookup/vars.py +1 -2
- ansible/plugins/netconf/__init__.py +1 -2
- ansible/plugins/shell/__init__.py +3 -4
- ansible/plugins/shell/cmd.py +1 -2
- ansible/plugins/shell/powershell.py +1 -2
- ansible/plugins/shell/sh.py +1 -2
- ansible/plugins/strategy/__init__.py +33 -21
- ansible/plugins/strategy/debug.py +1 -2
- ansible/plugins/strategy/free.py +18 -8
- ansible/plugins/strategy/host_pinned.py +1 -3
- ansible/plugins/strategy/linear.py +23 -23
- ansible/plugins/terminal/__init__.py +2 -3
- ansible/plugins/test/__init__.py +1 -2
- ansible/plugins/test/change.yml +1 -1
- ansible/plugins/test/changed.yml +1 -1
- ansible/plugins/test/contains.yml +1 -1
- ansible/plugins/test/core.py +2 -4
- ansible/plugins/test/exists.yml +1 -1
- ansible/plugins/test/failed.yml +1 -1
- ansible/plugins/test/failure.yml +1 -1
- ansible/plugins/test/files.py +1 -3
- ansible/plugins/test/finished.yml +3 -3
- ansible/plugins/test/issuperset.yml +1 -1
- ansible/plugins/test/match.yml +1 -1
- ansible/plugins/test/mathstuff.py +1 -2
- ansible/plugins/test/reachable.yml +1 -1
- ansible/plugins/test/regex.yml +1 -1
- ansible/plugins/test/search.yml +1 -1
- ansible/plugins/test/skip.yml +1 -1
- ansible/plugins/test/skipped.yml +1 -1
- ansible/plugins/test/started.yml +1 -1
- ansible/plugins/test/succeeded.yml +1 -1
- ansible/plugins/test/success.yml +1 -1
- ansible/plugins/test/successful.yml +1 -1
- ansible/plugins/test/superset.yml +1 -1
- ansible/plugins/test/unreachable.yml +1 -1
- ansible/plugins/test/uri.py +1 -3
- ansible/plugins/vars/__init__.py +1 -2
- ansible/plugins/vars/host_group_vars.py +2 -3
- ansible/release.py +3 -5
- ansible/template/__init__.py +14 -27
- ansible/template/native_helpers.py +1 -3
- ansible/template/template.py +1 -3
- ansible/template/vars.py +1 -0
- ansible/utils/__init__.py +1 -3
- ansible/utils/cmd_functions.py +1 -2
- ansible/utils/collection_loader/__init__.py +1 -2
- ansible/utils/collection_loader/_collection_config.py +1 -2
- ansible/utils/collection_loader/_collection_finder.py +1 -2
- ansible/utils/collection_loader/_collection_meta.py +1 -2
- ansible/utils/color.py +1 -2
- ansible/utils/context_objects.py +1 -4
- ansible/utils/display.py +88 -30
- ansible/utils/encrypt.py +4 -105
- ansible/utils/fqcn.py +1 -2
- ansible/utils/galaxy.py +1 -3
- ansible/utils/hashing.py +1 -3
- ansible/utils/helpers.py +1 -3
- ansible/utils/jsonrpc.py +1 -2
- ansible/utils/listify.py +1 -3
- ansible/utils/lock.py +1 -3
- ansible/utils/multiprocessing.py +1 -3
- ansible/utils/native_jinja.py +1 -3
- ansible/utils/path.py +1 -2
- ansible/utils/plugin_docs.py +7 -6
- ansible/utils/py3compat.py +17 -55
- ansible/utils/sentinel.py +1 -3
- ansible/utils/shlex.py +1 -3
- ansible/utils/singleton.py +1 -3
- ansible/utils/ssh_functions.py +1 -3
- ansible/utils/unicode.py +1 -3
- ansible/utils/unsafe_proxy.py +1 -2
- ansible/utils/vars.py +6 -8
- ansible/utils/version.py +1 -3
- ansible/vars/clean.py +1 -3
- ansible/vars/fact_cache.py +1 -2
- ansible/vars/hostvars.py +9 -29
- ansible/vars/manager.py +24 -6
- ansible/vars/reserved.py +1 -3
- {ansible_core-2.16.5.data → ansible_core-2.17.0b1.data}/scripts/ansible-test +1 -2
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/METADATA +3 -3
- ansible_core-2.17.0b1.dist-info/RECORD +987 -0
- ansible_test/__init__.py +1 -2
- ansible_test/_data/completion/docker.txt +7 -9
- ansible_test/_data/completion/remote.txt +6 -7
- ansible_test/_data/requirements/ansible-test.txt +0 -2
- ansible_test/_data/requirements/constraints.txt +1 -6
- ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -3
- ansible_test/_data/requirements/sanity.changelog.txt +3 -3
- ansible_test/_data/requirements/sanity.import.plugin.txt +2 -2
- ansible_test/_data/requirements/sanity.mypy.txt +12 -12
- ansible_test/_data/requirements/sanity.pep8.txt +1 -1
- ansible_test/_data/requirements/sanity.pylint.txt +7 -7
- ansible_test/_data/requirements/sanity.runtime-metadata.txt +1 -1
- ansible_test/_data/requirements/sanity.validate-modules.txt +3 -3
- ansible_test/_data/requirements/sanity.yamllint.txt +2 -2
- ansible_test/_internal/bootstrap.py +2 -2
- ansible_test/_internal/classification/__init__.py +0 -5
- ansible_test/_internal/commands/integration/cloud/cs.py +1 -1
- ansible_test/_internal/commands/integration/cloud/nios.py +1 -1
- ansible_test/_internal/commands/sanity/__init__.py +1 -27
- ansible_test/_internal/commands/sanity/ansible_doc.py +1 -1
- ansible_test/_internal/commands/sanity/import.py +0 -18
- ansible_test/_internal/commands/sanity/mypy.py +7 -10
- ansible_test/_internal/commands/units/__init__.py +1 -1
- ansible_test/_internal/config.py +0 -1
- ansible_test/_internal/content_config.py +0 -5
- ansible_test/_internal/coverage_util.py +0 -1
- ansible_test/_internal/docker_util.py +1 -1
- ansible_test/_internal/host_profiles.py +5 -4
- ansible_test/_internal/python_requirements.py +1 -119
- ansible_test/_internal/ssh.py +1 -0
- ansible_test/_internal/util.py +1 -1
- ansible_test/_internal/util_common.py +1 -1
- ansible_test/_internal/venv.py +10 -108
- ansible_test/_util/__init__.py +1 -2
- ansible_test/_util/controller/sanity/mypy/ansible-core.ini +0 -6
- ansible_test/_util/controller/sanity/mypy/modules.ini +0 -6
- ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/collection.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/config/default.cfg +0 -1
- ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +1 -2
- ansible_test/_util/controller/sanity/shellcheck/exclude.txt +0 -1
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +31 -59
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +0 -7
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py +10 -2
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -1
- ansible_test/_util/controller/sanity/yamllint/yamllinter.py +16 -4
- ansible_test/_util/target/__init__.py +1 -2
- ansible_test/_util/target/cli/ansible_test_cli_stub.py +1 -2
- ansible_test/_util/target/common/constants.py +1 -4
- ansible_test/_util/target/injector/python.py +4 -19
- ansible_test/_util/target/pytest/plugins/ansible_forked.py +2 -9
- ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py +1 -5
- ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py +1 -2
- ansible_test/_util/target/sanity/compile/compile.py +3 -12
- ansible_test/_util/target/sanity/import/importer.py +1 -12
- ansible_test/_util/target/setup/bootstrap.sh +49 -105
- ansible_test/_util/target/setup/probe_cgroups.py +1 -2
- ansible_test/_util/target/setup/quiet_pip.py +1 -16
- ansible_test/_util/target/setup/requirements.py +9 -2
- ansible_test/_util/target/tools/virtualenvcheck.py +1 -2
- ansible_test/_util/target/tools/yamlcheck.py +1 -2
- ansible/module_utils/common/_json_compat.py +0 -16
- ansible/module_utils/compat/_selectors2.py +0 -655
- ansible/modules/yum.py +0 -1821
- ansible/plugins/action/yum.py +0 -111
- ansible_core-2.16.5.dist-info/RECORD +0 -1009
- ansible_test/_util/controller/sanity/code-smell/future-import-boilerplate.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/future-import-boilerplate.py +0 -46
- ansible_test/_util/controller/sanity/code-smell/metaclass-boilerplate.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/metaclass-boilerplate.py +0 -44
- ansible_test/_util/controller/sanity/code-smell/no-basestring.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-basestring.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-dict-iteritems.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-dict-iteritems.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-dict-iterkeys.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-dict-iterkeys.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-dict-itervalues.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-dict-itervalues.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-main-display.json +0 -10
- ansible_test/_util/controller/sanity/code-smell/no-main-display.py +0 -21
- ansible_test/_util/controller/sanity/code-smell/no-unicode-literals.json +0 -7
- ansible_test/_util/controller/sanity/code-smell/no-unicode-literals.py +0 -21
- ansible_test/_util/controller/tools/sslcheck.py +0 -22
- ansible_test/_util/target/common/__init__.py +0 -2
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/COPYING +0 -0
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/WHEEL +0 -0
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.16.5.dist-info → ansible_core-2.17.0b1.dist-info}/top_level.txt +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
set -eu
|
|
4
4
|
|
|
5
|
+
remove_externally_managed_marker()
|
|
6
|
+
{
|
|
7
|
+
"${python_interpreter}" -c '
|
|
8
|
+
import pathlib
|
|
9
|
+
import sysconfig
|
|
10
|
+
path = pathlib.Path(sysconfig.get_path("stdlib")) / "EXTERNALLY-MANAGED"
|
|
11
|
+
path.unlink(missing_ok=True)
|
|
12
|
+
'
|
|
13
|
+
}
|
|
14
|
+
|
|
5
15
|
install_ssh_keys()
|
|
6
16
|
{
|
|
7
17
|
if [ ! -f "${ssh_private_key_path}" ]; then
|
|
@@ -49,9 +59,6 @@ customize_bashrc()
|
|
|
49
59
|
install_pip() {
|
|
50
60
|
if ! "${python_interpreter}" -m pip.__main__ --version --disable-pip-version-check 2>/dev/null; then
|
|
51
61
|
case "${python_version}" in
|
|
52
|
-
"2.7")
|
|
53
|
-
pip_bootstrap_url="https://ci-files.testing.ansible.com/ansible-test/get-pip-20.3.4.py"
|
|
54
|
-
;;
|
|
55
62
|
*)
|
|
56
63
|
pip_bootstrap_url="https://ci-files.testing.ansible.com/ansible-test/get-pip-23.1.2.py"
|
|
57
64
|
;;
|
|
@@ -68,18 +75,6 @@ install_pip() {
|
|
|
68
75
|
fi
|
|
69
76
|
}
|
|
70
77
|
|
|
71
|
-
pip_install() {
|
|
72
|
-
pip_packages="$1"
|
|
73
|
-
|
|
74
|
-
while true; do
|
|
75
|
-
# shellcheck disable=SC2086
|
|
76
|
-
"${python_interpreter}" -m pip install --disable-pip-version-check ${pip_packages} \
|
|
77
|
-
&& break
|
|
78
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
79
|
-
sleep 10
|
|
80
|
-
done
|
|
81
|
-
}
|
|
82
|
-
|
|
83
78
|
bootstrap_remote_alpine()
|
|
84
79
|
{
|
|
85
80
|
py_pkg_prefix="py3"
|
|
@@ -168,19 +163,39 @@ bootstrap_remote_freebsd()
|
|
|
168
163
|
jinja2_pkg="py${python_package_version}-jinja2"
|
|
169
164
|
cryptography_pkg="py${python_package_version}-cryptography"
|
|
170
165
|
pyyaml_pkg="py${python_package_version}-yaml"
|
|
166
|
+
packaging_pkg="py${python_package_version}-packaging"
|
|
171
167
|
|
|
172
168
|
# Declare platform/python version combinations which do not have supporting OS packages available.
|
|
173
169
|
# For these combinations ansible-test will use pip to install the requirements instead.
|
|
174
170
|
case "${platform_version}/${python_version}" in
|
|
171
|
+
13.3/3.9)
|
|
172
|
+
# defaults above 'just work'TM
|
|
173
|
+
;;
|
|
174
|
+
13.3/3.11)
|
|
175
|
+
jinja2_pkg="" # not available
|
|
176
|
+
cryptography_pkg="" # not available
|
|
177
|
+
pyyaml_pkg="" # not available
|
|
178
|
+
;;
|
|
179
|
+
14.0/3.9)
|
|
180
|
+
# defaults above 'just work'TM
|
|
181
|
+
;;
|
|
182
|
+
14.0/3.11)
|
|
183
|
+
cryptography_pkg="" # not available
|
|
184
|
+
jinja2_pkg="" # not available
|
|
185
|
+
pyyaml_pkg="" # not available
|
|
186
|
+
;;
|
|
175
187
|
*)
|
|
188
|
+
# just assume nothing is available
|
|
176
189
|
jinja2_pkg="" # not available
|
|
177
190
|
cryptography_pkg="" # not available
|
|
178
191
|
pyyaml_pkg="" # not available
|
|
192
|
+
packaging_pkg="" # not available
|
|
179
193
|
;;
|
|
180
194
|
esac
|
|
181
195
|
|
|
182
196
|
packages="
|
|
183
197
|
${packages}
|
|
198
|
+
${packaging_pkg}
|
|
184
199
|
libyaml
|
|
185
200
|
${pyyaml_pkg}
|
|
186
201
|
${jinja2_pkg}
|
|
@@ -242,79 +257,6 @@ bootstrap_remote_macos()
|
|
|
242
257
|
echo 'PATH="/usr/local/bin:$PATH"' > /etc/zshenv
|
|
243
258
|
}
|
|
244
259
|
|
|
245
|
-
bootstrap_remote_rhel_7()
|
|
246
|
-
{
|
|
247
|
-
packages="
|
|
248
|
-
gcc
|
|
249
|
-
python-devel
|
|
250
|
-
python-virtualenv
|
|
251
|
-
"
|
|
252
|
-
|
|
253
|
-
while true; do
|
|
254
|
-
# shellcheck disable=SC2086
|
|
255
|
-
yum install -q -y ${packages} \
|
|
256
|
-
&& break
|
|
257
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
258
|
-
sleep 10
|
|
259
|
-
done
|
|
260
|
-
|
|
261
|
-
install_pip
|
|
262
|
-
|
|
263
|
-
bootstrap_remote_rhel_pinned_pip_packages
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
bootstrap_remote_rhel_8()
|
|
267
|
-
{
|
|
268
|
-
if [ "${python_version}" = "3.6" ]; then
|
|
269
|
-
py_pkg_prefix="python3"
|
|
270
|
-
else
|
|
271
|
-
py_pkg_prefix="python${python_version}"
|
|
272
|
-
fi
|
|
273
|
-
|
|
274
|
-
packages="
|
|
275
|
-
gcc
|
|
276
|
-
${py_pkg_prefix}-devel
|
|
277
|
-
"
|
|
278
|
-
|
|
279
|
-
# pip isn't included in the Python devel package under Python 3.11
|
|
280
|
-
if [ "${python_version}" != "3.6" ]; then
|
|
281
|
-
packages="
|
|
282
|
-
${packages}
|
|
283
|
-
${py_pkg_prefix}-pip
|
|
284
|
-
"
|
|
285
|
-
fi
|
|
286
|
-
|
|
287
|
-
# Jinja2 is not installed with an OS package since the provided version is too old.
|
|
288
|
-
# Instead, ansible-test will install it using pip.
|
|
289
|
-
if [ "${controller}" ]; then
|
|
290
|
-
packages="
|
|
291
|
-
${packages}
|
|
292
|
-
${py_pkg_prefix}-cryptography
|
|
293
|
-
"
|
|
294
|
-
fi
|
|
295
|
-
|
|
296
|
-
# Python 3.11 isn't a module like the earlier versions
|
|
297
|
-
if [ "${python_version}" = "3.6" ]; then
|
|
298
|
-
while true; do
|
|
299
|
-
# shellcheck disable=SC2086
|
|
300
|
-
yum module install -q -y "python${python_package_version}" \
|
|
301
|
-
&& break
|
|
302
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
303
|
-
sleep 10
|
|
304
|
-
done
|
|
305
|
-
fi
|
|
306
|
-
|
|
307
|
-
while true; do
|
|
308
|
-
# shellcheck disable=SC2086
|
|
309
|
-
yum install -q -y ${packages} \
|
|
310
|
-
&& break
|
|
311
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
312
|
-
sleep 10
|
|
313
|
-
done
|
|
314
|
-
|
|
315
|
-
bootstrap_remote_rhel_pinned_pip_packages
|
|
316
|
-
}
|
|
317
|
-
|
|
318
260
|
bootstrap_remote_rhel_9()
|
|
319
261
|
{
|
|
320
262
|
if [ "${python_version}" = "3.9" ]; then
|
|
@@ -360,23 +302,10 @@ bootstrap_remote_rhel_9()
|
|
|
360
302
|
bootstrap_remote_rhel()
|
|
361
303
|
{
|
|
362
304
|
case "${platform_version}" in
|
|
363
|
-
7.*) bootstrap_remote_rhel_7 ;;
|
|
364
|
-
8.*) bootstrap_remote_rhel_8 ;;
|
|
365
305
|
9.*) bootstrap_remote_rhel_9 ;;
|
|
366
306
|
esac
|
|
367
307
|
}
|
|
368
308
|
|
|
369
|
-
bootstrap_remote_rhel_pinned_pip_packages()
|
|
370
|
-
{
|
|
371
|
-
# pin packaging and pyparsing to match the downstream vendored versions
|
|
372
|
-
pip_packages="
|
|
373
|
-
packaging==20.4
|
|
374
|
-
pyparsing==2.4.7
|
|
375
|
-
"
|
|
376
|
-
|
|
377
|
-
pip_install "${pip_packages}"
|
|
378
|
-
}
|
|
379
|
-
|
|
380
309
|
bootstrap_remote_ubuntu()
|
|
381
310
|
{
|
|
382
311
|
py_pkg_prefix="python3"
|
|
@@ -430,14 +359,27 @@ bootstrap_docker()
|
|
|
430
359
|
{
|
|
431
360
|
# Required for newer mysql-server packages to install/upgrade on Ubuntu 16.04.
|
|
432
361
|
rm -f /usr/sbin/policy-rc.d
|
|
362
|
+
|
|
363
|
+
for key_value in ${python_interpreters}; do
|
|
364
|
+
IFS=':' read -r python_version python_interpreter << EOF
|
|
365
|
+
${key_value}
|
|
366
|
+
EOF
|
|
367
|
+
|
|
368
|
+
echo "Bootstrapping Python ${python_version} at: ${python_interpreter}"
|
|
369
|
+
|
|
370
|
+
remove_externally_managed_marker
|
|
371
|
+
done
|
|
433
372
|
}
|
|
434
373
|
|
|
435
374
|
bootstrap_remote()
|
|
436
375
|
{
|
|
437
|
-
for
|
|
438
|
-
|
|
376
|
+
for key_value in ${python_interpreters}; do
|
|
377
|
+
IFS=':' read -r python_version python_interpreter << EOF
|
|
378
|
+
${key_value}
|
|
379
|
+
EOF
|
|
380
|
+
|
|
381
|
+
echo "Bootstrapping Python ${python_version} at: ${python_interpreter}"
|
|
439
382
|
|
|
440
|
-
python_interpreter="python${python_version}"
|
|
441
383
|
python_package_version="$(echo "${python_version}" | tr -d '.')"
|
|
442
384
|
|
|
443
385
|
case "${platform}" in
|
|
@@ -448,6 +390,8 @@ bootstrap_remote()
|
|
|
448
390
|
"rhel") bootstrap_remote_rhel ;;
|
|
449
391
|
"ubuntu") bootstrap_remote_ubuntu ;;
|
|
450
392
|
esac
|
|
393
|
+
|
|
394
|
+
remove_externally_managed_marker
|
|
451
395
|
done
|
|
452
396
|
}
|
|
453
397
|
|
|
@@ -474,7 +418,7 @@ bootstrap_type=#{bootstrap_type}
|
|
|
474
418
|
controller=#{controller}
|
|
475
419
|
platform=#{platform}
|
|
476
420
|
platform_version=#{platform_version}
|
|
477
|
-
|
|
421
|
+
python_interpreters=#{python_interpreters}
|
|
478
422
|
ssh_key_type=#{ssh_key_type}
|
|
479
423
|
ssh_private_key=#{ssh_private_key}
|
|
480
424
|
ssh_public_key=#{ssh_public_key}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"""Custom entry-point for pip that filters out unwanted logging and warnings."""
|
|
2
|
-
from __future__ import
|
|
3
|
-
__metaclass__ = type
|
|
2
|
+
from __future__ import annotations
|
|
4
3
|
|
|
5
4
|
import logging
|
|
6
5
|
import os
|
|
7
6
|
import re
|
|
8
7
|
import runpy
|
|
9
8
|
import sys
|
|
10
|
-
import warnings
|
|
11
9
|
|
|
12
10
|
BUILTIN_FILTERER_FILTER = logging.Filterer.filter
|
|
13
11
|
|
|
14
12
|
LOGGING_MESSAGE_FILTER = re.compile("^("
|
|
15
13
|
".*Running pip install with root privileges is generally not a good idea.*|" # custom Fedora patch [1]
|
|
16
14
|
".*Running pip as the 'root' user can result in broken permissions .*|" # pip 21.1
|
|
17
|
-
"DEPRECATION: Python 2.7 will reach the end of its life .*|" # pip 19.2.3
|
|
18
15
|
"Ignoring .*: markers .* don't match your environment|"
|
|
19
16
|
"Looking in indexes: .*|" # pypi-test-container
|
|
20
17
|
"Requirement already satisfied.*"
|
|
@@ -22,13 +19,6 @@ LOGGING_MESSAGE_FILTER = re.compile("^("
|
|
|
22
19
|
|
|
23
20
|
# [1] https://src.fedoraproject.org/rpms/python-pip/blob/f34/f/emit-a-warning-when-running-with-root-privileges.patch
|
|
24
21
|
|
|
25
|
-
WARNING_MESSAGE_FILTERS = (
|
|
26
|
-
# DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained.
|
|
27
|
-
# pip 21.0 will drop support for Python 2.7 in January 2021.
|
|
28
|
-
# More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
|
|
29
|
-
'DEPRECATION: Python 2.7 reached the end of its life ',
|
|
30
|
-
)
|
|
31
|
-
|
|
32
22
|
|
|
33
23
|
def custom_filterer_filter(self, record):
|
|
34
24
|
"""Globally omit logging of unwanted messages."""
|
|
@@ -44,11 +34,6 @@ def main():
|
|
|
44
34
|
# It also avoids problems with loss of color output and mixing up the order of stdout/stderr messages.
|
|
45
35
|
logging.Filterer.filter = custom_filterer_filter
|
|
46
36
|
|
|
47
|
-
for message_filter in WARNING_MESSAGE_FILTERS:
|
|
48
|
-
# Setting filterwarnings in code is necessary because of the following:
|
|
49
|
-
# Python 2.7 cannot use the -W option to match warning text after a colon. This makes it impossible to match specific warning messages.
|
|
50
|
-
warnings.filterwarnings('ignore', message_filter)
|
|
51
|
-
|
|
52
37
|
get_pip = os.environ.get('GET_PIP')
|
|
53
38
|
|
|
54
39
|
try:
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"""A tool for installing test requirements on the controller and target host."""
|
|
2
|
-
from __future__ import
|
|
3
|
-
__metaclass__ = type
|
|
2
|
+
from __future__ import annotations
|
|
4
3
|
|
|
5
4
|
# pylint: disable=wrong-import-position
|
|
6
5
|
|
|
@@ -250,6 +249,14 @@ def common_pip_environment(): # type: () -> t.Dict[str, str]
|
|
|
250
249
|
"""Return common environment variables used to run pip."""
|
|
251
250
|
env = os.environ.copy()
|
|
252
251
|
|
|
252
|
+
# When ansible-test installs requirements outside a virtual environment, it does so under one of two conditions:
|
|
253
|
+
# 1) The environment is an ephemeral one provisioned by ansible-test.
|
|
254
|
+
# 2) The user has provided the `--requirements` option to force installation of requirements.
|
|
255
|
+
# It seems reasonable to bypass PEP 668 checks in both of these cases.
|
|
256
|
+
# Doing so with an environment variable allows it to work under any version of pip which supports it, without breaking older versions.
|
|
257
|
+
# NOTE: pip version 23.0 enforces PEP 668 but does not support the override, in which case upgrading pip is required.
|
|
258
|
+
env.update(PIP_BREAK_SYSTEM_PACKAGES='1')
|
|
259
|
+
|
|
253
260
|
return env
|
|
254
261
|
|
|
255
262
|
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
# Copyright (c) 2019 Ansible Project
|
|
3
|
-
# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause)
|
|
4
|
-
|
|
5
|
-
from __future__ import absolute_import, division, print_function
|
|
6
|
-
__metaclass__ = type
|
|
7
|
-
|
|
8
|
-
import types
|
|
9
|
-
import json
|
|
10
|
-
|
|
11
|
-
# Detect the python-json library which is incompatible
|
|
12
|
-
try:
|
|
13
|
-
if not isinstance(json.loads, types.FunctionType) or not isinstance(json.dumps, types.FunctionType):
|
|
14
|
-
raise ImportError('json.loads or json.dumps were not found in the imported json library.')
|
|
15
|
-
except AttributeError:
|
|
16
|
-
raise ImportError('python-json was detected, which is incompatible.')
|