cumulusci-plus 5.0.19__py3-none-any.whl → 5.0.35__py3-none-any.whl
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/__about__.py +1 -1
- cumulusci/cli/logger.py +2 -2
- cumulusci/cli/service.py +20 -0
- cumulusci/cli/task.py +17 -0
- cumulusci/cli/tests/test_error.py +3 -1
- cumulusci/cli/tests/test_flow.py +279 -2
- cumulusci/cli/tests/test_service.py +15 -12
- cumulusci/cli/tests/test_task.py +88 -2
- cumulusci/cli/tests/utils.py +1 -4
- cumulusci/core/config/base_task_flow_config.py +26 -1
- cumulusci/core/config/project_config.py +2 -20
- cumulusci/core/config/tests/test_config_expensive.py +9 -3
- cumulusci/core/config/universal_config.py +3 -4
- cumulusci/core/dependencies/base.py +1 -1
- cumulusci/core/dependencies/dependencies.py +1 -1
- cumulusci/core/dependencies/github.py +1 -2
- cumulusci/core/dependencies/resolvers.py +1 -1
- cumulusci/core/dependencies/tests/test_dependencies.py +1 -1
- cumulusci/core/dependencies/tests/test_resolvers.py +1 -1
- cumulusci/core/flowrunner.py +90 -6
- cumulusci/core/github.py +1 -1
- cumulusci/core/sfdx.py +3 -1
- cumulusci/core/source_transforms/tests/test_transforms.py +1 -1
- cumulusci/core/source_transforms/transforms.py +1 -1
- cumulusci/core/tasks.py +13 -2
- cumulusci/core/tests/test_flowrunner.py +100 -0
- cumulusci/core/tests/test_tasks.py +65 -0
- cumulusci/core/utils.py +3 -1
- cumulusci/core/versions.py +1 -1
- cumulusci/cumulusci.yml +55 -0
- cumulusci/oauth/client.py +1 -1
- cumulusci/plugins/plugin_base.py +5 -3
- cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +1 -1
- cumulusci/salesforce_api/rest_deploy.py +1 -1
- cumulusci/schema/cumulusci.jsonschema.json +64 -0
- cumulusci/tasks/apex/anon.py +1 -1
- cumulusci/tasks/apex/testrunner.py +416 -142
- cumulusci/tasks/apex/tests/test_apex_tasks.py +917 -1
- cumulusci/tasks/bulkdata/extract.py +0 -1
- cumulusci/tasks/bulkdata/extract_dataset_utils/extract_yml.py +1 -1
- cumulusci/tasks/bulkdata/extract_dataset_utils/synthesize_extract_declarations.py +1 -1
- cumulusci/tasks/bulkdata/extract_dataset_utils/tests/test_extract_yml.py +1 -1
- cumulusci/tasks/bulkdata/generate_and_load_data.py +136 -12
- cumulusci/tasks/bulkdata/mapping_parser.py +139 -44
- cumulusci/tasks/bulkdata/select_utils.py +1 -1
- cumulusci/tasks/bulkdata/snowfakery.py +100 -25
- cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +159 -0
- cumulusci/tasks/bulkdata/tests/test_load.py +0 -2
- cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +763 -1
- cumulusci/tasks/bulkdata/tests/test_select_utils.py +26 -0
- cumulusci/tasks/bulkdata/tests/test_snowfakery.py +133 -0
- cumulusci/tasks/create_package_version.py +190 -16
- cumulusci/tasks/datadictionary.py +1 -1
- cumulusci/tasks/metadata_etl/base.py +7 -3
- cumulusci/tasks/metadata_etl/layouts.py +1 -1
- cumulusci/tasks/metadata_etl/permissions.py +1 -1
- cumulusci/tasks/metadata_etl/remote_site_settings.py +2 -2
- cumulusci/tasks/push/README.md +15 -17
- cumulusci/tasks/release_notes/README.md +13 -13
- cumulusci/tasks/release_notes/generator.py +13 -8
- cumulusci/tasks/robotframework/tests/test_robotframework.py +6 -1
- cumulusci/tasks/salesforce/Deploy.py +53 -2
- cumulusci/tasks/salesforce/SfPackageCommands.py +363 -0
- cumulusci/tasks/salesforce/__init__.py +1 -0
- cumulusci/tasks/salesforce/assign_ps_psg.py +448 -0
- cumulusci/tasks/salesforce/composite.py +1 -1
- cumulusci/tasks/salesforce/custom_settings_wait.py +1 -1
- cumulusci/tasks/salesforce/enable_prediction.py +5 -1
- cumulusci/tasks/salesforce/getPackageVersion.py +89 -0
- cumulusci/tasks/salesforce/profiles.py +13 -9
- cumulusci/tasks/salesforce/sourcetracking.py +1 -1
- cumulusci/tasks/salesforce/tests/test_Deploy.py +316 -1
- cumulusci/tasks/salesforce/tests/test_SfPackageCommands.py +554 -0
- cumulusci/tasks/salesforce/tests/test_assign_ps_psg.py +1055 -0
- cumulusci/tasks/salesforce/tests/test_getPackageVersion.py +651 -0
- cumulusci/tasks/salesforce/tests/test_profiles.py +43 -3
- cumulusci/tasks/salesforce/tests/test_update_dependencies.py +1 -1
- cumulusci/tasks/salesforce/tests/test_update_external_credential.py +912 -0
- cumulusci/tasks/salesforce/tests/test_update_named_credential.py +1042 -0
- cumulusci/tasks/salesforce/update_dependencies.py +2 -2
- cumulusci/tasks/salesforce/update_external_credential.py +562 -0
- cumulusci/tasks/salesforce/update_named_credential.py +441 -0
- cumulusci/tasks/salesforce/update_profile.py +17 -13
- cumulusci/tasks/salesforce/users/permsets.py +62 -5
- cumulusci/tasks/salesforce/users/tests/test_permsets.py +237 -11
- cumulusci/tasks/sfdmu/__init__.py +0 -0
- cumulusci/tasks/sfdmu/sfdmu.py +363 -0
- cumulusci/tasks/sfdmu/tests/__init__.py +1 -0
- cumulusci/tasks/sfdmu/tests/test_runner.py +212 -0
- cumulusci/tasks/sfdmu/tests/test_sfdmu.py +1012 -0
- cumulusci/tasks/tests/test_create_package_version.py +716 -1
- cumulusci/tasks/tests/test_util.py +42 -0
- cumulusci/tasks/util.py +37 -1
- cumulusci/tasks/utility/copyContents.py +402 -0
- cumulusci/tasks/utility/credentialManager.py +256 -0
- cumulusci/tasks/utility/directoryRecreator.py +30 -0
- cumulusci/tasks/utility/env_management.py +1 -1
- cumulusci/tasks/utility/secretsToEnv.py +135 -0
- cumulusci/tasks/utility/tests/test_copyContents.py +1719 -0
- cumulusci/tasks/utility/tests/test_credentialManager.py +564 -0
- cumulusci/tasks/utility/tests/test_directoryRecreator.py +439 -0
- cumulusci/tasks/utility/tests/test_secretsToEnv.py +1091 -0
- cumulusci/tests/test_integration_infrastructure.py +3 -1
- cumulusci/tests/test_utils.py +70 -6
- cumulusci/utils/__init__.py +54 -9
- cumulusci/utils/classutils.py +5 -2
- cumulusci/utils/http/tests/cassettes/ManualEditTestCompositeParallelSalesforce.test_http_headers.yaml +31 -30
- cumulusci/utils/options.py +23 -1
- cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +1 -1
- cumulusci/utils/yaml/cumulusci_yml.py +7 -3
- cumulusci/utils/yaml/model_parser.py +2 -2
- cumulusci/utils/yaml/tests/test_cumulusci_yml.py +1 -1
- cumulusci/utils/yaml/tests/test_model_parser.py +3 -3
- cumulusci/vcs/base.py +23 -15
- cumulusci/vcs/bootstrap.py +5 -4
- cumulusci/vcs/utils/list_modified_files.py +189 -0
- cumulusci/vcs/utils/tests/test_list_modified_files.py +588 -0
- {cumulusci_plus-5.0.19.dist-info → cumulusci_plus-5.0.35.dist-info}/METADATA +12 -10
- {cumulusci_plus-5.0.19.dist-info → cumulusci_plus-5.0.35.dist-info}/RECORD +123 -98
- {cumulusci_plus-5.0.19.dist-info → cumulusci_plus-5.0.35.dist-info}/WHEEL +0 -0
- {cumulusci_plus-5.0.19.dist-info → cumulusci_plus-5.0.35.dist-info}/entry_points.txt +0 -0
- {cumulusci_plus-5.0.19.dist-info → cumulusci_plus-5.0.35.dist-info}/licenses/AUTHORS.rst +0 -0
- {cumulusci_plus-5.0.19.dist-info → cumulusci_plus-5.0.35.dist-info}/licenses/LICENSE +0 -0
cumulusci/cumulusci.yml
CHANGED
|
@@ -197,6 +197,10 @@ tasks:
|
|
|
197
197
|
user_permissions:
|
|
198
198
|
- PermissionsBulkApiHardDelete
|
|
199
199
|
- PermissionsCreateAuditFields
|
|
200
|
+
assign_permission_set_to_psg:
|
|
201
|
+
group: Metadata Transformations
|
|
202
|
+
description: "Assigns specified Permission Sets to the specified Permission Set Groups using the Composite API."
|
|
203
|
+
class_path: cumulusci.tasks.salesforce.assign_ps_psg.AssignPermissionSetToPermissionSetGroup
|
|
200
204
|
create_unmanaged_ee_src:
|
|
201
205
|
description: Modifies the src directory for unmanaged deployment to an EE org
|
|
202
206
|
class_path: cumulusci.tasks.metadata.ee_src.CreateUnmanagedEESrc
|
|
@@ -228,6 +232,10 @@ tasks:
|
|
|
228
232
|
options:
|
|
229
233
|
path: src
|
|
230
234
|
group: Salesforce Metadata
|
|
235
|
+
deploy_unpackaged_metadata:
|
|
236
|
+
description: Deploys the unpackaged metadata from the project config to the target org. This is application of 2nd generation package metadata.
|
|
237
|
+
class_path: cumulusci.tasks.salesforce.DeployUnpackagedMetadata
|
|
238
|
+
group: Salesforce Metadata
|
|
231
239
|
deploy_marketing_cloud_package:
|
|
232
240
|
class_path: cumulusci.tasks.marketing_cloud.deploy.MarketingCloudDeployTask
|
|
233
241
|
description: Deploys a package zip file to a Marketing Cloud Tenant via the Marketing Cloud Package Manager API.
|
|
@@ -749,10 +757,30 @@ tasks:
|
|
|
749
757
|
options:
|
|
750
758
|
level: info
|
|
751
759
|
group: Utilities
|
|
760
|
+
copy_file:
|
|
761
|
+
description: "Copy a file for src to dest with environment variable support, Ex: &TMPDIR&/src resolves to /tmp/src on linux or %TMPDIR%/src on windows."
|
|
762
|
+
class_path: cumulusci.tasks.util.CopyFile
|
|
763
|
+
group: Utilities
|
|
764
|
+
load_dot_env:
|
|
765
|
+
description: "Log the contents of the .env file"
|
|
766
|
+
class_path: cumulusci.tasks.util.LoadDotEnv
|
|
767
|
+
group: Utilities
|
|
752
768
|
configure_env:
|
|
753
769
|
description: Get or set environment variables.
|
|
754
770
|
class_path: cumulusci.tasks.utility.env_management.EnvManagement
|
|
755
771
|
group: Utilities
|
|
772
|
+
secrets_to_dotenv:
|
|
773
|
+
description: Get all environment variables from a target JSON file and generates a .env file that can be used to set up the environment variables for the deployment
|
|
774
|
+
class_path: cumulusci.tasks.utility.secretsToEnv.SecretsToEnv
|
|
775
|
+
group: Utilities
|
|
776
|
+
directory_recreator:
|
|
777
|
+
description: Remove and recreate a directory
|
|
778
|
+
class_path: cumulusci.tasks.utility.directoryRecreator.DirectoryRecreator
|
|
779
|
+
group: Utilities
|
|
780
|
+
consolidate_unpackaged_metadata:
|
|
781
|
+
description: Consolidate unpackaged metadata from multiple sources into a single directory
|
|
782
|
+
class_path: cumulusci.tasks.utility.copyContents.ConsolidateUnpackagedMetadata
|
|
783
|
+
group: Utilities
|
|
756
784
|
download_extract:
|
|
757
785
|
description: Downloads files and folders from a VCS repository.
|
|
758
786
|
class_path: cumulusci.tasks.vcs.download_extract.DownloadExtract
|
|
@@ -787,6 +815,10 @@ tasks:
|
|
|
787
815
|
description: Load Custom Settings specified in a YAML file to the target org
|
|
788
816
|
class_path: cumulusci.tasks.salesforce.LoadCustomSettings
|
|
789
817
|
group: "Data Operations"
|
|
818
|
+
sfdmu:
|
|
819
|
+
description: Execute SFDmu data migration with namespace injection support
|
|
820
|
+
class_path: cumulusci.tasks.sfdmu.sfdmu.SfdmuTask
|
|
821
|
+
group: "Data Operations"
|
|
790
822
|
remove_metadata_xml_elements:
|
|
791
823
|
description: Remove specified XML elements from one or more metadata files
|
|
792
824
|
class_path: cumulusci.tasks.metadata.modify.RemoveElementsXPath
|
|
@@ -823,6 +855,26 @@ tasks:
|
|
|
823
855
|
class_path: cumulusci.tasks.salesforce.SfDataCommands.DataCreateRecordTask
|
|
824
856
|
description: "Executes the `sf data create` command against an org"
|
|
825
857
|
group: SalesforceDX Data Commands
|
|
858
|
+
update_package_version:
|
|
859
|
+
class_path: cumulusci.tasks.salesforce.SfPackageCommands.PackageVersionUpdateTask
|
|
860
|
+
description: "Executes the `sf package version update` command against an org"
|
|
861
|
+
group: Salesforce Packages
|
|
862
|
+
get_package_version:
|
|
863
|
+
description: Get package version id from package name and version
|
|
864
|
+
class_path: cumulusci.tasks.salesforce.getPackageVersion.GetPackageVersion
|
|
865
|
+
group: Salesforce Packages
|
|
866
|
+
options:
|
|
867
|
+
package_name: $project_config.project__package__name
|
|
868
|
+
fail_on_error: False
|
|
869
|
+
update_named_credential:
|
|
870
|
+
class_path: cumulusci.tasks.salesforce.update_named_credential.UpdateNamedCredential
|
|
871
|
+
description: Update named credential parameters
|
|
872
|
+
group: Metadata Transformations
|
|
873
|
+
update_external_credential:
|
|
874
|
+
class_path: cumulusci.tasks.salesforce.update_external_credential.UpdateExternalCredential
|
|
875
|
+
description: Update external credential parameters
|
|
876
|
+
group: Metadata Transformations
|
|
877
|
+
|
|
826
878
|
flows:
|
|
827
879
|
ci_beta:
|
|
828
880
|
group: Continuous Integration
|
|
@@ -1562,6 +1614,9 @@ project:
|
|
|
1562
1614
|
namespace:
|
|
1563
1615
|
install_class:
|
|
1564
1616
|
uninstall_class:
|
|
1617
|
+
apex_test_access:
|
|
1618
|
+
package_metadata_access:
|
|
1619
|
+
unpackaged_metadata_path:
|
|
1565
1620
|
api_version: "63.0"
|
|
1566
1621
|
git:
|
|
1567
1622
|
default_branch: master
|
cumulusci/oauth/client.py
CHANGED
|
@@ -19,7 +19,7 @@ from cryptography import x509
|
|
|
19
19
|
from cryptography.hazmat.primitives import hashes, serialization
|
|
20
20
|
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
21
21
|
from cryptography.x509.oid import NameOID
|
|
22
|
-
from pydantic import BaseModel
|
|
22
|
+
from pydantic.v1 import BaseModel
|
|
23
23
|
|
|
24
24
|
from cumulusci.core.exceptions import CumulusCIUsageError
|
|
25
25
|
from cumulusci.oauth.exceptions import OAuth2Error
|
cumulusci/plugins/plugin_base.py
CHANGED
|
@@ -11,7 +11,7 @@ from cumulusci.utils.yaml.cumulusci_yml import Plugin, cci_safe_load
|
|
|
11
11
|
class PluginBase(ABC):
|
|
12
12
|
plugin: Plugin
|
|
13
13
|
plugin_config_file: str = "cumulusci_plugin.yml"
|
|
14
|
-
path: str
|
|
14
|
+
path: str
|
|
15
15
|
plugin_project_config: Optional[dict] = None
|
|
16
16
|
|
|
17
17
|
def __init__(self, **kwargs) -> None:
|
|
@@ -32,12 +32,14 @@ class PluginBase(ABC):
|
|
|
32
32
|
@property
|
|
33
33
|
def name(self) -> str:
|
|
34
34
|
"""Returns the name of the plugin."""
|
|
35
|
-
return
|
|
35
|
+
return (
|
|
36
|
+
self.plugin.name if self.plugin and self.plugin.name else "Unnamed Plugin"
|
|
37
|
+
)
|
|
36
38
|
|
|
37
39
|
@property
|
|
38
40
|
def version(self) -> str:
|
|
39
41
|
"""Returns the version of the plugin."""
|
|
40
|
-
return self.plugin.version if self.plugin else "0.0.0"
|
|
42
|
+
return self.plugin.version if self.plugin and self.plugin.version else "0.0.0"
|
|
41
43
|
|
|
42
44
|
def initialize(self) -> None:
|
|
43
45
|
"""Initialize the plugin. This method is called when the plugin is loaded."""
|
|
@@ -203,7 +203,7 @@ class ObjectManagerPage(BasePage):
|
|
|
203
203
|
|
|
204
204
|
except Exception as e:
|
|
205
205
|
self.builtin.log(
|
|
206
|
-
f"on try #{tries+1} we caught this error: {e}", "DEBUG"
|
|
206
|
+
f"on try #{tries + 1} we caught this error: {e}", "DEBUG"
|
|
207
207
|
)
|
|
208
208
|
self.builtin.sleep("1 second")
|
|
209
209
|
last_error = e
|
|
@@ -138,7 +138,7 @@ class RestDeploy:
|
|
|
138
138
|
|
|
139
139
|
# Construct an error message from deployment failure details
|
|
140
140
|
def _construct_error_message(self, failure):
|
|
141
|
-
error_message = f"{str.upper(failure['problemType'])} in file {failure['fileName'][len(PARENT_DIR_NAME)+len('/'):]}: {failure['problem']}"
|
|
141
|
+
error_message = f"{str.upper(failure['problemType'])} in file {failure['fileName'][len(PARENT_DIR_NAME) + len('/'):]}: {failure['problem']}"
|
|
142
142
|
|
|
143
143
|
if failure["lineNumber"] and failure["columnNumber"]:
|
|
144
144
|
error_message += (
|
|
@@ -246,6 +246,70 @@
|
|
|
246
246
|
"metadata_package_id": {
|
|
247
247
|
"title": "Metadata Package Id",
|
|
248
248
|
"type": "string"
|
|
249
|
+
},
|
|
250
|
+
"apex_test_access": {
|
|
251
|
+
"title": "Apex Test Access",
|
|
252
|
+
"type": "object",
|
|
253
|
+
"additionalProperties": {
|
|
254
|
+
"anyOf": [
|
|
255
|
+
{
|
|
256
|
+
"type": "string"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"type": "array",
|
|
260
|
+
"items": {
|
|
261
|
+
"type": "string"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"package_metadata_access": {
|
|
268
|
+
"title": "Package Metadata Access",
|
|
269
|
+
"type": "object",
|
|
270
|
+
"additionalProperties": {
|
|
271
|
+
"anyOf": [
|
|
272
|
+
{
|
|
273
|
+
"type": "string"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"type": "array",
|
|
277
|
+
"items": {
|
|
278
|
+
"type": "string"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
]
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"unpackaged_metadata_path": {
|
|
285
|
+
"title": "Unpackaged Metadata Path",
|
|
286
|
+
"anyOf": [
|
|
287
|
+
{
|
|
288
|
+
"type": "string"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"type": "array",
|
|
292
|
+
"items": {
|
|
293
|
+
"type": "string"
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"type": "object",
|
|
298
|
+
"additionalProperties": {
|
|
299
|
+
"anyOf": [
|
|
300
|
+
{
|
|
301
|
+
"type": "string"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"type": "array",
|
|
305
|
+
"items": {
|
|
306
|
+
"type": "string"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
]
|
|
249
313
|
}
|
|
250
314
|
},
|
|
251
315
|
"additionalProperties": false
|
cumulusci/tasks/apex/anon.py
CHANGED
|
@@ -4,7 +4,7 @@ from cumulusci.core.exceptions import (
|
|
|
4
4
|
SalesforceException,
|
|
5
5
|
TaskOptionsError,
|
|
6
6
|
)
|
|
7
|
-
from cumulusci.core.utils import
|
|
7
|
+
from cumulusci.core.utils import determine_managed_mode, process_bool_arg
|
|
8
8
|
from cumulusci.tasks.salesforce import BaseSalesforceApiTask
|
|
9
9
|
from cumulusci.utils import in_directory, inject_namespace
|
|
10
10
|
from cumulusci.utils.http.requests_utils import safe_json_from_response
|