salesforce-data-customcode 6.0.0__tar.gz → 6.0.1.dev1__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.
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/PKG-INFO +1 -1
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/pyproject.toml +1 -1
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/writer/base.py +1 -11
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/.devcontainer/devcontainer.json +1 -1
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/.devcontainer/devcontainer.json +1 -1
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/token_provider.py +63 -36
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/LICENSE.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/README.md +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/auth.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/cli.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/client.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/cmd.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/common_config.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/config.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/config.yaml +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/constants.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/credentials.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/deploy.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_platform_client.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_platform_config.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_predictions/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_predictions/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_predictions/impl/default.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_predictions/types.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/einstein_predictions_config.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/file/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/file/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/file/path/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/file/path/default.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/function/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/function/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/function/feature_types/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/function/feature_types/chunking.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/function/runtime.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/function_utils.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/reader/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/reader/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/reader/query_api.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/reader/sf_cli.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/reader/utils.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/writer/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/writer/csv.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/io/writer/print.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/default.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/types/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/types/generate_text_request.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/types/generate_text_request_builder.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/types/generate_text_response.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway/types/generate_text_response_builder.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/llm_gateway_config.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/mixin.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/proxy/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/proxy/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/proxy/client/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/proxy/client/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/py.typed +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/run.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/scan.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/spark/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/spark/base.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/spark/default.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/template.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/__init__.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/Dockerfile.dependencies +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/README.md +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/build_native_dependencies.sh +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/chunking/payload/config.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/chunking/payload/entrypoint.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/chunking/requirements.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_llm/config.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_llm/entrypoint.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_llm/files/chunking_prompt.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_llm/tests/test.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_prediction/config.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_prediction/entrypoint.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/example/chunking_with_prediction/tests/test.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/payload/config.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/payload/entrypoint.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/requirements-dev.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/function/requirements.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/Dockerfile +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/Dockerfile.dependencies +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/README.md +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/account.ipynb +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/build_native_dependencies.sh +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/examples/employee_hierarchy/employee_data.csv +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/examples/employee_hierarchy/entrypoint.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/jupyterlab.sh +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/payload/config.json +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/payload/entrypoint.py +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/requirements-dev.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/templates/script/requirements.txt +0 -0
- {salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/version.py +0 -0
|
@@ -27,21 +27,11 @@ if TYPE_CHECKING:
|
|
|
27
27
|
class WriteMode(str, Enum):
|
|
28
28
|
APPEND = "append"
|
|
29
29
|
OVERWRITE = "overwrite"
|
|
30
|
-
OVERWRITE_PARTITIONS = "overwrite_partitions"
|
|
30
|
+
OVERWRITE_PARTITIONS = "overwrite_partitions"
|
|
31
31
|
MERGE = "merge"
|
|
32
32
|
MERGE_UPSERT_DELETE = "merge_upsert_delete"
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
class MergeRecordType(str, Enum):
|
|
36
|
-
"""Values for the _merge_record_type column used by MERGE_UPSERT_DELETE."""
|
|
37
|
-
|
|
38
|
-
UPSERT = "UPSERT"
|
|
39
|
-
DELETE = "DELETE"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
MERGE_RECORD_TYPE_COLUMN = "_merge_record_type"
|
|
43
|
-
|
|
44
|
-
|
|
45
35
|
class BaseDataCloudWriter(BaseDataAccessLayer):
|
|
46
36
|
"""Base class for Data Cloud writers."""
|
|
47
37
|
|
|
@@ -101,48 +101,75 @@ class SFCLITokenProvider(TokenProvider):
|
|
|
101
101
|
|
|
102
102
|
from datacustomcode.deploy import AccessTokenResponse
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
104
|
+
def _run_sf_command(args: list[str], description: str) -> dict:
|
|
105
|
+
try:
|
|
106
|
+
result = subprocess.run(
|
|
107
|
+
args,
|
|
108
|
+
capture_output=True,
|
|
109
|
+
text=True,
|
|
110
|
+
check=True,
|
|
111
|
+
timeout=30,
|
|
112
|
+
)
|
|
113
|
+
except FileNotFoundError as exc:
|
|
114
|
+
raise RuntimeError(
|
|
115
|
+
"The 'sf' command was not found. "
|
|
116
|
+
"Install Salesforce CLI: "
|
|
117
|
+
"https://developer.salesforce.com/tools/salesforcecli"
|
|
118
|
+
) from exc
|
|
119
|
+
except subprocess.TimeoutExpired as exc:
|
|
120
|
+
raise RuntimeError(
|
|
121
|
+
f"'{description}' timed out for org '{self.sf_cli_org}'"
|
|
122
|
+
) from exc
|
|
123
|
+
except subprocess.CalledProcessError as exc:
|
|
124
|
+
raise RuntimeError(
|
|
125
|
+
f"'{description}' failed for org '{self.sf_cli_org}': "
|
|
126
|
+
f"{exc.stderr}"
|
|
127
|
+
) from exc
|
|
125
128
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
try:
|
|
130
|
+
data = json.loads(result.stdout)
|
|
131
|
+
except json.JSONDecodeError as exc:
|
|
132
|
+
raise RuntimeError(
|
|
133
|
+
f"Failed to parse JSON from '{description}': {result.stdout}"
|
|
134
|
+
) from exc
|
|
132
135
|
|
|
133
|
-
|
|
136
|
+
if data.get("status") != 0:
|
|
137
|
+
raise RuntimeError(
|
|
138
|
+
f"SF CLI error for org '{self.sf_cli_org}': "
|
|
139
|
+
f"{data.get('message', 'unknown error')}"
|
|
140
|
+
)
|
|
141
|
+
return dict(data)
|
|
142
|
+
|
|
143
|
+
# Get instanceUrl from sf org display
|
|
144
|
+
display_data = _run_sf_command(
|
|
145
|
+
["sf", "org", "display", "--target-org", self.sf_cli_org, "--json"],
|
|
146
|
+
"sf org display",
|
|
147
|
+
)
|
|
148
|
+
instance_url = display_data.get("result", {}).get("instanceUrl")
|
|
149
|
+
if not instance_url:
|
|
134
150
|
raise RuntimeError(
|
|
135
|
-
f"
|
|
136
|
-
f"
|
|
151
|
+
f"'sf org display' did not return an instance URL "
|
|
152
|
+
f"for org '{self.sf_cli_org}'"
|
|
137
153
|
)
|
|
138
154
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
155
|
+
# Get access token via show-access-token (newer SF CLI versions
|
|
156
|
+
# redact the token in sf org display)
|
|
157
|
+
token_data = _run_sf_command(
|
|
158
|
+
[
|
|
159
|
+
"sf",
|
|
160
|
+
"org",
|
|
161
|
+
"auth",
|
|
162
|
+
"show-access-token",
|
|
163
|
+
"--target-org",
|
|
164
|
+
self.sf_cli_org,
|
|
165
|
+
"--json",
|
|
166
|
+
],
|
|
167
|
+
"sf org auth show-access-token",
|
|
168
|
+
)
|
|
169
|
+
access_token = token_data.get("result", {}).get("accessToken")
|
|
170
|
+
if not access_token:
|
|
144
171
|
raise RuntimeError(
|
|
145
|
-
f"'sf org
|
|
172
|
+
f"'sf org auth show-access-token' did not return an access token "
|
|
146
173
|
f"for org '{self.sf_cli_org}'"
|
|
147
174
|
)
|
|
148
175
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
{salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/cmd.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{salesforce_data_customcode-6.0.0 → salesforce_data_customcode-6.0.1.dev1}/src/datacustomcode/run.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|