cumulusci 3.68.0.dev1__tar.gz → 3.68.0.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/PKG-INFO +1 -1
  2. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/base_task_flow_config.py +9 -8
  3. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/flowrunner.py +138 -79
  4. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/runtime.py +15 -12
  5. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tasks.py +47 -28
  6. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cumulusci.yml +17 -0
  7. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/step.py +1 -1
  8. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_step.py +13 -13
  9. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/update_data.py +1 -1
  10. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/datadictionary.py +2 -2
  11. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/pushfails.py +1 -1
  12. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/libdoc.py +1 -1
  13. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_datadictionary.py +26 -17
  14. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/vlocity/tests/test_vlocity.py +33 -1
  15. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/vlocity/vlocity.py +18 -9
  16. cumulusci-3.68.0.dev2/cumulusci/version.txt +1 -0
  17. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/PKG-INFO +1 -1
  18. cumulusci-3.68.0.dev1/cumulusci/version.txt +0 -1
  19. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/AUTHORS.rst +0 -0
  20. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/CONTRIBUTING.rst +0 -0
  21. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/HISTORY.rst +0 -0
  22. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/LICENSE +0 -0
  23. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/MANIFEST.in +0 -0
  24. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/README.rst +0 -0
  25. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/__init__.py +0 -0
  26. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/__main__.py +0 -0
  27. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/__init__.py +0 -0
  28. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/cci.py +0 -0
  29. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/error.py +0 -0
  30. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/flow.py +0 -0
  31. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/logger.py +0 -0
  32. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/org.py +0 -0
  33. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/plan.py +0 -0
  34. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/project.py +0 -0
  35. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/robot.py +0 -0
  36. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/runtime.py +0 -0
  37. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/service.py +0 -0
  38. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/task.py +0 -0
  39. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/__init__.py +0 -0
  40. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_cci.py +0 -0
  41. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_error.py +0 -0
  42. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_flow.py +0 -0
  43. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_logger.py +0 -0
  44. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_org.py +0 -0
  45. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_plan.py +0 -0
  46. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_project.py +0 -0
  47. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_robot.py +0 -0
  48. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_runtime.py +0 -0
  49. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_service.py +0 -0
  50. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_task.py +0 -0
  51. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_ui.py +0 -0
  52. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/test_utils.py +0 -0
  53. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/tests/utils.py +0 -0
  54. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/ui.py +0 -0
  55. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/cli/utils.py +0 -0
  56. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/conftest.py +0 -0
  57. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/__init__.py +0 -0
  58. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/BaseConfig.py +0 -0
  59. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
  60. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/OrgConfig.py +0 -0
  61. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
  62. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/__init__.py +0 -0
  63. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/base_config.py +0 -0
  64. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
  65. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/oauth2_service_config.py +0 -0
  66. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/org_config.py +0 -0
  67. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/project_config.py +0 -0
  68. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/scratch_org_config.py +0 -0
  69. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/sfdx_org_config.py +0 -0
  70. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
  71. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/tests/test_config.py +0 -0
  72. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
  73. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/tests/test_config_util.py +0 -0
  74. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/universal_config.py +0 -0
  75. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/config/util.py +0 -0
  76. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/datasets.py +0 -0
  77. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/debug.py +0 -0
  78. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/__init__.py +0 -0
  79. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/dependencies.py +0 -0
  80. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/github.py +0 -0
  81. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/resolvers.py +0 -0
  82. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/tests/__init__.py +0 -0
  83. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/tests/conftest.py +0 -0
  84. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
  85. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/tests/test_github.py +0 -0
  86. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
  87. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/dependencies/utils.py +0 -0
  88. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/exceptions.py +0 -0
  89. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/github.py +0 -0
  90. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/__init__.py +0 -0
  91. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/base_project_keychain.py +0 -0
  92. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -0
  93. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
  94. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/subprocess_keychain.py +0 -0
  95. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/tests/conftest.py +0 -0
  96. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
  97. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
  98. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/metadeploy/__init__.py +0 -0
  99. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/metadeploy/api.py +0 -0
  100. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/metadeploy/plans.py +0 -0
  101. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/metadeploy/tests/test_api.py +0 -0
  102. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/sfdx.py +0 -0
  103. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/source/__init__.py +0 -0
  104. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/source/github.py +0 -0
  105. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/source/local_folder.py +0 -0
  106. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/source_transforms/__init__.py +0 -0
  107. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/source_transforms/tests/test_transforms.py +0 -0
  108. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/source_transforms/transforms.py +0 -0
  109. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/template_utils.py +0 -0
  110. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/__init__.py +0 -0
  111. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_datasets_e2e.py +0 -0
  112. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_exceptions.py +0 -0
  113. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_flowrunner.py +0 -0
  114. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_github.py +0 -0
  115. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_sfdx.py +0 -0
  116. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_source.py +0 -0
  117. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_tasks.py +0 -0
  118. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_utils.py +0 -0
  119. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
  120. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/test_versions.py +0 -0
  121. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/tests/utils.py +0 -0
  122. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/utils.py +0 -0
  123. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/core/versions.py +0 -0
  124. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/admin_profile.xml +0 -0
  125. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/delete_excludes.txt +0 -0
  126. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/templates/project/README.md +0 -0
  127. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/templates/project/cumulusci.yml +0 -0
  128. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/templates/project/dot-gitignore +0 -0
  129. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/templates/project/mapping.yml +0 -0
  130. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/files/templates/project/scratch_def.json +0 -0
  131. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/__init__.py +0 -0
  132. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/client.py +0 -0
  133. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/exceptions.py +0 -0
  134. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/salesforce.py +0 -0
  135. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/tests/__init__.py +0 -0
  136. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/tests/test_client.py +0 -0
  137. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/oauth/tests/test_salesforce.py +0 -0
  138. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/CumulusCI.py +0 -0
  139. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/CumulusCI.robot +0 -0
  140. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/Performance.py +0 -0
  141. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/Salesforce.py +0 -0
  142. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/Salesforce.robot +0 -0
  143. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/SalesforceAPI.py +0 -0
  144. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/SalesforcePlaywright.py +0 -0
  145. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/SalesforcePlaywright.robot +0 -0
  146. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/__init__.py +0 -0
  147. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/base_library.py +0 -0
  148. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/faker_mixin.py +0 -0
  149. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/form_handlers.py +0 -0
  150. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/javascript/cci_init.js +0 -0
  151. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/javascript/cumulusci.js +0 -0
  152. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/locator_manager.py +0 -0
  153. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/locators_54.py +0 -0
  154. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/locators_55.py +0 -0
  155. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/locators_56.py +0 -0
  156. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
  157. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
  158. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
  159. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
  160. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
  161. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
  162. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
  163. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/CustomObjectTestPage.py +0 -0
  164. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
  165. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
  166. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
  167. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
  168. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
  169. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
  170. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
  171. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
  172. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
  173. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
  174. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
  175. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
  176. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
  177. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
  178. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/label_locator.robot +0 -0
  179. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/labels.html +0 -0
  180. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
  181. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
  182. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
  183. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
  184. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
  185. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
  186. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
  187. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/playwright/javascript_keywords.robot +0 -0
  188. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/playwright/open_test_browser.robot +0 -0
  189. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +0 -0
  190. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/playwright/ui.robot +0 -0
  191. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
  192. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
  193. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
  194. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_cumulusci_library.py +0 -0
  195. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
  196. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
  197. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_performance.py +0 -0
  198. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
  199. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
  200. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_template_util.py +0 -0
  201. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/tests/test_utils.py +0 -0
  202. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/robotframework/utils.py +0 -0
  203. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/__init__.py +0 -0
  204. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/exceptions.py +0 -0
  205. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/filterable_objects.py +0 -0
  206. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
  207. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/metadata.py +0 -0
  208. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/org_schema.py +0 -0
  209. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/org_schema_models.py +0 -0
  210. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/package_install.py +0 -0
  211. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/package_zip.py +0 -0
  212. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
  213. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/tests/__init__.py +0 -0
  214. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
  215. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
  216. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
  217. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
  218. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
  219. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/salesforce_api/utils.py +0 -0
  220. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/schema/cumulusci.jsonschema.json +0 -0
  221. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/__init__.py +0 -0
  222. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/apex/__init__.py +0 -0
  223. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/apex/anon.py +0 -0
  224. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/apex/batch.py +0 -0
  225. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/apex/testrunner.py +0 -0
  226. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
  227. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/__init__.py +0 -0
  228. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
  229. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/dates.py +0 -0
  230. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/delete.py +0 -0
  231. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract.py +0 -0
  232. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract_dataset_utils/calculate_dependencies.py +0 -0
  233. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +0 -0
  234. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract_dataset_utils/hardcoded_default_declarations.py +0 -0
  235. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +0 -0
  236. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +0 -0
  237. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_synthesize_extract_declarations.py +0 -0
  238. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
  239. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate.py +0 -0
  240. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
  241. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
  242. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
  243. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
  244. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/dependency_map.py +0 -0
  245. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/extract_mapping_file_generator.py +0 -0
  246. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/generate_mapping_from_declarations.py +0 -0
  247. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/load_mapping_file_generator.py +0 -0
  248. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_generator_post_processes.py +0 -0
  249. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_transforms.py +0 -0
  250. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_extract_mapping_from_declarations.py +0 -0
  251. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_load_mapping_from_declarations.py +0 -0
  252. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_generator_post_processes.py +0 -0
  253. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_transforms.py +0 -0
  254. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/load.py +0 -0
  255. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
  256. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/query_transformers.py +0 -0
  257. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
  258. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
  259. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
  260. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +0 -0
  261. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +0 -0
  262. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  263. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
  264. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +0 -0
  265. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
  266. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
  267. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
  268. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
  269. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
  270. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
  271. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
  272. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
  273. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/person_accounts.yml +0 -0
  274. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +0 -0
  275. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
  276. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
  277. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
  278. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
  279. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
  280. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
  281. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
  282. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
  283. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
  284. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
  285. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
  286. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
  287. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
  288. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
  289. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
  290. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
  291. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +0 -0
  292. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +0 -0
  293. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +0 -0
  294. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
  295. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
  296. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_delete.py +0 -0
  297. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
  298. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
  299. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
  300. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
  301. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
  302. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
  303. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
  304. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +0 -0
  305. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
  306. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_updates.py +0 -0
  307. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_upsert.py +0 -0
  308. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
  309. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/update_describe.py +0 -0
  310. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +0 -0
  311. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
  312. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/upsert_utils.py +0 -0
  313. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/bulkdata/utils.py +0 -0
  314. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/command.py +0 -0
  315. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/connectedapp.py +0 -0
  316. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/create_package_version.py +0 -0
  317. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/dx_convert_from.py +0 -0
  318. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/__init__.py +0 -0
  319. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/base.py +0 -0
  320. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/commit_status.py +0 -0
  321. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/merge.py +0 -0
  322. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/publish.py +0 -0
  323. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/pull_request.py +0 -0
  324. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/release.py +0 -0
  325. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/release_report.py +0 -0
  326. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tag.py +0 -0
  327. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/__init__.py +0 -0
  328. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
  329. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_merge.py +0 -0
  330. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_publish.py +0 -0
  331. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
  332. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_release.py +0 -0
  333. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
  334. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_tag.py +0 -0
  335. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/test_util.py +0 -0
  336. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
  337. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/github/util.py +0 -0
  338. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  339. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/api.py +0 -0
  340. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/base.py +0 -0
  341. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/deploy.py +0 -0
  342. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/get_user_info.py +0 -0
  343. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
  344. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  345. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
  346. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
  347. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
  348. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
  349. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_base.py +0 -0
  350. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +0 -0
  351. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
  352. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/__init__.py +0 -0
  353. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/ee_src.py +0 -0
  354. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/managed_src.py +0 -0
  355. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
  356. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/modify.py +0 -0
  357. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/package.py +0 -0
  358. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  359. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
  360. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
  361. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
  362. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
  363. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
  364. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
  365. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
  366. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
  367. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
  368. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/base.py +0 -0
  369. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
  370. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
  371. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
  372. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
  373. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/objects.py +0 -0
  374. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
  375. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
  376. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/remote_site_settings.py +0 -0
  377. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
  378. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
  379. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
  380. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
  381. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
  382. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +0 -0
  383. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
  384. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_objects.py +0 -0
  385. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
  386. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
  387. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_remote_site_settings.py +0 -0
  388. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
  389. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
  390. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
  391. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metadeploy.py +0 -0
  392. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/metaxml.py +0 -0
  393. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/__init__.py +0 -0
  394. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/licenses.py +0 -0
  395. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/packages.py +0 -0
  396. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/permsets.py +0 -0
  397. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/recordtypes.py +0 -0
  398. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/settings.py +0 -0
  399. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/sobjects.py +0 -0
  400. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
  401. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
  402. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
  403. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
  404. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
  405. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
  406. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/README.md +0 -0
  407. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/__init__.py +0 -0
  408. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/push_api.py +0 -0
  409. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/tasks.py +0 -0
  410. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/tests/conftest.py +0 -0
  411. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
  412. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
  413. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/README.md +0 -0
  414. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/__init__.py +0 -0
  415. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/exceptions.py +0 -0
  416. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/generator.py +0 -0
  417. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/parser.py +0 -0
  418. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/provider.py +0 -0
  419. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/task.py +0 -0
  420. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  421. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
  422. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
  423. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
  424. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
  425. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
  426. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
  427. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
  428. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
  429. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
  430. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
  431. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/__init__.py +0 -0
  432. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
  433. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
  434. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
  435. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
  436. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/lint.py +0 -0
  437. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
  438. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/robotframework.py +0 -0
  439. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
  440. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/template.html +0 -0
  441. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
  442. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
  443. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
  444. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
  445. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
  446. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
  447. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
  448. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
  449. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/robotframework/tests/test_robotframework.py +0 -0
  450. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
  451. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
  452. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
  453. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
  454. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
  455. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
  456. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
  457. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/Deploy.py +0 -0
  458. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
  459. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
  460. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
  461. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
  462. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
  463. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
  464. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
  465. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
  466. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
  467. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
  468. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
  469. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
  470. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
  471. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
  472. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
  473. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
  474. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/__init__.py +0 -0
  475. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
  476. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/composite.py +0 -0
  477. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
  478. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
  479. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
  480. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
  481. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/insert_record.py +0 -0
  482. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
  483. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
  484. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
  485. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/org_settings.py +0 -0
  486. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/package_upload.py +0 -0
  487. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/profiles.py +0 -0
  488. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
  489. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
  490. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
  491. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
  492. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
  493. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
  494. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
  495. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
  496. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
  497. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
  498. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
  499. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
  500. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
  501. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
  502. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
  503. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
  504. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
  505. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
  506. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
  507. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
  508. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
  509. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
  510. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
  511. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
  512. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
  513. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
  514. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
  515. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
  516. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
  517. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
  518. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
  519. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
  520. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
  521. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
  522. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
  523. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
  524. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
  525. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
  526. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/tests/util.py +0 -0
  527. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
  528. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
  529. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
  530. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/update_profile.py +0 -0
  531. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
  532. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/users/photos.py +0 -0
  533. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
  534. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
  535. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
  536. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/sfdx.py +0 -0
  537. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/__init__.py +0 -0
  538. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/conftest.py +0 -0
  539. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_command.py +0 -0
  540. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
  541. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
  542. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
  543. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
  544. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_metaxml.py +0 -0
  545. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
  546. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_pushfails.py +0 -0
  547. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_salesforce.py +0 -0
  548. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_sfdx.py +0 -0
  549. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/tests/test_util.py +0 -0
  550. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/util.py +0 -0
  551. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tasks/vlocity/exceptions.py +0 -0
  552. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/__init__.py +0 -0
  553. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
  554. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
  555. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +0 -0
  556. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
  557. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +0 -0
  558. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +0 -0
  559. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/test_entry_points.py +0 -0
  560. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/test_integration_infrastructure.py +0 -0
  561. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/test_main.py +0 -0
  562. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/test_schema.py +0 -0
  563. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/test_utils.py +0 -0
  564. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/test_vcr_serializer.py +0 -0
  565. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/tests/util.py +0 -0
  566. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/__init__.py +0 -0
  567. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/classutils.py +0 -0
  568. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/collections.py +0 -0
  569. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/deprecation.py +0 -0
  570. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/fileutils.py +0 -0
  571. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/git.py +0 -0
  572. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/http/multi_request.py +0 -0
  573. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/http/requests_utils.py +0 -0
  574. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
  575. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/iterators.py +0 -0
  576. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/logging.py +0 -0
  577. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
  578. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
  579. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
  580. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/salesforce/count_sobjects.py +0 -0
  581. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/salesforce/tests/test_count_sobjects.py +0 -0
  582. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/tests/test_fileutils.py +0 -0
  583. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/tests/test_git.py +0 -0
  584. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/tests/test_logging.py +0 -0
  585. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/tests/test_org_schema.py +0 -0
  586. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
  587. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/tests/test_waiting.py +0 -0
  588. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/waiting.py +0 -0
  589. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/xml/__init__.py +0 -0
  590. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/xml/metadata_tree.py +0 -0
  591. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/xml/robot_xml.py +0 -0
  592. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
  593. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
  594. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
  595. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/cumulusci_yml.py +0 -0
  596. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/model_parser.py +0 -0
  597. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/safer_loader.py +0 -0
  598. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
  599. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
  600. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
  601. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
  602. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci/utils/ziputils.py +0 -0
  603. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/SOURCES.txt +0 -0
  604. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/dependency_links.txt +0 -0
  605. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/entry_points.txt +0 -0
  606. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/not-zip-safe +0 -0
  607. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/requires.txt +0 -0
  608. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/cumulusci.egg-info/top_level.txt +0 -0
  609. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/Makefile +0 -0
  610. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/conf.py +0 -0
  611. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/diagram/img/image1.png +0 -0
  612. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/diagram/img/image12.png +0 -0
  613. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/diagram/img/image15.png +0 -0
  614. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/diagram/img/image17.png +0 -0
  615. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/diagram/img/image3.png +0 -0
  616. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/cci_service_list.png +0 -0
  617. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/cumulus_ci_workflow.png +0 -0
  618. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/env-var.png +0 -0
  619. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/env-var2.png +0 -0
  620. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-action-manual-trigger.png +0 -0
  621. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-commit_status_error.png +0 -0
  622. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-commit_status_pass.png +0 -0
  623. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-creating_a_uat_release.png +0 -0
  624. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-environment-packaging.png +0 -0
  625. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-organization-secret.png +0 -0
  626. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github-repository-secret.png +0 -0
  627. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github_checks.png +0 -0
  628. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github_personal_access_token_scopes.png +0 -0
  629. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github_secrets.png +0 -0
  630. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/github_workflow.png +0 -0
  631. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/locate_elements_screenshot.png +0 -0
  632. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/pipx.png +0 -0
  633. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/robot_log_screenshot.png +0 -0
  634. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/robot_toggled_results_screenshot.png +0 -0
  635. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/salesforce-org-process.png +0 -0
  636. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/service-list.png +0 -0
  637. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/skipping_task.png +0 -0
  638. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/windows_python.png +0 -0
  639. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/images/windows_python_success.png +0 -0
  640. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/docs/make.bat +0 -0
  641. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/pyproject.toml +0 -0
  642. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/requirements/dev.txt +0 -0
  643. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/requirements/prod.txt +0 -0
  644. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/setup.cfg +0 -0
  645. {cumulusci-3.68.0.dev1 → cumulusci-3.68.0.dev2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cumulusci
3
- Version: 3.68.0.dev1
3
+ Version: 3.68.0.dev2
4
4
  Summary: Build and release tools for Salesforce developers
5
5
  Home-page: https://github.com/SFDO-Tooling/CumulusCI
6
6
  Author: Salesforce.org
@@ -1,4 +1,5 @@
1
1
  from difflib import get_close_matches
2
+ from typing import Any, Dict, List
2
3
 
3
4
  from cumulusci.core.config import BaseConfig, FlowConfig, TaskConfig
4
5
  from cumulusci.core.exceptions import (
@@ -8,10 +9,9 @@ from cumulusci.core.exceptions import (
8
9
  )
9
10
 
10
11
 
11
- def list_infos(infos):
12
+ def list_infos(infos: dict) -> List[Dict[str, str]]:
12
13
  rv = []
13
- for info_name in infos:
14
- info = infos[info_name]
14
+ for info_name, info in infos.items():
15
15
  if not info:
16
16
  info = {}
17
17
  rv.append(
@@ -21,6 +21,7 @@ def list_infos(infos):
21
21
  "group": info.get("group"),
22
22
  }
23
23
  )
24
+
24
25
  return rv
25
26
 
26
27
 
@@ -30,11 +31,11 @@ class BaseTaskFlowConfig(BaseConfig):
30
31
  tasks: dict
31
32
  flows: dict
32
33
 
33
- def list_tasks(self):
34
+ def list_tasks(self) -> List[Dict[str, str]]:
34
35
  """Returns a list of task info dictionaries with keys 'name' and 'description'"""
35
36
  return list_infos(self.tasks)
36
37
 
37
- def get_task(self, name):
38
+ def get_task(self, name: str) -> TaskConfig:
38
39
  """Returns a TaskConfig"""
39
40
  config = self.lookup(f"tasks__{name}")
40
41
  if not config and name not in self.tasks:
@@ -53,11 +54,11 @@ class BaseTaskFlowConfig(BaseConfig):
53
54
 
54
55
  return TaskConfig(config)
55
56
 
56
- def list_flows(self):
57
+ def list_flows(self) -> List[Dict[str, str]]:
57
58
  """Returns a list of flow info dictionaries with keys 'name' and 'description'"""
58
59
  return list_infos(self.flows)
59
60
 
60
- def get_flow(self, name):
61
+ def get_flow(self, name: str) -> FlowConfig:
61
62
  """Returns a FlowConfig"""
62
63
  config = self.lookup(f"flows__{name}")
63
64
  if not config:
@@ -66,7 +67,7 @@ class BaseTaskFlowConfig(BaseConfig):
66
67
  raise FlowNotFoundError(error_msg + suggestion)
67
68
  return FlowConfig(config)
68
69
 
69
- def get_suggested_name(self, name, steps):
70
+ def get_suggested_name(self, name: str, steps: Dict[str, Any]) -> str:
70
71
  """
71
72
  Given a name that cannot be resolved and a list of tasks/flow dicts, returns the nearest match.
72
73
  """
@@ -51,26 +51,35 @@ Option values/overrides can be passed in at a number of levels, in increasing or
51
51
 
52
52
  """
53
53
 
54
- # we don't actually use this set of imports, they're just in type
55
- # comments, which require explicit runtime import when checking...
56
- try:
57
- from typing import List
58
- except ImportError: # pragma: no cover
59
- pass
60
-
61
54
  import copy
62
55
  import logging
63
- from collections import defaultdict, namedtuple
56
+ from collections import defaultdict
64
57
  from distutils.version import LooseVersion
65
58
  from operator import attrgetter
59
+ from typing import (
60
+ TYPE_CHECKING,
61
+ Any,
62
+ DefaultDict,
63
+ Dict,
64
+ List,
65
+ NamedTuple,
66
+ Optional,
67
+ Tuple,
68
+ Type,
69
+ Union,
70
+ )
66
71
 
67
72
  from jinja2.sandbox import ImmutableSandboxedEnvironment
68
73
 
69
74
  from cumulusci.core.config import FlowConfig, TaskConfig
75
+ from cumulusci.core.config.org_config import OrgConfig
76
+ from cumulusci.core.config.project_config import BaseProjectConfig
70
77
  from cumulusci.core.exceptions import FlowConfigError, FlowInfiniteLoopError
71
78
  from cumulusci.core.utils import import_global
72
79
 
73
- # TODO: define exception types: flowfailure, taskimporterror, etc?
80
+ if TYPE_CHECKING:
81
+ from cumulusci.core.tasks import BaseTask
82
+
74
83
 
75
84
  RETURN_VALUE_OPTION_PREFIX = "^^"
76
85
 
@@ -85,32 +94,44 @@ class StepVersion(LooseVersion):
85
94
  self.version = tuple(-1 if x == "/" else x for x in self.version)
86
95
 
87
96
 
88
- class StepSpec(object):
97
+ class StepSpec:
89
98
  """simple namespace to describe what the flowrunner should do each step"""
90
99
 
91
100
  __slots__ = (
92
- "step_num", # type: str
93
- "task_name", # type: str
94
- "task_config", # type: dict
95
- "task_class", # type: str
101
+ "step_num",
102
+ "task_name",
103
+ "task_config",
104
+ "task_class",
96
105
  "project_config",
97
- "allow_failure", # type: bool
98
- "path", # type: str
99
- "skip", # type: bool
100
- "when", # type: str
106
+ "allow_failure",
107
+ "path",
108
+ "skip",
109
+ "when",
101
110
  )
102
111
 
112
+ step_num: StepVersion
113
+ task_name: str
114
+ task_config: dict
115
+ task_class: Optional[
116
+ Type["BaseTask"]
117
+ ] # None means this step was skipped by setting task: None
118
+ project_config: BaseProjectConfig
119
+ allow_failure: bool
120
+ path: str
121
+ skip: bool
122
+ when: Optional[str]
123
+
103
124
  def __init__(
104
125
  self,
105
126
  step_num: StepVersion,
106
- task_name,
107
- task_config,
108
- task_class,
109
- project_config,
110
- allow_failure=False,
111
- from_flow=None,
112
- skip=None,
113
- when=None,
127
+ task_name: str,
128
+ task_config: dict,
129
+ task_class: Optional[Type["BaseTask"]],
130
+ project_config: BaseProjectConfig,
131
+ allow_failure: bool = False,
132
+ from_flow: Optional[str] = None,
133
+ skip: bool = False,
134
+ when: Optional[str] = None,
114
135
  ):
115
136
  self.step_num = step_num
116
137
  self.task_name = task_name
@@ -140,13 +161,16 @@ class StepSpec(object):
140
161
  )
141
162
 
142
163
 
143
- StepResult = namedtuple(
144
- "StepResult",
145
- ["step_num", "task_name", "path", "result", "return_values", "exception"],
146
- )
164
+ class StepResult(NamedTuple):
165
+ step_num: StepVersion
166
+ task_name: str
167
+ path: str
168
+ result: Any
169
+ return_values: Any
170
+ exception: Optional[Exception]
147
171
 
148
172
 
149
- class FlowCallback(object):
173
+ class FlowCallback:
150
174
  """A subclass of FlowCallback allows code running a flow
151
175
  to inject callback methods to run during the flow. Anything you
152
176
  would like the FlowCallback to have access to can be passed to the
@@ -181,24 +205,24 @@ class FlowCallback(object):
181
205
 
182
206
  """
183
207
 
184
- def pre_flow(self, coordinator):
208
+ def pre_flow(self, coordinator: "FlowCoordinator"):
185
209
  """This is passed an instance of FlowCoordinator,
186
210
  that pertains to the flow which is about to run."""
187
211
  pass
188
212
 
189
- def post_flow(self, coordinator):
213
+ def post_flow(self, coordinator: "FlowCoordinator"):
190
214
  """This is passed an instance of FlowCoordinator,
191
215
  that pertains to the flow just finished running.
192
216
  This step executes whether or not the flow completed
193
217
  successfully."""
194
218
  pass
195
219
 
196
- def pre_task(self, step):
220
+ def pre_task(self, step: StepSpec):
197
221
  """This is passed an instance StepSpec, that
198
222
  pertains to the task which is about to run."""
199
223
  pass
200
224
 
201
- def post_task(self, step, result):
225
+ def post_task(self, step: StepSpec, result: StepResult):
202
226
  """This method is called after a task has executed.
203
227
 
204
228
  :param step: Instance of StepSpec that relates to the task which executed
@@ -208,19 +232,28 @@ class FlowCallback(object):
208
232
  pass
209
233
 
210
234
 
211
- class TaskRunner(object):
235
+ class TaskRunner:
212
236
  """TaskRunner encapsulates the job of instantiating and running a task."""
213
237
 
214
- def __init__(self, step, org_config, flow=None):
238
+ step: StepSpec
239
+ org_config: Optional[OrgConfig]
240
+ flow: Optional["FlowCoordinator"]
241
+
242
+ def __init__(
243
+ self,
244
+ step: StepSpec,
245
+ org_config: Optional[OrgConfig],
246
+ flow: Optional["FlowCoordinator"] = None,
247
+ ):
215
248
  self.step = step
216
249
  self.org_config = org_config
217
250
  self.flow = flow
218
251
 
219
252
  @classmethod
220
- def from_flow(cls, flow, step):
253
+ def from_flow(cls, flow: "FlowCoordinator", step: StepSpec) -> "TaskRunner":
221
254
  return cls(step, flow.org_config, flow=flow)
222
255
 
223
- def run_step(self, **options):
256
+ def run_step(self, **options) -> StepResult:
224
257
  """
225
258
  Run a step.
226
259
 
@@ -258,7 +291,7 @@ class TaskRunner(object):
258
291
  exc,
259
292
  )
260
293
 
261
- def _log_options(self, task):
294
+ def _log_options(self, task: "BaseTask"):
262
295
  if not task.task_options:
263
296
  task.logger.info("No task options present")
264
297
  return
@@ -275,21 +308,31 @@ class TaskRunner(object):
275
308
  v = self._obfuscate_if_sensitive(v, info)
276
309
  task.logger.info(f" - {v}")
277
310
 
278
- def _obfuscate_if_sensitive(self, value, info):
311
+ def _obfuscate_if_sensitive(self, value: str, info: dict) -> str:
279
312
  if info.get("sensitive"):
280
313
  value = 8 * "*"
281
314
  return value
282
315
 
283
316
 
284
- class FlowCoordinator(object):
317
+ class FlowCoordinator:
318
+ org_config: Optional[OrgConfig]
319
+ steps: List[StepSpec]
320
+ callbacks: FlowCallback
321
+ logger: logging.Logger
322
+ skip: List[str]
323
+ flow_config: FlowConfig
324
+ runtime_options: dict
325
+ name: Optional[str]
326
+ results: List[StepResult]
327
+
285
328
  def __init__(
286
329
  self,
287
- project_config,
288
- flow_config,
289
- name=None,
290
- options=None,
291
- skip=None,
292
- callbacks=None,
330
+ project_config: BaseProjectConfig,
331
+ flow_config: FlowConfig,
332
+ name: Optional[str] = None,
333
+ options: Optional[dict] = None,
334
+ skip: Optional[List[str]] = None,
335
+ callbacks: Optional[FlowCallback] = None,
293
336
  ):
294
337
  self.project_config = project_config
295
338
  self.flow_config = flow_config
@@ -302,17 +345,20 @@ class FlowCoordinator(object):
302
345
 
303
346
  self.runtime_options = options or {}
304
347
 
305
- if not skip:
306
- skip = []
307
- self.skip = skip
308
-
348
+ self.skip = skip or []
309
349
  self.results = []
310
350
 
311
351
  self.logger = self._init_logger()
312
- self.steps = self._init_steps() # type: List[StepSpec]
352
+ self.steps = self._init_steps()
313
353
 
314
354
  @classmethod
315
- def from_steps(cls, project_config, steps, name=None, callbacks=None):
355
+ def from_steps(
356
+ cls,
357
+ project_config: BaseProjectConfig,
358
+ steps: List[StepSpec],
359
+ name: Optional[str] = None,
360
+ callbacks: Optional[FlowCallback] = None,
361
+ ):
316
362
  instance = cls(
317
363
  project_config,
318
364
  flow_config=FlowConfig({"steps": {}}),
@@ -341,7 +387,9 @@ class FlowCoordinator(object):
341
387
 
342
388
  return "\n".join(lines)
343
389
 
344
- def get_flow_steps(self, for_docs=False, verbose=False):
390
+ def get_flow_steps(
391
+ self, for_docs: bool = False, verbose: bool = False
392
+ ) -> List[str]:
345
393
  """Returns a list of flow steps (tasks and sub-flows) for the given flow.
346
394
  For docs, indicates whether or not we want to use the string for use in a code-block
347
395
  of an rst file. If True, will omit output of source information."""
@@ -405,7 +453,7 @@ class FlowCoordinator(object):
405
453
 
406
454
  return lines
407
455
 
408
- def run(self, org_config):
456
+ def run(self, org_config: OrgConfig):
409
457
  self.org_config = org_config
410
458
  line = f"Initializing flow: {self.__class__.__name__}"
411
459
  if self.name:
@@ -446,7 +494,7 @@ class FlowCoordinator(object):
446
494
  finally:
447
495
  self.callbacks.post_flow(self)
448
496
 
449
- def _run_step(self, step):
497
+ def _run_step(self, step: StepSpec):
450
498
  if step.skip:
451
499
  self._rule(fill="*")
452
500
  self.logger.info(f"Skipping task: {step.task_name}")
@@ -481,7 +529,7 @@ class FlowCoordinator(object):
481
529
  if result.exception and not step.allow_failure:
482
530
  raise result.exception # PY3: raise an exception type we control *from* this exception instead?
483
531
 
484
- def _init_logger(self):
532
+ def _init_logger(self) -> logging.Logger:
485
533
  """
486
534
  Returns a logging.Logger-like object to use for the duration of the flow. Tasks will receive this logger
487
535
  and getChild(class_name) to get a child logger.
@@ -490,7 +538,7 @@ class FlowCoordinator(object):
490
538
  """
491
539
  return logging.getLogger("cumulusci.flows").getChild(self.__class__.__name__)
492
540
 
493
- def _init_steps(self):
541
+ def _init_steps(self) -> List[StepSpec]:
494
542
  """
495
543
  Given the flow config and everything else, create a list of steps to run, sorted by step number.
496
544
 
@@ -509,14 +557,14 @@ class FlowCoordinator(object):
509
557
 
510
558
  def _visit_step(
511
559
  self,
512
- number,
513
- step_config,
514
- project_config,
515
- visited_steps=None,
516
- parent_options=None,
517
- parent_ui_options=None,
518
- from_flow=None,
519
- ):
560
+ number: Union[str, int],
561
+ step_config: dict,
562
+ project_config: BaseProjectConfig,
563
+ visited_steps: Optional[List[StepSpec]] = None,
564
+ parent_options: Optional[dict] = None,
565
+ parent_ui_options: Optional[dict] = None,
566
+ from_flow: Optional[str] = None,
567
+ ) -> List[StepSpec]:
520
568
  """
521
569
  for each step (as defined in the flow YAML), _visit_step is called with only
522
570
  the first two parameters. this takes care of validating the step, collating the
@@ -532,7 +580,7 @@ class FlowCoordinator(object):
532
580
  :param from_flow: used when called recursively for nested steps, name of parent flow
533
581
  :return: List[StepSpec] a list of all resolved steps including/under the one passed in
534
582
  """
535
- number = StepVersion(str(number))
583
+ step_number = StepVersion(str(number))
536
584
 
537
585
  if visited_steps is None:
538
586
  visited_steps = []
@@ -555,7 +603,7 @@ class FlowCoordinator(object):
555
603
  ):
556
604
  visited_steps.append(
557
605
  StepSpec(
558
- step_num=number,
606
+ step_num=step_number,
559
607
  task_name=step_config.get("task", step_config.get("flow")),
560
608
  task_config=step_config.get("options", {}),
561
609
  task_class=None,
@@ -572,7 +620,7 @@ class FlowCoordinator(object):
572
620
  # get the base task_config from the project config, as a dict for easier manipulation.
573
621
  # will raise if the task doesn't exist / is invalid
574
622
  task_config = project_config.get_task(name)
575
- task_config_dict = copy.deepcopy(task_config.config)
623
+ task_config_dict: dict = copy.deepcopy(task_config.config)
576
624
  if "options" not in task_config_dict:
577
625
  task_config_dict["options"] = {}
578
626
 
@@ -605,7 +653,7 @@ class FlowCoordinator(object):
605
653
 
606
654
  visited_steps.append(
607
655
  StepSpec(
608
- step_num=number,
656
+ step_num=step_number,
609
657
  task_name=name,
610
658
  task_config=task_config_dict,
611
659
  task_class=task_class,
@@ -712,7 +760,10 @@ class FlowCoordinator(object):
712
760
  class PreflightFlowCoordinator(FlowCoordinator):
713
761
  """Coordinates running preflight checks instead of the actual flow steps."""
714
762
 
715
- def run(self, org_config):
763
+ preflight_results: DefaultDict[Optional[str], List[dict]]
764
+ _task_caches: Dict[BaseProjectConfig, "TaskCache"]
765
+
766
+ def run(self, org_config: OrgConfig):
716
767
  self.org_config = org_config
717
768
  self.callbacks.pre_flow(self)
718
769
 
@@ -759,7 +810,9 @@ class PreflightFlowCoordinator(FlowCoordinator):
759
810
  finally:
760
811
  self.callbacks.post_flow(self)
761
812
 
762
- def evaluate_check(self, check, jinja2_context):
813
+ def evaluate_check(
814
+ self, check: dict, jinja2_context: Dict[str, Any]
815
+ ) -> Optional[dict]:
763
816
  self.logger.info(f"Evaluating check: {check['when']}")
764
817
  expr = jinja2_env.compile_expression(check["when"])
765
818
  value = bool(expr(**jinja2_context))
@@ -768,7 +821,7 @@ class PreflightFlowCoordinator(FlowCoordinator):
768
821
  return {"status": check["action"], "message": check.get("message")}
769
822
 
770
823
 
771
- class TaskCache(object):
824
+ class TaskCache:
772
825
  """Provides access to named tasks and caches their results.
773
826
 
774
827
  This is intended for use in a jinja2 expression context
@@ -776,25 +829,31 @@ class TaskCache(object):
776
829
  can avoid running a task more than once with the same options.
777
830
  """
778
831
 
779
- def __init__(self, flow, project_config):
832
+ project_config: BaseProjectConfig
833
+ results: Dict[Tuple[str, Tuple[Any]], Any]
834
+
835
+ def __init__(self, flow: FlowCoordinator, project_config: BaseProjectConfig):
780
836
  self.flow = flow
781
837
  # Cross-project flows may include preflight checks
782
838
  # that depend on their local context.
783
839
  self.project_config = project_config
784
840
  self.results = {}
785
841
 
786
- def __getattr__(self, task_name):
842
+ def __getattr__(self, task_name: str):
787
843
  return CachedTaskRunner(self, task_name)
788
844
 
789
845
 
790
- class CachedTaskRunner(object):
846
+ class CachedTaskRunner:
791
847
  """Runs a task and caches the result in a TaskCache"""
792
848
 
793
- def __init__(self, cache, task_name):
849
+ cache: TaskCache
850
+ task_name: str
851
+
852
+ def __init__(self, cache: TaskCache, task_name: str):
794
853
  self.cache = cache
795
854
  self.task_name = task_name
796
855
 
797
- def __call__(self, **options):
856
+ def __call__(self, **options: dict) -> Any:
798
857
  cache_key = (self.task_name, tuple(sorted(options.items())))
799
858
  if cache_key in self.cache.results:
800
859
  return self.cache.results[cache_key].return_values
@@ -1,5 +1,6 @@
1
1
  import sys
2
2
  from abc import abstractmethod
3
+ from typing import Optional, Type
3
4
 
4
5
  from cumulusci.core.config import BaseProjectConfig, UniversalConfig
5
6
  from cumulusci.core.debug import DebugMode, get_debug_mode
@@ -9,15 +10,15 @@ from cumulusci.core.keychain import BaseProjectKeychain
9
10
 
10
11
 
11
12
  # pylint: disable=assignment-from-none
12
- class BaseCumulusCI(object):
13
+ class BaseCumulusCI:
13
14
  universal_config_class = UniversalConfig
14
15
  project_config_class = BaseProjectConfig
15
16
  keychain_class = BaseProjectKeychain
16
17
  callback_class = FlowCallback
17
18
 
18
19
  universal_config: UniversalConfig
19
- project_config: BaseProjectConfig
20
- keychain: BaseProjectKeychain
20
+ project_config: Optional[BaseProjectConfig]
21
+ keychain: Optional[BaseProjectKeychain]
21
22
  debug_mode: DebugMode
22
23
  project_config_error: Exception
23
24
 
@@ -37,30 +38,30 @@ class BaseCumulusCI(object):
37
38
  self._load_keychain()
38
39
 
39
40
  @property
40
- def universal_config_cls(self):
41
+ def universal_config_cls(self) -> Type:
41
42
  klass = self.get_universal_config_class()
42
43
  return klass or self.universal_config_class
43
44
 
44
45
  @abstractmethod
45
- def get_universal_config_class(self):
46
+ def get_universal_config_class(self) -> Optional[Type]:
46
47
  return None
47
48
 
48
49
  @property
49
- def project_config_cls(self):
50
+ def project_config_cls(self) -> Type:
50
51
  klass = self.get_project_config_class()
51
52
  return klass or self.project_config_class
52
53
 
53
54
  @abstractmethod
54
- def get_project_config_class(self):
55
+ def get_project_config_class(self) -> Optional[Type]:
55
56
  return None
56
57
 
57
58
  @property
58
- def keychain_cls(self):
59
+ def keychain_cls(self) -> Type:
59
60
  klass = self.get_keychain_class()
60
61
  return klass or self.keychain_class
61
62
 
62
63
  @abstractmethod
63
- def get_keychain_class(self):
64
+ def get_keychain_class(self) -> Optional[Type]:
64
65
  return None
65
66
 
66
67
  @property
@@ -72,7 +73,7 @@ class BaseCumulusCI(object):
72
73
  return None
73
74
 
74
75
  def _add_repo_to_path(self):
75
- if self.project_config:
76
+ if self.project_config and self.project_config.repo_root:
76
77
  sys.path.append(self.project_config.repo_root)
77
78
 
78
79
  def _load_universal_config(self):
@@ -95,8 +96,10 @@ class BaseCumulusCI(object):
95
96
  self.keychain = self.keychain_cls(self.project_config, keychain_key)
96
97
  self.project_config.keychain = self.keychain
97
98
 
98
- def get_flow(self, name, options=None):
99
- """Get a primed and readytogo flow coordinator."""
99
+ def get_flow(self, name: str, options: Optional[dict] = None) -> FlowCoordinator:
100
+ """Get a primed and ready-to-go flow coordinator."""
101
+ if not self.project_config:
102
+ raise ProjectConfigNotFound
100
103
  flow_config = self.project_config.get_flow(name)
101
104
  callbacks = self.callback_class()
102
105
  coordinator = FlowCoordinator(