ansible-core 2.15.4rc1__py3-none-any.whl → 2.16.0b2__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 (427) hide show
  1. ansible/cli/__init__.py +3 -3
  2. ansible/cli/adhoc.py +1 -1
  3. ansible/cli/arguments/option_helpers.py +15 -5
  4. ansible/cli/config.py +2 -2
  5. ansible/cli/console.py +21 -17
  6. ansible/cli/doc.py +8 -9
  7. ansible/cli/galaxy.py +60 -27
  8. ansible/cli/inventory.py +1 -1
  9. ansible/cli/playbook.py +1 -1
  10. ansible/cli/pull.py +2 -2
  11. ansible/cli/scripts/ansible_connection_cli_stub.py +1 -1
  12. ansible/cli/vault.py +11 -6
  13. ansible/collections/__init__.py +0 -29
  14. ansible/collections/list.py +23 -44
  15. ansible/config/ansible_builtin_runtime.yml +8 -4
  16. ansible/config/base.yml +34 -22
  17. ansible/config/manager.py +1 -1
  18. ansible/constants.py +3 -5
  19. ansible/errors/__init__.py +1 -1
  20. ansible/executor/interpreter_discovery.py +1 -1
  21. ansible/executor/module_common.py +39 -32
  22. ansible/executor/play_iterator.py +0 -15
  23. ansible/executor/playbook_executor.py +3 -3
  24. ansible/executor/powershell/module_manifest.py +1 -1
  25. ansible/executor/powershell/module_wrapper.ps1 +4 -1
  26. ansible/executor/process/worker.py +22 -7
  27. ansible/executor/task_executor.py +39 -40
  28. ansible/executor/task_queue_manager.py +8 -11
  29. ansible/galaxy/__init__.py +1 -1
  30. ansible/galaxy/api.py +8 -11
  31. ansible/galaxy/collection/__init__.py +17 -4
  32. ansible/galaxy/collection/concrete_artifact_manager.py +7 -2
  33. ansible/galaxy/collection/galaxy_api_proxy.py +1 -1
  34. ansible/galaxy/data/container/README.md +3 -5
  35. ansible/galaxy/dependency_resolution/__init__.py +1 -6
  36. ansible/galaxy/dependency_resolution/dataclasses.py +22 -1
  37. ansible/galaxy/dependency_resolution/providers.py +61 -69
  38. ansible/galaxy/role.py +31 -13
  39. ansible/galaxy/token.py +2 -2
  40. ansible/inventory/group.py +1 -1
  41. ansible/inventory/manager.py +1 -1
  42. ansible/module_utils/ansible_release.py +2 -2
  43. ansible/module_utils/basic.py +11 -41
  44. ansible/module_utils/common/file.py +0 -100
  45. ansible/module_utils/common/json.py +1 -1
  46. ansible/module_utils/common/locale.py +1 -1
  47. ansible/module_utils/common/text/converters.py +2 -2
  48. ansible/module_utils/common/validation.py +1 -1
  49. ansible/module_utils/compat/_selectors2.py +4 -4
  50. ansible/module_utils/compat/datetime.py +40 -0
  51. ansible/module_utils/compat/selinux.py +1 -1
  52. ansible/module_utils/compat/typing.py +1 -1
  53. ansible/module_utils/connection.py +1 -1
  54. ansible/module_utils/facts/hardware/linux.py +2 -2
  55. ansible/module_utils/facts/hardware/openbsd.py +1 -1
  56. ansible/module_utils/facts/network/linux.py +3 -3
  57. ansible/module_utils/facts/other/facter.py +8 -15
  58. ansible/module_utils/facts/sysctl.py +1 -1
  59. ansible/module_utils/facts/system/date_time.py +2 -2
  60. ansible/module_utils/facts/system/distribution.py +1 -1
  61. ansible/module_utils/facts/system/local.py +6 -2
  62. ansible/module_utils/facts/system/pkg_mgr.py +6 -1
  63. ansible/module_utils/facts/system/service_mgr.py +4 -2
  64. ansible/module_utils/parsing/convert_bool.py +1 -1
  65. ansible/module_utils/service.py +9 -6
  66. ansible/module_utils/urls.py +40 -22
  67. ansible/modules/add_host.py +2 -2
  68. ansible/modules/apt.py +48 -31
  69. ansible/modules/apt_key.py +4 -4
  70. ansible/modules/apt_repository.py +5 -5
  71. ansible/modules/assemble.py +7 -7
  72. ansible/modules/assert.py +1 -1
  73. ansible/modules/async_status.py +11 -7
  74. ansible/modules/async_wrapper.py +1 -1
  75. ansible/modules/blockinfile.py +60 -17
  76. ansible/modules/command.py +37 -15
  77. ansible/modules/copy.py +35 -30
  78. ansible/modules/cron.py +14 -14
  79. ansible/modules/deb822_repository.py +4 -3
  80. ansible/modules/debconf.py +35 -14
  81. ansible/modules/debug.py +1 -1
  82. ansible/modules/dnf.py +29 -27
  83. ansible/modules/dnf5.py +22 -22
  84. ansible/modules/dpkg_selections.py +9 -2
  85. ansible/modules/expect.py +4 -4
  86. ansible/modules/fetch.py +7 -7
  87. ansible/modules/file.py +30 -30
  88. ansible/modules/find.py +82 -22
  89. ansible/modules/gather_facts.py +6 -2
  90. ansible/modules/get_url.py +29 -29
  91. ansible/modules/getent.py +4 -4
  92. ansible/modules/git.py +27 -27
  93. ansible/modules/group.py +5 -12
  94. ansible/modules/hostname.py +21 -2
  95. ansible/modules/include_role.py +5 -5
  96. ansible/modules/include_tasks.py +2 -2
  97. ansible/modules/include_vars.py +5 -5
  98. ansible/modules/iptables.py +70 -65
  99. ansible/modules/known_hosts.py +7 -7
  100. ansible/modules/lineinfile.py +33 -33
  101. ansible/modules/meta.py +13 -13
  102. ansible/modules/package.py +8 -8
  103. ansible/modules/package_facts.py +3 -3
  104. ansible/modules/pause.py +2 -2
  105. ansible/modules/ping.py +5 -5
  106. ansible/modules/pip.py +80 -46
  107. ansible/modules/reboot.py +8 -4
  108. ansible/modules/replace.py +20 -15
  109. ansible/modules/rpm_key.py +2 -2
  110. ansible/modules/script.py +16 -10
  111. ansible/modules/service.py +26 -98
  112. ansible/modules/service_facts.py +36 -12
  113. ansible/modules/set_fact.py +2 -2
  114. ansible/modules/set_stats.py +2 -2
  115. ansible/modules/setup.py +18 -18
  116. ansible/modules/shell.py +3 -3
  117. ansible/modules/stat.py +9 -30
  118. ansible/modules/subversion.py +9 -9
  119. ansible/modules/systemd.py +20 -19
  120. ansible/modules/systemd_service.py +20 -19
  121. ansible/modules/sysvinit.py +26 -21
  122. ansible/modules/tempfile.py +5 -4
  123. ansible/modules/template.py +60 -6
  124. ansible/modules/unarchive.py +21 -18
  125. ansible/modules/uri.py +39 -39
  126. ansible/modules/user.py +81 -53
  127. ansible/modules/wait_for.py +22 -21
  128. ansible/modules/wait_for_connection.py +4 -4
  129. ansible/modules/yum.py +38 -38
  130. ansible/modules/yum_repository.py +58 -80
  131. ansible/parsing/dataloader.py +27 -27
  132. ansible/parsing/mod_args.py +1 -1
  133. ansible/parsing/plugin_docs.py +3 -3
  134. ansible/parsing/splitter.py +14 -16
  135. ansible/parsing/utils/yaml.py +1 -1
  136. ansible/parsing/vault/__init__.py +8 -6
  137. ansible/parsing/yaml/constructor.py +1 -1
  138. ansible/parsing/yaml/objects.py +1 -1
  139. ansible/playbook/__init__.py +1 -1
  140. ansible/playbook/base.py +2 -2
  141. ansible/playbook/block.py +0 -1
  142. ansible/playbook/conditional.py +40 -114
  143. ansible/playbook/helpers.py +5 -28
  144. ansible/playbook/included_file.py +8 -7
  145. ansible/playbook/play.py +1 -1
  146. ansible/playbook/play_context.py +2 -2
  147. ansible/playbook/playbook_include.py +2 -2
  148. ansible/playbook/role/__init__.py +1 -1
  149. ansible/playbook/role/include.py +1 -1
  150. ansible/playbook/role/metadata.py +1 -1
  151. ansible/playbook/role_include.py +1 -1
  152. ansible/playbook/task.py +2 -2
  153. ansible/playbook/task_include.py +1 -24
  154. ansible/plugins/__init__.py +13 -5
  155. ansible/plugins/action/__init__.py +17 -43
  156. ansible/plugins/action/add_host.py +2 -3
  157. ansible/plugins/action/assemble.py +1 -1
  158. ansible/plugins/action/assert.py +2 -1
  159. ansible/plugins/action/copy.py +2 -2
  160. ansible/plugins/action/debug.py +2 -1
  161. ansible/plugins/action/fail.py +1 -0
  162. ansible/plugins/action/fetch.py +3 -1
  163. ansible/plugins/action/gather_facts.py +37 -13
  164. ansible/plugins/action/group_by.py +1 -0
  165. ansible/plugins/action/include_vars.py +3 -2
  166. ansible/plugins/action/normal.py +3 -3
  167. ansible/plugins/action/pause.py +1 -1
  168. ansible/plugins/action/reboot.py +21 -16
  169. ansible/plugins/action/script.py +23 -8
  170. ansible/plugins/action/set_fact.py +1 -0
  171. ansible/plugins/action/set_stats.py +1 -0
  172. ansible/plugins/action/shell.py +6 -0
  173. ansible/plugins/action/template.py +1 -1
  174. ansible/plugins/action/unarchive.py +1 -1
  175. ansible/plugins/action/uri.py +1 -1
  176. ansible/plugins/action/validate_argument_spec.py +1 -0
  177. ansible/plugins/action/wait_for_connection.py +4 -4
  178. ansible/plugins/become/__init__.py +1 -1
  179. ansible/plugins/become/su.py +1 -1
  180. ansible/plugins/cache/__init__.py +1 -1
  181. ansible/plugins/callback/junit.py +1 -1
  182. ansible/plugins/callback/oneline.py +1 -1
  183. ansible/plugins/callback/tree.py +1 -1
  184. ansible/plugins/cliconf/__init__.py +2 -2
  185. ansible/plugins/connection/__init__.py +65 -37
  186. ansible/plugins/connection/local.py +9 -8
  187. ansible/plugins/connection/paramiko_ssh.py +34 -28
  188. ansible/plugins/connection/psrp.py +56 -43
  189. ansible/plugins/connection/ssh.py +67 -43
  190. ansible/plugins/connection/winrm.py +77 -30
  191. ansible/plugins/doc_fragments/constructed.py +4 -4
  192. ansible/plugins/doc_fragments/files.py +12 -12
  193. ansible/plugins/doc_fragments/inventory_cache.py +0 -6
  194. ansible/plugins/doc_fragments/result_format_callback.py +5 -5
  195. ansible/plugins/doc_fragments/shell_common.py +2 -2
  196. ansible/plugins/doc_fragments/shell_windows.py +1 -1
  197. ansible/plugins/doc_fragments/template_common.py +6 -6
  198. ansible/plugins/doc_fragments/url.py +10 -10
  199. ansible/plugins/doc_fragments/url_windows.py +15 -15
  200. ansible/plugins/doc_fragments/vars_plugin_staging.py +4 -4
  201. ansible/plugins/filter/b64decode.yml +1 -1
  202. ansible/plugins/filter/b64encode.yml +2 -2
  203. ansible/plugins/filter/bool.yml +5 -5
  204. ansible/plugins/filter/combine.yml +1 -1
  205. ansible/plugins/filter/commonpath.yml +2 -1
  206. ansible/plugins/filter/core.py +6 -8
  207. ansible/plugins/filter/dict2items.yml +11 -1
  208. ansible/plugins/filter/difference.yml +1 -0
  209. ansible/plugins/filter/encryption.py +1 -1
  210. ansible/plugins/filter/extract.yml +1 -1
  211. ansible/plugins/filter/flatten.yml +1 -1
  212. ansible/plugins/filter/from_yaml.yml +1 -1
  213. ansible/plugins/filter/from_yaml_all.yml +2 -2
  214. ansible/plugins/filter/hash.yml +1 -1
  215. ansible/plugins/filter/human_readable.yml +1 -1
  216. ansible/plugins/filter/human_to_bytes.yml +2 -2
  217. ansible/plugins/filter/intersect.yml +1 -0
  218. ansible/plugins/filter/mandatory.yml +7 -0
  219. ansible/plugins/filter/mathstuff.py +15 -17
  220. ansible/plugins/filter/normpath.yml +1 -1
  221. ansible/plugins/filter/path_join.yml +8 -1
  222. ansible/plugins/filter/realpath.yml +3 -2
  223. ansible/plugins/filter/regex_findall.yml +8 -2
  224. ansible/plugins/filter/regex_replace.yml +9 -3
  225. ansible/plugins/filter/regex_search.yml +8 -2
  226. ansible/plugins/filter/relpath.yml +2 -2
  227. ansible/plugins/filter/root.yml +1 -1
  228. ansible/plugins/filter/splitext.yml +1 -1
  229. ansible/plugins/filter/subelements.yml +2 -2
  230. ansible/plugins/filter/symmetric_difference.yml +1 -0
  231. ansible/plugins/filter/ternary.yml +5 -5
  232. ansible/plugins/filter/to_json.yml +7 -7
  233. ansible/plugins/filter/to_nice_json.yml +5 -5
  234. ansible/plugins/filter/to_yaml.yml +2 -2
  235. ansible/plugins/filter/type_debug.yml +1 -1
  236. ansible/plugins/filter/union.yml +1 -0
  237. ansible/plugins/filter/unvault.yml +2 -2
  238. ansible/plugins/filter/urldecode.yml +13 -32
  239. ansible/plugins/filter/urlsplit.py +1 -1
  240. ansible/plugins/filter/vault.yml +1 -1
  241. ansible/plugins/filter/zip.yml +1 -1
  242. ansible/plugins/filter/zip_longest.yml +1 -1
  243. ansible/plugins/inventory/__init__.py +1 -1
  244. ansible/plugins/inventory/advanced_host_list.py +1 -1
  245. ansible/plugins/inventory/constructed.py +2 -2
  246. ansible/plugins/inventory/host_list.py +1 -1
  247. ansible/plugins/inventory/ini.py +6 -3
  248. ansible/plugins/inventory/script.py +8 -2
  249. ansible/plugins/inventory/toml.py +1 -1
  250. ansible/plugins/inventory/yaml.py +1 -1
  251. ansible/plugins/list.py +21 -17
  252. ansible/plugins/loader.py +66 -88
  253. ansible/plugins/lookup/__init__.py +1 -1
  254. ansible/plugins/lookup/config.py +16 -6
  255. ansible/plugins/lookup/csvfile.py +7 -4
  256. ansible/plugins/lookup/env.py +1 -1
  257. ansible/plugins/lookup/file.py +5 -2
  258. ansible/plugins/lookup/fileglob.py +5 -2
  259. ansible/plugins/lookup/first_found.py +20 -14
  260. ansible/plugins/lookup/ini.py +6 -3
  261. ansible/plugins/lookup/lines.py +2 -1
  262. ansible/plugins/lookup/password.py +7 -7
  263. ansible/plugins/lookup/pipe.py +1 -0
  264. ansible/plugins/lookup/random_choice.py +2 -2
  265. ansible/plugins/lookup/sequence.py +1 -1
  266. ansible/plugins/lookup/subelements.py +2 -2
  267. ansible/plugins/lookup/template.py +4 -1
  268. ansible/plugins/lookup/unvault.py +4 -1
  269. ansible/plugins/lookup/url.py +6 -6
  270. ansible/plugins/lookup/varnames.py +1 -1
  271. ansible/plugins/netconf/__init__.py +3 -3
  272. ansible/plugins/shell/__init__.py +1 -1
  273. ansible/plugins/shell/cmd.py +7 -7
  274. ansible/plugins/shell/powershell.py +1 -1
  275. ansible/plugins/strategy/__init__.py +8 -10
  276. ansible/plugins/strategy/free.py +1 -1
  277. ansible/plugins/strategy/linear.py +3 -3
  278. ansible/plugins/terminal/__init__.py +2 -2
  279. ansible/plugins/test/abs.yml +1 -1
  280. ansible/plugins/test/all.yml +1 -1
  281. ansible/plugins/test/any.yml +1 -1
  282. ansible/plugins/test/change.yml +2 -2
  283. ansible/plugins/test/changed.yml +2 -2
  284. ansible/plugins/test/contains.yml +1 -1
  285. ansible/plugins/test/core.py +1 -1
  286. ansible/plugins/test/directory.yml +1 -1
  287. ansible/plugins/test/exists.yml +3 -2
  288. ansible/plugins/test/failed.yml +2 -2
  289. ansible/plugins/test/failure.yml +2 -2
  290. ansible/plugins/test/falsy.yml +2 -2
  291. ansible/plugins/test/file.yml +1 -1
  292. ansible/plugins/test/finished.yml +2 -2
  293. ansible/plugins/test/is_abs.yml +1 -1
  294. ansible/plugins/test/is_dir.yml +1 -1
  295. ansible/plugins/test/is_file.yml +1 -1
  296. ansible/plugins/test/is_link.yml +1 -1
  297. ansible/plugins/test/is_mount.yml +1 -1
  298. ansible/plugins/test/is_same_file.yml +1 -1
  299. ansible/plugins/test/isnan.yml +1 -1
  300. ansible/plugins/test/issubset.yml +1 -2
  301. ansible/plugins/test/issuperset.yml +1 -2
  302. ansible/plugins/test/link.yml +1 -1
  303. ansible/plugins/test/link_exists.yml +1 -1
  304. ansible/plugins/test/match.yml +2 -2
  305. ansible/plugins/test/mount.yml +1 -1
  306. ansible/plugins/test/nan.yml +1 -1
  307. ansible/plugins/test/reachable.yml +2 -2
  308. ansible/plugins/test/regex.yml +1 -1
  309. ansible/plugins/test/same_file.yml +1 -1
  310. ansible/plugins/test/search.yml +2 -2
  311. ansible/plugins/test/skip.yml +3 -3
  312. ansible/plugins/test/skipped.yml +3 -3
  313. ansible/plugins/test/started.yml +2 -2
  314. ansible/plugins/test/subset.yml +1 -2
  315. ansible/plugins/test/succeeded.yml +2 -2
  316. ansible/plugins/test/success.yml +2 -2
  317. ansible/plugins/test/successful.yml +2 -2
  318. ansible/plugins/test/superset.yml +1 -2
  319. ansible/plugins/test/truthy.yml +3 -3
  320. ansible/plugins/test/unreachable.yml +2 -2
  321. ansible/plugins/test/uri.yml +1 -1
  322. ansible/plugins/test/url.yml +1 -1
  323. ansible/plugins/test/urn.yml +1 -1
  324. ansible/plugins/test/vault_encrypted.yml +1 -1
  325. ansible/plugins/test/version.yml +7 -7
  326. ansible/plugins/test/version_compare.yml +7 -7
  327. ansible/plugins/vars/host_group_vars.py +1 -1
  328. ansible/release.py +2 -2
  329. ansible/template/__init__.py +24 -26
  330. ansible/template/native_helpers.py +1 -1
  331. ansible/template/vars.py +1 -1
  332. ansible/utils/_junit_xml.py +1 -1
  333. ansible/utils/cmd_functions.py +1 -1
  334. ansible/utils/collection_loader/_collection_finder.py +12 -1
  335. ansible/utils/display.py +113 -62
  336. ansible/utils/encrypt.py +11 -14
  337. ansible/utils/hashing.py +1 -1
  338. ansible/utils/jsonrpc.py +1 -1
  339. ansible/utils/path.py +1 -1
  340. ansible/utils/plugin_docs.py +1 -1
  341. ansible/utils/py3compat.py +1 -1
  342. ansible/utils/shlex.py +2 -10
  343. ansible/utils/ssh_functions.py +5 -4
  344. ansible/utils/unicode.py +1 -1
  345. ansible/utils/unsafe_proxy.py +1 -1
  346. ansible/utils/vars.py +4 -29
  347. ansible/vars/hostvars.py +1 -2
  348. ansible/vars/manager.py +13 -9
  349. ansible/vars/plugins.py +2 -2
  350. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/COPYING +4 -5
  351. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/METADATA +2 -4
  352. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/RECORD +424 -425
  353. ansible_test/_data/completion/docker.txt +9 -9
  354. ansible_test/_data/completion/remote.txt +4 -7
  355. ansible_test/_data/completion/windows.txt +0 -2
  356. ansible_test/_data/requirements/ansible-test.txt +2 -1
  357. ansible_test/_data/requirements/ansible.txt +0 -3
  358. ansible_test/_data/requirements/constraints.txt +0 -2
  359. ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -5
  360. ansible_test/_data/requirements/sanity.changelog.in +1 -2
  361. ansible_test/_data/requirements/sanity.changelog.txt +4 -6
  362. ansible_test/_data/requirements/sanity.import.plugin.txt +2 -4
  363. ansible_test/_data/requirements/sanity.import.txt +1 -3
  364. ansible_test/_data/requirements/sanity.integration-aliases.txt +1 -3
  365. ansible_test/_data/requirements/sanity.mypy.txt +12 -12
  366. ansible_test/_data/requirements/sanity.pep8.txt +1 -1
  367. ansible_test/_data/requirements/sanity.pylint.txt +6 -12
  368. ansible_test/_data/requirements/sanity.runtime-metadata.txt +1 -3
  369. ansible_test/_data/requirements/sanity.validate-modules.in +1 -1
  370. ansible_test/_data/requirements/sanity.validate-modules.txt +3 -5
  371. ansible_test/_data/requirements/sanity.yamllint.txt +3 -5
  372. ansible_test/_data/requirements/units.txt +0 -1
  373. ansible_test/_internal/ci/azp.py +4 -4
  374. ansible_test/_internal/cli/environments.py +0 -13
  375. ansible_test/_internal/commands/coverage/analyze/targets/__init__.py +4 -4
  376. ansible_test/_internal/commands/coverage/combine.py +1 -1
  377. ansible_test/_internal/commands/integration/cloud/acme.py +6 -8
  378. ansible_test/_internal/commands/integration/cloud/cs.py +4 -9
  379. ansible_test/_internal/commands/integration/cloud/galaxy.py +103 -96
  380. ansible_test/_internal/commands/integration/cloud/httptester.py +0 -3
  381. ansible_test/_internal/commands/integration/cloud/nios.py +7 -9
  382. ansible_test/_internal/commands/integration/cloud/openshift.py +2 -7
  383. ansible_test/_internal/commands/integration/cloud/vcenter.py +11 -95
  384. ansible_test/_internal/commands/sanity/__init__.py +10 -0
  385. ansible_test/_internal/commands/sanity/import.py +8 -2
  386. ansible_test/_internal/commands/sanity/pylint.py +27 -1
  387. ansible_test/_internal/commands/units/__init__.py +2 -1
  388. ansible_test/_internal/config.py +0 -7
  389. ansible_test/_internal/containers.py +11 -56
  390. ansible_test/_internal/core_ci.py +0 -7
  391. ansible_test/_internal/coverage_util.py +8 -3
  392. ansible_test/_internal/delegation.py +0 -1
  393. ansible_test/_internal/diff.py +1 -1
  394. ansible_test/_internal/docker_util.py +9 -2
  395. ansible_test/_internal/host_profiles.py +6 -6
  396. ansible_test/_internal/http.py +1 -1
  397. ansible_test/_internal/junit_xml.py +1 -1
  398. ansible_test/_internal/pypi_proxy.py +1 -1
  399. ansible_test/_internal/python_requirements.py +3 -8
  400. ansible_test/_internal/util.py +1 -6
  401. ansible_test/_util/controller/sanity/code-smell/no-get-exception.json +4 -0
  402. ansible_test/_util/controller/sanity/code-smell/replace-urlopen.json +4 -0
  403. ansible_test/_util/controller/sanity/code-smell/use-compat-six.json +4 -0
  404. ansible_test/_util/controller/sanity/mypy/ansible-core.ini +3 -0
  405. ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +2 -0
  406. ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +0 -1
  407. ansible_test/_util/controller/sanity/pylint/config/collection.cfg +1 -0
  408. ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +172 -10
  409. ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +13 -2
  410. ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +7 -1
  411. ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +6 -6
  412. ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +1 -1
  413. ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -1
  414. ansible_test/_util/controller/sanity/yamllint/yamllinter.py +3 -3
  415. ansible_test/_util/controller/tools/collection_detail.py +2 -2
  416. ansible_test/_util/target/common/constants.py +2 -2
  417. ansible_test/_util/target/pytest/plugins/ansible_forked.py +103 -0
  418. ansible_test/_util/target/sanity/import/importer.py +0 -8
  419. ansible_test/_util/target/setup/bootstrap.sh +36 -16
  420. ansible_test/_util/target/setup/quiet_pip.py +0 -4
  421. ansible/modules/_include.py +0 -80
  422. ansible_test/_internal/commands/integration/cloud/foreman.py +0 -102
  423. ansible_test/_util/target/setup/ConfigureRemotingForAnsible.ps1 +0 -435
  424. {ansible_core-2.15.4rc1.data → ansible_core-2.16.0b2.data}/scripts/ansible-test +0 -0
  425. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/WHEEL +0 -0
  426. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/entry_points.txt +0 -0
  427. {ansible_core-2.15.4rc1.dist-info → ansible_core-2.16.0b2.dist-info}/top_level.txt +0 -0
@@ -10,11 +10,18 @@ DOCUMENTATION:
10
10
  description: Mandatory expression.
11
11
  type: raw
12
12
  required: true
13
+ msg:
14
+ description: The customized message that is printed when the given variable is not defined.
15
+ type: str
16
+ required: false
13
17
  EXAMPLES: |
14
18
 
15
19
  # results in a Filter Error
16
20
  {{ notdefined | mandatory }}
17
21
 
22
+ # print a custom error message
23
+ {{ notdefined | mandatory(msg='This variable is required.') }}
24
+
18
25
  RETURN:
19
26
  _value:
20
27
  description: The input if defined, otherwise an error.
@@ -18,21 +18,19 @@
18
18
  # You should have received a copy of the GNU General Public License
19
19
  # along with Ansible. If not, see <http://www.gnu.org/licenses/>.
20
20
 
21
- # Make coding more python3-ish
22
- from __future__ import (absolute_import, division, print_function)
23
- __metaclass__ = type
21
+ from __future__ import annotations
24
22
 
25
23
  import itertools
26
24
  import math
27
25
 
28
- from collections.abc import Hashable, Mapping, Iterable
26
+ from collections.abc import Mapping, Iterable
29
27
 
30
28
  from jinja2.filters import pass_environment
31
29
 
32
30
  from ansible.errors import AnsibleFilterError, AnsibleFilterTypeError
33
31
  from ansible.module_utils.common.text import formatters
34
32
  from ansible.module_utils.six import binary_type, text_type
35
- from ansible.module_utils._text import to_native, to_text
33
+ from ansible.module_utils.common.text.converters import to_native, to_text
36
34
  from ansible.utils.display import Display
37
35
 
38
36
  try:
@@ -84,27 +82,27 @@ def unique(environment, a, case_sensitive=None, attribute=None):
84
82
 
85
83
  @pass_environment
86
84
  def intersect(environment, a, b):
87
- if isinstance(a, Hashable) and isinstance(b, Hashable):
88
- c = set(a) & set(b)
89
- else:
85
+ try:
86
+ c = list(set(a) & set(b))
87
+ except TypeError:
90
88
  c = unique(environment, [x for x in a if x in b], True)
91
89
  return c
92
90
 
93
91
 
94
92
  @pass_environment
95
93
  def difference(environment, a, b):
96
- if isinstance(a, Hashable) and isinstance(b, Hashable):
97
- c = set(a) - set(b)
98
- else:
94
+ try:
95
+ c = list(set(a) - set(b))
96
+ except TypeError:
99
97
  c = unique(environment, [x for x in a if x not in b], True)
100
98
  return c
101
99
 
102
100
 
103
101
  @pass_environment
104
102
  def symmetric_difference(environment, a, b):
105
- if isinstance(a, Hashable) and isinstance(b, Hashable):
106
- c = set(a) ^ set(b)
107
- else:
103
+ try:
104
+ c = list(set(a) ^ set(b))
105
+ except TypeError:
108
106
  isect = intersect(environment, a, b)
109
107
  c = [x for x in union(environment, a, b) if x not in isect]
110
108
  return c
@@ -112,9 +110,9 @@ def symmetric_difference(environment, a, b):
112
110
 
113
111
  @pass_environment
114
112
  def union(environment, a, b):
115
- if isinstance(a, Hashable) and isinstance(b, Hashable):
116
- c = set(a) | set(b)
117
- else:
113
+ try:
114
+ c = list(set(a) | set(b))
115
+ except TypeError:
118
116
  c = unique(environment, a + b, True)
119
117
  return c
120
118
 
@@ -15,7 +15,7 @@ DOCUMENTATION:
15
15
  plugin_type: filter
16
16
  EXAMPLES: |
17
17
 
18
- # To get a normalized path (ex. '/foo/bar') from the path (ex. '/foo//bar')
18
+ # To get a normalized path (for example - '/foo/bar') from the path (for example - '/foo//bar')
19
19
  {{ path | normpath }}
20
20
 
21
21
  RETURN:
@@ -6,6 +6,8 @@ DOCUMENTATION:
6
6
  positional: _input
7
7
  description:
8
8
  - Returns a path obtained by joining one or more path components.
9
+ - If a path component is an absolute path, then all previous components
10
+ are ignored and joining continues from the absolute path. See examples for details.
9
11
  options:
10
12
  _input:
11
13
  description: A path, or a list of paths.
@@ -21,9 +23,14 @@ EXAMPLES: |
21
23
  # equivalent to '/etc/subdir/{{filename}}'
22
24
  wheremyfile: "{{ ['/etc', 'subdir', filename] | path_join }}"
23
25
 
24
- # trustme => '/etc/apt/trusted.d/mykey.gpgp'
26
+ # trustme => '/etc/apt/trusted.d/mykey.gpg'
25
27
  trustme: "{{ ['/etc', 'apt', 'trusted.d', 'mykey.gpg'] | path_join }}"
26
28
 
29
+ # If one of the paths is absolute, then path_join ignores all previous path components
30
+ # If backup_dir == '/tmp' and backup_file == '/sample/baz.txt', the result is '/sample/baz.txt'
31
+ # backup_path => "/sample/baz.txt"
32
+ backup_path: "{{ ('/etc', backup_dir, backup_file) | path_join }}"
33
+
27
34
  RETURN:
28
35
  _value:
29
36
  description: The concatenated path.
@@ -4,8 +4,8 @@ DOCUMENTATION:
4
4
  version_added: "1.8"
5
5
  short_description: Turn path into real path
6
6
  description:
7
- - Resolves/follows symliknks to return the 'real path' from a given path.
8
- - Filters alwasy run on controller so this path is resolved using the controller's filesystem.
7
+ - Resolves/follows symlinks to return the 'real path' from a given path.
8
+ - Filters always run on the controller so this path is resolved using the controller's filesystem.
9
9
  options:
10
10
  _input:
11
11
  description: A path.
@@ -13,6 +13,7 @@ DOCUMENTATION:
13
13
  required: true
14
14
  EXAMPLES: |
15
15
 
16
+ # realpath => /usr/bin/somebinary
16
17
  realpath: {{ '/path/to/synlink' | realpath }}
17
18
 
18
19
  RETURN:
@@ -14,11 +14,11 @@ DOCUMENTATION:
14
14
  description: Regular expression string that defines the match.
15
15
  type: str
16
16
  multiline:
17
- description: Search across line endings if C(True), do not if otherwise.
17
+ description: Search across line endings if V(True), do not if otherwise.
18
18
  type: bool
19
19
  default: no
20
20
  ignorecase:
21
- description: Force the search to be case insensitive if C(True), case sensitive otherwise.
21
+ description: Force the search to be case insensitive if V(True), case sensitive otherwise.
22
22
  type: bool
23
23
  default: no
24
24
 
@@ -27,6 +27,12 @@ EXAMPLES: |
27
27
  # all_pirates => ['CAR', 'tar', 'bar']
28
28
  all_pirates: "{{ 'CAR\ntar\nfoo\nbar\n' | regex_findall('^.ar$', multiline=True, ignorecase=True) }}"
29
29
 
30
+ # Using inline regex flags instead of passing options to filter
31
+ # See https://docs.python.org/3/library/re.html for more information
32
+ # on inline regex flags
33
+ # all_pirates => ['CAR', 'tar', 'bar']
34
+ all_pirates: "{{ 'CAR\ntar\nfoo\nbar\n' | regex_findall('(?im)^.ar$') }}"
35
+
30
36
  # get_ips => ['8.8.8.8', '8.8.4.4']
31
37
  get_ips: "{{ 'Some DNS servers are 8.8.8.8 and 8.8.4.4' | regex_findall('\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b') }}"
32
38
 
@@ -5,7 +5,7 @@ DOCUMENTATION:
5
5
  description:
6
6
  - Replace a substring defined by a regular expression with another defined by another regular expression based on the first match.
7
7
  notes:
8
- - Maps to Python's C(re.replace).
8
+ - Maps to Python's C(re.sub).
9
9
  positional: _input, _regex_match, _regex_replace
10
10
  options:
11
11
  _input:
@@ -21,11 +21,11 @@ DOCUMENTATION:
21
21
  type: int
22
22
  required: true
23
23
  multiline:
24
- description: Search across line endings if C(True), do not if otherwise.
24
+ description: Search across line endings if V(True), do not if otherwise.
25
25
  type: bool
26
26
  default: no
27
27
  ignorecase:
28
- description: Force the search to be case insensitive if C(True), case sensitive otherwise.
28
+ description: Force the search to be case insensitive if V(True), case sensitive otherwise.
29
29
  type: bool
30
30
  default: no
31
31
 
@@ -40,6 +40,12 @@ EXAMPLES: |
40
40
  # piratecomment => '#CAR\n#tar\nfoo\n#bar\n'
41
41
  piratecomment: "{{ 'CAR\ntar\nfoo\nbar\n' | regex_replace('^(.ar)$', '#\\1', multiline=True, ignorecase=True) }}"
42
42
 
43
+ # Using inline regex flags instead of passing options to filter
44
+ # See https://docs.python.org/3/library/re.html for more information
45
+ # on inline regex flags
46
+ # piratecomment => '#CAR\n#tar\nfoo\n#bar\n'
47
+ piratecomment: "{{ 'CAR\ntar\nfoo\nbar\n' | regex_replace('(?im)^(.ar)$', '#\\1') }}"
48
+
43
49
  RETURN:
44
50
  _value:
45
51
  description: String with substitution (or original if no match).
@@ -16,11 +16,11 @@ DOCUMENTATION:
16
16
  description: Regular expression string that defines the match.
17
17
  type: str
18
18
  multiline:
19
- description: Search across line endings if C(True), do not if otherwise.
19
+ description: Search across line endings if V(True), do not if otherwise.
20
20
  type: bool
21
21
  default: no
22
22
  ignorecase:
23
- description: Force the search to be case insensitive if C(True), case sensitive otherwise.
23
+ description: Force the search to be case insensitive if V(True), case sensitive otherwise.
24
24
  type: bool
25
25
  default: no
26
26
 
@@ -29,6 +29,12 @@ EXAMPLES: |
29
29
  # db => 'database42'
30
30
  db: "{{ 'server1/database42' | regex_search('database[0-9]+') }}"
31
31
 
32
+ # Using inline regex flags instead of passing options to filter
33
+ # See https://docs.python.org/3/library/re.html for more information
34
+ # on inline regex flags
35
+ # server => 'sErver1'
36
+ db: "{{ 'sErver1/database42' | regex_search('(?i)server([0-9]+)') }}"
37
+
32
38
  # drinkat => 'BAR'
33
39
  drinkat: "{{ 'foo\nBAR' | regex_search('^bar', multiline=True, ignorecase=True) }}"
34
40
 
@@ -5,8 +5,8 @@ DOCUMENTATION:
5
5
  short_description: Make a path relative
6
6
  positional: _input, start
7
7
  description:
8
- - Converts the given path to a relative path from the I(start),
9
- or relative to the directory given in I(start).
8
+ - Converts the given path to a relative path from the O(start),
9
+ or relative to the directory given in O(start).
10
10
  options:
11
11
  _input:
12
12
  description: A path.
@@ -18,7 +18,7 @@ DOCUMENTATION:
18
18
  EXAMPLES: |
19
19
 
20
20
  # => 8
21
- fiveroot: "{{ 32768 | root (5) }}"
21
+ fiveroot: "{{ 32768 | root(5) }}"
22
22
 
23
23
  # 2
24
24
  sqrt_of_2: "{{ 4 | root }}"
@@ -21,7 +21,7 @@ EXAMPLES: |
21
21
  file_n_ext: "{{ 'ansible.cfg' | splitext }}"
22
22
 
23
23
  # hoax => ['/etc/hoasdf', '']
24
- hoax: '{{ "/etc//hoasdf/"|splitext }}'
24
+ hoax: '{{ "/etc//hoasdf/" | splitext }}'
25
25
 
26
26
  RETURN:
27
27
  _value:
@@ -4,7 +4,7 @@ DOCUMENTATION:
4
4
  short_description: returns a product of a list and its elements
5
5
  positional: _input, _subelement, skip_missing
6
6
  description:
7
- - This produces a product of an object and the subelement values of that object, similar to the subelements lookup. This lets you specify individual subelements to use in a template I(_input).
7
+ - This produces a product of an object and the subelement values of that object, similar to the subelements lookup. This lets you specify individual subelements to use in a template O(_input).
8
8
  options:
9
9
  _input:
10
10
  description: Original list.
@@ -16,7 +16,7 @@ DOCUMENTATION:
16
16
  type: str
17
17
  required: yes
18
18
  skip_missing:
19
- description: If C(True), ignore missing subelements, otherwise missing subelements generate an error.
19
+ description: If V(True), ignore missing subelements, otherwise missing subelements generate an error.
20
20
  type: bool
21
21
  default: no
22
22
 
@@ -5,6 +5,7 @@ DOCUMENTATION:
5
5
  short_description: different items from two lists
6
6
  description:
7
7
  - Provide a unique list of all the elements unique to each list.
8
+ - Items in the resulting list are returned in arbitrary order.
8
9
  options:
9
10
  _input:
10
11
  description: A list.
@@ -4,22 +4,22 @@ DOCUMENTATION:
4
4
  version_added: '1.9'
5
5
  short_description: Ternary operation filter
6
6
  description:
7
- - Return the first value if the input is C(True), the second if C(False).
7
+ - Return the first value if the input is V(True), the second if V(False).
8
8
  positional: true_val, false_val
9
9
  options:
10
10
  _input:
11
- description: A boolean expression, must evaluate to C(True) or C(False).
11
+ description: A boolean expression, must evaluate to V(True) or V(False).
12
12
  type: bool
13
13
  required: true
14
14
  true_val:
15
- description: Value to return if the input is C(True).
15
+ description: Value to return if the input is V(True).
16
16
  type: any
17
17
  required: true
18
18
  false_val:
19
- description: Value to return if the input is C(False).
19
+ description: Value to return if the input is V(False).
20
20
  type: any
21
21
  none_val:
22
- description: Value to return if the input is C(None). If not set, C(None) will be treated as C(False).
22
+ description: Value to return if the input is V(None). If not set, V(None) will be treated as V(False).
23
23
  type: any
24
24
  version_added: '2.8'
25
25
  notes:
@@ -23,8 +23,8 @@ DOCUMENTATION:
23
23
  default: True
24
24
  version_added: '2.9'
25
25
  allow_nan:
26
- description: When C(False), strict adherence to float value limits of the JSON specifications, so C(nan), C(inf) and C(-inf) values will produce errors.
27
- When C(True), JavaScript equivalents will be used (C(NaN), C(Infinity), C(-Infinity)).
26
+ description: When V(False), strict adherence to float value limits of the JSON specifications, so C(nan), C(inf) and C(-inf) values will produce errors.
27
+ When V(True), JavaScript equivalents will be used (C(NaN), C(Infinity), C(-Infinity)).
28
28
  default: True
29
29
  type: bool
30
30
  check_circular:
@@ -41,11 +41,11 @@ DOCUMENTATION:
41
41
  type: integer
42
42
  separators:
43
43
  description: The C(item) and C(key) separator to be used in the serialized output,
44
- default may change depending on I(indent) and Python version.
44
+ default may change depending on O(indent) and Python version.
45
45
  default: "(', ', ': ')"
46
46
  type: tuple
47
47
  skipkeys:
48
- description: If C(True), keys that are not basic Python types will be skipped.
48
+ description: If V(True), keys that are not basic Python types will be skipped.
49
49
  default: False
50
50
  type: bool
51
51
  sort_keys:
@@ -53,15 +53,15 @@ DOCUMENTATION:
53
53
  default: False
54
54
  type: bool
55
55
  notes:
56
- - Both I(vault_to_text) and I(preprocess_unsafe) defaulted to C(False) between Ansible 2.9 and 2.12.
56
+ - Both O(vault_to_text) and O(preprocess_unsafe) defaulted to V(False) between Ansible 2.9 and 2.12.
57
57
  - 'These parameters to C(json.dumps) will be ignored, as they are overridden internally: I(cls), I(default)'
58
58
 
59
59
  EXAMPLES: |
60
60
  # dump variable in a template to create a JSON document
61
- {{ docker_config|to_json }}
61
+ {{ docker_config | to_json }}
62
62
 
63
63
  # same as above but 'prettier' (equivalent to to_nice_json filter)
64
- {{ docker_config|to_json(indent=4, sort_keys=True) }}
64
+ {{ docker_config | to_json(indent=4, sort_keys=True) }}
65
65
 
66
66
  RETURN:
67
67
  _value:
@@ -23,8 +23,8 @@ DOCUMENTATION:
23
23
  default: True
24
24
  version_added: '2.9'
25
25
  allow_nan:
26
- description: When C(False), strict adherence to float value limits of the JSON specification, so C(nan), C(inf) and C(-inf) values will produce errors.
27
- When C(True), JavaScript equivalents will be used (C(NaN), C(Infinity), C(-Infinity)).
26
+ description: When V(False), strict adherence to float value limits of the JSON specification, so C(nan), C(inf) and C(-inf) values will produce errors.
27
+ When V(True), JavaScript equivalents will be used (C(NaN), C(Infinity), C(-Infinity)).
28
28
  default: True
29
29
  type: bool
30
30
  check_circular:
@@ -36,16 +36,16 @@ DOCUMENTATION:
36
36
  default: True
37
37
  type: bool
38
38
  skipkeys:
39
- description: If C(True), keys that are not basic Python types will be skipped.
39
+ description: If V(True), keys that are not basic Python types will be skipped.
40
40
  default: False
41
41
  type: bool
42
42
  notes:
43
- - Both I(vault_to_text) and I(preprocess_unsafe) defaulted to C(False) between Ansible 2.9 and 2.12.
43
+ - Both O(vault_to_text) and O(preprocess_unsafe) defaulted to V(False) between Ansible 2.9 and 2.12.
44
44
  - 'These parameters to C(json.dumps) will be ignored, they are overridden for internal use: I(cls), I(default), I(indent), I(separators), I(sort_keys).'
45
45
 
46
46
  EXAMPLES: |
47
47
  # dump variable in a template to create a nicely formatted JSON document
48
- {{ docker_config|to_nice_json }}
48
+ {{ docker_config | to_nice_json }}
49
49
 
50
50
 
51
51
  RETURN:
@@ -41,10 +41,10 @@ DOCUMENTATION:
41
41
 
42
42
  EXAMPLES: |
43
43
  # dump variable in a template to create a YAML document
44
- {{ github_workflow |to_yaml}}
44
+ {{ github_workflow | to_yaml }}
45
45
 
46
46
  # same as above but 'prettier' (equivalent to to_nice_yaml filter)
47
- {{ docker_config|to_yaml(indent=4) }}
47
+ {{ docker_config | to_yaml(indent=4) }}
48
48
 
49
49
  RETURN:
50
50
  _value:
@@ -16,5 +16,5 @@ EXAMPLES: |
16
16
 
17
17
  RETURN:
18
18
  _value:
19
- description: The Python 'type' of the I(_input) provided.
19
+ description: The Python 'type' of the O(_input) provided.
20
20
  type: string
@@ -5,6 +5,7 @@ DOCUMENTATION:
5
5
  short_description: union of lists
6
6
  description:
7
7
  - Provide a unique list of all the elements of two lists.
8
+ - Items in the resulting list are returned in arbitrary order.
8
9
  options:
9
10
  _input:
10
11
  description: A list.
@@ -23,12 +23,12 @@ DOCUMENTATION:
23
23
  EXAMPLES: |
24
24
  # simply decrypt my key from a vault
25
25
  vars:
26
- mykey: "{{ myvaultedkey|unvault(passphrase) }} "
26
+ mykey: "{{ myvaultedkey | unvault(passphrase) }} "
27
27
 
28
28
  - name: save templated unvaulted data
29
29
  template: src=dump_template_data.j2 dest=/some/key/clear.txt
30
30
  vars:
31
- template_data: '{{ secretdata|unvault(vaultsecret) }}'
31
+ template_data: '{{ secretdata | unvault(vaultsecret) }}'
32
32
 
33
33
  RETURN:
34
34
  _value:
@@ -1,48 +1,29 @@
1
1
  DOCUMENTATION:
2
- name: urlsplit
2
+ name: urldecode
3
3
  version_added: "2.4"
4
- short_description: get components from URL
4
+ short_description: Decode percent-encoded sequences
5
5
  description:
6
- - Split a URL into its component parts.
7
- positional: _input, query
6
+ - Replace %xx escapes with their single-character equivalent in the given string.
7
+ - Also replace plus signs with spaces, as required for unquoting HTML form values.
8
+ positional: _input
8
9
  options:
9
10
  _input:
10
- description: URL string to split.
11
+ description: URL encoded string to decode.
11
12
  type: str
12
13
  required: true
13
- query:
14
- description: Specify a single component to return.
15
- type: str
16
- choices: ["fragment", "hostname", "netloc", "password", "path", "port", "query", "scheme", "username"]
17
14
 
18
15
  RETURN:
19
16
  _value:
20
17
  description:
21
- - A dictionary with components as keyword and their value.
22
- - If I(query) is provided, a string or integer will be returned instead, depending on I(query).
18
+ - URL decoded value for the given string
23
19
  type: any
24
20
 
25
21
  EXAMPLES: |
26
22
 
27
- {{ "http://user:password@www.acme.com:9000/dir/index.html?query=term#fragment" | urlsplit }}
28
- # =>
29
- # {
30
- # "fragment": "fragment",
31
- # "hostname": "www.acme.com",
32
- # "netloc": "user:password@www.acme.com:9000",
33
- # "password": "password",
34
- # "path": "/dir/index.html",
35
- # "port": 9000,
36
- # "query": "query=term",
37
- # "scheme": "http",
38
- # "username": "user"
39
- # }
40
-
41
- {{ "http://user:password@www.acme.com:9000/dir/index.html?query=term#fragment" | urlsplit('hostname') }}
42
- # => 'www.acme.com'
43
-
44
- {{ "http://user:password@www.acme.com:9000/dir/index.html?query=term#fragment" | urlsplit('query') }}
45
- # => 'query=term'
23
+ # Decode urlencoded string
24
+ {{ '%7e/abc+def' | urldecode }}
25
+ # => "~/abc def"
46
26
 
47
- {{ "http://user:password@www.acme.com:9000/dir/index.html?query=term#fragment" | urlsplit('path') }}
48
- # => '/dir/index.html'
27
+ # Decode plus sign as well
28
+ {{ 'El+Ni%C3%B1o' | urldecode }}
29
+ # => "El Niño"
@@ -53,7 +53,7 @@ RETURN = r'''
53
53
  _value:
54
54
  description:
55
55
  - A dictionary with components as keyword and their value.
56
- - If I(query) is provided, a string or integer will be returned instead, depending on I(query).
56
+ - If O(query) is provided, a string or integer will be returned instead, depending on O(query).
57
57
  type: any
58
58
  '''
59
59
 
@@ -26,7 +26,7 @@ DOCUMENTATION:
26
26
  default: 'filter_default'
27
27
  wrap_object:
28
28
  description:
29
- - This toggle can force the return of an C(AnsibleVaultEncryptedUnicode) string object, when C(False), you get a simple string.
29
+ - This toggle can force the return of an C(AnsibleVaultEncryptedUnicode) string object, when V(False), you get a simple string.
30
30
  - Mostly useful when combining with the C(to_yaml) filter to output the 'inline vault' format.
31
31
  type: bool
32
32
  default: False
@@ -18,7 +18,7 @@ DOCUMENTATION:
18
18
  elements: any
19
19
  required: yes
20
20
  strict:
21
- description: If C(True) return an error on mismatching list length, otherwise shortest list determines output.
21
+ description: If V(True) return an error on mismatching list length, otherwise shortest list determines output.
22
22
  type: bool
23
23
  default: no
24
24
 
@@ -5,7 +5,7 @@ DOCUMENTATION:
5
5
  positional: _input, _additional_lists
6
6
  description:
7
7
  - Make an iterator that aggregates elements from each of the iterables.
8
- If the iterables are of uneven length, missing values are filled-in with I(fillvalue).
8
+ If the iterables are of uneven length, missing values are filled-in with O(fillvalue).
9
9
  Iteration continues until the longest iterable is exhausted.
10
10
  notes:
11
11
  - This is mostly a passhtrough to Python's C(itertools.zip_longest) function
@@ -30,7 +30,7 @@ from ansible.inventory.group import to_safe_group_name as original_safe
30
30
  from ansible.parsing.utils.addresses import parse_address
31
31
  from ansible.plugins import AnsiblePlugin
32
32
  from ansible.plugins.cache import CachePluginAdjudicator as CacheObject
33
- from ansible.module_utils._text import to_bytes, to_native
33
+ from ansible.module_utils.common.text.converters import to_bytes, to_native
34
34
  from ansible.module_utils.parsing.convert_bool import boolean
35
35
  from ansible.module_utils.six import string_types
36
36
  from ansible.template import Templar
@@ -24,7 +24,7 @@ EXAMPLES = '''
24
24
  import os
25
25
 
26
26
  from ansible.errors import AnsibleError, AnsibleParserError
27
- from ansible.module_utils._text import to_bytes, to_native, to_text
27
+ from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
28
28
  from ansible.plugins.inventory import BaseInventoryPlugin
29
29
 
30
30
 
@@ -13,7 +13,7 @@ DOCUMENTATION = '''
13
13
  - The Jinja2 conditionals that qualify a host for membership.
14
14
  - The Jinja2 expressions are calculated and assigned to the variables
15
15
  - Only variables already available from previous inventories or the fact cache can be used for templating.
16
- - When I(strict) is False, failed expressions will be ignored (assumes vars were missing).
16
+ - When O(strict) is False, failed expressions will be ignored (assumes vars were missing).
17
17
  options:
18
18
  plugin:
19
19
  description: token that ensures this is a source file for the 'constructed' plugin.
@@ -84,7 +84,7 @@ from ansible import constants as C
84
84
  from ansible.errors import AnsibleParserError, AnsibleOptionsError
85
85
  from ansible.inventory.helpers import get_group_vars
86
86
  from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
87
- from ansible.module_utils._text import to_native
87
+ from ansible.module_utils.common.text.converters import to_native
88
88
  from ansible.utils.vars import combine_vars
89
89
  from ansible.vars.fact_cache import FactCache
90
90
  from ansible.vars.plugins import get_vars_from_inventory_sources
@@ -27,7 +27,7 @@ EXAMPLES = r'''
27
27
  import os
28
28
 
29
29
  from ansible.errors import AnsibleError, AnsibleParserError
30
- from ansible.module_utils._text import to_bytes, to_native, to_text
30
+ from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
31
31
  from ansible.parsing.utils.addresses import parse_address
32
32
  from ansible.plugins.inventory import BaseInventoryPlugin
33
33
 
@@ -75,12 +75,13 @@ host4 # same host as above, but member of 2 groups, will inherit vars from both
75
75
 
76
76
  import ast
77
77
  import re
78
+ import warnings
78
79
 
79
80
  from ansible.inventory.group import to_safe_group_name
80
81
  from ansible.plugins.inventory import BaseFileInventoryPlugin
81
82
 
82
83
  from ansible.errors import AnsibleError, AnsibleParserError
83
- from ansible.module_utils._text import to_bytes, to_text
84
+ from ansible.module_utils.common.text.converters import to_bytes, to_text
84
85
  from ansible.utils.shlex import shlex_split
85
86
 
86
87
 
@@ -341,9 +342,11 @@ class InventoryModule(BaseFileInventoryPlugin):
341
342
  (int, dict, list, unicode string, etc).
342
343
  '''
343
344
  try:
344
- v = ast.literal_eval(v)
345
+ with warnings.catch_warnings():
346
+ warnings.simplefilter("ignore", SyntaxWarning)
347
+ v = ast.literal_eval(v)
345
348
  # Using explicit exceptions.
346
- # Likely a string that literal_eval does not like. We wil then just set it.
349
+ # Likely a string that literal_eval does not like. We will then just set it.
347
350
  except ValueError:
348
351
  # For some reason this was thought to be malformed.
349
352
  pass