ansible-core 2.16.5rc1__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.5rc1.data → ansible_core-2.17.0b1.data}/scripts/ansible-test +1 -2
- {ansible_core-2.16.5rc1.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 +58 -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.5rc1.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.5rc1.dist-info → ansible_core-2.17.0b1.dist-info}/COPYING +0 -0
- {ansible_core-2.16.5rc1.dist-info → ansible_core-2.17.0b1.dist-info}/WHEEL +0 -0
- {ansible_core-2.16.5rc1.dist-info → ansible_core-2.17.0b1.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.16.5rc1.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"
|
|
@@ -111,6 +106,15 @@ bootstrap_remote_alpine()
|
|
|
111
106
|
echo "Failed to install packages. Sleeping before trying again..."
|
|
112
107
|
sleep 10
|
|
113
108
|
done
|
|
109
|
+
|
|
110
|
+
# Upgrade the `libexpat` package to ensure that an upgraded Python (`pyexpat`) continues to work.
|
|
111
|
+
while true; do
|
|
112
|
+
# shellcheck disable=SC2086
|
|
113
|
+
apk upgrade -q libexpat \
|
|
114
|
+
&& break
|
|
115
|
+
echo "Failed to upgrade libexpat. Sleeping before trying again..."
|
|
116
|
+
sleep 10
|
|
117
|
+
done
|
|
114
118
|
}
|
|
115
119
|
|
|
116
120
|
bootstrap_remote_fedora()
|
|
@@ -159,19 +163,39 @@ bootstrap_remote_freebsd()
|
|
|
159
163
|
jinja2_pkg="py${python_package_version}-jinja2"
|
|
160
164
|
cryptography_pkg="py${python_package_version}-cryptography"
|
|
161
165
|
pyyaml_pkg="py${python_package_version}-yaml"
|
|
166
|
+
packaging_pkg="py${python_package_version}-packaging"
|
|
162
167
|
|
|
163
168
|
# Declare platform/python version combinations which do not have supporting OS packages available.
|
|
164
169
|
# For these combinations ansible-test will use pip to install the requirements instead.
|
|
165
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
|
+
;;
|
|
166
187
|
*)
|
|
188
|
+
# just assume nothing is available
|
|
167
189
|
jinja2_pkg="" # not available
|
|
168
190
|
cryptography_pkg="" # not available
|
|
169
191
|
pyyaml_pkg="" # not available
|
|
192
|
+
packaging_pkg="" # not available
|
|
170
193
|
;;
|
|
171
194
|
esac
|
|
172
195
|
|
|
173
196
|
packages="
|
|
174
197
|
${packages}
|
|
198
|
+
${packaging_pkg}
|
|
175
199
|
libyaml
|
|
176
200
|
${pyyaml_pkg}
|
|
177
201
|
${jinja2_pkg}
|
|
@@ -233,79 +257,6 @@ bootstrap_remote_macos()
|
|
|
233
257
|
echo 'PATH="/usr/local/bin:$PATH"' > /etc/zshenv
|
|
234
258
|
}
|
|
235
259
|
|
|
236
|
-
bootstrap_remote_rhel_7()
|
|
237
|
-
{
|
|
238
|
-
packages="
|
|
239
|
-
gcc
|
|
240
|
-
python-devel
|
|
241
|
-
python-virtualenv
|
|
242
|
-
"
|
|
243
|
-
|
|
244
|
-
while true; do
|
|
245
|
-
# shellcheck disable=SC2086
|
|
246
|
-
yum install -q -y ${packages} \
|
|
247
|
-
&& break
|
|
248
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
249
|
-
sleep 10
|
|
250
|
-
done
|
|
251
|
-
|
|
252
|
-
install_pip
|
|
253
|
-
|
|
254
|
-
bootstrap_remote_rhel_pinned_pip_packages
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
bootstrap_remote_rhel_8()
|
|
258
|
-
{
|
|
259
|
-
if [ "${python_version}" = "3.6" ]; then
|
|
260
|
-
py_pkg_prefix="python3"
|
|
261
|
-
else
|
|
262
|
-
py_pkg_prefix="python${python_version}"
|
|
263
|
-
fi
|
|
264
|
-
|
|
265
|
-
packages="
|
|
266
|
-
gcc
|
|
267
|
-
${py_pkg_prefix}-devel
|
|
268
|
-
"
|
|
269
|
-
|
|
270
|
-
# pip isn't included in the Python devel package under Python 3.11
|
|
271
|
-
if [ "${python_version}" != "3.6" ]; then
|
|
272
|
-
packages="
|
|
273
|
-
${packages}
|
|
274
|
-
${py_pkg_prefix}-pip
|
|
275
|
-
"
|
|
276
|
-
fi
|
|
277
|
-
|
|
278
|
-
# Jinja2 is not installed with an OS package since the provided version is too old.
|
|
279
|
-
# Instead, ansible-test will install it using pip.
|
|
280
|
-
if [ "${controller}" ]; then
|
|
281
|
-
packages="
|
|
282
|
-
${packages}
|
|
283
|
-
${py_pkg_prefix}-cryptography
|
|
284
|
-
"
|
|
285
|
-
fi
|
|
286
|
-
|
|
287
|
-
# Python 3.11 isn't a module like the earlier versions
|
|
288
|
-
if [ "${python_version}" = "3.6" ]; then
|
|
289
|
-
while true; do
|
|
290
|
-
# shellcheck disable=SC2086
|
|
291
|
-
yum module install -q -y "python${python_package_version}" \
|
|
292
|
-
&& break
|
|
293
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
294
|
-
sleep 10
|
|
295
|
-
done
|
|
296
|
-
fi
|
|
297
|
-
|
|
298
|
-
while true; do
|
|
299
|
-
# shellcheck disable=SC2086
|
|
300
|
-
yum install -q -y ${packages} \
|
|
301
|
-
&& break
|
|
302
|
-
echo "Failed to install packages. Sleeping before trying again..."
|
|
303
|
-
sleep 10
|
|
304
|
-
done
|
|
305
|
-
|
|
306
|
-
bootstrap_remote_rhel_pinned_pip_packages
|
|
307
|
-
}
|
|
308
|
-
|
|
309
260
|
bootstrap_remote_rhel_9()
|
|
310
261
|
{
|
|
311
262
|
if [ "${python_version}" = "3.9" ]; then
|
|
@@ -351,23 +302,10 @@ bootstrap_remote_rhel_9()
|
|
|
351
302
|
bootstrap_remote_rhel()
|
|
352
303
|
{
|
|
353
304
|
case "${platform_version}" in
|
|
354
|
-
7.*) bootstrap_remote_rhel_7 ;;
|
|
355
|
-
8.*) bootstrap_remote_rhel_8 ;;
|
|
356
305
|
9.*) bootstrap_remote_rhel_9 ;;
|
|
357
306
|
esac
|
|
358
307
|
}
|
|
359
308
|
|
|
360
|
-
bootstrap_remote_rhel_pinned_pip_packages()
|
|
361
|
-
{
|
|
362
|
-
# pin packaging and pyparsing to match the downstream vendored versions
|
|
363
|
-
pip_packages="
|
|
364
|
-
packaging==20.4
|
|
365
|
-
pyparsing==2.4.7
|
|
366
|
-
"
|
|
367
|
-
|
|
368
|
-
pip_install "${pip_packages}"
|
|
369
|
-
}
|
|
370
|
-
|
|
371
309
|
bootstrap_remote_ubuntu()
|
|
372
310
|
{
|
|
373
311
|
py_pkg_prefix="python3"
|
|
@@ -421,14 +359,27 @@ bootstrap_docker()
|
|
|
421
359
|
{
|
|
422
360
|
# Required for newer mysql-server packages to install/upgrade on Ubuntu 16.04.
|
|
423
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
|
|
424
372
|
}
|
|
425
373
|
|
|
426
374
|
bootstrap_remote()
|
|
427
375
|
{
|
|
428
|
-
for
|
|
429
|
-
|
|
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}"
|
|
430
382
|
|
|
431
|
-
python_interpreter="python${python_version}"
|
|
432
383
|
python_package_version="$(echo "${python_version}" | tr -d '.')"
|
|
433
384
|
|
|
434
385
|
case "${platform}" in
|
|
@@ -439,6 +390,8 @@ bootstrap_remote()
|
|
|
439
390
|
"rhel") bootstrap_remote_rhel ;;
|
|
440
391
|
"ubuntu") bootstrap_remote_ubuntu ;;
|
|
441
392
|
esac
|
|
393
|
+
|
|
394
|
+
remove_externally_managed_marker
|
|
442
395
|
done
|
|
443
396
|
}
|
|
444
397
|
|
|
@@ -465,7 +418,7 @@ bootstrap_type=#{bootstrap_type}
|
|
|
465
418
|
controller=#{controller}
|
|
466
419
|
platform=#{platform}
|
|
467
420
|
platform_version=#{platform_version}
|
|
468
|
-
|
|
421
|
+
python_interpreters=#{python_interpreters}
|
|
469
422
|
ssh_key_type=#{ssh_key_type}
|
|
470
423
|
ssh_private_key=#{ssh_private_key}
|
|
471
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.')
|