cumulusci 3.61.0.dev0__tar.gz → 3.61.0.dev2__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 (641) hide show
  1. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/AUTHORS.rst +1 -0
  2. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/HISTORY.rst +1 -2
  3. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/PKG-INFO +2 -3
  4. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_flow.py +1 -1
  5. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/marketing_cloud_service_config.py +2 -4
  6. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cumulusci.yml +2 -0
  7. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/schema/cumulusci.jsonschema.json +9 -0
  8. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/create_package_version.py +15 -4
  9. cumulusci-3.61.0.dev2/cumulusci/tasks/marketing_cloud/mc_constants.py +1 -0
  10. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadeploy.py +39 -13
  11. cumulusci-3.61.0.dev2/cumulusci/tasks/robotframework/template.html +109 -0
  12. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/test_robotframework.py +7 -3
  13. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +84 -0
  14. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/update_profile.py +46 -1
  15. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_create_package_version.py +47 -23
  16. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_metadeploy.py +40 -1
  17. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/test_utils.py +9 -2
  18. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/__init__.py +3 -1
  19. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/cumulusci_yml.py +1 -0
  20. cumulusci-3.61.0.dev2/cumulusci/version.txt +1 -0
  21. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/PKG-INFO +2 -3
  22. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/SOURCES.txt +0 -41
  23. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/conf.py +9 -2
  24. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/requirements/dev.txt +49 -5
  25. cumulusci-3.61.0.dev0/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -5
  26. cumulusci-3.61.0.dev0/cumulusci/tasks/robotframework/template.html +0 -102
  27. cumulusci-3.61.0.dev0/cumulusci/version.txt +0 -1
  28. cumulusci-3.61.0.dev0/docs/2gp_testing.rst +0 -123
  29. cumulusci-3.61.0.dev0/docs/about.rst +0 -8
  30. cumulusci-3.61.0.dev0/docs/cheat_sheet.rst +0 -208
  31. cumulusci-3.61.0.dev0/docs/cli.rst +0 -489
  32. cumulusci-3.61.0.dev0/docs/commands.rst +0 -4
  33. cumulusci-3.61.0.dev0/docs/concepts.rst +0 -167
  34. cumulusci-3.61.0.dev0/docs/config.rst +0 -664
  35. cumulusci-3.61.0.dev0/docs/connected_orgs.rst +0 -161
  36. cumulusci-3.61.0.dev0/docs/continuous_integration.rst +0 -75
  37. cumulusci-3.61.0.dev0/docs/contributing.rst +0 -195
  38. cumulusci-3.61.0.dev0/docs/cookbook.rst +0 -108
  39. cumulusci-3.61.0.dev0/docs/cumulusci_flow.rst +0 -324
  40. cumulusci-3.61.0.dev0/docs/data.rst +0 -865
  41. cumulusci-3.61.0.dev0/docs/dev.rst +0 -535
  42. cumulusci-3.61.0.dev0/docs/env_var_reference.rst +0 -81
  43. cumulusci-3.61.0.dev0/docs/get_started.rst +0 -413
  44. cumulusci-3.61.0.dev0/docs/github_actions.rst +0 -344
  45. cumulusci-3.61.0.dev0/docs/headless.rst +0 -172
  46. cumulusci-3.61.0.dev0/docs/history.rst +0 -1
  47. cumulusci-3.61.0.dev0/docs/index.rst +0 -22
  48. cumulusci-3.61.0.dev0/docs/install.rst +0 -5
  49. cumulusci-3.61.0.dev0/docs/internals.rst +0 -2
  50. cumulusci-3.61.0.dev0/docs/intro.rst +0 -116
  51. cumulusci-3.61.0.dev0/docs/managed_2gp.rst +0 -164
  52. cumulusci-3.61.0.dev0/docs/managed_package.rst +0 -138
  53. cumulusci-3.61.0.dev0/docs/metadata_etl.rst +0 -197
  54. cumulusci-3.61.0.dev0/docs/npsp_eda_2gp.rst +0 -65
  55. cumulusci-3.61.0.dev0/docs/packaging.rst +0 -19
  56. cumulusci-3.61.0.dev0/docs/push_upgrades.rst +0 -30
  57. cumulusci-3.61.0.dev0/docs/reference.rst +0 -10
  58. cumulusci-3.61.0.dev0/docs/release_notes.rst +0 -37
  59. cumulusci-3.61.0.dev0/docs/robot.rst +0 -722
  60. cumulusci-3.61.0.dev0/docs/robot_advanced.rst +0 -468
  61. cumulusci-3.61.0.dev0/docs/robot_debugger.rst +0 -243
  62. cumulusci-3.61.0.dev0/docs/robot_locators.rst +0 -203
  63. cumulusci-3.61.0.dev0/docs/robot_playwright.rst +0 -173
  64. cumulusci-3.61.0.dev0/docs/robot_tutorial.rst +0 -390
  65. cumulusci-3.61.0.dev0/docs/scratch_orgs.rst +0 -233
  66. cumulusci-3.61.0.dev0/docs/tutorial.rst +0 -5
  67. cumulusci-3.61.0.dev0/docs/unlocked_package.rst +0 -140
  68. cumulusci-3.61.0.dev0/docs/unpackaged.rst +0 -250
  69. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/CONTRIBUTING.rst +0 -0
  70. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/LICENSE +0 -0
  71. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/MANIFEST.in +0 -0
  72. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/README.rst +0 -0
  73. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/__init__.py +0 -0
  74. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/__main__.py +0 -0
  75. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/__init__.py +0 -0
  76. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/cci.py +0 -0
  77. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/error.py +0 -0
  78. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/flow.py +0 -0
  79. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/logger.py +0 -0
  80. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/org.py +0 -0
  81. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/plan.py +0 -0
  82. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/project.py +0 -0
  83. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/robot.py +0 -0
  84. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/runtime.py +0 -0
  85. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/service.py +0 -0
  86. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/task.py +0 -0
  87. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/__init__.py +0 -0
  88. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_cci.py +0 -0
  89. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_error.py +0 -0
  90. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_logger.py +0 -0
  91. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_org.py +0 -0
  92. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_plan.py +0 -0
  93. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_project.py +0 -0
  94. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_robot.py +0 -0
  95. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_runtime.py +0 -0
  96. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_service.py +0 -0
  97. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_task.py +0 -0
  98. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_ui.py +0 -0
  99. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/test_utils.py +0 -0
  100. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/tests/utils.py +0 -0
  101. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/ui.py +0 -0
  102. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/cli/utils.py +0 -0
  103. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/conftest.py +0 -0
  104. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/__init__.py +0 -0
  105. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/BaseConfig.py +0 -0
  106. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
  107. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/OrgConfig.py +0 -0
  108. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
  109. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/__init__.py +0 -0
  110. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/base_config.py +0 -0
  111. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/base_task_flow_config.py +0 -0
  112. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/oauth2_service_config.py +0 -0
  113. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/org_config.py +0 -0
  114. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/project_config.py +0 -0
  115. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/scratch_org_config.py +0 -0
  116. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/sfdx_org_config.py +0 -0
  117. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
  118. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/tests/test_config.py +0 -0
  119. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
  120. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/tests/test_config_util.py +0 -0
  121. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/universal_config.py +0 -0
  122. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/config/util.py +0 -0
  123. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/debug.py +0 -0
  124. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/__init__.py +0 -0
  125. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/dependencies.py +0 -0
  126. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/github.py +0 -0
  127. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/resolvers.py +0 -0
  128. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/tests/__init__.py +0 -0
  129. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/tests/conftest.py +0 -0
  130. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
  131. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/tests/test_github.py +0 -0
  132. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
  133. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/dependencies/utils.py +0 -0
  134. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/exceptions.py +0 -0
  135. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/flowrunner.py +0 -0
  136. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/github.py +0 -0
  137. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/__init__.py +0 -0
  138. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/base_project_keychain.py +0 -0
  139. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -0
  140. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
  141. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/subprocess_keychain.py +0 -0
  142. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/tests/conftest.py +0 -0
  143. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
  144. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
  145. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/metadeploy.py +0 -0
  146. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/runtime.py +0 -0
  147. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/sfdx.py +0 -0
  148. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/source/__init__.py +0 -0
  149. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/source/github.py +0 -0
  150. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/source/local_folder.py +0 -0
  151. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tasks.py +0 -0
  152. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/template_utils.py +0 -0
  153. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/__init__.py +0 -0
  154. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_exceptions.py +0 -0
  155. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_flowrunner.py +0 -0
  156. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_github.py +0 -0
  157. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_sfdx.py +0 -0
  158. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_source.py +0 -0
  159. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_tasks.py +0 -0
  160. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_utils.py +0 -0
  161. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
  162. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/test_versions.py +0 -0
  163. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/tests/utils.py +0 -0
  164. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/utils.py +0 -0
  165. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/core/versions.py +0 -0
  166. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/admin_profile.xml +0 -0
  167. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/delete_excludes.txt +0 -0
  168. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/templates/project/README.md +0 -0
  169. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/templates/project/cumulusci.yml +0 -0
  170. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/templates/project/dot-gitignore +0 -0
  171. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/templates/project/mapping.yml +0 -0
  172. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/files/templates/project/scratch_def.json +0 -0
  173. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/__init__.py +0 -0
  174. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/client.py +0 -0
  175. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/exceptions.py +0 -0
  176. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/salesforce.py +0 -0
  177. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/tests/__init__.py +0 -0
  178. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/tests/test_client.py +0 -0
  179. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/oauth/tests/test_salesforce.py +0 -0
  180. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/CumulusCI.py +0 -0
  181. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/CumulusCI.robot +0 -0
  182. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/Performance.py +0 -0
  183. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/Salesforce.py +0 -0
  184. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/Salesforce.robot +0 -0
  185. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/SalesforceAPI.py +0 -0
  186. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/SalesforcePlaywright.py +0 -0
  187. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/SalesforcePlaywright.robot +0 -0
  188. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/__init__.py +0 -0
  189. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/base_library.py +0 -0
  190. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/form_handlers.py +0 -0
  191. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/locator_manager.py +0 -0
  192. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/locators_54.py +0 -0
  193. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/locators_55.py +0 -0
  194. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
  195. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
  196. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
  197. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
  198. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
  199. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
  200. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
  201. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/CustomObjectTestPage.py +0 -0
  202. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
  203. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
  204. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
  205. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
  206. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
  207. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
  208. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
  209. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
  210. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
  211. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
  212. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
  213. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
  214. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
  215. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
  216. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/label_locator.robot +0 -0
  217. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/labels.html +0 -0
  218. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
  219. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
  220. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
  221. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
  222. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
  223. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
  224. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
  225. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +0 -0
  226. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
  227. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
  228. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
  229. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_cumulusci_library.py +0 -0
  230. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
  231. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
  232. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_performance.py +0 -0
  233. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
  234. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
  235. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_template_util.py +0 -0
  236. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/tests/test_utils.py +0 -0
  237. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/robotframework/utils.py +0 -0
  238. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/__init__.py +0 -0
  239. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/exceptions.py +0 -0
  240. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
  241. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/metadata.py +0 -0
  242. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/org_schema.py +0 -0
  243. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/org_schema_models.py +0 -0
  244. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/package_install.py +0 -0
  245. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/package_zip.py +0 -0
  246. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
  247. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/tests/__init__.py +0 -0
  248. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
  249. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
  250. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
  251. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
  252. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
  253. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/salesforce_api/utils.py +0 -0
  254. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/__init__.py +0 -0
  255. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/apex/__init__.py +0 -0
  256. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/apex/anon.py +0 -0
  257. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/apex/batch.py +0 -0
  258. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/apex/testrunner.py +0 -0
  259. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
  260. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/__init__.py +0 -0
  261. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
  262. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/dates.py +0 -0
  263. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/delete.py +0 -0
  264. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/extract.py +0 -0
  265. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
  266. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/generate.py +0 -0
  267. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
  268. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
  269. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
  270. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
  271. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/load.py +0 -0
  272. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
  273. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/query_transformers.py +0 -0
  274. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
  275. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
  276. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
  277. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +0 -0
  278. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +0 -0
  279. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/step.py +0 -0
  280. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  281. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
  282. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +0 -0
  283. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
  284. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
  285. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
  286. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
  287. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
  288. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
  289. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
  290. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
  291. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/person_accounts.yml +0 -0
  292. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +0 -0
  293. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
  294. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
  295. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
  296. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
  297. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
  298. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
  299. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
  300. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
  301. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
  302. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
  303. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
  304. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
  305. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
  306. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
  307. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
  308. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
  309. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +0 -0
  310. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +0 -0
  311. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +0 -0
  312. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
  313. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
  314. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_delete.py +0 -0
  315. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
  316. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
  317. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
  318. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
  319. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
  320. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
  321. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
  322. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +0 -0
  323. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
  324. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
  325. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_updates.py +0 -0
  326. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_upsert.py +0 -0
  327. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
  328. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/update_describe.py +0 -0
  329. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +0 -0
  330. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
  331. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/update_data.py +0 -0
  332. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/upsert_utils.py +0 -0
  333. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/bulkdata/utils.py +0 -0
  334. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/command.py +0 -0
  335. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/connectedapp.py +0 -0
  336. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/datadictionary.py +0 -0
  337. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/dx_convert_from.py +0 -0
  338. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/__init__.py +0 -0
  339. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/base.py +0 -0
  340. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/commit_status.py +0 -0
  341. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/merge.py +0 -0
  342. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/publish.py +0 -0
  343. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/pull_request.py +0 -0
  344. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/release.py +0 -0
  345. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/release_report.py +0 -0
  346. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tag.py +0 -0
  347. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/__init__.py +0 -0
  348. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
  349. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_merge.py +0 -0
  350. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_publish.py +0 -0
  351. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
  352. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_release.py +0 -0
  353. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
  354. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_tag.py +0 -0
  355. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/test_util.py +0 -0
  356. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
  357. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/github/util.py +0 -0
  358. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  359. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/api.py +0 -0
  360. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/base.py +0 -0
  361. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/deploy.py +0 -0
  362. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/get_user_info.py +0 -0
  363. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  364. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
  365. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
  366. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
  367. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
  368. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_base.py +0 -0
  369. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +0 -0
  370. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
  371. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/__init__.py +0 -0
  372. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/ee_src.py +0 -0
  373. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/managed_src.py +0 -0
  374. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
  375. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/modify.py +0 -0
  376. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/package.py +0 -0
  377. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  378. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
  379. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
  380. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
  381. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
  382. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
  383. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
  384. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
  385. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
  386. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
  387. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/base.py +0 -0
  388. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
  389. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
  390. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
  391. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
  392. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
  393. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
  394. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
  395. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
  396. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
  397. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
  398. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
  399. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +0 -0
  400. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
  401. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
  402. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
  403. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
  404. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
  405. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
  406. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/metaxml.py +0 -0
  407. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/__init__.py +0 -0
  408. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/licenses.py +0 -0
  409. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/packages.py +0 -0
  410. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/permsets.py +0 -0
  411. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/recordtypes.py +0 -0
  412. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/settings.py +0 -0
  413. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/sobjects.py +0 -0
  414. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
  415. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
  416. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
  417. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
  418. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
  419. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
  420. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/README.md +0 -0
  421. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/__init__.py +0 -0
  422. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/push_api.py +0 -0
  423. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/pushfails.py +0 -0
  424. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/tasks.py +0 -0
  425. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/tests/conftest.py +0 -0
  426. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
  427. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
  428. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/README.md +0 -0
  429. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/__init__.py +0 -0
  430. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/exceptions.py +0 -0
  431. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/generator.py +0 -0
  432. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/parser.py +0 -0
  433. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/provider.py +0 -0
  434. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/task.py +0 -0
  435. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  436. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
  437. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
  438. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
  439. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
  440. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
  441. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
  442. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
  443. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
  444. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
  445. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
  446. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/__init__.py +0 -0
  447. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
  448. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
  449. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
  450. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
  451. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/libdoc.py +0 -0
  452. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/lint.py +0 -0
  453. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
  454. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/robotframework.py +0 -0
  455. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
  456. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
  457. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
  458. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
  459. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
  460. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
  461. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
  462. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
  463. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
  464. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
  465. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
  466. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
  467. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
  468. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
  469. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
  470. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
  471. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/Deploy.py +0 -0
  472. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
  473. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
  474. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
  475. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
  476. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
  477. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
  478. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
  479. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
  480. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
  481. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
  482. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
  483. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
  484. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
  485. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
  486. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
  487. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
  488. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/__init__.py +0 -0
  489. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
  490. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/composite.py +0 -0
  491. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
  492. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
  493. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
  494. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
  495. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/insert_record.py +0 -0
  496. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
  497. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
  498. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
  499. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/org_settings.py +0 -0
  500. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/package_upload.py +0 -0
  501. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/profiles.py +0 -0
  502. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
  503. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
  504. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
  505. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
  506. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
  507. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
  508. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
  509. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
  510. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
  511. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
  512. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
  513. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
  514. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
  515. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
  516. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
  517. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
  518. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
  519. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
  520. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
  521. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
  522. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
  523. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
  524. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
  525. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
  526. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
  527. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
  528. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
  529. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
  530. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
  531. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
  532. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
  533. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
  534. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
  535. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
  536. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
  537. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
  538. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
  539. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/tests/util.py +0 -0
  540. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
  541. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
  542. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
  543. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
  544. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/users/photos.py +0 -0
  545. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
  546. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
  547. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
  548. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/sfdx.py +0 -0
  549. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/__init__.py +0 -0
  550. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/conftest.py +0 -0
  551. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_command.py +0 -0
  552. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
  553. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
  554. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
  555. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_metaxml.py +0 -0
  556. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
  557. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_pushfails.py +0 -0
  558. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_salesforce.py +0 -0
  559. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_sfdx.py +0 -0
  560. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/tests/test_util.py +0 -0
  561. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tasks/util.py +0 -0
  562. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/__init__.py +0 -0
  563. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
  564. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
  565. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +0 -0
  566. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
  567. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +0 -0
  568. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +0 -0
  569. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/test_entry_points.py +0 -0
  570. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/test_integration_infrastructure.py +0 -0
  571. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/test_main.py +0 -0
  572. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/test_schema.py +0 -0
  573. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/test_vcr_serializer.py +0 -0
  574. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/tests/util.py +0 -0
  575. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/classutils.py +0 -0
  576. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/fileutils.py +0 -0
  577. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/git.py +0 -0
  578. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/http/multi_request.py +0 -0
  579. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/http/requests_utils.py +0 -0
  580. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
  581. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/iterators.py +0 -0
  582. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/logging.py +0 -0
  583. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
  584. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
  585. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
  586. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/tests/test_fileutils.py +0 -0
  587. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/tests/test_git.py +0 -0
  588. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/tests/test_logging.py +0 -0
  589. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/tests/test_org_schema.py +0 -0
  590. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
  591. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/tests/test_waiting.py +0 -0
  592. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/waiting.py +0 -0
  593. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/xml/__init__.py +0 -0
  594. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/xml/metadata_tree.py +0 -0
  595. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/xml/robot_xml.py +0 -0
  596. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
  597. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
  598. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
  599. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/model_parser.py +0 -0
  600. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/safer_loader.py +0 -0
  601. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
  602. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
  603. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
  604. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
  605. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci/utils/ziputils.py +0 -0
  606. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/dependency_links.txt +0 -0
  607. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/entry_points.txt +0 -0
  608. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/not-zip-safe +0 -0
  609. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/requires.txt +0 -0
  610. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/cumulusci.egg-info/top_level.txt +0 -0
  611. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/Makefile +0 -0
  612. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/diagram/img/image1.png +0 -0
  613. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/diagram/img/image12.png +0 -0
  614. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/diagram/img/image15.png +0 -0
  615. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/diagram/img/image17.png +0 -0
  616. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/diagram/img/image3.png +0 -0
  617. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/cci_service_list.png +0 -0
  618. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/cumulus_ci_workflow.png +0 -0
  619. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/env-var.png +0 -0
  620. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/env-var2.png +0 -0
  621. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github-commit_status_error.png +0 -0
  622. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github-commit_status_pass.png +0 -0
  623. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github-creating_a_uat_release.png +0 -0
  624. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github_checks.png +0 -0
  625. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github_personal_access_token_scopes.png +0 -0
  626. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github_secrets.png +0 -0
  627. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/github_workflow.png +0 -0
  628. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/locate_elements_screenshot.png +0 -0
  629. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/pipx.png +0 -0
  630. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/robot_log_screenshot.png +0 -0
  631. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/robot_toggled_results_screenshot.png +0 -0
  632. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/salesforce-org-process.png +0 -0
  633. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/service-list.png +0 -0
  634. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/skipping_task.png +0 -0
  635. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/windows_python.png +0 -0
  636. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/images/windows_python_success.png +0 -0
  637. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/docs/make.bat +0 -0
  638. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/pyproject.toml +0 -0
  639. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/requirements/prod.txt +0 -0
  640. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/setup.cfg +0 -0
  641. {cumulusci-3.61.0.dev0 → cumulusci-3.61.0.dev2}/setup.py +0 -0
@@ -35,3 +35,4 @@ For example:
35
35
  (add your name here, when you contribute through a Pull Request!)
36
36
 
37
37
  * Ed Rivas (jerivas)
38
+ * Gustavo Tandeciarz (dcinzona)
@@ -2047,8 +2047,7 @@ New features:
2047
2047
  * Python 3.8 is now officially supported.
2048
2048
 
2049
2049
  * Flows can now include tasks or flows from a different project.
2050
- See `Using Tasks and Flows from a Different Project
2051
- <https://cumulusci.readthedocs.io/en/latest/features.html>`_ for details.
2050
+ See [](tasks-and-flows-from-a-different-project) for details.
2052
2051
 
2053
2052
  * In the ``metadeploy_publish`` task it is now possible to specify a
2054
2053
  commit hash with ``-o commit [sha]``, instead of a tag. This is useful
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cumulusci
3
- Version: 3.61.0.dev0
3
+ Version: 3.61.0.dev2
4
4
  Summary: Build and release tools for Salesforce developers
5
5
  Home-page: https://github.com/SFDO-Tooling/CumulusCI
6
6
  Author: Salesforce.org
@@ -2111,8 +2111,7 @@ Description: =========
2111
2111
  * Python 3.8 is now officially supported.
2112
2112
 
2113
2113
  * Flows can now include tasks or flows from a different project.
2114
- See `Using Tasks and Flows from a Different Project
2115
- <https://cumulusci.readthedocs.io/en/latest/features.html>`_ for details.
2114
+ See [](tasks-and-flows-from-a-different-project) for details.
2116
2115
 
2117
2116
  * In the ``metadeploy_publish`` task it is now possible to specify a
2118
2117
  commit hash with ``-o commit [sha]``, instead of a tag. This is useful
@@ -124,7 +124,7 @@ def test_flow_doc__with_flows_rst_file(load_yaml_data, echo):
124
124
  "Flow Reference\n==========================================\n\nopening blurb for flow reference doc\n\n",
125
125
  "Group1\n------",
126
126
  "This is a description of group1.",
127
- "Flow1\n^^^^^\n\n**Description:** Description of Flow1\n\nSome ``extra`` **pizzaz**!\n**Flow Steps**\n\n.. code-block:: console\n",
127
+ ".. _Flow1:\n\nFlow1\n^^^^^\n\n**Description:** Description of Flow1\n\nSome ``extra`` **pizzaz**!\n**Flow Steps**\n\n.. code-block:: console\n",
128
128
  "",
129
129
  ]
130
130
  expected_call_args = [mock.call(s) for s in expected_call_args]
@@ -6,7 +6,6 @@ import requests
6
6
  from cumulusci.core.config.oauth2_service_config import OAuth2ServiceConfig
7
7
  from cumulusci.core.keychain import BaseProjectKeychain
8
8
  from cumulusci.oauth.client import OAuth2Client
9
- from cumulusci.tasks.marketing_cloud.mc_constants import AUTH_URI
10
9
  from cumulusci.utils.http.requests_utils import safe_json_from_response
11
10
 
12
11
 
@@ -73,13 +72,12 @@ class MarketingCloudServiceConfig(OAuth2ServiceConfig):
73
72
  """Make a call to the Marketing Cloud REST API UserInfo endpoint.
74
73
  Raises HTTPError for bad response status, otherwise returns the payload
75
74
  in full."""
75
+ auth_uri = self.rest_instance_url.replace(".rest", ".auth")
76
76
  headers = {
77
77
  "Authorization": f"Bearer {self.access_token}",
78
78
  "Content-Type": "application/json",
79
79
  }
80
- response = requests.get(
81
- f"{AUTH_URI.format(self.tssd)}/v2/userinfo", headers=headers
82
- )
80
+ response = requests.get(f"{auth_uri}v2/userinfo", headers=headers)
83
81
  response.raise_for_status()
84
82
 
85
83
  return safe_json_from_response(response)
@@ -1262,6 +1262,8 @@ flows:
1262
1262
  resolution_strategy: unlocked
1263
1263
  org_dependent: True
1264
1264
  force_upload: True
1265
+ post_install_script: null
1266
+ uninstall_script: null
1265
1267
  3:
1266
1268
  task: promote_package_version
1267
1269
  options:
@@ -547,6 +547,15 @@
547
547
  "preflight_message": {
548
548
  "title": "Preflight Message",
549
549
  "type": "string"
550
+ },
551
+ "allowed_org_providers": {
552
+ "title": "Allowed Org Providers",
553
+ "default": ["user"],
554
+ "type": "array",
555
+ "items": {
556
+ "enum": ["devhub", "user"],
557
+ "type": "string"
558
+ }
550
559
  }
551
560
  },
552
561
  "additionalProperties": false
@@ -137,16 +137,27 @@ class CreatePackageVersion(BaseSalesforceApiTask):
137
137
  def _init_options(self, kwargs):
138
138
  super()._init_options(kwargs)
139
139
 
140
+ # Allow these fields to be explicitly set to blanks
141
+ # so that unlocked builds can override an otherwise-configured
142
+ # postinstall script
143
+ if "post_install_script" in self.options:
144
+ post_install_script = self.options["post_install_script"]
145
+ else:
146
+ post_install_script = self.project_config.project__package__install_class
147
+
148
+ if "uninstall_script" in self.options:
149
+ uninstall_script = self.options["uninstall_script"]
150
+ else:
151
+ uninstall_script = self.project_config.project__package__uninstall_class
152
+
140
153
  self.package_config = PackageConfig(
141
154
  package_name=self.options.get("package_name")
142
155
  or self.project_config.project__package__name,
143
156
  package_type=self.options.get("package_type")
144
157
  or self.project_config.project__package__type,
145
158
  org_dependent=self.options.get("org_dependent", False),
146
- post_install_script=self.options.get("post_install_script")
147
- or self.project_config.project__package__install_class,
148
- uninstall_script=self.options.get("uninstall_script")
149
- or self.project_config.project__package__uninstall_class,
159
+ post_install_script=post_install_script,
160
+ uninstall_script=uninstall_script,
150
161
  namespace=self.options.get("namespace")
151
162
  or self.project_config.project__package__namespace,
152
163
  version_name=self.options.get("version_name") or "Release",
@@ -0,0 +1 @@
1
+ MC_API_VERSION = "v2"
@@ -2,6 +2,7 @@ import json
2
2
  import os
3
3
  import re
4
4
  from pathlib import Path
5
+ from typing import List, Union
5
6
 
6
7
  import requests
7
8
 
@@ -13,6 +14,7 @@ from cumulusci.core.tasks import BaseTask
13
14
  from cumulusci.core.utils import process_bool_arg
14
15
  from cumulusci.utils import cd, download_extract_github, temporary_dir
15
16
  from cumulusci.utils.http.requests_utils import safe_json_from_response
17
+ from cumulusci.utils.yaml.cumulusci_yml import Plan
16
18
 
17
19
  INSTALL_VERSION_RE = re.compile(r"^Install .*\d$")
18
20
 
@@ -24,7 +26,7 @@ class BaseMetaDeployTask(BaseTask):
24
26
  metadeploy_service = self.project_config.keychain.get_service("metadeploy")
25
27
  self.base_url = metadeploy_service.url
26
28
  self.api = requests.Session()
27
- self.api.headers["Authorization"] = "token {}".format(metadeploy_service.token)
29
+ self.api.headers["Authorization"] = f"token {metadeploy_service.token}"
28
30
 
29
31
  def _call_api(self, method, path, collect_pages=False, **kwargs):
30
32
  next_url = self.base_url + path
@@ -85,9 +87,7 @@ class Publish(BaseMetaDeployTask):
85
87
  plan_name = self.options.get("plan")
86
88
  if plan_name:
87
89
  plan_configs = {}
88
- plan_configs[plan_name] = self.project_config.lookup(
89
- "plans__{}".format(plan_name)
90
- )
90
+ plan_configs[plan_name] = self.project_config.lookup(f"plans__{plan_name}")
91
91
 
92
92
  self.plan_configs = plan_configs
93
93
  else:
@@ -184,10 +184,10 @@ class Publish(BaseMetaDeployTask):
184
184
  if self.publish:
185
185
  self._call_api(
186
186
  "PATCH",
187
- "/versions/{}".format(version["id"]),
187
+ f"/versions/{version['id']}",
188
188
  json={"is_listed": True},
189
189
  )
190
- self.logger.info("Published Version {}".format(version["url"]))
190
+ self.logger.info(f"Published Version {version['url']}")
191
191
 
192
192
  # Save labels
193
193
  self._save_labels()
@@ -197,6 +197,11 @@ class Publish(BaseMetaDeployTask):
197
197
  product, plan_name, plan_config
198
198
  )
199
199
 
200
+ allowed_org_providers = self._get_allowed_org_providers(plan_name)
201
+ supported_orgs = self._convert_org_providers_to_plan_equivalent(
202
+ allowed_org_providers
203
+ )
204
+
200
205
  plan_json = {
201
206
  "is_listed": plan_config.get("is_listed", True),
202
207
  "plan_template": plan_template["url"],
@@ -207,6 +212,7 @@ class Publish(BaseMetaDeployTask):
207
212
  "preflight_message_additional", ""
208
213
  ),
209
214
  "steps": steps,
215
+ "supported_orgs": supported_orgs,
210
216
  "tier": plan_config["tier"],
211
217
  "title": plan_config["title"],
212
218
  "version": version["url"],
@@ -218,7 +224,27 @@ class Publish(BaseMetaDeployTask):
218
224
 
219
225
  # Create Plan
220
226
  plan = self._call_api("POST", "/plans", json=plan_json)
221
- self.logger.info("Created Plan {}".format(plan["url"]))
227
+ self.logger.info(f"Created Plan {plan['url']}")
228
+
229
+ def _get_allowed_org_providers(self, plan_name: str) -> List[str]:
230
+ "Validates and returns the org providers for a given plan"
231
+ plan = Plan.parse_obj(self.project_config.config["plans"][plan_name])
232
+ return plan.allowed_org_providers
233
+
234
+ def _convert_org_providers_to_plan_equivalent(
235
+ self, providers: Union[None, List[str]]
236
+ ) -> str:
237
+ """Given a list of plan.allowed_org_providers return the value that
238
+ corresponds `supported_orgs` field on the Plan model in MetaDeploy
239
+ """
240
+ if not providers or providers == ["user"]:
241
+ org_providers = "persistent"
242
+ elif "user" in providers and "devhub" in providers:
243
+ org_providers = "both"
244
+ elif providers == ["devhub"]:
245
+ org_providers = "scratch"
246
+
247
+ return org_providers
222
248
 
223
249
  def _freeze_steps(self, project_config, plan_config):
224
250
  steps = plan_config["steps"]
@@ -243,7 +269,7 @@ class Publish(BaseMetaDeployTask):
243
269
  result = self._call_api("GET", "/products", params={"repo_url": repo_url})
244
270
  if len(result["data"]) != 1:
245
271
  raise CumulusCIException(
246
- "No product found in MetaDeploy with repo URL {}".format(repo_url)
272
+ f"No product found in MetaDeploy with repo URL {repo_url}"
247
273
  )
248
274
  except KeyError:
249
275
  raise CumulusCIException(
@@ -287,10 +313,10 @@ class Publish(BaseMetaDeployTask):
287
313
  "is_listed": False,
288
314
  },
289
315
  )
290
- self.logger.info("Created {}".format(version["url"]))
316
+ self.logger.info(f"Created {version['url']}")
291
317
  else:
292
318
  version = result["data"][0]
293
- self.logger.info("Found {}".format(version["url"]))
319
+ self.logger.info(f"Found {version['url']}")
294
320
  return version
295
321
 
296
322
  def _find_or_create_plan_template(self, product, plan_name, plan_config):
@@ -311,16 +337,16 @@ class Publish(BaseMetaDeployTask):
311
337
  "error_message": plan_config.get("error_message", ""),
312
338
  },
313
339
  )
314
- self.logger.info("Created {}".format(plantemplate["url"]))
340
+ self.logger.info(f"Created {plantemplate['url']}")
315
341
  planslug = self._call_api(
316
342
  "POST",
317
343
  "/planslug",
318
344
  json={"slug": plan_config["slug"], "parent": plantemplate["url"]},
319
345
  )
320
- self.logger.info("Created {}".format(planslug["url"]))
346
+ self.logger.info(f"Created {planslug['url']}")
321
347
  else:
322
348
  plantemplate = result["data"][0]
323
- self.logger.info("Found {}".format(plantemplate["url"]))
349
+ self.logger.info(f"Found {plantemplate['url']}")
324
350
  return plantemplate
325
351
 
326
352
  def _load_labels(self):
@@ -0,0 +1,109 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <script
6
+ src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
7
+ integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E="
8
+ crossorigin="anonymous"
9
+ ></script>
10
+ <script>
11
+ function filter() {
12
+ var filter_string = $("#filter").val().toLowerCase();
13
+ $(".kwtable .kwname").each(function () {
14
+ if ($(this).text().toLowerCase().indexOf(filter_string) !== -1) {
15
+ $(this).parent().show();
16
+ } else {
17
+ $(this).parent().hide();
18
+ }
19
+ });
20
+ }
21
+ $(document).ready(function () {
22
+ $("#filter").on("input", function () {
23
+ filter();
24
+ });
25
+ $("#filter").keyup(function () {
26
+ filter();
27
+ });
28
+ });
29
+ </script>
30
+ <style>
31
+ {{stylesheet}}
32
+ </style>
33
+ </head>
34
+ <body>
35
+ <div class="container">
36
+ <!-- this is the header for the documentation as a whole -->
37
+ <div class="header">
38
+ <h1 class="title">{{title}}</h1>
39
+ <div class="filter right">
40
+ filter: <input id="filter" type="filter" />
41
+ </div>
42
+ </div>
43
+
44
+ {% for kwfile in libraries %}
45
+ <div class="file" id="file-{{kwfile.path}}">
46
+ <div class="file-header">
47
+ <h2 title="{{kwfile.path}}">{{kwfile.title}}</h2>
48
+ <div class="file-path">{{kwfile.path}}</div>
49
+ </div>
50
+
51
+ {% if kwfile.doc %}
52
+ <div class="pageobject-file-description">{{kwfile.doc|robot_html}}</div>
53
+ {% endif %} {% for pageobject, library in kwfile.keywords.items() %}
54
+ <div class="section" pageobject="{{pageobject|join('-')}}">
55
+ {% if pageobject %}
56
+ <div class="pageobject-header">
57
+ <table class="pageobject-header">
58
+ <tbody>
59
+ <tr class="data">
60
+ <td title="Page Type">{{pageobject[0]}}</td>
61
+ {% if pageobject[1] %}
62
+ <td title="Object Name">{{pageobject[1]}}</td>
63
+ {% endif %}
64
+ </tr>
65
+ <tr class="labels">
66
+ <td>Page Type</td>
67
+ {% if pageobject[1] %}
68
+ <td>Object Name</td>
69
+ {% endif %}
70
+ </tr>
71
+ </tbody>
72
+ </table>
73
+ </div>
74
+ {% endif %}
75
+
76
+ <div class="description" title="Description">
77
+ {{library.doc|robot_html}}
78
+ </div>
79
+ <table class="kwtable" title="Table of keywords">
80
+ <tbody>
81
+ <tr>
82
+ <th>Keyword</th>
83
+ <th>Arguments</th>
84
+ <th>Documentation</th>
85
+ </tr>
86
+ {% for keyword in library.keywords %}
87
+ <tr
88
+ class="kwrow"
89
+ id="{{kwfile.filename}}.{{keyword.name.replace(' ', '-')}}"
90
+ >
91
+ <td class="kwname">{{keyword.name}}</td>
92
+ <td class="kwargs">
93
+ {% for arg in keyword.args %}
94
+ <i>{{arg}}</i>{% if not loop.last %}, {% endif %} {%
95
+ endfor %}
96
+ </td>
97
+ <td class="kwdoc">{{keyword.doc|robot_html}}</td>
98
+ </tr>
99
+ {% endfor %}
100
+ </tbody>
101
+ </table>
102
+ </div>
103
+ {# class="library-whatever" #} {% endfor %}
104
+ </div>
105
+ {% endfor %}
106
+ </div>
107
+ <div class="footer">Generated on {{date}} - cumulusci v{{cci_version}}</div>
108
+ </body>
109
+ </html>
@@ -672,7 +672,7 @@ class TestRobotLibDocOutput:
672
672
  def test_formatted_documentation(self):
673
673
  """Verify that markup in the documentation is rendered as html"""
674
674
  doc_element = self.html_body.find(
675
- ".//tr[@id='TestLibrary.py.Library Keyword One']//td[@class='kwdoc']"
675
+ ".//tr[@id='TestLibrary.py.Library-Keyword-One']//td[@class='kwdoc']"
676
676
  )
677
677
  doc_html = str(ET.tostring(doc_element, method="html").strip())
678
678
  # we could just do an assert on the full markup of the
@@ -756,13 +756,13 @@ class TestLibdocPageObjects:
756
756
  description = section.find("div[@class='description']")
757
757
  expected = '<div class="description" title="Description"><p>Description of SomethingDetailPage</p></div>'
758
758
  actual = ET.tostring(description).decode("utf-8").strip()
759
- assert actual == expected
759
+ assert shrinkws(actual) == shrinkws(expected)
760
760
 
761
761
  section = self.html_body.find(".//div[@pageobject='Listing-Something__c']")
762
762
  description = section.find("div[@class='description']")
763
763
  expected = '<div class="description" title="Description"><p>Description of SomethingListingPage</p></div>'
764
764
  actual = ET.tostring(description).decode("utf-8").strip()
765
- assert actual == expected
765
+ assert shrinkws(actual) == shrinkws(expected)
766
766
 
767
767
 
768
768
  class TestRobotPerformanceKeywords:
@@ -858,3 +858,7 @@ class TestRobotPerformanceKeywords:
858
858
  assert list(filter(None, elapsed_times)) == [
859
859
  {"Elapsed Time": 11655.9, "Donuts": 42.3}
860
860
  ]
861
+
862
+
863
+ def shrinkws(s):
864
+ return re.sub(r"\s+", " ", s).replace("> <", "><")
@@ -269,6 +269,66 @@ def test_throws_exception_record_type_not_found():
269
269
  task._transform_entity(metadata_tree.fromstring(ADMIN_PROFILE_BEFORE), "Admin")
270
270
 
271
271
 
272
+ def test_transforms_profile_with_layouts():
273
+ task = create_task(
274
+ ProfileGrantAllAccess,
275
+ {
276
+ "record_types": [
277
+ {
278
+ "record_type": "Account.HH_Account",
279
+ "page_layout": "Account-Account Layout",
280
+ },
281
+ {
282
+ "record_type": "Account.Business_Account",
283
+ "page_layout": "Account-Account Layout",
284
+ "default": True,
285
+ },
286
+ ],
287
+ },
288
+ )
289
+
290
+ # To support coverage for when pulling metadata with layout definitions
291
+ profile_before = ADMIN_PROFILE_BEFORE.replace(
292
+ b"</Profile>",
293
+ b"""\n <layoutAssignments>
294
+ <recordType>Account.Business_Account</recordType>
295
+ <layout>Account-Business Account Layout</layout>
296
+ </layoutAssignments>
297
+ </Profile>""",
298
+ )
299
+
300
+ inbound = metadata_tree.fromstring(profile_before)
301
+ assert len(inbound.findall("layoutAssignments")) == 1
302
+
303
+ # Verify the expected input includes the layoutAssignment element and
304
+ # the original layout
305
+ assert (
306
+ inbound.find("layoutAssignments", recordType="Account.Business_Account")
307
+ .find("layout")
308
+ .text
309
+ == "Account-Business Account Layout"
310
+ )
311
+
312
+ # Run the transformation and assert that there are two layoutAssignments
313
+ outbound = task._transform_entity(inbound, "Admin")
314
+ assert len(outbound.findall("layoutAssignments")) == 2
315
+
316
+ # Verify that the original layout assignment was updated
317
+ assignments = outbound.find(
318
+ "layoutAssignments", recordType="Account.Business_Account"
319
+ )
320
+ assert assignments is not None
321
+ assert assignments.find("layout").text == "Account-Account Layout"
322
+
323
+ assignments = outbound.find("layoutAssignments", recordType="Account.HH_Account")
324
+ assert assignments is not None
325
+ assert assignments.find("layout").text == "Account-Account Layout"
326
+
327
+ # assert that the nodes are included in the xml output as expected
328
+ xml_output = outbound.tostring(xml_declaration=True)
329
+ assert xml_output.count("<layoutAssignments>") == 2
330
+
331
+
272
332
  def test_expand_package_xml():
273
333
  task = create_task(ProfileGrantAllAccess, {"api_names": ["Admin"]})
274
334
  task.tooling = mock.Mock()
@@ -287,6 +347,30 @@ def test_expand_package_xml():
287
347
  assert "fb__Foo_Bar__c" in {elem.text for elem in types.findall("members")}
288
348
 
289
349
 
350
+ def test_expand_package_xml_objects():
351
+ task = create_task(
352
+ ProfileGrantAllAccess,
353
+ {"api_names": ["Admin"], "record_types": [{"record_type": "Case.Case"}]},
354
+ )
355
+ task.tooling = mock.Mock()
356
+ package_xml = metadata_tree.fromstring(PACKAGE_XML_BEFORE)
357
+ task._expand_package_xml_objects(package_xml)
358
+ types = package_xml.find("types", name="CustomObject")
359
+ assert "Case" in {elem.text for elem in types.findall("members")}
360
+
361
+
362
+ def test_expand_package_xml_objects_no_record_types():
363
+ task = create_task(
364
+ ProfileGrantAllAccess,
365
+ {"api_names": ["Admin"]},
366
+ )
367
+ task.tooling = mock.Mock()
368
+ package_xml = metadata_tree.fromstring(PACKAGE_XML_BEFORE)
369
+ task._expand_package_xml_objects(package_xml)
370
+ types = package_xml.find("types", name="CustomObject")
371
+ assert "Case" not in {elem.text for elem in types.findall("members")}
372
+
373
+
290
374
  def test_expand_package_xml__broken_package():
291
375
  task = create_task(ProfileGrantAllAccess, {"api_names": ["Admin"]})
292
376
  task.tooling = mock.Mock()
@@ -28,7 +28,10 @@ class ProfileGrantAllAccess(MetadataSingleEntityTransformTask, BaseSalesforceApi
28
28
  "the record type in format <object>.<developer_name>. Record type names can use the token strings {managed} "
29
29
  "and {namespaced_org} for namespace prefix injection as needed. By default, all listed record types will be set "
30
30
  "to visible and not default. Use the additional keys `visible`, `default`, and `person_account_default` set to "
31
- "true/false to override. NOTE: Setting record_types is only supported in cumulusci.yml, command line override is not supported."
31
+ "true/false to override. "
32
+ "Page Layout Support: If you are using the Page Layouts feature, you can specify the `page_layout` key with the "
33
+ "layout name to use for the record type. If not specified, the default page layout will be used. "
34
+ "NOTE: Setting record_types is only supported in cumulusci.yml, command line override is not supported."
32
35
  },
33
36
  "managed": {
34
37
  "description": "If True, uses the namespace prefix where appropriate. Use if running against an org with the managed package "
@@ -178,6 +181,27 @@ class ProfileGrantAllAccess(MetadataSingleEntityTransformTask, BaseSalesforceApi
178
181
  text=f"{record['NamespacePrefix']}__{record['DeveloperName']}__c",
179
182
  )
180
183
 
184
+ self._expand_package_xml_objects(package_xml)
185
+
186
+ def _expand_package_xml_objects(self, package_xml):
187
+ # Check for any record types specified in the options, but missing from the package.xml
188
+ # Add these entities to the package.xml
189
+
190
+ custom_objects = package_xml.find("types", name="CustomObject")
191
+
192
+ # Append custom objects if record types are present but missing from package.xml
193
+ record_types = self.options.get("record_types") or []
194
+ rt_objects = {rt["record_type"].split(".")[0] for rt in record_types}
195
+ listed_custom_objects = {c.text for c in custom_objects.findall("members")}
196
+
197
+ for rt in rt_objects:
198
+ if rt not in listed_custom_objects:
199
+ self.logger.info('Adding "{}" to package.xml'.format(rt))
200
+ custom_objects.append(
201
+ "members",
202
+ text=rt,
203
+ )
204
+
181
205
  def _transform_entity(self, tree, api_name):
182
206
  # Custom applications
183
207
  self._set_elements_visible(tree, "applicationVisibilities", "visible")
@@ -254,5 +278,26 @@ class ProfileGrantAllAccess(MetadataSingleEntityTransformTask, BaseSalesforceApi
254
278
  if pa_default is not None:
255
279
  pa_default.text = str(rt.get("person_account_default", "false")).lower()
256
280
 
281
+ # Set page layout defaults for record types
282
+ for rt in record_types:
283
+ # We need it to look like this:
284
+ # <layoutAssignments>
285
+ # <layout>{page_layout}</layout>
286
+ # <recordType>{record_type}</recordType>
287
+ # </layoutAssignments>
288
+ layout_option = rt.get("page_layout", None)
289
+ if layout_option:
290
+ # Look for page layout definitions in the record type
291
+ found_layout = False
292
+ for elem in tree.findall("layoutAssignments"):
293
+ if elem.find("recordType").text == rt["record_type"]:
294
+ elem.layout.text = layout_option
295
+ found_layout = True
296
+
297
+ if not found_layout:
298
+ assignment = tree.append(tag="layoutAssignments")
299
+ assignment.append(tag="recordType", text=rt["record_type"])
300
+ assignment.append(tag="layout", text=layout_option)
301
+
257
302
 
258
303
  UpdateAdminProfile = UpdateProfile = ProfileGrantAllAccess