salesforce-data-customcode 6.0.1.dev1__tar.gz → 6.0.2__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.
Files changed (98) hide show
  1. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/PKG-INFO +1 -1
  2. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/pyproject.toml +1 -1
  3. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/cli.py +6 -3
  4. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/writer/base.py +11 -1
  5. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/.devcontainer/devcontainer.json +1 -1
  6. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/.devcontainer/devcontainer.json +1 -1
  7. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/token_provider.py +26 -19
  8. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/LICENSE.txt +0 -0
  9. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/README.md +0 -0
  10. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/__init__.py +0 -0
  11. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/auth.py +0 -0
  12. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/client.py +0 -0
  13. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/cmd.py +0 -0
  14. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/common_config.py +0 -0
  15. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/config.py +0 -0
  16. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/config.yaml +0 -0
  17. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/constants.py +0 -0
  18. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/credentials.py +0 -0
  19. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/deploy.py +0 -0
  20. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_platform_client.py +0 -0
  21. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_platform_config.py +0 -0
  22. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_predictions/__init__.py +0 -0
  23. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_predictions/base.py +0 -0
  24. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_predictions/impl/default.py +0 -0
  25. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_predictions/types.py +0 -0
  26. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/einstein_predictions_config.py +0 -0
  27. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/file/__init__.py +0 -0
  28. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/file/base.py +0 -0
  29. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/file/path/__init__.py +0 -0
  30. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/file/path/default.py +0 -0
  31. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/function/__init__.py +0 -0
  32. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/function/base.py +0 -0
  33. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/function/feature_types/__init__.py +0 -0
  34. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/function/feature_types/chunking.py +0 -0
  35. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/function/runtime.py +0 -0
  36. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/function_utils.py +0 -0
  37. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/__init__.py +0 -0
  38. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/base.py +0 -0
  39. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/reader/__init__.py +0 -0
  40. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/reader/base.py +0 -0
  41. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/reader/query_api.py +0 -0
  42. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/reader/sf_cli.py +0 -0
  43. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/reader/utils.py +0 -0
  44. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/writer/__init__.py +0 -0
  45. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/writer/csv.py +0 -0
  46. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/io/writer/print.py +0 -0
  47. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/__init__.py +0 -0
  48. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/base.py +0 -0
  49. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/default.py +0 -0
  50. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/types/__init__.py +0 -0
  51. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/types/generate_text_request.py +0 -0
  52. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/types/generate_text_request_builder.py +0 -0
  53. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/types/generate_text_response.py +0 -0
  54. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway/types/generate_text_response_builder.py +0 -0
  55. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/llm_gateway_config.py +0 -0
  56. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/mixin.py +0 -0
  57. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/proxy/__init__.py +0 -0
  58. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/proxy/base.py +0 -0
  59. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/proxy/client/__init__.py +0 -0
  60. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/proxy/client/base.py +0 -0
  61. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/py.typed +0 -0
  62. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/run.py +0 -0
  63. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/scan.py +0 -0
  64. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/spark/__init__.py +0 -0
  65. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/spark/base.py +0 -0
  66. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/spark/default.py +0 -0
  67. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/template.py +0 -0
  68. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/__init__.py +0 -0
  69. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/Dockerfile.dependencies +0 -0
  70. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/README.md +0 -0
  71. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/build_native_dependencies.sh +0 -0
  72. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/chunking/payload/config.json +0 -0
  73. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/chunking/payload/entrypoint.py +0 -0
  74. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/chunking/requirements.txt +0 -0
  75. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_llm/config.json +0 -0
  76. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_llm/entrypoint.py +0 -0
  77. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_llm/files/chunking_prompt.txt +0 -0
  78. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_llm/tests/test.json +0 -0
  79. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_prediction/config.json +0 -0
  80. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_prediction/entrypoint.py +0 -0
  81. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/example/chunking_with_prediction/tests/test.json +0 -0
  82. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/payload/config.json +0 -0
  83. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/payload/entrypoint.py +0 -0
  84. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/requirements-dev.txt +0 -0
  85. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/function/requirements.txt +0 -0
  86. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/Dockerfile +0 -0
  87. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/Dockerfile.dependencies +0 -0
  88. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/README.md +0 -0
  89. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/account.ipynb +0 -0
  90. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/build_native_dependencies.sh +0 -0
  91. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/examples/employee_hierarchy/employee_data.csv +0 -0
  92. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/examples/employee_hierarchy/entrypoint.py +0 -0
  93. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/jupyterlab.sh +0 -0
  94. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/payload/config.json +0 -0
  95. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/payload/entrypoint.py +0 -0
  96. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/requirements-dev.txt +0 -0
  97. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/templates/script/requirements.txt +0 -0
  98. {salesforce_data_customcode-6.0.1.dev1 → salesforce_data_customcode-6.0.2}/src/datacustomcode/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: salesforce-data-customcode
3
- Version: 6.0.1.dev1
3
+ Version: 6.0.2
4
4
  Summary: Data Cloud Custom Code SDK
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE.txt
@@ -18,7 +18,7 @@ license = "Apache-2.0"
18
18
  name = "salesforce-data-customcode"
19
19
  readme = "README.md"
20
20
  requires-python = ">=3.10,<3.12"
21
- version = "6.0.1.dev1"
21
+ version = "6.0.2"
22
22
 
23
23
  [tool.black]
24
24
  exclude = '''
@@ -198,6 +198,7 @@ def zip(path: str, network: str):
198
198
  default=None,
199
199
  help="SF CLI org alias or username. Fetches credentials via `sf org display`.",
200
200
  )
201
+ @click.option("--use-in-feature", default=None, hidden=True, deprecated=True)
201
202
  def deploy(
202
203
  path: str,
203
204
  name: str,
@@ -207,6 +208,7 @@ def deploy(
207
208
  profile: str,
208
209
  network: str,
209
210
  sf_cli_org: Optional[str],
211
+ use_in_feature: Optional[str],
210
212
  ):
211
213
  from datacustomcode.constants import USE_IN_FEATURE_MAPPING_FOR_CONNECT_API
212
214
  from datacustomcode.deploy import (
@@ -249,13 +251,14 @@ def deploy(
249
251
  logger.info(f"Inferred use_in_feature: {use_in_feature}")
250
252
  else:
251
253
  click.secho(
252
- "Error: Could not infer function invoke options. "
253
- "Please provide --use-in-feature",
254
+ "Error: Function signature does not match a supported type. "
255
+ "Use SearchIndexChunkingV1Request and "
256
+ "SearchIndexChunkingV1Response in function signature.",
254
257
  fg="red",
255
258
  )
256
259
  raise click.Abort()
257
260
 
258
- # Map user-provided feature names to API names
261
+ # Map feature names to Connect API names
259
262
  mapped_feature = USE_IN_FEATURE_MAPPING_FOR_CONNECT_API.get(
260
263
  use_in_feature, use_in_feature
261
264
  )
@@ -27,11 +27,21 @@ 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" # Deprecated: raises error if used
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
+
35
45
  class BaseDataCloudWriter(BaseDataAccessLayer):
36
46
  """Base class for Data Cloud writers."""
37
47
 
@@ -5,6 +5,6 @@
5
5
  "dockerfile": "../Dockerfile"
6
6
  },
7
7
  "features": {
8
- "ghcr.io/devcontainers/features/git:1": {},
8
+ "ghcr.io/devcontainers/features/git:1": {}
9
9
  }
10
10
  }
@@ -5,6 +5,6 @@
5
5
  "dockerfile": "../Dockerfile"
6
6
  },
7
7
  "features": {
8
- "ghcr.io/devcontainers/features/git:1": {},
8
+ "ghcr.io/devcontainers/features/git:1": {}
9
9
  }
10
10
  }
@@ -140,37 +140,44 @@ class SFCLITokenProvider(TokenProvider):
140
140
  )
141
141
  return dict(data)
142
142
 
143
- # Get instanceUrl from sf org display
143
+ # Get org info from sf org display
144
144
  display_data = _run_sf_command(
145
145
  ["sf", "org", "display", "--target-org", self.sf_cli_org, "--json"],
146
146
  "sf org display",
147
147
  )
148
- instance_url = display_data.get("result", {}).get("instanceUrl")
148
+ result_data = display_data.get("result", {})
149
+ instance_url = result_data.get("instanceUrl")
149
150
  if not instance_url:
150
151
  raise RuntimeError(
151
152
  f"'sf org display' did not return an instance URL "
152
153
  f"for org '{self.sf_cli_org}'"
153
154
  )
154
155
 
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")
156
+ # Try show-access-token first (SF CLI >= 2.136.6); fall back to the
157
+ # token from sf org display (older CLIs don't redact it).
158
+ access_token = None
159
+ try:
160
+ token_data = _run_sf_command(
161
+ [
162
+ "sf",
163
+ "org",
164
+ "auth",
165
+ "show-access-token",
166
+ "--target-org",
167
+ self.sf_cli_org,
168
+ "--json",
169
+ ],
170
+ "sf org auth show-access-token",
171
+ )
172
+ access_token = token_data.get("result", {}).get("accessToken")
173
+ except RuntimeError:
174
+ # Command not available on older SF CLI versions
175
+ access_token = result_data.get("accessToken")
176
+
170
177
  if not access_token:
171
178
  raise RuntimeError(
172
- f"'sf org auth show-access-token' did not return an access token "
173
- f"for org '{self.sf_cli_org}'"
179
+ f"Could not obtain an access token for org '{self.sf_cli_org}'. "
180
+ f"Upgrade SF CLI to 2.136.6+ or ensure the org is authenticated."
174
181
  )
175
182
 
176
183
  return AccessTokenResponse(access_token=access_token, instance_url=instance_url)