cumulusci-plus 5.0.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.

Potentially problematic release.


This version of cumulusci-plus might be problematic. Click here for more details.

Files changed (756) hide show
  1. cumulusci_plus-5.0.0/.gitignore +83 -0
  2. cumulusci_plus-5.0.0/AUTHORS.rst +41 -0
  3. cumulusci_plus-5.0.0/LICENSE +30 -0
  4. cumulusci_plus-5.0.0/PKG-INFO +145 -0
  5. cumulusci_plus-5.0.0/README.md +68 -0
  6. cumulusci_plus-5.0.0/cumulusci/__about__.py +1 -0
  7. cumulusci_plus-5.0.0/cumulusci/__init__.py +22 -0
  8. cumulusci_plus-5.0.0/cumulusci/__main__.py +3 -0
  9. cumulusci_plus-5.0.0/cumulusci/cli/__init__.py +0 -0
  10. cumulusci_plus-5.0.0/cumulusci/cli/cci.py +244 -0
  11. cumulusci_plus-5.0.0/cumulusci/cli/error.py +125 -0
  12. cumulusci_plus-5.0.0/cumulusci/cli/flow.py +185 -0
  13. cumulusci_plus-5.0.0/cumulusci/cli/logger.py +72 -0
  14. cumulusci_plus-5.0.0/cumulusci/cli/org.py +692 -0
  15. cumulusci_plus-5.0.0/cumulusci/cli/plan.py +181 -0
  16. cumulusci_plus-5.0.0/cumulusci/cli/project.py +391 -0
  17. cumulusci_plus-5.0.0/cumulusci/cli/robot.py +116 -0
  18. cumulusci_plus-5.0.0/cumulusci/cli/runtime.py +190 -0
  19. cumulusci_plus-5.0.0/cumulusci/cli/service.py +521 -0
  20. cumulusci_plus-5.0.0/cumulusci/cli/task.py +295 -0
  21. cumulusci_plus-5.0.0/cumulusci/cli/tests/__init__.py +0 -0
  22. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_cci.py +545 -0
  23. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_error.py +170 -0
  24. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_flow.py +276 -0
  25. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_logger.py +25 -0
  26. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_org.py +1438 -0
  27. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_plan.py +245 -0
  28. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_project.py +235 -0
  29. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_robot.py +177 -0
  30. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_runtime.py +197 -0
  31. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_service.py +853 -0
  32. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_task.py +266 -0
  33. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_ui.py +310 -0
  34. cumulusci_plus-5.0.0/cumulusci/cli/tests/test_utils.py +122 -0
  35. cumulusci_plus-5.0.0/cumulusci/cli/tests/utils.py +52 -0
  36. cumulusci_plus-5.0.0/cumulusci/cli/ui.py +234 -0
  37. cumulusci_plus-5.0.0/cumulusci/cli/utils.py +150 -0
  38. cumulusci_plus-5.0.0/cumulusci/conftest.py +181 -0
  39. cumulusci_plus-5.0.0/cumulusci/core/__init__.py +0 -0
  40. cumulusci_plus-5.0.0/cumulusci/core/config/BaseConfig.py +5 -0
  41. cumulusci_plus-5.0.0/cumulusci/core/config/BaseTaskFlowConfig.py +5 -0
  42. cumulusci_plus-5.0.0/cumulusci/core/config/OrgConfig.py +5 -0
  43. cumulusci_plus-5.0.0/cumulusci/core/config/ScratchOrgConfig.py +5 -0
  44. cumulusci_plus-5.0.0/cumulusci/core/config/__init__.py +125 -0
  45. cumulusci_plus-5.0.0/cumulusci/core/config/base_config.py +111 -0
  46. cumulusci_plus-5.0.0/cumulusci/core/config/base_task_flow_config.py +82 -0
  47. cumulusci_plus-5.0.0/cumulusci/core/config/marketing_cloud_service_config.py +83 -0
  48. cumulusci_plus-5.0.0/cumulusci/core/config/oauth2_service_config.py +17 -0
  49. cumulusci_plus-5.0.0/cumulusci/core/config/org_config.py +604 -0
  50. cumulusci_plus-5.0.0/cumulusci/core/config/project_config.py +782 -0
  51. cumulusci_plus-5.0.0/cumulusci/core/config/scratch_org_config.py +251 -0
  52. cumulusci_plus-5.0.0/cumulusci/core/config/sfdx_org_config.py +220 -0
  53. cumulusci_plus-5.0.0/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +33 -0
  54. cumulusci_plus-5.0.0/cumulusci/core/config/tests/test_config.py +1895 -0
  55. cumulusci_plus-5.0.0/cumulusci/core/config/tests/test_config_expensive.py +839 -0
  56. cumulusci_plus-5.0.0/cumulusci/core/config/tests/test_config_util.py +91 -0
  57. cumulusci_plus-5.0.0/cumulusci/core/config/universal_config.py +88 -0
  58. cumulusci_plus-5.0.0/cumulusci/core/config/util.py +18 -0
  59. cumulusci_plus-5.0.0/cumulusci/core/datasets.py +303 -0
  60. cumulusci_plus-5.0.0/cumulusci/core/debug.py +33 -0
  61. cumulusci_plus-5.0.0/cumulusci/core/dependencies/__init__.py +55 -0
  62. cumulusci_plus-5.0.0/cumulusci/core/dependencies/base.py +561 -0
  63. cumulusci_plus-5.0.0/cumulusci/core/dependencies/dependencies.py +273 -0
  64. cumulusci_plus-5.0.0/cumulusci/core/dependencies/github.py +177 -0
  65. cumulusci_plus-5.0.0/cumulusci/core/dependencies/github_resolvers.py +244 -0
  66. cumulusci_plus-5.0.0/cumulusci/core/dependencies/resolvers.py +580 -0
  67. cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/__init__.py +0 -0
  68. cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/conftest.py +385 -0
  69. cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/test_dependencies.py +950 -0
  70. cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/test_github.py +83 -0
  71. cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/test_resolvers.py +1027 -0
  72. cumulusci_plus-5.0.0/cumulusci/core/dependencies/utils.py +13 -0
  73. cumulusci_plus-5.0.0/cumulusci/core/enums.py +11 -0
  74. cumulusci_plus-5.0.0/cumulusci/core/exceptions.py +311 -0
  75. cumulusci_plus-5.0.0/cumulusci/core/flowrunner.py +888 -0
  76. cumulusci_plus-5.0.0/cumulusci/core/github.py +665 -0
  77. cumulusci_plus-5.0.0/cumulusci/core/keychain/__init__.py +24 -0
  78. cumulusci_plus-5.0.0/cumulusci/core/keychain/base_project_keychain.py +441 -0
  79. cumulusci_plus-5.0.0/cumulusci/core/keychain/encrypted_file_project_keychain.py +945 -0
  80. cumulusci_plus-5.0.0/cumulusci/core/keychain/environment_project_keychain.py +7 -0
  81. cumulusci_plus-5.0.0/cumulusci/core/keychain/serialization.py +152 -0
  82. cumulusci_plus-5.0.0/cumulusci/core/keychain/subprocess_keychain.py +24 -0
  83. cumulusci_plus-5.0.0/cumulusci/core/keychain/tests/conftest.py +50 -0
  84. cumulusci_plus-5.0.0/cumulusci/core/keychain/tests/test_base_project_keychain.py +299 -0
  85. cumulusci_plus-5.0.0/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +1228 -0
  86. cumulusci_plus-5.0.0/cumulusci/core/metadeploy/__init__.py +0 -0
  87. cumulusci_plus-5.0.0/cumulusci/core/metadeploy/api.py +88 -0
  88. cumulusci_plus-5.0.0/cumulusci/core/metadeploy/plans.py +25 -0
  89. cumulusci_plus-5.0.0/cumulusci/core/metadeploy/tests/test_api.py +276 -0
  90. cumulusci_plus-5.0.0/cumulusci/core/runtime.py +115 -0
  91. cumulusci_plus-5.0.0/cumulusci/core/sfdx.py +162 -0
  92. cumulusci_plus-5.0.0/cumulusci/core/source/__init__.py +16 -0
  93. cumulusci_plus-5.0.0/cumulusci/core/source/github.py +50 -0
  94. cumulusci_plus-5.0.0/cumulusci/core/source/local_folder.py +35 -0
  95. cumulusci_plus-5.0.0/cumulusci/core/source_transforms/__init__.py +0 -0
  96. cumulusci_plus-5.0.0/cumulusci/core/source_transforms/tests/test_transforms.py +1091 -0
  97. cumulusci_plus-5.0.0/cumulusci/core/source_transforms/transforms.py +532 -0
  98. cumulusci_plus-5.0.0/cumulusci/core/tasks.py +404 -0
  99. cumulusci_plus-5.0.0/cumulusci/core/template_utils.py +59 -0
  100. cumulusci_plus-5.0.0/cumulusci/core/tests/__init__.py +0 -0
  101. cumulusci_plus-5.0.0/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_e2e.yaml +215 -0
  102. cumulusci_plus-5.0.0/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_extract_standard_objects.yaml +199 -0
  103. cumulusci_plus-5.0.0/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_read_explicit_extract_declaration.yaml +3 -0
  104. cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo/cumulusci.yml +32 -0
  105. cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo/tasks/directory/example_2.py +6 -0
  106. cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo/tasks/example.py +43 -0
  107. cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo_2/cumulusci.yml +11 -0
  108. cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo_2/tasks/example_3.py +6 -0
  109. cumulusci_plus-5.0.0/cumulusci/core/tests/test_datasets_e2e.py +386 -0
  110. cumulusci_plus-5.0.0/cumulusci/core/tests/test_exceptions.py +11 -0
  111. cumulusci_plus-5.0.0/cumulusci/core/tests/test_flowrunner.py +836 -0
  112. cumulusci_plus-5.0.0/cumulusci/core/tests/test_github.py +942 -0
  113. cumulusci_plus-5.0.0/cumulusci/core/tests/test_sfdx.py +138 -0
  114. cumulusci_plus-5.0.0/cumulusci/core/tests/test_source.py +678 -0
  115. cumulusci_plus-5.0.0/cumulusci/core/tests/test_tasks.py +262 -0
  116. cumulusci_plus-5.0.0/cumulusci/core/tests/test_utils.py +141 -0
  117. cumulusci_plus-5.0.0/cumulusci/core/tests/test_utils_merge_config.py +276 -0
  118. cumulusci_plus-5.0.0/cumulusci/core/tests/test_versions.py +76 -0
  119. cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_child/cumulusci.yml +7 -0
  120. cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_child/tasks/untrusted_child.py +6 -0
  121. cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_parent/cumulusci.yml +26 -0
  122. cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_parent/tasks/untrusted_parent.py +6 -0
  123. cumulusci_plus-5.0.0/cumulusci/core/tests/utils.py +116 -0
  124. cumulusci_plus-5.0.0/cumulusci/core/tests/yaml/global.yaml +0 -0
  125. cumulusci_plus-5.0.0/cumulusci/core/utils.py +402 -0
  126. cumulusci_plus-5.0.0/cumulusci/core/versions.py +149 -0
  127. cumulusci_plus-5.0.0/cumulusci/cumulusci.yml +1621 -0
  128. cumulusci_plus-5.0.0/cumulusci/files/admin_profile.xml +20 -0
  129. cumulusci_plus-5.0.0/cumulusci/files/delete_excludes.txt +424 -0
  130. cumulusci_plus-5.0.0/cumulusci/files/templates/project/README.md +12 -0
  131. cumulusci_plus-5.0.0/cumulusci/files/templates/project/cumulusci.yml +63 -0
  132. cumulusci_plus-5.0.0/cumulusci/files/templates/project/dot-gitignore +60 -0
  133. cumulusci_plus-5.0.0/cumulusci/files/templates/project/mapping.yml +45 -0
  134. cumulusci_plus-5.0.0/cumulusci/files/templates/project/scratch_def.json +25 -0
  135. cumulusci_plus-5.0.0/cumulusci/oauth/__init__.py +0 -0
  136. cumulusci_plus-5.0.0/cumulusci/oauth/client.py +400 -0
  137. cumulusci_plus-5.0.0/cumulusci/oauth/exceptions.py +9 -0
  138. cumulusci_plus-5.0.0/cumulusci/oauth/salesforce.py +95 -0
  139. cumulusci_plus-5.0.0/cumulusci/oauth/tests/__init__.py +0 -0
  140. cumulusci_plus-5.0.0/cumulusci/oauth/tests/cassettes/test_get_device_code.yaml +22 -0
  141. cumulusci_plus-5.0.0/cumulusci/oauth/tests/cassettes/test_get_device_oauth_token.yaml +74 -0
  142. cumulusci_plus-5.0.0/cumulusci/oauth/tests/test_client.py +308 -0
  143. cumulusci_plus-5.0.0/cumulusci/oauth/tests/test_salesforce.py +46 -0
  144. cumulusci_plus-5.0.0/cumulusci/plugins/__init__.py +3 -0
  145. cumulusci_plus-5.0.0/cumulusci/plugins/plugin_base.py +93 -0
  146. cumulusci_plus-5.0.0/cumulusci/plugins/plugin_loader.py +59 -0
  147. cumulusci_plus-5.0.0/cumulusci/robotframework/CumulusCI.py +340 -0
  148. cumulusci_plus-5.0.0/cumulusci/robotframework/CumulusCI.robot +7 -0
  149. cumulusci_plus-5.0.0/cumulusci/robotframework/Performance.py +165 -0
  150. cumulusci_plus-5.0.0/cumulusci/robotframework/Salesforce.py +936 -0
  151. cumulusci_plus-5.0.0/cumulusci/robotframework/Salesforce.robot +192 -0
  152. cumulusci_plus-5.0.0/cumulusci/robotframework/SalesforceAPI.py +416 -0
  153. cumulusci_plus-5.0.0/cumulusci/robotframework/SalesforcePlaywright.py +220 -0
  154. cumulusci_plus-5.0.0/cumulusci/robotframework/SalesforcePlaywright.robot +40 -0
  155. cumulusci_plus-5.0.0/cumulusci/robotframework/__init__.py +2 -0
  156. cumulusci_plus-5.0.0/cumulusci/robotframework/base_library.py +39 -0
  157. cumulusci_plus-5.0.0/cumulusci/robotframework/faker_mixin.py +89 -0
  158. cumulusci_plus-5.0.0/cumulusci/robotframework/form_handlers.py +222 -0
  159. cumulusci_plus-5.0.0/cumulusci/robotframework/javascript/cci_init.js +34 -0
  160. cumulusci_plus-5.0.0/cumulusci/robotframework/javascript/cumulusci.js +4 -0
  161. cumulusci_plus-5.0.0/cumulusci/robotframework/locator_manager.py +197 -0
  162. cumulusci_plus-5.0.0/cumulusci/robotframework/locators_56.py +88 -0
  163. cumulusci_plus-5.0.0/cumulusci/robotframework/locators_57.py +5 -0
  164. cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/BasePageObjects.py +433 -0
  165. cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +246 -0
  166. cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +45 -0
  167. cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/PageObjects.py +351 -0
  168. cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/__init__.py +12 -0
  169. cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/baseobjects.py +120 -0
  170. cumulusci_plus-5.0.0/cumulusci/robotframework/perftests/short/collection_perf.robot +105 -0
  171. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/CustomObjectTestPage.py +10 -0
  172. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/FooTestPage.py +8 -0
  173. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/base.robot +40 -0
  174. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +38 -0
  175. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/communities.robot +57 -0
  176. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/datagen.robot +84 -0
  177. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +24 -0
  178. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +20 -0
  179. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/TestListener.py +93 -0
  180. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/api.robot +178 -0
  181. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/browsers.robot +143 -0
  182. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/classic.robot +51 -0
  183. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/create_contact.robot +59 -0
  184. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/faker.robot +68 -0
  185. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/forms.robot +172 -0
  186. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/label_locator.robot +244 -0
  187. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/labels.html +33 -0
  188. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/locators.robot +149 -0
  189. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +100 -0
  190. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +25 -0
  191. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +115 -0
  192. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +74 -0
  193. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +171 -0
  194. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/performance.robot +109 -0
  195. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/javascript_keywords.robot +33 -0
  196. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/open_test_browser.robot +48 -0
  197. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +24 -0
  198. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/ui.robot +32 -0
  199. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/populate.robot +89 -0
  200. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/test_testlistener.py +37 -0
  201. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/ui.robot +361 -0
  202. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_cumulusci_library.py +304 -0
  203. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_locator_manager.py +158 -0
  204. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_pageobjects.py +291 -0
  205. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_performance.py +38 -0
  206. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_salesforce.py +79 -0
  207. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_salesforce_locators.py +73 -0
  208. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_template_util.py +53 -0
  209. cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_utils.py +106 -0
  210. cumulusci_plus-5.0.0/cumulusci/robotframework/utils.py +283 -0
  211. cumulusci_plus-5.0.0/cumulusci/salesforce_api/__init__.py +0 -0
  212. cumulusci_plus-5.0.0/cumulusci/salesforce_api/exceptions.py +23 -0
  213. cumulusci_plus-5.0.0/cumulusci/salesforce_api/filterable_objects.py +96 -0
  214. cumulusci_plus-5.0.0/cumulusci/salesforce_api/mc_soap_envelopes.py +89 -0
  215. cumulusci_plus-5.0.0/cumulusci/salesforce_api/metadata.py +721 -0
  216. cumulusci_plus-5.0.0/cumulusci/salesforce_api/org_schema.py +571 -0
  217. cumulusci_plus-5.0.0/cumulusci/salesforce_api/org_schema_models.py +226 -0
  218. cumulusci_plus-5.0.0/cumulusci/salesforce_api/package_install.py +265 -0
  219. cumulusci_plus-5.0.0/cumulusci/salesforce_api/package_zip.py +301 -0
  220. cumulusci_plus-5.0.0/cumulusci/salesforce_api/rest_deploy.py +148 -0
  221. cumulusci_plus-5.0.0/cumulusci/salesforce_api/retrieve_profile_api.py +301 -0
  222. cumulusci_plus-5.0.0/cumulusci/salesforce_api/soap_envelopes.py +177 -0
  223. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/__init__.py +0 -0
  224. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/metadata_test_strings.py +24 -0
  225. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_metadata.py +1015 -0
  226. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_package_install.py +219 -0
  227. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_package_zip.py +380 -0
  228. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_rest_deploy.py +264 -0
  229. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_retrieve_profile_api.py +337 -0
  230. cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_utils.py +124 -0
  231. cumulusci_plus-5.0.0/cumulusci/salesforce_api/utils.py +51 -0
  232. cumulusci_plus-5.0.0/cumulusci/schema/cumulusci.jsonschema.json +782 -0
  233. cumulusci_plus-5.0.0/cumulusci/tasks/__init__.py +0 -0
  234. cumulusci_plus-5.0.0/cumulusci/tasks/apex/__init__.py +0 -0
  235. cumulusci_plus-5.0.0/cumulusci/tasks/apex/anon.py +157 -0
  236. cumulusci_plus-5.0.0/cumulusci/tasks/apex/batch.py +180 -0
  237. cumulusci_plus-5.0.0/cumulusci/tasks/apex/testrunner.py +835 -0
  238. cumulusci_plus-5.0.0/cumulusci/tasks/apex/tests/cassettes/ManualEditTestApexIntegrationTests.test_run_tests__integration_test.yaml +703 -0
  239. cumulusci_plus-5.0.0/cumulusci/tasks/apex/tests/test_apex_tasks.py +1558 -0
  240. cumulusci_plus-5.0.0/cumulusci/tasks/base_source_control_task.py +17 -0
  241. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/__init__.py +15 -0
  242. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/base_generate_data_task.py +96 -0
  243. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/dates.py +97 -0
  244. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/delete.py +156 -0
  245. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract.py +441 -0
  246. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/calculate_dependencies.py +117 -0
  247. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +123 -0
  248. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/hardcoded_default_declarations.py +49 -0
  249. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +283 -0
  250. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +142 -0
  251. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_synthesize_extract_declarations.py +575 -0
  252. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/factory_utils.py +134 -0
  253. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate.py +4 -0
  254. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_and_load_data.py +232 -0
  255. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +19 -0
  256. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_from_yaml.py +183 -0
  257. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping.py +434 -0
  258. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/dependency_map.py +169 -0
  259. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/extract_mapping_file_generator.py +45 -0
  260. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/generate_mapping_from_declarations.py +121 -0
  261. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/load_mapping_file_generator.py +127 -0
  262. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_generator_post_processes.py +53 -0
  263. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_transforms.py +139 -0
  264. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_extract_mapping_from_declarations.py +135 -0
  265. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_load_mapping_from_declarations.py +330 -0
  266. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_generator_post_processes.py +60 -0
  267. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_transforms.py +188 -0
  268. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/load.py +1196 -0
  269. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/mapping_parser.py +811 -0
  270. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/query_transformers.py +264 -0
  271. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/select_utils.py +792 -0
  272. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery.py +753 -0
  273. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +478 -0
  274. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +141 -0
  275. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +53 -0
  276. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +64 -0
  277. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/step.py +1242 -0
  278. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  279. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_random_strategy.yaml +147 -0
  280. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_annoy_strategy.yaml +123 -0
  281. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_select_and_insert_strategy.yaml +313 -0
  282. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_select_and_insert_strategy_bulk.yaml +550 -0
  283. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_strategy.yaml +175 -0
  284. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_standard_strategy.yaml +147 -0
  285. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__multiple_needed.yaml +69 -0
  286. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__none_needed.yaml +22 -0
  287. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__one_needed.yaml +24 -0
  288. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_snowfakery_query_salesforce.yaml +25 -0
  289. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpdatesIntegrationTests.test_updates_task.yaml +80 -0
  290. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_simple_upsert__rest.yaml +270 -0
  291. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert__rest.yaml +267 -0
  292. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_external_id_field__rest.yaml +369 -0
  293. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_external_id_field_rest__duplicate_error.yaml +204 -0
  294. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml +675 -0
  295. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +36 -0
  296. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +49 -0
  297. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +87 -0
  298. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_after.yml +38 -0
  299. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_poly.yml +34 -0
  300. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_poly_incomplete.yml +20 -0
  301. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_poly_wrong.yml +21 -0
  302. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select.yml +20 -0
  303. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_strategy.yml +20 -0
  304. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__invalid_number.yml +21 -0
  305. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__invalid_strategy.yml +21 -0
  306. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__non_float.yml +21 -0
  307. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_missing_priority_fields.yml +22 -0
  308. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_no_priority_fields.yml +18 -0
  309. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +27 -0
  310. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +28 -0
  311. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +21 -0
  312. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +32 -0
  313. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +69 -0
  314. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +12 -0
  315. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/person_accounts.sql +33 -0
  316. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/person_accounts.yml +23 -0
  317. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +15 -0
  318. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes.sql +32 -0
  319. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes.yml +8 -0
  320. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_2.sql +19 -0
  321. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_2.yml +6 -0
  322. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_with_ispersontype.sql +33 -0
  323. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_with_ispersontype.yml +8 -0
  324. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +3 -0
  325. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +4 -0
  326. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +89 -0
  327. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +3 -0
  328. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +34 -0
  329. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +6 -0
  330. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +16 -0
  331. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +83 -0
  332. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +2 -0
  333. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +13 -0
  334. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +5 -0
  335. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +13 -0
  336. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +12 -0
  337. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +13 -0
  338. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +4 -0
  339. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +23 -0
  340. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +29 -0
  341. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +10 -0
  342. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +61 -0
  343. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_dates.py +99 -0
  344. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_delete.py +404 -0
  345. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_extract.py +1311 -0
  346. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +55 -0
  347. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +252 -0
  348. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +343 -0
  349. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +1039 -0
  350. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_load.py +3175 -0
  351. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +1658 -0
  352. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql +17 -0
  353. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +12 -0
  354. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups.sql +47 -0
  355. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups.yml +26 -0
  356. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups_select.yml +48 -0
  357. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_select.py +171 -0
  358. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_select_utils.py +1057 -0
  359. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +1153 -0
  360. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_step.py +3957 -0
  361. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_updates.py +513 -0
  362. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_upsert.py +1015 -0
  363. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_utils.py +158 -0
  364. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/testdata.db +0 -0
  365. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/testdata.sql +18 -0
  366. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/update_describe.py +50 -0
  367. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +23 -0
  368. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/utils.py +114 -0
  369. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/update_data.py +260 -0
  370. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/upsert_utils.py +130 -0
  371. cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/utils.py +249 -0
  372. cumulusci_plus-5.0.0/cumulusci/tasks/command.py +178 -0
  373. cumulusci_plus-5.0.0/cumulusci/tasks/connectedapp.py +186 -0
  374. cumulusci_plus-5.0.0/cumulusci/tasks/create_package_version.py +778 -0
  375. cumulusci_plus-5.0.0/cumulusci/tasks/datadictionary.py +745 -0
  376. cumulusci_plus-5.0.0/cumulusci/tasks/dx_convert_from.py +26 -0
  377. cumulusci_plus-5.0.0/cumulusci/tasks/github/__init__.py +17 -0
  378. cumulusci_plus-5.0.0/cumulusci/tasks/github/base.py +16 -0
  379. cumulusci_plus-5.0.0/cumulusci/tasks/github/commit_status.py +13 -0
  380. cumulusci_plus-5.0.0/cumulusci/tasks/github/merge.py +11 -0
  381. cumulusci_plus-5.0.0/cumulusci/tasks/github/publish.py +11 -0
  382. cumulusci_plus-5.0.0/cumulusci/tasks/github/pull_request.py +11 -0
  383. cumulusci_plus-5.0.0/cumulusci/tasks/github/release.py +11 -0
  384. cumulusci_plus-5.0.0/cumulusci/tasks/github/release_report.py +11 -0
  385. cumulusci_plus-5.0.0/cumulusci/tasks/github/tag.py +11 -0
  386. cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/__init__.py +0 -0
  387. cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/test_util.py +202 -0
  388. cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/test_vcs_migration.py +44 -0
  389. cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/util_github_api.py +666 -0
  390. cumulusci_plus-5.0.0/cumulusci/tasks/github/util.py +252 -0
  391. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  392. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/api.py +188 -0
  393. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/base.py +38 -0
  394. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/deploy.py +345 -0
  395. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/get_user_info.py +40 -0
  396. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/mc_constants.py +1 -0
  397. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  398. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/conftest.py +46 -0
  399. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +110 -0
  400. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test-mc-pkg.zip +0 -0
  401. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_api.py +97 -0
  402. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +145 -0
  403. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_base.py +14 -0
  404. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +400 -0
  405. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +141 -0
  406. cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/validation-response.json +39 -0
  407. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/__init__.py +0 -0
  408. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/ee_src.py +94 -0
  409. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/managed_src.py +100 -0
  410. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/metadata_map.yml +868 -0
  411. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/modify.py +99 -0
  412. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/package.py +684 -0
  413. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  414. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/.hidden/.keep +0 -0
  415. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +9 -0
  416. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +9 -0
  417. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package_install_uninstall.xml +11 -0
  418. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +3 -0
  419. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/sample_package.xml +9 -0
  420. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_ee_src.py +112 -0
  421. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_managed_src.py +111 -0
  422. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_modify.py +123 -0
  423. cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_package.py +476 -0
  424. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/__init__.py +29 -0
  425. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/base.py +436 -0
  426. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/duplicate_rules.py +24 -0
  427. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/field_sets.py +70 -0
  428. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/help_text.py +92 -0
  429. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/layouts.py +550 -0
  430. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/objects.py +68 -0
  431. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/permissions.py +167 -0
  432. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/picklists.py +221 -0
  433. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/remote_site_settings.py +99 -0
  434. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/sharing.py +138 -0
  435. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_base.py +512 -0
  436. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +22 -0
  437. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +156 -0
  438. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_help_text.py +387 -0
  439. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +85 -0
  440. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_layouts.py +858 -0
  441. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_objects.py +236 -0
  442. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_permissions.py +223 -0
  443. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_picklists.py +547 -0
  444. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_remote_site_settings.py +46 -0
  445. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_sharing.py +333 -0
  446. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +298 -0
  447. cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/value_sets.py +106 -0
  448. cumulusci_plus-5.0.0/cumulusci/tasks/metadeploy.py +393 -0
  449. cumulusci_plus-5.0.0/cumulusci/tasks/metaxml.py +88 -0
  450. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/__init__.py +0 -0
  451. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/dataset_load.py +49 -0
  452. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/licenses.py +86 -0
  453. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/packages.py +14 -0
  454. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/permsets.py +23 -0
  455. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/recordtypes.py +16 -0
  456. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/retrieve_tasks.py +30 -0
  457. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/settings.py +77 -0
  458. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/sobjects.py +202 -0
  459. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_dataset_load.py +85 -0
  460. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_licenses.py +174 -0
  461. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_packages.py +14 -0
  462. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_permset_preflights.py +51 -0
  463. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_recordtypes.py +30 -0
  464. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_retrieve_tasks.py +62 -0
  465. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_settings.py +130 -0
  466. cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_sobjects.py +231 -0
  467. cumulusci_plus-5.0.0/cumulusci/tasks/push/README.md +59 -0
  468. cumulusci_plus-5.0.0/cumulusci/tasks/push/__init__.py +0 -0
  469. cumulusci_plus-5.0.0/cumulusci/tasks/push/push_api.py +659 -0
  470. cumulusci_plus-5.0.0/cumulusci/tasks/push/pushfails.py +136 -0
  471. cumulusci_plus-5.0.0/cumulusci/tasks/push/tasks.py +476 -0
  472. cumulusci_plus-5.0.0/cumulusci/tasks/push/tests/conftest.py +263 -0
  473. cumulusci_plus-5.0.0/cumulusci/tasks/push/tests/test_push_api.py +951 -0
  474. cumulusci_plus-5.0.0/cumulusci/tasks/push/tests/test_push_tasks.py +659 -0
  475. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/README.md +63 -0
  476. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/__init__.py +0 -0
  477. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/exceptions.py +5 -0
  478. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/generator.py +137 -0
  479. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/parser.py +232 -0
  480. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/provider.py +44 -0
  481. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/task.py +300 -0
  482. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  483. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +17 -0
  484. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +1 -0
  485. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +1 -0
  486. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +1 -0
  487. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +1 -0
  488. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_generator.py +582 -0
  489. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_parser.py +867 -0
  490. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_provider.py +512 -0
  491. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_task.py +461 -0
  492. cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/utils.py +153 -0
  493. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/__init__.py +3 -0
  494. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/DebugListener.py +100 -0
  495. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/__init__.py +10 -0
  496. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/model.py +87 -0
  497. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/ui.py +259 -0
  498. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/libdoc.py +269 -0
  499. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/robotframework.py +392 -0
  500. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/stylesheet.css +130 -0
  501. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/template.html +109 -0
  502. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/TestLibrary.py +18 -0
  503. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/TestPageObjects.py +31 -0
  504. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/TestResource.robot +8 -0
  505. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/failing_tests.robot +16 -0
  506. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/performance.robot +23 -0
  507. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_browser_proxies.py +137 -0
  508. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_debugger.py +360 -0
  509. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +141 -0
  510. cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_robotframework.py +860 -0
  511. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +58 -0
  512. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +45 -0
  513. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +18 -0
  514. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseSalesforceTask.py +4 -0
  515. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +41 -0
  516. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/CreateCommunity.py +124 -0
  517. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/CreatePackage.py +29 -0
  518. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/Deploy.py +240 -0
  519. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/DeployBundles.py +88 -0
  520. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/DescribeMetadataTypes.py +26 -0
  521. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/EnsureRecordTypes.py +202 -0
  522. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/GetInstalledPackages.py +8 -0
  523. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/ListCommunities.py +40 -0
  524. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/ListCommunityTemplates.py +19 -0
  525. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/PublishCommunity.py +62 -0
  526. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/RetrievePackaged.py +41 -0
  527. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +82 -0
  528. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +36 -0
  529. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/SOQLQuery.py +39 -0
  530. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallLocal.py +15 -0
  531. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallLocalBundles.py +28 -0
  532. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +58 -0
  533. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallPackage.py +32 -0
  534. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallPackaged.py +56 -0
  535. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UpdateAdminProfile.py +8 -0
  536. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/__init__.py +79 -0
  537. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/activate_flow.py +74 -0
  538. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/check_components.py +324 -0
  539. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/composite.py +142 -0
  540. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/create_permission_sets.py +35 -0
  541. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/custom_settings.py +134 -0
  542. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/custom_settings_wait.py +132 -0
  543. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/enable_prediction.py +107 -0
  544. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/insert_record.py +40 -0
  545. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/install_package_version.py +242 -0
  546. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/license_preflights.py +8 -0
  547. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/network_member_group.py +178 -0
  548. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/nonsourcetracking.py +228 -0
  549. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/org_settings.py +193 -0
  550. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/package_upload.py +328 -0
  551. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/profiles.py +74 -0
  552. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/promote_package_version.py +376 -0
  553. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/retrieve_profile.py +195 -0
  554. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/salesforce_files.py +244 -0
  555. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/sourcetracking.py +507 -0
  556. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/__init__.py +3 -0
  557. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +278 -0
  558. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +22 -0
  559. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_Deploy.py +470 -0
  560. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +76 -0
  561. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +345 -0
  562. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +84 -0
  563. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +49 -0
  564. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +547 -0
  565. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +699 -0
  566. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +181 -0
  567. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +24 -0
  568. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +56 -0
  569. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +21 -0
  570. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +30 -0
  571. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +15 -0
  572. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +19 -0
  573. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +22 -0
  574. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +19 -0
  575. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +66 -0
  576. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +127 -0
  577. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_activate_flow.py +132 -0
  578. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_base_tasks.py +110 -0
  579. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_check_components.py +445 -0
  580. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_composite.py +250 -0
  581. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +41 -0
  582. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_custom_settings.py +227 -0
  583. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +174 -0
  584. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_describemetadatatypes.py +18 -0
  585. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +240 -0
  586. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_insert_record.py +110 -0
  587. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_install_package_version.py +464 -0
  588. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_network_member_group.py +444 -0
  589. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_nonsourcetracking.py +235 -0
  590. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_org_settings.py +407 -0
  591. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_profiles.py +202 -0
  592. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_retrieve_profile.py +287 -0
  593. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_salesforce_files.py +228 -0
  594. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +350 -0
  595. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +300 -0
  596. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +509 -0
  597. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/util.py +79 -0
  598. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/trigger_handlers.py +119 -0
  599. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +136 -0
  600. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/update_dependencies.py +290 -0
  601. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/update_profile.py +339 -0
  602. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/permsets.py +227 -0
  603. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/photos.py +162 -0
  604. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +1 -0
  605. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/tests/test_permsets.py +950 -0
  606. cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/tests/test_photos.py +373 -0
  607. cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/capture_sample_data.py +77 -0
  608. cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/load_sample_data.py +85 -0
  609. cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/test_capture_sample_data.py +117 -0
  610. cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/test_load_sample_data.py +121 -0
  611. cumulusci_plus-5.0.0/cumulusci/tasks/sfdx.py +83 -0
  612. cumulusci_plus-5.0.0/cumulusci/tasks/tests/__init__.py +1 -0
  613. cumulusci_plus-5.0.0/cumulusci/tasks/tests/conftest.py +30 -0
  614. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_command.py +129 -0
  615. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_connectedapp.py +236 -0
  616. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_create_package_version.py +847 -0
  617. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_datadictionary.py +1575 -0
  618. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_dx_convert_from.py +60 -0
  619. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_metadeploy.py +624 -0
  620. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_metaxml.py +99 -0
  621. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_promote_package_version.py +488 -0
  622. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_pushfails.py +96 -0
  623. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_salesforce.py +72 -0
  624. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_sfdx.py +105 -0
  625. cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_util.py +207 -0
  626. cumulusci_plus-5.0.0/cumulusci/tasks/util.py +261 -0
  627. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/__init__.py +19 -0
  628. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/commit_status.py +58 -0
  629. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/create_commit_status.py +37 -0
  630. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/download_extract.py +199 -0
  631. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/merge.py +298 -0
  632. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/publish.py +207 -0
  633. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/pull_request.py +9 -0
  634. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/release.py +134 -0
  635. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/release_report.py +105 -0
  636. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tag.py +31 -0
  637. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_commit_status.py +196 -0
  638. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_download_extract.py +896 -0
  639. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_merge.py +1118 -0
  640. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_publish.py +823 -0
  641. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_pull_request.py +29 -0
  642. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_release.py +390 -0
  643. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_release_report.py +109 -0
  644. cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_tag.py +90 -0
  645. cumulusci_plus-5.0.0/cumulusci/tasks/vlocity/exceptions.py +2 -0
  646. cumulusci_plus-5.0.0/cumulusci/tasks/vlocity/tests/test_vlocity.py +283 -0
  647. cumulusci_plus-5.0.0/cumulusci/tasks/vlocity/vlocity.py +342 -0
  648. cumulusci_plus-5.0.0/cumulusci/tests/__init__.py +1 -0
  649. cumulusci_plus-5.0.0/cumulusci/tests/cassettes/GET_sobjects_Account_PersonAccount_describe.yaml +18 -0
  650. cumulusci_plus-5.0.0/cumulusci/tests/cassettes/TestIntegrationInfrastructure.test_integration_tests.yaml +19 -0
  651. cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +307 -0
  652. cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +275 -0
  653. cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +160 -0
  654. cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_typeguard.py +5 -0
  655. cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +49 -0
  656. cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +97 -0
  657. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Account_describe.yaml +18 -0
  658. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Case_describe.yaml +18 -0
  659. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Contact_describe.yaml +4838 -0
  660. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Custom__c_describe.yaml +242 -0
  661. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Event_describe.yaml +19 -0
  662. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Global_describe.yaml +1338 -0
  663. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Lead_describe.yaml +18 -0
  664. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_OpportunityContactRole_describe.yaml +34 -0
  665. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Opportunity_describe.yaml +1261 -0
  666. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Organization.yaml +49 -0
  667. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/batchInfoList_xml.tpl +15 -0
  668. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/batchInfo_xml.tpl +13 -0
  669. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/jobInfo_insert_xml.tpl +24 -0
  670. cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/jobInfo_upsert_xml.tpl +25 -0
  671. cumulusci_plus-5.0.0/cumulusci/tests/test_entry_points.py +20 -0
  672. cumulusci_plus-5.0.0/cumulusci/tests/test_integration_infrastructure.py +131 -0
  673. cumulusci_plus-5.0.0/cumulusci/tests/test_main.py +9 -0
  674. cumulusci_plus-5.0.0/cumulusci/tests/test_schema.py +32 -0
  675. cumulusci_plus-5.0.0/cumulusci/tests/test_utils.py +657 -0
  676. cumulusci_plus-5.0.0/cumulusci/tests/test_vcr_serializer.py +134 -0
  677. cumulusci_plus-5.0.0/cumulusci/tests/uncompressed_cassette.yaml +83 -0
  678. cumulusci_plus-5.0.0/cumulusci/tests/util.py +344 -0
  679. cumulusci_plus-5.0.0/cumulusci/utils/__init__.py +731 -0
  680. cumulusci_plus-5.0.0/cumulusci/utils/classutils.py +9 -0
  681. cumulusci_plus-5.0.0/cumulusci/utils/collections.py +32 -0
  682. cumulusci_plus-5.0.0/cumulusci/utils/deprecation.py +11 -0
  683. cumulusci_plus-5.0.0/cumulusci/utils/encryption.py +31 -0
  684. cumulusci_plus-5.0.0/cumulusci/utils/fileutils.py +295 -0
  685. cumulusci_plus-5.0.0/cumulusci/utils/git.py +142 -0
  686. cumulusci_plus-5.0.0/cumulusci/utils/http/multi_request.py +214 -0
  687. cumulusci_plus-5.0.0/cumulusci/utils/http/requests_utils.py +103 -0
  688. cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/ManualEditTestCompositeParallelSalesforce.test_http_headers.yaml +32 -0
  689. cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_composite_parallel_salesforce.yaml +65 -0
  690. cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_errors.yaml +24 -0
  691. cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_reference_ids.yaml +49 -0
  692. cumulusci_plus-5.0.0/cumulusci/utils/http/tests/test_multi_request.py +255 -0
  693. cumulusci_plus-5.0.0/cumulusci/utils/iterators.py +21 -0
  694. cumulusci_plus-5.0.0/cumulusci/utils/logging.py +128 -0
  695. cumulusci_plus-5.0.0/cumulusci/utils/metaprogramming.py +10 -0
  696. cumulusci_plus-5.0.0/cumulusci/utils/options.py +138 -0
  697. cumulusci_plus-5.0.0/cumulusci/utils/parallel/queries_in_parallel/run_queries_in_parallel.py +29 -0
  698. cumulusci_plus-5.0.0/cumulusci/utils/parallel/queries_in_parallel/tests/test_run_queries_in_parallel.py +50 -0
  699. cumulusci_plus-5.0.0/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +238 -0
  700. cumulusci_plus-5.0.0/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +243 -0
  701. cumulusci_plus-5.0.0/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +353 -0
  702. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/count_sobjects.py +46 -0
  703. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/soql.py +17 -0
  704. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/cassettes/ManualEdit_TestCountSObjects.test_count_sobjects__network_errors.yaml +23 -0
  705. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/cassettes/TestCountSObjects.test_count_sobjects__errors.yaml +33 -0
  706. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/cassettes/TestCountSObjects.test_count_sobjects_simple.yaml +29 -0
  707. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/test_count_sobjects.py +29 -0
  708. cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/test_soql.py +30 -0
  709. cumulusci_plus-5.0.0/cumulusci/utils/tests/cassettes/ManualEditTestDescribeOrg.test_minimal_schema.yaml +36 -0
  710. cumulusci_plus-5.0.0/cumulusci/utils/tests/cassettes/ManualEdit_test_describe_to_sql.yaml +191 -0
  711. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_fileutils.py +284 -0
  712. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_git.py +85 -0
  713. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_logging.py +70 -0
  714. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_option_parsing.py +188 -0
  715. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_org_schema.py +691 -0
  716. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_org_schema_models.py +79 -0
  717. cumulusci_plus-5.0.0/cumulusci/utils/tests/test_waiting.py +25 -0
  718. cumulusci_plus-5.0.0/cumulusci/utils/version_strings.py +391 -0
  719. cumulusci_plus-5.0.0/cumulusci/utils/waiting.py +42 -0
  720. cumulusci_plus-5.0.0/cumulusci/utils/xml/__init__.py +91 -0
  721. cumulusci_plus-5.0.0/cumulusci/utils/xml/metadata_tree.py +299 -0
  722. cumulusci_plus-5.0.0/cumulusci/utils/xml/robot_xml.py +114 -0
  723. cumulusci_plus-5.0.0/cumulusci/utils/xml/salesforce_encoding.py +100 -0
  724. cumulusci_plus-5.0.0/cumulusci/utils/xml/test/test_metadata_tree.py +251 -0
  725. cumulusci_plus-5.0.0/cumulusci/utils/xml/test/test_salesforce_encoding.py +173 -0
  726. cumulusci_plus-5.0.0/cumulusci/utils/yaml/cumulusci_yml.py +401 -0
  727. cumulusci_plus-5.0.0/cumulusci/utils/yaml/model_parser.py +156 -0
  728. cumulusci_plus-5.0.0/cumulusci/utils/yaml/safer_loader.py +74 -0
  729. cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/bad_cci.yml +5 -0
  730. cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/cassettes/TestCumulusciYml.test_validate_url__with_errors.yaml +20 -0
  731. cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +286 -0
  732. cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/test_model_parser.py +175 -0
  733. cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/test_safer_loader.py +88 -0
  734. cumulusci_plus-5.0.0/cumulusci/utils/ziputils.py +61 -0
  735. cumulusci_plus-5.0.0/cumulusci/vcs/base.py +143 -0
  736. cumulusci_plus-5.0.0/cumulusci/vcs/bootstrap.py +272 -0
  737. cumulusci_plus-5.0.0/cumulusci/vcs/github/__init__.py +24 -0
  738. cumulusci_plus-5.0.0/cumulusci/vcs/github/adapter.py +689 -0
  739. cumulusci_plus-5.0.0/cumulusci/vcs/github/release_notes/generator.py +219 -0
  740. cumulusci_plus-5.0.0/cumulusci/vcs/github/release_notes/parser.py +151 -0
  741. cumulusci_plus-5.0.0/cumulusci/vcs/github/release_notes/provider.py +143 -0
  742. cumulusci_plus-5.0.0/cumulusci/vcs/github/service.py +569 -0
  743. cumulusci_plus-5.0.0/cumulusci/vcs/github/tests/test_adapter.py +138 -0
  744. cumulusci_plus-5.0.0/cumulusci/vcs/github/tests/test_service.py +408 -0
  745. cumulusci_plus-5.0.0/cumulusci/vcs/models.py +586 -0
  746. cumulusci_plus-5.0.0/cumulusci/vcs/tests/conftest.py +41 -0
  747. cumulusci_plus-5.0.0/cumulusci/vcs/tests/dummy_service.py +241 -0
  748. cumulusci_plus-5.0.0/cumulusci/vcs/tests/test_vcs_base.py +687 -0
  749. cumulusci_plus-5.0.0/cumulusci/vcs/tests/test_vcs_bootstrap.py +727 -0
  750. cumulusci_plus-5.0.0/cumulusci/vcs/utils/__init__.py +31 -0
  751. cumulusci_plus-5.0.0/cumulusci/vcs/vcs_source.py +287 -0
  752. cumulusci_plus-5.0.0/docs/adrs/README.md +47 -0
  753. cumulusci_plus-5.0.0/docs/diagram/README.md +8 -0
  754. cumulusci_plus-5.0.0/docs/history.md +6126 -0
  755. cumulusci_plus-5.0.0/pyproject.toml +308 -0
  756. cumulusci_plus-5.0.0/robot/CumulusCI/javascript/README.md +2 -0
@@ -0,0 +1,83 @@
1
+ # OS cruft
2
+ .DS_Store
3
+
4
+ # CumulusCI config and output
5
+ .cci
6
+ docs/api/
7
+ docs/_build/
8
+ github_release_notes.html
9
+ tmp
10
+
11
+ # Distribution / packaging
12
+ *.egg
13
+ *.egg-info/
14
+ .Python
15
+ .installed.cfg
16
+ develop-eggs/
17
+ dist/
18
+ eggs/
19
+ env/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ pip-wheel-metadata
24
+ sdist/
25
+ var/
26
+
27
+ # Miscellaneous Python cruft
28
+ .pdbrc
29
+ .pdbrc.py
30
+ .python-version
31
+ venv/
32
+
33
+ # Byte-compiled / optimized / DLL files
34
+ __pycache__/
35
+ *.py[cod]
36
+ *.pkl
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ .cache/
44
+ .coverage
45
+ .coverage.*
46
+ .mypy_cache/
47
+ .pytest_cache/
48
+ .tox/
49
+ cov.xml
50
+ htmlcov/
51
+ large_cassettes/
52
+ .noseids
53
+ nosetests.xml
54
+ pytestdebug.log
55
+ results_junit.xml
56
+ test_results.json
57
+ log.html
58
+ report.html
59
+ output.xml
60
+
61
+ # Robot
62
+ *.webm
63
+ .pabotsuitenames
64
+ geckodriver*.log
65
+ pabot_results/
66
+ playwright-log.txt
67
+ robot/CumulusCI/results/
68
+
69
+ # Salesforce
70
+ **/.sfdx
71
+ .sf
72
+
73
+ # direnv
74
+ .direnv
75
+ .envrc
76
+
77
+ # Editors
78
+ *~
79
+ .*.swp
80
+ .*.swo
81
+ .vscode/
82
+ .idea/
83
+ tags
@@ -0,0 +1,41 @@
1
+ =======
2
+ Credits
3
+ =======
4
+
5
+ Development Team
6
+ ----------------
7
+
8
+ CumulusCI is developed by the Salesforce.org Release Engineering team:
9
+
10
+ * Jason Lantz
11
+ * David Glick
12
+ * James Estevez
13
+ * Paul Prescod
14
+ * Bryan Oakley
15
+ * David Reed
16
+ * Brandon Parker
17
+ * Josh Kofsky
18
+ * Marcel Pufal
19
+ * David Ray
20
+
21
+ Developers Emeritus
22
+ -------------------
23
+
24
+ * Chris Polcyn
25
+ * Christian Carter
26
+
27
+ Contributors
28
+ ------------
29
+
30
+ Thanks to the many community and Salesforce.org staff
31
+ contributors!
32
+
33
+ For example:
34
+
35
+ (add your name here, when you contribute through a Pull Request!)
36
+
37
+ * Ed Rivas (jerivas)
38
+ * Gustavo Tandeciarz (dcinzona)
39
+ * Chandler Anderson (zenibako)
40
+ * Ben French (BenjaminFrench)
41
+ * Rupert Barrow (rupertbarrow)
@@ -0,0 +1,30 @@
1
+ Copyright (c) 2021, Salesforce.com, Inc.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5
+
6
+ * Redistributions of source code must retain the
7
+ above copyright notice, this list of conditions
8
+ and the following disclaimer.
9
+
10
+ * Redistributions in binary form must reproduce
11
+ the above copyright notice, this list of conditions
12
+ and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ * Neither the name of Salesforce.com nor the names
16
+ of its contributors may be used to endorse or promote
17
+ products derived from this software without specific
18
+ prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
24
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
25
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26
+ OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
29
+ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.4
2
+ Name: cumulusci-plus
3
+ Version: 5.0.0
4
+ Summary: Build and release tools for Salesforce developers
5
+ Project-URL: Homepage, https://github.com/SFDO-Tooling/CumulusCI
6
+ Project-URL: Changelog, https://cumulusci.readthedocs.io/en/stable/history.html
7
+ Project-URL: Bug Tracker, https://github.com/SFDO-Tooling/CumulusCI/issues
8
+ Author-email: "Salesforce.org" <sfdo-mrbelvedere@salesforce.com>
9
+ License: BSD 3-Clause License
10
+ License-File: AUTHORS.rst
11
+ License-File: LICENSE
12
+ Keywords: cumulusci,salesforce
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: BSD License
16
+ Classifier: Natural Language :: English
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: click>=8.1
23
+ Requires-Dist: cryptography
24
+ Requires-Dist: defusedxml
25
+ Requires-Dist: docutils>=0.21.2
26
+ Requires-Dist: faker
27
+ Requires-Dist: fs
28
+ Requires-Dist: github3-py
29
+ Requires-Dist: jinja2
30
+ Requires-Dist: keyring<=23.0.1
31
+ Requires-Dist: lxml
32
+ Requires-Dist: markupsafe
33
+ Requires-Dist: packaging>=23.0
34
+ Requires-Dist: psutil
35
+ Requires-Dist: pydantic<2
36
+ Requires-Dist: pyjwt
37
+ Requires-Dist: python-dateutil
38
+ Requires-Dist: pytz
39
+ Requires-Dist: pyyaml
40
+ Requires-Dist: requests
41
+ Requires-Dist: requests-futures
42
+ Requires-Dist: rich>=13.9.4
43
+ Requires-Dist: robotframework
44
+ Requires-Dist: robotframework-pabot
45
+ Requires-Dist: robotframework-requests
46
+ Requires-Dist: robotframework-seleniumlibrary<6
47
+ Requires-Dist: rst2ansi>=0.1.5
48
+ Requires-Dist: salesforce-bulk
49
+ Requires-Dist: sarge
50
+ Requires-Dist: selenium<4
51
+ Requires-Dist: simple-salesforce==1.11.4
52
+ Requires-Dist: snowfakery>=4.0.0
53
+ Requires-Dist: sqlalchemy<2
54
+ Requires-Dist: xmltodict
55
+ Provides-Extra: select
56
+ Requires-Dist: annoy; extra == 'select'
57
+ Requires-Dist: numpy; extra == 'select'
58
+ Requires-Dist: pandas; extra == 'select'
59
+ Requires-Dist: scikit-learn; extra == 'select'
60
+ Description-Content-Type: text/markdown
61
+
62
+ # CumulusCI
63
+
64
+ [![Code Coverage](https://coveralls.io/repos/github/SFDO-Tooling/CumulusCI/badge.svg?branch=main)](https://coveralls.io/github/SFDO-Tooling/CumulusCI?branch=main)
65
+ [![PyPI](https://img.shields.io/pypi/v/cumulusci)](https://pypi.org/project/cumulusci/)
66
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cumulusci)
67
+ ![PyPI - License](https://img.shields.io/pypi/l/cumulusci)
68
+ [![Documentation Status](https://readthedocs.org/projects/cumulusci/badge/?version=latest)](https://cumulusci.readthedocs.io/en/latest/?badge=latest)
69
+
70
+ CumulusCI helps build great applications on the Salesforce platform by
71
+ automating org setup, testing, and deployment for everyone --- from
72
+ developers and admins to testers and product managers.
73
+
74
+ **Best practices, proven at scale.** CumulusCI provides a complete
75
+ development and release process created by Salesforce.org to build and
76
+ release applications to thousands of users on the Salesforce platform.
77
+ It\'s easy to start new projects with a standard set of tasks (single
78
+ actions) and flows (sequences of tasks), or customize by adding your
79
+ own.
80
+
81
+ **Batteries included.** Out-of-the-box features help you quickly:
82
+
83
+ - Build sophisticated orgs with automatic installation of
84
+ dependencies.
85
+ - Load and capture sample datasets to make your orgs feel real.
86
+ - Apply transformations to existing metadata to tailor orgs to your
87
+ specific requirements.
88
+ - Run builds in continuous integration systems.
89
+ - Create end-to-end browser tests and setup automation using [Robot
90
+ Framework](https://cumulusci.readthedocs.io/en/latest/robotframework.html).
91
+ - Generate synthetic data on any scale, from a single record to a
92
+ million, using
93
+ [Snowfakery](https://cumulusci.readthedocs.io/en/latest/cookbook.html#large-volume-data-synthesis-with-snowfakery).
94
+
95
+ **Build anywhere.** Automation defined using CumulusCI is portable. It
96
+ is stored in a source repository and can be run from your local command
97
+ line, from a continuous integration system, or from a customer-facing
98
+ MetaDeploy installer. CumulusCI can run automation on scratch orgs
99
+ created using the Salesforce CLI, or on persistent orgs like sandboxes,
100
+ production orgs, and Developer Edition orgs.
101
+
102
+ ## Learn more
103
+
104
+ For a tutorial introduction to CumulusCI, complete the [Build
105
+ Applications with
106
+ CumulusCI](https://trailhead.salesforce.com/en/content/learn/trails/build-applications-with-cumulusci)
107
+ trail on Trailhead.
108
+
109
+ To go in depth, read the [full
110
+ documentation](https://cumulusci.readthedocs.io/en/latest/).
111
+
112
+ If you just want a quick intro, watch [these screencast
113
+ demos](https://cumulusci.readthedocs.io/en/latest/demos.html) of using
114
+ CumulusCI to configure a Salesforce project from a GitHub repository.
115
+
116
+ For a live demo with voiceover, please see Jason Lantz\'s [PyCon 2020
117
+ presentation](https://www.youtube.com/watch?v=XL77lRTVF3g) from minute
118
+ 36 through minute 54.
119
+
120
+ ## Questions?
121
+
122
+ Ask in the [CumulusCI (CCI) group in the Trailblazer
123
+ Community](https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU).
124
+
125
+ _Please note:_ CumulusCI is distributed under an [open source
126
+ license](https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE)
127
+ and is not covered by the Salesforce Master Subscription Agreement.
128
+
129
+ <!-- Changelog -->
130
+ ## v4.4.0 (2025-05-05)
131
+
132
+ <!-- Release notes generated using configuration in .github/release.yml at main -->
133
+
134
+ ## What's Changed
135
+
136
+ ### Changes
137
+
138
+ - Add new tasks get_assignable_permission_sets and get_assignable_licenses by [@vsbharath](https://github.com/vsbharath) in [#3892](https://github.com/SFDO-Tooling/CumulusCI/pull/3892)
139
+
140
+ ### Issues Fixed
141
+
142
+ - fix: Make get permset licenses return active only by [@jstvz](https://github.com/jstvz) in [#3888](https://github.com/SFDO-Tooling/CumulusCI/pull/3888)
143
+ - fix: Read the docs configuration by LaTeX into PDF by [@dcinzona](https://github.com/dcinzona) in [#3891](https://github.com/SFDO-Tooling/CumulusCI/pull/3891)
144
+
145
+ **Full Changelog**: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.3.0.dev0...v4.4.0
@@ -0,0 +1,68 @@
1
+ # CumulusCI
2
+
3
+ [![Code Coverage](https://coveralls.io/repos/github/SFDO-Tooling/CumulusCI/badge.svg?branch=main)](https://coveralls.io/github/SFDO-Tooling/CumulusCI?branch=main)
4
+ [![PyPI](https://img.shields.io/pypi/v/cumulusci)](https://pypi.org/project/cumulusci/)
5
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cumulusci)
6
+ ![PyPI - License](https://img.shields.io/pypi/l/cumulusci)
7
+ [![Documentation Status](https://readthedocs.org/projects/cumulusci/badge/?version=latest)](https://cumulusci.readthedocs.io/en/latest/?badge=latest)
8
+
9
+ CumulusCI helps build great applications on the Salesforce platform by
10
+ automating org setup, testing, and deployment for everyone --- from
11
+ developers and admins to testers and product managers.
12
+
13
+ **Best practices, proven at scale.** CumulusCI provides a complete
14
+ development and release process created by Salesforce.org to build and
15
+ release applications to thousands of users on the Salesforce platform.
16
+ It\'s easy to start new projects with a standard set of tasks (single
17
+ actions) and flows (sequences of tasks), or customize by adding your
18
+ own.
19
+
20
+ **Batteries included.** Out-of-the-box features help you quickly:
21
+
22
+ - Build sophisticated orgs with automatic installation of
23
+ dependencies.
24
+ - Load and capture sample datasets to make your orgs feel real.
25
+ - Apply transformations to existing metadata to tailor orgs to your
26
+ specific requirements.
27
+ - Run builds in continuous integration systems.
28
+ - Create end-to-end browser tests and setup automation using [Robot
29
+ Framework](https://cumulusci.readthedocs.io/en/latest/robotframework.html).
30
+ - Generate synthetic data on any scale, from a single record to a
31
+ million, using
32
+ [Snowfakery](https://cumulusci.readthedocs.io/en/latest/cookbook.html#large-volume-data-synthesis-with-snowfakery).
33
+
34
+ **Build anywhere.** Automation defined using CumulusCI is portable. It
35
+ is stored in a source repository and can be run from your local command
36
+ line, from a continuous integration system, or from a customer-facing
37
+ MetaDeploy installer. CumulusCI can run automation on scratch orgs
38
+ created using the Salesforce CLI, or on persistent orgs like sandboxes,
39
+ production orgs, and Developer Edition orgs.
40
+
41
+ ## Learn more
42
+
43
+ For a tutorial introduction to CumulusCI, complete the [Build
44
+ Applications with
45
+ CumulusCI](https://trailhead.salesforce.com/en/content/learn/trails/build-applications-with-cumulusci)
46
+ trail on Trailhead.
47
+
48
+ To go in depth, read the [full
49
+ documentation](https://cumulusci.readthedocs.io/en/latest/).
50
+
51
+ If you just want a quick intro, watch [these screencast
52
+ demos](https://cumulusci.readthedocs.io/en/latest/demos.html) of using
53
+ CumulusCI to configure a Salesforce project from a GitHub repository.
54
+
55
+ For a live demo with voiceover, please see Jason Lantz\'s [PyCon 2020
56
+ presentation](https://www.youtube.com/watch?v=XL77lRTVF3g) from minute
57
+ 36 through minute 54.
58
+
59
+ ## Questions?
60
+
61
+ Ask in the [CumulusCI (CCI) group in the Trailblazer
62
+ Community](https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU).
63
+
64
+ _Please note:_ CumulusCI is distributed under an [open source
65
+ license](https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE)
66
+ and is not covered by the Salesforce Master Subscription Agreement.
67
+
68
+ <!-- Changelog -->
@@ -0,0 +1 @@
1
+ __version__ = "5.0.0"
@@ -0,0 +1,22 @@
1
+ import os
2
+ import sys
3
+ import warnings
4
+ from importlib.metadata import PackageNotFoundError, version
5
+
6
+ # Suppress pkg_resources deprecation warnings from dependencies
7
+ warnings.filterwarnings("ignore", message=".*pkg_resources.*", category=UserWarning)
8
+
9
+ from simple_salesforce import api, bulk
10
+
11
+ __location__ = os.path.dirname(os.path.realpath(__file__))
12
+
13
+ try:
14
+ __version__ = version("cumulusci")
15
+ except PackageNotFoundError:
16
+ __version__ = "unknown"
17
+
18
+ if sys.version_info < (3, 8): # pragma: no cover
19
+ raise Exception("CumulusCI requires Python 3.8+.")
20
+
21
+ api.OrderedDict = dict
22
+ bulk.OrderedDict = dict
@@ -0,0 +1,3 @@
1
+ from cumulusci.cli.cci import main
2
+
3
+ main()
File without changes
@@ -0,0 +1,244 @@
1
+ import code
2
+ import contextlib
3
+ import pdb
4
+ import runpy
5
+ import sys
6
+ import traceback
7
+
8
+ import click
9
+ import requests
10
+ import rich
11
+ from rich.console import Console
12
+ from rich.markup import escape
13
+
14
+ import cumulusci
15
+ from cumulusci.core.debug import set_debug_mode
16
+ from cumulusci.core.exceptions import CumulusCIUsageError
17
+ from cumulusci.utils import get_cci_upgrade_command
18
+ from cumulusci.utils.http.requests_utils import init_requests_trust
19
+ from cumulusci.utils.logging import tee_stdout_stderr
20
+
21
+ from .error import error
22
+ from .flow import flow
23
+ from .logger import get_tempfile_logger, init_logger
24
+ from .org import org
25
+ from .plan import plan
26
+ from .project import project
27
+ from .robot import robot
28
+ from .runtime import CliRuntime, pass_runtime
29
+ from .service import service
30
+ from .task import task
31
+ from .utils import (
32
+ check_latest_version,
33
+ get_installed_version,
34
+ get_latest_final_version,
35
+ warn_if_no_long_paths,
36
+ )
37
+
38
+ SUGGEST_ERROR_COMMAND = (
39
+ """Run this command for more information about debugging errors: cci error --help"""
40
+ )
41
+
42
+ USAGE_ERRORS = (CumulusCIUsageError, click.UsageError)
43
+
44
+
45
+ #
46
+ # Root command
47
+ #
48
+ def main(args=None):
49
+ """Main CumulusCI CLI entry point.
50
+
51
+ This runs as the first step in processing any CLI command.
52
+
53
+ This wraps the `click` library in order to do some initialization and centralized error handling.
54
+ """
55
+ with contextlib.ExitStack() as stack:
56
+ args = args or sys.argv
57
+
58
+ # (If enabled) set up requests to validate certs using system CA certs instead of certifi
59
+ init_requests_trust()
60
+
61
+ # Check for updates _unless_ we've been asked to output JSON,
62
+ # or if we're going to check anyway as part of the `version` command.
63
+ is_version_command = len(args) > 1 and args[1] == "version"
64
+ if "--json" not in args and not is_version_command:
65
+ check_latest_version()
66
+
67
+ # Only create logfiles for commands that are not `cci error`
68
+ is_error_command = len(args) > 2 and args[1] == "error"
69
+ tempfile_path = None
70
+ if not is_error_command:
71
+ logger, tempfile_path = get_tempfile_logger()
72
+ stack.enter_context(tee_stdout_stderr(args, logger, tempfile_path))
73
+
74
+ debug = "--debug" in args
75
+ if debug:
76
+ args.remove("--debug")
77
+
78
+ with set_debug_mode(debug):
79
+ try:
80
+ runtime = CliRuntime(load_keychain=False)
81
+ except Exception as e:
82
+ handle_exception(e, is_error_command, tempfile_path, debug)
83
+ sys.exit(1)
84
+
85
+ runtime.check_cumulusci_version()
86
+ should_show_stacktraces = runtime.universal_config.cli__show_stacktraces
87
+
88
+ init_logger(debug=debug)
89
+ # Hand CLI processing over to click, but handle exceptions
90
+ try:
91
+ cli(args[1:], standalone_mode=False, obj=runtime)
92
+ except click.Abort: # Keyboard interrupt
93
+ console = Console()
94
+ show_debug_info() if debug else console.print("\n[red bold]Aborted!")
95
+ sys.exit(1)
96
+ except Exception as e:
97
+ if debug:
98
+ show_debug_info()
99
+ else:
100
+ handle_exception(
101
+ e,
102
+ is_error_command,
103
+ tempfile_path,
104
+ should_show_stacktraces,
105
+ )
106
+ sys.exit(1)
107
+
108
+
109
+ def handle_exception(
110
+ error,
111
+ is_error_cmd,
112
+ logfile_path,
113
+ should_show_stacktraces=False,
114
+ ):
115
+ """Displays error of appropriate message back to user, prompts user to investigate further
116
+ with `cci error` commands, and writes the traceback to the latest logfile.
117
+ """
118
+ error_console = Console(stderr=True)
119
+ if isinstance(error, requests.exceptions.ConnectionError):
120
+ connection_error_message(error_console)
121
+ elif isinstance(error, click.ClickException):
122
+ error_console.print(f"[red bold]Error: {escape(error.format_message())}")
123
+ else:
124
+ # We call str ourselves to make Typeguard shut up.
125
+ error_console.print(f"[red bold]Error: {escape(str(error))}")
126
+ # Only suggest gist command if it wasn't run
127
+ if not is_error_cmd:
128
+ error_console.print(f"[yellow]{SUGGEST_ERROR_COMMAND}")
129
+
130
+ # This is None if we're handling an exception for a `cci error` command.
131
+ if logfile_path:
132
+ with open(logfile_path, "a") as log_file:
133
+ traceback.print_exc(file=log_file) # log stacktrace silently
134
+
135
+ if should_show_stacktraces and not isinstance(error, USAGE_ERRORS):
136
+ error_console.print_exception()
137
+
138
+
139
+ def connection_error_message(console: Console):
140
+ message = (
141
+ "We encountered an error with your internet connection. "
142
+ "Please check your connection and try the last cci command again."
143
+ )
144
+ console.print(f"[red bold]{message}")
145
+
146
+
147
+ def show_debug_info():
148
+ """Displays the traceback and opens pdb"""
149
+ traceback.print_exc()
150
+ pdb.post_mortem()
151
+
152
+
153
+ def show_version_info():
154
+ console = rich.get_console()
155
+ console.print(f"CumulusCI version: {cumulusci.__version__} ({sys.argv[0]})")
156
+ console.print(f"Python version: {sys.version.split()[0]} ({sys.executable})")
157
+ console.print()
158
+ warn_if_no_long_paths(console=console)
159
+
160
+ current_version = get_installed_version()
161
+ latest_version = get_latest_final_version()
162
+
163
+ if not latest_version > current_version:
164
+ console.print("You have the latest version of CumulusCI :sun_behind_cloud:\n")
165
+ display_release_notes_link(str(latest_version))
166
+ return
167
+
168
+ console.print(
169
+ f"[yellow]There is a newer version of CumulusCI available: {str(latest_version)}"
170
+ )
171
+ console.print(f"To upgrade, run `{get_cci_upgrade_command()}`")
172
+ display_release_notes_link(str(latest_version))
173
+
174
+
175
+ def display_release_notes_link(latest_version: str) -> None:
176
+ """Provide a link to the latest CumulusCI Release Notes"""
177
+ release_notes_link = (
178
+ f"https://github.com/SFDO-Tooling/CumulusCI/releases/tag/v{latest_version}"
179
+ )
180
+ console = rich.get_console()
181
+ console.print(
182
+ f"See the latest CumulusCI Release Notes: [link={release_notes_link}]{release_notes_link}[/link]"
183
+ )
184
+
185
+
186
+ def version_info_wrapper(
187
+ ctx: click.Context, param: click.Parameter, value: bool
188
+ ) -> None:
189
+ if not value:
190
+ return
191
+ show_version_info()
192
+ ctx.exit()
193
+
194
+
195
+ @click.group("main", help="")
196
+ @click.option( # based on https://click.palletsprojects.com/en/8.1.x/options/#callbacks-and-eager-options
197
+ "--version",
198
+ is_flag=True,
199
+ expose_value=False,
200
+ is_eager=True,
201
+ help="Show the version and exit.",
202
+ callback=version_info_wrapper,
203
+ )
204
+ def cli():
205
+ """Top-level `click` command group."""
206
+
207
+
208
+ @cli.command(name="version", help="Print the current version of CumulusCI")
209
+ def version():
210
+ show_version_info()
211
+
212
+
213
+ @cli.command(name="shell", help="Drop into a Python shell")
214
+ @click.option("--script", help="Path to a script to run", type=click.Path())
215
+ @click.option("--python", help="Python code to run directly")
216
+ @pass_runtime(require_project=False, require_keychain=True)
217
+ def shell(runtime, script=None, python=None):
218
+ # alias for backwards-compatibility
219
+ variables = {
220
+ "config": runtime,
221
+ "runtime": runtime,
222
+ "project_config": runtime.project_config,
223
+ }
224
+
225
+ if script:
226
+ if python:
227
+ raise click.UsageError("Cannot specify both --script and --python")
228
+ runpy.run_path(script, init_globals=variables)
229
+ elif python:
230
+ exec(python, variables)
231
+ else:
232
+ code.interact(local=variables)
233
+
234
+
235
+ # Top Level Groups
236
+
237
+ cli.add_command(error)
238
+ cli.add_command(project)
239
+ cli.add_command(org)
240
+ cli.add_command(service)
241
+ cli.add_command(task)
242
+ cli.add_command(flow)
243
+ cli.add_command(plan)
244
+ cli.add_command(robot)