pyinfra 3.4.1__tar.gz → 3.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1342) hide show
  1. pyinfra-3.5.1/.editorconfig +3 -0
  2. pyinfra-3.5.1/.git-blame-ignore-revs +5 -0
  3. pyinfra-3.5.1/.github/FUNDING.yml +1 -0
  4. pyinfra-3.5.1/.github/ISSUE_TEMPLATE/bug_report.md +26 -0
  5. pyinfra-3.5.1/.github/ISSUE_TEMPLATE/config.yml +10 -0
  6. pyinfra-3.5.1/.github/ISSUE_TEMPLATE/feature_request.md +12 -0
  7. pyinfra-3.5.1/.github/PULL_REQUEST_TEMPLATE.md +15 -0
  8. pyinfra-3.5.1/.github/workflows/docs.yml +56 -0
  9. pyinfra-3.5.1/.github/workflows/test.yml +117 -0
  10. pyinfra-3.5.1/.gitignore +36 -0
  11. pyinfra-3.5.1/.typos.toml +21 -0
  12. pyinfra-3.5.1/CHANGELOG.md +314 -0
  13. pyinfra-3.5.1/CONTRIBUTING.md +5 -0
  14. pyinfra-3.5.1/PKG-INFO +141 -0
  15. pyinfra-3.5.1/README.md +105 -0
  16. pyinfra-3.5.1/codecov.yml +6 -0
  17. pyinfra-3.5.1/docs/api/connectors.md +206 -0
  18. pyinfra-3.5.1/docs/api/deploys.md +64 -0
  19. pyinfra-3.5.1/docs/api/facts.md +96 -0
  20. pyinfra-3.5.1/docs/api/index.rst +66 -0
  21. pyinfra-3.5.1/docs/api/operations.md +79 -0
  22. pyinfra-3.5.1/docs/api/reference.rst +23 -0
  23. pyinfra-3.5.1/docs/arguments.rst +9 -0
  24. pyinfra-3.5.1/docs/changes.rst +5 -0
  25. pyinfra-3.5.1/docs/cli.md +180 -0
  26. pyinfra-3.5.1/docs/compatibility.md +104 -0
  27. pyinfra-3.5.1/docs/conf.py +79 -0
  28. pyinfra-3.5.1/docs/connectors.rst +48 -0
  29. pyinfra-3.5.1/docs/contributing.md +100 -0
  30. pyinfra-3.5.1/docs/deploy-process.rst +181 -0
  31. pyinfra-3.5.1/docs/examples/client_side_assets.md +16 -0
  32. pyinfra-3.5.1/docs/examples/data_multiple_environments.md +38 -0
  33. pyinfra-3.5.1/docs/examples/dynamic_execution_deploy.md +41 -0
  34. pyinfra-3.5.1/docs/examples/dynamic_inventories_data.md +45 -0
  35. pyinfra-3.5.1/docs/examples/groups_roles.md +48 -0
  36. pyinfra-3.5.1/docs/examples/secret_storage.md +29 -0
  37. pyinfra-3.5.1/docs/examples.rst +4 -0
  38. pyinfra-3.5.1/docs/facts.rst +60 -0
  39. pyinfra-3.5.1/docs/faq.rst +80 -0
  40. pyinfra-3.5.1/docs/getting-started.rst +99 -0
  41. pyinfra-3.5.1/docs/index.rst +124 -0
  42. pyinfra-3.5.1/docs/install.md +170 -0
  43. pyinfra-3.5.1/docs/inventory-data.rst +160 -0
  44. pyinfra-3.5.1/docs/operations.rst +56 -0
  45. pyinfra-3.5.1/docs/performance.rst +9 -0
  46. pyinfra-3.5.1/docs/static/logo_small.png +0 -0
  47. pyinfra-3.5.1/docs/static/performance.png +0 -0
  48. pyinfra-3.5.1/docs/support.md +20 -0
  49. pyinfra-3.5.1/docs/using-operations.rst +345 -0
  50. pyinfra-3.5.1/docs/utils.py +13 -0
  51. pyinfra-3.5.1/examples/README.md +1 -0
  52. pyinfra-3.5.1/pyproject.toml +140 -0
  53. pyinfra-3.5.1/scripts/build-public-docs.sh +37 -0
  54. pyinfra-3.5.1/scripts/cleanup_words.py +24 -0
  55. pyinfra-3.5.1/scripts/dev-lint.sh +14 -0
  56. pyinfra-3.5.1/scripts/dev-test-e2e.sh +14 -0
  57. pyinfra-3.5.1/scripts/dev-test.sh +8 -0
  58. pyinfra-3.5.1/scripts/generate_api_docs.py +31 -0
  59. pyinfra-3.5.1/scripts/generate_arguments_doc.py +91 -0
  60. pyinfra-3.5.1/scripts/generate_connectors_docs.py +110 -0
  61. pyinfra-3.5.1/scripts/generate_facts_docs.py +146 -0
  62. pyinfra-3.5.1/scripts/generate_next_version.py +20 -0
  63. pyinfra-3.5.1/scripts/generate_operations_docs.py +222 -0
  64. pyinfra-3.5.1/scripts/generate_redirect_pages.py +42 -0
  65. pyinfra-3.5.1/scripts/make_github_release.py +46 -0
  66. pyinfra-3.5.1/scripts/pyinfra-complete.sh +21 -0
  67. pyinfra-3.5.1/scripts/pyinfra-complete.zsh +28 -0
  68. pyinfra-3.5.1/scripts/release.sh +27 -0
  69. pyinfra-3.5.1/scripts/spellcheck.sh +3 -0
  70. pyinfra-3.5.1/src/pyinfra/__main__.py +4 -0
  71. pyinfra-3.5.1/src/pyinfra/api/arguments.py +406 -0
  72. pyinfra-3.5.1/src/pyinfra/api/config.py +240 -0
  73. pyinfra-3.5.1/src/pyinfra/api/connect.py +67 -0
  74. pyinfra-3.5.1/src/pyinfra/api/facts.py +310 -0
  75. pyinfra-3.5.1/src/pyinfra/api/operation.py +496 -0
  76. pyinfra-3.5.1/src/pyinfra/api/operations.py +397 -0
  77. pyinfra-3.5.1/src/pyinfra/api/state.py +434 -0
  78. pyinfra-3.5.1/src/pyinfra/api/util.py +453 -0
  79. pyinfra-3.5.1/src/pyinfra/connectors/chroot.py +212 -0
  80. pyinfra-3.5.1/src/pyinfra/connectors/docker.py +381 -0
  81. pyinfra-3.5.1/src/pyinfra/connectors/scp/__init__.py +1 -0
  82. pyinfra-3.5.1/src/pyinfra/connectors/scp/client.py +204 -0
  83. pyinfra-3.5.1/src/pyinfra/connectors/ssh.py +670 -0
  84. pyinfra-3.5.1/src/pyinfra/connectors/util.py +410 -0
  85. pyinfra-3.5.1/src/pyinfra/facts/dnf.py +48 -0
  86. pyinfra-3.5.1/src/pyinfra/facts/docker.py +151 -0
  87. pyinfra-3.5.1/src/pyinfra/facts/files.py +677 -0
  88. pyinfra-3.5.1/src/pyinfra/facts/freebsd.py +70 -0
  89. pyinfra-3.5.1/src/pyinfra/facts/selinux.py +161 -0
  90. pyinfra-3.5.1/src/pyinfra/facts/server.py +954 -0
  91. pyinfra-3.5.1/src/pyinfra/facts/util/packaging.py +50 -0
  92. pyinfra-3.5.1/src/pyinfra/facts/yum.py +47 -0
  93. pyinfra-3.5.1/src/pyinfra/facts/zypper.py +42 -0
  94. pyinfra-3.5.1/src/pyinfra/operations/choco.py +61 -0
  95. pyinfra-3.5.1/src/pyinfra/operations/crontab.py +191 -0
  96. pyinfra-3.5.1/src/pyinfra/operations/docker.py +446 -0
  97. pyinfra-3.5.1/src/pyinfra/operations/files.py +1939 -0
  98. pyinfra-3.5.1/src/pyinfra/operations/git.py +419 -0
  99. pyinfra-3.5.1/src/pyinfra/operations/iptables.py +311 -0
  100. pyinfra-3.5.1/src/pyinfra/operations/mysql.py +609 -0
  101. pyinfra-3.5.1/src/pyinfra/operations/openrc.py +63 -0
  102. pyinfra-3.5.1/src/pyinfra/operations/pip.py +205 -0
  103. pyinfra-3.5.1/src/pyinfra/operations/pipx.py +102 -0
  104. pyinfra-3.5.1/src/pyinfra/operations/server.py +1099 -0
  105. pyinfra-3.5.1/src/pyinfra/operations/util/docker.py +251 -0
  106. pyinfra-3.5.1/src/pyinfra/operations/util/files.py +247 -0
  107. pyinfra-3.5.1/src/pyinfra/operations/util/packaging.py +336 -0
  108. pyinfra-3.5.1/src/pyinfra_cli/cli.py +780 -0
  109. pyinfra-3.5.1/src/pyinfra_cli/main.py +40 -0
  110. pyinfra-3.5.1/src/pyinfra_cli/prints.py +343 -0
  111. pyinfra-3.5.1/src/pyinfra_cli/util.py +239 -0
  112. pyinfra-3.5.1/tests/__init__.py +13 -0
  113. pyinfra-3.5.1/tests/end-to-end/conftest.py +68 -0
  114. pyinfra-3.5.1/tests/end-to-end/test_e2e_docker.py +58 -0
  115. pyinfra-3.5.1/tests/end-to-end/test_e2e_local.py +149 -0
  116. pyinfra-3.5.1/tests/end-to-end/test_e2e_podman.py +14 -0
  117. pyinfra-3.5.1/tests/end-to-end/test_e2e_ssh.py +133 -0
  118. pyinfra-3.5.1/tests/facts/apk.ApkPackages/packages.json +34 -0
  119. pyinfra-3.5.1/tests/facts/apk.ApkPackages/packages_2.json +576 -0
  120. pyinfra-3.5.1/tests/facts/apt.AptKeys/keys.json +44 -0
  121. pyinfra-3.5.1/tests/facts/apt.AptSources/component_with_number.json +19 -0
  122. pyinfra-3.5.1/tests/facts/apt.AptSources/sources.json +44 -0
  123. pyinfra-3.5.1/tests/facts/apt.SimulateOperationWillChange/upgrade-nochanges.json +22 -0
  124. pyinfra-3.5.1/tests/facts/apt.SimulateOperationWillChange/upgrade.json +57 -0
  125. pyinfra-3.5.1/tests/facts/brew.BrewCasks/casks.json +28 -0
  126. pyinfra-3.5.1/tests/facts/brew.BrewPackages/packages.json +48 -0
  127. pyinfra-3.5.1/tests/facts/brew.BrewTaps/taps.json +12 -0
  128. pyinfra-3.5.1/tests/facts/brew.BrewVersion/bad_output.json +8 -0
  129. pyinfra-3.5.1/tests/facts/brew.BrewVersion/version.json +10 -0
  130. pyinfra-3.5.1/tests/facts/cargo.CargoPackages/packages.json +14 -0
  131. pyinfra-3.5.1/tests/facts/choco.ChocoPackages/packages.json +26 -0
  132. pyinfra-3.5.1/tests/facts/choco.ChocoVersion/version.json +5 -0
  133. pyinfra-3.5.1/tests/facts/crontab.Crontab/comments.json +33 -0
  134. pyinfra-3.5.1/tests/facts/crontab.Crontab/simple.json +34 -0
  135. pyinfra-3.5.1/tests/facts/crontab.Crontab/simple_user.json +29 -0
  136. pyinfra-3.5.1/tests/facts/deb.DebPackage/package.json +13 -0
  137. pyinfra-3.5.1/tests/facts/deb.DebPackage/whitespace.json +30 -0
  138. pyinfra-3.5.1/tests/facts/deb.DebPackages/hold_packages.json +14 -0
  139. pyinfra-3.5.1/tests/facts/deb.DebPackages/packages.json +18 -0
  140. pyinfra-3.5.1/tests/facts/dnf.DnfRepositories/repos-with-spaces.json +14 -0
  141. pyinfra-3.5.1/tests/facts/dnf.DnfRepositories/repos.json +22 -0
  142. pyinfra-3.5.1/tests/facts/docker.DockerContainer/container.json +11 -0
  143. pyinfra-3.5.1/tests/facts/docker.DockerContainers/container.json +8 -0
  144. pyinfra-3.5.1/tests/facts/docker.DockerImages/images.json +8 -0
  145. pyinfra-3.5.1/tests/facts/docker.DockerPlugin/plugin.json +11 -0
  146. pyinfra-3.5.1/tests/facts/docker.DockerPlugins/plugins.json +8 -0
  147. pyinfra-3.5.1/tests/facts/efibootmgr.EFIBootMgr/boot_entries.json +18 -0
  148. pyinfra-3.5.1/tests/facts/efibootmgr.EFIBootMgr/boot_entries2.json +20 -0
  149. pyinfra-3.5.1/tests/facts/efibootmgr.EFIBootMgr/boot_entries_complex.json +30 -0
  150. pyinfra-3.5.1/tests/facts/efibootmgr.EFIBootMgr/not_uefi.json +6 -0
  151. pyinfra-3.5.1/tests/facts/files.Block/defaults.json +12 -0
  152. pyinfra-3.5.1/tests/facts/files.Block/no_markers_found.json +8 -0
  153. pyinfra-3.5.1/tests/facts/files.Block/not_found.json +8 -0
  154. pyinfra-3.5.1/tests/facts/files.Directory/file.json +8 -0
  155. pyinfra-3.5.1/tests/facts/files.Directory/link.json +8 -0
  156. pyinfra-3.5.1/tests/facts/files.Directory/ls_fallback.json +16 -0
  157. pyinfra-3.5.1/tests/facts/files.Directory/ls_fallback_freebsd.json +16 -0
  158. pyinfra-3.5.1/tests/facts/files.Directory/ls_fallback_macos.json +16 -0
  159. pyinfra-3.5.1/tests/facts/files.Directory/valid.json +16 -0
  160. pyinfra-3.5.1/tests/facts/files.File/directory.json +8 -0
  161. pyinfra-3.5.1/tests/facts/files.File/invalid_output.json +8 -0
  162. pyinfra-3.5.1/tests/facts/files.File/link.json +8 -0
  163. pyinfra-3.5.1/tests/facts/files.File/ls_fallback.json +16 -0
  164. pyinfra-3.5.1/tests/facts/files.File/ls_fallback_selinux.json +16 -0
  165. pyinfra-3.5.1/tests/facts/files.File/ls_fallback_time.json +16 -0
  166. pyinfra-3.5.1/tests/facts/files.File/mode_setgid_setuid.json +16 -0
  167. pyinfra-3.5.1/tests/facts/files.File/mode_sticky.json +16 -0
  168. pyinfra-3.5.1/tests/facts/files.File/tilde.json +16 -0
  169. pyinfra-3.5.1/tests/facts/files.File/tilde_with_space.json +16 -0
  170. pyinfra-3.5.1/tests/facts/files.File/valid.json +16 -0
  171. pyinfra-3.5.1/tests/facts/files.File/valid_needs_quotes.json +16 -0
  172. pyinfra-3.5.1/tests/facts/files.File/valid_with_space.json +16 -0
  173. pyinfra-3.5.1/tests/facts/files.FileContents/file.json +6 -0
  174. pyinfra-3.5.1/tests/facts/files.FileContents/no_file.json +6 -0
  175. pyinfra-3.5.1/tests/facts/files.FindDirectories/directories.json +10 -0
  176. pyinfra-3.5.1/tests/facts/files.FindFiles/files.json +10 -0
  177. pyinfra-3.5.1/tests/facts/files.FindFiles/files_with_name.json +13 -0
  178. pyinfra-3.5.1/tests/facts/files.FindFiles/files_with_name_wildcard.json +13 -0
  179. pyinfra-3.5.1/tests/facts/files.FindInFile/lines.json +12 -0
  180. pyinfra-3.5.1/tests/facts/files.FindInFile/lines_interpolate.json +12 -0
  181. pyinfra-3.5.1/tests/facts/files.FindInFile/lines_no_interpolate.json +12 -0
  182. pyinfra-3.5.1/tests/facts/files.FindInFile/lines_quote.json +12 -0
  183. pyinfra-3.5.1/tests/facts/files.FindInFile/no_file.json +6 -0
  184. pyinfra-3.5.1/tests/facts/files.FindInFile/no_matches.json +8 -0
  185. pyinfra-3.5.1/tests/facts/files.FindLinks/links.json +10 -0
  186. pyinfra-3.5.1/tests/facts/files.Flags/bad_output.json +10 -0
  187. pyinfra-3.5.1/tests/facts/files.Flags/no_flags_set.json +10 -0
  188. pyinfra-3.5.1/tests/facts/files.Flags/no_output.json +9 -0
  189. pyinfra-3.5.1/tests/facts/files.Flags/one_flag_set.json +11 -0
  190. pyinfra-3.5.1/tests/facts/files.Flags/too_much_output.json +11 -0
  191. pyinfra-3.5.1/tests/facts/files.Flags/two_flags_set.json +12 -0
  192. pyinfra-3.5.1/tests/facts/files.Link/directory.json +8 -0
  193. pyinfra-3.5.1/tests/facts/files.Link/file.json +8 -0
  194. pyinfra-3.5.1/tests/facts/files.Link/ls_fallback.json +17 -0
  195. pyinfra-3.5.1/tests/facts/files.Link/valid.json +17 -0
  196. pyinfra-3.5.1/tests/facts/files.Link/valid_centos6.json +17 -0
  197. pyinfra-3.5.1/tests/facts/files.Md5File/file.json +8 -0
  198. pyinfra-3.5.1/tests/facts/files.Md5File/file_bsd_style.json +8 -0
  199. pyinfra-3.5.1/tests/facts/files.Md5File/file_needs_quotes.json +8 -0
  200. pyinfra-3.5.1/tests/facts/files.Sha1File/file.json +8 -0
  201. pyinfra-3.5.1/tests/facts/files.Sha1File/file_bsd_style.json +8 -0
  202. pyinfra-3.5.1/tests/facts/files.Sha1File/file_needs_quotes.json +8 -0
  203. pyinfra-3.5.1/tests/facts/files.Sha256File/file.json +8 -0
  204. pyinfra-3.5.1/tests/facts/files.Sha256File/file_bsd_style.json +8 -0
  205. pyinfra-3.5.1/tests/facts/files.Sha256File/file_needs_quotes.json +8 -0
  206. pyinfra-3.5.1/tests/facts/files.Sha384File/file.json +8 -0
  207. pyinfra-3.5.1/tests/facts/files.Sha384File/file_bsd_style.json +8 -0
  208. pyinfra-3.5.1/tests/facts/files.Sha384File/file_needs_quotes.json +8 -0
  209. pyinfra-3.5.1/tests/facts/flatpak.FlatpakPackage/kodi.json +32 -0
  210. pyinfra-3.5.1/tests/facts/flatpak.FlatpakPackage/not_found.json +9 -0
  211. pyinfra-3.5.1/tests/facts/flatpak.FlatpakPackage/vlc.json +32 -0
  212. pyinfra-3.5.1/tests/facts/flatpak.FlatpakPackages/packages.json +17 -0
  213. pyinfra-3.5.1/tests/facts/freebsd.PkgPackage/package-with-jail.json +11 -0
  214. pyinfra-3.5.1/tests/facts/freebsd.PkgPackage/package.json +8 -0
  215. pyinfra-3.5.1/tests/facts/freebsd.ServiceScript/found.json +8 -0
  216. pyinfra-3.5.1/tests/facts/freebsd.ServiceScript/not-found.json +6 -0
  217. pyinfra-3.5.1/tests/facts/freebsd.ServiceStatus/not-running.json +6 -0
  218. pyinfra-3.5.1/tests/facts/freebsd.ServiceStatus/running.json +8 -0
  219. pyinfra-3.5.1/tests/facts/freebsd.Sysrc/found.json +8 -0
  220. pyinfra-3.5.1/tests/facts/freebsd.Sysrc/not-found.json +6 -0
  221. pyinfra-3.5.1/tests/facts/gem.GemPackages/packages.json +10 -0
  222. pyinfra-3.5.1/tests/facts/git.GitBranch/branch.json +9 -0
  223. pyinfra-3.5.1/tests/facts/git.GitConfig/global.json +10 -0
  224. pyinfra-3.5.1/tests/facts/git.GitConfig/multi_value.json +14 -0
  225. pyinfra-3.5.1/tests/facts/git.GitConfig/repo.json +11 -0
  226. pyinfra-3.5.1/tests/facts/git.GitTag/tag.json +13 -0
  227. pyinfra-3.5.1/tests/facts/git.GitTrackingBranch/branch.json +9 -0
  228. pyinfra-3.5.1/tests/facts/git.GitTrackingBranch/branch_behind.json +9 -0
  229. pyinfra-3.5.1/tests/facts/git.GitTrackingBranch/no_branch.json +9 -0
  230. pyinfra-3.5.1/tests/facts/gpg.GpgKey/key_from_file.json +24 -0
  231. pyinfra-3.5.1/tests/facts/gpg.GpgKey/key_from_url.json +24 -0
  232. pyinfra-3.5.1/tests/facts/gpg.GpgKeys/keys.json +60 -0
  233. pyinfra-3.5.1/tests/facts/gpg.GpgKeys/keys_keyring.json +45 -0
  234. pyinfra-3.5.1/tests/facts/gpg.GpgSecretKeys/keys.json +60 -0
  235. pyinfra-3.5.1/tests/facts/gpg.GpgSecretKeys/keys_keyring.json +45 -0
  236. pyinfra-3.5.1/tests/facts/hardware.BlockDevices/devices.json +17 -0
  237. pyinfra-3.5.1/tests/facts/hardware.Cpus/invalid.json +5 -0
  238. pyinfra-3.5.1/tests/facts/hardware.Cpus/valid.json +5 -0
  239. pyinfra-3.5.1/tests/facts/hardware.Ipv4Addresses/linux_ip.json +15 -0
  240. pyinfra-3.5.1/tests/facts/hardware.Ipv4Addrs/linux_ip_multiple.json +16 -0
  241. pyinfra-3.5.1/tests/facts/hardware.Ipv6Addresses/linux_ip.json +18 -0
  242. pyinfra-3.5.1/tests/facts/hardware.Ipv6Addrs/linux_ip_multiple.json +22 -0
  243. pyinfra-3.5.1/tests/facts/hardware.Memory/vmstat_bsd.json +42 -0
  244. pyinfra-3.5.1/tests/facts/hardware.Memory/vmstat_linux.json +33 -0
  245. pyinfra-3.5.1/tests/facts/hardware.NetworkDevices/linux_ifconfig.json +89 -0
  246. pyinfra-3.5.1/tests/facts/hardware.NetworkDevices/linux_ifconfig_multiple.json +197 -0
  247. pyinfra-3.5.1/tests/facts/hardware.NetworkDevices/linux_ip.json +28 -0
  248. pyinfra-3.5.1/tests/facts/hardware.NetworkDevices/linux_ip_multiple_addrs.json +36 -0
  249. pyinfra-3.5.1/tests/facts/hardware.NetworkDevices/linux_ip_multiple_ifaces.json +160 -0
  250. pyinfra-3.5.1/tests/facts/hardware.NetworkDevices/macos_ifconfig.json +27 -0
  251. pyinfra-3.5.1/tests/facts/iptables.Ip6tablesChains/chains.json +17 -0
  252. pyinfra-3.5.1/tests/facts/iptables.Ip6tablesRules/rules.json +24 -0
  253. pyinfra-3.5.1/tests/facts/iptables.IptablesChains/chains.json +17 -0
  254. pyinfra-3.5.1/tests/facts/iptables.IptablesRules/rules.json +24 -0
  255. pyinfra-3.5.1/tests/facts/launchd.LaunchdStatus/services.json +17 -0
  256. pyinfra-3.5.1/tests/facts/lxd.LxdContainers/stripped.json +16 -0
  257. pyinfra-3.5.1/tests/facts/mysql.MysqlDatabases/multiple.json +29 -0
  258. pyinfra-3.5.1/tests/facts/mysql.MysqlDatabases/multiple_custom_connection.json +18 -0
  259. pyinfra-3.5.1/tests/facts/mysql.MysqlUserGrants/multiple.json +18 -0
  260. pyinfra-3.5.1/tests/facts/mysql.MysqlUsers/multiple.json +78 -0
  261. pyinfra-3.5.1/tests/facts/npm.NpmPackages/local_packages.json +13 -0
  262. pyinfra-3.5.1/tests/facts/npm.NpmPackages/packages.json +12 -0
  263. pyinfra-3.5.1/tests/facts/openrc.OpenrcEnabled/services.json +18 -0
  264. pyinfra-3.5.1/tests/facts/openrc.OpenrcEnabled/services_runlevel.json +19 -0
  265. pyinfra-3.5.1/tests/facts/openrc.OpenrcStatus/services.json +22 -0
  266. pyinfra-3.5.1/tests/facts/openrc.OpenrcStatus/services_runlevel.json +22 -0
  267. pyinfra-3.5.1/tests/facts/opkg.OpkgConf/opkg_conf.json +42 -0
  268. pyinfra-3.5.1/tests/facts/opkg.OpkgFeeds/opkg_feeds.json +51 -0
  269. pyinfra-3.5.1/tests/facts/opkg.OpkgInstallableArchitectures/opkg_installable_architectures.json +20 -0
  270. pyinfra-3.5.1/tests/facts/opkg.OpkgPackages/opkg_packages.json +39 -0
  271. pyinfra-3.5.1/tests/facts/opkg.OpkgUpgradeablePackages/opkg_upgradeable_packages.json +34 -0
  272. pyinfra-3.5.1/tests/facts/pacman.PacmanPackages/packages.json +56 -0
  273. pyinfra-3.5.1/tests/facts/pip.Pip3Packages/packages.json +10 -0
  274. pyinfra-3.5.1/tests/facts/pip.PipPackages/packages.json +10 -0
  275. pyinfra-3.5.1/tests/facts/pip.PipPackages/packages_pip3.json +11 -0
  276. pyinfra-3.5.1/tests/facts/pipx.PipxEnvironment/environment.json +22 -0
  277. pyinfra-3.5.1/tests/facts/pipx.PipxPackages/packages.json +12 -0
  278. pyinfra-3.5.1/tests/facts/pkg.PkgPackages/packages.json +9 -0
  279. pyinfra-3.5.1/tests/facts/pkgin.PkginPackages/packages.json +28 -0
  280. pyinfra-3.5.1/tests/facts/podman.PodmanPs/empty.json +8 -0
  281. pyinfra-3.5.1/tests/facts/podman.PodmanPs/onecontainer.json +74 -0
  282. pyinfra-3.5.1/tests/facts/podman.PodmanSystemInfo/info1.json +290 -0
  283. pyinfra-3.5.1/tests/facts/postgresql.PostgresqlDatabases/multiple.json +42 -0
  284. pyinfra-3.5.1/tests/facts/postgresql.PostgresqlRoles/multiple.json +40 -0
  285. pyinfra-3.5.1/tests/facts/postgresql.PostgresqlRoles/multiple_custom_connection.json +44 -0
  286. pyinfra-3.5.1/tests/facts/rpm.RpmPackage/package.json +12 -0
  287. pyinfra-3.5.1/tests/facts/rpm.RpmPackageProvides/package.json +11 -0
  288. pyinfra-3.5.1/tests/facts/rpm.RpmPackages/packages.json +10 -0
  289. pyinfra-3.5.1/tests/facts/runit.RunitManaged/single.json +11 -0
  290. pyinfra-3.5.1/tests/facts/runit.RunitManaged/status.json +21 -0
  291. pyinfra-3.5.1/tests/facts/runit.RunitStatus/single.json +11 -0
  292. pyinfra-3.5.1/tests/facts/runit.RunitStatus/status.json +23 -0
  293. pyinfra-3.5.1/tests/facts/selinux.FileContext/file_context.json +13 -0
  294. pyinfra-3.5.1/tests/facts/selinux.FileContextMapping/found.json +14 -0
  295. pyinfra-3.5.1/tests/facts/selinux.FileContextMapping/not_found.json +8 -0
  296. pyinfra-3.5.1/tests/facts/selinux.SEBoolean/get.json +9 -0
  297. pyinfra-3.5.1/tests/facts/selinux.SEPort/generic_and_specific.json +10 -0
  298. pyinfra-3.5.1/tests/facts/selinux.SEPort/get_bad_port.json +8 -0
  299. pyinfra-3.5.1/tests/facts/selinux.SEPort/only_generic.json +9 -0
  300. pyinfra-3.5.1/tests/facts/selinux.SEPorts/line_noise_input.json +8 -0
  301. pyinfra-3.5.1/tests/facts/selinux.SEPorts/multiple_single_ports.json +10 -0
  302. pyinfra-3.5.1/tests/facts/selinux.SEPorts/only_single_port.json +10 -0
  303. pyinfra-3.5.1/tests/facts/selinux.SEPorts/port_range.json +14 -0
  304. pyinfra-3.5.1/tests/facts/selinux.SEPorts/single_and_range.json +10 -0
  305. pyinfra-3.5.1/tests/facts/server.Arch/arch.json +5 -0
  306. pyinfra-3.5.1/tests/facts/server.Command/command.json +6 -0
  307. pyinfra-3.5.1/tests/facts/server.Date/date.json +5 -0
  308. pyinfra-3.5.1/tests/facts/server.Groups/groups.json +13 -0
  309. pyinfra-3.5.1/tests/facts/server.HasGui/gui_absent.json +5 -0
  310. pyinfra-3.5.1/tests/facts/server.HasGui/gui_present.json +7 -0
  311. pyinfra-3.5.1/tests/facts/server.Home/home.json +5 -0
  312. pyinfra-3.5.1/tests/facts/server.Home/root.json +6 -0
  313. pyinfra-3.5.1/tests/facts/server.Home/some_user.json +6 -0
  314. pyinfra-3.5.1/tests/facts/server.Hostname/hostname.json +5 -0
  315. pyinfra-3.5.1/tests/facts/server.KernelModules/modules.json +40 -0
  316. pyinfra-3.5.1/tests/facts/server.LinuxDistribution/archlinux.json +36 -0
  317. pyinfra-3.5.1/tests/facts/server.LinuxDistribution/centos-6.json +19 -0
  318. pyinfra-3.5.1/tests/facts/server.LinuxDistribution/centos-7.json +46 -0
  319. pyinfra-3.5.1/tests/facts/server.LinuxDistribution/no_match.json +10 -0
  320. pyinfra-3.5.1/tests/facts/server.LinuxDistribution/ubuntu.json +21 -0
  321. pyinfra-3.5.1/tests/facts/server.LinuxGui/gnome_present.json +7 -0
  322. pyinfra-3.5.1/tests/facts/server.LinuxName/ubuntu.json +8 -0
  323. pyinfra-3.5.1/tests/facts/server.Locales +17 -0
  324. pyinfra-3.5.1/tests/facts/server.LsbRelease/release.json +17 -0
  325. pyinfra-3.5.1/tests/facts/server.Mounts/mounts.json +48 -0
  326. pyinfra-3.5.1/tests/facts/server.Os/os.json +5 -0
  327. pyinfra-3.5.1/tests/facts/server.OsVersion/os_version.json +5 -0
  328. pyinfra-3.5.1/tests/facts/server.Port/empty.json +7 -0
  329. pyinfra-3.5.1/tests/facts/server.Port/one-process.json +12 -0
  330. pyinfra-3.5.1/tests/facts/server.Port/two-processes.json +14 -0
  331. pyinfra-3.5.1/tests/facts/server.RebootRequired/alpine_reboot_required.json +5 -0
  332. pyinfra-3.5.1/tests/facts/server.RebootRequired/freebsd_reboot_required.json +4 -0
  333. pyinfra-3.5.1/tests/facts/server.RebootRequired/linux_no_reboot.json +5 -0
  334. pyinfra-3.5.1/tests/facts/server.RebootRequired/linux_reboot_required.json +5 -0
  335. pyinfra-3.5.1/tests/facts/server.SecurityLimits/security_limits.json +74 -0
  336. pyinfra-3.5.1/tests/facts/server.Selinux/no-output.json +10 -0
  337. pyinfra-3.5.1/tests/facts/server.Selinux/selinux.json +11 -0
  338. pyinfra-3.5.1/tests/facts/server.Sysctl/sysctl_linux.json +14 -0
  339. pyinfra-3.5.1/tests/facts/server.Sysctl/sysctl_macos.json +13 -0
  340. pyinfra-3.5.1/tests/facts/server.Users/mixed.json +107 -0
  341. pyinfra-3.5.1/tests/facts/server.Which/which.json +6 -0
  342. pyinfra-3.5.1/tests/facts/snap.SnapPackage/lxd.json +73 -0
  343. pyinfra-3.5.1/tests/facts/snap.SnapPackage/not_found.json +9 -0
  344. pyinfra-3.5.1/tests/facts/snap.SnapPackage/snapd.json +36 -0
  345. pyinfra-3.5.1/tests/facts/snap.SnapPackage/vlc.json +42 -0
  346. pyinfra-3.5.1/tests/facts/snap.SnapPackages/packages.json +19 -0
  347. pyinfra-3.5.1/tests/facts/systemd.SystemdEnabled/machine_services.json +20 -0
  348. pyinfra-3.5.1/tests/facts/systemd.SystemdEnabled/root_machine_services.json +20 -0
  349. pyinfra-3.5.1/tests/facts/systemd.SystemdEnabled/services.json +19 -0
  350. pyinfra-3.5.1/tests/facts/systemd.SystemdEnabled/user_machine_services.json +20 -0
  351. pyinfra-3.5.1/tests/facts/systemd.SystemdEnabled/user_services.json +20 -0
  352. pyinfra-3.5.1/tests/facts/systemd.SystemdStatus/machine_services.json +24 -0
  353. pyinfra-3.5.1/tests/facts/systemd.SystemdStatus/root_machine_services.json +24 -0
  354. pyinfra-3.5.1/tests/facts/systemd.SystemdStatus/services.json +27 -0
  355. pyinfra-3.5.1/tests/facts/systemd.SystemdStatus/services_invalid_output.json +25 -0
  356. pyinfra-3.5.1/tests/facts/systemd.SystemdStatus/user_machine_services.json +24 -0
  357. pyinfra-3.5.1/tests/facts/systemd.SystemdStatus/user_services.json +24 -0
  358. pyinfra-3.5.1/tests/facts/sysvinit.InitdStatus/services.json +13 -0
  359. pyinfra-3.5.1/tests/facts/upstart.UpstartStatus/services.json +12 -0
  360. pyinfra-3.5.1/tests/facts/vzctl.OpenvzContainers/containers.json +14 -0
  361. pyinfra-3.5.1/tests/facts/xbps.XbpsPackages/dot-in-package-name.json +14 -0
  362. pyinfra-3.5.1/tests/facts/xbps.XbpsPackages/packages.json +10 -0
  363. pyinfra-3.5.1/tests/facts/yum.YumRepositories/repos.json +18 -0
  364. pyinfra-3.5.1/tests/facts/zfs.Datasets/datasets.yaml +26 -0
  365. pyinfra-3.5.1/tests/facts/zfs.Filesystems/filesystems.yaml +21 -0
  366. pyinfra-3.5.1/tests/facts/zfs.Pools/pools.yaml +9 -0
  367. pyinfra-3.5.1/tests/facts/zfs.Snapshots/snapshots.yaml +16 -0
  368. pyinfra-3.5.1/tests/facts/zfs.Volumes/volumes.yaml +15 -0
  369. pyinfra-3.5.1/tests/facts/zypper.ZypperRepositories/repos.json +18 -0
  370. pyinfra-3.5.1/tests/operations/apk.packages/add_packages.json +9 -0
  371. pyinfra-3.5.1/tests/operations/apk.packages/remove_packages.json +14 -0
  372. pyinfra-3.5.1/tests/operations/apk.packages/upgrade_packages.json +14 -0
  373. pyinfra-3.5.1/tests/operations/apk.packages/upgrade_update.json +18 -0
  374. pyinfra-3.5.1/tests/operations/apk.upgrade/upgrade_available.json +10 -0
  375. pyinfra-3.5.1/tests/operations/apt.deb/add.json +23 -0
  376. pyinfra-3.5.1/tests/operations/apt.deb/add_existing.json +20 -0
  377. pyinfra-3.5.1/tests/operations/apt.deb/download_add.json +30 -0
  378. pyinfra-3.5.1/tests/operations/apt.deb/remove_existing.json +24 -0
  379. pyinfra-3.5.1/tests/operations/apt.deb/remove_no_exist.json +21 -0
  380. pyinfra-3.5.1/tests/operations/apt.dist_upgrade/dist_upgrade.json +11 -0
  381. pyinfra-3.5.1/tests/operations/apt.dist_upgrade/dist_upgrade_autoremove.json +16 -0
  382. pyinfra-3.5.1/tests/operations/apt.key/add.json +14 -0
  383. pyinfra-3.5.1/tests/operations/apt.key/add_exists.json +15 -0
  384. pyinfra-3.5.1/tests/operations/apt.key/add_keyserver.json +12 -0
  385. pyinfra-3.5.1/tests/operations/apt.key/add_keyserver_exists.json +14 -0
  386. pyinfra-3.5.1/tests/operations/apt.key/add_keyserver_multiple.json +12 -0
  387. pyinfra-3.5.1/tests/operations/apt.key/add_keyserver_multiple_partial.json +14 -0
  388. pyinfra-3.5.1/tests/operations/apt.key/add_keyserver_no_keyid.json +12 -0
  389. pyinfra-3.5.1/tests/operations/apt.key/add_no_gpg.json +14 -0
  390. pyinfra-3.5.1/tests/operations/apt.key/add_url.json +14 -0
  391. pyinfra-3.5.1/tests/operations/apt.packages/add_package.json +9 -0
  392. pyinfra-3.5.1/tests/operations/apt.packages/add_package_allow_downgrades.json +12 -0
  393. pyinfra-3.5.1/tests/operations/apt.packages/add_package_force.json +12 -0
  394. pyinfra-3.5.1/tests/operations/apt.packages/add_package_no_recommends.json +12 -0
  395. pyinfra-3.5.1/tests/operations/apt.packages/add_packages.json +17 -0
  396. pyinfra-3.5.1/tests/operations/apt.packages/install_with_args.json +12 -0
  397. pyinfra-3.5.1/tests/operations/apt.packages/remove_packages.json +19 -0
  398. pyinfra-3.5.1/tests/operations/apt.packages/remove_packages_with_args.json +17 -0
  399. pyinfra-3.5.1/tests/operations/apt.packages/update_cache_old.json +19 -0
  400. pyinfra-3.5.1/tests/operations/apt.packages/update_cached.json +17 -0
  401. pyinfra-3.5.1/tests/operations/apt.packages/update_nocache.json +17 -0
  402. pyinfra-3.5.1/tests/operations/apt.packages/update_upgrade.json +16 -0
  403. pyinfra-3.5.1/tests/operations/apt.packages/upgrade_packages.json +17 -0
  404. pyinfra-3.5.1/tests/operations/apt.ppa/add.json +10 -0
  405. pyinfra-3.5.1/tests/operations/apt.ppa/remove.json +15 -0
  406. pyinfra-3.5.1/tests/operations/apt.repo/add.json +12 -0
  407. pyinfra-3.5.1/tests/operations/apt.repo/add_existing.json +14 -0
  408. pyinfra-3.5.1/tests/operations/apt.repo/add_filename.json +15 -0
  409. pyinfra-3.5.1/tests/operations/apt.repo/remove.json +21 -0
  410. pyinfra-3.5.1/tests/operations/apt.upgrade/upgrade.json +17 -0
  411. pyinfra-3.5.1/tests/operations/apt.upgrade/upgrade_autoremove.json +11 -0
  412. pyinfra-3.5.1/tests/operations/brew.cask_upgrade/new_cli_upgrade.json +8 -0
  413. pyinfra-3.5.1/tests/operations/brew.cask_upgrade/old_cli_upgrade.json +8 -0
  414. pyinfra-3.5.1/tests/operations/brew.casks/add_casks_upgrade.json +16 -0
  415. pyinfra-3.5.1/tests/operations/brew.casks/new_cli_add_casks.json +8 -0
  416. pyinfra-3.5.1/tests/operations/brew.casks/old_cli_add_casks.json +10 -0
  417. pyinfra-3.5.1/tests/operations/brew.packages/add_packages.json +9 -0
  418. pyinfra-3.5.1/tests/operations/brew.packages/remove_packages.json +14 -0
  419. pyinfra-3.5.1/tests/operations/brew.packages/upgrade_packages.json +17 -0
  420. pyinfra-3.5.1/tests/operations/brew.packages/upgrade_update.json +18 -0
  421. pyinfra-3.5.1/tests/operations/brew.tap/add_exists.json +10 -0
  422. pyinfra-3.5.1/tests/operations/brew.tap/add_tap.json +9 -0
  423. pyinfra-3.5.1/tests/operations/brew.tap/add_tap_bad_url.json +11 -0
  424. pyinfra-3.5.1/tests/operations/brew.tap/add_tap_no_args.json +9 -0
  425. pyinfra-3.5.1/tests/operations/brew.tap/add_tap_url.json +14 -0
  426. pyinfra-3.5.1/tests/operations/brew.tap/add_tap_url_exists.json +15 -0
  427. pyinfra-3.5.1/tests/operations/brew.tap/add_tap_url_no_src.json +10 -0
  428. pyinfra-3.5.1/tests/operations/brew.tap/remove_no_exists.json +11 -0
  429. pyinfra-3.5.1/tests/operations/brew.tap/remove_tap.json +14 -0
  430. pyinfra-3.5.1/tests/operations/brew.upgrade/upgrade.json +6 -0
  431. pyinfra-3.5.1/tests/operations/bsdinit.service/disabled.json +20 -0
  432. pyinfra-3.5.1/tests/operations/bsdinit.service/enabled.json +19 -0
  433. pyinfra-3.5.1/tests/operations/bsdinit.service/reload.json +17 -0
  434. pyinfra-3.5.1/tests/operations/bsdinit.service/skip_started.json +11 -0
  435. pyinfra-3.5.1/tests/operations/bsdinit.service/start.json +12 -0
  436. pyinfra-3.5.1/tests/operations/bsdinit.service/stop.json +15 -0
  437. pyinfra-3.5.1/tests/operations/cargo.packages/add_packages.json +12 -0
  438. pyinfra-3.5.1/tests/operations/cargo.packages/remove_packages.json +17 -0
  439. pyinfra-3.5.1/tests/operations/choco.install/install.json +6 -0
  440. pyinfra-3.5.1/tests/operations/choco.packages/add_packages.json +9 -0
  441. pyinfra-3.5.1/tests/operations/choco.packages/remove_packages.json +14 -0
  442. pyinfra-3.5.1/tests/operations/crontab.crontab/add.json +12 -0
  443. pyinfra-3.5.1/tests/operations/crontab.crontab/add_another.json +16 -0
  444. pyinfra-3.5.1/tests/operations/crontab.crontab/add_existing.json +18 -0
  445. pyinfra-3.5.1/tests/operations/crontab.crontab/add_existing_int.json +22 -0
  446. pyinfra-3.5.1/tests/operations/crontab.crontab/add_named.json +27 -0
  447. pyinfra-3.5.1/tests/operations/crontab.crontab/add_special_time.json +15 -0
  448. pyinfra-3.5.1/tests/operations/crontab.crontab/add_user.json +15 -0
  449. pyinfra-3.5.1/tests/operations/crontab.crontab/edit.json +26 -0
  450. pyinfra-3.5.1/tests/operations/crontab.crontab/edit_existing_with_newline.json +26 -0
  451. pyinfra-3.5.1/tests/operations/crontab.crontab/edit_named.json +28 -0
  452. pyinfra-3.5.1/tests/operations/crontab.crontab/edit_special_time.json +21 -0
  453. pyinfra-3.5.1/tests/operations/crontab.crontab/remove.json +25 -0
  454. pyinfra-3.5.1/tests/operations/dnf.key/add.json +6 -0
  455. pyinfra-3.5.1/tests/operations/dnf.packages/add_packages.json +20 -0
  456. pyinfra-3.5.1/tests/operations/dnf.packages/install_with_args.json +15 -0
  457. pyinfra-3.5.1/tests/operations/dnf.packages/install_with_nobest.json +15 -0
  458. pyinfra-3.5.1/tests/operations/dnf.packages/noop_add_package_alias.json +13 -0
  459. pyinfra-3.5.1/tests/operations/dnf.packages/remove_package.json +25 -0
  460. pyinfra-3.5.1/tests/operations/dnf.packages/uninstall_with_args.json +20 -0
  461. pyinfra-3.5.1/tests/operations/dnf.packages/update_clean.json +16 -0
  462. pyinfra-3.5.1/tests/operations/dnf.repo/add.json +23 -0
  463. pyinfra-3.5.1/tests/operations/dnf.repo/remove.json +14 -0
  464. pyinfra-3.5.1/tests/operations/dnf.rpm/add.json +16 -0
  465. pyinfra-3.5.1/tests/operations/dnf.rpm/add_existing.json +16 -0
  466. pyinfra-3.5.1/tests/operations/dnf.rpm/add_existing_upgrade.json +15 -0
  467. pyinfra-3.5.1/tests/operations/dnf.rpm/add_url.json +25 -0
  468. pyinfra-3.5.1/tests/operations/dnf.rpm/remove.json +20 -0
  469. pyinfra-3.5.1/tests/operations/docker.container/add_and_start_no_existent_container.json +20 -0
  470. pyinfra-3.5.1/tests/operations/docker.container/add_existent_container.json +248 -0
  471. pyinfra-3.5.1/tests/operations/docker.container/add_no_existent_container.json +19 -0
  472. pyinfra-3.5.1/tests/operations/docker.container/remove_container.json +248 -0
  473. pyinfra-3.5.1/tests/operations/docker.container/start_container.json +246 -0
  474. pyinfra-3.5.1/tests/operations/docker.container/stop_container.json +248 -0
  475. pyinfra-3.5.1/tests/operations/docker.image/pull_image.json +12 -0
  476. pyinfra-3.5.1/tests/operations/docker.image/remove_image.json +12 -0
  477. pyinfra-3.5.1/tests/operations/docker.network/add_network.json +16 -0
  478. pyinfra-3.5.1/tests/operations/docker.network/add_network_macvlan_with_aux_addresses.json +21 -0
  479. pyinfra-3.5.1/tests/operations/docker.network/add_network_with_gateway.json +15 -0
  480. pyinfra-3.5.1/tests/operations/docker.network/add_network_with_ip_range.json +15 -0
  481. pyinfra-3.5.1/tests/operations/docker.network/add_network_with_opts.json +16 -0
  482. pyinfra-3.5.1/tests/operations/docker.network/remove_network.json +14 -0
  483. pyinfra-3.5.1/tests/operations/docker.plugin/disable_plugin.json +20 -0
  484. pyinfra-3.5.1/tests/operations/docker.plugin/enable_plugin.json +19 -0
  485. pyinfra-3.5.1/tests/operations/docker.plugin/install_plugin.json +13 -0
  486. pyinfra-3.5.1/tests/operations/docker.plugin/install_plugin_disabled.json +14 -0
  487. pyinfra-3.5.1/tests/operations/docker.plugin/install_plugin_with_alias_and_options.json +18 -0
  488. pyinfra-3.5.1/tests/operations/docker.plugin/remove_plugin.json +20 -0
  489. pyinfra-3.5.1/tests/operations/docker.plugin/set_plugin_options.json +31 -0
  490. pyinfra-3.5.1/tests/operations/docker.plugin/set_plugin_options_disabled_plugin.json +30 -0
  491. pyinfra-3.5.1/tests/operations/docker.volume/add_volume.json +14 -0
  492. pyinfra-3.5.1/tests/operations/docker.volume/add_volume_with_driver.json +15 -0
  493. pyinfra-3.5.1/tests/operations/docker.volume/add_volume_with_labels.json +15 -0
  494. pyinfra-3.5.1/tests/operations/files.block/add_existing_block_different_content.json +17 -0
  495. pyinfra-3.5.1/tests/operations/files.block/add_existing_block_different_content_and_backup.json +18 -0
  496. pyinfra-3.5.1/tests/operations/files.block/add_existing_block_different_content_multiple_lines.json +17 -0
  497. pyinfra-3.5.1/tests/operations/files.block/add_existing_block_same_content.json +16 -0
  498. pyinfra-3.5.1/tests/operations/files.block/add_line_given_but_before_eq_after.json +19 -0
  499. pyinfra-3.5.1/tests/operations/files.block/add_no_content_provided.json +13 -0
  500. pyinfra-3.5.1/tests/operations/files.block/add_no_existing_block_and_no_line.json +17 -0
  501. pyinfra-3.5.1/tests/operations/files.block/add_no_existing_block_and_non_str_line_given.json +18 -0
  502. pyinfra-3.5.1/tests/operations/files.block/add_no_existing_block_line_provided.json +17 -0
  503. pyinfra-3.5.1/tests/operations/files.block/add_no_existing_block_line_provided_escape_regex.json +18 -0
  504. pyinfra-3.5.1/tests/operations/files.block/add_no_existing_file.json +17 -0
  505. pyinfra-3.5.1/tests/operations/files.block/add_no_line_given_but_before_ne_after.json +18 -0
  506. pyinfra-3.5.1/tests/operations/files.block/remove_but_content_not_none.json +16 -0
  507. pyinfra-3.5.1/tests/operations/files.block/remove_existing_block.json +15 -0
  508. pyinfra-3.5.1/tests/operations/files.block/remove_no_existing_block.json +12 -0
  509. pyinfra-3.5.1/tests/operations/files.block/remove_no_file.json +12 -0
  510. pyinfra-3.5.1/tests/operations/files.directory/add.json +19 -0
  511. pyinfra-3.5.1/tests/operations/files.directory/add_force.json +15 -0
  512. pyinfra-3.5.1/tests/operations/files.directory/add_force_backup_dir.json +16 -0
  513. pyinfra-3.5.1/tests/operations/files.directory/add_force_no_backup.json +16 -0
  514. pyinfra-3.5.1/tests/operations/files.directory/add_with_spaces.json +19 -0
  515. pyinfra-3.5.1/tests/operations/files.directory/delete.json +18 -0
  516. pyinfra-3.5.1/tests/operations/files.directory/edit.json +21 -0
  517. pyinfra-3.5.1/tests/operations/files.directory/edit_with_spaces.json +21 -0
  518. pyinfra-3.5.1/tests/operations/files.directory/ignore_link_type.json +16 -0
  519. pyinfra-3.5.1/tests/operations/files.directory/invalid.json +17 -0
  520. pyinfra-3.5.1/tests/operations/files.directory/invalid_type.json +7 -0
  521. pyinfra-3.5.1/tests/operations/files.download/download.json +23 -0
  522. pyinfra-3.5.1/tests/operations/files.download/download_cache_time.json +20 -0
  523. pyinfra-3.5.1/tests/operations/files.download/download_cache_time_needs_refresh.json +22 -0
  524. pyinfra-3.5.1/tests/operations/files.download/download_directory.json +18 -0
  525. pyinfra-3.5.1/tests/operations/files.download/download_existing_checksum.json +34 -0
  526. pyinfra-3.5.1/tests/operations/files.download/download_extra_args_curl.json +22 -0
  527. pyinfra-3.5.1/tests/operations/files.download/download_extra_args_wget.json +23 -0
  528. pyinfra-3.5.1/tests/operations/files.download/download_headers_curl.json +22 -0
  529. pyinfra-3.5.1/tests/operations/files.download/download_headers_wget.json +23 -0
  530. pyinfra-3.5.1/tests/operations/files.download/download_insecure_curl.json +20 -0
  531. pyinfra-3.5.1/tests/operations/files.download/download_insecure_wget.json +21 -0
  532. pyinfra-3.5.1/tests/operations/files.download/download_needs_quotes.json +23 -0
  533. pyinfra-3.5.1/tests/operations/files.download/download_no_curl_no_wget.json +24 -0
  534. pyinfra-3.5.1/tests/operations/files.download/download_proxy_curl.json +20 -0
  535. pyinfra-3.5.1/tests/operations/files.download/download_proxy_wget.json +21 -0
  536. pyinfra-3.5.1/tests/operations/files.download/download_wget.json +24 -0
  537. pyinfra-3.5.1/tests/operations/files.download/download_with_checksums.json +25 -0
  538. pyinfra-3.5.1/tests/operations/files.download/download_with_checksums_needs_quotes.json +25 -0
  539. pyinfra-3.5.1/tests/operations/files.download/pathlib_download.json +24 -0
  540. pyinfra-3.5.1/tests/operations/files.download/skip_existing.json +14 -0
  541. pyinfra-3.5.1/tests/operations/files.file/add.json +18 -0
  542. pyinfra-3.5.1/tests/operations/files.file/add_force.json +15 -0
  543. pyinfra-3.5.1/tests/operations/files.file/add_force_backup_dir.json +16 -0
  544. pyinfra-3.5.1/tests/operations/files.file/add_force_backup_dir_nested.json +19 -0
  545. pyinfra-3.5.1/tests/operations/files.file/add_force_no_backup.json +16 -0
  546. pyinfra-3.5.1/tests/operations/files.file/add_special_chars.json +21 -0
  547. pyinfra-3.5.1/tests/operations/files.file/add_with_spaces.json +18 -0
  548. pyinfra-3.5.1/tests/operations/files.file/create_directory.json +18 -0
  549. pyinfra-3.5.1/tests/operations/files.file/delete.json +18 -0
  550. pyinfra-3.5.1/tests/operations/files.file/delete_with_spaces.json +18 -0
  551. pyinfra-3.5.1/tests/operations/files.file/edit.json +21 -0
  552. pyinfra-3.5.1/tests/operations/files.file/edit_nothing.json +19 -0
  553. pyinfra-3.5.1/tests/operations/files.file/invalid.json +17 -0
  554. pyinfra-3.5.1/tests/operations/files.file/invalid_type.json +7 -0
  555. pyinfra-3.5.1/tests/operations/files.file/touch.json +18 -0
  556. pyinfra-3.5.1/tests/operations/files.flags/clear_no_flags.json +12 -0
  557. pyinfra-3.5.1/tests/operations/files.flags/clear_one_flag_already_clear.json +15 -0
  558. pyinfra-3.5.1/tests/operations/files.flags/clear_one_flag_was_set.json +15 -0
  559. pyinfra-3.5.1/tests/operations/files.flags/clear_two_flags.json +15 -0
  560. pyinfra-3.5.1/tests/operations/files.flags/clear_two_flags_already_clear.json +15 -0
  561. pyinfra-3.5.1/tests/operations/files.flags/clear_two_flags_first_already_clear.json +15 -0
  562. pyinfra-3.5.1/tests/operations/files.flags/clear_two_flags_second_already_clear.json +15 -0
  563. pyinfra-3.5.1/tests/operations/files.flags/set_no_flags.json +12 -0
  564. pyinfra-3.5.1/tests/operations/files.flags/set_one_flag_already_set.json +15 -0
  565. pyinfra-3.5.1/tests/operations/files.flags/set_one_flag_not_yet_set.json +15 -0
  566. pyinfra-3.5.1/tests/operations/files.flags/set_two_flags.json +15 -0
  567. pyinfra-3.5.1/tests/operations/files.flags/set_two_flags_already_set.json +15 -0
  568. pyinfra-3.5.1/tests/operations/files.flags/set_two_flags_first_already_set.json +15 -0
  569. pyinfra-3.5.1/tests/operations/files.flags/set_two_flags_second_already_set.json +15 -0
  570. pyinfra-3.5.1/tests/operations/files.get/create_directory.json +17 -0
  571. pyinfra-3.5.1/tests/operations/files.get/different_remote.json +22 -0
  572. pyinfra-3.5.1/tests/operations/files.get/fallback_md5.json +25 -0
  573. pyinfra-3.5.1/tests/operations/files.get/fallback_sha256.json +28 -0
  574. pyinfra-3.5.1/tests/operations/files.get/no_change_md5.json +24 -0
  575. pyinfra-3.5.1/tests/operations/files.get/no_change_sha256.json +27 -0
  576. pyinfra-3.5.1/tests/operations/files.get/no_local.json +13 -0
  577. pyinfra-3.5.1/tests/operations/files.get/no_remote.json +11 -0
  578. pyinfra-3.5.1/tests/operations/files.get/path_with_spaces.json +11 -0
  579. pyinfra-3.5.1/tests/operations/files.get/path_with_spaces_already_escaped.json +11 -0
  580. pyinfra-3.5.1/tests/operations/files.get/pathlib_path_with_spaces.json +12 -0
  581. pyinfra-3.5.1/tests/operations/files.line/add.json +11 -0
  582. pyinfra-3.5.1/tests/operations/files.line/add_backup.json +14 -0
  583. pyinfra-3.5.1/tests/operations/files.line/add_existing.json +14 -0
  584. pyinfra-3.5.1/tests/operations/files.line/add_replace.json +16 -0
  585. pyinfra-3.5.1/tests/operations/files.line/add_replace_noop.json +15 -0
  586. pyinfra-3.5.1/tests/operations/files.line/add_with_quote.json +11 -0
  587. pyinfra-3.5.1/tests/operations/files.line/edit.json +17 -0
  588. pyinfra-3.5.1/tests/operations/files.line/edit_backup.json +18 -0
  589. pyinfra-3.5.1/tests/operations/files.line/pathlib_edit.json +17 -0
  590. pyinfra-3.5.1/tests/operations/files.link/add.json +17 -0
  591. pyinfra-3.5.1/tests/operations/files.link/add_force.json +16 -0
  592. pyinfra-3.5.1/tests/operations/files.link/add_force_backup_dir.json +17 -0
  593. pyinfra-3.5.1/tests/operations/files.link/add_force_no_backup.json +17 -0
  594. pyinfra-3.5.1/tests/operations/files.link/add_no_target.json +16 -0
  595. pyinfra-3.5.1/tests/operations/files.link/add_with_spaces.json +17 -0
  596. pyinfra-3.5.1/tests/operations/files.link/create_directory.json +19 -0
  597. pyinfra-3.5.1/tests/operations/files.link/delete.json +18 -0
  598. pyinfra-3.5.1/tests/operations/files.link/edit.json +22 -0
  599. pyinfra-3.5.1/tests/operations/files.link/edit_nothing.json +19 -0
  600. pyinfra-3.5.1/tests/operations/files.link/invalid.json +17 -0
  601. pyinfra-3.5.1/tests/operations/files.link/invalid_type.json +7 -0
  602. pyinfra-3.5.1/tests/operations/files.link/pathlib_edit.json +22 -0
  603. pyinfra-3.5.1/tests/operations/files.move/directory.json +19 -0
  604. pyinfra-3.5.1/tests/operations/files.move/invalid_dest.json +18 -0
  605. pyinfra-3.5.1/tests/operations/files.move/invalid_src.json +18 -0
  606. pyinfra-3.5.1/tests/operations/files.move/link.json +21 -0
  607. pyinfra-3.5.1/tests/operations/files.move/no_conflict.json +18 -0
  608. pyinfra-3.5.1/tests/operations/files.move/no_overwrite.json +23 -0
  609. pyinfra-3.5.1/tests/operations/files.move/overwrite.json +21 -0
  610. pyinfra-3.5.1/tests/operations/files.put/atime_mtime_sub_second.json +31 -0
  611. pyinfra-3.5.1/tests/operations/files.put/change_atime_eq_mtime_ref_remote.json +37 -0
  612. pyinfra-3.5.1/tests/operations/files.put/change_mode_owner.json +33 -0
  613. pyinfra-3.5.1/tests/operations/files.put/change_mode_owner_with_spaces.json +33 -0
  614. pyinfra-3.5.1/tests/operations/files.put/change_mtime_arg_no_tz.json +37 -0
  615. pyinfra-3.5.1/tests/operations/files.put/change_mtime_atime_ref_local file.json +44 -0
  616. pyinfra-3.5.1/tests/operations/files.put/copy_local_permissions.json +26 -0
  617. pyinfra-3.5.1/tests/operations/files.put/create_directory.json +29 -0
  618. pyinfra-3.5.1/tests/operations/files.put/different_remote.json +37 -0
  619. pyinfra-3.5.1/tests/operations/files.put/fallback_md5.json +31 -0
  620. pyinfra-3.5.1/tests/operations/files.put/fallback_sha256.json +34 -0
  621. pyinfra-3.5.1/tests/operations/files.put/no_change.json +22 -0
  622. pyinfra-3.5.1/tests/operations/files.put/no_change_atime_mtime.json +43 -0
  623. pyinfra-3.5.1/tests/operations/files.put/no_change_md5.json +25 -0
  624. pyinfra-3.5.1/tests/operations/files.put/no_change_same_mode_as_local.json +29 -0
  625. pyinfra-3.5.1/tests/operations/files.put/no_change_sha256.json +28 -0
  626. pyinfra-3.5.1/tests/operations/files.put/no_local.json +7 -0
  627. pyinfra-3.5.1/tests/operations/files.put/no_remote.json +28 -0
  628. pyinfra-3.5.1/tests/operations/files.put/path_with_spaces.json +21 -0
  629. pyinfra-3.5.1/tests/operations/files.put/path_with_spaces_already_escaped.json +21 -0
  630. pyinfra-3.5.1/tests/operations/files.put/pathlib_with_spaces.json +22 -0
  631. pyinfra-3.5.1/tests/operations/files.put/upload_to_directory.json +28 -0
  632. pyinfra-3.5.1/tests/operations/files.replace/no_match.json +10 -0
  633. pyinfra-3.5.1/tests/operations/files.replace/replace_double_quotes_interpolate.json +14 -0
  634. pyinfra-3.5.1/tests/operations/files.replace/replace_double_quotes_no_interpolate.json +14 -0
  635. pyinfra-3.5.1/tests/operations/files.replace/replace_single_quotes_interpolate.json +14 -0
  636. pyinfra-3.5.1/tests/operations/files.replace/replace_single_quotes_no_interpolate.json +14 -0
  637. pyinfra-3.5.1/tests/operations/files.replace/simple_interpolate.json +15 -0
  638. pyinfra-3.5.1/tests/operations/files.replace/simple_no_interpolate.json +15 -0
  639. pyinfra-3.5.1/tests/operations/files.sync/sync_delete_posix.json +78 -0
  640. pyinfra-3.5.1/tests/operations/files.sync/sync_delete_windows.json +97 -0
  641. pyinfra-3.5.1/tests/operations/files.sync/sync_destination_link.json +88 -0
  642. pyinfra-3.5.1/tests/operations/files.sync/sync_exclude_multiple.json +101 -0
  643. pyinfra-3.5.1/tests/operations/files.sync/sync_no_destination_exist.json +58 -0
  644. pyinfra-3.5.1/tests/operations/files.sync/sync_no_local_exist_posix.json +16 -0
  645. pyinfra-3.5.1/tests/operations/files.sync/sync_no_local_exist_windows.json +16 -0
  646. pyinfra-3.5.1/tests/operations/files.sync/sync_partial_exists.json +66 -0
  647. pyinfra-3.5.1/tests/operations/files.sync/sync_special_chars.json +40 -0
  648. pyinfra-3.5.1/tests/operations/files.template/invalid_template_syntax.json +18 -0
  649. pyinfra-3.5.1/tests/operations/files.template/no_remote.json +28 -0
  650. pyinfra-3.5.1/tests/operations/files.template/undefined_template_variable.json +18 -0
  651. pyinfra-3.5.1/tests/operations/flatpak.packages/install_package.json +10 -0
  652. pyinfra-3.5.1/tests/operations/flatpak.packages/install_packages.json +16 -0
  653. pyinfra-3.5.1/tests/operations/flatpak.packages/remove_packages.json +12 -0
  654. pyinfra-3.5.1/tests/operations/freebsd.freebsd_update.update/update.json +5 -0
  655. pyinfra-3.5.1/tests/operations/freebsd.pkg.autoremove/autoremove-with-jail.json +8 -0
  656. pyinfra-3.5.1/tests/operations/freebsd.pkg.autoremove/autoremove.json +5 -0
  657. pyinfra-3.5.1/tests/operations/freebsd.pkg.clean/clean-all-with-jail.json +9 -0
  658. pyinfra-3.5.1/tests/operations/freebsd.pkg.clean/clean-all.json +8 -0
  659. pyinfra-3.5.1/tests/operations/freebsd.pkg.clean/clean-with-jail.json +8 -0
  660. pyinfra-3.5.1/tests/operations/freebsd.pkg.clean/clean.json +5 -0
  661. pyinfra-3.5.1/tests/operations/freebsd.pkg.install/install-with-custom-repo.json +14 -0
  662. pyinfra-3.5.1/tests/operations/freebsd.pkg.install/install-with-jail-and-custom-repo.json +15 -0
  663. pyinfra-3.5.1/tests/operations/freebsd.pkg.install/install-with-jail.json +14 -0
  664. pyinfra-3.5.1/tests/operations/freebsd.pkg.install/install.json +11 -0
  665. pyinfra-3.5.1/tests/operations/freebsd.pkg.remove/remove-with-jail.json +13 -0
  666. pyinfra-3.5.1/tests/operations/freebsd.pkg.remove/remove.json +10 -0
  667. pyinfra-3.5.1/tests/operations/freebsd.pkg.update/update.json +5 -0
  668. pyinfra-3.5.1/tests/operations/freebsd.pkg.upgrade/upgrade.json +5 -0
  669. pyinfra-3.5.1/tests/operations/freebsd.service.service/custom.json +18 -0
  670. pyinfra-3.5.1/tests/operations/freebsd.service.service/reload.json +17 -0
  671. pyinfra-3.5.1/tests/operations/freebsd.service.service/restart.json +17 -0
  672. pyinfra-3.5.1/tests/operations/freebsd.service.service/start.json +17 -0
  673. pyinfra-3.5.1/tests/operations/freebsd.service.service/stop.json +17 -0
  674. pyinfra-3.5.1/tests/operations/freebsd.sysrc.sysrc/add.json +15 -0
  675. pyinfra-3.5.1/tests/operations/freebsd.sysrc.sysrc/del.json +15 -0
  676. pyinfra-3.5.1/tests/operations/freebsd.sysrc.sysrc/set.json +15 -0
  677. pyinfra-3.5.1/tests/operations/freebsd.sysrc.sysrc/sub.json +15 -0
  678. pyinfra-3.5.1/tests/operations/gem.packages/add_packages.json +9 -0
  679. pyinfra-3.5.1/tests/operations/gem.packages/remove_packages.json +14 -0
  680. pyinfra-3.5.1/tests/operations/git.bare_repo/chmod.json +20 -0
  681. pyinfra-3.5.1/tests/operations/git.bare_repo/delete.json +17 -0
  682. pyinfra-3.5.1/tests/operations/git.bare_repo/init.json +17 -0
  683. pyinfra-3.5.1/tests/operations/git.config/add_existing_multi_value.json +15 -0
  684. pyinfra-3.5.1/tests/operations/git.config/add_first_multi_value.json +14 -0
  685. pyinfra-3.5.1/tests/operations/git.config/add_second_multi_value.json +16 -0
  686. pyinfra-3.5.1/tests/operations/git.config/edit_global.json +13 -0
  687. pyinfra-3.5.1/tests/operations/git.config/edit_system.json +16 -0
  688. pyinfra-3.5.1/tests/operations/git.config/set_existing_global.json +12 -0
  689. pyinfra-3.5.1/tests/operations/git.config/set_existing_system.json +15 -0
  690. pyinfra-3.5.1/tests/operations/git.config/set_global.json +11 -0
  691. pyinfra-3.5.1/tests/operations/git.config/set_repo.json +19 -0
  692. pyinfra-3.5.1/tests/operations/git.config/set_system.json +14 -0
  693. pyinfra-3.5.1/tests/operations/git.repo/branch_pull.json +31 -0
  694. pyinfra-3.5.1/tests/operations/git.repo/clone.json +18 -0
  695. pyinfra-3.5.1/tests/operations/git.repo/clone_keyscan.json +25 -0
  696. pyinfra-3.5.1/tests/operations/git.repo/clone_keyscan_invalid.json +19 -0
  697. pyinfra-3.5.1/tests/operations/git.repo/rebase.json +22 -0
  698. pyinfra-3.5.1/tests/operations/git.repo/recursive_submodules.json +24 -0
  699. pyinfra-3.5.1/tests/operations/git.repo/update_submodules.json +23 -0
  700. pyinfra-3.5.1/tests/operations/git.worktree/create.json +18 -0
  701. pyinfra-3.5.1/tests/operations/git.worktree/create_detached.json +19 -0
  702. pyinfra-3.5.1/tests/operations/git.worktree/create_detached_from_commitish.json +20 -0
  703. pyinfra-3.5.1/tests/operations/git.worktree/create_existing_branch.json +19 -0
  704. pyinfra-3.5.1/tests/operations/git.worktree/create_force.json +19 -0
  705. pyinfra-3.5.1/tests/operations/git.worktree/create_from_commitish.json +19 -0
  706. pyinfra-3.5.1/tests/operations/git.worktree/create_new_branch.json +24 -0
  707. pyinfra-3.5.1/tests/operations/git.worktree/create_new_branch_from_commitish.json +25 -0
  708. pyinfra-3.5.1/tests/operations/git.worktree/pull.json +18 -0
  709. pyinfra-3.5.1/tests/operations/git.worktree/pull_disable.json +18 -0
  710. pyinfra-3.5.1/tests/operations/git.worktree/pull_from_bad_remote_branch.json +20 -0
  711. pyinfra-3.5.1/tests/operations/git.worktree/pull_from_remote_branch.json +21 -0
  712. pyinfra-3.5.1/tests/operations/git.worktree/pull_rebase from_remote_branch.json +22 -0
  713. pyinfra-3.5.1/tests/operations/git.worktree/pull_rebase.json +21 -0
  714. pyinfra-3.5.1/tests/operations/git.worktree/remove.json +16 -0
  715. pyinfra-3.5.1/tests/operations/git.worktree/remove_force.json +17 -0
  716. pyinfra-3.5.1/tests/operations/iptables.chain/add_chain.json +15 -0
  717. pyinfra-3.5.1/tests/operations/iptables.chain/delete_chain.json +16 -0
  718. pyinfra-3.5.1/tests/operations/iptables.chain/delete_chain_noop.json +13 -0
  719. pyinfra-3.5.1/tests/operations/iptables.chain/edit_chain.json +16 -0
  720. pyinfra-3.5.1/tests/operations/iptables.rule/add_log_rule.json +14 -0
  721. pyinfra-3.5.1/tests/operations/iptables.rule/add_rule.json +26 -0
  722. pyinfra-3.5.1/tests/operations/iptables.rule/add_to_ports.json +15 -0
  723. pyinfra-3.5.1/tests/operations/iptables.rule/add_to_source.json +15 -0
  724. pyinfra-3.5.1/tests/operations/iptables.rule/add_v6_rule.json +17 -0
  725. pyinfra-3.5.1/tests/operations/iptables.rule/already_absent.json +15 -0
  726. pyinfra-3.5.1/tests/operations/iptables.rule/already_present.json +18 -0
  727. pyinfra-3.5.1/tests/operations/iptables.rule/delete_rule.json +20 -0
  728. pyinfra-3.5.1/tests/operations/iptables.rule/invalid_destination_port.json +10 -0
  729. pyinfra-3.5.1/tests/operations/iptables.rule/invalid_log_prefix.json +10 -0
  730. pyinfra-3.5.1/tests/operations/iptables.rule/invalid_source_destination.json +10 -0
  731. pyinfra-3.5.1/tests/operations/iptables.rule/invalid_to_destination.json +10 -0
  732. pyinfra-3.5.1/tests/operations/iptables.rule/invalid_to_ports.json +10 -0
  733. pyinfra-3.5.1/tests/operations/launchd.service/restart.json +17 -0
  734. pyinfra-3.5.1/tests/operations/launchd.service/restart_stopped.json +20 -0
  735. pyinfra-3.5.1/tests/operations/launchd.service/start.json +11 -0
  736. pyinfra-3.5.1/tests/operations/launchd.service/start_running.json +10 -0
  737. pyinfra-3.5.1/tests/operations/launchd.service/stop.json +14 -0
  738. pyinfra-3.5.1/tests/operations/lxd.container/add_container.json +12 -0
  739. pyinfra-3.5.1/tests/operations/lxd.container/already_absent.json +17 -0
  740. pyinfra-3.5.1/tests/operations/lxd.container/already_present.json +16 -0
  741. pyinfra-3.5.1/tests/operations/lxd.container/delete_container.json +18 -0
  742. pyinfra-3.5.1/tests/operations/lxd.container/delete_running_container.json +19 -0
  743. pyinfra-3.5.1/tests/operations/mysql.database/add.json +15 -0
  744. pyinfra-3.5.1/tests/operations/mysql.database/add_noop.json +12 -0
  745. pyinfra-3.5.1/tests/operations/mysql.database/add_privileges.json +22 -0
  746. pyinfra-3.5.1/tests/operations/mysql.database/delete.json +16 -0
  747. pyinfra-3.5.1/tests/operations/mysql.database/delete_noop.json +13 -0
  748. pyinfra-3.5.1/tests/operations/mysql.dump/dump.json +15 -0
  749. pyinfra-3.5.1/tests/operations/mysql.load/load.json +10 -0
  750. pyinfra-3.5.1/tests/operations/mysql.load/load_space.json +11 -0
  751. pyinfra-3.5.1/tests/operations/mysql.privileges/add.json +14 -0
  752. pyinfra-3.5.1/tests/operations/mysql.privileges/add_all_with_grant_option.json +17 -0
  753. pyinfra-3.5.1/tests/operations/mysql.privileges/add_database.json +17 -0
  754. pyinfra-3.5.1/tests/operations/mysql.privileges/add_delete.json +15 -0
  755. pyinfra-3.5.1/tests/operations/mysql.privileges/add_delete_usage.json +14 -0
  756. pyinfra-3.5.1/tests/operations/mysql.privileges/add_existing.json +12 -0
  757. pyinfra-3.5.1/tests/operations/mysql.privileges/add_table.json +18 -0
  758. pyinfra-3.5.1/tests/operations/mysql.privileges/add_table_invalid.json +21 -0
  759. pyinfra-3.5.1/tests/operations/mysql.privileges/add_with_grant_option.json +17 -0
  760. pyinfra-3.5.1/tests/operations/mysql.privileges/delete.json +14 -0
  761. pyinfra-3.5.1/tests/operations/mysql.privileges/delete_all.json +15 -0
  762. pyinfra-3.5.1/tests/operations/mysql.privileges/delete_all_with_grant_option.json +15 -0
  763. pyinfra-3.5.1/tests/operations/mysql.privileges/delete_with_grant_option.json +14 -0
  764. pyinfra-3.5.1/tests/operations/mysql.privileges/remove_noop.json +12 -0
  765. pyinfra-3.5.1/tests/operations/mysql.privileges/remove_usage.json +14 -0
  766. pyinfra-3.5.1/tests/operations/mysql.sql/execute.json +7 -0
  767. pyinfra-3.5.1/tests/operations/mysql.sql/execute_mysql_kwargs.json +16 -0
  768. pyinfra-3.5.1/tests/operations/mysql.user/add.json +14 -0
  769. pyinfra-3.5.1/tests/operations/mysql.user/add_noop.json +12 -0
  770. pyinfra-3.5.1/tests/operations/mysql.user/add_password.json +18 -0
  771. pyinfra-3.5.1/tests/operations/mysql.user/add_privileges.json +20 -0
  772. pyinfra-3.5.1/tests/operations/mysql.user/add_resources.json +18 -0
  773. pyinfra-3.5.1/tests/operations/mysql.user/add_ssl.json +14 -0
  774. pyinfra-3.5.1/tests/operations/mysql.user/add_x509.json +15 -0
  775. pyinfra-3.5.1/tests/operations/mysql.user/add_x509_specified.json +18 -0
  776. pyinfra-3.5.1/tests/operations/mysql.user/delete.json +17 -0
  777. pyinfra-3.5.1/tests/operations/mysql.user/invalid_require_cipher.json +11 -0
  778. pyinfra-3.5.1/tests/operations/mysql.user/invalid_require_issuer.json +11 -0
  779. pyinfra-3.5.1/tests/operations/mysql.user/invalid_require_subject.json +11 -0
  780. pyinfra-3.5.1/tests/operations/mysql.user/invalid_require_type.json +10 -0
  781. pyinfra-3.5.1/tests/operations/mysql.user/remove_noop.json +13 -0
  782. pyinfra-3.5.1/tests/operations/mysql.user/update_resources.json +24 -0
  783. pyinfra-3.5.1/tests/operations/mysql.user/update_resources_partial.json +24 -0
  784. pyinfra-3.5.1/tests/operations/mysql.user/update_ssl.json +18 -0
  785. pyinfra-3.5.1/tests/operations/mysql.user/update_x509.json +18 -0
  786. pyinfra-3.5.1/tests/operations/mysql.user/update_x509_specified.json +23 -0
  787. pyinfra-3.5.1/tests/operations/mysql.user/update_x509_specified_partial.json +23 -0
  788. pyinfra-3.5.1/tests/operations/npm.packages/add_local_packages.json +17 -0
  789. pyinfra-3.5.1/tests/operations/npm.packages/add_packages.json +14 -0
  790. pyinfra-3.5.1/tests/operations/npm.packages/remove_packages.json +18 -0
  791. pyinfra-3.5.1/tests/operations/openrc.service/disable.json +21 -0
  792. pyinfra-3.5.1/tests/operations/openrc.service/disable_noop.json +20 -0
  793. pyinfra-3.5.1/tests/operations/openrc.service/disable_runlevel.json +22 -0
  794. pyinfra-3.5.1/tests/operations/openrc.service/enable.json +21 -0
  795. pyinfra-3.5.1/tests/operations/openrc.service/enable_noop.json +20 -0
  796. pyinfra-3.5.1/tests/operations/openrc.service/enable_runlevel.json +22 -0
  797. pyinfra-3.5.1/tests/operations/openrc.service/running_noop.json +12 -0
  798. pyinfra-3.5.1/tests/operations/openrc.service/start.json +13 -0
  799. pyinfra-3.5.1/tests/operations/openrc.service/stop.json +16 -0
  800. pyinfra-3.5.1/tests/operations/openrc.service/stopped_noop.json +15 -0
  801. pyinfra-3.5.1/tests/operations/opkg.packages/add_existing_package.json +12 -0
  802. pyinfra-3.5.1/tests/operations/opkg.packages/add_multiple_packages.json +12 -0
  803. pyinfra-3.5.1/tests/operations/opkg.packages/add_one_package.json +12 -0
  804. pyinfra-3.5.1/tests/operations/opkg.packages/add_with_unallowed_pinning.json +11 -0
  805. pyinfra-3.5.1/tests/operations/opkg.packages/list_of_nulls_package_list.json +9 -0
  806. pyinfra-3.5.1/tests/operations/opkg.packages/null_package_list.json +9 -0
  807. pyinfra-3.5.1/tests/operations/opkg.packages/remove_existing_package.json +13 -0
  808. pyinfra-3.5.1/tests/operations/opkg.packages/remove_existing_package_and_require_update.json +14 -0
  809. pyinfra-3.5.1/tests/operations/opkg.packages/remove_not_existing_package.json +13 -0
  810. pyinfra-3.5.1/tests/operations/opkg.packages/update_then_add_one.json +11 -0
  811. pyinfra-3.5.1/tests/operations/opkg.update/first_update.json +9 -0
  812. pyinfra-3.5.1/tests/operations/pacman.packages/add_packages.json +13 -0
  813. pyinfra-3.5.1/tests/operations/pacman.packages/add_packages_group_expand.json +12 -0
  814. pyinfra-3.5.1/tests/operations/pacman.packages/remove_packages.json +18 -0
  815. pyinfra-3.5.1/tests/operations/pacman.packages/remove_packages_expand.json +20 -0
  816. pyinfra-3.5.1/tests/operations/pacman.packages/upgrade_update.json +21 -0
  817. pyinfra-3.5.1/tests/operations/pip.packages/add_existing_package_with_url.json +13 -0
  818. pyinfra-3.5.1/tests/operations/pip.packages/add_new_virtualenv_packages.json +24 -0
  819. pyinfra-3.5.1/tests/operations/pip.packages/add_packages.json +14 -0
  820. pyinfra-3.5.1/tests/operations/pip.packages/add_packages_case_insensitive.json +14 -0
  821. pyinfra-3.5.1/tests/operations/pip.packages/add_virtualenv_packages.json +20 -0
  822. pyinfra-3.5.1/tests/operations/pip.packages/install_extra_args.json +17 -0
  823. pyinfra-3.5.1/tests/operations/pip.packages/install_latest_requirements.json +12 -0
  824. pyinfra-3.5.1/tests/operations/pip.packages/install_requirements.json +11 -0
  825. pyinfra-3.5.1/tests/operations/pip.packages/install_virtualenv_requirements.json +16 -0
  826. pyinfra-3.5.1/tests/operations/pip.packages/remove_packages.json +18 -0
  827. pyinfra-3.5.1/tests/operations/pip.packages/uninstall_requirements.json +12 -0
  828. pyinfra-3.5.1/tests/operations/pip.packages/use_pip3.json +14 -0
  829. pyinfra-3.5.1/tests/operations/pip.packages/use_pip3_virtualenv.json +18 -0
  830. pyinfra-3.5.1/tests/operations/pip.venv/add_virtualenv.json +14 -0
  831. pyinfra-3.5.1/tests/operations/pip.virtualenv/add_virtualenv.json +13 -0
  832. pyinfra-3.5.1/tests/operations/pip.virtualenv/add_virtualenv_py3.json +14 -0
  833. pyinfra-3.5.1/tests/operations/pip.virtualenv/add_with_options.json +16 -0
  834. pyinfra-3.5.1/tests/operations/pip.virtualenv/already_absent.json +16 -0
  835. pyinfra-3.5.1/tests/operations/pip.virtualenv/already_present.json +12 -0
  836. pyinfra-3.5.1/tests/operations/pip.virtualenv/delete_virtualenv.json +17 -0
  837. pyinfra-3.5.1/tests/operations/pip.virtualenv/present_empty_directory.json +16 -0
  838. pyinfra-3.5.1/tests/operations/pip.virtualenv/use_stdlib_venv.json +15 -0
  839. pyinfra-3.5.1/tests/operations/pip.virtualenv/use_stdlib_venv_py3.json +15 -0
  840. pyinfra-3.5.1/tests/operations/pipx.ensure_path/ensure_path.json +19 -0
  841. pyinfra-3.5.1/tests/operations/pipx.packages/add_existing_package_with_url.json +9 -0
  842. pyinfra-3.5.1/tests/operations/pipx.packages/add_nothing.json +9 -0
  843. pyinfra-3.5.1/tests/operations/pipx.packages/add_package.json +9 -0
  844. pyinfra-3.5.1/tests/operations/pipx.packages/add_packages.json +10 -0
  845. pyinfra-3.5.1/tests/operations/pipx.packages/install_extra_args.json +16 -0
  846. pyinfra-3.5.1/tests/operations/pipx.packages/remove_packages.json +16 -0
  847. pyinfra-3.5.1/tests/operations/pipx.upgrade_all/upgrade_all.json +9 -0
  848. pyinfra-3.5.1/tests/operations/pkg.packages/pkg_add_packages.json +21 -0
  849. pyinfra-3.5.1/tests/operations/pkg.packages/pkg_add_packages_with_installurl.json +23 -0
  850. pyinfra-3.5.1/tests/operations/pkg.packages/pkg_delete_packages.json +20 -0
  851. pyinfra-3.5.1/tests/operations/pkg.packages/pkg_install_packages.json +18 -0
  852. pyinfra-3.5.1/tests/operations/pkg.packages/pkg_remove_packages.json +20 -0
  853. pyinfra-3.5.1/tests/operations/pkgin.packages/add_packages.json +9 -0
  854. pyinfra-3.5.1/tests/operations/pkgin.packages/remove_packages.json +14 -0
  855. pyinfra-3.5.1/tests/operations/pkgin.packages/upgrade_packages.json +14 -0
  856. pyinfra-3.5.1/tests/operations/pkgin.packages/upgrade_update.json +18 -0
  857. pyinfra-3.5.1/tests/operations/postgresql.database/add_database.json +11 -0
  858. pyinfra-3.5.1/tests/operations/postgresql.database/add_database_locales.json +16 -0
  859. pyinfra-3.5.1/tests/operations/postgresql.database/add_database_owner.json +14 -0
  860. pyinfra-3.5.1/tests/operations/postgresql.database/remove_database.json +16 -0
  861. pyinfra-3.5.1/tests/operations/postgresql.database/remove_database_noop.json +13 -0
  862. pyinfra-3.5.1/tests/operations/postgresql.database/update_database.json +17 -0
  863. pyinfra-3.5.1/tests/operations/postgresql.database/update_database_noop.json +15 -0
  864. pyinfra-3.5.1/tests/operations/postgresql.dump/dump.json +17 -0
  865. pyinfra-3.5.1/tests/operations/postgresql.load/load.json +15 -0
  866. pyinfra-3.5.1/tests/operations/postgresql.role/role_remove_noop.json +13 -0
  867. pyinfra-3.5.1/tests/operations/postgresql.role/role_update.json +23 -0
  868. pyinfra-3.5.1/tests/operations/postgresql.role/role_update_noop.json +19 -0
  869. pyinfra-3.5.1/tests/operations/postgresql.role/user_add.json +18 -0
  870. pyinfra-3.5.1/tests/operations/postgresql.role/user_add_no_login.json +14 -0
  871. pyinfra-3.5.1/tests/operations/postgresql.role/user_add_privileges.json +17 -0
  872. pyinfra-3.5.1/tests/operations/postgresql.role/user_add_replication.json +15 -0
  873. pyinfra-3.5.1/tests/operations/postgresql.role/user_add_super.json +14 -0
  874. pyinfra-3.5.1/tests/operations/postgresql.role/user_remove.json +14 -0
  875. pyinfra-3.5.1/tests/operations/postgresql.sql/execute.json +12 -0
  876. pyinfra-3.5.1/tests/operations/puppet.agent/run_agent.json +10 -0
  877. pyinfra-3.5.1/tests/operations/python.call/call_func.json +10 -0
  878. pyinfra-3.5.1/tests/operations/python.raise_exception/call_func.json +7 -0
  879. pyinfra-3.5.1/tests/operations/runit.manage/manage.json +21 -0
  880. pyinfra-3.5.1/tests/operations/runit.manage/unmanage.json +25 -0
  881. pyinfra-3.5.1/tests/operations/runit.service/disable.json +28 -0
  882. pyinfra-3.5.1/tests/operations/runit.service/enable.json +33 -0
  883. pyinfra-3.5.1/tests/operations/selinux.boolean/bad_value.json +10 -0
  884. pyinfra-3.5.1/tests/operations/selinux.boolean/change_not_persistent.json +13 -0
  885. pyinfra-3.5.1/tests/operations/selinux.boolean/change_persistent.json +14 -0
  886. pyinfra-3.5.1/tests/operations/selinux.boolean/no_change.json +14 -0
  887. pyinfra-3.5.1/tests/operations/selinux.file_context/change.json +13 -0
  888. pyinfra-3.5.1/tests/operations/selinux.file_context/no_change.json +13 -0
  889. pyinfra-3.5.1/tests/operations/selinux.file_context_mapping/add_None.json +11 -0
  890. pyinfra-3.5.1/tests/operations/selinux.file_context_mapping/add_different.json +15 -0
  891. pyinfra-3.5.1/tests/operations/selinux.file_context_mapping/add_no_change.json +15 -0
  892. pyinfra-3.5.1/tests/operations/selinux.file_context_mapping/add_none_existeing.json +15 -0
  893. pyinfra-3.5.1/tests/operations/selinux.file_context_mapping/delete_existing.json +14 -0
  894. pyinfra-3.5.1/tests/operations/selinux.file_context_mapping/delete_none_existing.json +15 -0
  895. pyinfra-3.5.1/tests/operations/selinux.port/add_None.json +10 -0
  896. pyinfra-3.5.1/tests/operations/selinux.port/add_different.json +19 -0
  897. pyinfra-3.5.1/tests/operations/selinux.port/add_different_direct.json +17 -0
  898. pyinfra-3.5.1/tests/operations/selinux.port/add_not_existing.json +17 -0
  899. pyinfra-3.5.1/tests/operations/selinux.port/add_not_existing_direct.json +17 -0
  900. pyinfra-3.5.1/tests/operations/selinux.port/add_not_existing_protocol.json +15 -0
  901. pyinfra-3.5.1/tests/operations/selinux.port/add_same.json +16 -0
  902. pyinfra-3.5.1/tests/operations/selinux.port/add_same_direct.json +16 -0
  903. pyinfra-3.5.1/tests/operations/selinux.port/remove_existing.json +17 -0
  904. pyinfra-3.5.1/tests/operations/selinux.port/remove_existing_direct.json +17 -0
  905. pyinfra-3.5.1/tests/operations/selinux.port/remove_not_existing.json +16 -0
  906. pyinfra-3.5.1/tests/operations/selinux.port/remove_not_existing_direct.json +16 -0
  907. pyinfra-3.5.1/tests/operations/server.group/add.freebsd.json +14 -0
  908. pyinfra-3.5.1/tests/operations/server.group/add.json +14 -0
  909. pyinfra-3.5.1/tests/operations/server.group/delete.freebsd.json +15 -0
  910. pyinfra-3.5.1/tests/operations/server.group/delete.json +15 -0
  911. pyinfra-3.5.1/tests/operations/server.hostname/hostname_noop.json +12 -0
  912. pyinfra-3.5.1/tests/operations/server.hostname/hostnamectl_noop.json +11 -0
  913. pyinfra-3.5.1/tests/operations/server.hostname/set_hostname_bsd.json +21 -0
  914. pyinfra-3.5.1/tests/operations/server.hostname/set_hostname_linux.json +22 -0
  915. pyinfra-3.5.1/tests/operations/server.hostname/set_hostnamectl_linux.json +18 -0
  916. pyinfra-3.5.1/tests/operations/server.locale/add.json +33 -0
  917. pyinfra-3.5.1/tests/operations/server.locale/remove.json +34 -0
  918. pyinfra-3.5.1/tests/operations/server.modprobe/add-list.json +11 -0
  919. pyinfra-3.5.1/tests/operations/server.modprobe/add.json +9 -0
  920. pyinfra-3.5.1/tests/operations/server.modprobe/add_exists.json +10 -0
  921. pyinfra-3.5.1/tests/operations/server.modprobe/add_force.json +12 -0
  922. pyinfra-3.5.1/tests/operations/server.modprobe/add_multiple_exists.json +11 -0
  923. pyinfra-3.5.1/tests/operations/server.modprobe/remove-list.json +14 -0
  924. pyinfra-3.5.1/tests/operations/server.modprobe/remove.json +14 -0
  925. pyinfra-3.5.1/tests/operations/server.mount/mount.json +9 -0
  926. pyinfra-3.5.1/tests/operations/server.mount/mount_device.json +12 -0
  927. pyinfra-3.5.1/tests/operations/server.mount/mount_device_fstype.json +13 -0
  928. pyinfra-3.5.1/tests/operations/server.mount/mount_exists.json +10 -0
  929. pyinfra-3.5.1/tests/operations/server.mount/mount_options.json +12 -0
  930. pyinfra-3.5.1/tests/operations/server.mount/remount_options.json +17 -0
  931. pyinfra-3.5.1/tests/operations/server.mount/unmount.json +14 -0
  932. pyinfra-3.5.1/tests/operations/server.packages/add_apk_packages.json +19 -0
  933. pyinfra-3.5.1/tests/operations/server.packages/add_dnf_packages.json +27 -0
  934. pyinfra-3.5.1/tests/operations/server.packages/add_yum_packages.json +31 -0
  935. pyinfra-3.5.1/tests/operations/server.reboot/reboot.json +13 -0
  936. pyinfra-3.5.1/tests/operations/server.script/upload_run.json +27 -0
  937. pyinfra-3.5.1/tests/operations/server.script_template/script.json +27 -0
  938. pyinfra-3.5.1/tests/operations/server.security_limit/set.json +17 -0
  939. pyinfra-3.5.1/tests/operations/server.service/invalid.json +24 -0
  940. pyinfra-3.5.1/tests/operations/server.service/start_initd.json +25 -0
  941. pyinfra-3.5.1/tests/operations/server.service/start_initd_service.json +24 -0
  942. pyinfra-3.5.1/tests/operations/server.service/start_openrc.json +21 -0
  943. pyinfra-3.5.1/tests/operations/server.service/start_rcd.json +26 -0
  944. pyinfra-3.5.1/tests/operations/server.service/start_runit.json +33 -0
  945. pyinfra-3.5.1/tests/operations/server.service/start_systemd.json +21 -0
  946. pyinfra-3.5.1/tests/operations/server.service/start_upstart.json +22 -0
  947. pyinfra-3.5.1/tests/operations/server.shell/shell.json +11 -0
  948. pyinfra-3.5.1/tests/operations/server.shell/single_shell.json +7 -0
  949. pyinfra-3.5.1/tests/operations/server.sysctl/set.json +11 -0
  950. pyinfra-3.5.1/tests/operations/server.sysctl/set_list.json +11 -0
  951. pyinfra-3.5.1/tests/operations/server.sysctl/set_noop.json +12 -0
  952. pyinfra-3.5.1/tests/operations/server.sysctl/set_noop_string_value.json +12 -0
  953. pyinfra-3.5.1/tests/operations/server.sysctl/set_noop_zero_int.json +12 -0
  954. pyinfra-3.5.1/tests/operations/server.sysctl/set_persist.json +19 -0
  955. pyinfra-3.5.1/tests/operations/server.user/add.freebsd.json +27 -0
  956. pyinfra-3.5.1/tests/operations/server.user/add.json +27 -0
  957. pyinfra-3.5.1/tests/operations/server.user/add_group_exists.freebsd.json +18 -0
  958. pyinfra-3.5.1/tests/operations/server.user/add_group_exists.json +18 -0
  959. pyinfra-3.5.1/tests/operations/server.user/add_home_is_link.freebsd.json +20 -0
  960. pyinfra-3.5.1/tests/operations/server.user/add_home_is_link.json +20 -0
  961. pyinfra-3.5.1/tests/operations/server.user/add_invalid_home_is_file.json +21 -0
  962. pyinfra-3.5.1/tests/operations/server.user/add_non_unique.freebsd.json +15 -0
  963. pyinfra-3.5.1/tests/operations/server.user/add_non_unique.json +15 -0
  964. pyinfra-3.5.1/tests/operations/server.user/append_secondary_existing_groups.json +35 -0
  965. pyinfra-3.5.1/tests/operations/server.user/append_secondary_groups.freebsd.json +36 -0
  966. pyinfra-3.5.1/tests/operations/server.user/append_secondary_groups.json +36 -0
  967. pyinfra-3.5.1/tests/operations/server.user/delete.freebsd.json +19 -0
  968. pyinfra-3.5.1/tests/operations/server.user/delete.json +19 -0
  969. pyinfra-3.5.1/tests/operations/server.user/edit.freebsd.json +39 -0
  970. pyinfra-3.5.1/tests/operations/server.user/edit.json +39 -0
  971. pyinfra-3.5.1/tests/operations/server.user/exists_noop.json +25 -0
  972. pyinfra-3.5.1/tests/operations/server.user/key_files.json +53 -0
  973. pyinfra-3.5.1/tests/operations/server.user/keys.json +43 -0
  974. pyinfra-3.5.1/tests/operations/server.user/keys_delete.json +57 -0
  975. pyinfra-3.5.1/tests/operations/server.user/keys_nohome.json +42 -0
  976. pyinfra-3.5.1/tests/operations/server.user/keys_single.json +43 -0
  977. pyinfra-3.5.1/tests/operations/server.wait/port.json +9 -0
  978. pyinfra-3.5.1/tests/operations/snap.package/install_package.json +12 -0
  979. pyinfra-3.5.1/tests/operations/snap.package/install_package_classic.json +19 -0
  980. pyinfra-3.5.1/tests/operations/snap.package/install_package_with_channel.json +13 -0
  981. pyinfra-3.5.1/tests/operations/snap.package/install_packages.json +20 -0
  982. pyinfra-3.5.1/tests/operations/snap.package/install_refresh_packages.json +29 -0
  983. pyinfra-3.5.1/tests/operations/snap.package/refresh_package.json +21 -0
  984. pyinfra-3.5.1/tests/operations/snap.package/remove_packages.json +14 -0
  985. pyinfra-3.5.1/tests/operations/ssh.command/command.json +7 -0
  986. pyinfra-3.5.1/tests/operations/ssh.command/command_quotes.json +7 -0
  987. pyinfra-3.5.1/tests/operations/ssh.command/command_user_port.json +11 -0
  988. pyinfra-3.5.1/tests/operations/ssh.download/download.json +24 -0
  989. pyinfra-3.5.1/tests/operations/ssh.download/download_exists.json +10 -0
  990. pyinfra-3.5.1/tests/operations/ssh.download/download_exists_force.json +16 -0
  991. pyinfra-3.5.1/tests/operations/ssh.download/download_not_file.json +21 -0
  992. pyinfra-3.5.1/tests/operations/ssh.keyscan/scan_not_present.json +17 -0
  993. pyinfra-3.5.1/tests/operations/ssh.keyscan/scan_present.json +16 -0
  994. pyinfra-3.5.1/tests/operations/ssh.keyscan/scan_present_force.json +23 -0
  995. pyinfra-3.5.1/tests/operations/ssh.upload/upload.json +22 -0
  996. pyinfra-3.5.1/tests/operations/ssh.upload/upload_remote_sudo.json +11 -0
  997. pyinfra-3.5.1/tests/operations/ssh.upload/upload_remote_sudo_user.json +12 -0
  998. pyinfra-3.5.1/tests/operations/systemd.service/daemon_reload.json +18 -0
  999. pyinfra-3.5.1/tests/operations/systemd.service/disabled.json +21 -0
  1000. pyinfra-3.5.1/tests/operations/systemd.service/enabled.json +21 -0
  1001. pyinfra-3.5.1/tests/operations/systemd.service/machine_daemon_reload.json +20 -0
  1002. pyinfra-3.5.1/tests/operations/systemd.service/machine_disabled.json +22 -0
  1003. pyinfra-3.5.1/tests/operations/systemd.service/machine_enabled.json +22 -0
  1004. pyinfra-3.5.1/tests/operations/systemd.service/machine_start.json +17 -0
  1005. pyinfra-3.5.1/tests/operations/systemd.service/running_ambiguous_unit.json +13 -0
  1006. pyinfra-3.5.1/tests/operations/systemd.service/running_noop.json +12 -0
  1007. pyinfra-3.5.1/tests/operations/systemd.service/running_timer.json +13 -0
  1008. pyinfra-3.5.1/tests/operations/systemd.service/start.json +13 -0
  1009. pyinfra-3.5.1/tests/operations/systemd.service/stopped_noop.json +15 -0
  1010. pyinfra-3.5.1/tests/operations/systemd.service/timer.json +13 -0
  1011. pyinfra-3.5.1/tests/operations/systemd.service/user_daemon_reload.json +19 -0
  1012. pyinfra-3.5.1/tests/operations/systemd.service/user_disabled.json +22 -0
  1013. pyinfra-3.5.1/tests/operations/systemd.service/user_enabled.json +22 -0
  1014. pyinfra-3.5.1/tests/operations/systemd.service/user_machine_daemon_reload.json +21 -0
  1015. pyinfra-3.5.1/tests/operations/systemd.service/user_machine_disabled.json +24 -0
  1016. pyinfra-3.5.1/tests/operations/systemd.service/user_machine_enabled.json +24 -0
  1017. pyinfra-3.5.1/tests/operations/systemd.service/user_machine_start.json +18 -0
  1018. pyinfra-3.5.1/tests/operations/systemd.service/user_start.json +16 -0
  1019. pyinfra-3.5.1/tests/operations/sysvinit.enable/create.json +35 -0
  1020. pyinfra-3.5.1/tests/operations/sysvinit.service/command.json +20 -0
  1021. pyinfra-3.5.1/tests/operations/sysvinit.service/disabled.json +19 -0
  1022. pyinfra-3.5.1/tests/operations/sysvinit.service/enabled_chkconfig.json +21 -0
  1023. pyinfra-3.5.1/tests/operations/sysvinit.service/enabled_rc-update.json +20 -0
  1024. pyinfra-3.5.1/tests/operations/sysvinit.service/enabled_update-rc.d.json +20 -0
  1025. pyinfra-3.5.1/tests/operations/sysvinit.service/reload.json +16 -0
  1026. pyinfra-3.5.1/tests/operations/sysvinit.service/restart.json +16 -0
  1027. pyinfra-3.5.1/tests/operations/sysvinit.service/restart_down.json +19 -0
  1028. pyinfra-3.5.1/tests/operations/sysvinit.service/skip_started.json +10 -0
  1029. pyinfra-3.5.1/tests/operations/sysvinit.service/start.json +11 -0
  1030. pyinfra-3.5.1/tests/operations/sysvinit.service/stop.json +14 -0
  1031. pyinfra-3.5.1/tests/operations/upstart.service/disabled.json +21 -0
  1032. pyinfra-3.5.1/tests/operations/upstart.service/enabled.json +19 -0
  1033. pyinfra-3.5.1/tests/operations/upstart.service/running.json +11 -0
  1034. pyinfra-3.5.1/tests/operations/vzctl.create/add_template.json +13 -0
  1035. pyinfra-3.5.1/tests/operations/vzctl.create/already_existing.json +13 -0
  1036. pyinfra-3.5.1/tests/operations/vzctl.delete/delete.json +7 -0
  1037. pyinfra-3.5.1/tests/operations/vzctl.mount/mount.json +7 -0
  1038. pyinfra-3.5.1/tests/operations/vzctl.restart/restart.json +8 -0
  1039. pyinfra-3.5.1/tests/operations/vzctl.restart/restart_force.json +11 -0
  1040. pyinfra-3.5.1/tests/operations/vzctl.set/set.json +10 -0
  1041. pyinfra-3.5.1/tests/operations/vzctl.set/set_multiple.json +10 -0
  1042. pyinfra-3.5.1/tests/operations/vzctl.set/set_no_save.json +11 -0
  1043. pyinfra-3.5.1/tests/operations/vzctl.start/start.json +7 -0
  1044. pyinfra-3.5.1/tests/operations/vzctl.start/start_force.json +10 -0
  1045. pyinfra-3.5.1/tests/operations/vzctl.stop/stop.json +7 -0
  1046. pyinfra-3.5.1/tests/operations/vzctl.unmount/unmount.json +7 -0
  1047. pyinfra-3.5.1/tests/operations/xbps.packages/add_packages.json +9 -0
  1048. pyinfra-3.5.1/tests/operations/xbps.packages/remove_packages.json +14 -0
  1049. pyinfra-3.5.1/tests/operations/xbps.packages/upgrade_update.json +18 -0
  1050. pyinfra-3.5.1/tests/operations/yum.key/add.json +6 -0
  1051. pyinfra-3.5.1/tests/operations/yum.packages/add_packages.json +20 -0
  1052. pyinfra-3.5.1/tests/operations/yum.packages/add_packages_alias.json +14 -0
  1053. pyinfra-3.5.1/tests/operations/yum.packages/add_packages_alias_different_version.json +16 -0
  1054. pyinfra-3.5.1/tests/operations/yum.packages/add_packages_alias_multiple_version.json +22 -0
  1055. pyinfra-3.5.1/tests/operations/yum.packages/install_with_args.json +15 -0
  1056. pyinfra-3.5.1/tests/operations/yum.packages/install_with_nobest.json +15 -0
  1057. pyinfra-3.5.1/tests/operations/yum.packages/noop_add_packages_alias.json +15 -0
  1058. pyinfra-3.5.1/tests/operations/yum.packages/noop_add_packages_alias_multiple_version.json +19 -0
  1059. pyinfra-3.5.1/tests/operations/yum.packages/remove_package.json +25 -0
  1060. pyinfra-3.5.1/tests/operations/yum.packages/remove_packages_alias_multiple_version.json +21 -0
  1061. pyinfra-3.5.1/tests/operations/yum.packages/uninstall_with_args.json +20 -0
  1062. pyinfra-3.5.1/tests/operations/yum.packages/update_clean.json +16 -0
  1063. pyinfra-3.5.1/tests/operations/yum.repo/add.json +23 -0
  1064. pyinfra-3.5.1/tests/operations/yum.repo/add_url.json +16 -0
  1065. pyinfra-3.5.1/tests/operations/yum.repo/remove.json +14 -0
  1066. pyinfra-3.5.1/tests/operations/yum.rpm/add.json +16 -0
  1067. pyinfra-3.5.1/tests/operations/yum.rpm/add_existing.json +16 -0
  1068. pyinfra-3.5.1/tests/operations/yum.rpm/add_existing_upgrade.json +15 -0
  1069. pyinfra-3.5.1/tests/operations/yum.rpm/add_url.json +25 -0
  1070. pyinfra-3.5.1/tests/operations/yum.rpm/remove.json +20 -0
  1071. pyinfra-3.5.1/tests/operations/zfs.dataset/create.yaml +11 -0
  1072. pyinfra-3.5.1/tests/operations/zfs.dataset/create_noop.yaml +11 -0
  1073. pyinfra-3.5.1/tests/operations/zfs.dataset/create_recursive.yaml +10 -0
  1074. pyinfra-3.5.1/tests/operations/zfs.dataset/create_sparse.yaml +11 -0
  1075. pyinfra-3.5.1/tests/operations/zfs.dataset/create_volume.yaml +10 -0
  1076. pyinfra-3.5.1/tests/operations/zfs.dataset/delete.yaml +10 -0
  1077. pyinfra-3.5.1/tests/operations/zfs.dataset/delete_noop.yaml +8 -0
  1078. pyinfra-3.5.1/tests/operations/zfs.dataset/delete_recursive.yaml +13 -0
  1079. pyinfra-3.5.1/tests/operations/zfs.dataset/set_props.yaml +16 -0
  1080. pyinfra-3.5.1/tests/operations/zfs.filesystem/create.yaml +11 -0
  1081. pyinfra-3.5.1/tests/operations/zfs.filesystem/delete.yaml +10 -0
  1082. pyinfra-3.5.1/tests/operations/zfs.snapshot/create.yaml +10 -0
  1083. pyinfra-3.5.1/tests/operations/zfs.volume/create.yaml +10 -0
  1084. pyinfra-3.5.1/tests/operations/zypper.key/add.json +6 -0
  1085. pyinfra-3.5.1/tests/operations/zypper.packages/add_packages.json +16 -0
  1086. pyinfra-3.5.1/tests/operations/zypper.packages/install_with_args.json +12 -0
  1087. pyinfra-3.5.1/tests/operations/zypper.packages/install_with_global_args.json +12 -0
  1088. pyinfra-3.5.1/tests/operations/zypper.packages/uninstall_with_args.json +17 -0
  1089. pyinfra-3.5.1/tests/operations/zypper.packages/uninstall_with_global_args.json +21 -0
  1090. pyinfra-3.5.1/tests/operations/zypper.packages/update_clean.json +15 -0
  1091. pyinfra-3.5.1/tests/operations/zypper.repo/add.json +22 -0
  1092. pyinfra-3.5.1/tests/operations/zypper.repo/add_url.json +16 -0
  1093. pyinfra-3.5.1/tests/operations/zypper.repo/remove.json +14 -0
  1094. pyinfra-3.5.1/tests/operations/zypper.rpm/add.json +16 -0
  1095. pyinfra-3.5.1/tests/operations/zypper.rpm/add_existing.json +16 -0
  1096. pyinfra-3.5.1/tests/operations/zypper.rpm/add_existing_upgrade.json +15 -0
  1097. pyinfra-3.5.1/tests/operations/zypper.rpm/add_url.json +25 -0
  1098. pyinfra-3.5.1/tests/operations/zypper.rpm/remove.json +20 -0
  1099. pyinfra-3.5.1/tests/paramiko_util.py +109 -0
  1100. pyinfra-3.5.1/tests/test_api/test_api_deploys.py +127 -0
  1101. pyinfra-3.5.1/tests/test_api/test_api_facts.py +338 -0
  1102. pyinfra-3.5.1/tests/test_api/test_api_operations.py +949 -0
  1103. pyinfra-3.5.1/tests/test_cli/__init__.py +0 -0
  1104. pyinfra-3.5.1/tests/test_cli/deploy/deploy.py +90 -0
  1105. pyinfra-3.5.1/tests/test_cli/deploy/deploy_random.py +83 -0
  1106. pyinfra-3.5.1/tests/test_cli/deploy/files/a_file +1 -0
  1107. pyinfra-3.5.1/tests/test_cli/deploy/group_data/all.py +1 -0
  1108. pyinfra-3.5.1/tests/test_cli/deploy/group_data/invalid.json +0 -0
  1109. pyinfra-3.5.1/tests/test_cli/deploy/group_data/leftover_data.py +2 -0
  1110. pyinfra-3.5.1/tests/test_cli/deploy/inventories/inventory.py +9 -0
  1111. pyinfra-3.5.1/tests/test_cli/deploy/inventories/inventory_all.py +11 -0
  1112. pyinfra-3.5.1/tests/test_cli/deploy/inventories/inventory_ansible +10 -0
  1113. pyinfra-3.5.1/tests/test_cli/deploy/inventories/inventory_ansible.json +22 -0
  1114. pyinfra-3.5.1/tests/test_cli/deploy/inventories/inventory_ansible.yml +13 -0
  1115. pyinfra-3.5.1/tests/test_cli/deploy/tasks/a_task.py +25 -0
  1116. pyinfra-3.5.1/tests/test_cli/deploy/tasks/another_task.py +6 -0
  1117. pyinfra-3.5.1/tests/test_cli/deploy/tasks/b_task.py +7 -0
  1118. pyinfra-3.5.1/tests/test_cli/deploy/tasks/nested/empty_task.py +0 -0
  1119. pyinfra-3.5.1/tests/test_cli/deploy/templates/a_template.j2 +3 -0
  1120. pyinfra-3.5.1/tests/test_cli/deploy/utils.py +9 -0
  1121. pyinfra-3.5.1/tests/test_cli/deploy_fails/invalid_argument_type.py +3 -0
  1122. pyinfra-3.5.1/tests/test_cli/deploy_fails/invalid_operation_arg.py +3 -0
  1123. pyinfra-3.5.1/tests/test_cli/deploy_fails/operation_error.py +3 -0
  1124. pyinfra-3.5.1/tests/test_cli/inventories/invalid.py +13 -0
  1125. pyinfra-3.5.1/tests/test_cli/test_cli.py +195 -0
  1126. pyinfra-3.5.1/tests/test_cli/test_cli_deploy.py +120 -0
  1127. pyinfra-3.5.1/tests/test_cli/test_cli_exceptions.py +86 -0
  1128. pyinfra-3.5.1/tests/test_cli/test_cli_inventory.py +119 -0
  1129. pyinfra-3.5.1/tests/test_cli/test_cli_util.py +85 -0
  1130. pyinfra-3.5.1/tests/test_cli/user/test_ops.py +6 -0
  1131. pyinfra-3.5.1/tests/test_connectors/__init__.py +0 -0
  1132. pyinfra-3.5.1/tests/test_connectors/test_ssh.py +1246 -0
  1133. pyinfra-3.5.1/tests/test_connectors/test_terraform.py +107 -0
  1134. pyinfra-3.5.1/tests/test_facts.py +128 -0
  1135. pyinfra-3.5.1/tests/test_global_arguments.py +55 -0
  1136. pyinfra-3.5.1/tests/test_operations.py +176 -0
  1137. pyinfra-3.5.1/tests/typing/invalid/operation_kwarg.py +5 -0
  1138. pyinfra-3.5.1/tests/typing/invalid/operation_kwarg_value.py +3 -0
  1139. pyinfra-3.5.1/tests/typing/valid/operation.py +5 -0
  1140. pyinfra-3.5.1/tests/util.py +479 -0
  1141. pyinfra-3.5.1/tests/words.txt +445 -0
  1142. pyinfra-3.5.1/uv.lock +1683 -0
  1143. pyinfra-3.4.1/CHANGELOG.md +0 -252
  1144. pyinfra-3.4.1/MANIFEST.in +0 -1
  1145. pyinfra-3.4.1/PKG-INFO +0 -194
  1146. pyinfra-3.4.1/README.md +0 -105
  1147. pyinfra-3.4.1/pyinfra/__main__.py +0 -1
  1148. pyinfra-3.4.1/pyinfra/api/arguments.py +0 -345
  1149. pyinfra-3.4.1/pyinfra/api/config.py +0 -234
  1150. pyinfra-3.4.1/pyinfra/api/connect.py +0 -50
  1151. pyinfra-3.4.1/pyinfra/api/facts.py +0 -307
  1152. pyinfra-3.4.1/pyinfra/api/operation.py +0 -441
  1153. pyinfra-3.4.1/pyinfra/api/operations.py +0 -334
  1154. pyinfra-3.4.1/pyinfra/api/state.py +0 -426
  1155. pyinfra-3.4.1/pyinfra/api/util.py +0 -454
  1156. pyinfra-3.4.1/pyinfra/connectors/chroot.py +0 -208
  1157. pyinfra-3.4.1/pyinfra/connectors/docker.py +0 -383
  1158. pyinfra-3.4.1/pyinfra/connectors/ssh.py +0 -639
  1159. pyinfra-3.4.1/pyinfra/connectors/util.py +0 -406
  1160. pyinfra-3.4.1/pyinfra/facts/dnf.py +0 -44
  1161. pyinfra-3.4.1/pyinfra/facts/docker.py +0 -131
  1162. pyinfra-3.4.1/pyinfra/facts/files.py +0 -536
  1163. pyinfra-3.4.1/pyinfra/facts/freebsd.py +0 -75
  1164. pyinfra-3.4.1/pyinfra/facts/selinux.py +0 -161
  1165. pyinfra-3.4.1/pyinfra/facts/server.py +0 -903
  1166. pyinfra-3.4.1/pyinfra/facts/util/packaging.py +0 -49
  1167. pyinfra-3.4.1/pyinfra/facts/yum.py +0 -43
  1168. pyinfra-3.4.1/pyinfra/facts/zypper.py +0 -42
  1169. pyinfra-3.4.1/pyinfra/operations/choco.py +0 -57
  1170. pyinfra-3.4.1/pyinfra/operations/crontab.py +0 -191
  1171. pyinfra-3.4.1/pyinfra/operations/docker.py +0 -346
  1172. pyinfra-3.4.1/pyinfra/operations/files.py +0 -1753
  1173. pyinfra-3.4.1/pyinfra/operations/git.py +0 -419
  1174. pyinfra-3.4.1/pyinfra/operations/iptables.py +0 -311
  1175. pyinfra-3.4.1/pyinfra/operations/mysql.py +0 -609
  1176. pyinfra-3.4.1/pyinfra/operations/openrc.py +0 -57
  1177. pyinfra-3.4.1/pyinfra/operations/pip.py +0 -206
  1178. pyinfra-3.4.1/pyinfra/operations/pipx.py +0 -90
  1179. pyinfra-3.4.1/pyinfra/operations/server.py +0 -1099
  1180. pyinfra-3.4.1/pyinfra/operations/util/docker.py +0 -203
  1181. pyinfra-3.4.1/pyinfra/operations/util/files.py +0 -175
  1182. pyinfra-3.4.1/pyinfra/operations/util/packaging.py +0 -280
  1183. pyinfra-3.4.1/pyinfra.egg-info/PKG-INFO +0 -194
  1184. pyinfra-3.4.1/pyinfra.egg-info/SOURCES.txt +0 -199
  1185. pyinfra-3.4.1/pyinfra.egg-info/dependency_links.txt +0 -1
  1186. pyinfra-3.4.1/pyinfra.egg-info/entry_points.txt +0 -12
  1187. pyinfra-3.4.1/pyinfra.egg-info/requires.txt +0 -69
  1188. pyinfra-3.4.1/pyinfra.egg-info/top_level.txt +0 -3
  1189. pyinfra-3.4.1/pyinfra_cli/__main__.py +0 -43
  1190. pyinfra-3.4.1/pyinfra_cli/main.py +0 -742
  1191. pyinfra-3.4.1/pyinfra_cli/prints.py +0 -339
  1192. pyinfra-3.4.1/pyinfra_cli/util.py +0 -233
  1193. pyinfra-3.4.1/pyproject.toml +0 -38
  1194. pyinfra-3.4.1/setup.cfg +0 -37
  1195. pyinfra-3.4.1/setup.py +0 -158
  1196. pyinfra-3.4.1/tests/test_api/test_api_deploys.py +0 -124
  1197. pyinfra-3.4.1/tests/test_api/test_api_facts.py +0 -329
  1198. pyinfra-3.4.1/tests/test_api/test_api_operations.py +0 -579
  1199. pyinfra-3.4.1/tests/test_cli/test_cli.py +0 -192
  1200. pyinfra-3.4.1/tests/test_cli/test_cli_deploy.py +0 -120
  1201. pyinfra-3.4.1/tests/test_cli/test_cli_exceptions.py +0 -86
  1202. pyinfra-3.4.1/tests/test_cli/test_cli_inventory.py +0 -119
  1203. pyinfra-3.4.1/tests/test_cli/test_cli_util.py +0 -85
  1204. pyinfra-3.4.1/tests/test_connectors/test_ssh.py +0 -1249
  1205. pyinfra-3.4.1/tests/test_connectors/test_terraform.py +0 -108
  1206. pyinfra-3.4.1/tests/test_facts.py +0 -123
  1207. pyinfra-3.4.1/tests/test_global_arguments.py +0 -55
  1208. pyinfra-3.4.1/tests/test_operations.py +0 -171
  1209. {pyinfra-3.4.1 → pyinfra-3.5.1}/LICENSE.md +0 -0
  1210. {pyinfra-3.4.1/pyinfra/connectors → pyinfra-3.5.1/docs}/__init__.py +0 -0
  1211. {pyinfra-3.4.1/tests/test_api → pyinfra-3.5.1/scripts}/__init__.py +0 -0
  1212. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/__init__.py +0 -0
  1213. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/__init__.py +0 -0
  1214. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/arguments_typed.py +0 -0
  1215. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/command.py +0 -0
  1216. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/connectors.py +0 -0
  1217. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/deploy.py +0 -0
  1218. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/exceptions.py +0 -0
  1219. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/host.py +0 -0
  1220. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/api/inventory.py +0 -0
  1221. {pyinfra-3.4.1/tests/test_cli → pyinfra-3.5.1/src/pyinfra/connectors}/__init__.py +0 -0
  1222. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/base.py +0 -0
  1223. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/dockerssh.py +0 -0
  1224. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/local.py +0 -0
  1225. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/ssh_util.py +0 -0
  1226. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/sshuserclient/__init__.py +0 -0
  1227. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/sshuserclient/client.py +0 -0
  1228. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/sshuserclient/config.py +0 -0
  1229. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/terraform.py +0 -0
  1230. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/connectors/vagrant.py +0 -0
  1231. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/context.py +0 -0
  1232. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/__init__.py +0 -0
  1233. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/apk.py +0 -0
  1234. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/apt.py +0 -0
  1235. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/brew.py +0 -0
  1236. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/bsdinit.py +0 -0
  1237. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/cargo.py +0 -0
  1238. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/choco.py +0 -0
  1239. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/crontab.py +0 -0
  1240. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/deb.py +0 -0
  1241. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/efibootmgr.py +0 -0
  1242. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/flatpak.py +0 -0
  1243. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/gem.py +0 -0
  1244. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/git.py +0 -0
  1245. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/gpg.py +0 -0
  1246. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/hardware.py +0 -0
  1247. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/iptables.py +0 -0
  1248. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/launchd.py +0 -0
  1249. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/lxd.py +0 -0
  1250. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/mysql.py +0 -0
  1251. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/npm.py +0 -0
  1252. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/openrc.py +0 -0
  1253. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/opkg.py +0 -0
  1254. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/pacman.py +0 -0
  1255. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/pip.py +0 -0
  1256. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/pipx.py +0 -0
  1257. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/pkg.py +0 -0
  1258. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/pkgin.py +0 -0
  1259. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/podman.py +0 -0
  1260. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/postgres.py +0 -0
  1261. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/postgresql.py +0 -0
  1262. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/rpm.py +0 -0
  1263. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/runit.py +0 -0
  1264. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/snap.py +0 -0
  1265. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/systemd.py +0 -0
  1266. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/sysvinit.py +0 -0
  1267. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/upstart.py +0 -0
  1268. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/util/__init__.py +0 -0
  1269. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/util/databases.py +0 -0
  1270. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/util/units.py +0 -0
  1271. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/util/win_files.py +0 -0
  1272. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/vzctl.py +0 -0
  1273. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/xbps.py +0 -0
  1274. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/facts/zfs.py +0 -0
  1275. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/local.py +0 -0
  1276. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/__init__.py +0 -0
  1277. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/apk.py +0 -0
  1278. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/apt.py +0 -0
  1279. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/brew.py +0 -0
  1280. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/bsdinit.py +0 -0
  1281. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/cargo.py +0 -0
  1282. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/dnf.py +0 -0
  1283. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/flatpak.py +0 -0
  1284. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/freebsd/__init__.py +0 -0
  1285. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/freebsd/freebsd_update.py +0 -0
  1286. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/freebsd/pkg.py +0 -0
  1287. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/freebsd/service.py +0 -0
  1288. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/freebsd/sysrc.py +0 -0
  1289. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/gem.py +0 -0
  1290. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/launchd.py +0 -0
  1291. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/lxd.py +0 -0
  1292. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/npm.py +0 -0
  1293. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/opkg.py +0 -0
  1294. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/pacman.py +0 -0
  1295. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/pkg.py +0 -0
  1296. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/pkgin.py +0 -0
  1297. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/postgres.py +0 -0
  1298. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/postgresql.py +0 -0
  1299. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/puppet.py +0 -0
  1300. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/python.py +0 -0
  1301. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/runit.py +0 -0
  1302. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/selinux.py +0 -0
  1303. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/snap.py +0 -0
  1304. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/ssh.py +0 -0
  1305. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/systemd.py +0 -0
  1306. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/sysvinit.py +0 -0
  1307. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/upstart.py +0 -0
  1308. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/util/__init__.py +0 -0
  1309. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/util/service.py +0 -0
  1310. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/vzctl.py +0 -0
  1311. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/xbps.py +0 -0
  1312. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/yum.py +0 -0
  1313. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/zfs.py +0 -0
  1314. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/operations/zypper.py +0 -0
  1315. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/progress.py +0 -0
  1316. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/py.typed +0 -0
  1317. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra/version.py +0 -0
  1318. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra_cli/__init__.py +0 -0
  1319. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra_cli/commands.py +0 -0
  1320. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra_cli/exceptions.py +0 -0
  1321. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra_cli/inventory.py +0 -0
  1322. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra_cli/log.py +0 -0
  1323. {pyinfra-3.4.1 → pyinfra-3.5.1/src}/pyinfra_cli/virtualenv.py +0 -0
  1324. {pyinfra-3.4.1/tests/test_connectors → pyinfra-3.5.1/tests/test_api}/__init__.py +0 -0
  1325. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api.py +0 -0
  1326. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api_arguments.py +0 -0
  1327. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api_command.py +0 -0
  1328. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api_config.py +0 -0
  1329. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api_host.py +0 -0
  1330. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api_inventory.py +0 -0
  1331. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_api/test_api_util.py +0 -0
  1332. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_cli/test_context_objects.py +0 -0
  1333. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_cli/util.py +0 -0
  1334. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_chroot.py +0 -0
  1335. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_docker.py +0 -0
  1336. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_dockerssh.py +0 -0
  1337. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_local.py +0 -0
  1338. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_sshuserclient.py +0 -0
  1339. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_util.py +0 -0
  1340. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_connectors/test_vagrant.py +0 -0
  1341. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_operations_utils.py +0 -0
  1342. {pyinfra-3.4.1 → pyinfra-3.5.1}/tests/test_units.py +0 -0
@@ -0,0 +1,3 @@
1
+ [*.json]
2
+ indent_style = space
3
+ indent_size = 4
@@ -0,0 +1,5 @@
1
+ # Run black & isort on everything
2
+ 2d4792eba3233c77a298d86e9638434688e3a1c5
3
+
4
+ # 2025-09-25 Run ruff on everything
5
+ b1dc723d92d8804b559956c97ca720c3837053c9
@@ -0,0 +1 @@
1
+ github: fizzadar
@@ -0,0 +1,26 @@
1
+ ---
2
+
3
+ name: 🐛 Bug Report
4
+ about: Create a report to help us improve pyinfra.
5
+ labels: Bug
6
+
7
+ ---
8
+
9
+ ## Describe the bug
10
+ A clear and concise description of what the bug is.
11
+
12
+ ## To Reproduce
13
+ Steps to reproduce the behavior, please include where possible:
14
+
15
+ + Operation code & usage
16
+ + Target system information
17
+ + Example using the `@docker` connector (helps isolate the problem)
18
+
19
+ ## Expected behavior
20
+ A clear and concise description of what you expected to happen.
21
+
22
+ ## Meta
23
+ + Include output of `pyinfra --support`.
24
+ + How was pyinfra installed (source/pip)?
25
+ + Include pyinfra-debug.log (if one was created)
26
+ + Consider including output with `-vv` and `--debug`.
@@ -0,0 +1,10 @@
1
+ blank_issues_enabled: true
2
+
3
+ contact_links:
4
+ - name: 📖 Documentation
5
+ url: https://docs.pyinfra.com
6
+ about: View the pyinfra documentation.
7
+
8
+ - name: 💬 Help & Support
9
+ url: https://docs.pyinfra.com/page/support.html
10
+ about: Please ask and answer usage questions here.
@@ -0,0 +1,12 @@
1
+ ---
2
+
3
+ name: 💡 Feature Request
4
+ about: Suggest an idea for this project.
5
+
6
+ ---
7
+
8
+ ## Is your feature request related to a problem? Please describe
9
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
10
+
11
+ ## Describe the solution you'd like
12
+ A clear and concise description of what you want to happen.
@@ -0,0 +1,15 @@
1
+ <!--
2
+ 🎉 Thank you for taking the time to contribute to pyinfra! 🎉
3
+
4
+ Please provide a short description of the proposed change and here's a handy checklist of things
5
+ to make PRs quicker to review and merge.
6
+
7
+ Note that we will not merge new connectors, but instead welcome PRs that link to thid party
8
+ connector packages.
9
+ -->
10
+
11
+ - [ ] Pull request is based on the default branch (`3.x` at this time)
12
+ - [ ] Pull request includes tests for any new/updated operations/facts
13
+ - [ ] Pull request includes documentation for any new/updated operations/facts
14
+ - [ ] Tests pass (see `scripts/dev-test.sh`)
15
+ - [ ] Type checking & code style passes (see `scripts/dev-lint.sh`)
@@ -0,0 +1,56 @@
1
+ name: Generate & Deploy Docs
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ branches:
7
+ - 3.x
8
+ - 2.x
9
+ - 1.x
10
+ - 0.x
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-24.04
15
+ if: github.repository == 'pyinfra-dev/pyinfra'
16
+ steps:
17
+ - name: Clone Source Repository
18
+ uses: actions/checkout@v5
19
+
20
+ - name: Fetch git tags
21
+ run: git fetch --tags origin
22
+
23
+ - name: Clone Generated Repository
24
+ uses: actions/checkout@v5
25
+ with:
26
+ token: ${{ secrets.ACCESS_TOKEN }}
27
+ repository: pyinfra-dev/docs.pyinfra.com
28
+ path: docs/public/
29
+
30
+ - name: Set up Python
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: "3.13"
34
+ - name: Install uv
35
+ uses: astral-sh/setup-uv@v6
36
+ - name: Install
37
+ run: |
38
+ uv sync --group docs --no-default-groups
39
+ uv pip install 'jinja2<3.1'
40
+
41
+ - name: Generate documentation
42
+ run: scripts/build-public-docs.sh
43
+ env:
44
+ PYTHONPATH: '.'
45
+
46
+ - name: Push & Update
47
+ run: |
48
+ cd docs/public/
49
+
50
+ if [[ `git status --porcelain` ]]; then
51
+ git config user.name github-actions
52
+ git config user.email github-actions@github.com
53
+ git add .
54
+ git commit -m "Docs build $(date -I)"
55
+ git push origin HEAD:main
56
+ fi
@@ -0,0 +1,117 @@
1
+ name: Lint & Test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - 3.x
7
+ - 2.x
8
+ - 1.x
9
+ - 0.x
10
+ pull_request:
11
+
12
+ jobs:
13
+ # Linting
14
+ #
15
+
16
+ lint:
17
+ runs-on: ubuntu-24.04
18
+ steps:
19
+ - uses: actions/checkout@v5
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.13"
23
+ - name: Install uv
24
+ uses: astral-sh/setup-uv@v6
25
+ - uses: astral-sh/ruff-action@v3
26
+ - uses: astral-sh/ruff-action@v3
27
+ with:
28
+ args: "format --check"
29
+
30
+ type-check:
31
+ runs-on: ubuntu-24.04
32
+ steps:
33
+ - uses: actions/checkout@v5
34
+ - uses: actions/setup-python@v5
35
+ with:
36
+ python-version: "3.13"
37
+ - name: Install uv
38
+ uses: astral-sh/setup-uv@v6
39
+ - run: uv sync --group test --no-default-groups
40
+ - run: uv run mypy
41
+
42
+ spell-check:
43
+ runs-on: ubuntu-24.04
44
+ steps:
45
+ - uses: actions/checkout@v5
46
+ - name: Check spelling
47
+ uses: crate-ci/typos@v1.30.3
48
+
49
+ unit-test:
50
+ needs:
51
+ - lint
52
+ - type-check
53
+ strategy:
54
+ matrix:
55
+ os: [ubuntu-22.04, ubuntu-24.04, macos-13, macos-14, macos-15,windows-2022, windows-2025]
56
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
57
+ runs-on: ${{ matrix.os }}
58
+ steps:
59
+ - uses: actions/checkout@v5
60
+ - uses: actions/setup-python@v5
61
+ with:
62
+ python-version: ${{ matrix.python-version }}
63
+ - name: Install uv
64
+ uses: astral-sh/setup-uv@v6
65
+ - run: uv sync --group test --no-default-groups --python=${{ matrix.python-version }}
66
+ - run: uv run pytest --cov --disable-warnings
67
+ - name: Upload coverage report to codecov
68
+ if: ${{ matrix.os == 'ubuntu-24.04' && matrix.python-version == '3.13' }}
69
+ uses: codecov/codecov-action@v5
70
+
71
+ # End-to-end tests
72
+ #
73
+
74
+ end-to-end-test:
75
+ needs:
76
+ - lint
77
+ - type-check
78
+ strategy:
79
+ matrix:
80
+ os: [ubuntu-22.04, ubuntu-24.04]
81
+ test-name: [local, ssh, docker, podman]
82
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
83
+ include:
84
+ - os: macos-13
85
+ test-name: local
86
+ python-version: "3.13"
87
+ - os: macos-14
88
+ test-name: local
89
+ python-version: "3.13"
90
+ - os: macos-15
91
+ test-name: local
92
+ python-version: "3.13"
93
+ runs-on: ${{ matrix.os }}
94
+ steps:
95
+ - uses: actions/checkout@v5
96
+ - uses: actions/setup-python@v5
97
+ with:
98
+ python-version: ${{ matrix.python-version }}
99
+ - name: Install uv
100
+ uses: astral-sh/setup-uv@v6
101
+ - run: uv sync --group test --no-default-groups --python=${{ matrix.python-version }}
102
+ - run: uv run pytest -m end_to_end_${{ matrix.test-name }}
103
+
104
+ # Finally, single jon to check if all completed, for use in protected branch
105
+
106
+ tests-done:
107
+ if: ${{ always() }}
108
+ needs:
109
+ - lint
110
+ - type-check
111
+ - unit-test
112
+ - end-to-end-test
113
+ runs-on: ubuntu-latest
114
+ steps:
115
+ - uses: matrix-org/done-action@v3
116
+ with:
117
+ needs: ${{ toJSON(needs) }}
@@ -0,0 +1,36 @@
1
+ .DS_Store
2
+ .ropeproject
3
+
4
+ *.pyc
5
+ *.egg-info
6
+
7
+ .*sw[pno]
8
+
9
+ build/
10
+ dist/
11
+
12
+ venv/
13
+ .venv/
14
+ .cache/
15
+ .mypy_cache/
16
+ .pytest_cache/
17
+ .python-version
18
+
19
+ .vagrant*
20
+
21
+ .coverage
22
+
23
+ .docstmp
24
+ docs/build/
25
+ docs/public/
26
+ docs/connectors/
27
+ docs/facts/
28
+ docs/operations/
29
+ docs/apidoc/
30
+ docs/_deploy_globals.rst
31
+
32
+ .idea/
33
+ .vscode/
34
+
35
+ pyinfra-debug.log
36
+ Makefile
@@ -0,0 +1,21 @@
1
+ [files]
2
+ extend-exclude = [
3
+ "tests/facts/apt.SimulateOperationWillChange/upgrade.json",
4
+ "tests/facts/opkg.OpkgPackages/opkg_packages.json",
5
+ "tests/words.txt",
6
+ ]
7
+
8
+ [default]
9
+ extend-ignore-re = [
10
+ "shell\\('uptim'\\)",
11
+ '"fpr:::::::::',
12
+ '== "fpr":',
13
+ "00740ba1",
14
+ "forr something in",
15
+ "unknown tag 'forr'",
16
+ "nd6 options=",
17
+ "4Ue1", # Ignore false positive in test_sshuserclient.py (EXAMPLE_KEY_1)
18
+ ]
19
+
20
+ [default.extend-words]
21
+ datas = "datas"
@@ -0,0 +1,314 @@
1
+ # v3.5.1
2
+
3
+ Patch release with a bunch of great fixes. But notably want to call out two major changes for anyone working on the pyinfra code itself (huge thank you Daan for implementing these):
4
+
5
+ - feat: use ruff for linting and formatting (@DonDebonair)
6
+ - feat: use uv for project and dependency management (@DonDebonair)
7
+
8
+ Core fixes:
9
+
10
+ - api: correctly set context state+host when calling `get_facts`
11
+ - cli: catch exceptions when testing inventory/operation imports
12
+ - cli: fix/remove datetime timezone warnings (@wowi42)
13
+ - operations/files.block: correct behaviour when markers/block not found and no line provided (@morrison12)
14
+ - operations.util.packaging: extend PkgInfo for winget (@rod7760)
15
+ - facts/server: support negative value in sysctl (@imlonghao)
16
+
17
+ Docs:
18
+
19
+ - docs: fix dynamic execution example (@wowi42)
20
+ - docs: Specify how the recursive argument to directory() works (@cliffmccarthy)
21
+ - docs: change recommended installation methods (@DonDebonair)
22
+ - docs: update writing connectors
23
+
24
+ Tests:
25
+
26
+ - op.server.user tests: add exists_noop.json for user existence checks (fix warning) (@maisim)
27
+ - op.server.user tests: add noop_description (fix warning) (@maisim)
28
+ - fix: add missing command field in test (@maisim)
29
+ - tests: clear the host sftp memoization cache before setting up the mock (@wowi42)
30
+ - tests: export testgen class to a new package/repo
31
+ - tests: fix missing stage sets on state
32
+
33
+ # v3.5
34
+
35
+ New release with some really awesome new features, brought to you by the fantastic contributions of the community. New stuff:
36
+
37
+ - add `--diff` argument to show file diffs for potential file changes (@jgelens)
38
+ - add `_retries`, `_retry_delay` and `_retry_until` global arguments (@shohamd4)
39
+ - parallelize disconnecting from hosts (@gwelch-contegix)
40
+ - enable using SCP instead of SFTP for SSH file transfers (@DonDebonair)
41
+
42
+ New and updated operations/facts:
43
+ - facts/server: add `RebootRequired` fact (@wowi42)
44
+ - operations/pip: support PEP-508 package versions (@morrison12)
45
+ - operations+facts/docker: add Docker plugin support (@DonDebonair)
46
+ - operations/files.put: add `atime` and `mtime` arguments (@vram0gh2)
47
+ - operations/openrc: support runlevel when enabling services (@sengo4hd)
48
+ - facts/yum+dnf+zypper: return `repoid` in repository facts
49
+
50
+ Operation/fact fixes:
51
+
52
+ - facts/files.File: add ls fallback support (@mrkbac)
53
+ - operations/openrc: add missing noop messages (@sengo4hd)
54
+ - operations/server.crontab: fix newline when replacing existing values (@Nananas)
55
+ - operations/files.block: fix examples doc (@morrison12)
56
+ - operations/files.block: fix case where file exists but line is missing (@morrison12)
57
+ - operations/files.block: improve handling of special characters in marker lines (@morrison12)
58
+
59
+ Internal/meta:
60
+
61
+ - documentation link fix (@sengo4hd)
62
+
63
+ # v3.4.1
64
+
65
+ - fix config context when getting operation arguments
66
+
67
+ # v3.4
68
+
69
+ Much delayed 3.4, great collection of additions and improvements. Huge THANK YOU to all contributors as always. New features:
70
+
71
+ - Add @podman connector (@Griffoen)
72
+
73
+ New and updated operations/facts:
74
+
75
+ - operations/docker.network: add support for aux addresses (@DonDebonair)
76
+ - operations/files: try multiple hash functions in `files.get` + `files.put` (@mrkbac)
77
+ - operations/files.download: add `temp_dir` argument (@scy)
78
+ - operations/files.download: add `extra_curl_args` and `extra_wget_args` arguments (@jgelens)
79
+ - operations/flatpak: add remote support (@Griffoen)
80
+ - operations/git + facts/git: add `GitTag` fact and support tag checkout (@wowi42)
81
+ - operations/server.mount: add support for FreeBSD mounts (@DtxdF)
82
+ - facts/server: add `server.Port` fact to find process listening on port (@missytake)
83
+
84
+ Operation/fact fixes:
85
+
86
+ - operations/docker: handle case where no docker containers/etc exist (@wowi42)
87
+ - operations/files + operations/crontab: fix deletion of lines when `present=False` (@bad)
88
+ - operations/files.block: avoid use of non-POSIX `chown -n`
89
+ - operations/files.put: fix copying of local file mode (@vram0gh2)
90
+ - operations/server.user: fix appending of user groups (@aaron-riact)
91
+ - facts/server.Mounts: fix whitespace and escaped character parsing (@lemmi)
92
+ - facts/systemd: treat mounted units as active
93
+
94
+ Internal/meta:
95
+
96
+ - remove unnecessary setuptools runtime dependency (@karlicoss)
97
+
98
+ # v3.3.1
99
+
100
+ - connectors/ssh: fix extra `keep_alive` key passing through to paramiko `connect` call (@chipot)
101
+ - docs: refine installation guide with updated Python requirements and best practices (@wowi42)
102
+
103
+ # v3.3
104
+
105
+ Second release of 2025: loads of adds, fixes and documentation improvements. A huge THANK YOU to all contributors. Slightly changed format for the change list based on commit messages which should speed up releases:
106
+
107
+ New operations & arguments:
108
+
109
+ - operations/freebsd: add FreeBSD operations & facts (@DtxdF)
110
+ - operations/files.move: new operation (@Pirols)
111
+ - operations/server.user: enable adding user to secondary groups (Pirols)
112
+ - operations/postgres: enhance role management by adding `ALTER ROLE` support (@wowi42)
113
+ - operations/postgres: enable modifying existing postgres databases (@wowi42)
114
+ - operations/docker.container: refactor to support container recreation (@minor-fixes)
115
+
116
+ Operation/fact fixes:
117
+
118
+ - operations/postgres: fix quoting of locale parameters (@xvello)
119
+ - operations/server: remove leftover deprecated parameter (@wowi42)
120
+ - operations/pacmen: update PACMAN_REGEX to support additional characters (@wowi42)
121
+ - operations/server.sysctl: handle 0 integer values correctly (@lemmi)
122
+ - operations/apt: dist-upgrade also supports --autoremove (@bauen1)
123
+ - operations/apt: fix parameter name in docs (@bauen1)
124
+ - operations/server: fix: lastlog is always null (@ingstem)
125
+ - operations/docker: Fixed a typo with the volumes parameter to docker.prune operation (@mpilone)
126
+ - facts/xbps.XbpsPackages: allow . in package names (@lemmi)
127
+
128
+ Connectors, CLI:
129
+
130
+ - connectors: improve detection of sudo password needed
131
+ - connectors/ssh: add support for `ServerAliveInterval` (@chipot)
132
+ - cli: enable -h as shorthand for --help (@NichtJens)
133
+
134
+ Docs:
135
+
136
+ - docs: Add a section explaining connector flow (@goetzk)
137
+ - docs: Add inventory processing note and reference it (@goetzk)
138
+ - docs: Add example of logging to using operations docs (@goetzk)
139
+ - docs: fix wrong example operation using forbidden argument 'name' (@robertmx)
140
+ - docs: Add a note to the docs about using `_inner` when calling operations from other operations (@CSDUMMI)
141
+ - docs: Document host, state, inventory in files.template (@mpilone)
142
+ - docs: Minor adjustments to wording help docs and help (@goetzk)
143
+ - docs: expand connectors documentation (@goetzk)
144
+ - docs: correct import path for any_changed, all_changed (@lemmi)
145
+ - docs: Add note re: global arguments to operations (@simonhammes)
146
+
147
+ Internal/meta:
148
+
149
+ - refactor: update opkg documentation and add requires_command to ZFS and Git tests (@wowi42)
150
+ - Update testing and development dependencies in setup.py (@wowi42)
151
+ - tests: Load test specs with PyYAML instead of json (@taliaferro)
152
+ - typing: Require explicit override decorator (@bauen1)
153
+ - api: don't execute callbacks within a greenlet if we're already in one
154
+ - ci: Github Actions support for python 3.12 (@wowi42)
155
+ - ci: Prevent docs job from running on forks (@simonhammes)
156
+
157
+ # v3.2
158
+
159
+ Hello 2025! Here's pyinfra 3.2 - with another incredible round of contributions from the community, THANK YOU ALL. New stuff:
160
+
161
+ - Add total counts to results summary (@NichtJens)
162
+ - Enable passing extra data via `local.include` (@TimothyWillard)
163
+ - Validate inventory files and display warnings for unexpected variables (@simonhammes)
164
+
165
+ New operations/facts:
166
+
167
+ - Add `pipx` operations (`packages`, `upgrade_all`, `ensure_path`) facts (`PipxPackages`, `PipxEnvironment`) and operations (@maisim)
168
+ - Add `server.OsRelease` fact (@wowi42)
169
+ - Add `podman.PodmanSystemInfo` and `podman.PodmanPs` facts (@bauen1)
170
+ - Add many extra arguments (including generic args) to `files.FindFiles*` facts (@JakkuSakura)
171
+ - Add `system` argument to `git.config` operation (@Pirols)
172
+ - Add `psql_database` argument to postgres operations & facts (@hamishfagg)
173
+ - Add `files.Sha384File` fact and `sha384sum` argument to `files.download` operation (@simonhammes)
174
+ - Add `apt.SimulateOperationWillChange` fact (@bauen1)
175
+ - Detect changes in `apt.upgrade` and `apt.dist_upgrade` operations (@bauen1)
176
+ - Add `fibootmgr.EFIBootMgr` fact (@bauen1)
177
+ - Add opkg facts and operations (@morrison12)
178
+
179
+ Fixes:
180
+
181
+ - Multiple fixes for `server.crontab` operation and facts (@JakkuSakura)
182
+ - Correctly handle `latest` argument with requirements file in `pip.packages` operation (@amiraliakbari)
183
+ - Fix regex used to parse installed apk packages (@simonhammes)
184
+ - Fix SSH connector overwriting known hosts files (@vo452)
185
+
186
+ Docs/internal tweaks:
187
+
188
+ - Add type annotations for many more operations (@simonhammes)
189
+ - Add typos CI checking to replace flake8-spellcheck (@simonhammes)
190
+ - Bump CI actions and dependencies (@simonhammes)
191
+ - Require JSON tests to include all arguments
192
+ - Remove unused `configparser` dependency (@bkmgit)
193
+ - Many small documentation fixes/tweaks
194
+
195
+ # v3.1.1
196
+
197
+ - Improve errors with 2.x style `@decorator` (vs `@decorator()`) functions
198
+ - Document adding custom connectors (@simonhammes)
199
+ - Add basic API example to docs (@pirate)
200
+ - Fix sphinx warnings (@simonhammes)
201
+ - Fix force & pull arguments in `git.worktree` operation
202
+ - Fix `server.reboot` reconnection (@wackou)
203
+ - Fix chroot/local connector non-utf file gets (@evoldstad)
204
+ - Fix `AptSources` fact to parse components in order & with digits (@rsfzi)
205
+
206
+ # v3.1
207
+
208
+ Here's pyinfra 3.1 - a release primarily driven by contributors new and old - a HUGE THANK YOU to all of you who dedicate time to work on pushing pyinfra forward. New stuff:
209
+
210
+ - Add `zfs` operations (`dataset`, `snapshot`, `volume`, `filesystem`) facts (`Pools`, `Datasets`, `Filesystems`, `Snapshots`, `Volumes`) (@taliaferro)
211
+ - Add `flatpak` operations (`packages`) and facts (`FlatpakPackage`, `FlatpakPackages`) (@JustScreaMy)
212
+ - Add `jinja_env_kwargs` argument to `files.template` operation (@DonDebonair)
213
+ - Add using dictionaries as `@terraform` output (map from group -> hosts)
214
+ - Add default `@terraform` output key - `pyinfra_inventory.value`, promote connector to beta
215
+ - Add support for multiple keys in each `server.authorized_keys` file (@matthijskooijman)
216
+ - Add print all dependency versions with `--support` flag (@kytta)
217
+
218
+ Fixes:
219
+
220
+ - Fix when `ssh_hostname` is set as override data, don't do inventory hostname check
221
+ - Fix `apt.AptSources` parsing special characters (@CondensedTea)
222
+ - Fix `server.reboot` connection detection (@bauen1 + @lemmi)
223
+ - Fix systemd flagging of sockets running (@bauen1)
224
+ - Fix mysql dump quoting (@simonhammes)
225
+ - Fix tilde expansion in files facts (@simonhammes)
226
+ - Fix host lookup check with SSH alias config (@simonhammes)
227
+ - Fix crontab comparison (@andrew-d)
228
+
229
+ Docs/internal tweaks:
230
+
231
+ - Improve operations documentation (@bauen1)
232
+ - Default to local machine if `user_name` set in systecmt (@bauen1)
233
+ - Improve efficiency of Docker operations (@apecnascimento)
234
+ - Shallow copy `host.data` data to mutation
235
+
236
+ # v3.0.2
237
+
238
+ - Fix `OperationMeta.did_change`: this is now a function as originally designed
239
+ - Add quick test for `host.when` context manager
240
+ - Remove extra detected changes note when not relevant
241
+
242
+ # v3.0.1
243
+
244
+ - Switch to `command -v` not `which` in `server.Which` fact (@lemmi)
245
+ - Fix detection of xbps in `server.packages` operation (@romain-dartigues)
246
+ - Fix argument typo in operations doc (@scoufman)
247
+ - Add expanded note about detected changes + hidden side effects during execution
248
+ - Fix missing global arguments in group data files
249
+ - Fix `--group-data` CLI argument behaviour
250
+ - Remove unused/dead `--quiet` flag
251
+
252
+ # v3.0
253
+
254
+ Welcome to pyinfra v3! This version is the biggest overhaul of pyinfra since it was created back in 2015. Most v2 deployment code should be automatically compatible, but as always be aware. Major changes:
255
+
256
+ ### Runtime operation execution
257
+
258
+ pyinfra now executes operations at runtime, rather than pre-generating commands. Although the change isn't noticeable this fixes an entire class of bugs and confusion. See the [limitations](https://docs.pyinfra.com/en/2.x/deploy-process.html#limitations) section in the v2 docs. All of those issues are now a thing of the past.
259
+
260
+ This represents a huge overhaul of pyinfra's internals and should be a huge improvement for users.
261
+
262
+ Care has been taken to reduce the overhead of this change which still supports the same diffs and change proposal mechanism.
263
+
264
+ ### CLI flow & prompts
265
+
266
+ The pyinfra CLI will now prompt (instead of ignore, or immediately exit) when problems are encountered, allowing the user to choose to continue. Additionally an approval step is added before executing changes (this can be skipped with `-y` or setting the `PYINFRA_YES` environment variable).
267
+
268
+ ### Extendable connectors API, typing overhaul
269
+
270
+ v3 of pyinfra includes for the first time a (mostly) typed internal API with proper support for IDE linting. There's a whole new connectors API that provides a framework for building new connectors.
271
+
272
+ ### Breaking changes
273
+
274
+ - Rename `_use_sudo_password` argument to `_sudo_password`
275
+ - Remove `winrm` connector and `windows*` operations/facts, moving to [`pyinfra-windows`](https://github.com/pyinfra-dev/pyinfra-windows)
276
+ - The deploy decorator must now be called, ie used as `@deploy()`, and is now typed
277
+ - Remove broken Ansible inventory connector
278
+
279
+ ### Operations & Facts
280
+
281
+ - Add `docker.container`, `docker.image`, `docker.volume`, `docker.network` & `docker.prune` operations (@apecnascimento)
282
+ - Add `runit.service` operation and `RunitStatus` fact (@lemmi)
283
+ - Add `TmpDir` fact
284
+ - Add `services` argument to systemd facts for filtering
285
+ - Add type hints for all the operations (@stone-w4tch3r)
286
+ - Lowercase pip packages properly (PEP-0426)
287
+ - Rename `postgresql` -> `postgres` operations & facts (old ones still work)
288
+ - Improve IP/MAC parsing in `NetworkDevices` fact (@sudoBash418)
289
+ - Enable getting `Home` fact for other users (@matthijskooijman)
290
+ - Use users correct home directory in `server.user_authorized_keys` operation (@matthijskooijman)
291
+ - Fix `destination`/`not_destination` arguments in `iptables.rule` operation
292
+ - Fix remote dirs when executing from Windows in `files.sync` operation (@Renerick)
293
+ - Fix quoting of systemd unit names (@martenlienen)
294
+
295
+ ### Other Changes
296
+
297
+ - Add new `_if` global argument to control operation execution at runtime
298
+ - Add `--debug-all` flag to set debug logging for all packages
299
+ - Retry SSH connections on failure (configurable, see [SSH connector](https://docs.pyinfra.com/en/3.x/connectors/ssh.html#available-data)) (@fwiesel)
300
+ - Documentation typo fixes (@szepeviktor, @sudoBash418)
301
+ - Fix handling of binary files in Docker connector (@matthijskooijman)
302
+ - Add `will_change` attribute and `did_change` context manager to `OperationMeta`
303
+ - Replace use of `pkg_resources` with `importlib.metadata` (@diazona)
304
+ - Fix identifying Python inventory files as modules (@martenlienen)
305
+ - Fix typed arguments order (@cdleonard)
306
+ - Check that fact commands don't take global arguments (@martenlienen)
307
+
308
+ # v2.x
309
+
310
+ [See this file in the `2.x` branch](https://github.com/Fizzadar/pyinfra/blob/2.x/CHANGELOG.md).
311
+
312
+ # v1.x
313
+
314
+ [See this file in the `1.x` branch](https://github.com/Fizzadar/pyinfra/blob/1.x/CHANGELOG.md).
@@ -0,0 +1,5 @@
1
+ # Contributing to pyinfra
2
+
3
+ 🎉 Hello! Thank you for taking the time to contribute to pyinfra! 🎉
4
+
5
+ Please see [**the contributing guide on the pyinfra documentation**](https://docs.pyinfra.com/en/latest/contributing.html).