ansible-core 2.18.7rc1__py3-none-any.whl → 2.19.0__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.

Files changed (757) hide show
  1. ansible/_internal/__init__.py +53 -0
  2. ansible/_internal/_ansiballz/__init__.py +0 -0
  3. ansible/_internal/_ansiballz/_builder.py +101 -0
  4. ansible/_internal/_ansiballz/_wrapper.py +262 -0
  5. ansible/_internal/_collection_proxy.py +47 -0
  6. ansible/_internal/_datatag/__init__.py +0 -0
  7. ansible/_internal/_datatag/_tags.py +130 -0
  8. ansible/_internal/_datatag/_utils.py +19 -0
  9. ansible/_internal/_datatag/_wrappers.py +33 -0
  10. ansible/_internal/_errors/__init__.py +0 -0
  11. ansible/_internal/_errors/_alarm_timeout.py +66 -0
  12. ansible/_internal/_errors/_captured.py +123 -0
  13. ansible/_internal/_errors/_error_factory.py +89 -0
  14. ansible/_internal/_errors/_error_utils.py +240 -0
  15. ansible/_internal/_errors/_handler.py +91 -0
  16. ansible/_internal/_errors/_task_timeout.py +28 -0
  17. ansible/_internal/_event_formatting.py +127 -0
  18. ansible/_internal/_json/__init__.py +214 -0
  19. ansible/_internal/_json/_legacy_encoder.py +34 -0
  20. ansible/_internal/_json/_profiles/__init__.py +0 -0
  21. ansible/_internal/_json/_profiles/_cache_persistence.py +57 -0
  22. ansible/_internal/_json/_profiles/_inventory_legacy.py +40 -0
  23. ansible/_internal/_json/_profiles/_legacy.py +189 -0
  24. ansible/_internal/_locking.py +21 -0
  25. ansible/_internal/_plugins/__init__.py +0 -0
  26. ansible/_internal/_plugins/_cache.py +57 -0
  27. ansible/_internal/_ssh/__init__.py +0 -0
  28. ansible/_internal/_ssh/_agent_launch.py +91 -0
  29. ansible/_internal/_ssh/_ssh_agent.py +619 -0
  30. ansible/_internal/_task.py +78 -0
  31. ansible/_internal/_templating/__init__.py +12 -0
  32. ansible/_internal/_templating/_access.py +86 -0
  33. ansible/_internal/_templating/_chain_templar.py +63 -0
  34. ansible/_internal/_templating/_datatag.py +95 -0
  35. ansible/_internal/_templating/_engine.py +592 -0
  36. ansible/_internal/_templating/_errors.py +28 -0
  37. ansible/_internal/_templating/_jinja_bits.py +1106 -0
  38. ansible/_internal/_templating/_jinja_common.py +323 -0
  39. ansible/_internal/_templating/_jinja_patches.py +44 -0
  40. ansible/_internal/_templating/_jinja_plugins.py +375 -0
  41. ansible/_internal/_templating/_lazy_containers.py +633 -0
  42. ansible/_internal/_templating/_marker_behaviors.py +103 -0
  43. ansible/_internal/_templating/_template_vars.py +72 -0
  44. ansible/_internal/_templating/_transform.py +70 -0
  45. ansible/_internal/_templating/_utils.py +108 -0
  46. ansible/_internal/_testing.py +26 -0
  47. ansible/_internal/_wrapt.py +1052 -0
  48. ansible/_internal/_yaml/__init__.py +0 -0
  49. ansible/_internal/_yaml/_constructor.py +240 -0
  50. ansible/_internal/_yaml/_dumper.py +70 -0
  51. ansible/_internal/_yaml/_errors.py +166 -0
  52. ansible/_internal/_yaml/_loader.py +66 -0
  53. ansible/_internal/ansible_collections/ansible/_protomatter/README.md +11 -0
  54. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/action/debug.py +36 -0
  55. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/apply_trust.py +19 -0
  56. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/dump_object.py +27 -0
  57. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/finalize.py +16 -0
  58. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/origin.py +18 -0
  59. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.py +24 -0
  60. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.yml +33 -0
  61. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/tag_names.py +16 -0
  62. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/true_type.py +17 -0
  63. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/unmask.py +49 -0
  64. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.py +21 -0
  65. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.yml +2 -0
  66. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.py +15 -0
  67. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.yml +19 -0
  68. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.py +18 -0
  69. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.yml +19 -0
  70. ansible/cli/__init__.py +93 -104
  71. ansible/cli/_ssh_askpass.py +54 -0
  72. ansible/cli/adhoc.py +20 -10
  73. ansible/cli/arguments/option_helpers.py +163 -10
  74. ansible/cli/config.py +43 -68
  75. ansible/cli/console.py +13 -11
  76. ansible/cli/doc.py +134 -77
  77. ansible/cli/galaxy.py +27 -20
  78. ansible/cli/inventory.py +28 -28
  79. ansible/cli/playbook.py +4 -12
  80. ansible/cli/pull.py +6 -3
  81. ansible/cli/scripts/ansible_connection_cli_stub.py +7 -7
  82. ansible/cli/vault.py +12 -11
  83. ansible/compat/__init__.py +2 -2
  84. ansible/compat/importlib_resources.py +9 -12
  85. ansible/config/base.yml +218 -133
  86. ansible/config/manager.py +220 -159
  87. ansible/constants.py +2 -65
  88. ansible/errors/__init__.py +350 -256
  89. ansible/executor/interpreter_discovery.py +28 -149
  90. ansible/executor/module_common.py +480 -514
  91. ansible/executor/play_iterator.py +22 -27
  92. ansible/executor/playbook_executor.py +11 -11
  93. ansible/executor/powershell/async_watchdog.ps1 +97 -102
  94. ansible/executor/powershell/async_wrapper.ps1 +204 -153
  95. ansible/executor/powershell/become_wrapper.ps1 +107 -144
  96. ansible/executor/powershell/bootstrap_wrapper.ps1 +46 -9
  97. ansible/executor/powershell/coverage_wrapper.ps1 +91 -135
  98. ansible/executor/powershell/exec_wrapper.ps1 +675 -196
  99. ansible/executor/powershell/module_manifest.py +469 -265
  100. ansible/executor/powershell/module_wrapper.ps1 +195 -186
  101. ansible/executor/powershell/powershell_expand_user.ps1 +20 -0
  102. ansible/executor/powershell/powershell_mkdtemp.ps1 +17 -0
  103. ansible/executor/powershell/psrp_fetch_file.ps1 +41 -0
  104. ansible/executor/powershell/psrp_put_file.ps1 +122 -0
  105. ansible/executor/powershell/winrm_fetch_file.ps1 +46 -0
  106. ansible/executor/powershell/winrm_put_file.ps1 +36 -0
  107. ansible/executor/process/worker.py +139 -149
  108. ansible/executor/stats.py +5 -5
  109. ansible/executor/task_executor.py +270 -297
  110. ansible/executor/task_queue_manager.py +135 -137
  111. ansible/executor/task_result.py +182 -79
  112. ansible/galaxy/__init__.py +2 -2
  113. ansible/galaxy/api.py +26 -25
  114. ansible/galaxy/collection/__init__.py +6 -14
  115. ansible/galaxy/collection/concrete_artifact_manager.py +12 -21
  116. ansible/galaxy/dependency_resolution/dataclasses.py +14 -4
  117. ansible/galaxy/dependency_resolution/providers.py +4 -4
  118. ansible/galaxy/dependency_resolution/reporters.py +81 -0
  119. ansible/galaxy/role.py +6 -10
  120. ansible/galaxy/token.py +28 -21
  121. ansible/inventory/data.py +47 -57
  122. ansible/inventory/group.py +50 -73
  123. ansible/inventory/helpers.py +9 -0
  124. ansible/inventory/host.py +37 -54
  125. ansible/inventory/manager.py +79 -34
  126. ansible/keyword_desc.yml +1 -1
  127. ansible/module_utils/_internal/__init__.py +55 -0
  128. ansible/module_utils/_internal/_ambient_context.py +58 -0
  129. ansible/module_utils/_internal/_ansiballz/__init__.py +0 -0
  130. ansible/module_utils/_internal/_ansiballz/_extensions/__init__.py +0 -0
  131. ansible/module_utils/_internal/_ansiballz/_extensions/_coverage.py +45 -0
  132. ansible/module_utils/_internal/_ansiballz/_extensions/_pydevd.py +62 -0
  133. ansible/module_utils/_internal/_ansiballz/_loader.py +81 -0
  134. ansible/module_utils/_internal/_ansiballz/_respawn.py +32 -0
  135. ansible/module_utils/_internal/_ansiballz/_respawn_wrapper.py +23 -0
  136. ansible/module_utils/_internal/_concurrent/_daemon_threading.py +1 -0
  137. ansible/module_utils/_internal/_dataclass_validation.py +217 -0
  138. ansible/module_utils/_internal/_datatag/__init__.py +961 -0
  139. ansible/module_utils/_internal/_datatag/_tags.py +16 -0
  140. ansible/module_utils/_internal/_debugging.py +31 -0
  141. ansible/module_utils/_internal/_deprecator.py +157 -0
  142. ansible/module_utils/_internal/_errors.py +101 -0
  143. ansible/module_utils/_internal/_event_utils.py +61 -0
  144. ansible/module_utils/_internal/_json/__init__.py +63 -0
  145. ansible/module_utils/_internal/_json/_legacy_encoder.py +26 -0
  146. ansible/module_utils/_internal/_json/_profiles/__init__.py +428 -0
  147. ansible/module_utils/_internal/_json/_profiles/_fallback_to_str.py +73 -0
  148. ansible/module_utils/_internal/_json/_profiles/_module_legacy_c2m.py +33 -0
  149. ansible/module_utils/_internal/_json/_profiles/_module_legacy_m2c.py +37 -0
  150. ansible/module_utils/_internal/_json/_profiles/_module_modern_c2m.py +35 -0
  151. ansible/module_utils/_internal/_json/_profiles/_module_modern_m2c.py +33 -0
  152. ansible/module_utils/_internal/_json/_profiles/_tagless.py +52 -0
  153. ansible/module_utils/_internal/_messages.py +130 -0
  154. ansible/module_utils/_internal/_patches/__init__.py +66 -0
  155. ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py +53 -0
  156. ansible/module_utils/_internal/_patches/_socket_patch.py +34 -0
  157. ansible/module_utils/_internal/_patches/_sys_intern_patch.py +34 -0
  158. ansible/module_utils/_internal/_plugin_info.py +38 -0
  159. ansible/module_utils/_internal/_stack.py +22 -0
  160. ansible/module_utils/_internal/_testing.py +0 -0
  161. ansible/module_utils/_internal/_text_utils.py +6 -0
  162. ansible/module_utils/_internal/_traceback.py +92 -0
  163. ansible/module_utils/_internal/_validation.py +14 -0
  164. ansible/module_utils/ansible_release.py +2 -2
  165. ansible/module_utils/api.py +1 -2
  166. ansible/module_utils/basic.py +303 -202
  167. ansible/module_utils/common/_utils.py +24 -28
  168. ansible/module_utils/common/arg_spec.py +8 -3
  169. ansible/module_utils/common/collections.py +7 -2
  170. ansible/module_utils/common/dict_transformations.py +2 -2
  171. ansible/module_utils/common/file.py +2 -2
  172. ansible/module_utils/common/json.py +90 -84
  173. ansible/module_utils/common/locale.py +2 -2
  174. ansible/module_utils/common/parameters.py +27 -24
  175. ansible/module_utils/common/process.py +2 -3
  176. ansible/module_utils/common/respawn.py +11 -33
  177. ansible/module_utils/common/sentinel.py +66 -0
  178. ansible/module_utils/common/sys_info.py +8 -8
  179. ansible/module_utils/common/text/converters.py +16 -37
  180. ansible/module_utils/common/validation.py +35 -24
  181. ansible/module_utils/common/warnings.py +143 -25
  182. ansible/module_utils/common/yaml.py +29 -3
  183. ansible/module_utils/compat/datetime.py +33 -21
  184. ansible/module_utils/compat/paramiko.py +21 -10
  185. ansible/module_utils/compat/typing.py +6 -5
  186. ansible/module_utils/connection.py +10 -13
  187. ansible/module_utils/csharp/Ansible.Basic.cs +15 -12
  188. ansible/module_utils/csharp/Ansible.Become.cs +1 -0
  189. ansible/module_utils/csharp/Ansible.Privilege.cs +2 -2
  190. ansible/module_utils/csharp/Ansible._Async.cs +517 -0
  191. ansible/module_utils/datatag.py +49 -0
  192. ansible/module_utils/distro/__init__.py +2 -2
  193. ansible/module_utils/facts/ansible_collector.py +4 -5
  194. ansible/module_utils/facts/collector.py +13 -14
  195. ansible/module_utils/facts/compat.py +4 -4
  196. ansible/module_utils/facts/default_collectors.py +1 -1
  197. ansible/module_utils/facts/hardware/aix.py +34 -0
  198. ansible/module_utils/facts/hardware/base.py +2 -2
  199. ansible/module_utils/facts/hardware/darwin.py +1 -3
  200. ansible/module_utils/facts/hardware/freebsd.py +2 -2
  201. ansible/module_utils/facts/hardware/linux.py +5 -5
  202. ansible/module_utils/facts/namespace.py +1 -1
  203. ansible/module_utils/facts/network/base.py +1 -1
  204. ansible/module_utils/facts/network/fc_wwn.py +1 -2
  205. ansible/module_utils/facts/network/iscsi.py +1 -2
  206. ansible/module_utils/facts/network/nvme.py +1 -2
  207. ansible/module_utils/facts/other/facter.py +2 -3
  208. ansible/module_utils/facts/other/ohai.py +2 -3
  209. ansible/module_utils/facts/sysctl.py +4 -6
  210. ansible/module_utils/facts/system/apparmor.py +1 -2
  211. ansible/module_utils/facts/system/caps.py +3 -3
  212. ansible/module_utils/facts/system/chroot.py +1 -2
  213. ansible/module_utils/facts/system/cmdline.py +1 -2
  214. ansible/module_utils/facts/system/date_time.py +5 -3
  215. ansible/module_utils/facts/system/distribution.py +27 -13
  216. ansible/module_utils/facts/system/dns.py +1 -1
  217. ansible/module_utils/facts/system/env.py +1 -2
  218. ansible/module_utils/facts/system/fips.py +7 -20
  219. ansible/module_utils/facts/system/loadavg.py +1 -2
  220. ansible/module_utils/facts/system/local.py +2 -3
  221. ansible/module_utils/facts/system/lsb.py +1 -2
  222. ansible/module_utils/facts/system/pkg_mgr.py +1 -2
  223. ansible/module_utils/facts/system/platform.py +1 -2
  224. ansible/module_utils/facts/system/python.py +1 -2
  225. ansible/module_utils/facts/system/selinux.py +1 -1
  226. ansible/module_utils/facts/system/service_mgr.py +1 -2
  227. ansible/module_utils/facts/system/ssh_pub_keys.py +1 -1
  228. ansible/module_utils/facts/system/systemd.py +1 -1
  229. ansible/module_utils/facts/system/user.py +1 -2
  230. ansible/module_utils/facts/utils.py +3 -3
  231. ansible/module_utils/facts/virtual/base.py +1 -1
  232. ansible/module_utils/facts/virtual/linux.py +3 -3
  233. ansible/module_utils/facts/virtual/sunos.py +3 -15
  234. ansible/module_utils/facts/virtual/sysctl.py +3 -16
  235. ansible/module_utils/json_utils.py +2 -2
  236. ansible/module_utils/parsing/convert_bool.py +7 -1
  237. ansible/module_utils/powershell/Ansible.ModuleUtils.AddType.psm1 +1 -1
  238. ansible/module_utils/powershell/Ansible.ModuleUtils.CamelConversion.psm1 +1 -1
  239. ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 +1 -1
  240. ansible/module_utils/powershell/Ansible.ModuleUtils.WebRequest.psm1 +1 -1
  241. ansible/module_utils/service.py +21 -31
  242. ansible/module_utils/splitter.py +7 -7
  243. ansible/module_utils/testing.py +31 -0
  244. ansible/module_utils/urls.py +64 -35
  245. ansible/modules/add_host.py +4 -4
  246. ansible/modules/apt.py +69 -49
  247. ansible/modules/apt_key.py +19 -12
  248. ansible/modules/apt_repository.py +32 -51
  249. ansible/modules/assemble.py +16 -14
  250. ansible/modules/assert.py +4 -4
  251. ansible/modules/async_status.py +24 -24
  252. ansible/modules/async_wrapper.py +20 -25
  253. ansible/modules/blockinfile.py +6 -7
  254. ansible/modules/command.py +13 -20
  255. ansible/modules/copy.py +60 -147
  256. ansible/modules/cron.py +24 -21
  257. ansible/modules/deb822_repository.py +8 -9
  258. ansible/modules/debconf.py +5 -5
  259. ansible/modules/debug.py +4 -4
  260. ansible/modules/dnf.py +8 -8
  261. ansible/modules/dnf5.py +39 -13
  262. ansible/modules/dpkg_selections.py +4 -4
  263. ansible/modules/expect.py +13 -15
  264. ansible/modules/fail.py +4 -4
  265. ansible/modules/fetch.py +4 -4
  266. ansible/modules/file.py +184 -144
  267. ansible/modules/find.py +22 -20
  268. ansible/modules/gather_facts.py +3 -3
  269. ansible/modules/get_url.py +77 -54
  270. ansible/modules/getent.py +7 -9
  271. ansible/modules/git.py +38 -38
  272. ansible/modules/group.py +6 -6
  273. ansible/modules/group_by.py +4 -4
  274. ansible/modules/hostname.py +15 -32
  275. ansible/modules/import_playbook.py +6 -6
  276. ansible/modules/import_role.py +6 -6
  277. ansible/modules/import_tasks.py +6 -6
  278. ansible/modules/include_role.py +6 -6
  279. ansible/modules/include_tasks.py +6 -6
  280. ansible/modules/include_vars.py +6 -6
  281. ansible/modules/iptables.py +86 -73
  282. ansible/modules/known_hosts.py +22 -24
  283. ansible/modules/lineinfile.py +5 -5
  284. ansible/modules/meta.py +4 -4
  285. ansible/modules/mount_facts.py +2 -2
  286. ansible/modules/package.py +10 -4
  287. ansible/modules/package_facts.py +22 -10
  288. ansible/modules/pause.py +6 -6
  289. ansible/modules/ping.py +6 -6
  290. ansible/modules/pip.py +21 -26
  291. ansible/modules/raw.py +6 -6
  292. ansible/modules/reboot.py +6 -6
  293. ansible/modules/replace.py +10 -14
  294. ansible/modules/rpm_key.py +7 -8
  295. ansible/modules/script.py +4 -4
  296. ansible/modules/service.py +10 -17
  297. ansible/modules/service_facts.py +87 -10
  298. ansible/modules/set_fact.py +5 -5
  299. ansible/modules/set_stats.py +4 -4
  300. ansible/modules/setup.py +2 -2
  301. ansible/modules/shell.py +6 -6
  302. ansible/modules/slurp.py +16 -19
  303. ansible/modules/stat.py +15 -31
  304. ansible/modules/subversion.py +15 -15
  305. ansible/modules/systemd.py +7 -7
  306. ansible/modules/systemd_service.py +7 -7
  307. ansible/modules/sysvinit.py +9 -9
  308. ansible/modules/tempfile.py +5 -6
  309. ansible/modules/template.py +6 -6
  310. ansible/modules/unarchive.py +38 -17
  311. ansible/modules/uri.py +33 -26
  312. ansible/modules/user.py +45 -32
  313. ansible/modules/validate_argument_spec.py +10 -7
  314. ansible/modules/wait_for.py +70 -60
  315. ansible/modules/wait_for_connection.py +6 -6
  316. ansible/modules/yum_repository.py +10 -9
  317. ansible/parsing/ajson.py +17 -37
  318. ansible/parsing/dataloader.py +99 -54
  319. ansible/parsing/mod_args.py +62 -60
  320. ansible/parsing/plugin_docs.py +21 -86
  321. ansible/parsing/quoting.py +1 -1
  322. ansible/parsing/splitter.py +27 -12
  323. ansible/parsing/utils/addresses.py +24 -24
  324. ansible/parsing/utils/jsonify.py +5 -1
  325. ansible/parsing/utils/yaml.py +32 -61
  326. ansible/parsing/vault/__init__.py +327 -99
  327. ansible/parsing/yaml/__init__.py +0 -18
  328. ansible/parsing/yaml/dumper.py +6 -120
  329. ansible/parsing/yaml/loader.py +6 -39
  330. ansible/parsing/yaml/objects.py +43 -335
  331. ansible/playbook/__init__.py +1 -1
  332. ansible/playbook/attribute.py +8 -3
  333. ansible/playbook/base.py +187 -134
  334. ansible/playbook/block.py +26 -24
  335. ansible/playbook/collectionsearch.py +1 -15
  336. ansible/playbook/conditional.py +3 -77
  337. ansible/playbook/handler.py +8 -2
  338. ansible/playbook/helpers.py +41 -53
  339. ansible/playbook/included_file.py +32 -26
  340. ansible/playbook/loop_control.py +2 -2
  341. ansible/playbook/play.py +85 -44
  342. ansible/playbook/play_context.py +14 -17
  343. ansible/playbook/playbook_include.py +27 -62
  344. ansible/playbook/role/__init__.py +64 -49
  345. ansible/playbook/role/definition.py +15 -17
  346. ansible/playbook/role/include.py +2 -4
  347. ansible/playbook/role/metadata.py +10 -11
  348. ansible/playbook/role_include.py +3 -3
  349. ansible/playbook/taggable.py +28 -12
  350. ansible/playbook/task.py +192 -121
  351. ansible/playbook/task_include.py +5 -5
  352. ansible/plugins/__init__.py +58 -26
  353. ansible/plugins/action/__init__.py +188 -186
  354. ansible/plugins/action/add_host.py +2 -2
  355. ansible/plugins/action/assemble.py +11 -18
  356. ansible/plugins/action/assert.py +55 -67
  357. ansible/plugins/action/async_status.py +7 -2
  358. ansible/plugins/action/copy.py +14 -17
  359. ansible/plugins/action/debug.py +37 -31
  360. ansible/plugins/action/dnf.py +3 -4
  361. ansible/plugins/action/fail.py +1 -1
  362. ansible/plugins/action/fetch.py +7 -8
  363. ansible/plugins/action/gather_facts.py +13 -14
  364. ansible/plugins/action/group_by.py +1 -1
  365. ansible/plugins/action/include_vars.py +10 -11
  366. ansible/plugins/action/package.py +8 -14
  367. ansible/plugins/action/pause.py +2 -2
  368. ansible/plugins/action/script.py +27 -38
  369. ansible/plugins/action/service.py +9 -18
  370. ansible/plugins/action/set_fact.py +3 -12
  371. ansible/plugins/action/set_stats.py +3 -8
  372. ansible/plugins/action/template.py +47 -67
  373. ansible/plugins/action/unarchive.py +6 -16
  374. ansible/plugins/action/uri.py +9 -20
  375. ansible/plugins/action/validate_argument_spec.py +5 -5
  376. ansible/plugins/action/wait_for_connection.py +1 -1
  377. ansible/plugins/become/__init__.py +31 -8
  378. ansible/plugins/become/runas.py +71 -0
  379. ansible/plugins/become/su.py +13 -8
  380. ansible/plugins/become/sudo.py +19 -0
  381. ansible/plugins/cache/__init__.py +52 -63
  382. ansible/plugins/cache/base.py +8 -0
  383. ansible/plugins/cache/jsonfile.py +10 -16
  384. ansible/plugins/cache/memory.py +6 -12
  385. ansible/plugins/callback/__init__.py +294 -201
  386. ansible/plugins/callback/default.py +99 -95
  387. ansible/plugins/callback/junit.py +44 -43
  388. ansible/plugins/callback/minimal.py +28 -25
  389. ansible/plugins/callback/oneline.py +34 -21
  390. ansible/plugins/callback/tree.py +27 -16
  391. ansible/plugins/connection/__init__.py +47 -34
  392. ansible/plugins/connection/local.py +156 -60
  393. ansible/plugins/connection/paramiko_ssh.py +34 -24
  394. ansible/plugins/connection/psrp.py +76 -165
  395. ansible/plugins/connection/ssh.py +326 -86
  396. ansible/plugins/connection/winrm.py +62 -141
  397. ansible/plugins/doc_fragments/action_common_attributes.py +14 -14
  398. ansible/plugins/doc_fragments/action_core.py +6 -6
  399. ansible/plugins/doc_fragments/backup.py +2 -2
  400. ansible/plugins/doc_fragments/checksum_common.py +27 -0
  401. ansible/plugins/doc_fragments/constructed.py +8 -4
  402. ansible/plugins/doc_fragments/decrypt.py +2 -2
  403. ansible/plugins/doc_fragments/default_callback.py +2 -2
  404. ansible/plugins/doc_fragments/files.py +2 -2
  405. ansible/plugins/doc_fragments/inventory_cache.py +2 -2
  406. ansible/plugins/doc_fragments/result_format_callback.py +2 -2
  407. ansible/plugins/doc_fragments/return_common.py +2 -2
  408. ansible/plugins/doc_fragments/template_common.py +4 -4
  409. ansible/plugins/doc_fragments/url.py +17 -1
  410. ansible/plugins/doc_fragments/url_windows.py +2 -2
  411. ansible/plugins/doc_fragments/validate.py +2 -2
  412. ansible/plugins/doc_fragments/vars_plugin_staging.py +2 -2
  413. ansible/plugins/filter/__init__.py +6 -2
  414. ansible/plugins/filter/b64decode.yml +22 -0
  415. ansible/plugins/filter/b64encode.yml +22 -0
  416. ansible/plugins/filter/bool.yml +11 -4
  417. ansible/plugins/filter/core.py +245 -120
  418. ansible/plugins/filter/encryption.py +42 -34
  419. ansible/plugins/filter/flatten.yml +3 -2
  420. ansible/plugins/filter/human_to_bytes.yml +1 -1
  421. ansible/plugins/filter/mathstuff.py +30 -37
  422. ansible/plugins/filter/password_hash.yml +8 -0
  423. ansible/plugins/filter/pow.yml +1 -1
  424. ansible/plugins/filter/regex_search.yml +1 -4
  425. ansible/plugins/filter/root.yml +1 -1
  426. ansible/plugins/filter/split.yml +1 -1
  427. ansible/plugins/filter/strftime.yml +3 -3
  428. ansible/plugins/filter/to_nice_yaml.yml +0 -4
  429. ansible/plugins/filter/to_uuid.yml +1 -1
  430. ansible/plugins/filter/to_yaml.yml +0 -4
  431. ansible/plugins/filter/unvault.yml +1 -1
  432. ansible/plugins/filter/urls.py +1 -1
  433. ansible/plugins/filter/urlsplit.py +8 -9
  434. ansible/plugins/filter/vault.yml +14 -9
  435. ansible/plugins/filter/win_basename.yml +6 -1
  436. ansible/plugins/filter/win_dirname.yml +5 -0
  437. ansible/plugins/inventory/__init__.py +107 -86
  438. ansible/plugins/inventory/advanced_host_list.py +7 -5
  439. ansible/plugins/inventory/auto.py +11 -4
  440. ansible/plugins/inventory/constructed.py +21 -24
  441. ansible/plugins/inventory/generator.py +16 -11
  442. ansible/plugins/inventory/host_list.py +7 -5
  443. ansible/plugins/inventory/ini.py +78 -44
  444. ansible/plugins/inventory/script.py +190 -120
  445. ansible/plugins/inventory/toml.py +16 -126
  446. ansible/plugins/inventory/yaml.py +10 -8
  447. ansible/plugins/list.py +72 -19
  448. ansible/plugins/loader.py +383 -198
  449. ansible/plugins/lookup/__init__.py +21 -4
  450. ansible/plugins/lookup/config.py +21 -35
  451. ansible/plugins/lookup/csvfile.py +19 -73
  452. ansible/plugins/lookup/dict.py +1 -6
  453. ansible/plugins/lookup/env.py +12 -9
  454. ansible/plugins/lookup/file.py +5 -8
  455. ansible/plugins/lookup/first_found.py +87 -55
  456. ansible/plugins/lookup/indexed_items.py +1 -10
  457. ansible/plugins/lookup/ini.py +14 -13
  458. ansible/plugins/lookup/items.py +1 -1
  459. ansible/plugins/lookup/lines.py +8 -1
  460. ansible/plugins/lookup/list.py +1 -1
  461. ansible/plugins/lookup/nested.py +2 -18
  462. ansible/plugins/lookup/password.py +5 -5
  463. ansible/plugins/lookup/pipe.py +5 -7
  464. ansible/plugins/lookup/sequence.py +18 -8
  465. ansible/plugins/lookup/subelements.py +1 -4
  466. ansible/plugins/lookup/template.py +47 -36
  467. ansible/plugins/lookup/together.py +0 -12
  468. ansible/plugins/lookup/unvault.py +1 -5
  469. ansible/plugins/lookup/url.py +4 -10
  470. ansible/plugins/lookup/vars.py +16 -24
  471. ansible/plugins/shell/__init__.py +58 -4
  472. ansible/plugins/shell/cmd.py +2 -2
  473. ansible/plugins/shell/powershell.py +106 -31
  474. ansible/plugins/shell/sh.py +13 -7
  475. ansible/plugins/strategy/__init__.py +168 -193
  476. ansible/plugins/strategy/debug.py +2 -2
  477. ansible/plugins/strategy/free.py +16 -31
  478. ansible/plugins/strategy/host_pinned.py +2 -2
  479. ansible/plugins/strategy/linear.py +41 -41
  480. ansible/plugins/terminal/__init__.py +4 -4
  481. ansible/plugins/test/__init__.py +7 -2
  482. ansible/plugins/test/core.py +75 -35
  483. ansible/plugins/test/files.py +1 -1
  484. ansible/plugins/test/finished.yml +1 -1
  485. ansible/plugins/test/mathstuff.py +3 -3
  486. ansible/plugins/test/uri.py +5 -8
  487. ansible/plugins/vars/host_group_vars.py +7 -14
  488. ansible/release.py +2 -2
  489. ansible/template/__init__.py +353 -943
  490. ansible/utils/__init__.py +0 -18
  491. ansible/utils/collection_loader/__init__.py +54 -5
  492. ansible/utils/collection_loader/_collection_config.py +5 -6
  493. ansible/utils/collection_loader/_collection_finder.py +82 -96
  494. ansible/utils/collection_loader/_collection_meta.py +15 -8
  495. ansible/utils/display.py +485 -73
  496. ansible/utils/encrypt.py +27 -19
  497. ansible/utils/fqcn.py +2 -2
  498. ansible/utils/galaxy.py +2 -2
  499. ansible/utils/hashing.py +8 -10
  500. ansible/utils/helpers.py +2 -2
  501. ansible/utils/listify.py +10 -8
  502. ansible/utils/lock.py +2 -2
  503. ansible/utils/path.py +10 -12
  504. ansible/utils/plugin_docs.py +16 -14
  505. ansible/utils/py3compat.py +2 -7
  506. ansible/utils/sentinel.py +4 -62
  507. ansible/utils/singleton.py +2 -0
  508. ansible/utils/ssh_functions.py +6 -2
  509. ansible/utils/unsafe_proxy.py +23 -332
  510. ansible/utils/vars.py +55 -8
  511. ansible/utils/version.py +2 -2
  512. ansible/vars/clean.py +5 -5
  513. ansible/vars/hostvars.py +60 -90
  514. ansible/vars/manager.py +220 -285
  515. ansible/vars/plugins.py +4 -4
  516. ansible/vars/reserved.py +13 -12
  517. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/METADATA +4 -3
  518. ansible_core-2.19.0.dist-info/RECORD +1097 -0
  519. ansible_core-2.19.0.dist-info/licenses/licenses/BSD-3-Clause.txt +28 -0
  520. ansible_test/_data/completion/docker.txt +7 -7
  521. ansible_test/_data/completion/remote.txt +6 -6
  522. ansible_test/_data/completion/windows.txt +1 -0
  523. ansible_test/_data/requirements/ansible.txt +2 -2
  524. ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -3
  525. ansible_test/_data/requirements/sanity.changelog.txt +2 -2
  526. ansible_test/_data/requirements/sanity.import.plugin.txt +2 -2
  527. ansible_test/_data/requirements/sanity.pep8.txt +1 -1
  528. ansible_test/_data/requirements/sanity.pylint.txt +5 -5
  529. ansible_test/_data/requirements/sanity.validate-modules.txt +2 -2
  530. ansible_test/_data/requirements/sanity.yamllint.txt +1 -1
  531. ansible_test/_data/requirements/units.txt +1 -0
  532. ansible_test/_internal/__init__.py +6 -0
  533. ansible_test/_internal/ansible_util.py +3 -1
  534. ansible_test/_internal/become.py +1 -0
  535. ansible_test/_internal/bootstrap.py +1 -0
  536. ansible_test/_internal/cache.py +1 -0
  537. ansible_test/_internal/cgroup.py +1 -0
  538. ansible_test/_internal/ci/__init__.py +1 -0
  539. ansible_test/_internal/ci/azp.py +1 -0
  540. ansible_test/_internal/ci/local.py +1 -0
  541. ansible_test/_internal/classification/__init__.py +1 -0
  542. ansible_test/_internal/classification/common.py +1 -0
  543. ansible_test/_internal/classification/csharp.py +1 -0
  544. ansible_test/_internal/classification/powershell.py +1 -0
  545. ansible_test/_internal/classification/python.py +1 -0
  546. ansible_test/_internal/cli/__init__.py +1 -0
  547. ansible_test/_internal/cli/actions.py +1 -0
  548. ansible_test/_internal/cli/argparsing/__init__.py +1 -0
  549. ansible_test/_internal/cli/argparsing/actions.py +1 -0
  550. ansible_test/_internal/cli/argparsing/argcompletion.py +1 -0
  551. ansible_test/_internal/cli/argparsing/parsers.py +1 -0
  552. ansible_test/_internal/cli/commands/__init__.py +11 -5
  553. ansible_test/_internal/cli/commands/coverage/__init__.py +1 -0
  554. ansible_test/_internal/cli/commands/coverage/analyze/__init__.py +1 -0
  555. ansible_test/_internal/cli/commands/coverage/analyze/targets/__init__.py +1 -0
  556. ansible_test/_internal/cli/commands/coverage/analyze/targets/combine.py +1 -0
  557. ansible_test/_internal/cli/commands/coverage/analyze/targets/expand.py +1 -0
  558. ansible_test/_internal/cli/commands/coverage/analyze/targets/filter.py +1 -0
  559. ansible_test/_internal/cli/commands/coverage/analyze/targets/generate.py +1 -0
  560. ansible_test/_internal/cli/commands/coverage/analyze/targets/missing.py +1 -0
  561. ansible_test/_internal/cli/commands/coverage/combine.py +1 -0
  562. ansible_test/_internal/cli/commands/coverage/erase.py +1 -0
  563. ansible_test/_internal/cli/commands/coverage/html.py +1 -0
  564. ansible_test/_internal/cli/commands/coverage/report.py +1 -0
  565. ansible_test/_internal/cli/commands/coverage/xml.py +1 -0
  566. ansible_test/_internal/cli/commands/env.py +1 -0
  567. ansible_test/_internal/cli/commands/integration/__init__.py +1 -0
  568. ansible_test/_internal/cli/commands/integration/network.py +1 -0
  569. ansible_test/_internal/cli/commands/integration/posix.py +1 -0
  570. ansible_test/_internal/cli/commands/integration/windows.py +1 -0
  571. ansible_test/_internal/cli/commands/sanity.py +9 -0
  572. ansible_test/_internal/cli/commands/shell.py +1 -0
  573. ansible_test/_internal/cli/commands/units.py +1 -0
  574. ansible_test/_internal/cli/compat.py +1 -0
  575. ansible_test/_internal/cli/completers.py +1 -0
  576. ansible_test/_internal/cli/converters.py +1 -0
  577. ansible_test/_internal/cli/environments.py +52 -5
  578. ansible_test/_internal/cli/epilog.py +1 -0
  579. ansible_test/_internal/cli/parsers/__init__.py +1 -0
  580. ansible_test/_internal/cli/parsers/base_argument_parsers.py +1 -0
  581. ansible_test/_internal/cli/parsers/helpers.py +1 -0
  582. ansible_test/_internal/cli/parsers/host_config_parsers.py +1 -0
  583. ansible_test/_internal/cli/parsers/key_value_parsers.py +1 -0
  584. ansible_test/_internal/cli/parsers/value_parsers.py +1 -0
  585. ansible_test/_internal/commands/__init__.py +1 -0
  586. ansible_test/_internal/commands/coverage/__init__.py +3 -2
  587. ansible_test/_internal/commands/coverage/analyze/__init__.py +1 -0
  588. ansible_test/_internal/commands/coverage/analyze/targets/__init__.py +1 -0
  589. ansible_test/_internal/commands/coverage/analyze/targets/combine.py +1 -0
  590. ansible_test/_internal/commands/coverage/analyze/targets/expand.py +1 -0
  591. ansible_test/_internal/commands/coverage/analyze/targets/filter.py +1 -0
  592. ansible_test/_internal/commands/coverage/analyze/targets/generate.py +1 -0
  593. ansible_test/_internal/commands/coverage/analyze/targets/missing.py +1 -0
  594. ansible_test/_internal/commands/coverage/combine.py +2 -1
  595. ansible_test/_internal/commands/coverage/erase.py +1 -0
  596. ansible_test/_internal/commands/coverage/html.py +1 -0
  597. ansible_test/_internal/commands/coverage/report.py +1 -0
  598. ansible_test/_internal/commands/coverage/xml.py +1 -0
  599. ansible_test/_internal/commands/env/__init__.py +2 -0
  600. ansible_test/_internal/commands/integration/__init__.py +22 -5
  601. ansible_test/_internal/commands/integration/cloud/__init__.py +1 -0
  602. ansible_test/_internal/commands/integration/cloud/acme.py +2 -1
  603. ansible_test/_internal/commands/integration/cloud/aws.py +1 -0
  604. ansible_test/_internal/commands/integration/cloud/azure.py +1 -0
  605. ansible_test/_internal/commands/integration/cloud/cs.py +1 -0
  606. ansible_test/_internal/commands/integration/cloud/digitalocean.py +1 -0
  607. ansible_test/_internal/commands/integration/cloud/galaxy.py +3 -2
  608. ansible_test/_internal/commands/integration/cloud/hcloud.py +1 -0
  609. ansible_test/_internal/commands/integration/cloud/httptester.py +3 -2
  610. ansible_test/_internal/commands/integration/cloud/nios.py +2 -1
  611. ansible_test/_internal/commands/integration/cloud/opennebula.py +1 -0
  612. ansible_test/_internal/commands/integration/cloud/openshift.py +1 -0
  613. ansible_test/_internal/commands/integration/cloud/scaleway.py +1 -0
  614. ansible_test/_internal/commands/integration/cloud/vcenter.py +1 -0
  615. ansible_test/_internal/commands/integration/cloud/vultr.py +1 -0
  616. ansible_test/_internal/commands/integration/coverage.py +8 -2
  617. ansible_test/_internal/commands/integration/filters.py +1 -0
  618. ansible_test/_internal/commands/integration/network.py +1 -0
  619. ansible_test/_internal/commands/integration/posix.py +1 -0
  620. ansible_test/_internal/commands/integration/windows.py +1 -0
  621. ansible_test/_internal/commands/sanity/__init__.py +19 -2
  622. ansible_test/_internal/commands/sanity/ansible_doc.py +1 -0
  623. ansible_test/_internal/commands/sanity/bin_symlinks.py +1 -0
  624. ansible_test/_internal/commands/sanity/compile.py +1 -0
  625. ansible_test/_internal/commands/sanity/ignores.py +1 -0
  626. ansible_test/_internal/commands/sanity/import.py +1 -0
  627. ansible_test/_internal/commands/sanity/integration_aliases.py +12 -0
  628. ansible_test/_internal/commands/sanity/pep8.py +1 -0
  629. ansible_test/_internal/commands/sanity/pslint.py +1 -0
  630. ansible_test/_internal/commands/sanity/pylint.py +25 -26
  631. ansible_test/_internal/commands/sanity/shellcheck.py +1 -0
  632. ansible_test/_internal/commands/sanity/validate_modules.py +1 -0
  633. ansible_test/_internal/commands/sanity/yamllint.py +1 -0
  634. ansible_test/_internal/commands/shell/__init__.py +44 -4
  635. ansible_test/_internal/commands/units/__init__.py +5 -1
  636. ansible_test/_internal/compat/__init__.py +1 -0
  637. ansible_test/_internal/compat/packaging.py +1 -0
  638. ansible_test/_internal/compat/yaml.py +1 -0
  639. ansible_test/_internal/completion.py +1 -0
  640. ansible_test/_internal/config.py +23 -13
  641. ansible_test/_internal/connections.py +1 -0
  642. ansible_test/_internal/constants.py +1 -0
  643. ansible_test/_internal/containers.py +1 -0
  644. ansible_test/_internal/content_config.py +1 -0
  645. ansible_test/_internal/core_ci.py +1 -0
  646. ansible_test/_internal/coverage_util.py +11 -10
  647. ansible_test/_internal/data.py +1 -0
  648. ansible_test/_internal/debugging.py +166 -0
  649. ansible_test/_internal/delegation.py +22 -13
  650. ansible_test/_internal/dev/__init__.py +1 -0
  651. ansible_test/_internal/dev/container_probe.py +1 -0
  652. ansible_test/_internal/diff.py +3 -2
  653. ansible_test/_internal/docker_util.py +2 -1
  654. ansible_test/_internal/encoding.py +1 -0
  655. ansible_test/_internal/executor.py +1 -0
  656. ansible_test/_internal/git.py +1 -0
  657. ansible_test/_internal/host_configs.py +1 -0
  658. ansible_test/_internal/host_profiles.py +260 -16
  659. ansible_test/_internal/http.py +1 -0
  660. ansible_test/_internal/init.py +1 -0
  661. ansible_test/_internal/inventory.py +39 -3
  662. ansible_test/_internal/io.py +1 -0
  663. ansible_test/_internal/metadata.py +95 -4
  664. ansible_test/_internal/payload.py +1 -0
  665. ansible_test/_internal/processes.py +80 -0
  666. ansible_test/_internal/provider/__init__.py +1 -0
  667. ansible_test/_internal/provider/layout/__init__.py +1 -0
  668. ansible_test/_internal/provider/layout/ansible.py +1 -0
  669. ansible_test/_internal/provider/layout/collection.py +1 -0
  670. ansible_test/_internal/provider/layout/unsupported.py +1 -0
  671. ansible_test/_internal/provider/source/__init__.py +1 -0
  672. ansible_test/_internal/provider/source/git.py +1 -0
  673. ansible_test/_internal/provider/source/installed.py +1 -0
  674. ansible_test/_internal/provider/source/unsupported.py +1 -0
  675. ansible_test/_internal/provider/source/unversioned.py +1 -0
  676. ansible_test/_internal/provisioning.py +11 -4
  677. ansible_test/_internal/pypi_proxy.py +6 -5
  678. ansible_test/_internal/python_requirements.py +28 -0
  679. ansible_test/_internal/ssh.py +2 -5
  680. ansible_test/_internal/target.py +9 -0
  681. ansible_test/_internal/test.py +3 -2
  682. ansible_test/_internal/thread.py +3 -1
  683. ansible_test/_internal/timeout.py +2 -1
  684. ansible_test/_internal/util.py +41 -12
  685. ansible_test/_internal/util_common.py +18 -5
  686. ansible_test/_internal/venv.py +1 -0
  687. ansible_test/_util/controller/sanity/code-smell/action-plugin-docs.py +1 -0
  688. ansible_test/_util/controller/sanity/code-smell/changelog/sphinx.py +1 -0
  689. ansible_test/_util/controller/sanity/code-smell/changelog.py +1 -0
  690. ansible_test/_util/controller/sanity/code-smell/empty-init.py +1 -0
  691. ansible_test/_util/controller/sanity/code-smell/line-endings.py +1 -0
  692. ansible_test/_util/controller/sanity/code-smell/no-assert.py +1 -0
  693. ansible_test/_util/controller/sanity/code-smell/no-get-exception.py +1 -0
  694. ansible_test/_util/controller/sanity/code-smell/no-illegal-filenames.py +1 -0
  695. ansible_test/_util/controller/sanity/code-smell/no-smart-quotes.py +1 -0
  696. ansible_test/_util/controller/sanity/code-smell/replace-urlopen.py +1 -0
  697. ansible_test/_util/controller/sanity/code-smell/runtime-metadata.py +28 -1
  698. ansible_test/_util/controller/sanity/code-smell/shebang.py +1 -0
  699. ansible_test/_util/controller/sanity/code-smell/symlinks.py +1 -0
  700. ansible_test/_util/controller/sanity/code-smell/use-argspec-type-path.py +1 -0
  701. ansible_test/_util/controller/sanity/code-smell/use-compat-six.py +1 -0
  702. ansible_test/_util/controller/sanity/integration-aliases/yaml_to_json.py +2 -1
  703. ansible_test/_util/controller/sanity/pep8/current-ignore.txt +4 -0
  704. ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +8 -5
  705. ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +8 -5
  706. ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg +8 -5
  707. ansible_test/_util/controller/sanity/pylint/config/collection.cfg +4 -5
  708. ansible_test/_util/controller/sanity/pylint/config/default.cfg +8 -7
  709. ansible_test/_util/controller/sanity/pylint/plugins/deprecated_calls.py +541 -0
  710. ansible_test/_util/controller/sanity/pylint/plugins/deprecated_comment.py +137 -0
  711. ansible_test/_util/controller/sanity/pylint/plugins/hide_unraisable.py +1 -0
  712. ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +1 -8
  713. ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +1 -8
  714. ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +55 -28
  715. ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +12 -5
  716. ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py +13 -2
  717. ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -0
  718. ansible_test/_util/controller/sanity/yamllint/yamllinter.py +35 -17
  719. ansible_test/_util/controller/tools/collection_detail.py +1 -0
  720. ansible_test/_util/controller/tools/yaml_to_json.py +2 -1
  721. ansible_test/_util/target/injector/python.py +8 -0
  722. ansible_test/_util/target/pytest/plugins/ansible_forked.py +6 -1
  723. ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py +2 -1
  724. ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py +1 -0
  725. ansible_test/_util/target/sanity/compile/compile.py +1 -0
  726. ansible_test/_util/target/sanity/import/importer.py +15 -16
  727. ansible_test/_util/target/setup/bootstrap.sh +9 -20
  728. ansible_test/_util/target/setup/probe_cgroups.py +1 -0
  729. ansible_test/_util/target/setup/quiet_pip.py +1 -0
  730. ansible_test/_util/target/setup/requirements.py +38 -36
  731. ansible_test/_util/target/tools/virtualenvcheck.py +2 -1
  732. ansible_test/_util/target/tools/yamlcheck.py +2 -1
  733. ansible/compat/selectors.py +0 -32
  734. ansible/errors/yaml_strings.py +0 -138
  735. ansible/executor/action_write_locks.py +0 -44
  736. ansible/executor/discovery/python_target.py +0 -47
  737. ansible/executor/powershell/module_powershell_wrapper.ps1 +0 -86
  738. ansible/executor/powershell/module_script_wrapper.ps1 +0 -22
  739. ansible/module_utils/compat/importlib.py +0 -26
  740. ansible/module_utils/compat/selectors.py +0 -32
  741. ansible/module_utils/pycompat24.py +0 -73
  742. ansible/parsing/yaml/constructor.py +0 -178
  743. ansible/template/native_helpers.py +0 -251
  744. ansible/template/template.py +0 -43
  745. ansible/template/vars.py +0 -77
  746. ansible/utils/native_jinja.py +0 -11
  747. ansible/vars/fact_cache.py +0 -71
  748. ansible_core-2.18.7rc1.dist-info/RECORD +0 -992
  749. ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +0 -411
  750. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/WHEEL +0 -0
  751. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/entry_points.txt +0 -0
  752. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/licenses/COPYING +0 -0
  753. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/licenses/licenses/Apache-License.txt +0 -0
  754. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/licenses/licenses/MIT-license.txt +0 -0
  755. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/licenses/licenses/PSF-license.txt +0 -0
  756. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/licenses/licenses/simplified_bsd.txt +0 -0
  757. {ansible_core-2.18.7rc1.dist-info → ansible_core-2.19.0.dist-info}/top_level.txt +0 -0
ansible/modules/git.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from __future__ import annotations
7
7
 
8
8
 
9
- DOCUMENTATION = '''
9
+ DOCUMENTATION = """
10
10
  ---
11
11
  module: git
12
12
  author:
@@ -21,6 +21,10 @@ options:
21
21
  repo:
22
22
  description:
23
23
  - git, SSH, or HTTP(S) protocol address of the git repository.
24
+ - Avoid embedding usernames and passwords within Git repository URLs.
25
+ This practice is insecure and can lead to unauthorized access to your repositories.
26
+ For secure authentication, configure SSH keys (recommended) or use a credential helper.
27
+ See Git documentation on SSH keys/credential helpers for instructions.
24
28
  type: str
25
29
  required: true
26
30
  aliases: [ name ]
@@ -236,9 +240,9 @@ notes:
236
240
  one solution is to use the option accept_hostkey. Another solution is to
237
241
  add the remote host public key in C(/etc/ssh/ssh_known_hosts) before calling
238
242
  the git module, with the following command: C(ssh-keyscan -H remote_host.com >> /etc/ssh/ssh_known_hosts)."
239
- '''
243
+ """
240
244
 
241
- EXAMPLES = '''
245
+ EXAMPLES = """
242
246
  - name: Git checkout
243
247
  ansible.builtin.git:
244
248
  repo: 'https://github.com/ansible/ansible.git'
@@ -295,9 +299,9 @@ EXAMPLES = '''
295
299
  environment:
296
300
  GIT_TERMINAL_PROMPT: 0 # reports "terminal prompts disabled" on missing password
297
301
  # or GIT_ASKPASS: /bin/true # for git before version 2.3.0, reports "Authentication failed" on missing password
298
- '''
302
+ """
299
303
 
300
- RETURN = '''
304
+ RETURN = """
301
305
  after:
302
306
  description: Last commit revision of the repository retrieved during the update.
303
307
  returned: success
@@ -313,11 +317,6 @@ remote_url_changed:
313
317
  returned: success
314
318
  type: bool
315
319
  sample: True
316
- warnings:
317
- description: List of warnings if requested features were not available due to a too old git version.
318
- returned: error
319
- type: str
320
- sample: git version is too old to fully support the depth argument. Falling back to full checkouts.
321
320
  git_dir_now:
322
321
  description: Contains the new path of .git directory if it is changed.
323
322
  returned: success
@@ -328,7 +327,7 @@ git_dir_before:
328
327
  returned: success
329
328
  type: str
330
329
  sample: /path/to/old/git/dir
331
- '''
330
+ """
332
331
 
333
332
  import filecmp
334
333
  import os
@@ -358,24 +357,23 @@ def relocate_repo(module, result, repo_dir, old_repo_dir, worktree_dir):
358
357
  dot_git_file.write('gitdir: %s' % repo_dir)
359
358
  result['git_dir_before'] = old_repo_dir
360
359
  result['git_dir_now'] = repo_dir
361
- except (IOError, OSError) as err:
360
+ except OSError as ex:
362
361
  # if we already moved the .git dir, roll it back
363
362
  if os.path.exists(repo_dir):
364
363
  shutil.move(repo_dir, old_repo_dir)
365
- module.fail_json(msg=u'Unable to move git dir. %s' % to_text(err))
364
+ raise Exception('Unable to move git dir.') from ex
366
365
 
367
366
 
368
367
  def head_splitter(headfile, remote, module=None, fail_on_error=False):
369
- '''Extract the head reference'''
368
+ """Extract the head reference"""
370
369
  # https://github.com/ansible/ansible-modules-core/pull/907
371
370
 
372
371
  res = None
373
372
  if os.path.exists(headfile):
374
373
  rawdata = None
375
374
  try:
376
- f = open(headfile, 'r')
377
- rawdata = f.readline()
378
- f.close()
375
+ with open(headfile, 'r') as f:
376
+ rawdata = f.readline()
379
377
  except Exception:
380
378
  if fail_on_error and module:
381
379
  module.fail_json(msg="Unable to read %s" % headfile)
@@ -429,11 +427,11 @@ def get_submodule_update_params(module, git_path, cwd):
429
427
 
430
428
 
431
429
  def write_ssh_wrapper(module):
432
- '''
430
+ """
433
431
  This writes an shell wrapper for ssh options to be used with git
434
432
  this is only relevant for older versions of gitthat cannot
435
433
  handle the options themselves. Returns path to the script
436
- '''
434
+ """
437
435
  try:
438
436
  # make sure we have full permission to the module_dir, which
439
437
  # may not be the case if we're sudo'ing to a non-root user
@@ -441,7 +439,7 @@ def write_ssh_wrapper(module):
441
439
  fd, wrapper_path = tempfile.mkstemp(prefix=module.tmpdir + '/')
442
440
  else:
443
441
  raise OSError
444
- except (IOError, OSError):
442
+ except OSError:
445
443
  fd, wrapper_path = tempfile.mkstemp()
446
444
 
447
445
  # use existing git_ssh/ssh_command, fallback to 'ssh'
@@ -466,10 +464,10 @@ def write_ssh_wrapper(module):
466
464
 
467
465
 
468
466
  def set_git_ssh_env(key_file, ssh_opts, git_version, module):
469
- '''
467
+ """
470
468
  use environment variables to configure git's ssh execution,
471
469
  which varies by version but this function should handle all.
472
- '''
470
+ """
473
471
 
474
472
  # initialise to existing ssh opts and/or append user provided
475
473
  if ssh_opts is None:
@@ -519,7 +517,7 @@ def set_git_ssh_env(key_file, ssh_opts, git_version, module):
519
517
 
520
518
 
521
519
  def get_version(module, git_path, dest, ref="HEAD"):
522
- ''' samples the version of the git repo '''
520
+ """ samples the version of the git repo """
523
521
 
524
522
  cmd = "%s rev-parse %s" % (git_path, ref)
525
523
  rc, stdout, stderr = module.run_command(cmd, cwd=dest)
@@ -571,7 +569,7 @@ def get_submodule_versions(git_path, module, dest, version='HEAD'):
571
569
 
572
570
  def clone(git_path, module, repo, dest, remote, depth, version, bare,
573
571
  reference, refspec, git_version_used, verify_commit, separate_git_dir, result, gpg_allowlist, single_branch):
574
- ''' makes a new git repo if it does not already exist '''
572
+ """ makes a new git repo if it does not already exist """
575
573
  dest_dirname = os.path.dirname(dest)
576
574
  try:
577
575
  os.makedirs(dest_dirname)
@@ -653,17 +651,17 @@ def has_local_mods(module, git_path, dest, bare):
653
651
 
654
652
 
655
653
  def reset(git_path, module, dest):
656
- '''
654
+ """
657
655
  Resets the index and working tree to HEAD.
658
656
  Discards any changes to tracked files in working
659
657
  tree since that commit.
660
- '''
658
+ """
661
659
  cmd = "%s reset --hard HEAD" % (git_path,)
662
660
  return module.run_command(cmd, check_rc=True, cwd=dest)
663
661
 
664
662
 
665
663
  def get_diff(module, git_path, dest, repo, remote, depth, bare, before, after):
666
- ''' Return the difference between 2 versions '''
664
+ """ Return the difference between 2 versions """
667
665
  if before is None:
668
666
  return {'prepared': '>> Newly checked out %s' % after}
669
667
  elif before != after:
@@ -817,22 +815,23 @@ def get_repo_path(dest, bare):
817
815
 
818
816
 
819
817
  def get_head_branch(git_path, module, dest, remote, bare=False):
820
- '''
818
+ """
821
819
  Determine what branch HEAD is associated with. This is partly
822
820
  taken from lib/ansible/utils/__init__.py. It finds the correct
823
821
  path to .git/HEAD and reads from that file the branch that HEAD is
824
822
  associated with. In the case of a detached HEAD, this will look
825
823
  up the branch in .git/refs/remotes/<remote>/HEAD.
826
- '''
824
+ """
827
825
  try:
828
826
  repo_path = get_repo_path(dest, bare)
829
- except (IOError, ValueError) as err:
827
+ except (OSError, ValueError) as ex:
830
828
  # No repo path found
831
829
  # ``.git`` file does not have a valid format for detached Git dir.
832
830
  module.fail_json(
833
831
  msg='Current repo does not have a valid reference to a '
834
832
  'separate Git dir or it refers to the invalid path',
835
- details=to_text(err),
833
+ details=str(ex),
834
+ exception=ex,
836
835
  )
837
836
  # Read .git/HEAD for the name of the branch.
838
837
  # If we're in a detached HEAD state, look up the branch associated with
@@ -845,7 +844,7 @@ def get_head_branch(git_path, module, dest, remote, bare=False):
845
844
 
846
845
 
847
846
  def get_remote_url(git_path, module, dest, remote):
848
- '''Return URL of remote source for repo.'''
847
+ """Return URL of remote source for repo."""
849
848
  command = [git_path, 'ls-remote', '--get-url', remote]
850
849
  (rc, out, err) = module.run_command(command, cwd=dest)
851
850
  if rc != 0:
@@ -856,7 +855,7 @@ def get_remote_url(git_path, module, dest, remote):
856
855
 
857
856
 
858
857
  def set_remote_url(git_path, module, repo, dest, remote):
859
- ''' updates repo from remote sources '''
858
+ """ updates repo from remote sources """
860
859
  # Return if remote URL isn't changing.
861
860
  remote_url = get_remote_url(git_path, module, dest, remote)
862
861
  if remote_url == repo or unfrackgitpath(remote_url) == unfrackgitpath(repo):
@@ -874,7 +873,7 @@ def set_remote_url(git_path, module, repo, dest, remote):
874
873
 
875
874
 
876
875
  def fetch(git_path, module, repo, dest, version, remote, depth, bare, refspec, git_version_used, force=False):
877
- ''' updates repo from remote sources '''
876
+ """ updates repo from remote sources """
878
877
  set_remote_url(git_path, module, repo, dest, remote)
879
878
  commands = []
880
879
 
@@ -981,7 +980,7 @@ def submodules_fetch(git_path, module, remote, track_submodules, dest):
981
980
 
982
981
 
983
982
  def submodule_update(git_path, module, dest, track_submodules, force=False):
984
- ''' init and update any submodules '''
983
+ """ init and update any submodules """
985
984
 
986
985
  # get the valid submodule params
987
986
  params = get_submodule_update_params(module, git_path, dest)
@@ -1237,7 +1236,7 @@ def main():
1237
1236
  archive_prefix = module.params['archive_prefix']
1238
1237
  separate_git_dir = module.params['separate_git_dir']
1239
1238
 
1240
- result = dict(changed=False, warnings=list())
1239
+ result = dict(changed=False)
1241
1240
 
1242
1241
  if module.params['accept_hostkey']:
1243
1242
  if ssh_opts is not None:
@@ -1292,13 +1291,14 @@ def main():
1292
1291
  if not module.check_mode:
1293
1292
  relocate_repo(module, result, separate_git_dir, repo_path, dest)
1294
1293
  repo_path = separate_git_dir
1295
- except (IOError, ValueError) as err:
1294
+ except (OSError, ValueError) as ex:
1296
1295
  # No repo path found
1297
1296
  # ``.git`` file does not have a valid format for detached Git dir.
1298
1297
  module.fail_json(
1299
1298
  msg='Current repo does not have a valid reference to a '
1300
1299
  'separate Git dir or it refers to the invalid path',
1301
- details=to_text(err),
1300
+ details=str(ex),
1301
+ exception=ex,
1302
1302
  )
1303
1303
  gitconfig = os.path.join(repo_path, 'config')
1304
1304
 
ansible/modules/group.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from __future__ import annotations
7
7
 
8
8
 
9
- DOCUMENTATION = '''
9
+ DOCUMENTATION = """
10
10
  ---
11
11
  module: group
12
12
  version_added: "0.0.2"
@@ -91,9 +91,9 @@ seealso:
91
91
  - module: ansible.windows.win_group
92
92
  author:
93
93
  - Stephen Fromm (@sfromm)
94
- '''
94
+ """
95
95
 
96
- EXAMPLES = '''
96
+ EXAMPLES = """
97
97
  - name: Ensure group "somegroup" exists
98
98
  ansible.builtin.group:
99
99
  name: somegroup
@@ -104,9 +104,9 @@ EXAMPLES = '''
104
104
  name: docker
105
105
  state: present
106
106
  gid: 1750
107
- '''
107
+ """
108
108
 
109
- RETURN = r'''
109
+ RETURN = r"""
110
110
  gid:
111
111
  description: Group ID of the group.
112
112
  returned: When O(state) is C(present)
@@ -127,7 +127,7 @@ system:
127
127
  returned: When O(state) is C(present)
128
128
  type: bool
129
129
  sample: False
130
- '''
130
+ """
131
131
 
132
132
  import grp
133
133
  import os
@@ -7,7 +7,7 @@
7
7
  from __future__ import annotations
8
8
 
9
9
 
10
- DOCUMENTATION = r'''
10
+ DOCUMENTATION = r"""
11
11
  ---
12
12
  module: group_by
13
13
  short_description: Create Ansible groups based on facts
@@ -65,9 +65,9 @@ seealso:
65
65
  - module: ansible.builtin.add_host
66
66
  author:
67
67
  - Jeroen Hoekx (@jhoekx)
68
- '''
68
+ """
69
69
 
70
- EXAMPLES = r'''
70
+ EXAMPLES = r"""
71
71
  - name: Create groups based on the machine architecture
72
72
  ansible.builtin.group_by:
73
73
  key: machine_{{ ansible_machine }}
@@ -85,4 +85,4 @@ EXAMPLES = r'''
85
85
  - name: Add all active hosts to a static group
86
86
  ansible.builtin.group_by:
87
87
  key: done
88
- '''
88
+ """
@@ -1,4 +1,3 @@
1
- #!/usr/bin/python
2
1
  # -*- coding: utf-8 -*-
3
2
 
4
3
  # Copyright: (c) 2013, Hiroaki Nakamura <hnakamur@gmail.com>
@@ -7,7 +6,7 @@
7
6
  from __future__ import annotations
8
7
 
9
8
 
10
- DOCUMENTATION = '''
9
+ DOCUMENTATION = """
11
10
  ---
12
11
  module: hostname
13
12
  author:
@@ -52,9 +51,9 @@ attributes:
52
51
  support: full
53
52
  platform:
54
53
  platforms: posix
55
- '''
54
+ """
56
55
 
57
- EXAMPLES = '''
56
+ EXAMPLES = """
58
57
  - name: Set a hostname
59
58
  ansible.builtin.hostname:
60
59
  name: web01
@@ -63,14 +62,12 @@ EXAMPLES = '''
63
62
  ansible.builtin.hostname:
64
63
  name: web01
65
64
  use: systemd
66
- '''
65
+ """
67
66
 
68
67
  import os
69
68
  import platform
70
69
  import socket
71
- import traceback
72
-
73
- import ansible.module_utils.compat.typing as t
70
+ import typing as t
74
71
 
75
72
  from ansible.module_utils.basic import (
76
73
  AnsibleModule,
@@ -209,17 +206,14 @@ class FileStrategy(BaseStrategy):
209
206
  return get_file_content(self.FILE, default='', strip=True)
210
207
  except Exception as e:
211
208
  self.module.fail_json(
212
- msg="failed to read hostname: %s" % to_native(e),
213
- exception=traceback.format_exc())
209
+ msg="failed to read hostname: %s" % to_native(e))
214
210
 
215
211
  def set_permanent_hostname(self, name):
216
212
  try:
217
213
  with open(self.FILE, 'w+') as f:
218
214
  f.write("%s\n" % name)
219
215
  except Exception as e:
220
- self.module.fail_json(
221
- msg="failed to update hostname: %s" % to_native(e),
222
- exception=traceback.format_exc())
216
+ self.module.fail_json(msg="failed to update hostname: %s" % to_native(e))
223
217
 
224
218
 
225
219
  class SLESStrategy(FileStrategy):
@@ -249,8 +243,7 @@ class RedHatStrategy(BaseStrategy):
249
243
  )
250
244
  except Exception as e:
251
245
  self.module.fail_json(
252
- msg="failed to read hostname: %s" % to_native(e),
253
- exception=traceback.format_exc())
246
+ msg="failed to read hostname: %s" % to_native(e))
254
247
 
255
248
  def set_permanent_hostname(self, name):
256
249
  try:
@@ -269,9 +262,7 @@ class RedHatStrategy(BaseStrategy):
269
262
  with open(self.NETWORK_FILE, 'w+') as f:
270
263
  f.writelines(lines)
271
264
  except Exception as e:
272
- self.module.fail_json(
273
- msg="failed to update hostname: %s" % to_native(e),
274
- exception=traceback.format_exc())
265
+ self.module.fail_json(msg="failed to update hostname: %s" % to_native(e))
275
266
 
276
267
 
277
268
  class AlpineStrategy(FileStrategy):
@@ -361,9 +352,7 @@ class OpenRCStrategy(BaseStrategy):
361
352
  if line.startswith('hostname='):
362
353
  return line[10:].strip('"')
363
354
  except Exception as e:
364
- self.module.fail_json(
365
- msg="failed to read hostname: %s" % to_native(e),
366
- exception=traceback.format_exc())
355
+ self.module.fail_json(msg="failed to read hostname: %s" % to_native(e))
367
356
 
368
357
  def set_permanent_hostname(self, name):
369
358
  try:
@@ -377,9 +366,7 @@ class OpenRCStrategy(BaseStrategy):
377
366
  with open(self.FILE, 'w') as f:
378
367
  f.write('\n'.join(lines) + '\n')
379
368
  except Exception as e:
380
- self.module.fail_json(
381
- msg="failed to update hostname: %s" % to_native(e),
382
- exception=traceback.format_exc())
369
+ self.module.fail_json(msg="failed to update hostname: %s" % to_native(e))
383
370
 
384
371
 
385
372
  class OpenBSDStrategy(FileStrategy):
@@ -481,9 +468,7 @@ class FreeBSDStrategy(BaseStrategy):
481
468
  if line.startswith('hostname='):
482
469
  return line[10:].strip('"')
483
470
  except Exception as e:
484
- self.module.fail_json(
485
- msg="failed to read hostname: %s" % to_native(e),
486
- exception=traceback.format_exc())
471
+ self.module.fail_json(msg="failed to read hostname: %s" % to_native(e))
487
472
 
488
473
  def set_permanent_hostname(self, name):
489
474
  try:
@@ -500,9 +485,7 @@ class FreeBSDStrategy(BaseStrategy):
500
485
  with open(self.FILE, 'w') as f:
501
486
  f.write('\n'.join(lines) + '\n')
502
487
  except Exception as e:
503
- self.module.fail_json(
504
- msg="failed to update hostname: %s" % to_native(e),
505
- exception=traceback.format_exc())
488
+ self.module.fail_json(msg="failed to update hostname: %s" % to_native(e))
506
489
 
507
490
 
508
491
  class DarwinStrategy(BaseStrategy):
@@ -625,8 +608,8 @@ class Hostname(object):
625
608
  self.use = module.params['use']
626
609
 
627
610
  if self.use is not None:
628
- strat = globals()['%sStrategy' % STRATS[self.use]]
629
- self.strategy = strat(module)
611
+ strategy = globals()['%sStrategy' % STRATS[self.use]]
612
+ self.strategy = strategy(module)
630
613
  elif platform.system() == 'Linux' and ServiceMgrFactCollector.is_systemd_managed(module):
631
614
  # This is Linux and systemd is active
632
615
  self.strategy = SystemdStrategy(module)
@@ -6,7 +6,7 @@
6
6
  from __future__ import annotations
7
7
 
8
8
 
9
- DOCUMENTATION = r'''
9
+ DOCUMENTATION = r"""
10
10
  ---
11
11
  author: Ansible Core Team (@ansible)
12
12
  module: import_playbook
@@ -42,9 +42,9 @@ seealso:
42
42
  - module: ansible.builtin.include_tasks
43
43
  - ref: playbooks_reuse
44
44
  description: More information related to including and importing playbooks, roles and tasks.
45
- '''
45
+ """
46
46
 
47
- EXAMPLES = r'''
47
+ EXAMPLES = r"""
48
48
  - hosts: localhost
49
49
  tasks:
50
50
  - ansible.builtin.debug:
@@ -69,8 +69,8 @@ EXAMPLES = r'''
69
69
 
70
70
  - name: This fails because I'm inside a play already
71
71
  ansible.builtin.import_playbook: stuff.yaml
72
- '''
72
+ """
73
73
 
74
- RETURN = r'''
74
+ RETURN = r"""
75
75
  # This module does not return anything except plays to execute.
76
- '''
76
+ """
@@ -5,7 +5,7 @@
5
5
  from __future__ import annotations
6
6
 
7
7
 
8
- DOCUMENTATION = r'''
8
+ DOCUMENTATION = r"""
9
9
  ---
10
10
  author: Ansible Core Team (@ansible)
11
11
  module: import_role
@@ -87,9 +87,9 @@ seealso:
87
87
  - module: ansible.builtin.include_tasks
88
88
  - ref: playbooks_reuse
89
89
  description: More information related to including and importing playbooks, roles and tasks.
90
- '''
90
+ """
91
91
 
92
- EXAMPLES = r'''
92
+ EXAMPLES = r"""
93
93
  - hosts: all
94
94
  tasks:
95
95
  - ansible.builtin.import_role:
@@ -110,8 +110,8 @@ EXAMPLES = r'''
110
110
  ansible.builtin.import_role:
111
111
  name: myrole
112
112
  when: not idontwanttorun
113
- '''
113
+ """
114
114
 
115
- RETURN = r'''
115
+ RETURN = r"""
116
116
  # This module does not return anything except tasks to execute.
117
- '''
117
+ """
@@ -6,7 +6,7 @@
6
6
  from __future__ import annotations
7
7
 
8
8
 
9
- DOCUMENTATION = r'''
9
+ DOCUMENTATION = r"""
10
10
  ---
11
11
  author: Ansible Core Team (@ansible)
12
12
  module: import_tasks
@@ -46,9 +46,9 @@ seealso:
46
46
  - module: ansible.builtin.include_tasks
47
47
  - ref: playbooks_reuse
48
48
  description: More information related to including and importing playbooks, roles and tasks.
49
- '''
49
+ """
50
50
 
51
- EXAMPLES = r'''
51
+ EXAMPLES = r"""
52
52
  - hosts: all
53
53
  tasks:
54
54
  - ansible.builtin.debug:
@@ -69,8 +69,8 @@ EXAMPLES = r'''
69
69
  - name: Apply conditional to all imported tasks
70
70
  ansible.builtin.import_tasks: stuff.yaml
71
71
  when: hostvar is defined
72
- '''
72
+ """
73
73
 
74
- RETURN = r'''
74
+ RETURN = r"""
75
75
  # This module does not return anything except tasks to execute.
76
- '''
76
+ """
@@ -6,7 +6,7 @@
6
6
  from __future__ import annotations
7
7
 
8
8
 
9
- DOCUMENTATION = r'''
9
+ DOCUMENTATION = r"""
10
10
  ---
11
11
  author: Ansible Core Team (@ansible)
12
12
  module: include_role
@@ -92,9 +92,9 @@ seealso:
92
92
  - module: ansible.builtin.include_tasks
93
93
  - ref: playbooks_reuse
94
94
  description: More information related to including and importing playbooks, roles and tasks.
95
- '''
95
+ """
96
96
 
97
- EXAMPLES = r'''
97
+ EXAMPLES = r"""
98
98
  - ansible.builtin.include_role:
99
99
  name: myrole
100
100
 
@@ -131,8 +131,8 @@ EXAMPLES = r'''
131
131
  - install
132
132
  tags:
133
133
  - always
134
- '''
134
+ """
135
135
 
136
- RETURN = r'''
136
+ RETURN = r"""
137
137
  # This module does not return anything except tasks to execute.
138
- '''
138
+ """
@@ -6,7 +6,7 @@
6
6
  from __future__ import annotations
7
7
 
8
8
 
9
- DOCUMENTATION = r'''
9
+ DOCUMENTATION = r"""
10
10
  ---
11
11
  author: Ansible Core Team (@ansible)
12
12
  module: include_tasks
@@ -50,9 +50,9 @@ seealso:
50
50
  - module: ansible.builtin.include_role
51
51
  - ref: playbooks_reuse
52
52
  description: More information related to including and importing playbooks, roles and tasks.
53
- '''
53
+ """
54
54
 
55
- EXAMPLES = r'''
55
+ EXAMPLES = r"""
56
56
  - hosts: all
57
57
  tasks:
58
58
  - ansible.builtin.debug:
@@ -91,8 +91,8 @@ EXAMPLES = r'''
91
91
  - install
92
92
  tags:
93
93
  - always
94
- '''
94
+ """
95
95
 
96
- RETURN = r'''
96
+ RETURN = r"""
97
97
  # This module does not return anything except tasks to execute.
98
- '''
98
+ """
@@ -5,7 +5,7 @@
5
5
  from __future__ import annotations
6
6
 
7
7
 
8
- DOCUMENTATION = r'''
8
+ DOCUMENTATION = r"""
9
9
  ---
10
10
  author: Allen Sanabria (@linuxdynasty)
11
11
  module: include_vars
@@ -112,9 +112,9 @@ seealso:
112
112
  - module: ansible.builtin.set_fact
113
113
  - ref: playbooks_delegation
114
114
  description: More information related to task delegation.
115
- '''
115
+ """
116
116
 
117
- EXAMPLES = r'''
117
+ EXAMPLES = r"""
118
118
  - name: Include vars of stuff.yaml into the 'stuff' variable (2.2).
119
119
  ansible.builtin.include_vars:
120
120
  file: stuff.yaml
@@ -179,9 +179,9 @@ EXAMPLES = r'''
179
179
  - 'yaml'
180
180
  - 'yml'
181
181
  - 'json'
182
- '''
182
+ """
183
183
 
184
- RETURN = r'''
184
+ RETURN = r"""
185
185
  ansible_facts:
186
186
  description: Variables that were included and their values
187
187
  returned: success
@@ -193,4 +193,4 @@ ansible_included_var_files:
193
193
  type: list
194
194
  sample: [ /path/to/file.json, /path/to/file.yaml ]
195
195
  version_added: '2.4'
196
- '''
196
+ """