cumulusci 3.68.0.dev2__tar.gz → 3.69.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (646) hide show
  1. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/HISTORY.rst +52 -0
  2. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/PKG-INFO +53 -1
  3. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/base_config.py +11 -8
  4. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/project_config.py +82 -48
  5. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/github.py +1 -1
  6. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source_transforms/tests/test_transforms.py +143 -1
  7. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source_transforms/transforms.py +33 -0
  8. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cumulusci.yml +7 -0
  9. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/package_zip.py +5 -5
  10. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/deploy.py +5 -0
  11. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/package.py +204 -3
  12. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_package.py +2 -2
  13. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +1 -1
  14. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/ui.py +86 -62
  15. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/libdoc.py +9 -2
  16. cumulusci-3.69.0/cumulusci/tasks/robotframework/tests/test_browser_proxies.py +137 -0
  17. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_debugger.py +34 -64
  18. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/vlocity/tests/test_vlocity.py +49 -28
  19. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/vlocity/vlocity.py +120 -25
  20. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_utils.py +13 -1
  21. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/__init__.py +9 -1
  22. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/__init__.py +5 -1
  23. cumulusci-3.69.0/cumulusci/version.txt +1 -0
  24. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/PKG-INFO +53 -1
  25. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/SOURCES.txt +1 -0
  26. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/requires.txt +13 -13
  27. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/requirements/dev.txt +24 -50
  28. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/requirements/prod.txt +14 -14
  29. cumulusci-3.68.0.dev2/cumulusci/version.txt +0 -1
  30. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/AUTHORS.rst +0 -0
  31. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/CONTRIBUTING.rst +0 -0
  32. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/LICENSE +0 -0
  33. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/MANIFEST.in +0 -0
  34. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/README.rst +0 -0
  35. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/__init__.py +0 -0
  36. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/__main__.py +0 -0
  37. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/__init__.py +0 -0
  38. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/cci.py +0 -0
  39. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/error.py +0 -0
  40. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/flow.py +0 -0
  41. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/logger.py +0 -0
  42. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/org.py +0 -0
  43. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/plan.py +0 -0
  44. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/project.py +0 -0
  45. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/robot.py +0 -0
  46. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/runtime.py +0 -0
  47. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/service.py +0 -0
  48. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/task.py +0 -0
  49. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/__init__.py +0 -0
  50. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_cci.py +0 -0
  51. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_error.py +0 -0
  52. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_flow.py +0 -0
  53. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_logger.py +0 -0
  54. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_org.py +0 -0
  55. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_plan.py +0 -0
  56. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_project.py +0 -0
  57. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_robot.py +0 -0
  58. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_runtime.py +0 -0
  59. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_service.py +0 -0
  60. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_task.py +0 -0
  61. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_ui.py +0 -0
  62. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_utils.py +0 -0
  63. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/utils.py +0 -0
  64. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/ui.py +0 -0
  65. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/utils.py +0 -0
  66. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/conftest.py +0 -0
  67. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/__init__.py +0 -0
  68. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/BaseConfig.py +0 -0
  69. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
  70. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/OrgConfig.py +0 -0
  71. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
  72. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/__init__.py +0 -0
  73. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/base_task_flow_config.py +0 -0
  74. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
  75. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/oauth2_service_config.py +0 -0
  76. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/org_config.py +0 -0
  77. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/scratch_org_config.py +0 -0
  78. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/sfdx_org_config.py +0 -0
  79. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
  80. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/test_config.py +0 -0
  81. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
  82. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/test_config_util.py +0 -0
  83. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/universal_config.py +0 -0
  84. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/util.py +0 -0
  85. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/datasets.py +0 -0
  86. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/debug.py +0 -0
  87. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/__init__.py +0 -0
  88. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/dependencies.py +0 -0
  89. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/github.py +0 -0
  90. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/resolvers.py +0 -0
  91. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
  92. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
  93. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
  94. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
  95. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
  96. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/utils.py +0 -0
  97. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/exceptions.py +0 -0
  98. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/flowrunner.py +0 -0
  99. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/__init__.py +0 -0
  100. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/base_project_keychain.py +0 -0
  101. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -0
  102. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
  103. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/subprocess_keychain.py +0 -0
  104. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/tests/conftest.py +0 -0
  105. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
  106. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
  107. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/__init__.py +0 -0
  108. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/api.py +0 -0
  109. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/plans.py +0 -0
  110. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/tests/test_api.py +0 -0
  111. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/runtime.py +0 -0
  112. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/sfdx.py +0 -0
  113. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source/__init__.py +0 -0
  114. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source/github.py +0 -0
  115. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source/local_folder.py +0 -0
  116. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source_transforms/__init__.py +0 -0
  117. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tasks.py +0 -0
  118. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/template_utils.py +0 -0
  119. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/__init__.py +0 -0
  120. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_datasets_e2e.py +0 -0
  121. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_exceptions.py +0 -0
  122. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_flowrunner.py +0 -0
  123. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_github.py +0 -0
  124. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_sfdx.py +0 -0
  125. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_source.py +0 -0
  126. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_tasks.py +0 -0
  127. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_utils.py +0 -0
  128. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
  129. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_versions.py +0 -0
  130. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/utils.py +0 -0
  131. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/utils.py +0 -0
  132. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/versions.py +0 -0
  133. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/admin_profile.xml +0 -0
  134. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/delete_excludes.txt +0 -0
  135. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/README.md +0 -0
  136. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
  137. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/dot-gitignore +0 -0
  138. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/mapping.yml +0 -0
  139. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/scratch_def.json +0 -0
  140. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/__init__.py +0 -0
  141. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/client.py +0 -0
  142. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/exceptions.py +0 -0
  143. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/salesforce.py +0 -0
  144. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/tests/__init__.py +0 -0
  145. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/tests/test_client.py +0 -0
  146. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
  147. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/CumulusCI.py +0 -0
  148. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/CumulusCI.robot +0 -0
  149. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/Performance.py +0 -0
  150. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/Salesforce.py +0 -0
  151. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/Salesforce.robot +0 -0
  152. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/SalesforceAPI.py +0 -0
  153. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/SalesforcePlaywright.py +0 -0
  154. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/SalesforcePlaywright.robot +0 -0
  155. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/__init__.py +0 -0
  156. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/base_library.py +0 -0
  157. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/faker_mixin.py +0 -0
  158. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/form_handlers.py +0 -0
  159. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/javascript/cci_init.js +0 -0
  160. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/javascript/cumulusci.js +0 -0
  161. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locator_manager.py +0 -0
  162. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locators_54.py +0 -0
  163. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locators_55.py +0 -0
  164. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locators_56.py +0 -0
  165. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
  166. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
  167. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
  168. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
  169. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
  170. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
  171. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
  172. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/CustomObjectTestPage.py +0 -0
  173. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
  174. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
  175. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
  176. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
  177. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
  178. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
  179. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
  180. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
  181. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
  182. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
  183. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
  184. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
  185. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
  186. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
  187. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/label_locator.robot +0 -0
  188. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/labels.html +0 -0
  189. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
  190. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
  191. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
  192. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
  193. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
  194. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
  195. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
  196. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/javascript_keywords.robot +0 -0
  197. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/open_test_browser.robot +0 -0
  198. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +0 -0
  199. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/ui.robot +0 -0
  200. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
  201. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
  202. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
  203. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_cumulusci_library.py +0 -0
  204. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
  205. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
  206. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_performance.py +0 -0
  207. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
  208. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
  209. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
  210. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_utils.py +0 -0
  211. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/utils.py +0 -0
  212. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/__init__.py +0 -0
  213. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/exceptions.py +0 -0
  214. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/filterable_objects.py +0 -0
  215. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
  216. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/metadata.py +0 -0
  217. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/org_schema.py +0 -0
  218. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
  219. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/package_install.py +0 -0
  220. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
  221. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
  222. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
  223. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
  224. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
  225. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
  226. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
  227. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/utils.py +0 -0
  228. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/schema/cumulusci.jsonschema.json +0 -0
  229. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/__init__.py +0 -0
  230. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/__init__.py +0 -0
  231. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/anon.py +0 -0
  232. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/batch.py +0 -0
  233. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/testrunner.py +0 -0
  234. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
  235. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
  236. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
  237. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/dates.py +0 -0
  238. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/delete.py +0 -0
  239. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract.py +0 -0
  240. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/calculate_dependencies.py +0 -0
  241. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +0 -0
  242. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/hardcoded_default_declarations.py +0 -0
  243. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +0 -0
  244. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +0 -0
  245. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_synthesize_extract_declarations.py +0 -0
  246. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
  247. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate.py +0 -0
  248. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
  249. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
  250. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
  251. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
  252. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/dependency_map.py +0 -0
  253. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/extract_mapping_file_generator.py +0 -0
  254. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/generate_mapping_from_declarations.py +0 -0
  255. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/load_mapping_file_generator.py +0 -0
  256. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_generator_post_processes.py +0 -0
  257. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_transforms.py +0 -0
  258. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_extract_mapping_from_declarations.py +0 -0
  259. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_load_mapping_from_declarations.py +0 -0
  260. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_generator_post_processes.py +0 -0
  261. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_transforms.py +0 -0
  262. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/load.py +0 -0
  263. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
  264. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/query_transformers.py +0 -0
  265. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
  266. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
  267. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
  268. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +0 -0
  269. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +0 -0
  270. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/step.py +0 -0
  271. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
  272. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
  273. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +0 -0
  274. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
  275. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
  276. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
  277. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
  278. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
  279. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
  280. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
  281. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
  282. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/person_accounts.yml +0 -0
  283. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +0 -0
  284. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
  285. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
  286. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
  287. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
  288. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
  289. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
  290. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
  291. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
  292. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
  293. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
  294. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
  295. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
  296. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
  297. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
  298. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
  299. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
  300. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +0 -0
  301. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +0 -0
  302. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +0 -0
  303. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
  304. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
  305. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_delete.py +0 -0
  306. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
  307. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
  308. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
  309. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
  310. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
  311. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
  312. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
  313. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +0 -0
  314. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
  315. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
  316. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_updates.py +0 -0
  317. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_upsert.py +0 -0
  318. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
  319. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/update_describe.py +0 -0
  320. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +0 -0
  321. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
  322. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/update_data.py +0 -0
  323. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/upsert_utils.py +0 -0
  324. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/utils.py +0 -0
  325. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/command.py +0 -0
  326. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/connectedapp.py +0 -0
  327. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/create_package_version.py +0 -0
  328. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/datadictionary.py +0 -0
  329. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/dx_convert_from.py +0 -0
  330. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/__init__.py +0 -0
  331. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/base.py +0 -0
  332. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/commit_status.py +0 -0
  333. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/merge.py +0 -0
  334. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/publish.py +0 -0
  335. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/pull_request.py +0 -0
  336. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/release.py +0 -0
  337. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/release_report.py +0 -0
  338. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tag.py +0 -0
  339. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/__init__.py +0 -0
  340. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
  341. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
  342. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_publish.py +0 -0
  343. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
  344. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_release.py +0 -0
  345. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
  346. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_tag.py +0 -0
  347. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_util.py +0 -0
  348. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
  349. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/util.py +0 -0
  350. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
  351. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
  352. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/base.py +0 -0
  353. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/get_user_info.py +0 -0
  354. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
  355. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
  356. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
  357. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
  358. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
  359. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
  360. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +0 -0
  361. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +0 -0
  362. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
  363. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/__init__.py +0 -0
  364. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/ee_src.py +0 -0
  365. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/managed_src.py +0 -0
  366. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
  367. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/modify.py +0 -0
  368. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
  369. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
  370. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
  371. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
  372. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
  373. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
  374. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
  375. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
  376. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
  377. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/base.py +0 -0
  378. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
  379. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
  380. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
  381. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
  382. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/objects.py +0 -0
  383. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
  384. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
  385. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/remote_site_settings.py +0 -0
  386. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
  387. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
  388. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
  389. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
  390. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
  391. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +0 -0
  392. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
  393. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_objects.py +0 -0
  394. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
  395. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
  396. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_remote_site_settings.py +0 -0
  397. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
  398. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
  399. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
  400. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadeploy.py +0 -0
  401. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metaxml.py +0 -0
  402. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/__init__.py +0 -0
  403. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/licenses.py +0 -0
  404. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/packages.py +0 -0
  405. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/permsets.py +0 -0
  406. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
  407. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/settings.py +0 -0
  408. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/sobjects.py +0 -0
  409. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
  410. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
  411. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
  412. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
  413. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
  414. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
  415. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/README.md +0 -0
  416. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/__init__.py +0 -0
  417. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/push_api.py +0 -0
  418. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/pushfails.py +0 -0
  419. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tasks.py +0 -0
  420. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tests/conftest.py +0 -0
  421. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
  422. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
  423. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/README.md +0 -0
  424. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/__init__.py +0 -0
  425. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
  426. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/generator.py +0 -0
  427. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/parser.py +0 -0
  428. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/provider.py +0 -0
  429. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/task.py +0 -0
  430. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
  431. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
  432. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
  433. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
  434. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
  435. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
  436. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
  437. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
  438. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
  439. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
  440. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
  441. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/__init__.py +0 -0
  442. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
  443. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
  444. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/lint.py +0 -0
  445. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
  446. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
  447. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
  448. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/template.html +0 -0
  449. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
  450. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
  451. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
  452. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
  453. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
  454. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
  455. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
  456. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +0 -0
  457. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
  458. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
  459. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
  460. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
  461. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
  462. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
  463. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
  464. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
  465. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
  466. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
  467. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
  468. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
  469. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
  470. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
  471. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
  472. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
  473. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
  474. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
  475. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
  476. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
  477. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
  478. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
  479. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
  480. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
  481. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/__init__.py +0 -0
  482. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
  483. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/composite.py +0 -0
  484. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
  485. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
  486. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
  487. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
  488. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
  489. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
  490. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
  491. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
  492. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
  493. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
  494. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/profiles.py +0 -0
  495. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
  496. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
  497. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
  498. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
  499. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
  500. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
  501. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
  502. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
  503. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
  504. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
  505. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
  506. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
  507. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
  508. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
  509. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
  510. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
  511. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
  512. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
  513. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
  514. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
  515. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
  516. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
  517. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
  518. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
  519. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
  520. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
  521. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
  522. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
  523. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
  524. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
  525. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
  526. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
  527. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
  528. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
  529. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
  530. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
  531. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
  532. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
  533. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
  534. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
  535. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
  536. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
  537. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
  538. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
  539. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
  540. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
  541. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
  542. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
  543. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/sfdx.py +0 -0
  544. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/__init__.py +0 -0
  545. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/conftest.py +0 -0
  546. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_command.py +0 -0
  547. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
  548. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
  549. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
  550. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
  551. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
  552. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
  553. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
  554. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
  555. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
  556. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
  557. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_util.py +0 -0
  558. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/util.py +0 -0
  559. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/vlocity/exceptions.py +0 -0
  560. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/__init__.py +0 -0
  561. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
  562. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
  563. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +0 -0
  564. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
  565. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +0 -0
  566. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +0 -0
  567. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_entry_points.py +0 -0
  568. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
  569. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_main.py +0 -0
  570. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_schema.py +0 -0
  571. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_vcr_serializer.py +0 -0
  572. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/util.py +0 -0
  573. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/classutils.py +0 -0
  574. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/collections.py +0 -0
  575. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/deprecation.py +0 -0
  576. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/fileutils.py +0 -0
  577. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/git.py +0 -0
  578. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/http/multi_request.py +0 -0
  579. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/http/requests_utils.py +0 -0
  580. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
  581. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/iterators.py +0 -0
  582. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/logging.py +0 -0
  583. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
  584. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
  585. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
  586. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/salesforce/count_sobjects.py +0 -0
  587. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/salesforce/tests/test_count_sobjects.py +0 -0
  588. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_fileutils.py +0 -0
  589. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_git.py +0 -0
  590. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_logging.py +0 -0
  591. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_org_schema.py +0 -0
  592. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
  593. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_waiting.py +0 -0
  594. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/waiting.py +0 -0
  595. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/metadata_tree.py +0 -0
  596. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/robot_xml.py +0 -0
  597. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
  598. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
  599. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
  600. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/cumulusci_yml.py +0 -0
  601. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/model_parser.py +0 -0
  602. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/safer_loader.py +0 -0
  603. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
  604. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
  605. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
  606. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
  607. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/ziputils.py +0 -0
  608. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/dependency_links.txt +0 -0
  609. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/entry_points.txt +0 -0
  610. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/not-zip-safe +0 -0
  611. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/top_level.txt +0 -0
  612. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/Makefile +0 -0
  613. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/conf.py +0 -0
  614. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image1.png +0 -0
  615. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image12.png +0 -0
  616. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image15.png +0 -0
  617. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image17.png +0 -0
  618. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image3.png +0 -0
  619. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/cci_service_list.png +0 -0
  620. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/cumulus_ci_workflow.png +0 -0
  621. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/env-var.png +0 -0
  622. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/env-var2.png +0 -0
  623. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-action-manual-trigger.png +0 -0
  624. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-commit_status_error.png +0 -0
  625. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-commit_status_pass.png +0 -0
  626. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-creating_a_uat_release.png +0 -0
  627. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-environment-packaging.png +0 -0
  628. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-organization-secret.png +0 -0
  629. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-repository-secret.png +0 -0
  630. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_checks.png +0 -0
  631. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_personal_access_token_scopes.png +0 -0
  632. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_secrets.png +0 -0
  633. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_workflow.png +0 -0
  634. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/locate_elements_screenshot.png +0 -0
  635. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/pipx.png +0 -0
  636. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/robot_log_screenshot.png +0 -0
  637. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/robot_toggled_results_screenshot.png +0 -0
  638. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/salesforce-org-process.png +0 -0
  639. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/service-list.png +0 -0
  640. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/skipping_task.png +0 -0
  641. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/windows_python.png +0 -0
  642. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/windows_python_success.png +0 -0
  643. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/make.bat +0 -0
  644. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/pyproject.toml +0 -0
  645. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/setup.cfg +0 -0
  646. {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/setup.py +0 -0
@@ -2,6 +2,58 @@
2
2
  History
3
3
  =======
4
4
 
5
+ 3.69 (2022-11-14)
6
+ -----------------
7
+
8
+ Changes 🎉
9
+
10
+ - Added support for debugging and breakpoints in Playwright-based
11
+ Robot Framework by @boakley in
12
+ https://github.com/SFDO-Tooling/CumulusCI/pull/3408
13
+ - Added option for deploy task to remove selected components from the
14
+ bundle by
15
+ @jkasturi-sf in https://github.com/SFDO-Tooling/CumulusCI/pull/3421
16
+ - Added documentation for using OmniStudio in Cumulus flows by @bethbrains in
17
+ https://github.com/SFDO-Tooling/CumulusCI/pull/3427
18
+ - Update creation of OmniStudio Remote Site Settings for new
19
+ Salesforce domain patterns (e.g. .\*scratch.my.salesforce,
20
+ \*.demo.my.salesforce, etc.) by
21
+ syntaxes (e.g. .*scratch.my.salesforce, \*.demo.my.salesforce, etc.)
22
+ by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3424
23
+ - The deploy_marketing_cloud_package task will now output the
24
+ constructed payload sent to Marketing Cloud when the --debug flag is
25
+ passed. by @TheBitShepherd in
26
+ https://github.com/SFDO-Tooling/CumulusCI/pull/3430
27
+
28
+ 3.68.1 (2022-11-01)
29
+ -------------------
30
+ Critical Changes 🎉
31
+
32
+ - Revert a change in parsing config files which was incompatible with some configs
33
+
34
+ 3.68.0 (2022-10-31)
35
+ -------------------
36
+
37
+ Critical Changes 🎉
38
+
39
+ - Upgraded Robot Framework from version 4.1.3 to version 6. As with most Robot Framework updates, there are a host of new features and a few deprecated features and backwards incompatibilities. For a complete list consult the `Robot Framework release notes <https://github.com/robotframework/robotframework/releases>`__ in https://github.com/SFDO-Tooling/CumulusCI/pull/3417
40
+
41
+ Changes 🎉
42
+
43
+ - Add support for InstallKey, sourceOrg, release keys on 2GP version create by @davidmreed in https://github.com/SFDO-Tooling/CumulusCI/pull/3403
44
+ - We now support the ``Territory2``, ``Territory2Model``, ``Territory2Type``, and ``Territory2Rule`` MetaData types. by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3406
45
+ - Add ``push_upgrade_org`` flow to test in simulated push upgrade environment by @davidmreed in https://github.com/SFDO-Tooling/CumulusCI/pull/3286
46
+ - Fixed bug preventing the ``deploy_omni_studio_site_settings`` task from deploying to scratch orgs with the new ``.scratch.`` domain names by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3411
47
+ - All new keychain details are serialized using JSON, not pickle by @bethbrains in https://github.com/SFDO-Tooling/CumulusCI/pull/3390
48
+ - Snowfakery (upgraded to 3.4) can now generate Event or Meeting Schedules similar to Calendar Apps
49
+ - Snowfakery now has a Salesforce.ContentFile feature for generating Content Versions
50
+
51
+ Issues Fixed 🩴
52
+
53
+ - Bumped key_size from 2048 to 4096 on advice from a security audit by @boakley in https://github.com/SFDO-Tooling/CumulusCI/pull/3389
54
+ - Fixed an issue where unknown deploy statuses could cause polling to hang in the deploy_marketing_cloud_package task by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3394
55
+ - Fixed an injection vulnerability related to unquoted csv writers by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3404
56
+
5
57
  3.66.0 (2022-09-29)
6
58
  -------------------
7
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cumulusci
3
- Version: 3.68.0.dev2
3
+ Version: 3.69.0
4
4
  Summary: Build and release tools for Salesforce developers
5
5
  Home-page: https://github.com/SFDO-Tooling/CumulusCI
6
6
  Author: Salesforce.org
@@ -66,6 +66,58 @@ Description: =========
66
66
  History
67
67
  =======
68
68
 
69
+ 3.69 (2022-11-14)
70
+ -----------------
71
+
72
+ Changes 🎉
73
+
74
+ - Added support for debugging and breakpoints in Playwright-based
75
+ Robot Framework by @boakley in
76
+ https://github.com/SFDO-Tooling/CumulusCI/pull/3408
77
+ - Added option for deploy task to remove selected components from the
78
+ bundle by
79
+ @jkasturi-sf in https://github.com/SFDO-Tooling/CumulusCI/pull/3421
80
+ - Added documentation for using OmniStudio in Cumulus flows by @bethbrains in
81
+ https://github.com/SFDO-Tooling/CumulusCI/pull/3427
82
+ - Update creation of OmniStudio Remote Site Settings for new
83
+ Salesforce domain patterns (e.g. .\*scratch.my.salesforce,
84
+ \*.demo.my.salesforce, etc.) by
85
+ syntaxes (e.g. .*scratch.my.salesforce, \*.demo.my.salesforce, etc.)
86
+ by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3424
87
+ - The deploy_marketing_cloud_package task will now output the
88
+ constructed payload sent to Marketing Cloud when the --debug flag is
89
+ passed. by @TheBitShepherd in
90
+ https://github.com/SFDO-Tooling/CumulusCI/pull/3430
91
+
92
+ 3.68.1 (2022-11-01)
93
+ -------------------
94
+ Critical Changes 🎉
95
+
96
+ - Revert a change in parsing config files which was incompatible with some configs
97
+
98
+ 3.68.0 (2022-10-31)
99
+ -------------------
100
+
101
+ Critical Changes 🎉
102
+
103
+ - Upgraded Robot Framework from version 4.1.3 to version 6. As with most Robot Framework updates, there are a host of new features and a few deprecated features and backwards incompatibilities. For a complete list consult the `Robot Framework release notes <https://github.com/robotframework/robotframework/releases>`__ in https://github.com/SFDO-Tooling/CumulusCI/pull/3417
104
+
105
+ Changes 🎉
106
+
107
+ - Add support for InstallKey, sourceOrg, release keys on 2GP version create by @davidmreed in https://github.com/SFDO-Tooling/CumulusCI/pull/3403
108
+ - We now support the ``Territory2``, ``Territory2Model``, ``Territory2Type``, and ``Territory2Rule`` MetaData types. by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3406
109
+ - Add ``push_upgrade_org`` flow to test in simulated push upgrade environment by @davidmreed in https://github.com/SFDO-Tooling/CumulusCI/pull/3286
110
+ - Fixed bug preventing the ``deploy_omni_studio_site_settings`` task from deploying to scratch orgs with the new ``.scratch.`` domain names by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3411
111
+ - All new keychain details are serialized using JSON, not pickle by @bethbrains in https://github.com/SFDO-Tooling/CumulusCI/pull/3390
112
+ - Snowfakery (upgraded to 3.4) can now generate Event or Meeting Schedules similar to Calendar Apps
113
+ - Snowfakery now has a Salesforce.ContentFile feature for generating Content Versions
114
+
115
+ Issues Fixed 🩴
116
+
117
+ - Bumped key_size from 2048 to 4096 on advice from a security audit by @boakley in https://github.com/SFDO-Tooling/CumulusCI/pull/3389
118
+ - Fixed an issue where unknown deploy statuses could cause polling to hang in the deploy_marketing_cloud_package task by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3394
119
+ - Fixed an injection vulnerability related to unquoted csv writers by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3404
120
+
69
121
  3.66.0 (2022-09-29)
70
122
  -------------------
71
123
 
@@ -1,8 +1,8 @@
1
1
  import logging
2
2
  import os
3
- import typing as T
4
3
  import warnings
5
4
  from functools import lru_cache
5
+ from typing import Any, Dict, Optional
6
6
 
7
7
  # turn on strictness.
8
8
  # delete this when strictness is mandatory
@@ -15,8 +15,9 @@ class BaseConfig(object):
15
15
 
16
16
  defaults = {}
17
17
  config: dict
18
+ logger: logging.Logger
18
19
 
19
- def __init__(self, config=None, keychain=None):
20
+ def __init__(self, config: Optional[dict] = None, keychain=None):
20
21
  if config is None:
21
22
  self.config = {}
22
23
  else:
@@ -44,11 +45,11 @@ class BaseConfig(object):
44
45
  pass
45
46
 
46
47
  @classmethod
47
- def _allowed_names(cls) -> T.Dict[str, type]:
48
+ def _allowed_names(cls) -> Dict[str, type]:
48
49
  return getattr(cls, "__annotations__", {})
49
50
 
50
51
  # long term plan is to get rid of this
51
- def __getattr__(self, name):
52
+ def __getattr__(self, name: str) -> Any:
52
53
  """Look up a property in a sub-dictionary
53
54
 
54
55
  Property names should be declared in each Config class with type annotations.
@@ -70,10 +71,10 @@ class BaseConfig(object):
70
71
 
71
72
  @classmethod
72
73
  @lru_cache
73
- def _all_allowed_names(cls):
74
+ def _all_allowed_names(cls) -> Dict[str, type]:
74
75
  "Allowed names from this class and its base classes"
75
76
  allowed_names_from_all_base_classes = (
76
- baseclass._allowed_names()
77
+ baseclass._allowed_names() # type: ignore
77
78
  for baseclass in cls.__mro__
78
79
  if hasattr(baseclass, "_allowed_names")
79
80
  )
@@ -82,11 +83,13 @@ class BaseConfig(object):
82
83
  ret.update(d)
83
84
  return ret
84
85
 
85
- def lookup(self, name, default=None, already_called_getattr=False):
86
+ def lookup(
87
+ self, name: str, default: Any = None, already_called_getattr: bool = False
88
+ ) -> Any:
86
89
  tree = name.split("__")
87
90
  if name.startswith("_"):
88
91
  raise AttributeError(f"Attribute {name} not found")
89
- value = None
92
+ value: Any = None
90
93
  value_found = False
91
94
  config = self.config
92
95
  if len(tree) > 1:
@@ -8,8 +8,9 @@ from distutils.version import LooseVersion
8
8
  from io import StringIO
9
9
  from itertools import chain
10
10
  from pathlib import Path
11
- from typing import Optional, Union
11
+ from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Union
12
12
 
13
+ from github3 import GitHub
13
14
  from github3.repos.repo import Repository
14
15
 
15
16
  from cumulusci.core.config.base_config import BaseConfig
@@ -20,7 +21,8 @@ API_VERSION_RE = re.compile(r"^\d\d+\.0$")
20
21
  import github3
21
22
  from pydantic import ValidationError
22
23
 
23
- from cumulusci.core.config import BaseTaskFlowConfig
24
+ from cumulusci.core.config import FlowConfig, TaskConfig
25
+ from cumulusci.core.config.base_task_flow_config import BaseTaskFlowConfig
24
26
  from cumulusci.core.exceptions import (
25
27
  ConfigError,
26
28
  GithubException,
@@ -36,7 +38,7 @@ from cumulusci.core.github import (
36
38
  )
37
39
  from cumulusci.core.source import GitHubSource, LocalFolderSource, NullSource
38
40
  from cumulusci.core.utils import merge_config
39
- from cumulusci.utils.fileutils import open_fs_resource
41
+ from cumulusci.utils.fileutils import FSResource, open_fs_resource
40
42
  from cumulusci.utils.git import current_branch, git_path, parse_repo_url, split_repo_url
41
43
  from cumulusci.utils.yaml.cumulusci_yml import (
42
44
  GitHubSourceModel,
@@ -44,6 +46,10 @@ from cumulusci.utils.yaml.cumulusci_yml import (
44
46
  cci_safe_load,
45
47
  )
46
48
 
49
+ if TYPE_CHECKING:
50
+ from cumulusci.core.config.universal_config import UniversalConfig
51
+ from cumulusci.core.keychain.base_project_keychain import BaseProjectKeychain
52
+
47
53
 
48
54
  class ProjectConfigPropertiesMixin(BaseConfig):
49
55
  """Mixin for shared properties used by ProjectConfigs and UniversalConfigs"""
@@ -65,9 +71,26 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
65
71
  """Base class for a project's configuration which extends the global config"""
66
72
 
67
73
  config_filename = "cumulusci.yml"
74
+ universal_config_obj: "UniversalConfig"
75
+ keychain: Optional["BaseProjectKeychain"]
76
+ _repo_info: Dict[str, Any]
77
+ config_project: dict
78
+ config_project_local: dict
79
+ config_additional_yaml: dict
80
+ additional_yaml: Optional[str]
81
+ source: Union[NullSource, GitHubSource, LocalFolderSource]
82
+ _cache_dir: Optional[Path]
83
+ included_sources: Dict[
84
+ Union[GitHubSourceModel, LocalFolderSourceModel], "BaseProjectConfig"
85
+ ]
68
86
 
69
87
  def __init__(
70
- self, universal_config_obj, config=None, cache_dir=None, *args, **kwargs
88
+ self,
89
+ universal_config_obj: "UniversalConfig",
90
+ config: Optional[dict] = None,
91
+ cache_dir: Optional[Path] = None,
92
+ *args,
93
+ **kwargs,
71
94
  ):
72
95
  self.universal_config_obj = universal_config_obj
73
96
  self.keychain = None
@@ -85,6 +108,8 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
85
108
 
86
109
  # optionally pass in a kwarg named 'additional_yaml' that will
87
110
  # be added to the YAML merge stack.
111
+ # Called from MetaCI in metaci/cumulusci/config.py
112
+ # https://github.com/SFDO-Tooling/MetaCI/blob/36a0f4654/metaci/cumulusci/config.py#L8-L11
88
113
  self.additional_yaml = None
89
114
  if "additional_yaml" in kwargs:
90
115
  self.additional_yaml = kwargs.pop("additional_yaml")
@@ -96,10 +121,10 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
96
121
  # Store requested cache directory, which may be our parent's if we are a subproject
97
122
  self._cache_dir = cache_dir
98
123
 
99
- super(BaseProjectConfig, self).__init__(config=config)
124
+ super().__init__(config=config)
100
125
 
101
126
  @property
102
- def config_project_local_path(self):
127
+ def config_project_local_path(self) -> Optional[str]:
103
128
  path = Path(self.project_local_dir) / self.config_filename
104
129
  if path.is_file():
105
130
  return str(path)
@@ -175,20 +200,20 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
175
200
  raise ConfigError(message)
176
201
 
177
202
  @property
178
- def config_global(self):
203
+ def config_global(self) -> dict:
179
204
  return self.universal_config_obj.config_global
180
205
 
181
206
  @property
182
- def config_universal(self):
207
+ def config_universal(self) -> dict:
183
208
  return self.universal_config_obj.config_universal
184
209
 
185
210
  @property
186
- def repo_info(self):
211
+ def repo_info(self) -> Dict[str, Any]:
187
212
  if self._repo_info is not None:
188
213
  return self._repo_info
189
214
 
190
215
  # Detect if we are running in a CI environment and get repo info
191
- # from env vars for the enviornment instead of .git files
216
+ # from env vars for the environment instead of .git files
192
217
  info = {"ci": None}
193
218
 
194
219
  # Make sure that the CUMULUSCI_AUTO_DETECT environment variable is
@@ -220,7 +245,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
220
245
  self._repo_info = info
221
246
  return self._repo_info
222
247
 
223
- def _apply_repo_env_var_overrides(self, info):
248
+ def _apply_repo_env_var_overrides(self, info: Dict[str, Any]):
224
249
  """Apply CUMULUSCI_REPO_* environment variables last so they can
225
250
  override and fill in missing values from the CI environment"""
226
251
  self._override_repo_env_var("CUMULUSCI_REPO_BRANCH", "branch", info)
@@ -239,14 +264,18 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
239
264
  url_info["url"] = repo_url
240
265
  info.update(url_info)
241
266
 
242
- def _override_repo_env_var(self, repo_env_var, local_var, info):
243
- repo_env_var = os.environ.get(repo_env_var)
244
- if repo_env_var:
245
- if repo_env_var != info.get(local_var):
246
- self.logger.info("{} found, using its value for configuration.")
247
- info[local_var] = repo_env_var
267
+ def _override_repo_env_var(
268
+ self, repo_env_var: str, local_var: str, info: Dict[str, Any]
269
+ ):
270
+ env_value: Optional[str] = os.environ.get(repo_env_var)
271
+ if env_value:
272
+ if env_value != info.get(local_var):
273
+ self.logger.info(
274
+ f"{repo_env_var} found, using its value for configuration."
275
+ )
276
+ info[local_var] = env_value
248
277
 
249
- def _validate_required_git_info(self, info):
278
+ def _validate_required_git_info(self, info: Dict[str, Any]):
250
279
  """Ensures that we have the required git info or throw a ConfigError"""
251
280
  validate = {
252
281
  # <key>: <env var to manually override>
@@ -265,7 +294,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
265
294
  message += f" with the {env_var} environment variable."
266
295
  raise ConfigError(message)
267
296
 
268
- def _log_detected_overrides_as_warning(self, info):
297
+ def _log_detected_overrides_as_warning(self, info: Dict[str, Any]):
269
298
  self.logger.info("")
270
299
  self.logger.warning("Using environment variables to override repo info:")
271
300
  keys = list(info.keys())
@@ -274,7 +303,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
274
303
  self.logger.warning(f" {key}: {info[key]}")
275
304
  self.logger.info("")
276
305
 
277
- def git_config_remote_origin_url(self):
306
+ def git_config_remote_origin_url(self) -> Optional[str]:
278
307
  """Returns the url under the [remote origin]
279
308
  section of the .git/config file. Returns None
280
309
  if .git/config file not present or no matching
@@ -288,7 +317,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
288
317
  return url
289
318
 
290
319
  @property
291
- def repo_root(self):
320
+ def repo_root(self) -> Optional[str]:
292
321
  path = self.repo_info.get("root")
293
322
  if path:
294
323
  return path
@@ -314,7 +343,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
314
343
  return parse_repo_url(url_line)[2]
315
344
 
316
345
  @property
317
- def repo_name(self):
346
+ def repo_name(self) -> Optional[str]:
318
347
  name = self.repo_info.get("name")
319
348
  if name:
320
349
  return name
@@ -327,7 +356,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
327
356
  return split_repo_url(url_line)[1]
328
357
 
329
358
  @property
330
- def repo_url(self):
359
+ def repo_url(self) -> Optional[str]:
331
360
  url = self.repo_info.get("url")
332
361
  if url:
333
362
  return url
@@ -339,7 +368,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
339
368
  return url
340
369
 
341
370
  @property
342
- def repo_owner(self):
371
+ def repo_owner(self) -> Optional[str]:
343
372
  owner = self.repo_info.get("owner")
344
373
  if owner:
345
374
  return owner
@@ -353,7 +382,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
353
382
  return split_repo_url(url_line)[0]
354
383
 
355
384
  @property
356
- def repo_branch(self):
385
+ def repo_branch(self) -> Optional[str]:
357
386
  branch = self.repo_info.get("branch")
358
387
  if branch:
359
388
  return branch
@@ -364,7 +393,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
364
393
  return current_branch(self.repo_root)
365
394
 
366
395
  @property
367
- def repo_commit(self):
396
+ def repo_commit(self) -> Optional[str]:
368
397
  commit = self.repo_info.get("commit")
369
398
  if commit:
370
399
  return commit
@@ -398,10 +427,10 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
398
427
  ):
399
428
  return parts[0]
400
429
 
401
- def get_github_api(self, url=None):
430
+ def get_github_api(self, url: Optional[str] = None) -> GitHub:
402
431
  return get_github_api_for_repo(self.keychain, url or self.repo_url)
403
432
 
404
- def get_repo(self):
433
+ def get_repo(self) -> Repository:
405
434
  repo = self.get_github_api(self.repo_url).repository(
406
435
  self.repo_owner, self.repo_name
407
436
  )
@@ -412,7 +441,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
412
441
  return repo
413
442
 
414
443
  # TODO: These methods are duplicative with `find_latest_release()`
415
- def get_latest_tag(self, beta=False):
444
+ def get_latest_tag(self, beta: bool = False) -> str:
416
445
  """Query Github Releases to find the latest production or beta tag"""
417
446
  repo = self.get_repo()
418
447
  if not beta:
@@ -427,7 +456,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
427
456
  else:
428
457
  return self._get_latest_tag_for_prefix(repo, self.project__git__prefix_beta)
429
458
 
430
- def _get_latest_tag_for_prefix(self, repo, prefix):
459
+ def _get_latest_tag_for_prefix(self, repo: Repository, prefix: str) -> str:
431
460
  for release in repo.releases():
432
461
  if not release.tag_name.startswith(prefix):
433
462
  continue
@@ -436,14 +465,14 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
436
465
  f"No release found for {self.repo_url} with tag prefix {prefix}"
437
466
  )
438
467
 
439
- def get_latest_version(self, beta=False):
468
+ def get_latest_version(self, beta: bool = False) -> Optional[LooseVersion]:
440
469
  """Query Github Releases to find the latest production or beta release"""
441
470
  tag = self.get_latest_tag(beta)
442
471
  version = self.get_version_for_tag(tag)
443
472
  if version is not None:
444
473
  return LooseVersion(version)
445
474
 
446
- def get_previous_version(self):
475
+ def get_previous_version(self) -> Optional[LooseVersion]:
447
476
  """Query GitHub releases to find the previous production release"""
448
477
  repo = self.get_repo()
449
478
  release = find_previous_release(repo, self.project__git__prefix_release)
@@ -451,7 +480,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
451
480
  return LooseVersion(self.get_version_for_tag(release.tag_name))
452
481
 
453
482
  @property
454
- def config_project_path(self):
483
+ def config_project_path(self) -> Optional[str]:
455
484
  if not self.repo_root:
456
485
  return
457
486
  path = Path(self.repo_root) / self.config_filename
@@ -459,7 +488,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
459
488
  return str(path)
460
489
 
461
490
  @property
462
- def project_local_dir(self):
491
+ def project_local_dir(self) -> str:
463
492
  """location of the user local directory for the project
464
493
  e.g., ~/.cumulusci/NPSP-Extension-Test/"""
465
494
 
@@ -476,7 +505,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
476
505
  return path
477
506
 
478
507
  @property
479
- def default_package_path(self):
508
+ def default_package_path(self) -> Path:
480
509
  if self.project__source_format == "sfdx":
481
510
  relpath = "force-app"
482
511
  for pkg in self.sfdx_project_config.get("packageDirectories", []):
@@ -487,21 +516,26 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
487
516
  return Path(self.repo_root, relpath).resolve()
488
517
 
489
518
  @property
490
- def sfdx_project_config(self):
519
+ def sfdx_project_config(self) -> Dict[str, Any]:
491
520
  with open(
492
521
  Path(self.repo_root) / "sfdx-project.json", "r", encoding="utf-8"
493
522
  ) as f:
494
523
  config = json.load(f)
495
524
  return config
496
525
 
497
- def get_tag_for_version(self, prefix, version):
526
+ def get_tag_for_version(self, prefix: str, version: str) -> str:
498
527
  """Given a prefix and version, returns the appropriate tag name to use."""
499
528
  try:
500
529
  return PackageVersionNumber.parse(version).format_tag(prefix)
501
530
  except ValueError:
502
531
  return f"{prefix}{version}"
503
532
 
504
- def get_version_for_tag(self, tag, prefix_beta=None, prefix_release=None):
533
+ def get_version_for_tag(
534
+ self,
535
+ tag: str,
536
+ prefix_beta: Optional[str] = None,
537
+ prefix_release: Optional[str] = None,
538
+ ) -> Optional[str]:
505
539
  try:
506
540
  return PackageVersionNumber.parse_tag(
507
541
  tag,
@@ -511,7 +545,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
511
545
  except ValueError:
512
546
  pass
513
547
 
514
- def set_keychain(self, keychain):
548
+ def set_keychain(self, keychain: "BaseProjectKeychain"):
515
549
  self.keychain = keychain
516
550
 
517
551
  def _check_keychain(self):
@@ -522,11 +556,11 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
522
556
  )
523
557
 
524
558
  @catch_common_github_auth_errors
525
- def get_repo_from_url(self, url) -> Optional[Repository]:
559
+ def get_repo_from_url(self, url: str) -> Optional[Repository]:
526
560
  owner, name = split_repo_url(url)
527
561
  return self.get_github_api(url).repository(owner, name)
528
562
 
529
- def get_task(self, name):
563
+ def get_task(self, name: str) -> TaskConfig:
530
564
  """Get a TaskConfig by task name
531
565
 
532
566
  If the name has a colon, look for it in a different project config.
@@ -541,7 +575,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
541
575
  task_config.project_config = self
542
576
  return task_config
543
577
 
544
- def get_flow(self, name):
578
+ def get_flow(self, name) -> FlowConfig:
545
579
  """Get a FlowConfig by flow name
546
580
 
547
581
  If the name has a colon, look for it in a different project config.
@@ -558,7 +592,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
558
592
  flow_config.project_config = self
559
593
  return flow_config
560
594
 
561
- def get_namespace(self, ns: str):
595
+ def get_namespace(self, ns: str) -> "BaseProjectConfig":
562
596
  """Look up another project config by its name in the `sources` config.
563
597
 
564
598
  Also makes sure the project has been fetched, if it's from an external source.
@@ -571,7 +605,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
571
605
 
572
606
  def include_source(
573
607
  self, spec: Union[GitHubSourceModel, LocalFolderSourceModel, dict]
574
- ):
608
+ ) -> "BaseProjectConfig":
575
609
  """Make sure a project has been fetched from its source.
576
610
 
577
611
  This either fetches the project code and constructs its project config,
@@ -609,7 +643,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
609
643
 
610
644
  return project_config
611
645
 
612
- def construct_subproject_config(self, **kwargs):
646
+ def construct_subproject_config(self, **kwargs) -> "BaseProjectConfig":
613
647
  """Construct another project config for an external source"""
614
648
  return self.__class__(
615
649
  self.universal_config_obj,
@@ -618,12 +652,12 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
618
652
  **kwargs,
619
653
  )
620
654
 
621
- def relpath(self, path):
655
+ def relpath(self, path: str) -> str:
622
656
  """Convert path to be relative to the project repo root."""
623
657
  return os.path.relpath(os.path.join(self.repo_root, path))
624
658
 
625
659
  @property
626
- def cache_dir(self):
660
+ def cache_dir(self) -> Path:
627
661
  "A project cache which is on the local filesystem. Prefer open_cache where possible."
628
662
  if self._cache_dir:
629
663
  return self._cache_dir
@@ -635,7 +669,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
635
669
  return cache_dir
636
670
 
637
671
  @contextmanager
638
- def open_cache(self, cache_name):
672
+ def open_cache(self, cache_name: str) -> Iterable[FSResource]:
639
673
  "A context managed PyFilesystem-based cache which could theoretically be on any filesystem."
640
674
  with open_fs_resource(self.cache_dir / cache_name) as cache_dir:
641
675
  cache_dir.mkdir(exist_ok=True, parents=True)
@@ -108,7 +108,7 @@ def _determine_github_client(host: str, client_params: dict) -> GitHub:
108
108
  return client_cls(**params)
109
109
 
110
110
 
111
- def get_github_api_for_repo(keychain, repo_url, session=None):
111
+ def get_github_api_for_repo(keychain, repo_url, session=None) -> GitHub:
112
112
  owner, repo_name, host = parse_repo_url(repo_url)
113
113
  gh: GitHub = _determine_github_client(
114
114
  host,