cumulusci 3.52.0.dev0__tar.gz → 3.53.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/HISTORY.rst +41 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/PKG-INFO +43 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/README.rst +1 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/cci.py +8 -2
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/error.py +16 -9
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/org.py +64 -19
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/service.py +32 -7
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_cci.py +10 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_error.py +63 -49
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_org.py +205 -57
- cumulusci-3.53.0/cumulusci/cli/tests/test_service.py +528 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_utils.py +55 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/utils.py +16 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/utils.py +32 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/base_config.py +1 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/marketing_cloud_service_config.py +17 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/org_config.py +13 -2
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/test_config.py +52 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/exceptions.py +6 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/base_project_keychain.py +92 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +25 -14
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/runtime.py +10 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tasks.py +56 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_github.py +7 -7
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_source.py +11 -11
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cumulusci.yml +10 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/CumulusCI.py +26 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_cumulusci_library.py +44 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/schema/cumulusci.jsonschema.json +4 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/delete.py +6 -47
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery.py +12 -2
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +76 -29
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +4 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +10 -0
- cumulusci-3.53.0/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +24 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_delete.py +1 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +6 -22
- cumulusci-3.53.0/cumulusci/tasks/bulkdata/tests/test_updates.py +511 -0
- cumulusci-3.53.0/cumulusci/tasks/bulkdata/update_data.py +260 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/connectedapp.py +2 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_publish.py +11 -11
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_release.py +4 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_tag.py +2 -2
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/base.py +5 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/deploy.py +10 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/get_user_info.py +6 -15
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +1 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +54 -30
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_provider.py +3 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/libdoc.py +33 -5
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +54 -10
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_metadeploy.py +1 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_promote_package_version.py +3 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_schema.py +5 -8
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/fileutils.py +14 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +29 -16
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +13 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +4 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_fileutils.py +23 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/cumulusci_yml.py +8 -0
- cumulusci-3.53.0/cumulusci/version.txt +1 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/PKG-INFO +43 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/SOURCES.txt +4 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/requires.txt +11 -15
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cli.rst +3 -5
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/config.rst +2 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/connected_orgs.rst +22 -16
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/data.rst +48 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/headless.rst +1 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot.rst +1 -0
- cumulusci-3.53.0/docs/robot_locators.rst +203 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/requirements/dev.txt +25 -29
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/requirements/prod.txt +15 -24
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/setup.py +3 -1
- cumulusci-3.52.0.dev0/cumulusci/cli/tests/test_service.py +0 -627
- cumulusci-3.52.0.dev0/cumulusci/version.txt +0 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/AUTHORS.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/CONTRIBUTING.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/LICENSE +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/MANIFEST.in +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/__main__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/logger.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/plan.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/project.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/runtime.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_logger.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_plan.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_project.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_runtime.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/tests/test_ui.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/cli/ui.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/BaseConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/OrgConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/base_task_flow_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/oauth2_service_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/project_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/scratch_org_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/sfdx_org_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/tests/test_config_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/universal_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/config/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/debug.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/resolvers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/dependencies/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/flowrunner.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/metadeploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/source/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/source/github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/source/local_folder.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/template_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_flowrunner.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/test_versions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/tests/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/core/versions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/admin_profile.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/delete_excludes.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/README.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/dot-gitignore +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/mapping.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/files/templates/project/scratch_def.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/client.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/tests/test_client.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/CumulusCI.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/Salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/Salesforce.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/form_handlers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locator_manager.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locators_52.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locators_53.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/locators_54.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/BarTestPage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/robotframework/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/metadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/org_schema.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/package_install.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/package_zip.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/salesforce_api/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/anon.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/batch.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/testrunner.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/dates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/extract.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/load.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/step.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Account.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Case.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Contact.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/Opportunity.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/OpportunityContactRole.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/global_describe.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/bulkdata/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/command.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/create_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/datadictionary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/dx_convert_from.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/base.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/commit_status.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/merge.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/publish.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/pull_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/release.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/release_report.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tag.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/test_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/github/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/ee_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/managed_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/modify.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/package.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/base.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metadeploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/metaxml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/licenses.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/packages.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/permsets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/sobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/README.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/push_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/pushfails.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/README.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/generator.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/provider.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/lint.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/template.html +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/composite.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/profiles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_command.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/tests/test_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tasks/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_entry_points.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_main.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/tests/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/classutils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/git.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/http/multi_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/http/requests_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/iterators.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/logging.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_git.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_logging.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_org_schema.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/tests/test_waiting.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/waiting.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/metadata_tree.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/robot_xml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/model_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/safer_loader.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci/utils/ziputils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/dependency_links.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/entry_points.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/not-zip-safe +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/cumulusci.egg-info/top_level.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/2gp_testing.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/Makefile +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/about.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cheat_sheet.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/commands.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/concepts.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/conf.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/continuous_integration.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/contributing.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cookbook.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/cumulusci_flow.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/dev.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image1.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image12.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image15.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image17.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/diagram/img/image3.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/env_var_reference.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/get_started.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/github_actions.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/history.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/cci_service_list.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/cumulus_ci_workflow.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/env-var.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/env-var2.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github-commit_status_error.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github-commit_status_pass.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github-creating_a_uat_release.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_checks.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_personal_access_token_scopes.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_secrets.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/github_workflow.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/locate_elements_screenshot.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/pipx.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/robot_log_screenshot.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/robot_toggled_results_screenshot.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/salesforce-org-process.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/service-list.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/skipping_task.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/windows_python.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/images/windows_python_success.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/index.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/install.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/internals.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/intro.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/make.bat +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/managed_2gp.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/managed_package.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/metadata_etl.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/npsp_eda_2gp.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/packaging.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/push_upgrades.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/reference.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/release_notes.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot_advanced.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot_debugger.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/robot_tutorial.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/scratch_orgs.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/tutorial.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/unlocked_package.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/docs/unpackaged.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/pyproject.toml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0}/setup.cfg +0 -0
|
@@ -2,7 +2,48 @@
|
|
|
2
2
|
History
|
|
3
3
|
=======
|
|
4
4
|
|
|
5
|
+
3.53.0 (2022-02-24)
|
|
6
|
+
-------------------
|
|
7
|
+
|
|
8
|
+
Critical Changes
|
|
9
|
+
|
|
10
|
+
- CumulusCI now ships with Snowfakery 3.0. See the `Snowfakery release notes <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v3.0.0>`__. Snowfakery 3.0 ships with opt-in features that will become the default in June 2022; please `test your recipes <https://snowfakery.readthedocs.io/en/latest/#snowfakery-3>`__ now with ``snowfakery_version: 3`` to ensure compatibility.
|
|
11
|
+
|
|
12
|
+
Changes
|
|
13
|
+
|
|
14
|
+
- CumulusCI now has an ``update_data`` task that allows updates to existing datasets, in coordination with Snowfakery 3.0.
|
|
15
|
+
- Orgs connected using ``cci org connect`` now keep track of which ``connected_app`` service was used to connect them, and will use the same ``connected_app`` service when getting a fresh access token, even if it isn't currently the default ``connected_app`` service. This makes it easier to use CumulusCI with multiple ``connected_app`` services. (Orgs that were connected before this update will continue to use the default ``connected_app`` service.)
|
|
16
|
+
- When connecting a custom ``connected_app`` service, a default ``login_url`` can be specified (to use a login URL other than https://login.salesforce.com when connecting orgs using this ``connected_app`` service).
|
|
17
|
+
- The ``deploy_marketing_cloud_package`` task now utilizes the new API endpoint for deployments.
|
|
18
|
+
- CumulusCI commands are more resilient in the face of corrupted or impossible to decode org config files.
|
|
19
|
+
- We added documentation about managing Robot Framework locators
|
|
20
|
+
- CumulusCI will now warn Windows users if long pathname support is not set up correctly.
|
|
21
|
+
|
|
22
|
+
Issues Closed
|
|
23
|
+
|
|
24
|
+
- Fixed a bug in the JSON format output of cci service list --json
|
|
25
|
+
|
|
26
|
+
3.52.0 (2022-02-03)
|
|
27
|
+
-------------------
|
|
28
|
+
|
|
29
|
+
Changes
|
|
30
|
+
|
|
31
|
+
* Flow steps can now be replaced with the same syntax for all step types! (Current step types are: 'task' or 'flow'). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override#replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to ``None`` when replacing with a step of a differing type. (#3043)
|
|
32
|
+
* Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
|
|
33
|
+
* Added a new option ``--preview`` to the ``robot_libdoc`` task. When set to ``true`` it automatically opens a browser window to the generated documentation. (#3057)
|
|
34
|
+
* The robot keyword ``Locate element by label`` has been removed from the Salesforce.py library. This wasn't designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the form ``label:<text>`` (eg: ``label:First Name``) (#3048)
|
|
35
|
+
* Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
|
|
36
|
+
* If you have Python code that is importing CumulusCI's config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
|
|
37
|
+
|
|
38
|
+
Issues Closed
|
|
39
|
+
|
|
40
|
+
* Fixed an issue where overriding flow steps was not working as documented. (#3043)
|
|
41
|
+
* We fixed a bug where the ``Run Task`` and ``Run Task Class`` robot keywords throw an error like ``AttributeError: module 'robot.api.logger' has no attribute 'log'`` in rare cases (#3053)
|
|
42
|
+
* Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
|
|
43
|
+
|
|
44
|
+
|
|
5
45
|
3.51.1 (2022-01-25)
|
|
46
|
+
-------------------
|
|
6
47
|
|
|
7
48
|
Issues Closed
|
|
8
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cumulusci
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.53.0
|
|
4
4
|
Summary: Build and release tools for Salesforce developers
|
|
5
5
|
Home-page: https://github.com/SFDO-Tooling/CumulusCI
|
|
6
6
|
Author: Salesforce.org
|
|
@@ -57,9 +57,7 @@ Description: =========
|
|
|
57
57
|
Questions?
|
|
58
58
|
----------
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Others can ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
60
|
+
Ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
63
61
|
|
|
64
62
|
*Please note:* CumulusCI is distributed under an `open source license <https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE>`_ and is not covered by the Salesforce Master Subscription Agreement.
|
|
65
63
|
|
|
@@ -68,7 +66,48 @@ Description: =========
|
|
|
68
66
|
History
|
|
69
67
|
=======
|
|
70
68
|
|
|
69
|
+
3.53.0 (2022-02-24)
|
|
70
|
+
-------------------
|
|
71
|
+
|
|
72
|
+
Critical Changes
|
|
73
|
+
|
|
74
|
+
- CumulusCI now ships with Snowfakery 3.0. See the `Snowfakery release notes <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v3.0.0>`__. Snowfakery 3.0 ships with opt-in features that will become the default in June 2022; please `test your recipes <https://snowfakery.readthedocs.io/en/latest/#snowfakery-3>`__ now with ``snowfakery_version: 3`` to ensure compatibility.
|
|
75
|
+
|
|
76
|
+
Changes
|
|
77
|
+
|
|
78
|
+
- CumulusCI now has an ``update_data`` task that allows updates to existing datasets, in coordination with Snowfakery 3.0.
|
|
79
|
+
- Orgs connected using ``cci org connect`` now keep track of which ``connected_app`` service was used to connect them, and will use the same ``connected_app`` service when getting a fresh access token, even if it isn't currently the default ``connected_app`` service. This makes it easier to use CumulusCI with multiple ``connected_app`` services. (Orgs that were connected before this update will continue to use the default ``connected_app`` service.)
|
|
80
|
+
- When connecting a custom ``connected_app`` service, a default ``login_url`` can be specified (to use a login URL other than https://login.salesforce.com when connecting orgs using this ``connected_app`` service).
|
|
81
|
+
- The ``deploy_marketing_cloud_package`` task now utilizes the new API endpoint for deployments.
|
|
82
|
+
- CumulusCI commands are more resilient in the face of corrupted or impossible to decode org config files.
|
|
83
|
+
- We added documentation about managing Robot Framework locators
|
|
84
|
+
- CumulusCI will now warn Windows users if long pathname support is not set up correctly.
|
|
85
|
+
|
|
86
|
+
Issues Closed
|
|
87
|
+
|
|
88
|
+
- Fixed a bug in the JSON format output of cci service list --json
|
|
89
|
+
|
|
90
|
+
3.52.0 (2022-02-03)
|
|
91
|
+
-------------------
|
|
92
|
+
|
|
93
|
+
Changes
|
|
94
|
+
|
|
95
|
+
* Flow steps can now be replaced with the same syntax for all step types! (Current step types are: 'task' or 'flow'). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override#replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to ``None`` when replacing with a step of a differing type. (#3043)
|
|
96
|
+
* Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
|
|
97
|
+
* Added a new option ``--preview`` to the ``robot_libdoc`` task. When set to ``true`` it automatically opens a browser window to the generated documentation. (#3057)
|
|
98
|
+
* The robot keyword ``Locate element by label`` has been removed from the Salesforce.py library. This wasn't designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the form ``label:<text>`` (eg: ``label:First Name``) (#3048)
|
|
99
|
+
* Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
|
|
100
|
+
* If you have Python code that is importing CumulusCI's config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
|
|
101
|
+
|
|
102
|
+
Issues Closed
|
|
103
|
+
|
|
104
|
+
* Fixed an issue where overriding flow steps was not working as documented. (#3043)
|
|
105
|
+
* We fixed a bug where the ``Run Task`` and ``Run Task Class`` robot keywords throw an error like ``AttributeError: module 'robot.api.logger' has no attribute 'log'`` in rare cases (#3053)
|
|
106
|
+
* Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
|
|
107
|
+
|
|
108
|
+
|
|
71
109
|
3.51.1 (2022-01-25)
|
|
110
|
+
-------------------
|
|
72
111
|
|
|
73
112
|
Issues Closed
|
|
74
113
|
|
|
@@ -49,8 +49,6 @@ from minute 36 through minute 54.
|
|
|
49
49
|
Questions?
|
|
50
50
|
----------
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
Others can ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
52
|
+
Ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
55
53
|
|
|
56
54
|
*Please note:* CumulusCI is distributed under an `open source license <https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE>`_ and is not covered by the Salesforce Master Subscription Agreement.
|
|
@@ -25,7 +25,12 @@ from .project import project
|
|
|
25
25
|
from .runtime import CliRuntime, pass_runtime
|
|
26
26
|
from .service import service
|
|
27
27
|
from .task import task
|
|
28
|
-
from .utils import
|
|
28
|
+
from .utils import (
|
|
29
|
+
check_latest_version,
|
|
30
|
+
get_installed_version,
|
|
31
|
+
get_latest_final_version,
|
|
32
|
+
warn_if_no_long_paths,
|
|
33
|
+
)
|
|
29
34
|
|
|
30
35
|
SUGGEST_ERROR_COMMAND = (
|
|
31
36
|
"""Run this command for more information about debugging errors: cci error --help"""
|
|
@@ -120,7 +125,7 @@ def handle_exception(
|
|
|
120
125
|
traceback.print_exc(file=log_file) # log stacktrace silently
|
|
121
126
|
|
|
122
127
|
if should_show_stacktraces and not isinstance(error, USAGE_ERRORS):
|
|
123
|
-
|
|
128
|
+
error_console.print_exception()
|
|
124
129
|
|
|
125
130
|
|
|
126
131
|
def connection_error_message(console: Console):
|
|
@@ -142,6 +147,7 @@ def show_version_info():
|
|
|
142
147
|
console.print(f"CumulusCI version: {cumulusci.__version__} ({sys.argv[0]})")
|
|
143
148
|
console.print(f"Python version: {sys.version.split()[0]} ({sys.executable})")
|
|
144
149
|
console.print()
|
|
150
|
+
warn_if_no_long_paths(console=console)
|
|
145
151
|
|
|
146
152
|
current_version = get_installed_version()
|
|
147
153
|
latest_version = get_latest_final_version()
|
|
@@ -8,6 +8,7 @@ import click
|
|
|
8
8
|
import github3
|
|
9
9
|
|
|
10
10
|
import cumulusci
|
|
11
|
+
from cumulusci.cli.utils import warn_if_no_long_paths, win32_long_paths_enabled
|
|
11
12
|
from cumulusci.core.exceptions import CumulusCIException
|
|
12
13
|
from cumulusci.core.github import check_github_scopes, create_gist, get_github_api
|
|
13
14
|
|
|
@@ -40,7 +41,8 @@ def error():
|
|
|
40
41
|
"""
|
|
41
42
|
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
def get_logfile_path():
|
|
45
|
+
return Path.home() / ".cumulusci" / "logs" / "cci.log"
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
@error.command(
|
|
@@ -48,11 +50,13 @@ CCI_LOGFILE_PATH = Path.home() / ".cumulusci" / "logs" / "cci.log"
|
|
|
48
50
|
help="Outputs the most recent traceback (if one exists in the most recent log)",
|
|
49
51
|
)
|
|
50
52
|
def error_info():
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
warn_if_no_long_paths()
|
|
54
|
+
logfile_path = get_logfile_path()
|
|
55
|
+
if not logfile_path.is_file():
|
|
56
|
+
click.echo(f"No logfile found at: {logfile_path}")
|
|
53
57
|
return
|
|
54
58
|
|
|
55
|
-
traceback = get_traceback(
|
|
59
|
+
traceback = get_traceback(logfile_path.read_text(encoding="utf-8"))
|
|
56
60
|
click.echo(traceback)
|
|
57
61
|
|
|
58
62
|
|
|
@@ -60,7 +64,7 @@ def get_traceback(log_content: str) -> str:
|
|
|
60
64
|
"""Returns the the traceback in a logfile if it exists."""
|
|
61
65
|
stacktrace_start = "Traceback (most recent call last):"
|
|
62
66
|
if stacktrace_start not in log_content:
|
|
63
|
-
return f"\nNo stacktrace found in: {
|
|
67
|
+
return f"\nNo stacktrace found in: {get_logfile_path()}\n"
|
|
64
68
|
|
|
65
69
|
stacktrace = ""
|
|
66
70
|
for i, line in enumerate(reversed(log_content.split("\n")), 1):
|
|
@@ -73,13 +77,14 @@ def get_traceback(log_content: str) -> str:
|
|
|
73
77
|
|
|
74
78
|
@error.command(name="gist", help="Creates a GitHub gist from the latest logfile")
|
|
75
79
|
@pass_runtime(require_project=False, require_keychain=True)
|
|
76
|
-
def
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
def error_gist(runtime):
|
|
81
|
+
logfile_path = get_logfile_path()
|
|
82
|
+
if logfile_path.is_file():
|
|
83
|
+
log_content = logfile_path.read_text(encoding="utf-8")
|
|
79
84
|
else:
|
|
80
85
|
log_not_found_msg = """No logfile to open at path: {}
|
|
81
86
|
Please ensure you're running this command from the same directory you were experiencing an issue."""
|
|
82
|
-
error_msg = log_not_found_msg.format(
|
|
87
|
+
error_msg = log_not_found_msg.format(logfile_path)
|
|
83
88
|
click.echo(error_msg)
|
|
84
89
|
raise CumulusCIException(error_msg)
|
|
85
90
|
|
|
@@ -115,4 +120,6 @@ def get_context_info():
|
|
|
115
120
|
info.append(f"CumulusCI version: {cumulusci.__version__}")
|
|
116
121
|
info.append(f"Python version: {sys.version.split()[0]} ({sys.executable})")
|
|
117
122
|
info.append(f"Environment Info: {host_info.system} / {host_info.machine}")
|
|
123
|
+
if host_info.system == "Windows":
|
|
124
|
+
info.append(f"Windows long path support enabled: {win32_long_paths_enabled()}")
|
|
118
125
|
return "\n".join(info)
|
|
@@ -11,7 +11,12 @@ from rich.console import Console
|
|
|
11
11
|
from cumulusci.cli.ui import CliTable, SimpleSalesforceUIHelpers
|
|
12
12
|
from cumulusci.core.config import OrgConfig, ScratchOrgConfig
|
|
13
13
|
from cumulusci.core.exceptions import OrgNotFound
|
|
14
|
-
from cumulusci.oauth.client import
|
|
14
|
+
from cumulusci.oauth.client import (
|
|
15
|
+
PROD_LOGIN_URL,
|
|
16
|
+
SANDBOX_LOGIN_URL,
|
|
17
|
+
OAuth2Client,
|
|
18
|
+
OAuth2ClientConfig,
|
|
19
|
+
)
|
|
15
20
|
from cumulusci.salesforce_api.utils import get_simple_salesforce_connection
|
|
16
21
|
from cumulusci.utils import parse_api_datetime
|
|
17
22
|
|
|
@@ -109,27 +114,35 @@ def org_browser(runtime, org_name, path, url_only):
|
|
|
109
114
|
org_config.save()
|
|
110
115
|
|
|
111
116
|
|
|
112
|
-
def setup_client(
|
|
113
|
-
"""Provides an OAuth2Client for
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
def setup_client(connected_app, login_url=None, sandbox=None) -> OAuth2Client:
|
|
118
|
+
"""Provides an OAuth2Client for connecting an Org"""
|
|
119
|
+
if login_url:
|
|
120
|
+
base_uri = login_url
|
|
121
|
+
elif sandbox:
|
|
122
|
+
base_uri = SANDBOX_LOGIN_URL
|
|
123
|
+
elif connected_app.login_url:
|
|
124
|
+
base_uri = connected_app.login_url
|
|
125
|
+
else:
|
|
126
|
+
base_uri = PROD_LOGIN_URL
|
|
127
|
+
base_uri = base_uri.rstrip("/")
|
|
119
128
|
|
|
120
129
|
sf_client_config = OAuth2ClientConfig(
|
|
121
130
|
client_id=connected_app.client_id,
|
|
122
131
|
client_secret=connected_app.client_secret,
|
|
123
132
|
redirect_uri=connected_app.callback_url,
|
|
124
|
-
auth_uri=
|
|
125
|
-
token_uri=
|
|
133
|
+
auth_uri=f"{base_uri}/services/oauth2/authorize",
|
|
134
|
+
token_uri=f"{base_uri}/services/oauth2/token",
|
|
126
135
|
scope="web full refresh_token",
|
|
127
136
|
)
|
|
128
137
|
return OAuth2Client(sf_client_config)
|
|
129
138
|
|
|
130
139
|
|
|
131
140
|
def connect_org_to_keychain(
|
|
132
|
-
client: OAuth2Client,
|
|
141
|
+
client: OAuth2Client,
|
|
142
|
+
runtime,
|
|
143
|
+
global_org: bool,
|
|
144
|
+
org_name: str,
|
|
145
|
+
connected_app: str,
|
|
133
146
|
) -> None:
|
|
134
147
|
"""Use the given client to authorize into an org, and save the
|
|
135
148
|
new OrgConfig to the keychain."""
|
|
@@ -137,6 +150,7 @@ def connect_org_to_keychain(
|
|
|
137
150
|
|
|
138
151
|
global_org = global_org or runtime.project_config is None
|
|
139
152
|
org_config = OrgConfig(oauth_dict, org_name, runtime.keychain, global_org)
|
|
153
|
+
org_config.config["connected_app"] = connected_app
|
|
140
154
|
org_config.load_userinfo()
|
|
141
155
|
org_config._load_orginfo()
|
|
142
156
|
if org_config.organization_sobject["TrialExpirationDate"] is None:
|
|
@@ -153,6 +167,12 @@ def connect_org_to_keychain(
|
|
|
153
167
|
name="connect", help="Connects a new org's credentials using OAuth Web Flow"
|
|
154
168
|
)
|
|
155
169
|
@orgname_option_or_argument(required=True)
|
|
170
|
+
@click.option(
|
|
171
|
+
"--connected-app",
|
|
172
|
+
"--connected_app",
|
|
173
|
+
"connected_app_name",
|
|
174
|
+
help="Name of the connected_app service to use.",
|
|
175
|
+
)
|
|
156
176
|
@click.option(
|
|
157
177
|
"--sandbox", is_flag=True, help="If set, connects to a Salesforce sandbox org"
|
|
158
178
|
)
|
|
@@ -171,7 +191,9 @@ def connect_org_to_keychain(
|
|
|
171
191
|
is_flag=True,
|
|
172
192
|
)
|
|
173
193
|
@pass_runtime(require_project=False, require_keychain=True)
|
|
174
|
-
def org_connect(
|
|
194
|
+
def org_connect(
|
|
195
|
+
runtime, org_name, sandbox, login_url, default, global_org, connected_app_name=None
|
|
196
|
+
):
|
|
175
197
|
runtime.check_org_overwrite(org_name)
|
|
176
198
|
|
|
177
199
|
if login_url and ".lightning." in login_url:
|
|
@@ -180,8 +202,15 @@ def org_connect(runtime, org_name, sandbox, login_url, default, global_org):
|
|
|
180
202
|
"Use the my.salesforce.com version instead"
|
|
181
203
|
)
|
|
182
204
|
|
|
183
|
-
|
|
184
|
-
|
|
205
|
+
connected_app_name = (
|
|
206
|
+
connected_app_name or runtime.keychain.get_default_service_name("connected_app")
|
|
207
|
+
)
|
|
208
|
+
click.echo(f"Connecting org using the {connected_app_name} connected app...")
|
|
209
|
+
connected_app = runtime.keychain.get_service("connected_app", connected_app_name)
|
|
210
|
+
sf_client = setup_client(connected_app, login_url, sandbox)
|
|
211
|
+
connect_org_to_keychain(
|
|
212
|
+
sf_client, runtime, global_org, org_name, connected_app_name
|
|
213
|
+
)
|
|
185
214
|
|
|
186
215
|
if default and runtime.project_config is not None:
|
|
187
216
|
runtime.keychain.set_default_org(org_name)
|
|
@@ -273,6 +302,7 @@ def org_info(runtime, org_name, print_json):
|
|
|
273
302
|
ui_key_set = {
|
|
274
303
|
"config_file",
|
|
275
304
|
"config_name",
|
|
305
|
+
"connected_app",
|
|
276
306
|
"created",
|
|
277
307
|
"date_created",
|
|
278
308
|
"days",
|
|
@@ -318,12 +348,22 @@ def org_info(runtime, org_name, print_json):
|
|
|
318
348
|
)
|
|
319
349
|
@pass_runtime(require_project=False, require_keychain=True)
|
|
320
350
|
def org_list(runtime, json_flag, plain):
|
|
351
|
+
def _get_org_safe(org):
|
|
352
|
+
try:
|
|
353
|
+
return runtime.keychain.get_org(org)
|
|
354
|
+
except Exception as e:
|
|
355
|
+
click.echo(f"Cannot load org config for `{org}`: {e}")
|
|
356
|
+
|
|
321
357
|
plain = plain or runtime.universal_config.cli__plain_output
|
|
322
|
-
org_configs =
|
|
323
|
-
|
|
324
|
-
|
|
358
|
+
org_configs = ((org, _get_org_safe(org)) for org in runtime.keychain.list_orgs())
|
|
359
|
+
org_configs = {org: org_config for org, org_config in org_configs if org_config}
|
|
360
|
+
|
|
325
361
|
json_data = {}
|
|
326
|
-
|
|
362
|
+
try:
|
|
363
|
+
default_org_name, _ = runtime.keychain.get_default_org()
|
|
364
|
+
except Exception: # pragma: no cover
|
|
365
|
+
default_org_name = None
|
|
366
|
+
|
|
327
367
|
for org, org_config in org_configs.items():
|
|
328
368
|
is_org_default = org == default_org_name
|
|
329
369
|
row_data = {"is_default": is_org_default, "name": org}
|
|
@@ -339,7 +379,12 @@ def org_list(runtime, json_flag, plain):
|
|
|
339
379
|
console.print(scratch_table, justify="left")
|
|
340
380
|
console.print(persistent_table, justify="left")
|
|
341
381
|
|
|
342
|
-
|
|
382
|
+
try:
|
|
383
|
+
runtime.keychain.cleanup_org_cache_dirs()
|
|
384
|
+
except Exception:
|
|
385
|
+
click.echo(
|
|
386
|
+
"Cannot cleanup org cache dirs, perhaps due to org config files which cannot be decrypted."
|
|
387
|
+
)
|
|
343
388
|
|
|
344
389
|
|
|
345
390
|
def _make_tables(json_data: dict):
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import json
|
|
2
1
|
import os
|
|
3
2
|
from pathlib import Path
|
|
4
3
|
from typing import Callable, Optional
|
|
@@ -35,7 +34,7 @@ def service_list(runtime, plain, print_json):
|
|
|
35
34
|
|
|
36
35
|
console = Console()
|
|
37
36
|
if print_json:
|
|
38
|
-
console.
|
|
37
|
+
console.print_json(data=services)
|
|
39
38
|
return None
|
|
40
39
|
|
|
41
40
|
configured_services = runtime.keychain.list_services()
|
|
@@ -84,17 +83,43 @@ class ConnectServiceCommand(click.MultiCommand):
|
|
|
84
83
|
return sorted(services.keys())
|
|
85
84
|
|
|
86
85
|
def _build_param(self, attribute: str, details: dict) -> click.Option:
|
|
87
|
-
|
|
86
|
+
required = details.get("required", False)
|
|
88
87
|
default_factory: Optional[Callable] = self._get_callable_default(
|
|
89
88
|
details.get("default_factory")
|
|
90
89
|
)
|
|
91
|
-
|
|
90
|
+
default = details.get("default")
|
|
91
|
+
if default is not None:
|
|
92
|
+
# This gives the user a chance to change the default
|
|
93
|
+
# (but only if they didn't specify it as a command line option)
|
|
94
|
+
default_factory = lambda: default # noqa
|
|
95
|
+
prompt = True
|
|
96
|
+
# Since there's a default value,
|
|
97
|
+
# we don't need to indicate this option as required in help,
|
|
98
|
+
required = False
|
|
99
|
+
elif default_factory:
|
|
100
|
+
# If there's a function to calculate the default,
|
|
101
|
+
# we'll call it instead of prompting the user.
|
|
102
|
+
# This provides a hook for collecting the value in other ways,
|
|
103
|
+
# such as via an oauth flow.
|
|
104
|
+
prompt = None
|
|
105
|
+
else:
|
|
106
|
+
# If there's no default, we prompt the user only if the option is required.
|
|
107
|
+
prompt = required
|
|
108
|
+
|
|
109
|
+
# Make sure the description is included in the prompt
|
|
110
|
+
description = details.get("description")
|
|
111
|
+
if prompt:
|
|
112
|
+
prompt = attribute
|
|
113
|
+
if description:
|
|
114
|
+
prompt += f" ({description})"
|
|
92
115
|
|
|
93
116
|
kwargs = {
|
|
94
117
|
"prompt": prompt,
|
|
95
|
-
"required":
|
|
96
|
-
"help":
|
|
118
|
+
"required": required,
|
|
119
|
+
"help": description,
|
|
97
120
|
"default": default_factory,
|
|
121
|
+
# If there is a preset default, this causes it to be shown in help.
|
|
122
|
+
"show_default": default,
|
|
98
123
|
}
|
|
99
124
|
return click.Option((f"--{attribute}",), **kwargs)
|
|
100
125
|
|
|
@@ -138,7 +163,7 @@ class ConnectServiceCommand(click.MultiCommand):
|
|
|
138
163
|
f"Sorry, I don't know about the '{service_type}' service."
|
|
139
164
|
)
|
|
140
165
|
|
|
141
|
-
attributes = service_config
|
|
166
|
+
attributes = service_config.get("attributes", {}).items()
|
|
142
167
|
params = [self._build_param(attr, cnfg) for attr, cnfg in attributes]
|
|
143
168
|
params.extend(self._get_default_options(runtime))
|
|
144
169
|
|
|
@@ -114,6 +114,7 @@ def test_main__cci_show_stacktraces(
|
|
|
114
114
|
init_logger,
|
|
115
115
|
get_tempfile_logger,
|
|
116
116
|
tee,
|
|
117
|
+
capsys,
|
|
117
118
|
):
|
|
118
119
|
runtime = mock.Mock()
|
|
119
120
|
runtime.universal_config.cli__show_stacktraces = True
|
|
@@ -121,7 +122,7 @@ def test_main__cci_show_stacktraces(
|
|
|
121
122
|
cli.side_effect = Exception
|
|
122
123
|
get_tempfile_logger.return_value = (mock.Mock(), "tempfile.log")
|
|
123
124
|
|
|
124
|
-
with pytest.raises(
|
|
125
|
+
with pytest.raises(SystemExit):
|
|
125
126
|
cci.main(["cci"])
|
|
126
127
|
|
|
127
128
|
check_latest_version.assert_called_once()
|
|
@@ -129,6 +130,8 @@ def test_main__cci_show_stacktraces(
|
|
|
129
130
|
CliRuntime.assert_called_once()
|
|
130
131
|
cli.assert_called_once()
|
|
131
132
|
post_mortem.assert_not_called()
|
|
133
|
+
captured = capsys.readouterr()
|
|
134
|
+
assert "Traceback (most recent call last)" in captured.err
|
|
132
135
|
|
|
133
136
|
|
|
134
137
|
@mock.patch("cumulusci.cli.cci.tee_stdout_stderr")
|
|
@@ -413,6 +416,12 @@ def test_version__latest(capsys):
|
|
|
413
416
|
assert "You have the latest version of CumulusCI" in console_output
|
|
414
417
|
|
|
415
418
|
|
|
419
|
+
@mock.patch("cumulusci.cli.cci.warn_if_no_long_paths")
|
|
420
|
+
def test_version__win_path_warning(warn_if):
|
|
421
|
+
run_click_command(cci.version)
|
|
422
|
+
warn_if.assert_called_once()
|
|
423
|
+
|
|
424
|
+
|
|
416
425
|
@mock.patch("code.interact")
|
|
417
426
|
def test_shell(interact):
|
|
418
427
|
run_click_command(cci.shell)
|