cumulusci 3.52.0.dev0__tar.gz → 3.53.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 (617) hide show
  1. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/HISTORY.rst +20 -0
  2. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/PKG-INFO +22 -4
  3. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/README.rst +1 -3
  4. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/cci.py +1 -1
  5. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/org.py +44 -14
  6. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/service.py +32 -7
  7. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_cci.py +4 -1
  8. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_org.py +138 -57
  9. cumulusci-3.53.0.dev0/cumulusci/cli/tests/test_service.py +527 -0
  10. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/utils.py +16 -0
  11. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/base_config.py +1 -0
  12. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/org_config.py +13 -2
  13. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/test_config.py +52 -3
  14. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/base_project_keychain.py +92 -4
  15. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -12
  16. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/runtime.py +10 -3
  17. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tasks.py +56 -0
  18. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cumulusci.yml +10 -0
  19. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/CumulusCI.py +26 -0
  20. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_cumulusci_library.py +44 -0
  21. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/schema/cumulusci.jsonschema.json +4 -0
  22. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/delete.py +6 -47
  23. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +4 -0
  24. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +10 -0
  25. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_delete.py +1 -1
  26. cumulusci-3.53.0.dev0/cumulusci/tasks/bulkdata/tests/test_updates.py +404 -0
  27. cumulusci-3.53.0.dev0/cumulusci/tasks/bulkdata/update_data.py +226 -0
  28. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/connectedapp.py +2 -0
  29. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/base.py +11 -0
  30. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/deploy.py +10 -3
  31. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/get_user_info.py +7 -15
  32. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +2 -1
  33. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +44 -27
  34. cumulusci-3.53.0.dev0/cumulusci/tasks/marketing_cloud/util.py +35 -0
  35. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/libdoc.py +27 -3
  36. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +49 -9
  37. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_schema.py +5 -8
  38. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/fileutils.py +14 -0
  39. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_fileutils.py +23 -1
  40. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/cumulusci_yml.py +8 -0
  41. cumulusci-3.53.0.dev0/cumulusci/version.txt +1 -0
  42. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/PKG-INFO +22 -4
  43. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/SOURCES.txt +3 -0
  44. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/requires.txt +8 -9
  45. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cli.rst +3 -5
  46. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/config.rst +2 -4
  47. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/connected_orgs.rst +22 -16
  48. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/data.rst +48 -0
  49. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/headless.rst +1 -0
  50. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/requirements/dev.txt +14 -17
  51. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/requirements/prod.txt +9 -13
  52. cumulusci-3.52.0.dev0/cumulusci/cli/tests/test_service.py +0 -627
  53. cumulusci-3.52.0.dev0/cumulusci/version.txt +0 -1
  54. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/AUTHORS.rst +0 -0
  55. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/CONTRIBUTING.rst +0 -0
  56. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/LICENSE +0 -0
  57. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/MANIFEST.in +0 -0
  58. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/__init__.py +0 -0
  59. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/__main__.py +0 -0
  60. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/__init__.py +0 -0
  61. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/error.py +0 -0
  62. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/flow.py +0 -0
  63. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/logger.py +0 -0
  64. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/plan.py +0 -0
  65. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/project.py +0 -0
  66. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/runtime.py +0 -0
  67. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/task.py +0 -0
  68. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/__init__.py +0 -0
  69. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_error.py +0 -0
  70. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_flow.py +0 -0
  71. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_logger.py +0 -0
  72. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_plan.py +0 -0
  73. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_project.py +0 -0
  74. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_runtime.py +0 -0
  75. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_task.py +0 -0
  76. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_ui.py +0 -0
  77. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_utils.py +0 -0
  78. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/ui.py +0 -0
  79. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/utils.py +0 -0
  80. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/conftest.py +0 -0
  81. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/__init__.py +0 -0
  82. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/BaseConfig.py +0 -0
  83. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
  84. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/OrgConfig.py +0 -0
  85. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
  86. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/__init__.py +0 -0
  87. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/base_task_flow_config.py +0 -0
  88. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
  89. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/oauth2_service_config.py +0 -0
  90. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/project_config.py +0 -0
  91. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/scratch_org_config.py +0 -0
  92. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/sfdx_org_config.py +0 -0
  93. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
  94. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
  95. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/test_config_util.py +0 -0
  96. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/universal_config.py +0 -0
  97. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/util.py +0 -0
  98. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/debug.py +0 -0
  99. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/__init__.py +0 -0
  100. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/dependencies.py +0 -0
  101. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/github.py +0 -0
  102. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/resolvers.py +0 -0
  103. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
  104. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
  105. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
  106. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
  107. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
  108. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/utils.py +0 -0
  109. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/exceptions.py +0 -0
  110. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/flowrunner.py +0 -0
  111. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/github.py +0 -0
  112. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/__init__.py +0 -0
  113. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
  114. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/tests/conftest.py +0 -0
  115. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
  116. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
  117. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/metadeploy.py +0 -0
  118. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/sfdx.py +0 -0
  119. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/source/__init__.py +0 -0
  120. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/source/github.py +0 -0
  121. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/source/local_folder.py +0 -0
  122. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/template_utils.py +0 -0
  123. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/__init__.py +0 -0
  124. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_exceptions.py +0 -0
  125. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_flowrunner.py +0 -0
  126. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_github.py +0 -0
  127. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_sfdx.py +0 -0
  128. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_source.py +0 -0
  129. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_tasks.py +0 -0
  130. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_utils.py +0 -0
  131. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
  132. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_versions.py +0 -0
  133. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/utils.py +0 -0
  134. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/utils.py +0 -0
  135. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/versions.py +0 -0
  136. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/admin_profile.xml +0 -0
  137. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/delete_excludes.txt +0 -0
  138. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/README.md +0 -0
  139. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
  140. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/dot-gitignore +0 -0
  141. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/mapping.yml +0 -0
  142. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/scratch_def.json +0 -0
  143. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/__init__.py +0 -0
  144. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/client.py +0 -0
  145. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/exceptions.py +0 -0
  146. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/salesforce.py +0 -0
  147. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/tests/__init__.py +0 -0
  148. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/tests/test_client.py +0 -0
  149. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
  150. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/CumulusCI.robot +0 -0
  151. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/Salesforce.py +0 -0
  152. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/Salesforce.robot +0 -0
  153. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/__init__.py +0 -0
  154. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/form_handlers.py +0 -0
  155. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locator_manager.py +0 -0
  156. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locators_52.py +0 -0
  157. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locators_53.py +0 -0
  158. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locators_54.py +0 -0
  159. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
  160. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
  161. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
  162. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
  163. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
  164. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
  165. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
  166. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/BarTestPage.py +0 -0
  167. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
  168. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
  169. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
  170. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
  171. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
  172. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
  173. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
  174. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
  175. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
  176. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
  177. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
  178. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
  179. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
  180. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
  181. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
  182. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
  183. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
  184. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
  185. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
  186. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
  187. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
  188. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
  189. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
  190. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
  191. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
  192. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
  193. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
  194. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
  195. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
  196. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_utils.py +0 -0
  197. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/utils.py +0 -0
  198. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/__init__.py +0 -0
  199. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/exceptions.py +0 -0
  200. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
  201. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/metadata.py +0 -0
  202. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/org_schema.py +0 -0
  203. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
  204. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/package_install.py +0 -0
  205. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/package_zip.py +0 -0
  206. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
  207. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
  208. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
  209. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
  210. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
  211. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
  212. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
  213. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/utils.py +0 -0
  214. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/__init__.py +0 -0
  215. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/__init__.py +0 -0
  216. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/anon.py +0 -0
  217. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/batch.py +0 -0
  218. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/testrunner.py +0 -0
  219. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
  220. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
  221. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
  222. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/dates.py +0 -0
  223. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/extract.py +0 -0
  224. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
  225. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate.py +0 -0
  226. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
  227. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
  228. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
  229. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
  230. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/load.py +0 -0
  231. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
  232. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
  233. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
  234. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
  235. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/step.py +0 -0
  236. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Account.json +0 -0
  237. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Case.json +0 -0
  238. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Contact.json +0 -0
  239. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Opportunity.json +0 -0
  240. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/OpportunityContactRole.json +0 -0
  241. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  242. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
  243. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/global_describe.json +0 -0
  244. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
  245. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
  246. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
  247. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
  248. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
  249. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
  250. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
  251. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
  252. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
  253. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
  254. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
  255. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
  256. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
  257. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
  258. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
  259. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
  260. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
  261. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
  262. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
  263. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
  264. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
  265. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
  266. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
  267. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
  268. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
  269. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
  270. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
  271. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
  272. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
  273. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
  274. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
  275. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
  276. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
  277. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
  278. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
  279. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
  280. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
  281. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/utils.py +0 -0
  282. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/command.py +0 -0
  283. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/create_package_version.py +0 -0
  284. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/datadictionary.py +0 -0
  285. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/dx_convert_from.py +0 -0
  286. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/__init__.py +0 -0
  287. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/base.py +0 -0
  288. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/commit_status.py +0 -0
  289. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/merge.py +0 -0
  290. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/publish.py +0 -0
  291. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/pull_request.py +0 -0
  292. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/release.py +0 -0
  293. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/release_report.py +0 -0
  294. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tag.py +0 -0
  295. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/__init__.py +0 -0
  296. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
  297. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
  298. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_publish.py +0 -0
  299. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
  300. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_release.py +0 -0
  301. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
  302. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_tag.py +0 -0
  303. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_util.py +0 -0
  304. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
  305. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/util.py +0 -0
  306. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  307. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
  308. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
  309. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  310. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
  311. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
  312. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
  313. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
  314. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
  315. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/__init__.py +0 -0
  316. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/ee_src.py +0 -0
  317. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/managed_src.py +0 -0
  318. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
  319. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/modify.py +0 -0
  320. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/package.py +0 -0
  321. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  322. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
  323. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
  324. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
  325. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
  326. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
  327. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
  328. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
  329. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
  330. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
  331. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/base.py +0 -0
  332. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
  333. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
  334. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
  335. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
  336. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
  337. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
  338. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
  339. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
  340. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
  341. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
  342. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
  343. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
  344. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
  345. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
  346. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
  347. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
  348. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
  349. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadeploy.py +0 -0
  350. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metaxml.py +0 -0
  351. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/__init__.py +0 -0
  352. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/licenses.py +0 -0
  353. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/packages.py +0 -0
  354. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/permsets.py +0 -0
  355. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
  356. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/settings.py +0 -0
  357. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/sobjects.py +0 -0
  358. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
  359. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
  360. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
  361. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
  362. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
  363. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
  364. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/README.md +0 -0
  365. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/__init__.py +0 -0
  366. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/push_api.py +0 -0
  367. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/pushfails.py +0 -0
  368. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tasks.py +0 -0
  369. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tests/conftest.py +0 -0
  370. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
  371. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
  372. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/README.md +0 -0
  373. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/__init__.py +0 -0
  374. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
  375. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/generator.py +0 -0
  376. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/parser.py +0 -0
  377. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/provider.py +0 -0
  378. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/task.py +0 -0
  379. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  380. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
  381. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
  382. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
  383. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
  384. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
  385. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
  386. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
  387. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
  388. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
  389. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
  390. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/__init__.py +0 -0
  391. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
  392. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
  393. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
  394. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
  395. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/lint.py +0 -0
  396. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
  397. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
  398. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
  399. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/template.html +0 -0
  400. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
  401. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
  402. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
  403. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
  404. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
  405. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
  406. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
  407. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
  408. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
  409. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
  410. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
  411. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
  412. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
  413. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
  414. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
  415. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
  416. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
  417. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
  418. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
  419. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
  420. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
  421. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
  422. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
  423. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
  424. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
  425. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
  426. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
  427. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
  428. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
  429. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
  430. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
  431. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
  432. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/__init__.py +0 -0
  433. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
  434. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/composite.py +0 -0
  435. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
  436. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
  437. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
  438. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
  439. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
  440. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
  441. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
  442. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
  443. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
  444. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
  445. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/profiles.py +0 -0
  446. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
  447. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
  448. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
  449. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
  450. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
  451. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
  452. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
  453. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
  454. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
  455. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
  456. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
  457. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
  458. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
  459. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
  460. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
  461. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
  462. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
  463. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
  464. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
  465. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
  466. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
  467. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
  468. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
  469. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
  470. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
  471. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
  472. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
  473. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
  474. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
  475. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
  476. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
  477. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
  478. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
  479. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
  480. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
  481. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
  482. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
  483. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
  484. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
  485. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
  486. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
  487. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
  488. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
  489. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
  490. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
  491. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
  492. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
  493. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
  494. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/sfdx.py +0 -0
  495. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/__init__.py +0 -0
  496. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/conftest.py +0 -0
  497. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_command.py +0 -0
  498. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
  499. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
  500. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
  501. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
  502. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
  503. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
  504. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
  505. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
  506. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
  507. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
  508. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_util.py +0 -0
  509. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/util.py +0 -0
  510. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/__init__.py +0 -0
  511. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
  512. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
  513. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
  514. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_entry_points.py +0 -0
  515. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
  516. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_main.py +0 -0
  517. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_utils.py +0 -0
  518. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/util.py +0 -0
  519. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/__init__.py +0 -0
  520. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/classutils.py +0 -0
  521. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/git.py +0 -0
  522. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/http/multi_request.py +0 -0
  523. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/http/requests_utils.py +0 -0
  524. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
  525. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/iterators.py +0 -0
  526. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/logging.py +0 -0
  527. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
  528. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
  529. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
  530. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_git.py +0 -0
  531. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_logging.py +0 -0
  532. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_org_schema.py +0 -0
  533. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
  534. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_waiting.py +0 -0
  535. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/waiting.py +0 -0
  536. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/__init__.py +0 -0
  537. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/metadata_tree.py +0 -0
  538. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/robot_xml.py +0 -0
  539. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
  540. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
  541. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
  542. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/model_parser.py +0 -0
  543. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/safer_loader.py +0 -0
  544. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
  545. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
  546. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
  547. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
  548. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/ziputils.py +0 -0
  549. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/dependency_links.txt +0 -0
  550. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/entry_points.txt +0 -0
  551. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/not-zip-safe +0 -0
  552. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/top_level.txt +0 -0
  553. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/2gp_testing.rst +0 -0
  554. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/Makefile +0 -0
  555. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/about.rst +0 -0
  556. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cheat_sheet.rst +0 -0
  557. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/commands.rst +0 -0
  558. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/concepts.rst +0 -0
  559. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/conf.py +0 -0
  560. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/continuous_integration.rst +0 -0
  561. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/contributing.rst +0 -0
  562. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cookbook.rst +0 -0
  563. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cumulusci_flow.rst +0 -0
  564. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/dev.rst +0 -0
  565. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image1.png +0 -0
  566. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image12.png +0 -0
  567. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image15.png +0 -0
  568. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image17.png +0 -0
  569. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image3.png +0 -0
  570. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/env_var_reference.rst +0 -0
  571. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/get_started.rst +0 -0
  572. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/github_actions.rst +0 -0
  573. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/history.rst +0 -0
  574. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/cci_service_list.png +0 -0
  575. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/cumulus_ci_workflow.png +0 -0
  576. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/env-var.png +0 -0
  577. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/env-var2.png +0 -0
  578. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github-commit_status_error.png +0 -0
  579. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github-commit_status_pass.png +0 -0
  580. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github-creating_a_uat_release.png +0 -0
  581. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_checks.png +0 -0
  582. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_personal_access_token_scopes.png +0 -0
  583. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_secrets.png +0 -0
  584. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_workflow.png +0 -0
  585. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/locate_elements_screenshot.png +0 -0
  586. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/pipx.png +0 -0
  587. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/robot_log_screenshot.png +0 -0
  588. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/robot_toggled_results_screenshot.png +0 -0
  589. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/salesforce-org-process.png +0 -0
  590. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/service-list.png +0 -0
  591. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/skipping_task.png +0 -0
  592. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/windows_python.png +0 -0
  593. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/windows_python_success.png +0 -0
  594. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/index.rst +0 -0
  595. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/install.rst +0 -0
  596. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/internals.rst +0 -0
  597. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/intro.rst +0 -0
  598. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/make.bat +0 -0
  599. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/managed_2gp.rst +0 -0
  600. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/managed_package.rst +0 -0
  601. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/metadata_etl.rst +0 -0
  602. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/npsp_eda_2gp.rst +0 -0
  603. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/packaging.rst +0 -0
  604. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/push_upgrades.rst +0 -0
  605. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/reference.rst +0 -0
  606. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/release_notes.rst +0 -0
  607. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot.rst +0 -0
  608. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot_advanced.rst +0 -0
  609. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot_debugger.rst +0 -0
  610. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot_tutorial.rst +0 -0
  611. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/scratch_orgs.rst +0 -0
  612. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/tutorial.rst +0 -0
  613. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/unlocked_package.rst +0 -0
  614. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/unpackaged.rst +0 -0
  615. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/pyproject.toml +0 -0
  616. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/setup.cfg +0 -0
  617. {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/setup.py +0 -0
@@ -2,7 +2,27 @@
2
2
  History
3
3
  =======
4
4
 
5
+ 3.52.0 (2022-02-03)
6
+ -------------------
7
+
8
+ Changes
9
+
10
+ * 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)
11
+ * Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
12
+ * 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)
13
+ * 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)
14
+ * Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
15
+ * 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.
16
+
17
+ Issues Closed
18
+
19
+ * Fixed an issue where overriding flow steps was not working as documented. (#3043)
20
+ * 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)
21
+ * Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
22
+
23
+
5
24
  3.51.1 (2022-01-25)
25
+ -------------------
6
26
 
7
27
  Issues Closed
8
28
 
@@ -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.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
@@ -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,27 @@ Description: =========
68
66
  History
69
67
  =======
70
68
 
69
+ 3.52.0 (2022-02-03)
70
+ -------------------
71
+
72
+ Changes
73
+
74
+ * 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)
75
+ * Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
76
+ * 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)
77
+ * 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)
78
+ * Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
79
+ * 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.
80
+
81
+ Issues Closed
82
+
83
+ * Fixed an issue where overriding flow steps was not working as documented. (#3043)
84
+ * 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)
85
+ * Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
86
+
87
+
71
88
  3.51.1 (2022-01-25)
89
+ -------------------
72
90
 
73
91
  Issues Closed
74
92
 
@@ -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.
@@ -120,7 +120,7 @@ def handle_exception(
120
120
  traceback.print_exc(file=log_file) # log stacktrace silently
121
121
 
122
122
  if should_show_stacktraces and not isinstance(error, USAGE_ERRORS):
123
- raise error
123
+ error_console.print_exception()
124
124
 
125
125
 
126
126
  def connection_error_message(console: Console):
@@ -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",
@@ -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")
@@ -1,6 +1,5 @@
1
1
  import io
2
2
  import json
3
- from contextlib import contextmanager
4
3
  from datetime import date, datetime, timedelta
5
4
  from pathlib import Path
6
5
  from unittest import mock
@@ -9,16 +8,22 @@ import click
9
8
  import pytest
10
9
  import responses
11
10
 
12
- from cumulusci.cli import cci
13
- from cumulusci.core.config import OrgConfig, ScratchOrgConfig
11
+ from cumulusci.core.config import (
12
+ BaseProjectConfig,
13
+ OrgConfig,
14
+ ScratchOrgConfig,
15
+ ServiceConfig,
16
+ UniversalConfig,
17
+ )
14
18
  from cumulusci.core.exceptions import (
15
19
  OrgNotFound,
16
20
  ScratchOrgException,
17
21
  ServiceNotConfigured,
18
22
  )
23
+ from cumulusci.core.keychain import BaseProjectKeychain
19
24
 
20
25
  from .. import org
21
- from .utils import run_click_command
26
+ from .utils import run_cli_command, run_click_command
22
27
 
23
28
 
24
29
  class TestOrgCommands:
@@ -81,22 +86,17 @@ class TestOrgCommands:
81
86
  click_echo.assert_called_once_with(start_url)
82
87
  org_config.save.assert_called_once_with()
83
88
 
84
- @mock.patch("cumulusci.cli.org.OAuth2Client")
89
+ @mock.patch("cumulusci.oauth.client.OAuth2Client.auth_code_flow")
85
90
  @responses.activate
86
- def test_org_connect(self, oauth2client):
87
- client_instance = mock.Mock()
88
- client_instance.auth_code_flow.return_value = {
91
+ def test_org_connect(self, auth_code_flow):
92
+ auth_code_flow.return_value = {
89
93
  "instance_url": "https://instance",
90
94
  "access_token": "BOGUS",
91
95
  "id": "OODxxxxxxxxxxxx/user",
92
96
  }
93
- oauth2client.return_value = client_instance
94
97
  runtime = mock.Mock()
95
- runtime.keychain.get_service.return_value = mock.Mock(
96
- client_id="asdfasdf",
97
- client_secret="asdfasdf",
98
- callback_url="http://localhost:8080/callback",
99
- )
98
+ runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
99
+ runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
100
100
  responses.add(
101
101
  method="GET",
102
102
  url="https://instance/services/oauth2/userinfo",
@@ -116,37 +116,70 @@ class TestOrgCommands:
116
116
  status=200,
117
117
  )
118
118
  responses.add("GET", "https://instance/services/data", json=[{"version": 45.0}])
119
- run_click_command(
120
- org.org_connect,
121
- runtime=runtime,
122
- org_name="test",
123
- sandbox=False,
124
- login_url=None,
125
- default=True,
126
- global_org=False,
127
- )
128
119
 
129
- runtime.check_org_overwrite.assert_called_once()
130
- runtime.keychain.set_org.assert_called_once()
131
- org_config = runtime.keychain.set_org.call_args[0][0]
120
+ result = run_cli_command("org", "connect", "test", "--default", runtime=runtime)
121
+
122
+ name, org_config = runtime.keychain.get_default_org()
123
+ assert name == "test"
124
+ assert org_config.id == "OODxxxxxxxxxxxx/user"
125
+ assert org_config.connected_app == "built-in"
132
126
  assert org_config.expires == "Persistent"
133
- runtime.keychain.set_default_org.assert_called_once_with("test")
127
+ assert "Connecting org using the built-in connected app..." in result.output
128
+ assert "test is now the default org" in result.output
134
129
 
135
- @contextmanager
136
- def mock_main_context(self):
137
- with mock.patch( # side effects break other tests
138
- "cumulusci.cli.cci.init_logger", mock.Mock()
139
- ), mock.patch(
140
- "cumulusci.cli.cci.get_tempfile_logger",
141
- mock.MagicMock(return_value=(None, "")),
142
- ), mock.patch(
143
- "cumulusci.cli.cci.tee_stdout_stderr", mock.MagicMock()
144
- ):
145
- yield
130
+ @mock.patch("cumulusci.oauth.client.OAuth2Client.auth_code_flow")
131
+ @responses.activate
132
+ def test_org_connect__non_default_connected_app(self, auth_code_flow):
133
+ auth_code_flow.return_value = {
134
+ "instance_url": "https://instance",
135
+ "access_token": "BOGUS",
136
+ "id": "OODxxxxxxxxxxxx/user",
137
+ }
138
+ runtime = mock.Mock()
139
+ runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
140
+ runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
141
+ runtime.keychain.set_service(
142
+ "connected_app",
143
+ "other",
144
+ ServiceConfig(
145
+ {
146
+ "login_url": "https://other",
147
+ "callback_url": "http://localhost:8080/callback",
148
+ "client_id": "ID",
149
+ "client_secret": "SECRET",
150
+ }
151
+ ),
152
+ )
153
+ responses.add(
154
+ method="GET",
155
+ url="https://instance/services/oauth2/userinfo",
156
+ body=b"{}",
157
+ status=200,
158
+ )
159
+ responses.add(
160
+ method="GET",
161
+ url="https://instance/services/data/v45.0/sobjects/Organization/OODxxxxxxxxxxxx",
162
+ json={
163
+ "TrialExpirationDate": None,
164
+ "OrganizationType": "Developer Edition",
165
+ "IsSandbox": False,
166
+ "InstanceName": "CS420",
167
+ "NamespacePrefix": None,
168
+ },
169
+ status=200,
170
+ )
171
+ responses.add("GET", "https://instance/services/data", json=[{"version": 45.0}])
172
+
173
+ result = run_cli_command(
174
+ "org", "connect", "test", "--connected_app", "other", runtime=runtime
175
+ )
176
+
177
+ org_config = runtime.keychain.get_org("test")
178
+ assert org_config.connected_app == "other"
179
+ assert "Connecting org using the other connected app..." in result.output
146
180
 
147
181
  @mock.patch("cumulusci.cli.org.connect_org_to_keychain")
148
- @mock.patch("cumulusci.cli.cci.CliRuntime")
149
- def test_org_connect__sandbox(self, cli_runtime, connect_to_keychain):
182
+ def test_org_connect__sandbox(self, connect_to_keychain):
150
183
  mocked_connected_app = mock.Mock()
151
184
  mocked_connected_app.client_id = "foo"
152
185
  mocked_connected_app.client_secret = "bar"
@@ -155,30 +188,19 @@ class TestOrgCommands:
155
188
  runtime = mock.Mock()
156
189
  runtime.keychain.get_service.return_value = mocked_connected_app
157
190
 
158
- cli_runtime.return_value = runtime
159
-
160
- with self.mock_main_context():
161
- cci.main(["cci", "org", "connect", "blah", "--sandbox"])
191
+ run_cli_command("org", "connect", "blah", "--sandbox", runtime=runtime)
162
192
 
163
193
  actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
164
194
  assert actual_client_config.auth_uri.startswith("https://test.salesforce.com/")
165
195
  assert actual_client_config.token_uri.startswith("https://test.salesforce.com/")
166
196
 
167
197
  @mock.patch("cumulusci.cli.org.connect_org_to_keychain")
168
- @mock.patch("cumulusci.cli.cci.CliRuntime")
169
- def test_org_connect__prod_default(self, cli_runtime, connect_to_keychain):
170
- mocked_connected_app = mock.Mock()
171
- mocked_connected_app.client_id = "foo"
172
- mocked_connected_app.client_secret = "bar"
173
- mocked_connected_app.callback_url = "https://foo.bar.baz/"
174
-
198
+ def test_org_connect__prod_default(self, connect_to_keychain):
175
199
  runtime = mock.Mock()
176
- runtime.keychain.get_service.return_value = mocked_connected_app
177
-
178
- cli_runtime.return_value = runtime
200
+ runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
201
+ runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
179
202
 
180
- with self.mock_main_context():
181
- cci.main(["cci", "org", "connect", "blah"])
203
+ run_cli_command("org", "connect", "blah", runtime=runtime)
182
204
 
183
205
  actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
184
206
  assert actual_client_config.auth_uri.startswith("https://login.salesforce.com/")
@@ -186,6 +208,59 @@ class TestOrgCommands:
186
208
  "https://login.salesforce.com/"
187
209
  )
188
210
 
211
+ @mock.patch("cumulusci.cli.org.connect_org_to_keychain")
212
+ def test_org_connect__other_connected_app_login_url(self, connect_to_keychain):
213
+ runtime = mock.Mock()
214
+ runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
215
+ runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
216
+ runtime.keychain.set_service(
217
+ "connected_app",
218
+ "other",
219
+ ServiceConfig(
220
+ {
221
+ "client_id": "foo",
222
+ "client_secret": "bar",
223
+ "callback_url": "https://foo.bar.baz/",
224
+ "login_url": "https://other",
225
+ }
226
+ ),
227
+ )
228
+
229
+ run_cli_command(
230
+ "org", "connect", "blah", "--connected-app", "other", runtime=runtime
231
+ )
232
+
233
+ actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
234
+ assert actual_client_config.auth_uri.startswith("https://other/")
235
+ assert actual_client_config.token_uri.startswith("https://other/")
236
+
237
+ @mock.patch("cumulusci.cli.org.connect_org_to_keychain")
238
+ def test_org_connect__login_url_from_cli_option(self, connect_to_keychain):
239
+ runtime = mock.Mock()
240
+ runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
241
+ runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
242
+
243
+ run_cli_command(
244
+ "org", "connect", "blah", "--login-url", "https://custom", runtime=runtime
245
+ )
246
+
247
+ actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
248
+ assert actual_client_config.auth_uri.startswith("https://custom/")
249
+ assert actual_client_config.token_uri.startswith("https://custom/")
250
+
251
+ def test_org_connect__bad_connected_app_name(self):
252
+ runtime = mock.Mock()
253
+ runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
254
+ runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
255
+
256
+ with pytest.raises(
257
+ ServiceNotConfigured,
258
+ match="No service of type connected_app configured with name: bogus",
259
+ ):
260
+ run_cli_command(
261
+ "org", "connect", "blah", "--connected-app", "bogus", runtime=runtime
262
+ )
263
+
189
264
  @mock.patch("cumulusci.cli.org.OAuth2Client")
190
265
  @responses.activate
191
266
  def test_org_connect_expires(self, oauth2client):
@@ -370,7 +445,12 @@ class TestOrgCommands:
370
445
 
371
446
  def test_org_info(self):
372
447
  org_config = mock.Mock()
373
- org_config.config = {"days": 1, "default": True, "password": None}
448
+ org_config.config = {
449
+ "days": 1,
450
+ "default": True,
451
+ "password": None,
452
+ "connected_app": "built-in",
453
+ }
374
454
  org_config.expires = date.today()
375
455
  org_config.latest_api_version = "42.0"
376
456
  runtime = mock.Mock()
@@ -384,6 +464,7 @@ class TestOrgCommands:
384
464
  [
385
465
  ["Org: test", ""],
386
466
  ["\x1b[1mapi_version\x1b[0m", "42.0"],
467
+ ["\x1b[1mconnected_app\x1b[0m", "built-in"],
387
468
  ["\x1b[1mdays\x1b[0m", "1"],
388
469
  ["\x1b[1mdefault\x1b[0m", "True"],
389
470
  ["\x1b[1mpassword\x1b[0m", "None"],