cumulusci 3.52.0.dev0__tar.gz → 3.53.0__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 (618) hide show
  1. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/HISTORY.rst +41 -0
  2. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/PKG-INFO +43 -4
  3. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/README.rst +1 -3
  4. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/cci.py +8 -2
  5. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/error.py +16 -9
  6. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/org.py +64 -19
  7. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/service.py +32 -7
  8. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_cci.py +10 -1
  9. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_error.py +63 -49
  10. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_org.py +205 -57
  11. cumulusci-3.53.0/cumulusci/cli/tests/test_service.py +528 -0
  12. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_utils.py +55 -0
  13. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/utils.py +16 -0
  14. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/utils.py +32 -0
  15. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/base_config.py +1 -0
  16. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/marketing_cloud_service_config.py +17 -0
  17. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/org_config.py +13 -2
  18. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/test_config.py +52 -3
  19. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/exceptions.py +6 -0
  20. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/base_project_keychain.py +92 -4
  21. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +25 -14
  22. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/runtime.py +10 -3
  23. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tasks.py +56 -0
  24. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_github.py +7 -7
  25. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_source.py +11 -11
  26. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cumulusci.yml +10 -0
  27. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/CumulusCI.py +26 -0
  28. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_cumulusci_library.py +44 -0
  29. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/schema/cumulusci.jsonschema.json +4 -0
  30. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/delete.py +6 -47
  31. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery.py +12 -2
  32. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +76 -29
  33. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +4 -0
  34. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +10 -0
  35. cumulusci-3.53.0/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +24 -0
  36. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_delete.py +1 -1
  37. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +6 -22
  38. cumulusci-3.53.0/cumulusci/tasks/bulkdata/tests/test_updates.py +511 -0
  39. cumulusci-3.53.0/cumulusci/tasks/bulkdata/update_data.py +260 -0
  40. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/connectedapp.py +2 -0
  41. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_publish.py +11 -11
  42. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_release.py +4 -4
  43. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_tag.py +2 -2
  44. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/base.py +5 -0
  45. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/deploy.py +10 -3
  46. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/get_user_info.py +6 -15
  47. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +1 -1
  48. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +54 -30
  49. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_provider.py +3 -3
  50. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/libdoc.py +33 -5
  51. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +54 -10
  52. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_metadeploy.py +1 -1
  53. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_promote_package_version.py +3 -3
  54. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_schema.py +5 -8
  55. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/fileutils.py +14 -0
  56. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +29 -16
  57. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +13 -4
  58. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +4 -3
  59. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_fileutils.py +23 -1
  60. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/cumulusci_yml.py +8 -0
  61. cumulusci-3.53.0/cumulusci/version.txt +1 -0
  62. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/PKG-INFO +43 -4
  63. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/SOURCES.txt +4 -0
  64. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/requires.txt +11 -15
  65. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cli.rst +3 -5
  66. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/config.rst +2 -4
  67. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/connected_orgs.rst +22 -16
  68. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/data.rst +48 -0
  69. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/headless.rst +1 -0
  70. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot.rst +1 -0
  71. cumulusci-3.53.0/docs/robot_locators.rst +203 -0
  72. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/requirements/dev.txt +25 -29
  73. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/requirements/prod.txt +15 -24
  74. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/setup.py +3 -1
  75. cumulusci-3.52.0.dev0/cumulusci/cli/tests/test_service.py +0 -627
  76. cumulusci-3.52.0.dev0/cumulusci/version.txt +0 -1
  77. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/AUTHORS.rst +0 -0
  78. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/CONTRIBUTING.rst +0 -0
  79. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/LICENSE +0 -0
  80. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/MANIFEST.in +0 -0
  81. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/__init__.py +0 -0
  82. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/__main__.py +0 -0
  83. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/__init__.py +0 -0
  84. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/flow.py +0 -0
  85. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/logger.py +0 -0
  86. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/plan.py +0 -0
  87. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/project.py +0 -0
  88. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/runtime.py +0 -0
  89. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/task.py +0 -0
  90. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/__init__.py +0 -0
  91. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_flow.py +0 -0
  92. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_logger.py +0 -0
  93. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_plan.py +0 -0
  94. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_project.py +0 -0
  95. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_runtime.py +0 -0
  96. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_task.py +0 -0
  97. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_ui.py +0 -0
  98. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/ui.py +0 -0
  99. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/conftest.py +0 -0
  100. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/__init__.py +0 -0
  101. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/BaseConfig.py +0 -0
  102. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
  103. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/OrgConfig.py +0 -0
  104. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
  105. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/__init__.py +0 -0
  106. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/base_task_flow_config.py +0 -0
  107. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/oauth2_service_config.py +0 -0
  108. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/project_config.py +0 -0
  109. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/scratch_org_config.py +0 -0
  110. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/sfdx_org_config.py +0 -0
  111. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
  112. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
  113. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/test_config_util.py +0 -0
  114. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/universal_config.py +0 -0
  115. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/util.py +0 -0
  116. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/debug.py +0 -0
  117. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/__init__.py +0 -0
  118. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/dependencies.py +0 -0
  119. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/github.py +0 -0
  120. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/resolvers.py +0 -0
  121. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
  122. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
  123. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
  124. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
  125. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
  126. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/utils.py +0 -0
  127. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/flowrunner.py +0 -0
  128. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/github.py +0 -0
  129. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/__init__.py +0 -0
  130. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
  131. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/tests/conftest.py +0 -0
  132. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
  133. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
  134. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/metadeploy.py +0 -0
  135. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/sfdx.py +0 -0
  136. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/source/__init__.py +0 -0
  137. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/source/github.py +0 -0
  138. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/source/local_folder.py +0 -0
  139. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/template_utils.py +0 -0
  140. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/__init__.py +0 -0
  141. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_exceptions.py +0 -0
  142. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_flowrunner.py +0 -0
  143. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_sfdx.py +0 -0
  144. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_tasks.py +0 -0
  145. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_utils.py +0 -0
  146. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
  147. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_versions.py +0 -0
  148. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/utils.py +0 -0
  149. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/utils.py +0 -0
  150. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/versions.py +0 -0
  151. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/admin_profile.xml +0 -0
  152. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/delete_excludes.txt +0 -0
  153. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/README.md +0 -0
  154. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
  155. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/dot-gitignore +0 -0
  156. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/mapping.yml +0 -0
  157. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/scratch_def.json +0 -0
  158. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/__init__.py +0 -0
  159. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/client.py +0 -0
  160. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/exceptions.py +0 -0
  161. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/salesforce.py +0 -0
  162. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/tests/__init__.py +0 -0
  163. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/tests/test_client.py +0 -0
  164. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
  165. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/CumulusCI.robot +0 -0
  166. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/Salesforce.py +0 -0
  167. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/Salesforce.robot +0 -0
  168. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/__init__.py +0 -0
  169. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/form_handlers.py +0 -0
  170. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locator_manager.py +0 -0
  171. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locators_52.py +0 -0
  172. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locators_53.py +0 -0
  173. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locators_54.py +0 -0
  174. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
  175. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
  176. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
  177. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
  178. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
  179. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
  180. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
  181. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/BarTestPage.py +0 -0
  182. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
  183. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
  184. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
  185. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
  186. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
  187. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
  188. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
  189. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
  190. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
  191. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
  192. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
  193. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
  194. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
  195. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
  196. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
  197. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
  198. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
  199. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
  200. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
  201. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
  202. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
  203. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
  204. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
  205. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
  206. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
  207. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
  208. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
  209. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
  210. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
  211. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_utils.py +0 -0
  212. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/utils.py +0 -0
  213. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/__init__.py +0 -0
  214. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/exceptions.py +0 -0
  215. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
  216. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/metadata.py +0 -0
  217. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/org_schema.py +0 -0
  218. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
  219. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/package_install.py +0 -0
  220. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/package_zip.py +0 -0
  221. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
  222. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
  223. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
  224. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
  225. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
  226. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
  227. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
  228. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/utils.py +0 -0
  229. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/__init__.py +0 -0
  230. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/__init__.py +0 -0
  231. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/anon.py +0 -0
  232. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/batch.py +0 -0
  233. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/testrunner.py +0 -0
  234. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
  235. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
  236. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
  237. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/dates.py +0 -0
  238. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/extract.py +0 -0
  239. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
  240. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate.py +0 -0
  241. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
  242. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
  243. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
  244. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
  245. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/load.py +0 -0
  246. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
  247. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
  248. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/step.py +0 -0
  249. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Account.json +0 -0
  250. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Case.json +0 -0
  251. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Contact.json +0 -0
  252. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Opportunity.json +0 -0
  253. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/OpportunityContactRole.json +0 -0
  254. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  255. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
  256. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/global_describe.json +0 -0
  257. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
  258. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
  259. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
  260. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
  261. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
  262. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
  263. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
  264. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
  265. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
  266. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
  267. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
  268. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
  269. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
  270. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
  271. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
  272. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
  273. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
  274. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
  275. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
  276. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
  277. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
  278. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
  279. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
  280. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
  281. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
  282. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
  283. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
  284. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
  285. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
  286. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
  287. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
  288. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
  289. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
  290. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
  291. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
  292. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
  293. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/utils.py +0 -0
  294. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/command.py +0 -0
  295. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/create_package_version.py +0 -0
  296. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/datadictionary.py +0 -0
  297. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/dx_convert_from.py +0 -0
  298. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/__init__.py +0 -0
  299. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/base.py +0 -0
  300. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/commit_status.py +0 -0
  301. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/merge.py +0 -0
  302. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/publish.py +0 -0
  303. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/pull_request.py +0 -0
  304. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/release.py +0 -0
  305. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/release_report.py +0 -0
  306. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tag.py +0 -0
  307. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/__init__.py +0 -0
  308. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
  309. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
  310. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
  311. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
  312. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_util.py +0 -0
  313. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
  314. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/util.py +0 -0
  315. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  316. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
  317. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
  318. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  319. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
  320. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
  321. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
  322. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
  323. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
  324. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/__init__.py +0 -0
  325. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/ee_src.py +0 -0
  326. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/managed_src.py +0 -0
  327. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
  328. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/modify.py +0 -0
  329. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/package.py +0 -0
  330. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  331. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
  332. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
  333. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
  334. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
  335. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
  336. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
  337. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
  338. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
  339. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
  340. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/base.py +0 -0
  341. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
  342. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
  343. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
  344. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
  345. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
  346. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
  347. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
  348. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
  349. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
  350. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
  351. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
  352. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
  353. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
  354. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
  355. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
  356. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
  357. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
  358. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadeploy.py +0 -0
  359. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metaxml.py +0 -0
  360. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/__init__.py +0 -0
  361. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/licenses.py +0 -0
  362. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/packages.py +0 -0
  363. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/permsets.py +0 -0
  364. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
  365. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/settings.py +0 -0
  366. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/sobjects.py +0 -0
  367. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
  368. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
  369. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
  370. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
  371. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
  372. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
  373. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/README.md +0 -0
  374. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/__init__.py +0 -0
  375. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/push_api.py +0 -0
  376. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/pushfails.py +0 -0
  377. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tasks.py +0 -0
  378. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tests/conftest.py +0 -0
  379. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
  380. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
  381. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/README.md +0 -0
  382. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/__init__.py +0 -0
  383. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
  384. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/generator.py +0 -0
  385. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/parser.py +0 -0
  386. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/provider.py +0 -0
  387. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/task.py +0 -0
  388. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  389. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
  390. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
  391. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
  392. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
  393. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
  394. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
  395. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
  396. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
  397. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
  398. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/__init__.py +0 -0
  399. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
  400. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
  401. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
  402. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
  403. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/lint.py +0 -0
  404. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
  405. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
  406. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
  407. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/template.html +0 -0
  408. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
  409. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
  410. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
  411. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
  412. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
  413. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
  414. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
  415. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
  416. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
  417. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
  418. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
  419. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
  420. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
  421. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
  422. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
  423. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
  424. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
  425. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
  426. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
  427. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
  428. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
  429. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
  430. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
  431. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
  432. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
  433. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
  434. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
  435. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
  436. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
  437. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
  438. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
  439. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
  440. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/__init__.py +0 -0
  441. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
  442. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/composite.py +0 -0
  443. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
  444. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
  445. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
  446. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
  447. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
  448. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
  449. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
  450. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
  451. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
  452. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
  453. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/profiles.py +0 -0
  454. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
  455. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
  456. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
  457. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
  458. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
  459. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
  460. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
  461. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
  462. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
  463. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
  464. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
  465. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
  466. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
  467. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
  468. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
  469. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
  470. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
  471. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
  472. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
  473. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
  474. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
  475. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
  476. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
  477. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
  478. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
  479. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
  480. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
  481. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
  482. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
  483. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
  484. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
  485. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
  486. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
  487. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
  488. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
  489. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
  490. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
  491. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
  492. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
  493. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
  494. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
  495. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
  496. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
  497. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
  498. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
  499. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
  500. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
  501. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
  502. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/sfdx.py +0 -0
  503. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/__init__.py +0 -0
  504. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/conftest.py +0 -0
  505. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_command.py +0 -0
  506. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
  507. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
  508. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
  509. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
  510. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
  511. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
  512. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
  513. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
  514. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_util.py +0 -0
  515. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/util.py +0 -0
  516. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/__init__.py +0 -0
  517. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
  518. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
  519. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
  520. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_entry_points.py +0 -0
  521. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
  522. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_main.py +0 -0
  523. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_utils.py +0 -0
  524. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/util.py +0 -0
  525. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/__init__.py +0 -0
  526. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/classutils.py +0 -0
  527. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/git.py +0 -0
  528. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/http/multi_request.py +0 -0
  529. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/http/requests_utils.py +0 -0
  530. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
  531. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/iterators.py +0 -0
  532. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/logging.py +0 -0
  533. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_git.py +0 -0
  534. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_logging.py +0 -0
  535. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_org_schema.py +0 -0
  536. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
  537. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_waiting.py +0 -0
  538. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/waiting.py +0 -0
  539. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/__init__.py +0 -0
  540. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/metadata_tree.py +0 -0
  541. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/robot_xml.py +0 -0
  542. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
  543. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
  544. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
  545. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/model_parser.py +0 -0
  546. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/safer_loader.py +0 -0
  547. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
  548. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
  549. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
  550. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
  551. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/ziputils.py +0 -0
  552. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/dependency_links.txt +0 -0
  553. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/entry_points.txt +0 -0
  554. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/not-zip-safe +0 -0
  555. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/top_level.txt +0 -0
  556. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/2gp_testing.rst +0 -0
  557. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/Makefile +0 -0
  558. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/about.rst +0 -0
  559. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cheat_sheet.rst +0 -0
  560. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/commands.rst +0 -0
  561. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/concepts.rst +0 -0
  562. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/conf.py +0 -0
  563. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/continuous_integration.rst +0 -0
  564. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/contributing.rst +0 -0
  565. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cookbook.rst +0 -0
  566. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cumulusci_flow.rst +0 -0
  567. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/dev.rst +0 -0
  568. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image1.png +0 -0
  569. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image12.png +0 -0
  570. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image15.png +0 -0
  571. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image17.png +0 -0
  572. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image3.png +0 -0
  573. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/env_var_reference.rst +0 -0
  574. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/get_started.rst +0 -0
  575. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/github_actions.rst +0 -0
  576. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/history.rst +0 -0
  577. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/cci_service_list.png +0 -0
  578. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/cumulus_ci_workflow.png +0 -0
  579. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/env-var.png +0 -0
  580. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/env-var2.png +0 -0
  581. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github-commit_status_error.png +0 -0
  582. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github-commit_status_pass.png +0 -0
  583. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github-creating_a_uat_release.png +0 -0
  584. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_checks.png +0 -0
  585. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_personal_access_token_scopes.png +0 -0
  586. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_secrets.png +0 -0
  587. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_workflow.png +0 -0
  588. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/locate_elements_screenshot.png +0 -0
  589. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/pipx.png +0 -0
  590. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/robot_log_screenshot.png +0 -0
  591. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/robot_toggled_results_screenshot.png +0 -0
  592. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/salesforce-org-process.png +0 -0
  593. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/service-list.png +0 -0
  594. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/skipping_task.png +0 -0
  595. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/windows_python.png +0 -0
  596. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/windows_python_success.png +0 -0
  597. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/index.rst +0 -0
  598. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/install.rst +0 -0
  599. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/internals.rst +0 -0
  600. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/intro.rst +0 -0
  601. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/make.bat +0 -0
  602. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/managed_2gp.rst +0 -0
  603. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/managed_package.rst +0 -0
  604. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/metadata_etl.rst +0 -0
  605. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/npsp_eda_2gp.rst +0 -0
  606. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/packaging.rst +0 -0
  607. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/push_upgrades.rst +0 -0
  608. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/reference.rst +0 -0
  609. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/release_notes.rst +0 -0
  610. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot_advanced.rst +0 -0
  611. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot_debugger.rst +0 -0
  612. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot_tutorial.rst +0 -0
  613. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/scratch_orgs.rst +0 -0
  614. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/tutorial.rst +0 -0
  615. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/unlocked_package.rst +0 -0
  616. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/unpackaged.rst +0 -0
  617. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/pyproject.toml +0 -0
  618. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/setup.cfg +0 -0
@@ -2,7 +2,48 @@
2
2
  History
3
3
  =======
4
4
 
5
+ 3.53.0 (2022-02-24)
6
+ -------------------
7
+
8
+ Critical Changes
9
+
10
+ - CumulusCI now ships with Snowfakery 3.0. See the `Snowfakery release notes <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v3.0.0>`__. Snowfakery 3.0 ships with opt-in features that will become the default in June 2022; please `test your recipes <https://snowfakery.readthedocs.io/en/latest/#snowfakery-3>`__ now with ``snowfakery_version: 3`` to ensure compatibility.
11
+
12
+ Changes
13
+
14
+ - CumulusCI now has an ``update_data`` task that allows updates to existing datasets, in coordination with Snowfakery 3.0.
15
+ - Orgs connected using ``cci org connect`` now keep track of which ``connected_app`` service was used to connect them, and will use the same ``connected_app`` service when getting a fresh access token, even if it isn't currently the default ``connected_app`` service. This makes it easier to use CumulusCI with multiple ``connected_app`` services. (Orgs that were connected before this update will continue to use the default ``connected_app`` service.)
16
+ - When connecting a custom ``connected_app`` service, a default ``login_url`` can be specified (to use a login URL other than https://login.salesforce.com when connecting orgs using this ``connected_app`` service).
17
+ - The ``deploy_marketing_cloud_package`` task now utilizes the new API endpoint for deployments.
18
+ - CumulusCI commands are more resilient in the face of corrupted or impossible to decode org config files.
19
+ - We added documentation about managing Robot Framework locators
20
+ - CumulusCI will now warn Windows users if long pathname support is not set up correctly.
21
+
22
+ Issues Closed
23
+
24
+ - Fixed a bug in the JSON format output of cci service list --json
25
+
26
+ 3.52.0 (2022-02-03)
27
+ -------------------
28
+
29
+ Changes
30
+
31
+ * Flow steps can now be replaced with the same syntax for all step types! (Current step types are: 'task' or 'flow'). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override#replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to ``None`` when replacing with a step of a differing type. (#3043)
32
+ * Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
33
+ * Added a new option ``--preview`` to the ``robot_libdoc`` task. When set to ``true`` it automatically opens a browser window to the generated documentation. (#3057)
34
+ * The robot keyword ``Locate element by label`` has been removed from the Salesforce.py library. This wasn't designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the form ``label:<text>`` (eg: ``label:First Name``) (#3048)
35
+ * Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
36
+ * If you have Python code that is importing CumulusCI's config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
37
+
38
+ Issues Closed
39
+
40
+ * Fixed an issue where overriding flow steps was not working as documented. (#3043)
41
+ * We fixed a bug where the ``Run Task`` and ``Run Task Class`` robot keywords throw an error like ``AttributeError: module 'robot.api.logger' has no attribute 'log'`` in rare cases (#3053)
42
+ * Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
43
+
44
+
5
45
  3.51.1 (2022-01-25)
46
+ -------------------
6
47
 
7
48
  Issues Closed
8
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cumulusci
3
- Version: 3.52.0.dev0
3
+ Version: 3.53.0
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
@@ -57,9 +57,7 @@ Description: =========
57
57
  Questions?
58
58
  ----------
59
59
 
60
- Salesforce.org (http://salesforce.org/) customers and partners can ask in the `CumulusCI group in the Power of Us Hub <https://powerofus.force.com/s/group/0F980000000PSRHCA4/cumulusci-cci>`_.
61
-
62
- Others can ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
60
+ Ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
63
61
 
64
62
  *Please note:* CumulusCI is distributed under an `open source license <https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE>`_ and is not covered by the Salesforce Master Subscription Agreement.
65
63
 
@@ -68,7 +66,48 @@ Description: =========
68
66
  History
69
67
  =======
70
68
 
69
+ 3.53.0 (2022-02-24)
70
+ -------------------
71
+
72
+ Critical Changes
73
+
74
+ - CumulusCI now ships with Snowfakery 3.0. See the `Snowfakery release notes <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v3.0.0>`__. Snowfakery 3.0 ships with opt-in features that will become the default in June 2022; please `test your recipes <https://snowfakery.readthedocs.io/en/latest/#snowfakery-3>`__ now with ``snowfakery_version: 3`` to ensure compatibility.
75
+
76
+ Changes
77
+
78
+ - CumulusCI now has an ``update_data`` task that allows updates to existing datasets, in coordination with Snowfakery 3.0.
79
+ - Orgs connected using ``cci org connect`` now keep track of which ``connected_app`` service was used to connect them, and will use the same ``connected_app`` service when getting a fresh access token, even if it isn't currently the default ``connected_app`` service. This makes it easier to use CumulusCI with multiple ``connected_app`` services. (Orgs that were connected before this update will continue to use the default ``connected_app`` service.)
80
+ - When connecting a custom ``connected_app`` service, a default ``login_url`` can be specified (to use a login URL other than https://login.salesforce.com when connecting orgs using this ``connected_app`` service).
81
+ - The ``deploy_marketing_cloud_package`` task now utilizes the new API endpoint for deployments.
82
+ - CumulusCI commands are more resilient in the face of corrupted or impossible to decode org config files.
83
+ - We added documentation about managing Robot Framework locators
84
+ - CumulusCI will now warn Windows users if long pathname support is not set up correctly.
85
+
86
+ Issues Closed
87
+
88
+ - Fixed a bug in the JSON format output of cci service list --json
89
+
90
+ 3.52.0 (2022-02-03)
91
+ -------------------
92
+
93
+ Changes
94
+
95
+ * Flow steps can now be replaced with the same syntax for all step types! (Current step types are: 'task' or 'flow'). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override#replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to ``None`` when replacing with a step of a differing type. (#3043)
96
+ * Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
97
+ * Added a new option ``--preview`` to the ``robot_libdoc`` task. When set to ``true`` it automatically opens a browser window to the generated documentation. (#3057)
98
+ * The robot keyword ``Locate element by label`` has been removed from the Salesforce.py library. This wasn't designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the form ``label:<text>`` (eg: ``label:First Name``) (#3048)
99
+ * Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
100
+ * If you have Python code that is importing CumulusCI's config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
101
+
102
+ Issues Closed
103
+
104
+ * Fixed an issue where overriding flow steps was not working as documented. (#3043)
105
+ * We fixed a bug where the ``Run Task`` and ``Run Task Class`` robot keywords throw an error like ``AttributeError: module 'robot.api.logger' has no attribute 'log'`` in rare cases (#3053)
106
+ * Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
107
+
108
+
71
109
  3.51.1 (2022-01-25)
110
+ -------------------
72
111
 
73
112
  Issues Closed
74
113
 
@@ -49,8 +49,6 @@ from minute 36 through minute 54.
49
49
  Questions?
50
50
  ----------
51
51
 
52
- Salesforce.org (http://salesforce.org/) customers and partners can ask in the `CumulusCI group in the Power of Us Hub <https://powerofus.force.com/s/group/0F980000000PSRHCA4/cumulusci-cci>`_.
53
-
54
- Others can ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
52
+ Ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
55
53
 
56
54
  *Please note:* CumulusCI is distributed under an `open source license <https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE>`_ and is not covered by the Salesforce Master Subscription Agreement.
@@ -25,7 +25,12 @@ from .project import project
25
25
  from .runtime import CliRuntime, pass_runtime
26
26
  from .service import service
27
27
  from .task import task
28
- from .utils import check_latest_version, get_installed_version, get_latest_final_version
28
+ from .utils import (
29
+ check_latest_version,
30
+ get_installed_version,
31
+ get_latest_final_version,
32
+ warn_if_no_long_paths,
33
+ )
29
34
 
30
35
  SUGGEST_ERROR_COMMAND = (
31
36
  """Run this command for more information about debugging errors: cci error --help"""
@@ -120,7 +125,7 @@ def handle_exception(
120
125
  traceback.print_exc(file=log_file) # log stacktrace silently
121
126
 
122
127
  if should_show_stacktraces and not isinstance(error, USAGE_ERRORS):
123
- raise error
128
+ error_console.print_exception()
124
129
 
125
130
 
126
131
  def connection_error_message(console: Console):
@@ -142,6 +147,7 @@ def show_version_info():
142
147
  console.print(f"CumulusCI version: {cumulusci.__version__} ({sys.argv[0]})")
143
148
  console.print(f"Python version: {sys.version.split()[0]} ({sys.executable})")
144
149
  console.print()
150
+ warn_if_no_long_paths(console=console)
145
151
 
146
152
  current_version = get_installed_version()
147
153
  latest_version = get_latest_final_version()
@@ -8,6 +8,7 @@ import click
8
8
  import github3
9
9
 
10
10
  import cumulusci
11
+ from cumulusci.cli.utils import warn_if_no_long_paths, win32_long_paths_enabled
11
12
  from cumulusci.core.exceptions import CumulusCIException
12
13
  from cumulusci.core.github import check_github_scopes, create_gist, get_github_api
13
14
 
@@ -40,7 +41,8 @@ def error():
40
41
  """
41
42
 
42
43
 
43
- CCI_LOGFILE_PATH = Path.home() / ".cumulusci" / "logs" / "cci.log"
44
+ def get_logfile_path():
45
+ return Path.home() / ".cumulusci" / "logs" / "cci.log"
44
46
 
45
47
 
46
48
  @error.command(
@@ -48,11 +50,13 @@ CCI_LOGFILE_PATH = Path.home() / ".cumulusci" / "logs" / "cci.log"
48
50
  help="Outputs the most recent traceback (if one exists in the most recent log)",
49
51
  )
50
52
  def error_info():
51
- if not CCI_LOGFILE_PATH.is_file():
52
- click.echo(f"No logfile found at: {CCI_LOGFILE_PATH}")
53
+ warn_if_no_long_paths()
54
+ logfile_path = get_logfile_path()
55
+ if not logfile_path.is_file():
56
+ click.echo(f"No logfile found at: {logfile_path}")
53
57
  return
54
58
 
55
- traceback = get_traceback(CCI_LOGFILE_PATH.read_text(encoding="utf-8"))
59
+ traceback = get_traceback(logfile_path.read_text(encoding="utf-8"))
56
60
  click.echo(traceback)
57
61
 
58
62
 
@@ -60,7 +64,7 @@ def get_traceback(log_content: str) -> str:
60
64
  """Returns the the traceback in a logfile if it exists."""
61
65
  stacktrace_start = "Traceback (most recent call last):"
62
66
  if stacktrace_start not in log_content:
63
- return f"\nNo stacktrace found in: {CCI_LOGFILE_PATH}\n"
67
+ return f"\nNo stacktrace found in: {get_logfile_path()}\n"
64
68
 
65
69
  stacktrace = ""
66
70
  for i, line in enumerate(reversed(log_content.split("\n")), 1):
@@ -73,13 +77,14 @@ def get_traceback(log_content: str) -> str:
73
77
 
74
78
  @error.command(name="gist", help="Creates a GitHub gist from the latest logfile")
75
79
  @pass_runtime(require_project=False, require_keychain=True)
76
- def gist(runtime):
77
- if CCI_LOGFILE_PATH.is_file():
78
- log_content = CCI_LOGFILE_PATH.read_text(encoding="utf-8")
80
+ def error_gist(runtime):
81
+ logfile_path = get_logfile_path()
82
+ if logfile_path.is_file():
83
+ log_content = logfile_path.read_text(encoding="utf-8")
79
84
  else:
80
85
  log_not_found_msg = """No logfile to open at path: {}
81
86
  Please ensure you're running this command from the same directory you were experiencing an issue."""
82
- error_msg = log_not_found_msg.format(CCI_LOGFILE_PATH)
87
+ error_msg = log_not_found_msg.format(logfile_path)
83
88
  click.echo(error_msg)
84
89
  raise CumulusCIException(error_msg)
85
90
 
@@ -115,4 +120,6 @@ def get_context_info():
115
120
  info.append(f"CumulusCI version: {cumulusci.__version__}")
116
121
  info.append(f"Python version: {sys.version.split()[0]} ({sys.executable})")
117
122
  info.append(f"Environment Info: {host_info.system} / {host_info.machine}")
123
+ if host_info.system == "Windows":
124
+ info.append(f"Windows long path support enabled: {win32_long_paths_enabled()}")
118
125
  return "\n".join(info)
@@ -11,7 +11,12 @@ from rich.console import Console
11
11
  from cumulusci.cli.ui import CliTable, SimpleSalesforceUIHelpers
12
12
  from cumulusci.core.config import OrgConfig, ScratchOrgConfig
13
13
  from cumulusci.core.exceptions import OrgNotFound
14
- from cumulusci.oauth.client import OAuth2Client, OAuth2ClientConfig
14
+ from cumulusci.oauth.client import (
15
+ PROD_LOGIN_URL,
16
+ SANDBOX_LOGIN_URL,
17
+ OAuth2Client,
18
+ OAuth2ClientConfig,
19
+ )
15
20
  from cumulusci.salesforce_api.utils import get_simple_salesforce_connection
16
21
  from cumulusci.utils import parse_api_datetime
17
22
 
@@ -109,27 +114,35 @@ def org_browser(runtime, org_name, path, url_only):
109
114
  org_config.save()
110
115
 
111
116
 
112
- def setup_client(runtime, login_url=None, sandbox=None) -> OAuth2Client:
113
- """Provides an OAuth2Client for Connecting and Org"""
114
- connected_app = runtime.keychain.get_service("connected_app")
115
- base_uri = "https://{}.salesforce.com"
116
- base_uri = login_url or base_uri.format("test" if sandbox else "login")
117
- auth_uri = base_uri + "/services/oauth2/authorize"
118
- token_uri = base_uri + "/services/oauth2/token"
117
+ def setup_client(connected_app, login_url=None, sandbox=None) -> OAuth2Client:
118
+ """Provides an OAuth2Client for connecting an Org"""
119
+ if login_url:
120
+ base_uri = login_url
121
+ elif sandbox:
122
+ base_uri = SANDBOX_LOGIN_URL
123
+ elif connected_app.login_url:
124
+ base_uri = connected_app.login_url
125
+ else:
126
+ base_uri = PROD_LOGIN_URL
127
+ base_uri = base_uri.rstrip("/")
119
128
 
120
129
  sf_client_config = OAuth2ClientConfig(
121
130
  client_id=connected_app.client_id,
122
131
  client_secret=connected_app.client_secret,
123
132
  redirect_uri=connected_app.callback_url,
124
- auth_uri=auth_uri,
125
- token_uri=token_uri,
133
+ auth_uri=f"{base_uri}/services/oauth2/authorize",
134
+ token_uri=f"{base_uri}/services/oauth2/token",
126
135
  scope="web full refresh_token",
127
136
  )
128
137
  return OAuth2Client(sf_client_config)
129
138
 
130
139
 
131
140
  def connect_org_to_keychain(
132
- client: OAuth2Client, runtime, global_org: bool, org_name: str
141
+ client: OAuth2Client,
142
+ runtime,
143
+ global_org: bool,
144
+ org_name: str,
145
+ connected_app: str,
133
146
  ) -> None:
134
147
  """Use the given client to authorize into an org, and save the
135
148
  new OrgConfig to the keychain."""
@@ -137,6 +150,7 @@ def connect_org_to_keychain(
137
150
 
138
151
  global_org = global_org or runtime.project_config is None
139
152
  org_config = OrgConfig(oauth_dict, org_name, runtime.keychain, global_org)
153
+ org_config.config["connected_app"] = connected_app
140
154
  org_config.load_userinfo()
141
155
  org_config._load_orginfo()
142
156
  if org_config.organization_sobject["TrialExpirationDate"] is None:
@@ -153,6 +167,12 @@ def connect_org_to_keychain(
153
167
  name="connect", help="Connects a new org's credentials using OAuth Web Flow"
154
168
  )
155
169
  @orgname_option_or_argument(required=True)
170
+ @click.option(
171
+ "--connected-app",
172
+ "--connected_app",
173
+ "connected_app_name",
174
+ help="Name of the connected_app service to use.",
175
+ )
156
176
  @click.option(
157
177
  "--sandbox", is_flag=True, help="If set, connects to a Salesforce sandbox org"
158
178
  )
@@ -171,7 +191,9 @@ def connect_org_to_keychain(
171
191
  is_flag=True,
172
192
  )
173
193
  @pass_runtime(require_project=False, require_keychain=True)
174
- def org_connect(runtime, org_name, sandbox, login_url, default, global_org):
194
+ def org_connect(
195
+ runtime, org_name, sandbox, login_url, default, global_org, connected_app_name=None
196
+ ):
175
197
  runtime.check_org_overwrite(org_name)
176
198
 
177
199
  if login_url and ".lightning." in login_url:
@@ -180,8 +202,15 @@ def org_connect(runtime, org_name, sandbox, login_url, default, global_org):
180
202
  "Use the my.salesforce.com version instead"
181
203
  )
182
204
 
183
- sf_client = setup_client(runtime, login_url, sandbox)
184
- connect_org_to_keychain(sf_client, runtime, global_org, org_name)
205
+ connected_app_name = (
206
+ connected_app_name or runtime.keychain.get_default_service_name("connected_app")
207
+ )
208
+ click.echo(f"Connecting org using the {connected_app_name} connected app...")
209
+ connected_app = runtime.keychain.get_service("connected_app", connected_app_name)
210
+ sf_client = setup_client(connected_app, login_url, sandbox)
211
+ connect_org_to_keychain(
212
+ sf_client, runtime, global_org, org_name, connected_app_name
213
+ )
185
214
 
186
215
  if default and runtime.project_config is not None:
187
216
  runtime.keychain.set_default_org(org_name)
@@ -273,6 +302,7 @@ def org_info(runtime, org_name, print_json):
273
302
  ui_key_set = {
274
303
  "config_file",
275
304
  "config_name",
305
+ "connected_app",
276
306
  "created",
277
307
  "date_created",
278
308
  "days",
@@ -318,12 +348,22 @@ def org_info(runtime, org_name, print_json):
318
348
  )
319
349
  @pass_runtime(require_project=False, require_keychain=True)
320
350
  def org_list(runtime, json_flag, plain):
351
+ def _get_org_safe(org):
352
+ try:
353
+ return runtime.keychain.get_org(org)
354
+ except Exception as e:
355
+ click.echo(f"Cannot load org config for `{org}`: {e}")
356
+
321
357
  plain = plain or runtime.universal_config.cli__plain_output
322
- org_configs = {
323
- org: runtime.keychain.get_org(org) for org in runtime.keychain.list_orgs()
324
- }
358
+ org_configs = ((org, _get_org_safe(org)) for org in runtime.keychain.list_orgs())
359
+ org_configs = {org: org_config for org, org_config in org_configs if org_config}
360
+
325
361
  json_data = {}
326
- default_org_name, _ = runtime.keychain.get_default_org()
362
+ try:
363
+ default_org_name, _ = runtime.keychain.get_default_org()
364
+ except Exception: # pragma: no cover
365
+ default_org_name = None
366
+
327
367
  for org, org_config in org_configs.items():
328
368
  is_org_default = org == default_org_name
329
369
  row_data = {"is_default": is_org_default, "name": org}
@@ -339,7 +379,12 @@ def org_list(runtime, json_flag, plain):
339
379
  console.print(scratch_table, justify="left")
340
380
  console.print(persistent_table, justify="left")
341
381
 
342
- runtime.keychain.cleanup_org_cache_dirs()
382
+ try:
383
+ runtime.keychain.cleanup_org_cache_dirs()
384
+ except Exception:
385
+ click.echo(
386
+ "Cannot cleanup org cache dirs, perhaps due to org config files which cannot be decrypted."
387
+ )
343
388
 
344
389
 
345
390
  def _make_tables(json_data: dict):
@@ -1,4 +1,3 @@
1
- import json
2
1
  import os
3
2
  from pathlib import Path
4
3
  from typing import Callable, Optional
@@ -35,7 +34,7 @@ def service_list(runtime, plain, print_json):
35
34
 
36
35
  console = Console()
37
36
  if print_json:
38
- console.print(json.dumps(services))
37
+ console.print_json(data=services)
39
38
  return None
40
39
 
41
40
  configured_services = runtime.keychain.list_services()
@@ -84,17 +83,43 @@ class ConnectServiceCommand(click.MultiCommand):
84
83
  return sorted(services.keys())
85
84
 
86
85
  def _build_param(self, attribute: str, details: dict) -> click.Option:
87
- req = details["required"]
86
+ required = details.get("required", False)
88
87
  default_factory: Optional[Callable] = self._get_callable_default(
89
88
  details.get("default_factory")
90
89
  )
91
- prompt = None if default_factory else req
90
+ default = details.get("default")
91
+ if default is not None:
92
+ # This gives the user a chance to change the default
93
+ # (but only if they didn't specify it as a command line option)
94
+ default_factory = lambda: default # noqa
95
+ prompt = True
96
+ # Since there's a default value,
97
+ # we don't need to indicate this option as required in help,
98
+ required = False
99
+ elif default_factory:
100
+ # If there's a function to calculate the default,
101
+ # we'll call it instead of prompting the user.
102
+ # This provides a hook for collecting the value in other ways,
103
+ # such as via an oauth flow.
104
+ prompt = None
105
+ else:
106
+ # If there's no default, we prompt the user only if the option is required.
107
+ prompt = required
108
+
109
+ # Make sure the description is included in the prompt
110
+ description = details.get("description")
111
+ if prompt:
112
+ prompt = attribute
113
+ if description:
114
+ prompt += f" ({description})"
92
115
 
93
116
  kwargs = {
94
117
  "prompt": prompt,
95
- "required": req,
96
- "help": details.get("description"),
118
+ "required": required,
119
+ "help": description,
97
120
  "default": default_factory,
121
+ # If there is a preset default, this causes it to be shown in help.
122
+ "show_default": default,
98
123
  }
99
124
  return click.Option((f"--{attribute}",), **kwargs)
100
125
 
@@ -138,7 +163,7 @@ class ConnectServiceCommand(click.MultiCommand):
138
163
  f"Sorry, I don't know about the '{service_type}' service."
139
164
  )
140
165
 
141
- attributes = service_config["attributes"].items()
166
+ attributes = service_config.get("attributes", {}).items()
142
167
  params = [self._build_param(attr, cnfg) for attr, cnfg in attributes]
143
168
  params.extend(self._get_default_options(runtime))
144
169
 
@@ -114,6 +114,7 @@ def test_main__cci_show_stacktraces(
114
114
  init_logger,
115
115
  get_tempfile_logger,
116
116
  tee,
117
+ capsys,
117
118
  ):
118
119
  runtime = mock.Mock()
119
120
  runtime.universal_config.cli__show_stacktraces = True
@@ -121,7 +122,7 @@ def test_main__cci_show_stacktraces(
121
122
  cli.side_effect = Exception
122
123
  get_tempfile_logger.return_value = (mock.Mock(), "tempfile.log")
123
124
 
124
- with pytest.raises(Exception):
125
+ with pytest.raises(SystemExit):
125
126
  cci.main(["cci"])
126
127
 
127
128
  check_latest_version.assert_called_once()
@@ -129,6 +130,8 @@ def test_main__cci_show_stacktraces(
129
130
  CliRuntime.assert_called_once()
130
131
  cli.assert_called_once()
131
132
  post_mortem.assert_not_called()
133
+ captured = capsys.readouterr()
134
+ assert "Traceback (most recent call last)" in captured.err
132
135
 
133
136
 
134
137
  @mock.patch("cumulusci.cli.cci.tee_stdout_stderr")
@@ -413,6 +416,12 @@ def test_version__latest(capsys):
413
416
  assert "You have the latest version of CumulusCI" in console_output
414
417
 
415
418
 
419
+ @mock.patch("cumulusci.cli.cci.warn_if_no_long_paths")
420
+ def test_version__win_path_warning(warn_if):
421
+ run_click_command(cci.version)
422
+ warn_if.assert_called_once()
423
+
424
+
416
425
  @mock.patch("code.interact")
417
426
  def test_shell(interact):
418
427
  run_click_command(cci.shell)