ansible-core 2.19.0b6__py3-none-any.whl → 2.19.0b7__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.
Files changed (101) hide show
  1. ansible/_internal/_templating/_jinja_bits.py +16 -1
  2. ansible/_internal/_templating/_jinja_common.py +1 -1
  3. ansible/cli/__init__.py +2 -2
  4. ansible/cli/adhoc.py +6 -3
  5. ansible/cli/console.py +1 -1
  6. ansible/cli/doc.py +2 -2
  7. ansible/config/base.yml +9 -6
  8. ansible/executor/module_common.py +8 -5
  9. ansible/executor/powershell/psrp_put_file.ps1 +1 -1
  10. ansible/executor/task_executor.py +2 -2
  11. ansible/executor/task_queue_manager.py +34 -70
  12. ansible/executor/task_result.py +1 -1
  13. ansible/galaxy/api.py +2 -2
  14. ansible/galaxy/collection/concrete_artifact_manager.py +2 -2
  15. ansible/galaxy/dependency_resolution/providers.py +3 -3
  16. ansible/inventory/group.py +6 -1
  17. ansible/inventory/host.py +6 -1
  18. ansible/module_utils/_internal/_deprecator.py +12 -1
  19. ansible/module_utils/ansible_release.py +1 -1
  20. ansible/module_utils/basic.py +14 -16
  21. ansible/module_utils/common/yaml.py +1 -1
  22. ansible/module_utils/csharp/Ansible.Basic.cs +1 -1
  23. ansible/module_utils/csharp/Ansible.Privilege.cs +2 -2
  24. ansible/module_utils/facts/hardware/base.py +1 -1
  25. ansible/module_utils/facts/other/facter.py +1 -1
  26. ansible/module_utils/facts/system/distribution.py +2 -2
  27. ansible/module_utils/powershell/Ansible.ModuleUtils.AddType.psm1 +1 -1
  28. ansible/module_utils/powershell/Ansible.ModuleUtils.CamelConversion.psm1 +1 -1
  29. ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 +1 -1
  30. ansible/module_utils/powershell/Ansible.ModuleUtils.WebRequest.psm1 +1 -1
  31. ansible/module_utils/urls.py +1 -1
  32. ansible/modules/apt.py +9 -3
  33. ansible/modules/assemble.py +5 -3
  34. ansible/modules/expect.py +5 -5
  35. ansible/modules/hostname.py +2 -2
  36. ansible/modules/pip.py +9 -11
  37. ansible/modules/raw.py +2 -2
  38. ansible/modules/stat.py +1 -1
  39. ansible/modules/wait_for.py +10 -3
  40. ansible/parsing/mod_args.py +38 -20
  41. ansible/parsing/vault/__init__.py +3 -3
  42. ansible/playbook/base.py +0 -2
  43. ansible/playbook/helpers.py +1 -1
  44. ansible/playbook/playbook_include.py +23 -56
  45. ansible/playbook/role/__init__.py +38 -21
  46. ansible/plugins/action/__init__.py +2 -2
  47. ansible/plugins/action/assemble.py +2 -1
  48. ansible/plugins/action/assert.py +2 -2
  49. ansible/plugins/action/script.py +5 -4
  50. ansible/plugins/action/template.py +1 -1
  51. ansible/plugins/callback/__init__.py +77 -87
  52. ansible/plugins/callback/default.py +0 -3
  53. ansible/plugins/callback/junit.py +0 -6
  54. ansible/plugins/connection/ssh.py +1 -1
  55. ansible/plugins/filter/pow.yml +1 -1
  56. ansible/plugins/filter/root.yml +1 -1
  57. ansible/plugins/filter/strftime.yml +3 -3
  58. ansible/plugins/filter/to_uuid.yml +1 -1
  59. ansible/plugins/inventory/script.py +1 -1
  60. ansible/plugins/loader.py +5 -0
  61. ansible/plugins/lookup/password.py +4 -6
  62. ansible/release.py +1 -1
  63. ansible/utils/display.py +16 -26
  64. ansible/utils/path.py +1 -1
  65. ansible/utils/vars.py +4 -1
  66. ansible/vars/manager.py +6 -3
  67. ansible/vars/reserved.py +6 -4
  68. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/METADATA +1 -1
  69. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/RECORD +101 -99
  70. ansible_test/_internal/__init__.py +5 -0
  71. ansible_test/_internal/ansible_util.py +1 -1
  72. ansible_test/_internal/classification/python.py +6 -0
  73. ansible_test/_internal/cli/commands/__init__.py +0 -5
  74. ansible_test/_internal/cli/environments.py +51 -5
  75. ansible_test/_internal/commands/coverage/__init__.py +1 -1
  76. ansible_test/_internal/commands/integration/__init__.py +18 -5
  77. ansible_test/_internal/commands/integration/cloud/httptester.py +1 -1
  78. ansible_test/_internal/commands/sanity/__init__.py +3 -1
  79. ansible_test/_internal/commands/sanity/integration_aliases.py +11 -0
  80. ansible_test/_internal/commands/shell/__init__.py +43 -4
  81. ansible_test/_internal/commands/units/__init__.py +4 -1
  82. ansible_test/_internal/config.py +21 -13
  83. ansible_test/_internal/debugging.py +166 -0
  84. ansible_test/_internal/delegation.py +21 -13
  85. ansible_test/_internal/host_profiles.py +197 -6
  86. ansible_test/_internal/inventory.py +4 -0
  87. ansible_test/_internal/metadata.py +94 -4
  88. ansible_test/_internal/processes.py +80 -0
  89. ansible_test/_internal/python_requirements.py +27 -0
  90. ansible_test/_internal/target.py +8 -0
  91. ansible_test/_internal/util_common.py +13 -3
  92. ansible_test/_util/target/injector/python.py +8 -0
  93. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/WHEEL +0 -0
  94. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/entry_points.txt +0 -0
  95. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/licenses/COPYING +0 -0
  96. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/licenses/licenses/Apache-License.txt +0 -0
  97. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/licenses/licenses/BSD-3-Clause.txt +0 -0
  98. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/licenses/licenses/MIT-license.txt +0 -0
  99. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/licenses/licenses/PSF-license.txt +0 -0
  100. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/licenses/licenses/simplified_bsd.txt +0 -0
  101. {ansible_core-2.19.0b6.dist-info → ansible_core-2.19.0b7.dist-info}/top_level.txt +0 -0
ansible/utils/vars.py CHANGED
@@ -28,6 +28,7 @@ from json import dumps
28
28
  from ansible import constants as C
29
29
  from ansible import context
30
30
  from ansible._internal import _json
31
+ from ansible._internal._templating import _jinja_bits
31
32
  from ansible.errors import AnsibleError, AnsibleOptionsError
32
33
  from ansible.module_utils.datatag import native_type_name
33
34
  from ansible.module_utils.common.text.converters import to_native, to_text
@@ -252,6 +253,8 @@ def isidentifier(ident):
252
253
 
253
254
  Originally posted at https://stackoverflow.com/a/29586366
254
255
  """
256
+ # deprecated: description='Use validate_variable_name instead.' core_version='2.23'
257
+
255
258
  if not isinstance(ident, str):
256
259
  return False
257
260
 
@@ -269,7 +272,7 @@ def isidentifier(ident):
269
272
 
270
273
  def validate_variable_name(name: object) -> None:
271
274
  """Validate the given variable name is valid, raising an AnsibleError if it is not."""
272
- if isinstance(name, str) and isidentifier(name):
275
+ if isinstance(name, str) and name.isidentifier() and name.isascii() and name not in _jinja_bits.JINJA_KEYWORDS:
273
276
  return
274
277
 
275
278
  if isinstance(name, (str, int, float, bool, type(None))):
ansible/vars/manager.py CHANGED
@@ -407,7 +407,7 @@ class VariableManager:
407
407
  all_vars = _combine_and_track(all_vars, self._extra_vars, "extra vars")
408
408
 
409
409
  # before we add 'reserved vars', check we didn't add any reserved vars
410
- warn_if_reserved(all_vars.keys())
410
+ warn_if_reserved(all_vars)
411
411
 
412
412
  # magic variables
413
413
  all_vars = _combine_and_track(all_vars, magic_variables, "magic vars")
@@ -563,7 +563,8 @@ class VariableManager:
563
563
  if not isinstance(facts, Mapping):
564
564
  raise AnsibleAssertionError("the type of 'facts' to set for host_facts should be a Mapping but is a %s" % type(facts))
565
565
 
566
- warn_if_reserved(facts.keys())
566
+ warn_if_reserved(facts)
567
+
567
568
  try:
568
569
  host_cache = self._fact_cache.get(host)
569
570
  except KeyError:
@@ -587,7 +588,8 @@ class VariableManager:
587
588
  if not isinstance(facts, Mapping):
588
589
  raise AnsibleAssertionError("the type of 'facts' to set for nonpersistent_facts should be a Mapping but is a %s" % type(facts))
589
590
 
590
- warn_if_reserved(facts.keys())
591
+ warn_if_reserved(facts)
592
+
591
593
  try:
592
594
  self._nonpersistent_fact_cache[host] |= facts
593
595
  except KeyError:
@@ -599,6 +601,7 @@ class VariableManager:
599
601
  """
600
602
 
601
603
  warn_if_reserved([varname])
604
+
602
605
  if host not in self._vars_cache:
603
606
  self._vars_cache[host] = dict()
604
607
 
ansible/vars/reserved.py CHANGED
@@ -66,8 +66,7 @@ def get_reserved_names(include_private: bool = True) -> set[str]:
66
66
 
67
67
 
68
68
  def warn_if_reserved(myvars: c.Iterable[str], additional: c.Iterable[str] | None = None) -> None:
69
- """ this function warns if any variable passed conflicts with internally reserved names """
70
-
69
+ """Issue a warning for any variable which conflicts with an internally reserved name."""
71
70
  if additional is None:
72
71
  reserved = _RESERVED_NAMES
73
72
  else:
@@ -76,8 +75,11 @@ def warn_if_reserved(myvars: c.Iterable[str], additional: c.Iterable[str] | None
76
75
  varnames = set(myvars)
77
76
  varnames.discard('vars') # we add this one internally, so safe to ignore
78
77
 
79
- for varname in varnames.intersection(reserved):
80
- display.warning(f'Found variable using reserved name {varname!r}.')
78
+ if conflicts := varnames.intersection(reserved):
79
+ # Ensure the varname used for obj is the tagged one from myvars and not the untagged one from reserved.
80
+ # This can occur because tags do not affect value equality, and intersection can return values from either the left or right side.
81
+ for varname in (name for name in myvars if name in conflicts):
82
+ display.warning(f'Found variable using reserved name {varname!r}.', obj=varname)
81
83
 
82
84
 
83
85
  def is_reserved_name(name: str) -> bool:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ansible-core
3
- Version: 2.19.0b6
3
+ Version: 2.19.0b7
4
4
  Summary: Radically simple IT automation
5
5
  Author: Ansible Project
6
6
  Project-URL: Homepage, https://ansible.com/