cumulusci-plus 5.0.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.
Potentially problematic release.
This version of cumulusci-plus might be problematic. Click here for more details.
- cumulusci_plus-5.0.0/.gitignore +83 -0
- cumulusci_plus-5.0.0/AUTHORS.rst +41 -0
- cumulusci_plus-5.0.0/LICENSE +30 -0
- cumulusci_plus-5.0.0/PKG-INFO +145 -0
- cumulusci_plus-5.0.0/README.md +68 -0
- cumulusci_plus-5.0.0/cumulusci/__about__.py +1 -0
- cumulusci_plus-5.0.0/cumulusci/__init__.py +22 -0
- cumulusci_plus-5.0.0/cumulusci/__main__.py +3 -0
- cumulusci_plus-5.0.0/cumulusci/cli/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/cli/cci.py +244 -0
- cumulusci_plus-5.0.0/cumulusci/cli/error.py +125 -0
- cumulusci_plus-5.0.0/cumulusci/cli/flow.py +185 -0
- cumulusci_plus-5.0.0/cumulusci/cli/logger.py +72 -0
- cumulusci_plus-5.0.0/cumulusci/cli/org.py +692 -0
- cumulusci_plus-5.0.0/cumulusci/cli/plan.py +181 -0
- cumulusci_plus-5.0.0/cumulusci/cli/project.py +391 -0
- cumulusci_plus-5.0.0/cumulusci/cli/robot.py +116 -0
- cumulusci_plus-5.0.0/cumulusci/cli/runtime.py +190 -0
- cumulusci_plus-5.0.0/cumulusci/cli/service.py +521 -0
- cumulusci_plus-5.0.0/cumulusci/cli/task.py +295 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_cci.py +545 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_error.py +170 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_flow.py +276 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_logger.py +25 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_org.py +1438 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_plan.py +245 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_project.py +235 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_robot.py +177 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_runtime.py +197 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_service.py +853 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_task.py +266 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_ui.py +310 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/test_utils.py +122 -0
- cumulusci_plus-5.0.0/cumulusci/cli/tests/utils.py +52 -0
- cumulusci_plus-5.0.0/cumulusci/cli/ui.py +234 -0
- cumulusci_plus-5.0.0/cumulusci/cli/utils.py +150 -0
- cumulusci_plus-5.0.0/cumulusci/conftest.py +181 -0
- cumulusci_plus-5.0.0/cumulusci/core/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/BaseConfig.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/BaseTaskFlowConfig.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/OrgConfig.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/ScratchOrgConfig.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/__init__.py +125 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/base_config.py +111 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/base_task_flow_config.py +82 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/marketing_cloud_service_config.py +83 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/oauth2_service_config.py +17 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/org_config.py +604 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/project_config.py +782 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/scratch_org_config.py +251 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/sfdx_org_config.py +220 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +33 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/tests/test_config.py +1895 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/tests/test_config_expensive.py +839 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/tests/test_config_util.py +91 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/universal_config.py +88 -0
- cumulusci_plus-5.0.0/cumulusci/core/config/util.py +18 -0
- cumulusci_plus-5.0.0/cumulusci/core/datasets.py +303 -0
- cumulusci_plus-5.0.0/cumulusci/core/debug.py +33 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/__init__.py +55 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/base.py +561 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/dependencies.py +273 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/github.py +177 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/github_resolvers.py +244 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/resolvers.py +580 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/conftest.py +385 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/test_dependencies.py +950 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/test_github.py +83 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/tests/test_resolvers.py +1027 -0
- cumulusci_plus-5.0.0/cumulusci/core/dependencies/utils.py +13 -0
- cumulusci_plus-5.0.0/cumulusci/core/enums.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/core/exceptions.py +311 -0
- cumulusci_plus-5.0.0/cumulusci/core/flowrunner.py +888 -0
- cumulusci_plus-5.0.0/cumulusci/core/github.py +665 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/__init__.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/base_project_keychain.py +441 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/encrypted_file_project_keychain.py +945 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/environment_project_keychain.py +7 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/serialization.py +152 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/subprocess_keychain.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/tests/conftest.py +50 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/tests/test_base_project_keychain.py +299 -0
- cumulusci_plus-5.0.0/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +1228 -0
- cumulusci_plus-5.0.0/cumulusci/core/metadeploy/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/core/metadeploy/api.py +88 -0
- cumulusci_plus-5.0.0/cumulusci/core/metadeploy/plans.py +25 -0
- cumulusci_plus-5.0.0/cumulusci/core/metadeploy/tests/test_api.py +276 -0
- cumulusci_plus-5.0.0/cumulusci/core/runtime.py +115 -0
- cumulusci_plus-5.0.0/cumulusci/core/sfdx.py +162 -0
- cumulusci_plus-5.0.0/cumulusci/core/source/__init__.py +16 -0
- cumulusci_plus-5.0.0/cumulusci/core/source/github.py +50 -0
- cumulusci_plus-5.0.0/cumulusci/core/source/local_folder.py +35 -0
- cumulusci_plus-5.0.0/cumulusci/core/source_transforms/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/core/source_transforms/tests/test_transforms.py +1091 -0
- cumulusci_plus-5.0.0/cumulusci/core/source_transforms/transforms.py +532 -0
- cumulusci_plus-5.0.0/cumulusci/core/tasks.py +404 -0
- cumulusci_plus-5.0.0/cumulusci/core/template_utils.py +59 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_e2e.yaml +215 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_extract_standard_objects.yaml +199 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/cassettes/TestDatasetsE2E.test_datasets_read_explicit_extract_declaration.yaml +3 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo/cumulusci.yml +32 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo/tasks/directory/example_2.py +6 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo/tasks/example.py +43 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo_2/cumulusci.yml +11 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/fake_remote_repo_2/tasks/example_3.py +6 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_datasets_e2e.py +386 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_exceptions.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_flowrunner.py +836 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_github.py +942 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_sfdx.py +138 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_source.py +678 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_tasks.py +262 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_utils.py +141 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_utils_merge_config.py +276 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/test_versions.py +76 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_child/cumulusci.yml +7 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_child/tasks/untrusted_child.py +6 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_parent/cumulusci.yml +26 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/untrusted_repo_parent/tasks/untrusted_parent.py +6 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/utils.py +116 -0
- cumulusci_plus-5.0.0/cumulusci/core/tests/yaml/global.yaml +0 -0
- cumulusci_plus-5.0.0/cumulusci/core/utils.py +402 -0
- cumulusci_plus-5.0.0/cumulusci/core/versions.py +149 -0
- cumulusci_plus-5.0.0/cumulusci/cumulusci.yml +1621 -0
- cumulusci_plus-5.0.0/cumulusci/files/admin_profile.xml +20 -0
- cumulusci_plus-5.0.0/cumulusci/files/delete_excludes.txt +424 -0
- cumulusci_plus-5.0.0/cumulusci/files/templates/project/README.md +12 -0
- cumulusci_plus-5.0.0/cumulusci/files/templates/project/cumulusci.yml +63 -0
- cumulusci_plus-5.0.0/cumulusci/files/templates/project/dot-gitignore +60 -0
- cumulusci_plus-5.0.0/cumulusci/files/templates/project/mapping.yml +45 -0
- cumulusci_plus-5.0.0/cumulusci/files/templates/project/scratch_def.json +25 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/client.py +400 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/exceptions.py +9 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/salesforce.py +95 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/tests/cassettes/test_get_device_code.yaml +22 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/tests/cassettes/test_get_device_oauth_token.yaml +74 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/tests/test_client.py +308 -0
- cumulusci_plus-5.0.0/cumulusci/oauth/tests/test_salesforce.py +46 -0
- cumulusci_plus-5.0.0/cumulusci/plugins/__init__.py +3 -0
- cumulusci_plus-5.0.0/cumulusci/plugins/plugin_base.py +93 -0
- cumulusci_plus-5.0.0/cumulusci/plugins/plugin_loader.py +59 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/CumulusCI.py +340 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/CumulusCI.robot +7 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/Performance.py +165 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/Salesforce.py +936 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/Salesforce.robot +192 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/SalesforceAPI.py +416 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/SalesforcePlaywright.py +220 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/SalesforcePlaywright.robot +40 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/__init__.py +2 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/base_library.py +39 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/faker_mixin.py +89 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/form_handlers.py +222 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/javascript/cci_init.js +34 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/javascript/cumulusci.js +4 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/locator_manager.py +197 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/locators_56.py +88 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/locators_57.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/BasePageObjects.py +433 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +246 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +45 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/PageObjects.py +351 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/__init__.py +12 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/pageobjects/baseobjects.py +120 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/perftests/short/collection_perf.robot +105 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/CustomObjectTestPage.py +10 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/FooTestPage.py +8 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/base.robot +40 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +38 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/communities.robot +57 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/cumulusci/datagen.robot +84 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +20 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/TestListener.py +93 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/api.robot +178 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/browsers.robot +143 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/classic.robot +51 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/create_contact.robot +59 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/faker.robot +68 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/forms.robot +172 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/label_locator.robot +244 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/labels.html +33 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/locators.robot +149 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +100 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +25 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +115 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +74 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +171 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/performance.robot +109 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/javascript_keywords.robot +33 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/open_test_browser.robot +48 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/playwright.robot +24 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/playwright/ui.robot +32 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/populate.robot +89 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/test_testlistener.py +37 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/salesforce/ui.robot +361 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_cumulusci_library.py +304 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_locator_manager.py +158 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_pageobjects.py +291 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_performance.py +38 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_salesforce.py +79 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_salesforce_locators.py +73 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_template_util.py +53 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/tests/test_utils.py +106 -0
- cumulusci_plus-5.0.0/cumulusci/robotframework/utils.py +283 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/exceptions.py +23 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/filterable_objects.py +96 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/mc_soap_envelopes.py +89 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/metadata.py +721 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/org_schema.py +571 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/org_schema_models.py +226 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/package_install.py +265 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/package_zip.py +301 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/rest_deploy.py +148 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/retrieve_profile_api.py +301 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/soap_envelopes.py +177 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/metadata_test_strings.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_metadata.py +1015 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_package_install.py +219 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_package_zip.py +380 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_rest_deploy.py +264 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_retrieve_profile_api.py +337 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/tests/test_utils.py +124 -0
- cumulusci_plus-5.0.0/cumulusci/salesforce_api/utils.py +51 -0
- cumulusci_plus-5.0.0/cumulusci/schema/cumulusci.jsonschema.json +782 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/apex/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/apex/anon.py +157 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/apex/batch.py +180 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/apex/testrunner.py +835 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/apex/tests/cassettes/ManualEditTestApexIntegrationTests.test_run_tests__integration_test.yaml +703 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/apex/tests/test_apex_tasks.py +1558 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/base_source_control_task.py +17 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/__init__.py +15 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/base_generate_data_task.py +96 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/dates.py +97 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/delete.py +156 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract.py +441 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/calculate_dependencies.py +117 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +123 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/hardcoded_default_declarations.py +49 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +283 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +142 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_synthesize_extract_declarations.py +575 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/factory_utils.py +134 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate.py +4 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_and_load_data.py +232 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +19 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_from_yaml.py +183 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping.py +434 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/dependency_map.py +169 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/extract_mapping_file_generator.py +45 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/generate_mapping_from_declarations.py +121 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/load_mapping_file_generator.py +127 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_generator_post_processes.py +53 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/mapping_transforms.py +139 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_extract_mapping_from_declarations.py +135 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_generate_load_mapping_from_declarations.py +330 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_generator_post_processes.py +60 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/generate_mapping_utils/tests/test_mapping_transforms.py +188 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/load.py +1196 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/mapping_parser.py +811 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/query_transformers.py +264 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/select_utils.py +792 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery.py +753 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +478 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +141 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +53 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +64 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/step.py +1242 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_random_strategy.yaml +147 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_annoy_strategy.yaml +123 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_select_and_insert_strategy.yaml +313 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_select_and_insert_strategy_bulk.yaml +550 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_similarity_strategy.yaml +175 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSelect.test_select_standard_strategy.yaml +147 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__multiple_needed.yaml +69 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__none_needed.yaml +22 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_run_until_records_in_org__one_needed.yaml +24 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestSnowfakery.test_snowfakery_query_salesforce.yaml +25 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpdatesIntegrationTests.test_updates_task.yaml +80 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_simple_upsert__rest.yaml +270 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert__rest.yaml +267 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_external_id_field__rest.yaml +369 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_external_id_field_rest__duplicate_error.yaml +204 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml +675 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +36 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/integration_test_utils.py +49 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +87 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_after.yml +38 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_poly.yml +34 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_poly_incomplete.yml +20 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_poly_wrong.yml +21 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select.yml +20 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_strategy.yml +20 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__invalid_number.yml +21 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__invalid_strategy.yml +21 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_invalid_threshold__non_float.yml +21 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_missing_priority_fields.yml +22 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_select_no_priority_fields.yml +18 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +27 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +28 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +21 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +32 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +69 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +12 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/person_accounts.sql +33 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/person_accounts.yml +23 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/person_accounts_minimal.yml +15 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes.sql +32 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes.yml +8 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_2.sql +19 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_2.yml +6 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_with_ispersontype.sql +33 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/recordtypes_with_ispersontype.yml +8 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +3 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +4 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +89 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +3 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +34 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +6 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +16 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +83 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +2 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +13 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +5 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +13 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +12 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +13 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +4 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/upsert.recipe.yml +23 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_2.recipe.yml +29 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/snowfakery/upsert_before.yml +10 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +61 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_dates.py +99 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_delete.py +404 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_extract.py +1311 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +55 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +252 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +343 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +1039 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_load.py +3175 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +1658 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql +17 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.yml +12 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups.sql +47 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups.yml +26 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_query_db_joins_lookups_select.yml +48 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_select.py +171 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_select_utils.py +1057 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +1153 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_step.py +3957 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_updates.py +513 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_upsert.py +1015 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/test_utils.py +158 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/testdata.db +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/testdata.sql +18 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/update_describe.py +50 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/update_person_accounts.yml +23 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/tests/utils.py +114 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/update_data.py +260 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/upsert_utils.py +130 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/bulkdata/utils.py +249 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/command.py +178 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/connectedapp.py +186 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/create_package_version.py +778 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/datadictionary.py +745 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/dx_convert_from.py +26 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/__init__.py +17 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/base.py +16 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/commit_status.py +13 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/merge.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/publish.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/pull_request.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/release.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/release_report.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/tag.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/test_util.py +202 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/test_vcs_migration.py +44 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/tests/util_github_api.py +666 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/github/util.py +252 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/api.py +188 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/base.py +38 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/deploy.py +345 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/get_user_info.py +40 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/mc_constants.py +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/conftest.py +46 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +110 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test-mc-pkg.zip +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_api.py +97 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +145 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_base.py +14 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +400 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +141 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/marketing_cloud/tests/validation-response.json +39 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/ee_src.py +94 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/managed_src.py +100 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/metadata_map.yml +868 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/modify.py +99 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/package.py +684 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/.hidden/.keep +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +9 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +9 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package_install_uninstall.xml +11 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +3 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/sample_package.xml +9 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_ee_src.py +112 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_managed_src.py +111 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_modify.py +123 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata/tests/test_package.py +476 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/__init__.py +29 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/base.py +436 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/duplicate_rules.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/field_sets.py +70 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/help_text.py +92 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/layouts.py +550 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/objects.py +68 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/permissions.py +167 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/picklists.py +221 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/remote_site_settings.py +99 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/sharing.py +138 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_base.py +512 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +22 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +156 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_help_text.py +387 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_ip_ranges.py +85 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_layouts.py +858 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_objects.py +236 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_permissions.py +223 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_picklists.py +547 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_remote_site_settings.py +46 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_sharing.py +333 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +298 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadata_etl/value_sets.py +106 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metadeploy.py +393 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/metaxml.py +88 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/dataset_load.py +49 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/licenses.py +86 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/packages.py +14 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/permsets.py +23 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/recordtypes.py +16 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/retrieve_tasks.py +30 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/settings.py +77 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/sobjects.py +202 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_dataset_load.py +85 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_licenses.py +174 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_packages.py +14 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_permset_preflights.py +51 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_recordtypes.py +30 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_retrieve_tasks.py +62 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_settings.py +130 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/preflight/tests/test_sobjects.py +231 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/README.md +59 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/push_api.py +659 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/pushfails.py +136 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/tasks.py +476 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/tests/conftest.py +263 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/tests/test_push_api.py +951 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/push/tests/test_push_tasks.py +659 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/README.md +63 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/exceptions.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/generator.py +137 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/parser.py +232 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/provider.py +44 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/task.py +300 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +17 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_generator.py +582 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_parser.py +867 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_provider.py +512 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/test_task.py +461 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/release_notes/tests/utils.py +153 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/__init__.py +3 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/DebugListener.py +100 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/__init__.py +10 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/model.py +87 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/debugger/ui.py +259 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/libdoc.py +269 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/robotframework.py +392 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/stylesheet.css +130 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/template.html +109 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/TestLibrary.py +18 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/TestPageObjects.py +31 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/TestResource.robot +8 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/failing_tests.robot +16 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/performance.robot +23 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_browser_proxies.py +137 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_debugger.py +360 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +141 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/robotframework/tests/test_robotframework.py +860 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +58 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +45 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +18 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseSalesforceTask.py +4 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +41 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/CreateCommunity.py +124 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/CreatePackage.py +29 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/Deploy.py +240 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/DeployBundles.py +88 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/DescribeMetadataTypes.py +26 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/EnsureRecordTypes.py +202 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/GetInstalledPackages.py +8 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/ListCommunities.py +40 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/ListCommunityTemplates.py +19 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/PublishCommunity.py +62 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/RetrievePackaged.py +41 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +82 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +36 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/SOQLQuery.py +39 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallLocal.py +15 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallLocalBundles.py +28 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +58 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallPackage.py +32 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UninstallPackaged.py +56 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/UpdateAdminProfile.py +8 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/__init__.py +79 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/activate_flow.py +74 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/check_components.py +324 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/composite.py +142 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/create_permission_sets.py +35 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/custom_settings.py +134 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/custom_settings_wait.py +132 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/enable_prediction.py +107 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/insert_record.py +40 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/install_package_version.py +242 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/license_preflights.py +8 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/network_member_group.py +178 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/nonsourcetracking.py +228 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/org_settings.py +193 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/package_upload.py +328 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/profiles.py +74 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/promote_package_version.py +376 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/retrieve_profile.py +195 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/salesforce_files.py +244 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/sourcetracking.py +507 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/__init__.py +3 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +278 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +22 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_Deploy.py +470 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +76 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +345 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +84 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +49 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +547 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +699 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +181 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +56 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +21 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +30 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +15 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +19 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +22 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +19 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +66 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +127 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_activate_flow.py +132 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_base_tasks.py +110 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_check_components.py +445 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_composite.py +250 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +41 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_custom_settings.py +227 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +174 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_describemetadatatypes.py +18 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +240 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_insert_record.py +110 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_install_package_version.py +464 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_network_member_group.py +444 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_nonsourcetracking.py +235 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_org_settings.py +407 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_profiles.py +202 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_retrieve_profile.py +287 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_salesforce_files.py +228 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +350 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +300 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +509 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/tests/util.py +79 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/trigger_handlers.py +119 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +136 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/update_dependencies.py +290 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/update_profile.py +339 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/permsets.py +227 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/photos.py +162 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/tests/test_permsets.py +950 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/salesforce/users/tests/test_photos.py +373 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/capture_sample_data.py +77 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/load_sample_data.py +85 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/test_capture_sample_data.py +117 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/sample_data/test_load_sample_data.py +121 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/sfdx.py +83 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/__init__.py +1 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/conftest.py +30 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_command.py +129 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_connectedapp.py +236 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_create_package_version.py +847 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_datadictionary.py +1575 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_dx_convert_from.py +60 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_metadeploy.py +624 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_metaxml.py +99 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_promote_package_version.py +488 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_pushfails.py +96 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_salesforce.py +72 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_sfdx.py +105 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/tests/test_util.py +207 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/util.py +261 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/__init__.py +19 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/commit_status.py +58 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/create_commit_status.py +37 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/download_extract.py +199 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/merge.py +298 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/publish.py +207 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/pull_request.py +9 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/release.py +134 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/release_report.py +105 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tag.py +31 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_commit_status.py +196 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_download_extract.py +896 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_merge.py +1118 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_publish.py +823 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_pull_request.py +29 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_release.py +390 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_release_report.py +109 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vcs/tests/github/test_tag.py +90 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vlocity/exceptions.py +2 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vlocity/tests/test_vlocity.py +283 -0
- cumulusci_plus-5.0.0/cumulusci/tasks/vlocity/vlocity.py +342 -0
- cumulusci_plus-5.0.0/cumulusci/tests/__init__.py +1 -0
- cumulusci_plus-5.0.0/cumulusci/tests/cassettes/GET_sobjects_Account_PersonAccount_describe.yaml +18 -0
- cumulusci_plus-5.0.0/cumulusci/tests/cassettes/TestIntegrationInfrastructure.test_integration_tests.yaml +19 -0
- cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +307 -0
- cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +275 -0
- cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_sf_vcr_serializer.py +160 -0
- cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/pytest_typeguard.py +5 -0
- cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/test_vcr_string_compressor.py +49 -0
- cumulusci_plus-5.0.0/cumulusci/tests/pytest_plugins/vcr_string_compressor.py +97 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Account_describe.yaml +18 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Case_describe.yaml +18 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Contact_describe.yaml +4838 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Custom__c_describe.yaml +242 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Event_describe.yaml +19 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Global_describe.yaml +1338 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Lead_describe.yaml +18 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_OpportunityContactRole_describe.yaml +34 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Opportunity_describe.yaml +1261 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/GET_sobjects_Organization.yaml +49 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/batchInfoList_xml.tpl +15 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/batchInfo_xml.tpl +13 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/jobInfo_insert_xml.tpl +24 -0
- cumulusci_plus-5.0.0/cumulusci/tests/shared_cassettes/vcr_string_templates/jobInfo_upsert_xml.tpl +25 -0
- cumulusci_plus-5.0.0/cumulusci/tests/test_entry_points.py +20 -0
- cumulusci_plus-5.0.0/cumulusci/tests/test_integration_infrastructure.py +131 -0
- cumulusci_plus-5.0.0/cumulusci/tests/test_main.py +9 -0
- cumulusci_plus-5.0.0/cumulusci/tests/test_schema.py +32 -0
- cumulusci_plus-5.0.0/cumulusci/tests/test_utils.py +657 -0
- cumulusci_plus-5.0.0/cumulusci/tests/test_vcr_serializer.py +134 -0
- cumulusci_plus-5.0.0/cumulusci/tests/uncompressed_cassette.yaml +83 -0
- cumulusci_plus-5.0.0/cumulusci/tests/util.py +344 -0
- cumulusci_plus-5.0.0/cumulusci/utils/__init__.py +731 -0
- cumulusci_plus-5.0.0/cumulusci/utils/classutils.py +9 -0
- cumulusci_plus-5.0.0/cumulusci/utils/collections.py +32 -0
- cumulusci_plus-5.0.0/cumulusci/utils/deprecation.py +11 -0
- cumulusci_plus-5.0.0/cumulusci/utils/encryption.py +31 -0
- cumulusci_plus-5.0.0/cumulusci/utils/fileutils.py +295 -0
- cumulusci_plus-5.0.0/cumulusci/utils/git.py +142 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/multi_request.py +214 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/requests_utils.py +103 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/ManualEditTestCompositeParallelSalesforce.test_http_headers.yaml +32 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_composite_parallel_salesforce.yaml +65 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_errors.yaml +24 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/tests/cassettes/TestCompositeParallelSalesforce.test_reference_ids.yaml +49 -0
- cumulusci_plus-5.0.0/cumulusci/utils/http/tests/test_multi_request.py +255 -0
- cumulusci_plus-5.0.0/cumulusci/utils/iterators.py +21 -0
- cumulusci_plus-5.0.0/cumulusci/utils/logging.py +128 -0
- cumulusci_plus-5.0.0/cumulusci/utils/metaprogramming.py +10 -0
- cumulusci_plus-5.0.0/cumulusci/utils/options.py +138 -0
- cumulusci_plus-5.0.0/cumulusci/utils/parallel/queries_in_parallel/run_queries_in_parallel.py +29 -0
- cumulusci_plus-5.0.0/cumulusci/utils/parallel/queries_in_parallel/tests/test_run_queries_in_parallel.py +50 -0
- cumulusci_plus-5.0.0/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +238 -0
- cumulusci_plus-5.0.0/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +243 -0
- cumulusci_plus-5.0.0/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +353 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/count_sobjects.py +46 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/soql.py +17 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/cassettes/ManualEdit_TestCountSObjects.test_count_sobjects__network_errors.yaml +23 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/cassettes/TestCountSObjects.test_count_sobjects__errors.yaml +33 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/cassettes/TestCountSObjects.test_count_sobjects_simple.yaml +29 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/test_count_sobjects.py +29 -0
- cumulusci_plus-5.0.0/cumulusci/utils/salesforce/tests/test_soql.py +30 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/cassettes/ManualEditTestDescribeOrg.test_minimal_schema.yaml +36 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/cassettes/ManualEdit_test_describe_to_sql.yaml +191 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_fileutils.py +284 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_git.py +85 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_logging.py +70 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_option_parsing.py +188 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_org_schema.py +691 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_org_schema_models.py +79 -0
- cumulusci_plus-5.0.0/cumulusci/utils/tests/test_waiting.py +25 -0
- cumulusci_plus-5.0.0/cumulusci/utils/version_strings.py +391 -0
- cumulusci_plus-5.0.0/cumulusci/utils/waiting.py +42 -0
- cumulusci_plus-5.0.0/cumulusci/utils/xml/__init__.py +91 -0
- cumulusci_plus-5.0.0/cumulusci/utils/xml/metadata_tree.py +299 -0
- cumulusci_plus-5.0.0/cumulusci/utils/xml/robot_xml.py +114 -0
- cumulusci_plus-5.0.0/cumulusci/utils/xml/salesforce_encoding.py +100 -0
- cumulusci_plus-5.0.0/cumulusci/utils/xml/test/test_metadata_tree.py +251 -0
- cumulusci_plus-5.0.0/cumulusci/utils/xml/test/test_salesforce_encoding.py +173 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/cumulusci_yml.py +401 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/model_parser.py +156 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/safer_loader.py +74 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/bad_cci.yml +5 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/cassettes/TestCumulusciYml.test_validate_url__with_errors.yaml +20 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +286 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/test_model_parser.py +175 -0
- cumulusci_plus-5.0.0/cumulusci/utils/yaml/tests/test_safer_loader.py +88 -0
- cumulusci_plus-5.0.0/cumulusci/utils/ziputils.py +61 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/base.py +143 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/bootstrap.py +272 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/__init__.py +24 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/adapter.py +689 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/release_notes/generator.py +219 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/release_notes/parser.py +151 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/release_notes/provider.py +143 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/service.py +569 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/tests/test_adapter.py +138 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/github/tests/test_service.py +408 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/models.py +586 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/tests/conftest.py +41 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/tests/dummy_service.py +241 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/tests/test_vcs_base.py +687 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/tests/test_vcs_bootstrap.py +727 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/utils/__init__.py +31 -0
- cumulusci_plus-5.0.0/cumulusci/vcs/vcs_source.py +287 -0
- cumulusci_plus-5.0.0/docs/adrs/README.md +47 -0
- cumulusci_plus-5.0.0/docs/diagram/README.md +8 -0
- cumulusci_plus-5.0.0/docs/history.md +6126 -0
- cumulusci_plus-5.0.0/pyproject.toml +308 -0
- cumulusci_plus-5.0.0/robot/CumulusCI/javascript/README.md +2 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# OS cruft
|
|
2
|
+
.DS_Store
|
|
3
|
+
|
|
4
|
+
# CumulusCI config and output
|
|
5
|
+
.cci
|
|
6
|
+
docs/api/
|
|
7
|
+
docs/_build/
|
|
8
|
+
github_release_notes.html
|
|
9
|
+
tmp
|
|
10
|
+
|
|
11
|
+
# Distribution / packaging
|
|
12
|
+
*.egg
|
|
13
|
+
*.egg-info/
|
|
14
|
+
.Python
|
|
15
|
+
.installed.cfg
|
|
16
|
+
develop-eggs/
|
|
17
|
+
dist/
|
|
18
|
+
eggs/
|
|
19
|
+
env/
|
|
20
|
+
lib/
|
|
21
|
+
lib64/
|
|
22
|
+
parts/
|
|
23
|
+
pip-wheel-metadata
|
|
24
|
+
sdist/
|
|
25
|
+
var/
|
|
26
|
+
|
|
27
|
+
# Miscellaneous Python cruft
|
|
28
|
+
.pdbrc
|
|
29
|
+
.pdbrc.py
|
|
30
|
+
.python-version
|
|
31
|
+
venv/
|
|
32
|
+
|
|
33
|
+
# Byte-compiled / optimized / DLL files
|
|
34
|
+
__pycache__/
|
|
35
|
+
*.py[cod]
|
|
36
|
+
*.pkl
|
|
37
|
+
|
|
38
|
+
# Installer logs
|
|
39
|
+
pip-log.txt
|
|
40
|
+
pip-delete-this-directory.txt
|
|
41
|
+
|
|
42
|
+
# Unit test / coverage reports
|
|
43
|
+
.cache/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.mypy_cache/
|
|
47
|
+
.pytest_cache/
|
|
48
|
+
.tox/
|
|
49
|
+
cov.xml
|
|
50
|
+
htmlcov/
|
|
51
|
+
large_cassettes/
|
|
52
|
+
.noseids
|
|
53
|
+
nosetests.xml
|
|
54
|
+
pytestdebug.log
|
|
55
|
+
results_junit.xml
|
|
56
|
+
test_results.json
|
|
57
|
+
log.html
|
|
58
|
+
report.html
|
|
59
|
+
output.xml
|
|
60
|
+
|
|
61
|
+
# Robot
|
|
62
|
+
*.webm
|
|
63
|
+
.pabotsuitenames
|
|
64
|
+
geckodriver*.log
|
|
65
|
+
pabot_results/
|
|
66
|
+
playwright-log.txt
|
|
67
|
+
robot/CumulusCI/results/
|
|
68
|
+
|
|
69
|
+
# Salesforce
|
|
70
|
+
**/.sfdx
|
|
71
|
+
.sf
|
|
72
|
+
|
|
73
|
+
# direnv
|
|
74
|
+
.direnv
|
|
75
|
+
.envrc
|
|
76
|
+
|
|
77
|
+
# Editors
|
|
78
|
+
*~
|
|
79
|
+
.*.swp
|
|
80
|
+
.*.swo
|
|
81
|
+
.vscode/
|
|
82
|
+
.idea/
|
|
83
|
+
tags
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
=======
|
|
2
|
+
Credits
|
|
3
|
+
=======
|
|
4
|
+
|
|
5
|
+
Development Team
|
|
6
|
+
----------------
|
|
7
|
+
|
|
8
|
+
CumulusCI is developed by the Salesforce.org Release Engineering team:
|
|
9
|
+
|
|
10
|
+
* Jason Lantz
|
|
11
|
+
* David Glick
|
|
12
|
+
* James Estevez
|
|
13
|
+
* Paul Prescod
|
|
14
|
+
* Bryan Oakley
|
|
15
|
+
* David Reed
|
|
16
|
+
* Brandon Parker
|
|
17
|
+
* Josh Kofsky
|
|
18
|
+
* Marcel Pufal
|
|
19
|
+
* David Ray
|
|
20
|
+
|
|
21
|
+
Developers Emeritus
|
|
22
|
+
-------------------
|
|
23
|
+
|
|
24
|
+
* Chris Polcyn
|
|
25
|
+
* Christian Carter
|
|
26
|
+
|
|
27
|
+
Contributors
|
|
28
|
+
------------
|
|
29
|
+
|
|
30
|
+
Thanks to the many community and Salesforce.org staff
|
|
31
|
+
contributors!
|
|
32
|
+
|
|
33
|
+
For example:
|
|
34
|
+
|
|
35
|
+
(add your name here, when you contribute through a Pull Request!)
|
|
36
|
+
|
|
37
|
+
* Ed Rivas (jerivas)
|
|
38
|
+
* Gustavo Tandeciarz (dcinzona)
|
|
39
|
+
* Chandler Anderson (zenibako)
|
|
40
|
+
* Ben French (BenjaminFrench)
|
|
41
|
+
* Rupert Barrow (rupertbarrow)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Copyright (c) 2021, Salesforce.com, Inc.
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
5
|
+
|
|
6
|
+
* Redistributions of source code must retain the
|
|
7
|
+
above copyright notice, this list of conditions
|
|
8
|
+
and the following disclaimer.
|
|
9
|
+
|
|
10
|
+
* Redistributions in binary form must reproduce
|
|
11
|
+
the above copyright notice, this list of conditions
|
|
12
|
+
and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
* Neither the name of Salesforce.com nor the names
|
|
16
|
+
of its contributors may be used to endorse or promote
|
|
17
|
+
products derived from this software without specific
|
|
18
|
+
prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
21
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
22
|
+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
23
|
+
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
|
|
24
|
+
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
|
25
|
+
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
|
26
|
+
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
27
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
28
|
+
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
|
|
29
|
+
WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cumulusci-plus
|
|
3
|
+
Version: 5.0.0
|
|
4
|
+
Summary: Build and release tools for Salesforce developers
|
|
5
|
+
Project-URL: Homepage, https://github.com/SFDO-Tooling/CumulusCI
|
|
6
|
+
Project-URL: Changelog, https://cumulusci.readthedocs.io/en/stable/history.html
|
|
7
|
+
Project-URL: Bug Tracker, https://github.com/SFDO-Tooling/CumulusCI/issues
|
|
8
|
+
Author-email: "Salesforce.org" <sfdo-mrbelvedere@salesforce.com>
|
|
9
|
+
License: BSD 3-Clause License
|
|
10
|
+
License-File: AUTHORS.rst
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: cumulusci,salesforce
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
16
|
+
Classifier: Natural Language :: English
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Requires-Dist: click>=8.1
|
|
23
|
+
Requires-Dist: cryptography
|
|
24
|
+
Requires-Dist: defusedxml
|
|
25
|
+
Requires-Dist: docutils>=0.21.2
|
|
26
|
+
Requires-Dist: faker
|
|
27
|
+
Requires-Dist: fs
|
|
28
|
+
Requires-Dist: github3-py
|
|
29
|
+
Requires-Dist: jinja2
|
|
30
|
+
Requires-Dist: keyring<=23.0.1
|
|
31
|
+
Requires-Dist: lxml
|
|
32
|
+
Requires-Dist: markupsafe
|
|
33
|
+
Requires-Dist: packaging>=23.0
|
|
34
|
+
Requires-Dist: psutil
|
|
35
|
+
Requires-Dist: pydantic<2
|
|
36
|
+
Requires-Dist: pyjwt
|
|
37
|
+
Requires-Dist: python-dateutil
|
|
38
|
+
Requires-Dist: pytz
|
|
39
|
+
Requires-Dist: pyyaml
|
|
40
|
+
Requires-Dist: requests
|
|
41
|
+
Requires-Dist: requests-futures
|
|
42
|
+
Requires-Dist: rich>=13.9.4
|
|
43
|
+
Requires-Dist: robotframework
|
|
44
|
+
Requires-Dist: robotframework-pabot
|
|
45
|
+
Requires-Dist: robotframework-requests
|
|
46
|
+
Requires-Dist: robotframework-seleniumlibrary<6
|
|
47
|
+
Requires-Dist: rst2ansi>=0.1.5
|
|
48
|
+
Requires-Dist: salesforce-bulk
|
|
49
|
+
Requires-Dist: sarge
|
|
50
|
+
Requires-Dist: selenium<4
|
|
51
|
+
Requires-Dist: simple-salesforce==1.11.4
|
|
52
|
+
Requires-Dist: snowfakery>=4.0.0
|
|
53
|
+
Requires-Dist: sqlalchemy<2
|
|
54
|
+
Requires-Dist: xmltodict
|
|
55
|
+
Provides-Extra: select
|
|
56
|
+
Requires-Dist: annoy; extra == 'select'
|
|
57
|
+
Requires-Dist: numpy; extra == 'select'
|
|
58
|
+
Requires-Dist: pandas; extra == 'select'
|
|
59
|
+
Requires-Dist: scikit-learn; extra == 'select'
|
|
60
|
+
Description-Content-Type: text/markdown
|
|
61
|
+
|
|
62
|
+
# CumulusCI
|
|
63
|
+
|
|
64
|
+
[](https://coveralls.io/github/SFDO-Tooling/CumulusCI?branch=main)
|
|
65
|
+
[](https://pypi.org/project/cumulusci/)
|
|
66
|
+

|
|
67
|
+

|
|
68
|
+
[](https://cumulusci.readthedocs.io/en/latest/?badge=latest)
|
|
69
|
+
|
|
70
|
+
CumulusCI helps build great applications on the Salesforce platform by
|
|
71
|
+
automating org setup, testing, and deployment for everyone --- from
|
|
72
|
+
developers and admins to testers and product managers.
|
|
73
|
+
|
|
74
|
+
**Best practices, proven at scale.** CumulusCI provides a complete
|
|
75
|
+
development and release process created by Salesforce.org to build and
|
|
76
|
+
release applications to thousands of users on the Salesforce platform.
|
|
77
|
+
It\'s easy to start new projects with a standard set of tasks (single
|
|
78
|
+
actions) and flows (sequences of tasks), or customize by adding your
|
|
79
|
+
own.
|
|
80
|
+
|
|
81
|
+
**Batteries included.** Out-of-the-box features help you quickly:
|
|
82
|
+
|
|
83
|
+
- Build sophisticated orgs with automatic installation of
|
|
84
|
+
dependencies.
|
|
85
|
+
- Load and capture sample datasets to make your orgs feel real.
|
|
86
|
+
- Apply transformations to existing metadata to tailor orgs to your
|
|
87
|
+
specific requirements.
|
|
88
|
+
- Run builds in continuous integration systems.
|
|
89
|
+
- Create end-to-end browser tests and setup automation using [Robot
|
|
90
|
+
Framework](https://cumulusci.readthedocs.io/en/latest/robotframework.html).
|
|
91
|
+
- Generate synthetic data on any scale, from a single record to a
|
|
92
|
+
million, using
|
|
93
|
+
[Snowfakery](https://cumulusci.readthedocs.io/en/latest/cookbook.html#large-volume-data-synthesis-with-snowfakery).
|
|
94
|
+
|
|
95
|
+
**Build anywhere.** Automation defined using CumulusCI is portable. It
|
|
96
|
+
is stored in a source repository and can be run from your local command
|
|
97
|
+
line, from a continuous integration system, or from a customer-facing
|
|
98
|
+
MetaDeploy installer. CumulusCI can run automation on scratch orgs
|
|
99
|
+
created using the Salesforce CLI, or on persistent orgs like sandboxes,
|
|
100
|
+
production orgs, and Developer Edition orgs.
|
|
101
|
+
|
|
102
|
+
## Learn more
|
|
103
|
+
|
|
104
|
+
For a tutorial introduction to CumulusCI, complete the [Build
|
|
105
|
+
Applications with
|
|
106
|
+
CumulusCI](https://trailhead.salesforce.com/en/content/learn/trails/build-applications-with-cumulusci)
|
|
107
|
+
trail on Trailhead.
|
|
108
|
+
|
|
109
|
+
To go in depth, read the [full
|
|
110
|
+
documentation](https://cumulusci.readthedocs.io/en/latest/).
|
|
111
|
+
|
|
112
|
+
If you just want a quick intro, watch [these screencast
|
|
113
|
+
demos](https://cumulusci.readthedocs.io/en/latest/demos.html) of using
|
|
114
|
+
CumulusCI to configure a Salesforce project from a GitHub repository.
|
|
115
|
+
|
|
116
|
+
For a live demo with voiceover, please see Jason Lantz\'s [PyCon 2020
|
|
117
|
+
presentation](https://www.youtube.com/watch?v=XL77lRTVF3g) from minute
|
|
118
|
+
36 through minute 54.
|
|
119
|
+
|
|
120
|
+
## Questions?
|
|
121
|
+
|
|
122
|
+
Ask in the [CumulusCI (CCI) group in the Trailblazer
|
|
123
|
+
Community](https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU).
|
|
124
|
+
|
|
125
|
+
_Please note:_ CumulusCI is distributed under an [open source
|
|
126
|
+
license](https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE)
|
|
127
|
+
and is not covered by the Salesforce Master Subscription Agreement.
|
|
128
|
+
|
|
129
|
+
<!-- Changelog -->
|
|
130
|
+
## v4.4.0 (2025-05-05)
|
|
131
|
+
|
|
132
|
+
<!-- Release notes generated using configuration in .github/release.yml at main -->
|
|
133
|
+
|
|
134
|
+
## What's Changed
|
|
135
|
+
|
|
136
|
+
### Changes
|
|
137
|
+
|
|
138
|
+
- Add new tasks get_assignable_permission_sets and get_assignable_licenses by [@vsbharath](https://github.com/vsbharath) in [#3892](https://github.com/SFDO-Tooling/CumulusCI/pull/3892)
|
|
139
|
+
|
|
140
|
+
### Issues Fixed
|
|
141
|
+
|
|
142
|
+
- fix: Make get permset licenses return active only by [@jstvz](https://github.com/jstvz) in [#3888](https://github.com/SFDO-Tooling/CumulusCI/pull/3888)
|
|
143
|
+
- fix: Read the docs configuration by LaTeX into PDF by [@dcinzona](https://github.com/dcinzona) in [#3891](https://github.com/SFDO-Tooling/CumulusCI/pull/3891)
|
|
144
|
+
|
|
145
|
+
**Full Changelog**: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.3.0.dev0...v4.4.0
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# CumulusCI
|
|
2
|
+
|
|
3
|
+
[](https://coveralls.io/github/SFDO-Tooling/CumulusCI?branch=main)
|
|
4
|
+
[](https://pypi.org/project/cumulusci/)
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
[](https://cumulusci.readthedocs.io/en/latest/?badge=latest)
|
|
8
|
+
|
|
9
|
+
CumulusCI helps build great applications on the Salesforce platform by
|
|
10
|
+
automating org setup, testing, and deployment for everyone --- from
|
|
11
|
+
developers and admins to testers and product managers.
|
|
12
|
+
|
|
13
|
+
**Best practices, proven at scale.** CumulusCI provides a complete
|
|
14
|
+
development and release process created by Salesforce.org to build and
|
|
15
|
+
release applications to thousands of users on the Salesforce platform.
|
|
16
|
+
It\'s easy to start new projects with a standard set of tasks (single
|
|
17
|
+
actions) and flows (sequences of tasks), or customize by adding your
|
|
18
|
+
own.
|
|
19
|
+
|
|
20
|
+
**Batteries included.** Out-of-the-box features help you quickly:
|
|
21
|
+
|
|
22
|
+
- Build sophisticated orgs with automatic installation of
|
|
23
|
+
dependencies.
|
|
24
|
+
- Load and capture sample datasets to make your orgs feel real.
|
|
25
|
+
- Apply transformations to existing metadata to tailor orgs to your
|
|
26
|
+
specific requirements.
|
|
27
|
+
- Run builds in continuous integration systems.
|
|
28
|
+
- Create end-to-end browser tests and setup automation using [Robot
|
|
29
|
+
Framework](https://cumulusci.readthedocs.io/en/latest/robotframework.html).
|
|
30
|
+
- Generate synthetic data on any scale, from a single record to a
|
|
31
|
+
million, using
|
|
32
|
+
[Snowfakery](https://cumulusci.readthedocs.io/en/latest/cookbook.html#large-volume-data-synthesis-with-snowfakery).
|
|
33
|
+
|
|
34
|
+
**Build anywhere.** Automation defined using CumulusCI is portable. It
|
|
35
|
+
is stored in a source repository and can be run from your local command
|
|
36
|
+
line, from a continuous integration system, or from a customer-facing
|
|
37
|
+
MetaDeploy installer. CumulusCI can run automation on scratch orgs
|
|
38
|
+
created using the Salesforce CLI, or on persistent orgs like sandboxes,
|
|
39
|
+
production orgs, and Developer Edition orgs.
|
|
40
|
+
|
|
41
|
+
## Learn more
|
|
42
|
+
|
|
43
|
+
For a tutorial introduction to CumulusCI, complete the [Build
|
|
44
|
+
Applications with
|
|
45
|
+
CumulusCI](https://trailhead.salesforce.com/en/content/learn/trails/build-applications-with-cumulusci)
|
|
46
|
+
trail on Trailhead.
|
|
47
|
+
|
|
48
|
+
To go in depth, read the [full
|
|
49
|
+
documentation](https://cumulusci.readthedocs.io/en/latest/).
|
|
50
|
+
|
|
51
|
+
If you just want a quick intro, watch [these screencast
|
|
52
|
+
demos](https://cumulusci.readthedocs.io/en/latest/demos.html) of using
|
|
53
|
+
CumulusCI to configure a Salesforce project from a GitHub repository.
|
|
54
|
+
|
|
55
|
+
For a live demo with voiceover, please see Jason Lantz\'s [PyCon 2020
|
|
56
|
+
presentation](https://www.youtube.com/watch?v=XL77lRTVF3g) from minute
|
|
57
|
+
36 through minute 54.
|
|
58
|
+
|
|
59
|
+
## Questions?
|
|
60
|
+
|
|
61
|
+
Ask in the [CumulusCI (CCI) group in the Trailblazer
|
|
62
|
+
Community](https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU).
|
|
63
|
+
|
|
64
|
+
_Please note:_ CumulusCI is distributed under an [open source
|
|
65
|
+
license](https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE)
|
|
66
|
+
and is not covered by the Salesforce Master Subscription Agreement.
|
|
67
|
+
|
|
68
|
+
<!-- Changelog -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "5.0.0"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
import warnings
|
|
4
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
5
|
+
|
|
6
|
+
# Suppress pkg_resources deprecation warnings from dependencies
|
|
7
|
+
warnings.filterwarnings("ignore", message=".*pkg_resources.*", category=UserWarning)
|
|
8
|
+
|
|
9
|
+
from simple_salesforce import api, bulk
|
|
10
|
+
|
|
11
|
+
__location__ = os.path.dirname(os.path.realpath(__file__))
|
|
12
|
+
|
|
13
|
+
try:
|
|
14
|
+
__version__ = version("cumulusci")
|
|
15
|
+
except PackageNotFoundError:
|
|
16
|
+
__version__ = "unknown"
|
|
17
|
+
|
|
18
|
+
if sys.version_info < (3, 8): # pragma: no cover
|
|
19
|
+
raise Exception("CumulusCI requires Python 3.8+.")
|
|
20
|
+
|
|
21
|
+
api.OrderedDict = dict
|
|
22
|
+
bulk.OrderedDict = dict
|
|
File without changes
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import code
|
|
2
|
+
import contextlib
|
|
3
|
+
import pdb
|
|
4
|
+
import runpy
|
|
5
|
+
import sys
|
|
6
|
+
import traceback
|
|
7
|
+
|
|
8
|
+
import click
|
|
9
|
+
import requests
|
|
10
|
+
import rich
|
|
11
|
+
from rich.console import Console
|
|
12
|
+
from rich.markup import escape
|
|
13
|
+
|
|
14
|
+
import cumulusci
|
|
15
|
+
from cumulusci.core.debug import set_debug_mode
|
|
16
|
+
from cumulusci.core.exceptions import CumulusCIUsageError
|
|
17
|
+
from cumulusci.utils import get_cci_upgrade_command
|
|
18
|
+
from cumulusci.utils.http.requests_utils import init_requests_trust
|
|
19
|
+
from cumulusci.utils.logging import tee_stdout_stderr
|
|
20
|
+
|
|
21
|
+
from .error import error
|
|
22
|
+
from .flow import flow
|
|
23
|
+
from .logger import get_tempfile_logger, init_logger
|
|
24
|
+
from .org import org
|
|
25
|
+
from .plan import plan
|
|
26
|
+
from .project import project
|
|
27
|
+
from .robot import robot
|
|
28
|
+
from .runtime import CliRuntime, pass_runtime
|
|
29
|
+
from .service import service
|
|
30
|
+
from .task import task
|
|
31
|
+
from .utils import (
|
|
32
|
+
check_latest_version,
|
|
33
|
+
get_installed_version,
|
|
34
|
+
get_latest_final_version,
|
|
35
|
+
warn_if_no_long_paths,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
SUGGEST_ERROR_COMMAND = (
|
|
39
|
+
"""Run this command for more information about debugging errors: cci error --help"""
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
USAGE_ERRORS = (CumulusCIUsageError, click.UsageError)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# Root command
|
|
47
|
+
#
|
|
48
|
+
def main(args=None):
|
|
49
|
+
"""Main CumulusCI CLI entry point.
|
|
50
|
+
|
|
51
|
+
This runs as the first step in processing any CLI command.
|
|
52
|
+
|
|
53
|
+
This wraps the `click` library in order to do some initialization and centralized error handling.
|
|
54
|
+
"""
|
|
55
|
+
with contextlib.ExitStack() as stack:
|
|
56
|
+
args = args or sys.argv
|
|
57
|
+
|
|
58
|
+
# (If enabled) set up requests to validate certs using system CA certs instead of certifi
|
|
59
|
+
init_requests_trust()
|
|
60
|
+
|
|
61
|
+
# Check for updates _unless_ we've been asked to output JSON,
|
|
62
|
+
# or if we're going to check anyway as part of the `version` command.
|
|
63
|
+
is_version_command = len(args) > 1 and args[1] == "version"
|
|
64
|
+
if "--json" not in args and not is_version_command:
|
|
65
|
+
check_latest_version()
|
|
66
|
+
|
|
67
|
+
# Only create logfiles for commands that are not `cci error`
|
|
68
|
+
is_error_command = len(args) > 2 and args[1] == "error"
|
|
69
|
+
tempfile_path = None
|
|
70
|
+
if not is_error_command:
|
|
71
|
+
logger, tempfile_path = get_tempfile_logger()
|
|
72
|
+
stack.enter_context(tee_stdout_stderr(args, logger, tempfile_path))
|
|
73
|
+
|
|
74
|
+
debug = "--debug" in args
|
|
75
|
+
if debug:
|
|
76
|
+
args.remove("--debug")
|
|
77
|
+
|
|
78
|
+
with set_debug_mode(debug):
|
|
79
|
+
try:
|
|
80
|
+
runtime = CliRuntime(load_keychain=False)
|
|
81
|
+
except Exception as e:
|
|
82
|
+
handle_exception(e, is_error_command, tempfile_path, debug)
|
|
83
|
+
sys.exit(1)
|
|
84
|
+
|
|
85
|
+
runtime.check_cumulusci_version()
|
|
86
|
+
should_show_stacktraces = runtime.universal_config.cli__show_stacktraces
|
|
87
|
+
|
|
88
|
+
init_logger(debug=debug)
|
|
89
|
+
# Hand CLI processing over to click, but handle exceptions
|
|
90
|
+
try:
|
|
91
|
+
cli(args[1:], standalone_mode=False, obj=runtime)
|
|
92
|
+
except click.Abort: # Keyboard interrupt
|
|
93
|
+
console = Console()
|
|
94
|
+
show_debug_info() if debug else console.print("\n[red bold]Aborted!")
|
|
95
|
+
sys.exit(1)
|
|
96
|
+
except Exception as e:
|
|
97
|
+
if debug:
|
|
98
|
+
show_debug_info()
|
|
99
|
+
else:
|
|
100
|
+
handle_exception(
|
|
101
|
+
e,
|
|
102
|
+
is_error_command,
|
|
103
|
+
tempfile_path,
|
|
104
|
+
should_show_stacktraces,
|
|
105
|
+
)
|
|
106
|
+
sys.exit(1)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def handle_exception(
|
|
110
|
+
error,
|
|
111
|
+
is_error_cmd,
|
|
112
|
+
logfile_path,
|
|
113
|
+
should_show_stacktraces=False,
|
|
114
|
+
):
|
|
115
|
+
"""Displays error of appropriate message back to user, prompts user to investigate further
|
|
116
|
+
with `cci error` commands, and writes the traceback to the latest logfile.
|
|
117
|
+
"""
|
|
118
|
+
error_console = Console(stderr=True)
|
|
119
|
+
if isinstance(error, requests.exceptions.ConnectionError):
|
|
120
|
+
connection_error_message(error_console)
|
|
121
|
+
elif isinstance(error, click.ClickException):
|
|
122
|
+
error_console.print(f"[red bold]Error: {escape(error.format_message())}")
|
|
123
|
+
else:
|
|
124
|
+
# We call str ourselves to make Typeguard shut up.
|
|
125
|
+
error_console.print(f"[red bold]Error: {escape(str(error))}")
|
|
126
|
+
# Only suggest gist command if it wasn't run
|
|
127
|
+
if not is_error_cmd:
|
|
128
|
+
error_console.print(f"[yellow]{SUGGEST_ERROR_COMMAND}")
|
|
129
|
+
|
|
130
|
+
# This is None if we're handling an exception for a `cci error` command.
|
|
131
|
+
if logfile_path:
|
|
132
|
+
with open(logfile_path, "a") as log_file:
|
|
133
|
+
traceback.print_exc(file=log_file) # log stacktrace silently
|
|
134
|
+
|
|
135
|
+
if should_show_stacktraces and not isinstance(error, USAGE_ERRORS):
|
|
136
|
+
error_console.print_exception()
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def connection_error_message(console: Console):
|
|
140
|
+
message = (
|
|
141
|
+
"We encountered an error with your internet connection. "
|
|
142
|
+
"Please check your connection and try the last cci command again."
|
|
143
|
+
)
|
|
144
|
+
console.print(f"[red bold]{message}")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def show_debug_info():
|
|
148
|
+
"""Displays the traceback and opens pdb"""
|
|
149
|
+
traceback.print_exc()
|
|
150
|
+
pdb.post_mortem()
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def show_version_info():
|
|
154
|
+
console = rich.get_console()
|
|
155
|
+
console.print(f"CumulusCI version: {cumulusci.__version__} ({sys.argv[0]})")
|
|
156
|
+
console.print(f"Python version: {sys.version.split()[0]} ({sys.executable})")
|
|
157
|
+
console.print()
|
|
158
|
+
warn_if_no_long_paths(console=console)
|
|
159
|
+
|
|
160
|
+
current_version = get_installed_version()
|
|
161
|
+
latest_version = get_latest_final_version()
|
|
162
|
+
|
|
163
|
+
if not latest_version > current_version:
|
|
164
|
+
console.print("You have the latest version of CumulusCI :sun_behind_cloud:\n")
|
|
165
|
+
display_release_notes_link(str(latest_version))
|
|
166
|
+
return
|
|
167
|
+
|
|
168
|
+
console.print(
|
|
169
|
+
f"[yellow]There is a newer version of CumulusCI available: {str(latest_version)}"
|
|
170
|
+
)
|
|
171
|
+
console.print(f"To upgrade, run `{get_cci_upgrade_command()}`")
|
|
172
|
+
display_release_notes_link(str(latest_version))
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def display_release_notes_link(latest_version: str) -> None:
|
|
176
|
+
"""Provide a link to the latest CumulusCI Release Notes"""
|
|
177
|
+
release_notes_link = (
|
|
178
|
+
f"https://github.com/SFDO-Tooling/CumulusCI/releases/tag/v{latest_version}"
|
|
179
|
+
)
|
|
180
|
+
console = rich.get_console()
|
|
181
|
+
console.print(
|
|
182
|
+
f"See the latest CumulusCI Release Notes: [link={release_notes_link}]{release_notes_link}[/link]"
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def version_info_wrapper(
|
|
187
|
+
ctx: click.Context, param: click.Parameter, value: bool
|
|
188
|
+
) -> None:
|
|
189
|
+
if not value:
|
|
190
|
+
return
|
|
191
|
+
show_version_info()
|
|
192
|
+
ctx.exit()
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@click.group("main", help="")
|
|
196
|
+
@click.option( # based on https://click.palletsprojects.com/en/8.1.x/options/#callbacks-and-eager-options
|
|
197
|
+
"--version",
|
|
198
|
+
is_flag=True,
|
|
199
|
+
expose_value=False,
|
|
200
|
+
is_eager=True,
|
|
201
|
+
help="Show the version and exit.",
|
|
202
|
+
callback=version_info_wrapper,
|
|
203
|
+
)
|
|
204
|
+
def cli():
|
|
205
|
+
"""Top-level `click` command group."""
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
@cli.command(name="version", help="Print the current version of CumulusCI")
|
|
209
|
+
def version():
|
|
210
|
+
show_version_info()
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
@cli.command(name="shell", help="Drop into a Python shell")
|
|
214
|
+
@click.option("--script", help="Path to a script to run", type=click.Path())
|
|
215
|
+
@click.option("--python", help="Python code to run directly")
|
|
216
|
+
@pass_runtime(require_project=False, require_keychain=True)
|
|
217
|
+
def shell(runtime, script=None, python=None):
|
|
218
|
+
# alias for backwards-compatibility
|
|
219
|
+
variables = {
|
|
220
|
+
"config": runtime,
|
|
221
|
+
"runtime": runtime,
|
|
222
|
+
"project_config": runtime.project_config,
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
if script:
|
|
226
|
+
if python:
|
|
227
|
+
raise click.UsageError("Cannot specify both --script and --python")
|
|
228
|
+
runpy.run_path(script, init_globals=variables)
|
|
229
|
+
elif python:
|
|
230
|
+
exec(python, variables)
|
|
231
|
+
else:
|
|
232
|
+
code.interact(local=variables)
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
# Top Level Groups
|
|
236
|
+
|
|
237
|
+
cli.add_command(error)
|
|
238
|
+
cli.add_command(project)
|
|
239
|
+
cli.add_command(org)
|
|
240
|
+
cli.add_command(service)
|
|
241
|
+
cli.add_command(task)
|
|
242
|
+
cli.add_command(flow)
|
|
243
|
+
cli.add_command(plan)
|
|
244
|
+
cli.add_command(robot)
|