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.
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/HISTORY.rst +52 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/PKG-INFO +53 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/base_config.py +11 -8
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/project_config.py +82 -48
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/github.py +1 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source_transforms/tests/test_transforms.py +143 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source_transforms/transforms.py +33 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cumulusci.yml +7 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/package_zip.py +5 -5
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/deploy.py +5 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/package.py +204 -3
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_package.py +2 -2
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +1 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/ui.py +86 -62
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/libdoc.py +9 -2
- cumulusci-3.69.0/cumulusci/tasks/robotframework/tests/test_browser_proxies.py +137 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_debugger.py +34 -64
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/vlocity/tests/test_vlocity.py +49 -28
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/vlocity/vlocity.py +120 -25
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_utils.py +13 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/__init__.py +9 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/__init__.py +5 -1
- cumulusci-3.69.0/cumulusci/version.txt +1 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/PKG-INFO +53 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/SOURCES.txt +1 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/requires.txt +13 -13
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/requirements/dev.txt +24 -50
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/requirements/prod.txt +14 -14
- cumulusci-3.68.0.dev2/cumulusci/version.txt +0 -1
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/AUTHORS.rst +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/CONTRIBUTING.rst +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/LICENSE +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/MANIFEST.in +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/README.rst +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/__main__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/cci.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/error.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/flow.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/logger.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/org.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/plan.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/project.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/robot.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/runtime.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/service.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/task.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_cci.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_error.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_flow.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_logger.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_org.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_plan.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_project.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_robot.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_runtime.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_service.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_task.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_ui.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/test_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/tests/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/ui.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/cli/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/conftest.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/BaseConfig.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/OrgConfig.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/base_task_flow_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/oauth2_service_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/org_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/scratch_org_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/sfdx_org_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/test_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/tests/test_config_util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/universal_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/config/util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/datasets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/debug.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/dependencies.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/github.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/resolvers.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/dependencies/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/exceptions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/flowrunner.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/base_project_keychain.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/subprocess_keychain.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/tests/conftest.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/plans.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/metadeploy/tests/test_api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/runtime.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/sfdx.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source/github.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source/local_folder.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/source_transforms/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/template_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_datasets_e2e.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_exceptions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_flowrunner.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_github.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_sfdx.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_source.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/test_versions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/tests/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/core/versions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/admin_profile.xml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/delete_excludes.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/README.md +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/dot-gitignore +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/mapping.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/files/templates/project/scratch_def.json +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/client.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/exceptions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/salesforce.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/tests/test_client.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/CumulusCI.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/CumulusCI.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/Performance.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/Salesforce.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/Salesforce.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/SalesforceAPI.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/SalesforcePlaywright.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/SalesforcePlaywright.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/base_library.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/faker_mixin.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/form_handlers.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/javascript/cci_init.js +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/javascript/cumulusci.js +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locator_manager.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locators_54.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locators_55.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/locators_56.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/CustomObjectTestPage.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/label_locator.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/labels.html +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/javascript_keywords.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/open_test_browser.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/playwright/ui.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_cumulusci_library.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_performance.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/tests/test_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/robotframework/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/exceptions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/filterable_objects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/metadata.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/org_schema.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/package_install.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/salesforce_api/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/schema/cumulusci.jsonschema.json +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/anon.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/batch.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/testrunner.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/dates.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/delete.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/calculate_dependencies.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/hardcoded_default_declarations.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_synthesize_extract_declarations.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/dependency_map.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/extract_mapping_file_generator.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/generate_mapping_from_declarations.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/load_mapping_file_generator.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_generator_post_processes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_transforms.py +0 -0
- {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
- {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
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_generator_post_processes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_transforms.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/load.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/query_transformers.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/step.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/person_accounts.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_delete.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_updates.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_upsert.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/update_describe.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/update_data.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/upsert_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/bulkdata/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/command.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/connectedapp.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/create_package_version.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/datadictionary.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/dx_convert_from.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/base.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/commit_status.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/merge.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/publish.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/pull_request.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/release.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/release_report.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tag.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_publish.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_release.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_tag.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/test_util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/github/util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/base.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/get_user_info.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/ee_src.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/managed_src.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/modify.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
- {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
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/base.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/objects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/remote_site_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_objects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_remote_site_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metadeploy.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/metaxml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/licenses.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/packages.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/permsets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/sobjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/README.md +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/push_api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/pushfails.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tests/conftest.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/README.md +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/generator.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/parser.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/provider.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/task.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/lint.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/template.html +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/composite.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/profiles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/sfdx.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/conftest.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_command.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/tests/test_util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tasks/vlocity/exceptions.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/__init__.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_entry_points.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_main.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_schema.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/test_vcr_serializer.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/tests/util.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/classutils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/collections.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/deprecation.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/fileutils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/git.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/http/multi_request.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/http/requests_utils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/iterators.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/logging.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/salesforce/count_sobjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/salesforce/tests/test_count_sobjects.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_fileutils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_git.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_logging.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_org_schema.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/tests/test_waiting.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/waiting.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/metadata_tree.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/robot_xml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/cumulusci_yml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/model_parser.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/safer_loader.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci/utils/ziputils.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/dependency_links.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/entry_points.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/not-zip-safe +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/cumulusci.egg-info/top_level.txt +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/Makefile +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/conf.py +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image1.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image12.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image15.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image17.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/diagram/img/image3.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/cci_service_list.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/cumulus_ci_workflow.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/env-var.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/env-var2.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-action-manual-trigger.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-commit_status_error.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-commit_status_pass.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-creating_a_uat_release.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-environment-packaging.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-organization-secret.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github-repository-secret.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_checks.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_personal_access_token_scopes.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_secrets.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/github_workflow.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/locate_elements_screenshot.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/pipx.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/robot_log_screenshot.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/robot_toggled_results_screenshot.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/salesforce-org-process.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/service-list.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/skipping_task.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/windows_python.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/images/windows_python_success.png +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/docs/make.bat +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/pyproject.toml +0 -0
- {cumulusci-3.68.0.dev2 → cumulusci-3.69.0}/setup.cfg +0 -0
- {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.
|
|
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) ->
|
|
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(
|
|
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
|
|
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,
|
|
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(
|
|
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
|
|
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(
|
|
243
|
-
repo_env_var
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
info
|
|
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(
|
|
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,
|