cumulusci 3.60.0.dev1__tar.gz → 3.61.0.dev0__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 (640) hide show
  1. cumulusci-3.61.0.dev0/CONTRIBUTING.rst +1 -0
  2. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/HISTORY.rst +15 -0
  3. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/PKG-INFO +16 -1
  4. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/org_config.py +9 -1
  5. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/tests/test_config.py +50 -0
  6. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +25 -6
  7. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/tests/conftest.py +6 -0
  8. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +18 -0
  9. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cumulusci.yml +1 -1
  10. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/salesforce.py +6 -1
  11. cumulusci-3.61.0.dev0/cumulusci/robotframework/Performance.py +165 -0
  12. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/Salesforce.py +6 -573
  13. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/Salesforce.robot +2 -0
  14. cumulusci-3.61.0.dev0/cumulusci/robotframework/SalesforceAPI.py +416 -0
  15. cumulusci-3.61.0.dev0/cumulusci/robotframework/SalesforcePlaywright.py +84 -0
  16. cumulusci-3.61.0.dev0/cumulusci/robotframework/SalesforcePlaywright.robot +40 -0
  17. cumulusci-3.61.0.dev0/cumulusci/robotframework/base_library.py +39 -0
  18. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/pageobjects/baseobjects.py +4 -18
  19. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/performance.robot +12 -12
  20. cumulusci-3.61.0.dev0/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +24 -0
  21. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_pageobjects.py +1 -0
  22. cumulusci-3.61.0.dev0/cumulusci/robotframework/tests/test_performance.py +38 -0
  23. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_salesforce.py +0 -33
  24. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_salesforce_locators.py +5 -3
  25. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_upsert.py +2 -2
  26. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/stylesheet.css +6 -5
  27. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/util.py +1 -1
  28. cumulusci-3.61.0.dev0/cumulusci/version.txt +1 -0
  29. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/PKG-INFO +16 -1
  30. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/SOURCES.txt +7 -0
  31. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/requires.txt +4 -2
  32. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/contributing.rst +5 -0
  33. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/robot_playwright.rst +24 -17
  34. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/requirements/dev.txt +32 -8
  35. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/requirements/prod.txt +9 -2
  36. cumulusci-3.60.0.dev1/CONTRIBUTING.rst +0 -1
  37. cumulusci-3.60.0.dev1/cumulusci/version.txt +0 -1
  38. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/AUTHORS.rst +0 -0
  39. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/LICENSE +0 -0
  40. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/MANIFEST.in +0 -0
  41. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/README.rst +0 -0
  42. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/__init__.py +0 -0
  43. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/__main__.py +0 -0
  44. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/__init__.py +0 -0
  45. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/cci.py +0 -0
  46. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/error.py +0 -0
  47. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/flow.py +0 -0
  48. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/logger.py +0 -0
  49. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/org.py +0 -0
  50. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/plan.py +0 -0
  51. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/project.py +0 -0
  52. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/robot.py +0 -0
  53. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/runtime.py +0 -0
  54. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/service.py +0 -0
  55. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/task.py +0 -0
  56. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/__init__.py +0 -0
  57. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_cci.py +0 -0
  58. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_error.py +0 -0
  59. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_flow.py +0 -0
  60. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_logger.py +0 -0
  61. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_org.py +0 -0
  62. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_plan.py +0 -0
  63. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_project.py +0 -0
  64. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_robot.py +0 -0
  65. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_runtime.py +0 -0
  66. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_service.py +0 -0
  67. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_task.py +0 -0
  68. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_ui.py +0 -0
  69. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/test_utils.py +0 -0
  70. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/tests/utils.py +0 -0
  71. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/ui.py +0 -0
  72. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/cli/utils.py +0 -0
  73. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/conftest.py +0 -0
  74. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/__init__.py +0 -0
  75. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/BaseConfig.py +0 -0
  76. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
  77. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/OrgConfig.py +0 -0
  78. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
  79. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/__init__.py +0 -0
  80. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/base_config.py +0 -0
  81. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/base_task_flow_config.py +0 -0
  82. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
  83. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/oauth2_service_config.py +0 -0
  84. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/project_config.py +0 -0
  85. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/scratch_org_config.py +0 -0
  86. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/sfdx_org_config.py +0 -0
  87. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
  88. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
  89. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/tests/test_config_util.py +0 -0
  90. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/universal_config.py +0 -0
  91. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/config/util.py +0 -0
  92. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/debug.py +0 -0
  93. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/__init__.py +0 -0
  94. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/dependencies.py +0 -0
  95. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/github.py +0 -0
  96. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/resolvers.py +0 -0
  97. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
  98. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
  99. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
  100. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
  101. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
  102. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/dependencies/utils.py +0 -0
  103. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/exceptions.py +0 -0
  104. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/flowrunner.py +0 -0
  105. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/github.py +0 -0
  106. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/__init__.py +0 -0
  107. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/base_project_keychain.py +0 -0
  108. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
  109. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/subprocess_keychain.py +0 -0
  110. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
  111. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/metadeploy.py +0 -0
  112. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/runtime.py +0 -0
  113. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/sfdx.py +0 -0
  114. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/source/__init__.py +0 -0
  115. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/source/github.py +0 -0
  116. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/source/local_folder.py +0 -0
  117. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tasks.py +0 -0
  118. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/template_utils.py +0 -0
  119. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/__init__.py +0 -0
  120. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_exceptions.py +0 -0
  121. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_flowrunner.py +0 -0
  122. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_github.py +0 -0
  123. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_sfdx.py +0 -0
  124. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_source.py +0 -0
  125. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_tasks.py +0 -0
  126. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_utils.py +0 -0
  127. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
  128. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/test_versions.py +0 -0
  129. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/tests/utils.py +0 -0
  130. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/utils.py +0 -0
  131. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/core/versions.py +0 -0
  132. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/admin_profile.xml +0 -0
  133. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/delete_excludes.txt +0 -0
  134. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/templates/project/README.md +0 -0
  135. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
  136. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/templates/project/dot-gitignore +0 -0
  137. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/templates/project/mapping.yml +0 -0
  138. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/files/templates/project/scratch_def.json +0 -0
  139. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/__init__.py +0 -0
  140. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/client.py +0 -0
  141. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/exceptions.py +0 -0
  142. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/tests/__init__.py +0 -0
  143. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/tests/test_client.py +0 -0
  144. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
  145. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/CumulusCI.py +0 -0
  146. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/CumulusCI.robot +0 -0
  147. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/__init__.py +0 -0
  148. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/form_handlers.py +0 -0
  149. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/locator_manager.py +0 -0
  150. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/locators_54.py +0 -0
  151. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/locators_55.py +0 -0
  152. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
  153. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
  154. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
  155. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
  156. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
  157. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
  158. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/CustomObjectTestPage.py +0 -0
  159. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
  160. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
  161. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
  162. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
  163. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
  164. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
  165. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
  166. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
  167. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
  168. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
  169. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
  170. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
  171. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
  172. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
  173. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/label_locator.robot +0 -0
  174. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/labels.html +0 -0
  175. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
  176. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
  177. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
  178. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
  179. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
  180. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
  181. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
  182. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
  183. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
  184. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_cumulusci_library.py +0 -0
  185. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
  186. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
  187. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/tests/test_utils.py +0 -0
  188. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/robotframework/utils.py +0 -0
  189. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/__init__.py +0 -0
  190. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/exceptions.py +0 -0
  191. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
  192. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/metadata.py +0 -0
  193. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/org_schema.py +0 -0
  194. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
  195. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/package_install.py +0 -0
  196. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/package_zip.py +0 -0
  197. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
  198. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
  199. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
  200. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
  201. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
  202. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
  203. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
  204. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/salesforce_api/utils.py +0 -0
  205. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/schema/cumulusci.jsonschema.json +0 -0
  206. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/__init__.py +0 -0
  207. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/apex/__init__.py +0 -0
  208. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/apex/anon.py +0 -0
  209. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/apex/batch.py +0 -0
  210. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/apex/testrunner.py +0 -0
  211. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
  212. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
  213. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
  214. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/dates.py +0 -0
  215. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/delete.py +0 -0
  216. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/extract.py +0 -0
  217. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
  218. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/generate.py +0 -0
  219. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
  220. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
  221. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
  222. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
  223. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/load.py +0 -0
  224. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
  225. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/query_transformers.py +0 -0
  226. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
  227. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
  228. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
  229. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +0 -0
  230. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +0 -0
  231. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/step.py +0 -0
  232. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  233. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
  234. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +0 -0
  235. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
  236. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
  237. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
  238. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
  239. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
  240. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
  241. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
  242. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
  243. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/person_accounts.yml +0 -0
  244. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +0 -0
  245. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
  246. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
  247. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
  248. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
  249. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
  250. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
  251. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
  252. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
  253. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
  254. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
  255. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
  256. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
  257. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
  258. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
  259. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
  260. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
  261. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +0 -0
  262. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +0 -0
  263. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +0 -0
  264. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
  265. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
  266. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_delete.py +0 -0
  267. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
  268. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
  269. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
  270. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
  271. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
  272. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
  273. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
  274. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +0 -0
  275. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
  276. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
  277. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_updates.py +0 -0
  278. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
  279. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/update_describe.py +0 -0
  280. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +0 -0
  281. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
  282. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/update_data.py +0 -0
  283. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/upsert_utils.py +0 -0
  284. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/bulkdata/utils.py +0 -0
  285. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/command.py +0 -0
  286. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/connectedapp.py +0 -0
  287. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/create_package_version.py +0 -0
  288. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/datadictionary.py +0 -0
  289. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/dx_convert_from.py +0 -0
  290. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/__init__.py +0 -0
  291. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/base.py +0 -0
  292. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/commit_status.py +0 -0
  293. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/merge.py +0 -0
  294. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/publish.py +0 -0
  295. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/pull_request.py +0 -0
  296. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/release.py +0 -0
  297. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/release_report.py +0 -0
  298. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tag.py +0 -0
  299. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/__init__.py +0 -0
  300. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
  301. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
  302. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_publish.py +0 -0
  303. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
  304. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_release.py +0 -0
  305. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
  306. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_tag.py +0 -0
  307. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/test_util.py +0 -0
  308. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
  309. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/github/util.py +0 -0
  310. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  311. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
  312. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/base.py +0 -0
  313. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/deploy.py +0 -0
  314. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/get_user_info.py +0 -0
  315. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
  316. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  317. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
  318. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
  319. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
  320. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
  321. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +0 -0
  322. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +0 -0
  323. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
  324. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/__init__.py +0 -0
  325. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/ee_src.py +0 -0
  326. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/managed_src.py +0 -0
  327. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
  328. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/modify.py +0 -0
  329. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/package.py +0 -0
  330. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  331. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
  332. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
  333. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
  334. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
  335. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
  336. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
  337. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
  338. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
  339. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
  340. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/base.py +0 -0
  341. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
  342. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
  343. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
  344. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
  345. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
  346. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
  347. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
  348. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
  349. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
  350. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
  351. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
  352. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +0 -0
  353. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
  354. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
  355. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
  356. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
  357. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
  358. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
  359. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metadeploy.py +0 -0
  360. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/metaxml.py +0 -0
  361. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/__init__.py +0 -0
  362. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/licenses.py +0 -0
  363. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/packages.py +0 -0
  364. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/permsets.py +0 -0
  365. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
  366. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/settings.py +0 -0
  367. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/sobjects.py +0 -0
  368. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
  369. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
  370. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
  371. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
  372. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
  373. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
  374. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/README.md +0 -0
  375. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/__init__.py +0 -0
  376. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/push_api.py +0 -0
  377. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/pushfails.py +0 -0
  378. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/tasks.py +0 -0
  379. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/tests/conftest.py +0 -0
  380. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
  381. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
  382. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/README.md +0 -0
  383. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/__init__.py +0 -0
  384. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
  385. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/generator.py +0 -0
  386. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/parser.py +0 -0
  387. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/provider.py +0 -0
  388. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/task.py +0 -0
  389. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  390. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
  391. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
  392. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
  393. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
  394. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
  395. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
  396. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
  397. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
  398. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
  399. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
  400. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/__init__.py +0 -0
  401. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
  402. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
  403. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
  404. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
  405. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/libdoc.py +0 -0
  406. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/lint.py +0 -0
  407. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
  408. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
  409. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/template.html +0 -0
  410. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
  411. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
  412. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
  413. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
  414. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
  415. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
  416. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
  417. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
  418. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +0 -0
  419. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
  420. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
  421. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
  422. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
  423. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
  424. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
  425. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
  426. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
  427. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
  428. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
  429. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
  430. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
  431. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
  432. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
  433. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
  434. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
  435. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
  436. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
  437. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
  438. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
  439. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
  440. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
  441. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
  442. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
  443. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/__init__.py +0 -0
  444. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
  445. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/composite.py +0 -0
  446. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
  447. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
  448. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
  449. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
  450. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
  451. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
  452. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
  453. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
  454. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
  455. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
  456. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/profiles.py +0 -0
  457. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
  458. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
  459. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
  460. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
  461. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
  462. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
  463. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
  464. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
  465. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
  466. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
  467. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
  468. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
  469. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
  470. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
  471. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
  472. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
  473. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
  474. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
  475. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
  476. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
  477. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
  478. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
  479. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
  480. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
  481. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
  482. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
  483. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
  484. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
  485. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
  486. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
  487. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
  488. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
  489. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
  490. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
  491. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
  492. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
  493. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
  494. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
  495. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
  496. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
  497. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
  498. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
  499. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
  500. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
  501. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
  502. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
  503. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
  504. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
  505. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/sfdx.py +0 -0
  506. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/__init__.py +0 -0
  507. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/conftest.py +0 -0
  508. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_command.py +0 -0
  509. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
  510. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
  511. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
  512. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
  513. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
  514. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
  515. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
  516. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
  517. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
  518. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
  519. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/tests/test_util.py +0 -0
  520. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tasks/util.py +0 -0
  521. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/__init__.py +0 -0
  522. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
  523. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
  524. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +0 -0
  525. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
  526. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +0 -0
  527. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +0 -0
  528. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/test_entry_points.py +0 -0
  529. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
  530. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/test_main.py +0 -0
  531. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/test_schema.py +0 -0
  532. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/test_utils.py +0 -0
  533. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/tests/test_vcr_serializer.py +0 -0
  534. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/__init__.py +0 -0
  535. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/classutils.py +0 -0
  536. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/fileutils.py +0 -0
  537. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/git.py +0 -0
  538. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/http/multi_request.py +0 -0
  539. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/http/requests_utils.py +0 -0
  540. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
  541. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/iterators.py +0 -0
  542. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/logging.py +0 -0
  543. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
  544. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
  545. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
  546. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/tests/test_fileutils.py +0 -0
  547. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/tests/test_git.py +0 -0
  548. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/tests/test_logging.py +0 -0
  549. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/tests/test_org_schema.py +0 -0
  550. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
  551. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/tests/test_waiting.py +0 -0
  552. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/waiting.py +0 -0
  553. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/xml/__init__.py +0 -0
  554. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/xml/metadata_tree.py +0 -0
  555. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/xml/robot_xml.py +0 -0
  556. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
  557. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
  558. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
  559. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/cumulusci_yml.py +0 -0
  560. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/model_parser.py +0 -0
  561. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/safer_loader.py +0 -0
  562. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
  563. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
  564. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
  565. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
  566. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci/utils/ziputils.py +0 -0
  567. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/dependency_links.txt +0 -0
  568. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/entry_points.txt +0 -0
  569. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/not-zip-safe +0 -0
  570. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/cumulusci.egg-info/top_level.txt +0 -0
  571. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/2gp_testing.rst +0 -0
  572. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/Makefile +0 -0
  573. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/about.rst +0 -0
  574. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/cheat_sheet.rst +0 -0
  575. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/cli.rst +0 -0
  576. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/commands.rst +0 -0
  577. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/concepts.rst +0 -0
  578. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/conf.py +0 -0
  579. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/config.rst +0 -0
  580. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/connected_orgs.rst +0 -0
  581. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/continuous_integration.rst +0 -0
  582. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/cookbook.rst +0 -0
  583. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/cumulusci_flow.rst +0 -0
  584. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/data.rst +0 -0
  585. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/dev.rst +0 -0
  586. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/diagram/img/image1.png +0 -0
  587. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/diagram/img/image12.png +0 -0
  588. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/diagram/img/image15.png +0 -0
  589. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/diagram/img/image17.png +0 -0
  590. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/diagram/img/image3.png +0 -0
  591. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/env_var_reference.rst +0 -0
  592. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/get_started.rst +0 -0
  593. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/github_actions.rst +0 -0
  594. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/headless.rst +0 -0
  595. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/history.rst +0 -0
  596. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/cci_service_list.png +0 -0
  597. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/cumulus_ci_workflow.png +0 -0
  598. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/env-var.png +0 -0
  599. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/env-var2.png +0 -0
  600. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github-commit_status_error.png +0 -0
  601. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github-commit_status_pass.png +0 -0
  602. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github-creating_a_uat_release.png +0 -0
  603. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github_checks.png +0 -0
  604. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github_personal_access_token_scopes.png +0 -0
  605. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github_secrets.png +0 -0
  606. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/github_workflow.png +0 -0
  607. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/locate_elements_screenshot.png +0 -0
  608. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/pipx.png +0 -0
  609. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/robot_log_screenshot.png +0 -0
  610. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/robot_toggled_results_screenshot.png +0 -0
  611. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/salesforce-org-process.png +0 -0
  612. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/service-list.png +0 -0
  613. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/skipping_task.png +0 -0
  614. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/windows_python.png +0 -0
  615. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/images/windows_python_success.png +0 -0
  616. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/index.rst +0 -0
  617. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/install.rst +0 -0
  618. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/internals.rst +0 -0
  619. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/intro.rst +0 -0
  620. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/make.bat +0 -0
  621. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/managed_2gp.rst +0 -0
  622. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/managed_package.rst +0 -0
  623. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/metadata_etl.rst +0 -0
  624. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/npsp_eda_2gp.rst +0 -0
  625. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/packaging.rst +0 -0
  626. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/push_upgrades.rst +0 -0
  627. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/reference.rst +0 -0
  628. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/release_notes.rst +0 -0
  629. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/robot.rst +0 -0
  630. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/robot_advanced.rst +0 -0
  631. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/robot_debugger.rst +0 -0
  632. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/robot_locators.rst +0 -0
  633. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/robot_tutorial.rst +0 -0
  634. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/scratch_orgs.rst +0 -0
  635. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/tutorial.rst +0 -0
  636. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/unlocked_package.rst +0 -0
  637. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/docs/unpackaged.rst +0 -0
  638. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/pyproject.toml +0 -0
  639. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/setup.cfg +0 -0
  640. {cumulusci-3.60.0.dev1 → cumulusci-3.61.0.dev0}/setup.py +0 -0
@@ -0,0 +1 @@
1
+ See docs/contributing.rst
@@ -1,6 +1,21 @@
1
1
  =======
2
2
  History
3
3
  =======
4
+ 3.60.0 (2022-06-09)
5
+ -------------------
6
+ Changes:
7
+
8
+ * We added a new dependency resolution strategy, ``unlocked``. Like our existing dependency strategies using parallel 2GP package builds, this strategy installs parallel unlocked package builds. (#3223)
9
+ * We added the flows ``build_unlocked_test_package``, ``install_unlocked_commit``, and ``qa_org_unlocked`` to support use of parallel unlocked packages. (#3223)
10
+ * We added a property, ``is_survey_advanced_features_enabled``, to the org_config entity available in when clauses. (#3149)
11
+ * Robot framework API and performance keywords have been moved into separate libraries. They are still automatically imported when using Salesforce.robot so it is not necessary to modify any existing test files. (#3216)
12
+ * There are new robot framework keyword libraries with limited support for `Playwright <https://playwright.dev/>`_ via the `robotframework-browser library <https://robotframework-browser.org/>`_. To use, import the resource file ``cumulusci/robotframework/SalesforcePlaywright.robot`` instead of ``cumulusci/robotframework/Salesforce.robot``. Note: Playwright is not yet supported by MetaCI. (#3216)
13
+ * ``cumulusci.robotframework.BaseLibrary`` can be used when creating new libraries in order to get some useful properties (``self.salesforce``, ``self.salesforce_api``, ``self.cumulusci``, etc) (#3216)
14
+ * Snowfakery 3.2 is included, with the following changes:
15
+ * Snowfakery can now do random_reference to nicknames.
16
+ * We removed some limitations on what Snowfakery can do with objects referenced through random_reference, especially using a.b.c.d syntax.
17
+ * We added a unique option for random_reference to allow for 1-1 relationships across random references and no-duplicates many-to-many join relationships like Account->CampaignMember->Campaign
18
+
4
19
  3.59.1 (2022-05-31)
5
20
  -------------------
6
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cumulusci
3
- Version: 3.60.0.dev1
3
+ Version: 3.61.0.dev0
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
@@ -65,6 +65,21 @@ Description: =========
65
65
  =======
66
66
  History
67
67
  =======
68
+ 3.60.0 (2022-06-09)
69
+ -------------------
70
+ Changes:
71
+
72
+ * We added a new dependency resolution strategy, ``unlocked``. Like our existing dependency strategies using parallel 2GP package builds, this strategy installs parallel unlocked package builds. (#3223)
73
+ * We added the flows ``build_unlocked_test_package``, ``install_unlocked_commit``, and ``qa_org_unlocked`` to support use of parallel unlocked packages. (#3223)
74
+ * We added a property, ``is_survey_advanced_features_enabled``, to the org_config entity available in when clauses. (#3149)
75
+ * Robot framework API and performance keywords have been moved into separate libraries. They are still automatically imported when using Salesforce.robot so it is not necessary to modify any existing test files. (#3216)
76
+ * There are new robot framework keyword libraries with limited support for `Playwright <https://playwright.dev/>`_ via the `robotframework-browser library <https://robotframework-browser.org/>`_. To use, import the resource file ``cumulusci/robotframework/SalesforcePlaywright.robot`` instead of ``cumulusci/robotframework/Salesforce.robot``. Note: Playwright is not yet supported by MetaCI. (#3216)
77
+ * ``cumulusci.robotframework.BaseLibrary`` can be used when creating new libraries in order to get some useful properties (``self.salesforce``, ``self.salesforce_api``, ``self.cumulusci``, etc) (#3216)
78
+ * Snowfakery 3.2 is included, with the following changes:
79
+ * Snowfakery can now do random_reference to nicknames.
80
+ * We removed some limitations on what Snowfakery can do with objects referenced through random_reference, especially using a.b.c.d syntax.
81
+ * We added a unique option for random_reference to allow for 1-1 relationships across random references and no-duplicates many-to-many join relationships like Account->CampaignMember->Campaign
82
+
68
83
  3.59.1 (2022-05-31)
69
84
  -------------------
70
85
 
@@ -82,7 +82,7 @@ class OrgConfig(BaseConfig):
82
82
 
83
83
  super().__init__(config)
84
84
 
85
- def refresh_oauth_token(self, keychain, connected_app=None):
85
+ def refresh_oauth_token(self, keychain, connected_app=None, is_sandbox=False):
86
86
  """Get a fresh access token and store it in the org config.
87
87
 
88
88
  If the SFDX_CLIENT_ID and SFDX_HUB_KEY environment variables are set,
@@ -104,6 +104,7 @@ class OrgConfig(BaseConfig):
104
104
  self.username,
105
105
  self.instance_url,
106
106
  auth_url=auth_url,
107
+ is_sandbox=is_sandbox,
107
108
  )
108
109
  else:
109
110
  info = self._refresh_token(keychain, connected_app)
@@ -529,6 +530,13 @@ class OrgConfig(BaseConfig):
529
530
  # DatedConversionRate Sobject is not exposed meaning Multiple Currencies is not enabled.
530
531
  return False
531
532
 
533
+ @property
534
+ def is_survey_advanced_features_enabled(self) -> bool:
535
+ return any(
536
+ f["name"] == "PermissionsAllowSurveyAdvancedFeatures"
537
+ for f in self.salesforce_client.PermissionSet.describe()["fields"]
538
+ )
539
+
532
540
  def resolve_04t_dependencies(self, dependencies):
533
541
  """Look up 04t SubscriberPackageVersion ids for 1GP project dependencies"""
534
542
  from cumulusci.core.dependencies.dependencies import (
@@ -1661,6 +1661,56 @@ class TestOrgConfig:
1661
1661
  # We should have made 2 calls: 1 token call + 1 describe call
1662
1662
  assert len(responses.calls) == 1 + 1
1663
1663
 
1664
+ @responses.activate
1665
+ def test_is_survey_advanced_features_enabled(self):
1666
+ config = OrgConfig(
1667
+ {
1668
+ "instance_url": "https://example.com",
1669
+ "access_token": "TOKEN",
1670
+ "id": "OODxxxxxxxxxxxx/user",
1671
+ },
1672
+ "test",
1673
+ )
1674
+
1675
+ # Token call.
1676
+ responses.add(
1677
+ "GET", "https://example.com/services/data", json=[{"version": 48.0}]
1678
+ )
1679
+
1680
+ # describe()
1681
+ responses.add(
1682
+ "GET",
1683
+ "https://example.com/services/data/v48.0/sobjects/PermissionSet/describe",
1684
+ json={"fields": [{"name": "PermissionsAllowSurveyAdvancedFeatures"}]},
1685
+ )
1686
+
1687
+ assert config.is_survey_advanced_features_enabled
1688
+
1689
+ @responses.activate
1690
+ def test_is_survey_advanced_features_enabled__not_enabled(self):
1691
+ config = OrgConfig(
1692
+ {
1693
+ "instance_url": "https://example.com",
1694
+ "access_token": "TOKEN",
1695
+ "id": "OODxxxxxxxxxxxx/user",
1696
+ },
1697
+ "test",
1698
+ )
1699
+
1700
+ # Token call.
1701
+ responses.add(
1702
+ "GET", "https://example.com/services/data", json=[{"version": 48.0}]
1703
+ )
1704
+
1705
+ # describe()
1706
+ responses.add(
1707
+ "GET",
1708
+ "https://example.com/services/data/v48.0/sobjects/PermissionSet/describe",
1709
+ json={"fields": [{"name": "foo"}]},
1710
+ )
1711
+
1712
+ assert not config.is_survey_advanced_features_enabled
1713
+
1664
1714
  def test_resolve_04t_dependencies(self):
1665
1715
  config = OrgConfig({}, "test")
1666
1716
  config._installed_packages = {
@@ -25,6 +25,7 @@ from cumulusci.core.exceptions import (
25
25
  from cumulusci.core.keychain import BaseProjectKeychain
26
26
  from cumulusci.core.keychain.base_project_keychain import DEFAULT_CONNECTED_APP_NAME
27
27
  from cumulusci.core.utils import import_class, import_global
28
+ from cumulusci.utils.yaml.cumulusci_yml import ScratchOrg
28
29
 
29
30
  DEFAULT_SERVICES_FILENAME = "DEFAULT_SERVICES.json"
30
31
 
@@ -308,18 +309,18 @@ class EncryptedFileProjectKeychain(BaseProjectKeychain):
308
309
  with open(fd, "wb") as f:
309
310
  f.write(org_bytes)
310
311
 
311
- def _get_org(self, name):
312
+ def _get_org(self, org_name: str) -> ScratchOrgConfig:
312
313
  try:
313
- config = self.orgs[name].data
314
- global_org = self.orgs[name].global_org
314
+ config = self.orgs[org_name].data
315
+ global_org = self.orgs[org_name].global_org
315
316
  except KeyError:
316
- raise OrgNotFound(f"Org with name '{name}' does not exist.")
317
+ raise OrgNotFound(f"Org with name '{org_name}' does not exist.")
317
318
 
318
319
  try:
319
- org = self._config_from_bytes(config, name)
320
+ org = self._config_from_bytes(config, org_name)
320
321
  except Exception as e:
321
322
  try:
322
- filename = self.orgs[name].filename
323
+ filename = self.orgs[org_name].filename
323
324
  except Exception: # pragma: no cover
324
325
  filename = None
325
326
  if not filename:
@@ -333,8 +334,26 @@ class EncryptedFileProjectKeychain(BaseProjectKeychain):
333
334
  "The org can be connected or imported again to replace the corrupted config."
334
335
  )
335
336
  org.global_org = global_org
337
+
338
+ if isinstance(org, ScratchOrgConfig):
339
+ self._merge_config_from_yml(org)
340
+
336
341
  return org
337
342
 
343
+ def _merge_config_from_yml(self, scratch_config: ScratchOrgConfig):
344
+ """Merges any values configurable via cumulusci.yml
345
+ into the scratch org config that is loaded from file."""
346
+
347
+ configurable_attributes = list(ScratchOrg.schema()["properties"].keys())
348
+ for attr in configurable_attributes:
349
+ try:
350
+ value_from_yml = self.project_config.config["orgs"]["scratch"][
351
+ scratch_config.name
352
+ ][attr]
353
+ scratch_config.config[attr] = value_from_yml
354
+ except KeyError:
355
+ pass
356
+
338
357
  def _config_from_bytes(self, config, name):
339
358
  if self.key:
340
359
  org = self._decrypt_config(
@@ -6,6 +6,7 @@ from cumulusci.core.config import (
6
6
  ServiceConfig,
7
7
  UniversalConfig,
8
8
  )
9
+ from cumulusci.core.config.scratch_org_config import ScratchOrgConfig
9
10
 
10
11
 
11
12
  @pytest.fixture()
@@ -31,6 +32,11 @@ def org_config():
31
32
  return OrgConfig({"foo": "bar"}, "test")
32
33
 
33
34
 
35
+ @pytest.fixture
36
+ def scratch_org_config():
37
+ return ScratchOrgConfig({"foo": "bar"}, "test")
38
+
39
+
34
40
  @pytest.fixture
35
41
  def key():
36
42
  return "0123456789123456"
@@ -79,6 +79,24 @@ class TestEncryptedFileProjectKeychain:
79
79
  assert list(keychain.orgs.keys()) == ["test"]
80
80
  assert keychain.get_org("test").config == org_config.config
81
81
 
82
+ def test_get_org__with_config_properly_overridden(
83
+ self, keychain, scratch_org_config
84
+ ):
85
+ days = 16
86
+ config_file = "./foo/bar/baz"
87
+ scratch_org_config.global_org = True
88
+ # the orgs encrypted file has the default value for days and config_file
89
+ keychain.set_org(scratch_org_config, True)
90
+ # but this particular scratch org has days and config_file specified via cumulusci.yml
91
+ keychain.project_config.config = {
92
+ "orgs": {"scratch": {"test": {"days": days, "config_file": config_file}}}
93
+ }
94
+ org = keychain.get_org("test")
95
+
96
+ # ensure what is configured in cumulusci.yml is what is loaded into the config
97
+ assert org.config["days"] == days
98
+ assert org.config["config_file"] == config_file
99
+
82
100
  def test_get_org__not_found(self, keychain):
83
101
  org_name = "mythical"
84
102
  error_message = f"Org with name '{org_name}' does not exist."
@@ -1369,7 +1369,7 @@ project:
1369
1369
  namespace:
1370
1370
  install_class:
1371
1371
  uninstall_class:
1372
- api_version: "54.0"
1372
+ api_version: "55.0"
1373
1373
  git:
1374
1374
  default_branch: master
1375
1375
  prefix_feature: feature/
@@ -21,7 +21,9 @@ SANDBOX_LOGIN_URL = (
21
21
  PROD_LOGIN_URL = os.environ.get("SF_PROD_LOGIN_URL") or "https://login.salesforce.com"
22
22
 
23
23
 
24
- def jwt_session(client_id, private_key, username, url=None, auth_url=None):
24
+ def jwt_session(
25
+ client_id, private_key, username, url=None, auth_url=None, is_sandbox=False
26
+ ):
25
27
  """Complete the JWT Token Oauth flow to obtain an access token for an org.
26
28
 
27
29
  :param client_id: Client Id for the connected app
@@ -53,6 +55,9 @@ def jwt_session(client_id, private_key, username, url=None, auth_url=None):
53
55
  instance = m.group(2)
54
56
  url = f"https://{instance}.salesforce.com"
55
57
 
58
+ if is_sandbox: # pragma: no cover
59
+ aud = SANDBOX_LOGIN_URL
60
+
56
61
  payload = {
57
62
  "alg": "RS256",
58
63
  "iss": client_id,
@@ -0,0 +1,165 @@
1
+ from datetime import datetime
2
+
3
+ from dateutil.parser import ParserError
4
+ from dateutil.parser import parse as parse_date
5
+ from robot.libraries.BuiltIn import BuiltIn
6
+ from robot.utils import timestr_to_secs
7
+
8
+ from cumulusci.robotframework.base_library import BaseLibrary
9
+
10
+
11
+ class Performance(BaseLibrary):
12
+ """
13
+ Keywords for performance testing.
14
+
15
+ For more information on how to use these keywords, see
16
+ the "Performance Testing" section of the CumulusCI documentation.
17
+ """
18
+
19
+ def elapsed_time_for_last_record(
20
+ self, obj_name, start_field, end_field, order_by, **kwargs
21
+ ):
22
+ """For records representing jobs or processes, compare the record's start-time to its end-time to see how long a process took.
23
+
24
+ Arguments:
25
+ obj_name: SObject to look for last record
26
+ start_field: Name of the datetime field that represents the process start
27
+ end_field: Name of the datetime field that represents the process end
28
+ order_by: Field name to order by. Should be a datetime field, and usually is just the same as end_field.
29
+ where: Optional Where-clause to use for filtering
30
+ Other keywords are used for filtering as in the Salesforce Query keywordf
31
+
32
+ The last matching record queried and summarized.
33
+
34
+ Example:
35
+
36
+ | ${time_in_seconds} = Elapsed Time For Last Record
37
+ | ... obj_name=AsyncApexJob
38
+ | ... where=ApexClass.Name='BlahBlah'
39
+ | ... start_field=CreatedDate
40
+ | ... end_field=CompletedDate
41
+ | ... order_by=CompletedDate
42
+ """
43
+ if len(order_by.split()) != 1:
44
+ raise Exception("order_by should be a simple field name")
45
+ query = self.salesforce_api._soql_query_builder(
46
+ obj_name,
47
+ select=f"{start_field}, {end_field}",
48
+ order_by=order_by + " DESC NULLS LAST",
49
+ limit=1,
50
+ **kwargs,
51
+ )
52
+ response = self.salesforce_api.soql_query(query)
53
+ results = response["records"]
54
+
55
+ if results:
56
+ record = results[0]
57
+ return _duration(record[start_field], record[end_field], record)
58
+ else:
59
+ raise Exception(f"Matching record not found: {query}")
60
+
61
+ def start_performance_timer(self):
62
+ """Start an elapsed time stopwatch for performance tests.
63
+
64
+ See the docummentation for **Stop Performance Timer** for more
65
+ information.
66
+
67
+ Example:
68
+
69
+ | Start Performance Timer
70
+ | Do Something
71
+ | Stop Performance Timer
72
+ """
73
+ BuiltIn().set_test_variable("${__start_time}", datetime.now())
74
+
75
+ def stop_performance_timer(self):
76
+ """Record the results of a stopwatch. For perf testing.
77
+
78
+ This keyword uses Set Test Elapsed Time internally and therefore
79
+ outputs in all of the ways described there.
80
+
81
+ Example:
82
+
83
+ | Start Performance Timer
84
+ | Do Something
85
+ | Stop Performance Timer
86
+
87
+ """
88
+ start_time = self.builtin.get_variable_value("${__start_time}")
89
+ if start_time:
90
+ seconds = (datetime.now() - start_time).seconds
91
+ assert seconds is not None
92
+ self.set_test_elapsed_time(seconds)
93
+ else:
94
+ raise Exception(
95
+ "Elapsed time clock was not started. "
96
+ "Use the Start Elapsed Time keyword to do so."
97
+ )
98
+
99
+ def set_test_elapsed_time(self, elapsedtime):
100
+ """This keyword captures a computed rather than measured elapsed time for performance tests.
101
+
102
+ For example, if you were performance testing a Salesforce batch process, you might want to
103
+ store the Salesforce-measured elapsed time of the batch process instead of the time measured
104
+ in the CCI client process.
105
+
106
+ The keyword takes a single argument which is either a number of seconds or a Robot time string
107
+ (https://robotframework.org/robotframework/latest/libraries/DateTime.html#Time%20formats).
108
+
109
+ Using this keyword will automatically add the tag cci_metric_elapsed_time to the test case
110
+ and ${cci_metric_elapsed_time} to the test's variables. cci_metric_elapsed_time is not
111
+ included in Robot's html statistical roll-ups.
112
+
113
+ Example:
114
+
115
+ | Set Test Elapsed Time 11655.9
116
+
117
+ Performance test times are output in the CCI logs and are captured in MetaCI instead of the
118
+ "total elapsed time" measured by Robot Framework. The Robot "test message" is also updated."""
119
+
120
+ try:
121
+ seconds = float(elapsedtime)
122
+ except ValueError:
123
+ seconds = timestr_to_secs(elapsedtime)
124
+ assert seconds is not None
125
+
126
+ self.builtin.set_test_message(f"Elapsed time set by test : {seconds}")
127
+ self.builtin.set_tags("cci_metric_elapsed_time")
128
+ self.builtin.set_test_variable("${cci_metric_elapsed_time}", seconds)
129
+
130
+ def set_test_metric(self, metric: str, value=None):
131
+ """This keyword captures any metric for performance monitoring.
132
+
133
+ For example: number of queries, rows processed, CPU usage, etc.
134
+
135
+ The keyword takes a metric name, which can be any string, and a value, which
136
+ can be any number.
137
+
138
+ Using this keyword will automatically add the tag cci_metric to the test case
139
+ and ${cci_metric_<metric_name>} to the test's variables. These permit downstream
140
+ processing in tools like CCI and MetaCI.
141
+
142
+ cci_metric is not included in Robot's html statistical roll-ups.
143
+
144
+ Example:
145
+
146
+ | Set Test Metric Max_CPU_Percent 30
147
+
148
+ Performance test metrics are output in the CCI logs, log.html and output.xml.
149
+ MetaCI captures them but does not currently have a user interface for displaying
150
+ them."""
151
+
152
+ value = float(value)
153
+
154
+ self.builtin.set_tags("cci_metric")
155
+ self.builtin.set_test_variable("${cci_metric_%s}" % metric, value)
156
+
157
+
158
+ def _duration(start_date: str, end_date: str, record: dict):
159
+ try:
160
+ start_date = parse_date(start_date)
161
+ end_date = parse_date(end_date)
162
+ except (ParserError, TypeError) as e:
163
+ raise Exception(f"Date parse error: {e} in record {record}")
164
+ duration = end_date - start_date
165
+ return duration.total_seconds()