cumulusci-plus 5.0.5__tar.gz → 5.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cumulusci-plus might be problematic. Click here for more details.
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/PKG-INFO +1 -1
- cumulusci_plus-5.0.8/cumulusci/__about__.py +1 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/cci.py +95 -5
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_cci.py +254 -14
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/base.py +124 -4
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/tests/test_dependencies.py +202 -1
- cumulusci_plus-5.0.8/cumulusci/core/tests/test_utils.py +292 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/utils.py +23 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/schema/cumulusci.jsonschema.json +8 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/cumulusci_yml.py +2 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/vcs_source.py +1 -0
- cumulusci_plus-5.0.5/cumulusci/__about__.py +0 -1
- cumulusci_plus-5.0.5/cumulusci/core/tests/test_utils.py +0 -141
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/.gitignore +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/AUTHORS.rst +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/LICENSE +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/README.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/__main__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/error.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/flow.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/logger.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/org.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/plan.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/project.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/robot.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/runtime.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/service.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_error.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_flow.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_logger.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_org.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_plan.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_project.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_robot.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_runtime.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_service.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_ui.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/test_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/tests/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/ui.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cli/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/BaseConfig.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/OrgConfig.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/base_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/base_task_flow_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/oauth2_service_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/org_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/project_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/scratch_org_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/sfdx_org_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/tests/test_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/tests/test_config_util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/universal_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/config/util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/datasets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/debug.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/dependencies.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/github.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/github_resolvers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/resolvers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/tests/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/tests/test_github.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/dependencies/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/enums.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/exceptions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/flowrunner.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/github.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/base_project_keychain.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/serialization.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/subprocess_keychain.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/tests/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/metadeploy/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/metadeploy/api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/metadeploy/plans.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/metadeploy/tests/test_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/runtime.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/sfdx.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/source/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/source/github.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/source/local_folder.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/source_transforms/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/source_transforms/tests/test_transforms.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/source_transforms/transforms.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/template_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_e2e.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_extract_standard_objects.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_read_explicit_extract_declaration.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/fake_remote_repo/cumulusci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/fake_remote_repo/tasks/directory/example_2.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/fake_remote_repo/tasks/example.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/fake_remote_repo_2/cumulusci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/fake_remote_repo_2/tasks/example_3.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_datasets_e2e.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_exceptions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_flowrunner.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_github.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_sfdx.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_source.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/test_versions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/untrusted_repo_child/cumulusci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/untrusted_repo_child/tasks/untrusted_child.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/untrusted_repo_parent/cumulusci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/untrusted_repo_parent/tasks/untrusted_parent.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/tests/yaml/global.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/core/versions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/cumulusci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/admin_profile.xml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/delete_excludes.txt +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/templates/project/README.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/templates/project/cumulusci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/templates/project/dot-gitignore +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/templates/project/mapping.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/files/templates/project/scratch_def.json +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/client.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/exceptions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/salesforce.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/tests/cassettes/test_get_device_code.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/tests/cassettes/test_get_device_oauth_token.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/tests/test_client.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/oauth/tests/test_salesforce.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/plugins/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/plugins/plugin_base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/plugins/plugin_loader.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/CumulusCI.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/CumulusCI.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/Performance.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/Salesforce.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/Salesforce.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/SalesforceAPI.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/SalesforcePlaywright.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/SalesforcePlaywright.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/base_library.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/faker_mixin.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/form_handlers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/javascript/cci_init.js +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/javascript/cumulusci.js +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/locator_manager.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/locators_56.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/locators_57.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/CustomObjectTestPage.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/label_locator.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/labels.html +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/playwright/javascript_keywords.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/playwright/open_test_browser.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/playwright/ui.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_cumulusci_library.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_performance.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_template_util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/tests/test_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/robotframework/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/exceptions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/filterable_objects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/metadata.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/org_schema.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/org_schema_models.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/package_install.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/package_zip.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/rest_deploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/retrieve_profile_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/test_rest_deploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/test_retrieve_profile_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/salesforce_api/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/apex/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/apex/anon.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/apex/batch.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/apex/testrunner.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/apex/tests/cassettes/ManualEditTestApexIntegrationTests.test_run_tests__integration_test.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/base_source_control_task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/dates.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/delete.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract_dataset_utils/calculate_dependencies.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract_dataset_utils/hardcoded_default_declarations.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_synthesize_extract_declarations.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/dependency_map.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/extract_mapping_file_generator.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/generate_mapping_from_declarations.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/load_mapping_file_generator.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_generator_post_processes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_transforms.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_extract_mapping_from_declarations.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_load_mapping_from_declarations.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_generator_post_processes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_transforms.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/load.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/query_transformers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/select_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/step.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_random_strategy.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_annoy_strategy.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_select_and_insert_strategy.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_select_and_insert_strategy_bulk.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_strategy.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_standard_strategy.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__multiple_needed.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__none_needed.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__one_needed.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_snowfakery_query_salesforce.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestUpdatesIntegrationTests.test_updates_task.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_simple_upsert__rest.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert__rest.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_external_id_field__rest.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_external_id_field_rest__duplicate_error.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_poly.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_poly_incomplete.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_poly_wrong.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_strategy.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__invalid_number.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__invalid_strategy.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__non_float.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select_missing_priority_fields.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_select_no_priority_fields.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/person_accounts.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/person_accounts.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/recordtypes.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/recordtypes_2.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/recordtypes_2.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/recordtypes_with_ispersontype.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/recordtypes_with_ispersontype.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_delete.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups_select.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_select.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_select_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_updates.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_upsert.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/testdata.db +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/testdata.sql +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/update_describe.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/update_data.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/upsert_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/bulkdata/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/command.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/connectedapp.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/create_package_version.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/datadictionary.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/dx_convert_from.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/commit_status.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/merge.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/publish.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/pull_request.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/release.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/release_report.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/tag.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/tests/test_util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/tests/test_vcs_migration.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/github/util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/deploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/get_user_info.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/test-mc-pkg.zip +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/test_base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/marketing_cloud/tests/validation-response.json +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/ee_src.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/managed_src.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/modify.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/package.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/.hidden/.keep +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package_install_uninstall.xml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/objects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/remote_site_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_objects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_remote_site_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metadeploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/metaxml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/dataset_load.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/licenses.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/packages.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/permsets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/recordtypes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/retrieve_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/sobjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_dataset_load.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_retrieve_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/README.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/push_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/pushfails.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/tests/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/README.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/exceptions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/generator.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/provider.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/libdoc.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/robotframework.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/template.html +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/test_browser_proxies.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/robotframework/tests/test_robotframework.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/Deploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/DescribeMetadataTypes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/check_components.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/composite.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/insert_record.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/nonsourcetracking.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/org_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/package_upload.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/profiles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/retrieve_profile.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/salesforce_files.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_check_components.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_describemetadatatypes.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_nonsourcetracking.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_retrieve_profile.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_salesforce_files.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/tests/util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/update_profile.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/users/photos.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/sample_data/capture_sample_data.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/sample_data/load_sample_data.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/sample_data/test_capture_sample_data.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/sample_data/test_load_sample_data.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/sfdx.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_command.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_metaxml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_pushfails.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_salesforce.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_sfdx.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/tests/test_util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/commit_status.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/create_commit_status.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/download_extract.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/merge.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/publish.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/pull_request.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/release.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/release_report.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tag.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_commit_status.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_download_extract.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_merge.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_publish.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_pull_request.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_release.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_release_report.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vcs/tests/github/test_tag.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vlocity/exceptions.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vlocity/tests/test_vlocity.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tasks/vlocity/vlocity.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/cassettes/GET_sobjects_Account_PersonAccount_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/cassettes/TestIntegrationInfrastructure.test_integration_tests.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Account_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Case_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Contact_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Custom__c_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Event_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Global_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Lead_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_OpportunityContactRole_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Opportunity_describe.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/GET_sobjects_Organization.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/vcr_string_templates/batchInfoList_xml.tpl +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/vcr_string_templates/batchInfo_xml.tpl +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/vcr_string_templates/jobInfo_insert_xml.tpl +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/shared_cassettes/vcr_string_templates/jobInfo_upsert_xml.tpl +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/test_entry_points.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/test_integration_infrastructure.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/test_main.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/test_schema.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/test_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/test_vcr_serializer.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/uncompressed_cassette.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/tests/util.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/classutils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/collections.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/deprecation.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/encryption.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/fileutils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/git.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/multi_request.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/requests_utils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/tests/cassettes/ManualEditTestCompositeParallelSalesforce.test_http_headers.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_composite_parallel_salesforce.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_errors.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_reference_ids.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/iterators.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/logging.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/metaprogramming.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/options.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/parallel/queries_in_parallel/run_queries_in_parallel.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/parallel/queries_in_parallel/tests/test_run_queries_in_parallel.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/count_sobjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/soql.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/tests/cassettes/ManualEdit_TestCountSObjects.test_count_sobjects__network_errors.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/tests/cassettes/TestCountSObjects.test_count_sobjects__errors.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/tests/cassettes/TestCountSObjects.test_count_sobjects_simple.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/tests/test_count_sobjects.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/salesforce/tests/test_soql.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/cassettes/ManualEditTestDescribeOrg.test_minimal_schema.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/cassettes/ManualEdit_test_describe_to_sql.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_fileutils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_git.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_logging.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_option_parsing.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_org_schema.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/tests/test_waiting.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/version_strings.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/waiting.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/xml/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/xml/metadata_tree.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/xml/robot_xml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/model_parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/safer_loader.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/tests/cassettes/TestCumulusciYml.test_validate_url__with_errors.yaml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/utils/ziputils.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/bootstrap.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/adapter.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/release_notes/generator.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/release_notes/parser.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/release_notes/provider.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/service.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/tests/test_adapter.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/github/tests/test_service.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/models.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/tests/conftest.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/tests/dummy_service.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/tests/test_vcs_base.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/tests/test_vcs_bootstrap.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/cumulusci/vcs/utils/__init__.py +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/docs/adrs/README.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/docs/diagram/README.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/docs/history.md +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/pyproject.toml +0 -0
- {cumulusci_plus-5.0.5 → cumulusci_plus-5.0.8}/robot/CumulusCI/javascript/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cumulusci-plus
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.8
|
|
4
4
|
Summary: Build and release tools for Salesforce developers
|
|
5
5
|
Project-URL: Homepage, https://github.com/jorgesolebur/CumulusCI
|
|
6
6
|
Project-URL: Changelog, https://cumulusci.readthedocs.io/en/stable/history.html
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "5.0.8"
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import code
|
|
2
2
|
import contextlib
|
|
3
|
+
import os
|
|
3
4
|
import pdb
|
|
4
5
|
import runpy
|
|
6
|
+
import signal
|
|
5
7
|
import sys
|
|
6
8
|
import traceback
|
|
7
9
|
|
|
@@ -43,6 +45,71 @@ SUGGEST_ERROR_COMMAND = (
|
|
|
43
45
|
|
|
44
46
|
USAGE_ERRORS = (CumulusCIUsageError, click.UsageError)
|
|
45
47
|
|
|
48
|
+
# Global variable to track the context stack for cleanup on signal
|
|
49
|
+
_exit_stack = None
|
|
50
|
+
_signal_handler_active = False # Flag to prevent recursive signal handler calls
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _signal_handler(signum, frame):
|
|
54
|
+
"""Handle termination signals.
|
|
55
|
+
|
|
56
|
+
This handler ensures the CLI exits gracefully with a failure code when
|
|
57
|
+
receiving SIGTERM or SIGINT signals, such as when an Azure DevOps pipeline
|
|
58
|
+
is cancelled. It also terminates all child processes in the process group.
|
|
59
|
+
"""
|
|
60
|
+
global _signal_handler_active
|
|
61
|
+
|
|
62
|
+
# Prevent recursive signal handler calls
|
|
63
|
+
if _signal_handler_active:
|
|
64
|
+
return
|
|
65
|
+
|
|
66
|
+
_signal_handler_active = True
|
|
67
|
+
|
|
68
|
+
console = Console()
|
|
69
|
+
|
|
70
|
+
signal_names = {signal.SIGTERM: "SIGTERM", signal.SIGINT: "SIGINT"}
|
|
71
|
+
|
|
72
|
+
signal_name = signal_names.get(signum, f"signal {signum}")
|
|
73
|
+
|
|
74
|
+
console.print(
|
|
75
|
+
f"\n[yellow]Received {signal_name} - CumulusCI is being terminated[/yellow]"
|
|
76
|
+
)
|
|
77
|
+
console.print(
|
|
78
|
+
"[yellow]Exiting with failure code due to external cancellation.[/yellow]"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# Clean up managed resources
|
|
82
|
+
if _exit_stack:
|
|
83
|
+
try:
|
|
84
|
+
_exit_stack.close()
|
|
85
|
+
except Exception as e:
|
|
86
|
+
console.print(f"[red]Error during cleanup: {e}[/red]")
|
|
87
|
+
|
|
88
|
+
# Terminate child processes in the process group
|
|
89
|
+
try:
|
|
90
|
+
console.print("[yellow]Terminating child processes...[/yellow]")
|
|
91
|
+
|
|
92
|
+
# Temporarily ignore the signal to prevent recursion
|
|
93
|
+
old_handler = signal.signal(signum, signal.SIG_IGN)
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
pgrp = os.getpgrp()
|
|
97
|
+
# Send signal to all processes in the group except ourselves
|
|
98
|
+
os.killpg(pgrp, signum)
|
|
99
|
+
finally:
|
|
100
|
+
# Restore the original signal handler
|
|
101
|
+
signal.signal(signum, old_handler)
|
|
102
|
+
|
|
103
|
+
except ProcessLookupError:
|
|
104
|
+
# Process group may not exist or may already be terminated
|
|
105
|
+
pass
|
|
106
|
+
except Exception as e:
|
|
107
|
+
console.print(f"[red]Warning: Error terminating child processes: {e}[/red]")
|
|
108
|
+
|
|
109
|
+
# Exit with appropriate failure code
|
|
110
|
+
exit_code = 143 if signum == signal.SIGTERM else 130 # Standard exit codes
|
|
111
|
+
sys.exit(exit_code)
|
|
112
|
+
|
|
46
113
|
|
|
47
114
|
#
|
|
48
115
|
# Root command
|
|
@@ -54,7 +121,25 @@ def main(args=None):
|
|
|
54
121
|
|
|
55
122
|
This wraps the `click` library in order to do some initialization and centralized error handling.
|
|
56
123
|
"""
|
|
124
|
+
global _exit_stack
|
|
125
|
+
|
|
126
|
+
# Create a new process group so we can terminate all child processes
|
|
127
|
+
# when we receive a termination signal
|
|
128
|
+
try:
|
|
129
|
+
if hasattr(os, "setpgrp"):
|
|
130
|
+
# On Unix systems, create a new process group
|
|
131
|
+
os.setpgrp()
|
|
132
|
+
except Exception:
|
|
133
|
+
# On Windows or if setpgrp fails, continue without process group
|
|
134
|
+
pass
|
|
135
|
+
|
|
136
|
+
# Set up signal handlers for graceful termination
|
|
137
|
+
signal.signal(signal.SIGTERM, _signal_handler)
|
|
138
|
+
signal.signal(signal.SIGINT, _signal_handler)
|
|
139
|
+
|
|
57
140
|
with contextlib.ExitStack() as stack:
|
|
141
|
+
_exit_stack = stack # Store reference for signal handler cleanup
|
|
142
|
+
|
|
58
143
|
args = args or sys.argv
|
|
59
144
|
|
|
60
145
|
# (If enabled) set up requests to validate certs using system CA certs instead of certifi
|
|
@@ -98,15 +183,20 @@ def main(args=None):
|
|
|
98
183
|
sys.exit(1)
|
|
99
184
|
except Exception as e:
|
|
100
185
|
if debug:
|
|
186
|
+
console = Console()
|
|
101
187
|
show_debug_info()
|
|
188
|
+
console.print(
|
|
189
|
+
f"\n[red bold]Debug info for bug reports:\n{traceback.format_exc()}"
|
|
190
|
+
)
|
|
191
|
+
sys.exit(1)
|
|
102
192
|
else:
|
|
103
193
|
handle_exception(
|
|
104
|
-
e,
|
|
105
|
-
is_error_command,
|
|
106
|
-
tempfile_path,
|
|
107
|
-
should_show_stacktraces,
|
|
194
|
+
e, is_error_command, tempfile_path, should_show_stacktraces
|
|
108
195
|
)
|
|
109
|
-
|
|
196
|
+
sys.exit(1)
|
|
197
|
+
|
|
198
|
+
# Clear the global reference when exiting normally
|
|
199
|
+
_exit_stack = None
|
|
110
200
|
|
|
111
201
|
|
|
112
202
|
def handle_exception(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
import io
|
|
3
3
|
import os
|
|
4
|
-
import
|
|
4
|
+
import signal
|
|
5
5
|
import sys
|
|
6
6
|
import tempfile
|
|
7
7
|
from pathlib import Path
|
|
@@ -29,19 +29,14 @@ CONSOLE = mock.Mock()
|
|
|
29
29
|
def env_config():
|
|
30
30
|
config = {
|
|
31
31
|
"global_tempdir": tempfile.gettempdir(),
|
|
32
|
-
"tempdir": tempfile.
|
|
33
|
-
"environ_mock": mock.patch.dict(
|
|
34
|
-
os.environ, {"HOME": tempfile.mkdtemp(), "CUMULUSCI_KEY": ""}
|
|
35
|
-
),
|
|
32
|
+
"tempdir": tempfile.gettempdir(),
|
|
36
33
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
config["environ_mock"].stop()
|
|
44
|
-
shutil.rmtree(config["tempdir"])
|
|
34
|
+
|
|
35
|
+
# Reset signal handler flag to ensure clean state for tests
|
|
36
|
+
cci._signal_handler_active = False
|
|
37
|
+
|
|
38
|
+
with mock.patch.dict(os.environ, config):
|
|
39
|
+
yield
|
|
45
40
|
|
|
46
41
|
|
|
47
42
|
@mock.patch("cumulusci.cli.cci.tee_stdout_stderr")
|
|
@@ -266,7 +261,9 @@ def test_cci_org_default__no_orgname(
|
|
|
266
261
|
DEPLOY_CLASS_PATH = f"cumulusci.tasks.salesforce.Deploy{'.Deploy' if sys.version_info >= (3, 11) else ''}"
|
|
267
262
|
|
|
268
263
|
|
|
269
|
-
@mock.patch(
|
|
264
|
+
@mock.patch(
|
|
265
|
+
"cumulusci.cli.cci.init_logger", mock.Mock()
|
|
266
|
+
) # side effects break other tests
|
|
270
267
|
@mock.patch("cumulusci.cli.cci.tee_stdout_stderr", mock.MagicMock())
|
|
271
268
|
@mock.patch(f"{DEPLOY_CLASS_PATH}.__call__", mock.Mock())
|
|
272
269
|
@mock.patch("sys.exit", mock.Mock())
|
|
@@ -543,3 +540,246 @@ def test_dash_dash_version(
|
|
|
543
540
|
|
|
544
541
|
cci.main(["cci", "--version"])
|
|
545
542
|
assert len(show_version_info.mock_calls) == 2
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
@mock.patch("sys.exit")
|
|
546
|
+
@mock.patch("cumulusci.cli.cci.Console")
|
|
547
|
+
@mock.patch("os.killpg")
|
|
548
|
+
@mock.patch("os.getpgrp")
|
|
549
|
+
@mock.patch("signal.signal")
|
|
550
|
+
def test_signal_handler_terminates_process_group(
|
|
551
|
+
mock_signal, mock_getpgrp, mock_killpg, mock_console, mock_exit
|
|
552
|
+
):
|
|
553
|
+
"""Test that the signal handler terminates the process group"""
|
|
554
|
+
console_instance = mock_console.return_value
|
|
555
|
+
mock_getpgrp.return_value = 1234 # Mock process group ID
|
|
556
|
+
|
|
557
|
+
# Mock the global exit stack
|
|
558
|
+
mock_exit_stack = mock.Mock()
|
|
559
|
+
with mock.patch.object(cci, "_exit_stack", mock_exit_stack):
|
|
560
|
+
# Call the signal handler with SIGTERM
|
|
561
|
+
cci._signal_handler(signal.SIGTERM, None)
|
|
562
|
+
|
|
563
|
+
# Verify console output
|
|
564
|
+
console_instance.print.assert_any_call(
|
|
565
|
+
"\n[yellow]Received SIGTERM - CumulusCI is being terminated[/yellow]"
|
|
566
|
+
)
|
|
567
|
+
console_instance.print.assert_any_call(
|
|
568
|
+
"[yellow]Exiting with failure code due to external cancellation.[/yellow]"
|
|
569
|
+
)
|
|
570
|
+
console_instance.print.assert_any_call(
|
|
571
|
+
"[yellow]Terminating child processes...[/yellow]"
|
|
572
|
+
)
|
|
573
|
+
|
|
574
|
+
# Verify cleanup was called
|
|
575
|
+
mock_exit_stack.close.assert_called_once()
|
|
576
|
+
|
|
577
|
+
# Verify signal was temporarily ignored and then restored
|
|
578
|
+
mock_signal.assert_called()
|
|
579
|
+
|
|
580
|
+
# Verify process group was terminated
|
|
581
|
+
mock_getpgrp.assert_called_once()
|
|
582
|
+
mock_killpg.assert_called_once_with(1234, signal.SIGTERM)
|
|
583
|
+
|
|
584
|
+
# Verify exit with correct code
|
|
585
|
+
mock_exit.assert_called_once_with(143)
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
@mock.patch("sys.exit")
|
|
589
|
+
@mock.patch("cumulusci.cli.cci.Console")
|
|
590
|
+
@mock.patch("os.killpg")
|
|
591
|
+
@mock.patch("os.getpgrp")
|
|
592
|
+
@mock.patch("signal.signal")
|
|
593
|
+
def test_signal_handler_sigint(
|
|
594
|
+
mock_signal, mock_getpgrp, mock_killpg, mock_console, mock_exit
|
|
595
|
+
):
|
|
596
|
+
"""Test that the signal handler properly handles SIGINT"""
|
|
597
|
+
console_instance = mock_console.return_value
|
|
598
|
+
mock_getpgrp.return_value = 1234
|
|
599
|
+
|
|
600
|
+
# Mock the global exit stack
|
|
601
|
+
mock_exit_stack = mock.Mock()
|
|
602
|
+
with mock.patch.object(cci, "_exit_stack", mock_exit_stack):
|
|
603
|
+
# Call the signal handler with SIGINT
|
|
604
|
+
cci._signal_handler(signal.SIGINT, None)
|
|
605
|
+
|
|
606
|
+
# Verify console output
|
|
607
|
+
console_instance.print.assert_any_call(
|
|
608
|
+
"\n[yellow]Received SIGINT - CumulusCI is being terminated[/yellow]"
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
# Verify process group was terminated with SIGINT
|
|
612
|
+
mock_killpg.assert_called_once_with(1234, signal.SIGINT)
|
|
613
|
+
|
|
614
|
+
# Verify exit with correct code for SIGINT
|
|
615
|
+
mock_exit.assert_called_once_with(130)
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
@mock.patch("sys.exit")
|
|
619
|
+
@mock.patch("cumulusci.cli.cci.Console")
|
|
620
|
+
def test_signal_handler_prevents_recursion(mock_console, mock_exit):
|
|
621
|
+
"""Test that the signal handler prevents recursive calls"""
|
|
622
|
+
console_instance = mock_console.return_value
|
|
623
|
+
|
|
624
|
+
# Set the flag to simulate handler already active
|
|
625
|
+
with mock.patch.object(cci, "_signal_handler_active", True):
|
|
626
|
+
# Call the signal handler
|
|
627
|
+
cci._signal_handler(signal.SIGTERM, None)
|
|
628
|
+
|
|
629
|
+
# Verify no console output (handler should return immediately)
|
|
630
|
+
console_instance.print.assert_not_called()
|
|
631
|
+
|
|
632
|
+
# Verify no exit call
|
|
633
|
+
mock_exit.assert_not_called()
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
@mock.patch("sys.exit")
|
|
637
|
+
@mock.patch("cumulusci.cli.cci.Console")
|
|
638
|
+
@mock.patch("os.killpg")
|
|
639
|
+
@mock.patch("os.getpgrp")
|
|
640
|
+
@mock.patch("signal.signal")
|
|
641
|
+
def test_signal_handler_handles_killpg_error(
|
|
642
|
+
mock_signal, mock_getpgrp, mock_killpg, mock_console, mock_exit
|
|
643
|
+
):
|
|
644
|
+
"""Test that the signal handler handles errors from killpg gracefully"""
|
|
645
|
+
console_instance = mock_console.return_value
|
|
646
|
+
mock_getpgrp.return_value = 1234
|
|
647
|
+
mock_killpg.side_effect = OSError("Process group not found")
|
|
648
|
+
|
|
649
|
+
# Call the signal handler with SIGTERM
|
|
650
|
+
cci._signal_handler(signal.SIGTERM, None)
|
|
651
|
+
|
|
652
|
+
# Verify error message was printed
|
|
653
|
+
console_instance.print.assert_any_call(
|
|
654
|
+
"[red]Warning: Error terminating child processes: Process group not found[/red]"
|
|
655
|
+
)
|
|
656
|
+
|
|
657
|
+
# Verify it still exits with correct code
|
|
658
|
+
mock_exit.assert_called_once_with(143)
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
@mock.patch("sys.exit")
|
|
662
|
+
@mock.patch("cumulusci.cli.cci.Console")
|
|
663
|
+
def test_signal_handler_without_process_group_support(mock_console, mock_exit):
|
|
664
|
+
"""Test that the signal handler works on systems without process group support"""
|
|
665
|
+
console_instance = mock_console.return_value
|
|
666
|
+
|
|
667
|
+
# Mock the global exit stack
|
|
668
|
+
mock_exit_stack = mock.Mock()
|
|
669
|
+
|
|
670
|
+
# Mock os module to not have killpg or getpgrp
|
|
671
|
+
with mock.patch.object(cci, "_exit_stack", mock_exit_stack):
|
|
672
|
+
with mock.patch.object(os, "killpg", None, create=True):
|
|
673
|
+
with mock.patch.object(os, "getpgrp", None, create=True):
|
|
674
|
+
# Call the signal handler with SIGTERM
|
|
675
|
+
cci._signal_handler(signal.SIGTERM, None)
|
|
676
|
+
|
|
677
|
+
# Verify basic functionality still works
|
|
678
|
+
console_instance.print.assert_any_call(
|
|
679
|
+
"\n[yellow]Received SIGTERM - CumulusCI is being terminated[/yellow]"
|
|
680
|
+
)
|
|
681
|
+
mock_exit.assert_called_once_with(143)
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
@mock.patch("os.setpgrp")
|
|
685
|
+
def test_main_creates_process_group(mock_setpgrp):
|
|
686
|
+
"""Test that main() creates a new process group"""
|
|
687
|
+
# Mock dependencies to avoid actual CLI execution
|
|
688
|
+
with mock.patch.multiple(
|
|
689
|
+
"cumulusci.cli.cci",
|
|
690
|
+
signal=mock.Mock(),
|
|
691
|
+
init_requests_trust=mock.Mock(),
|
|
692
|
+
check_latest_version=mock.Mock(),
|
|
693
|
+
check_latest_plugins=mock.Mock(),
|
|
694
|
+
get_tempfile_logger=mock.Mock(return_value=(mock.Mock(), "tempfile.log")),
|
|
695
|
+
tee_stdout_stderr=mock.Mock(
|
|
696
|
+
return_value=mock.Mock(__enter__=mock.Mock(), __exit__=mock.Mock())
|
|
697
|
+
),
|
|
698
|
+
set_debug_mode=mock.Mock(
|
|
699
|
+
return_value=mock.Mock(__enter__=mock.Mock(), __exit__=mock.Mock())
|
|
700
|
+
),
|
|
701
|
+
CliRuntime=mock.Mock(),
|
|
702
|
+
init_logger=mock.Mock(),
|
|
703
|
+
cli=mock.Mock(),
|
|
704
|
+
):
|
|
705
|
+
try:
|
|
706
|
+
cci.main(["cci", "version"])
|
|
707
|
+
except SystemExit:
|
|
708
|
+
pass # Expected for version command
|
|
709
|
+
|
|
710
|
+
# Verify process group was created
|
|
711
|
+
mock_setpgrp.assert_called_once()
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
@mock.patch("os.setpgrp")
|
|
715
|
+
def test_main_handles_setpgrp_error(mock_setpgrp):
|
|
716
|
+
"""Test that main() handles setpgrp errors gracefully"""
|
|
717
|
+
mock_setpgrp.side_effect = OSError("Operation not permitted")
|
|
718
|
+
|
|
719
|
+
# Mock dependencies to avoid actual CLI execution
|
|
720
|
+
with mock.patch.multiple(
|
|
721
|
+
"cumulusci.cli.cci",
|
|
722
|
+
signal=mock.Mock(),
|
|
723
|
+
init_requests_trust=mock.Mock(),
|
|
724
|
+
check_latest_version=mock.Mock(),
|
|
725
|
+
check_latest_plugins=mock.Mock(),
|
|
726
|
+
get_tempfile_logger=mock.Mock(return_value=(mock.Mock(), "tempfile.log")),
|
|
727
|
+
tee_stdout_stderr=mock.Mock(
|
|
728
|
+
return_value=mock.Mock(__enter__=mock.Mock(), __exit__=mock.Mock())
|
|
729
|
+
),
|
|
730
|
+
set_debug_mode=mock.Mock(
|
|
731
|
+
return_value=mock.Mock(__enter__=mock.Mock(), __exit__=mock.Mock())
|
|
732
|
+
),
|
|
733
|
+
CliRuntime=mock.Mock(),
|
|
734
|
+
init_logger=mock.Mock(),
|
|
735
|
+
cli=mock.Mock(),
|
|
736
|
+
):
|
|
737
|
+
try:
|
|
738
|
+
# Should not raise an exception even if setpgrp fails
|
|
739
|
+
cci.main(["cci", "version"])
|
|
740
|
+
except SystemExit:
|
|
741
|
+
pass # Expected for version command
|
|
742
|
+
except OSError:
|
|
743
|
+
pytest.fail("main() should handle setpgrp errors gracefully")
|
|
744
|
+
|
|
745
|
+
# Verify setpgrp was attempted
|
|
746
|
+
mock_setpgrp.assert_called_once()
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
@mock.patch("signal.signal")
|
|
750
|
+
def test_main_registers_signal_handlers(mock_signal):
|
|
751
|
+
"""Test that main() registers signal handlers"""
|
|
752
|
+
# Create a proper context manager mock
|
|
753
|
+
context_manager_mock = mock.Mock()
|
|
754
|
+
context_manager_mock.__enter__ = mock.Mock(return_value=context_manager_mock)
|
|
755
|
+
context_manager_mock.__exit__ = mock.Mock(return_value=None)
|
|
756
|
+
|
|
757
|
+
# Create another context manager mock for set_debug_mode
|
|
758
|
+
debug_context_mock = mock.Mock()
|
|
759
|
+
debug_context_mock.__enter__ = mock.Mock(return_value=debug_context_mock)
|
|
760
|
+
debug_context_mock.__exit__ = mock.Mock(return_value=None)
|
|
761
|
+
|
|
762
|
+
# Mock dependencies to avoid actual CLI execution
|
|
763
|
+
with mock.patch.multiple(
|
|
764
|
+
"cumulusci.cli.cci",
|
|
765
|
+
init_requests_trust=mock.Mock(),
|
|
766
|
+
check_latest_version=mock.Mock(),
|
|
767
|
+
check_latest_plugins=mock.Mock(),
|
|
768
|
+
get_tempfile_logger=mock.Mock(return_value=(mock.Mock(), "tempfile.log")),
|
|
769
|
+
tee_stdout_stderr=mock.Mock(return_value=context_manager_mock),
|
|
770
|
+
set_debug_mode=mock.Mock(return_value=debug_context_mock),
|
|
771
|
+
CliRuntime=mock.Mock(),
|
|
772
|
+
init_logger=mock.Mock(),
|
|
773
|
+
cli=mock.Mock(),
|
|
774
|
+
):
|
|
775
|
+
try:
|
|
776
|
+
cci.main(["cci", "version"])
|
|
777
|
+
except SystemExit:
|
|
778
|
+
pass # Expected for version command
|
|
779
|
+
|
|
780
|
+
# Verify signal handlers were registered
|
|
781
|
+
expected_calls = [
|
|
782
|
+
mock.call(signal.SIGTERM, cci._signal_handler),
|
|
783
|
+
mock.call(signal.SIGINT, cci._signal_handler),
|
|
784
|
+
]
|
|
785
|
+
mock_signal.assert_has_calls(expected_calls, any_order=True)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import contextlib
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
|
+
from datetime import datetime
|
|
3
4
|
from typing import List, Optional, Type
|
|
4
5
|
from zipfile import ZipFile
|
|
5
6
|
|
|
@@ -9,11 +10,13 @@ from cumulusci.core.config import OrgConfig
|
|
|
9
10
|
from cumulusci.core.config.project_config import BaseProjectConfig
|
|
10
11
|
from cumulusci.core.dependencies.utils import TaskContext
|
|
11
12
|
from cumulusci.core.exceptions import DependencyResolutionError, VcsNotFoundError
|
|
13
|
+
from cumulusci.core.flowrunner import FlowCallback, FlowCoordinator
|
|
12
14
|
from cumulusci.core.sfdx import (
|
|
13
15
|
SourceFormat,
|
|
14
16
|
convert_sfdx_source,
|
|
15
17
|
get_source_format_for_zipfile,
|
|
16
18
|
)
|
|
19
|
+
from cumulusci.core.utils import format_duration
|
|
17
20
|
from cumulusci.salesforce_api.metadata import ApiDeploy
|
|
18
21
|
from cumulusci.salesforce_api.package_zip import MetadataPackageZipBuilder
|
|
19
22
|
from cumulusci.utils import download_extract_vcs_from_repo, temporary_dir
|
|
@@ -153,11 +156,8 @@ class DynamicDependency(Dependency, ABC):
|
|
|
153
156
|
resolve_dependency(self, context, strategies)
|
|
154
157
|
|
|
155
158
|
|
|
156
|
-
class
|
|
157
|
-
"""Abstract base class for static, unmanaged dependencies."""
|
|
158
|
-
|
|
159
|
+
class UnmanagedStaticDependency(StaticDependency, ABC):
|
|
159
160
|
unmanaged: Optional[bool] = None
|
|
160
|
-
subfolder: Optional[str] = None
|
|
161
161
|
namespace_inject: Optional[str] = None
|
|
162
162
|
namespace_strip: Optional[str] = None
|
|
163
163
|
collision_check: Optional[bool] = None
|
|
@@ -171,6 +171,12 @@ class UnmanagedDependency(StaticDependency, ABC):
|
|
|
171
171
|
|
|
172
172
|
return self.unmanaged
|
|
173
173
|
|
|
174
|
+
|
|
175
|
+
class UnmanagedDependency(UnmanagedStaticDependency, ABC):
|
|
176
|
+
"""Abstract base class for static, unmanaged dependencies."""
|
|
177
|
+
|
|
178
|
+
subfolder: Optional[str] = None
|
|
179
|
+
|
|
174
180
|
@abstractmethod
|
|
175
181
|
def _get_zip_src(self, context: BaseProjectConfig) -> ZipFile:
|
|
176
182
|
pass
|
|
@@ -378,6 +384,28 @@ class VcsDynamicDependency(BaseVcsDynamicDependency, ABC):
|
|
|
378
384
|
|
|
379
385
|
return values
|
|
380
386
|
|
|
387
|
+
def _flatten_dependency_flow(
|
|
388
|
+
self,
|
|
389
|
+
remote_config: BaseProjectConfig,
|
|
390
|
+
flow_type: str,
|
|
391
|
+
managed: bool,
|
|
392
|
+
namespace: Optional[str],
|
|
393
|
+
) -> List[StaticDependency]:
|
|
394
|
+
|
|
395
|
+
if remote_config.project.get(flow_type):
|
|
396
|
+
return [
|
|
397
|
+
UnmanagedVcsDependencyFlow(
|
|
398
|
+
url=self.url,
|
|
399
|
+
vcs=self.vcs,
|
|
400
|
+
commit=self.ref,
|
|
401
|
+
flow_name=remote_config.project.get(flow_type),
|
|
402
|
+
unmanaged=not managed,
|
|
403
|
+
namespace_inject=namespace if namespace and managed else None,
|
|
404
|
+
namespace_strip=namespace if namespace and not managed else None,
|
|
405
|
+
)
|
|
406
|
+
]
|
|
407
|
+
return []
|
|
408
|
+
|
|
381
409
|
def _flatten_unpackaged(
|
|
382
410
|
self,
|
|
383
411
|
repo: AbstractRepo,
|
|
@@ -454,6 +482,17 @@ class VcsDynamicDependency(BaseVcsDynamicDependency, ABC):
|
|
|
454
482
|
# Check for unmanaged flag on a namespaced package
|
|
455
483
|
managed = bool(namespace and not self.unmanaged)
|
|
456
484
|
|
|
485
|
+
# Look for any flow to executed in project config
|
|
486
|
+
# Pre flows will run to dynamically generate metadata and deploy.
|
|
487
|
+
deps.extend(
|
|
488
|
+
self._flatten_dependency_flow(
|
|
489
|
+
package_config,
|
|
490
|
+
"dependency_flow_pre",
|
|
491
|
+
managed=managed,
|
|
492
|
+
namespace=namespace,
|
|
493
|
+
)
|
|
494
|
+
)
|
|
495
|
+
|
|
457
496
|
# Look for subfolders under unpackaged/pre
|
|
458
497
|
# unpackaged/pre is always deployed unmanaged, no namespace manipulation.
|
|
459
498
|
deps.extend(
|
|
@@ -482,6 +521,17 @@ class VcsDynamicDependency(BaseVcsDynamicDependency, ABC):
|
|
|
482
521
|
else:
|
|
483
522
|
deps.append(self.package_dependency)
|
|
484
523
|
|
|
524
|
+
# Look for any flow to executed in project config
|
|
525
|
+
# Pre flows will run to dynamically generate metadata and deploy.
|
|
526
|
+
deps.extend(
|
|
527
|
+
self._flatten_dependency_flow(
|
|
528
|
+
package_config,
|
|
529
|
+
"dependency_flow_post",
|
|
530
|
+
managed=managed,
|
|
531
|
+
namespace=namespace,
|
|
532
|
+
)
|
|
533
|
+
)
|
|
534
|
+
|
|
485
535
|
# We always inject the project's namespace into unpackaged/post metadata if managed
|
|
486
536
|
deps.extend(
|
|
487
537
|
self._flatten_unpackaged(
|
|
@@ -559,3 +609,73 @@ class UnmanagedVcsDependency(UnmanagedDependency, ABC):
|
|
|
559
609
|
)
|
|
560
610
|
|
|
561
611
|
return f"{self.url}{subfolder} @{self.ref}"
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
class UnmanagedVcsDependencyFlow(UnmanagedStaticDependency, ABC):
|
|
615
|
+
vcs: str
|
|
616
|
+
url: AnyUrl
|
|
617
|
+
commit: str
|
|
618
|
+
flow_name: str
|
|
619
|
+
callback_class = FlowCallback
|
|
620
|
+
|
|
621
|
+
# Add these fields to support namespace manipulation
|
|
622
|
+
namespace_inject: Optional[str] = None
|
|
623
|
+
namespace_strip: Optional[str] = None
|
|
624
|
+
password_env_name: Optional[str] = None
|
|
625
|
+
|
|
626
|
+
@property
|
|
627
|
+
def name(self):
|
|
628
|
+
return f"Deploy {self.url} Flow: {self.flow_name}"
|
|
629
|
+
|
|
630
|
+
@property
|
|
631
|
+
def description(self):
|
|
632
|
+
return f"{self.url} Flow: {self.flow_name} @{self.commit}"
|
|
633
|
+
|
|
634
|
+
def install(self, context: BaseProjectConfig, org: OrgConfig):
|
|
635
|
+
context.logger.info(f"Deploying dependency Flow from {self.description}")
|
|
636
|
+
|
|
637
|
+
from cumulusci.utils.yaml.cumulusci_yml import VCSSourceModel
|
|
638
|
+
from cumulusci.vcs.vcs_source import VCSSource
|
|
639
|
+
|
|
640
|
+
# Get the VCS Source class from the vcs field.
|
|
641
|
+
source_model = VCSSourceModel(
|
|
642
|
+
vcs=self.vcs,
|
|
643
|
+
url=self.url,
|
|
644
|
+
commit=self.commit,
|
|
645
|
+
allow_remote_code=context.allow_remote_code,
|
|
646
|
+
)
|
|
647
|
+
vcs_source = VCSSource.create(context, source_model)
|
|
648
|
+
|
|
649
|
+
# Fetch the data and get remote project config.
|
|
650
|
+
context.logger.info(f"Fetching from {vcs_source}")
|
|
651
|
+
project_config = vcs_source.fetch()
|
|
652
|
+
|
|
653
|
+
project_config.set_keychain(context.keychain)
|
|
654
|
+
project_config.source = vcs_source
|
|
655
|
+
|
|
656
|
+
# If I can't load remote code, make sure that my
|
|
657
|
+
# included repos can't either.
|
|
658
|
+
if vcs_source.allow_remote_code:
|
|
659
|
+
project_config._add_tasks_directory_to_python_path()
|
|
660
|
+
|
|
661
|
+
# Run the flow.
|
|
662
|
+
flow_config = project_config.get_flow(self.flow_name)
|
|
663
|
+
flow_config.name = self.flow_name
|
|
664
|
+
|
|
665
|
+
coordinator = FlowCoordinator(
|
|
666
|
+
project_config,
|
|
667
|
+
flow_config,
|
|
668
|
+
name=flow_config.name,
|
|
669
|
+
options={
|
|
670
|
+
"unmanaged": self._get_unmanaged(org),
|
|
671
|
+
"namespace_inject": self.namespace_inject,
|
|
672
|
+
"namespace_strip": self.namespace_strip,
|
|
673
|
+
},
|
|
674
|
+
skip=None,
|
|
675
|
+
callbacks=self.callback_class(),
|
|
676
|
+
)
|
|
677
|
+
|
|
678
|
+
start_time = datetime.now()
|
|
679
|
+
coordinator.run(org)
|
|
680
|
+
duration = datetime.now() - start_time
|
|
681
|
+
context.logger.info(f"Ran {self.flow_name} in {format_duration(duration)}")
|