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
@@ -17,17 +17,17 @@ module: unarchive
17
17
  version_added: '1.4'
18
18
  short_description: Unpacks an archive after (optionally) copying it from the local machine
19
19
  description:
20
- - The C(unarchive) module unpacks an archive. It will not unpack a compressed file that does not contain an archive.
20
+ - The M(ansible.builtin.unarchive) module unpacks an archive. It will not unpack a compressed file that does not contain an archive.
21
21
  - By default, it will copy the source file from the local system to the target before unpacking.
22
- - Set C(remote_src=yes) to unpack an archive which already exists on the target.
23
- - If checksum validation is desired, use M(ansible.builtin.get_url) or M(ansible.builtin.uri) instead to fetch the file and set C(remote_src=yes).
22
+ - Set O(remote_src=yes) to unpack an archive which already exists on the target.
23
+ - If checksum validation is desired, use M(ansible.builtin.get_url) or M(ansible.builtin.uri) instead to fetch the file and set O(remote_src=yes).
24
24
  - For Windows targets, use the M(community.windows.win_unzip) module instead.
25
25
  options:
26
26
  src:
27
27
  description:
28
- - If C(remote_src=no) (default), local path to archive file to copy to the target server; can be absolute or relative. If C(remote_src=yes), path on the
28
+ - If O(remote_src=no) (default), local path to archive file to copy to the target server; can be absolute or relative. If O(remote_src=yes), path on the
29
29
  target server to existing archive file to unpack.
30
- - If C(remote_src=yes) and C(src) contains C(://), the remote machine will download the file from the URL first. (version_added 2.0). This is only for
30
+ - If O(remote_src=yes) and O(src) contains V(://), the remote machine will download the file from the URL first. (version_added 2.0). This is only for
31
31
  simple cases, for full download support use the M(ansible.builtin.get_url) module.
32
32
  type: path
33
33
  required: true
@@ -40,14 +40,14 @@ options:
40
40
  copy:
41
41
  description:
42
42
  - If true, the file is copied from local controller to the managed (remote) node, otherwise, the plugin will look for src archive on the managed machine.
43
- - This option has been deprecated in favor of C(remote_src).
44
- - This option is mutually exclusive with C(remote_src).
43
+ - This option has been deprecated in favor of O(remote_src).
44
+ - This option is mutually exclusive with O(remote_src).
45
45
  type: bool
46
46
  default: yes
47
47
  creates:
48
48
  description:
49
49
  - If the specified absolute path (file or directory) already exists, this step will B(not) be run.
50
- - The specified absolute path (file or directory) must be below the base path given with C(dest:).
50
+ - The specified absolute path (file or directory) must be below the base path given with O(dest).
51
51
  type: path
52
52
  version_added: "1.6"
53
53
  io_buffer_size:
@@ -65,16 +65,16 @@ options:
65
65
  exclude:
66
66
  description:
67
67
  - List the directory and file entries that you would like to exclude from the unarchive action.
68
- - Mutually exclusive with C(include).
68
+ - Mutually exclusive with O(include).
69
69
  type: list
70
70
  default: []
71
71
  elements: str
72
72
  version_added: "2.1"
73
73
  include:
74
74
  description:
75
- - List of directory and file entries that you would like to extract from the archive. If C(include)
75
+ - List of directory and file entries that you would like to extract from the archive. If O(include)
76
76
  is not empty, only files listed here will be extracted.
77
- - Mutually exclusive with C(exclude).
77
+ - Mutually exclusive with O(exclude).
78
78
  type: list
79
79
  default: []
80
80
  elements: str
@@ -96,16 +96,16 @@ options:
96
96
  version_added: "2.1"
97
97
  remote_src:
98
98
  description:
99
- - Set to C(true) to indicate the archived file is already on the remote system and not local to the Ansible controller.
100
- - This option is mutually exclusive with C(copy).
99
+ - Set to V(true) to indicate the archived file is already on the remote system and not local to the Ansible controller.
100
+ - This option is mutually exclusive with O(copy).
101
101
  type: bool
102
102
  default: no
103
103
  version_added: "2.2"
104
104
  validate_certs:
105
105
  description:
106
106
  - This only applies if using a https URL as the source of the file.
107
- - This should only set to C(false) used on personally controlled sites using self-signed certificate.
108
- - Prior to 2.2 the code worked as if this was set to C(true).
107
+ - This should only set to V(false) used on personally controlled sites using self-signed certificate.
108
+ - Prior to 2.2 the code worked as if this was set to V(true).
109
109
  type: bool
110
110
  default: yes
111
111
  version_added: "2.2"
@@ -188,7 +188,7 @@ dest:
188
188
  sample: /opt/software
189
189
  files:
190
190
  description: List of all the files in the archive.
191
- returned: When I(list_files) is True
191
+ returned: When O(list_files) is V(True)
192
192
  type: list
193
193
  sample: '["file1", "file2"]'
194
194
  gid:
@@ -224,7 +224,7 @@ size:
224
224
  src:
225
225
  description:
226
226
  - The source archive's path.
227
- - If I(src) was a remote web URL, or from the local ansible controller, this shows the temporary location where the download was stored.
227
+ - If O(src) was a remote web URL, or from the local ansible controller, this shows the temporary location where the download was stored.
228
228
  returned: always
229
229
  type: str
230
230
  sample: "/home/paul/test.tar.gz"
@@ -255,7 +255,7 @@ import traceback
255
255
  from functools import partial
256
256
  from zipfile import ZipFile
257
257
 
258
- from ansible.module_utils._text import to_bytes, to_native, to_text
258
+ from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
259
259
  from ansible.module_utils.basic import AnsibleModule
260
260
  from ansible.module_utils.common.process import get_bin_path
261
261
  from ansible.module_utils.common.locale import get_best_parsable_locale
@@ -1054,6 +1054,9 @@ def main():
1054
1054
  if not os.access(src, os.R_OK):
1055
1055
  module.fail_json(msg="Source '%s' not readable" % src)
1056
1056
 
1057
+ # ensure src is an absolute path before picking handlers
1058
+ src = os.path.abspath(src)
1059
+
1057
1060
  # skip working with 0 size archives
1058
1061
  try:
1059
1062
  if os.path.getsize(src) == 0:
ansible/modules/uri.py CHANGED
@@ -20,7 +20,7 @@ options:
20
20
  ciphers:
21
21
  description:
22
22
  - SSL/TLS Ciphers to use for the request.
23
- - 'When a list is provided, all ciphers are joined in order with C(:)'
23
+ - 'When a list is provided, all ciphers are joined in order with V(:)'
24
24
  - See the L(OpenSSL Cipher List Format,https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html#CIPHER-LIST-FORMAT)
25
25
  for more details.
26
26
  - The available ciphers is dependent on the Python and OpenSSL/LibreSSL versions
@@ -40,7 +40,7 @@ options:
40
40
  required: true
41
41
  dest:
42
42
  description:
43
- - A path of where to download the file to (if desired). If I(dest) is a
43
+ - A path of where to download the file to (if desired). If O(dest) is a
44
44
  directory, the basename of the file on the remote server will be used.
45
45
  type: path
46
46
  url_username:
@@ -55,23 +55,23 @@ options:
55
55
  aliases: [ password ]
56
56
  body:
57
57
  description:
58
- - The body of the http request/response to the web service. If C(body_format) is set
59
- to 'json' it will take an already formatted JSON string or convert a data structure
58
+ - The body of the http request/response to the web service. If O(body_format) is set
59
+ to V(json) it will take an already formatted JSON string or convert a data structure
60
60
  into JSON.
61
- - If C(body_format) is set to 'form-urlencoded' it will convert a dictionary
61
+ - If O(body_format) is set to V(form-urlencoded) it will convert a dictionary
62
62
  or list of tuples into an 'application/x-www-form-urlencoded' string. (Added in v2.7)
63
- - If C(body_format) is set to 'form-multipart' it will convert a dictionary
63
+ - If O(body_format) is set to V(form-multipart) it will convert a dictionary
64
64
  into 'multipart/form-multipart' body. (Added in v2.10)
65
65
  type: raw
66
66
  body_format:
67
67
  description:
68
- - The serialization format of the body. When set to C(json), C(form-multipart), or C(form-urlencoded), encodes
68
+ - The serialization format of the body. When set to V(json), V(form-multipart), or V(form-urlencoded), encodes
69
69
  the body argument, if needed, and automatically sets the Content-Type header accordingly.
70
70
  - As of v2.3 it is possible to override the C(Content-Type) header, when
71
- set to C(json) or C(form-urlencoded) via the I(headers) option.
72
- - The 'Content-Type' header cannot be overridden when using C(form-multipart)
73
- - C(form-urlencoded) was added in v2.7.
74
- - C(form-multipart) was added in v2.10.
71
+ set to V(json) or V(form-urlencoded) via the O(headers) option.
72
+ - The 'Content-Type' header cannot be overridden when using V(form-multipart)
73
+ - V(form-urlencoded) was added in v2.7.
74
+ - V(form-multipart) was added in v2.10.
75
75
  type: str
76
76
  choices: [ form-urlencoded, json, raw, form-multipart ]
77
77
  default: raw
@@ -88,15 +88,15 @@ options:
88
88
  - Whether or not to return the body of the response as a "content" key in
89
89
  the dictionary result no matter it succeeded or failed.
90
90
  - Independently of this option, if the reported Content-type is "application/json", then the JSON is
91
- always loaded into a key called C(json) in the dictionary results.
91
+ always loaded into a key called RV(ignore:json) in the dictionary results.
92
92
  type: bool
93
93
  default: no
94
94
  force_basic_auth:
95
95
  description:
96
96
  - Force the sending of the Basic authentication header upon initial request.
97
- - When this setting is C(false), this module will first try an unauthenticated request, and when the server replies
97
+ - When this setting is V(false), this module will first try an unauthenticated request, and when the server replies
98
98
  with an C(HTTP 401) error, it will submit the Basic authentication header.
99
- - When this setting is C(true), this module will immediately send a Basic authentication header on the first
99
+ - When this setting is V(true), this module will immediately send a Basic authentication header on the first
100
100
  request.
101
101
  - "Use this setting in any of the following scenarios:"
102
102
  - You know the webservice endpoint always requires HTTP Basic authentication, and you want to speed up your
@@ -108,11 +108,11 @@ options:
108
108
  default: no
109
109
  follow_redirects:
110
110
  description:
111
- - Whether or not the URI module should follow redirects. C(all) will follow all redirects.
112
- C(safe) will follow only "safe" redirects, where "safe" means that the client is only
113
- doing a GET or HEAD on the URI to which it is being redirected. C(none) will not follow
114
- any redirects. Note that C(true) and C(false) choices are accepted for backwards compatibility,
115
- where C(true) is the equivalent of C(all) and C(false) is the equivalent of C(safe). C(true) and C(false)
111
+ - Whether or not the URI module should follow redirects. V(all) will follow all redirects.
112
+ V(safe) will follow only "safe" redirects, where "safe" means that the client is only
113
+ doing a GET or HEAD on the URI to which it is being redirected. V(none) will not follow
114
+ any redirects. Note that V(true) and V(false) choices are accepted for backwards compatibility,
115
+ where V(true) is the equivalent of V(all) and V(false) is the equivalent of V(safe). V(true) and V(false)
116
116
  are deprecated and will be removed in some future version of Ansible.
117
117
  type: str
118
118
  choices: ['all', 'no', 'none', 'safe', 'urllib2', 'yes']
@@ -139,29 +139,29 @@ options:
139
139
  headers:
140
140
  description:
141
141
  - Add custom HTTP headers to a request in the format of a YAML hash. As
142
- of C(2.3) supplying C(Content-Type) here will override the header
143
- generated by supplying C(json) or C(form-urlencoded) for I(body_format).
142
+ of Ansible 2.3 supplying C(Content-Type) here will override the header
143
+ generated by supplying V(json) or V(form-urlencoded) for O(body_format).
144
144
  type: dict
145
145
  default: {}
146
146
  version_added: '2.1'
147
147
  validate_certs:
148
148
  description:
149
- - If C(false), SSL certificates will not be validated.
150
- - This should only set to C(false) used on personally controlled sites using self-signed certificates.
151
- - Prior to 1.9.2 the code defaulted to C(false).
149
+ - If V(false), SSL certificates will not be validated.
150
+ - This should only set to V(false) used on personally controlled sites using self-signed certificates.
151
+ - Prior to 1.9.2 the code defaulted to V(false).
152
152
  type: bool
153
153
  default: true
154
154
  version_added: '1.9.2'
155
155
  client_cert:
156
156
  description:
157
157
  - PEM formatted certificate chain file to be used for SSL client authentication.
158
- - This file can also include the key as well, and if the key is included, I(client_key) is not required
158
+ - This file can also include the key as well, and if the key is included, O(client_key) is not required
159
159
  type: path
160
160
  version_added: '2.4'
161
161
  client_key:
162
162
  description:
163
163
  - PEM formatted file that contains your private key to be used for SSL client authentication.
164
- - If I(client_cert) contains both the certificate and key, this option is not required.
164
+ - If O(client_cert) contains both the certificate and key, this option is not required.
165
165
  type: path
166
166
  version_added: '2.4'
167
167
  ca_path:
@@ -172,25 +172,25 @@ options:
172
172
  src:
173
173
  description:
174
174
  - Path to file to be submitted to the remote server.
175
- - Cannot be used with I(body).
176
- - Should be used with I(force_basic_auth) to ensure success when the remote end sends a 401.
175
+ - Cannot be used with O(body).
176
+ - Should be used with O(force_basic_auth) to ensure success when the remote end sends a 401.
177
177
  type: path
178
178
  version_added: '2.7'
179
179
  remote_src:
180
180
  description:
181
- - If C(false), the module will search for the C(src) on the controller node.
182
- - If C(true), the module will search for the C(src) on the managed (remote) node.
181
+ - If V(false), the module will search for the O(src) on the controller node.
182
+ - If V(true), the module will search for the O(src) on the managed (remote) node.
183
183
  type: bool
184
184
  default: no
185
185
  version_added: '2.7'
186
186
  force:
187
187
  description:
188
- - If C(true) do not get a cached copy.
188
+ - If V(true) do not get a cached copy.
189
189
  type: bool
190
190
  default: no
191
191
  use_proxy:
192
192
  description:
193
- - If C(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts.
193
+ - If V(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts.
194
194
  type: bool
195
195
  default: true
196
196
  unix_socket:
@@ -217,9 +217,9 @@ options:
217
217
  - Use GSSAPI to perform the authentication, typically this is for Kerberos or Kerberos through Negotiate
218
218
  authentication.
219
219
  - Requires the Python library L(gssapi,https://github.com/pythongssapi/python-gssapi) to be installed.
220
- - Credentials for GSSAPI can be specified with I(url_username)/I(url_password) or with the GSSAPI env var
220
+ - Credentials for GSSAPI can be specified with O(url_username)/O(url_password) or with the GSSAPI env var
221
221
  C(KRB5CCNAME) that specified a custom Kerberos credential cache.
222
- - NTLM authentication is C(not) supported even if the GSSAPI mech for NTLM has been installed.
222
+ - NTLM authentication is B(not) supported even if the GSSAPI mech for NTLM has been installed.
223
223
  type: bool
224
224
  default: no
225
225
  version_added: '2.11'
@@ -440,7 +440,6 @@ url:
440
440
  sample: https://www.ansible.com/
441
441
  '''
442
442
 
443
- import datetime
444
443
  import json
445
444
  import os
446
445
  import re
@@ -451,7 +450,8 @@ import tempfile
451
450
  from ansible.module_utils.basic import AnsibleModule, sanitize_keys
452
451
  from ansible.module_utils.six import PY2, PY3, binary_type, iteritems, string_types
453
452
  from ansible.module_utils.six.moves.urllib.parse import urlencode, urlsplit
454
- from ansible.module_utils._text import to_native, to_text
453
+ from ansible.module_utils.common.text.converters import to_native, to_text
454
+ from ansible.module_utils.compat.datetime import utcnow, utcfromtimestamp
455
455
  from ansible.module_utils.six.moves.collections_abc import Mapping, Sequence
456
456
  from ansible.module_utils.urls import fetch_url, get_response_filename, parse_content_type, prepare_multipart, url_argument_spec
457
457
 
@@ -580,7 +580,7 @@ def uri(module, url, dest, body, body_format, method, headers, socket_timeout, c
580
580
  kwargs = {}
581
581
  if dest is not None and os.path.isfile(dest):
582
582
  # if destination file already exist, only download if file newer
583
- kwargs['last_mod_time'] = datetime.datetime.utcfromtimestamp(os.path.getmtime(dest))
583
+ kwargs['last_mod_time'] = utcfromtimestamp(os.path.getmtime(dest))
584
584
 
585
585
  resp, info = fetch_url(module, url, data=data, headers=headers,
586
586
  method=method, timeout=socket_timeout, unix_socket=module.params['unix_socket'],
@@ -686,12 +686,12 @@ def main():
686
686
  module.exit_json(stdout="skipped, since '%s' does not exist" % removes, changed=False)
687
687
 
688
688
  # Make the request
689
- start = datetime.datetime.utcnow()
689
+ start = utcnow()
690
690
  r, info = uri(module, url, dest, body, body_format, method,
691
691
  dict_headers, socket_timeout, ca_path, unredirected_headers,
692
692
  decompress, ciphers, use_netrc)
693
693
 
694
- elapsed = (datetime.datetime.utcnow() - start).seconds
694
+ elapsed = (utcnow() - start).seconds
695
695
 
696
696
  if r and dest is not None and os.path.isdir(dest):
697
697
  filename = get_response_filename(r) or 'index.html'