salesforce-data-customcode 1.0.0__tar.gz → 2.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.
Files changed (63) hide show
  1. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/PKG-INFO +2 -3
  2. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/README.md +1 -2
  3. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/pyproject.toml +1 -1
  4. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/client.py +4 -6
  5. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/config.yaml +1 -0
  6. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/reader/base.py +0 -2
  7. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/reader/query_api.py +26 -10
  8. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/reader/sf_cli.py +15 -9
  9. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/writer/print.py +1 -1
  10. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/proxy/client/LocalProxyClientProvider.py +5 -0
  11. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/proxy/client/base.py +5 -0
  12. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/LICENSE.txt +0 -0
  13. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/__init__.py +0 -0
  14. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/auth.py +0 -0
  15. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/cli.py +0 -0
  16. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/cmd.py +0 -0
  17. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/config.py +0 -0
  18. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/credentials.py +0 -0
  19. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/deploy.py +0 -0
  20. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/file/__init__.py +0 -0
  21. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/file/base.py +0 -0
  22. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/file/path/__init__.py +0 -0
  23. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/file/path/default.py +0 -0
  24. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/__init__.py +0 -0
  25. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/base.py +0 -0
  26. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/reader/__init__.py +0 -0
  27. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/reader/utils.py +0 -0
  28. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/writer/__init__.py +0 -0
  29. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/writer/base.py +0 -0
  30. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/io/writer/csv.py +0 -0
  31. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/mixin.py +0 -0
  32. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/proxy/__init__.py +0 -0
  33. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/proxy/base.py +0 -0
  34. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/proxy/client/__init__.py +0 -0
  35. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/py.typed +0 -0
  36. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/run.py +0 -0
  37. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/scan.py +0 -0
  38. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/spark/__init__.py +0 -0
  39. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/spark/base.py +0 -0
  40. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/spark/default.py +0 -0
  41. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/template.py +0 -0
  42. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/.devcontainer/devcontainer.json +0 -0
  43. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/Dockerfile.dependencies +0 -0
  44. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/README.md +0 -0
  45. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/build_native_dependencies.sh +0 -0
  46. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/payload/config.json +0 -0
  47. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/payload/entrypoint.py +0 -0
  48. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/requirements-dev.txt +0 -0
  49. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/function/requirements.txt +0 -0
  50. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/.devcontainer/devcontainer.json +0 -0
  51. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/Dockerfile +0 -0
  52. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/Dockerfile.dependencies +0 -0
  53. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/README.md +0 -0
  54. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/account.ipynb +0 -0
  55. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/build_native_dependencies.sh +0 -0
  56. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/examples/employee_hierarchy/employee_data.csv +0 -0
  57. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/examples/employee_hierarchy/entrypoint.py +0 -0
  58. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/jupyterlab.sh +0 -0
  59. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/payload/config.json +0 -0
  60. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/payload/entrypoint.py +0 -0
  61. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/requirements-dev.txt +0 -0
  62. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/templates/script/requirements.txt +0 -0
  63. {salesforce_data_customcode-1.0.0 → salesforce_data_customcode-2.0.0}/src/datacustomcode/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: salesforce-data-customcode
3
- Version: 1.0.0
3
+ Version: 2.0.0
4
4
  Summary: Data Cloud Custom Code SDK
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE.txt
@@ -179,7 +179,7 @@ You should only need the following methods:
179
179
  * `write_to_dmo(name, spark_dataframe, write_mode)` – Write to a Data Lake Object by name with a Spark dataframe
180
180
 
181
181
  For example:
182
- ```
182
+ ```python
183
183
  from datacustomcode import Client
184
184
 
185
185
  client = Client()
@@ -190,7 +190,6 @@ sdf = client.read_dlo('my_DLO')
190
190
  client.write_to_dlo('output_DLO')
191
191
  ```
192
192
 
193
-
194
193
  > [!WARNING]
195
194
  > Currently we only support reading from DMOs and writing to DMOs or reading from DLOs and writing to DLOs, but they cannot mix.
196
195
 
@@ -155,7 +155,7 @@ You should only need the following methods:
155
155
  * `write_to_dmo(name, spark_dataframe, write_mode)` – Write to a Data Lake Object by name with a Spark dataframe
156
156
 
157
157
  For example:
158
- ```
158
+ ```python
159
159
  from datacustomcode import Client
160
160
 
161
161
  client = Client()
@@ -166,7 +166,6 @@ sdf = client.read_dlo('my_DLO')
166
166
  client.write_to_dlo('output_DLO')
167
167
  ```
168
168
 
169
-
170
169
  > [!WARNING]
171
170
  > Currently we only support reading from DMOs and writing to DMOs or reading from DLOs and writing to DLOs, but they cannot mix.
172
171
 
@@ -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 = "1.0.0"
21
+ version = "2.0.0"
22
22
 
23
23
  [tool.black]
24
24
  exclude = '''
@@ -185,31 +185,29 @@ class Client:
185
185
  )
186
186
  return cls._instance
187
187
 
188
- def read_dlo(self, name: str, row_limit: int = 1000) -> PySparkDataFrame:
188
+ def read_dlo(self, name: str) -> PySparkDataFrame:
189
189
  """Read a DLO from Data Cloud.
190
190
 
191
191
  Args:
192
192
  name: The name of the DLO to read.
193
- row_limit: Maximum number of rows to fetch (default: 1000).
194
193
 
195
194
  Returns:
196
195
  A PySpark DataFrame containing the DLO data.
197
196
  """
198
197
  self._record_dlo_access(name)
199
- return self._reader.read_dlo(name, row_limit=row_limit)
198
+ return self._reader.read_dlo(name)
200
199
 
201
- def read_dmo(self, name: str, row_limit: int = 1000) -> PySparkDataFrame:
200
+ def read_dmo(self, name: str) -> PySparkDataFrame:
202
201
  """Read a DMO from Data Cloud.
203
202
 
204
203
  Args:
205
204
  name: The name of the DMO to read.
206
- row_limit: Maximum number of rows to fetch (default: 1000).
207
205
 
208
206
  Returns:
209
207
  A PySpark DataFrame containing the DMO data.
210
208
  """
211
209
  self._record_dmo_access(name)
212
- return self._reader.read_dmo(name, row_limit=row_limit)
210
+ return self._reader.read_dmo(name)
213
211
 
214
212
  def write_to_dlo(
215
213
  self, name: str, dataframe: PySparkDataFrame, write_mode: WriteMode, **kwargs
@@ -2,6 +2,7 @@ reader_config:
2
2
  type_config_name: QueryAPIDataCloudReader
3
3
  options:
4
4
  credentials_profile: default
5
+ default_row_limit: 1000
5
6
 
6
7
  writer_config:
7
8
  type_config_name: PrintDataCloudWriter
@@ -33,7 +33,6 @@ class BaseDataCloudReader(BaseDataAccessLayer):
33
33
  self,
34
34
  name: str,
35
35
  schema: Union[AtomicType, StructType, str, None] = None,
36
- row_limit: int = 1000,
37
36
  ) -> PySparkDataFrame: ...
38
37
 
39
38
  @abstractmethod
@@ -41,5 +40,4 @@ class BaseDataCloudReader(BaseDataAccessLayer):
41
40
  self,
42
41
  name: str,
43
42
  schema: Union[AtomicType, StructType, str, None] = None,
44
- row_limit: int = 1000,
45
43
  ) -> PySparkDataFrame: ...
@@ -37,6 +37,7 @@ logger = logging.getLogger(__name__)
37
37
 
38
38
 
39
39
  SQL_QUERY_TEMPLATE: Final = "SELECT * FROM {} LIMIT {}"
40
+ SQL_QUERY_TEMPLATE_NO_LIMIT: Final = "SELECT * FROM {}"
40
41
 
41
42
 
42
43
  def create_cdp_connection(
@@ -122,6 +123,7 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
122
123
  credentials_profile: str = "default",
123
124
  dataspace: Optional[str] = None,
124
125
  sf_cli_org: Optional[str] = None,
126
+ default_row_limit: Optional[int] = None,
125
127
  ) -> None:
126
128
  """Initialize QueryAPIDataCloudReader.
127
129
 
@@ -137,8 +139,12 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
137
139
  reader delegates to :class:`SFCLIDataCloudReader` which calls
138
140
  the Data Cloud REST API directly using the token obtained from
139
141
  ``sf org display``, bypassing the CDP token-exchange flow.
142
+ default_row_limit: Maximum number of rows to fetch automatically.
143
+ When ``None``, no limit is applied (all rows are returned).
144
+ Set via ``default_row_limit`` in ``config.yaml`` reader options.
140
145
  """
141
146
  self.spark = spark
147
+ self._default_row_limit = default_row_limit
142
148
  if sf_cli_org:
143
149
  logger.debug(
144
150
  f"Initializing QueryAPIDataCloudReader with SF CLI org '{sf_cli_org}'"
@@ -147,6 +153,7 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
147
153
  spark=spark,
148
154
  sf_cli_org=sf_cli_org,
149
155
  dataspace=dataspace,
156
+ default_row_limit=default_row_limit,
150
157
  )
151
158
  self._conn = None
152
159
  else:
@@ -158,19 +165,30 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
158
165
  )
159
166
  self._conn = create_cdp_connection(credentials, dataspace)
160
167
 
168
+ def _build_query(self, name: str) -> str:
169
+ """Build a SQL query, applying the configured default row limit.
170
+
171
+ Args:
172
+ name: Object name to query.
173
+
174
+ Returns:
175
+ SQL query string.
176
+ """
177
+ if self._default_row_limit is not None:
178
+ return SQL_QUERY_TEMPLATE.format(name, self._default_row_limit)
179
+ return SQL_QUERY_TEMPLATE_NO_LIMIT.format(name)
180
+
161
181
  def read_dlo(
162
182
  self,
163
183
  name: str,
164
184
  schema: Union[AtomicType, StructType, str, None] = None,
165
- row_limit: int = 1000,
166
185
  ) -> PySparkDataFrame:
167
186
  """
168
- Read a Data Lake Object (DLO) from the Data Cloud, limited to a number of rows.
187
+ Read a Data Lake Object (DLO) from the Data Cloud.
169
188
 
170
189
  Args:
171
190
  name (str): The name of the DLO.
172
191
  schema (Optional[Union[AtomicType, StructType, str]]): Schema of the DLO.
173
- row_limit (int): Maximum number of rows to fetch.
174
192
 
175
193
  Returns:
176
194
  PySparkDataFrame: The PySpark DataFrame.
@@ -179,9 +197,9 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
179
197
  self, "_sf_cli_reader", None
180
198
  )
181
199
  if sf_cli_reader is not None:
182
- return sf_cli_reader.read_dlo(name, schema, row_limit)
200
+ return sf_cli_reader.read_dlo(name, schema)
183
201
 
184
- query = SQL_QUERY_TEMPLATE.format(name, row_limit)
202
+ query = self._build_query(name)
185
203
 
186
204
  assert self._conn is not None
187
205
  pandas_df = self._conn.get_pandas_dataframe(query)
@@ -197,15 +215,13 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
197
215
  self,
198
216
  name: str,
199
217
  schema: Union[AtomicType, StructType, str, None] = None,
200
- row_limit: int = 1000,
201
218
  ) -> PySparkDataFrame:
202
219
  """
203
- Read a Data Model Object (DMO) from the Data Cloud, limited to a number of rows.
220
+ Read a Data Model Object (DMO) from the Data Cloud.
204
221
 
205
222
  Args:
206
223
  name (str): The name of the DMO.
207
224
  schema (Optional[Union[AtomicType, StructType, str]]): Schema of the DMO.
208
- row_limit (int): Maximum number of rows to fetch.
209
225
 
210
226
  Returns:
211
227
  PySparkDataFrame: The PySpark DataFrame.
@@ -214,9 +230,9 @@ class QueryAPIDataCloudReader(BaseDataCloudReader):
214
230
  self, "_sf_cli_reader", None
215
231
  )
216
232
  if sf_cli_reader is not None:
217
- return sf_cli_reader.read_dmo(name, schema, row_limit)
233
+ return sf_cli_reader.read_dmo(name, schema)
218
234
 
219
- query = SQL_QUERY_TEMPLATE.format(name, row_limit)
235
+ query = self._build_query(name)
220
236
 
221
237
  assert self._conn is not None
222
238
  pandas_df = self._conn.get_pandas_dataframe(query)
@@ -55,6 +55,7 @@ class SFCLIDataCloudReader(BaseDataCloudReader):
55
55
  spark: SparkSession,
56
56
  sf_cli_org: str,
57
57
  dataspace: Optional[str] = None,
58
+ default_row_limit: Optional[int] = None,
58
59
  ) -> None:
59
60
  """Initialize SFCLIDataCloudReader.
60
61
 
@@ -64,9 +65,13 @@ class SFCLIDataCloudReader(BaseDataCloudReader):
64
65
  (e.g. the alias given to ``sf org login web --alias dev1``).
65
66
  dataspace: Optional dataspace identifier. If ``None`` or
66
67
  ``"default"`` the query runs against the default dataspace.
68
+ default_row_limit: Maximum number of rows to fetch automatically.
69
+ When ``None``, no limit is applied (all rows are returned).
70
+ Set via ``default_row_limit`` in ``config.yaml`` reader options.
67
71
  """
68
72
  self.spark = spark
69
73
  self.sf_cli_org = sf_cli_org
74
+ self._default_row_limit = default_row_limit
70
75
  self.dataspace = (
71
76
  dataspace if dataspace and dataspace != "default" else "default"
72
77
  )
@@ -132,12 +137,14 @@ class SFCLIDataCloudReader(BaseDataCloudReader):
132
137
  logger.debug(f"Fetched token from SF CLI for org '{self.sf_cli_org}'")
133
138
  return access_token, instance_url
134
139
 
135
- def _execute_query(self, sql: str, row_limit: int) -> pd.DataFrame:
140
+ def _execute_query(self, sql: str) -> pd.DataFrame:
136
141
  """Execute *sql* against the Data Cloud REST endpoint.
137
142
 
143
+ The configured ``default_row_limit`` is automatically appended as a
144
+ ``LIMIT`` clause when set (typically for local development).
145
+
138
146
  Args:
139
147
  sql: Base SQL query (no ``LIMIT`` clause).
140
- row_limit: Maximum rows to return.
141
148
 
142
149
  Returns:
143
150
  Pandas DataFrame with query results.
@@ -150,7 +157,10 @@ class SFCLIDataCloudReader(BaseDataCloudReader):
150
157
  url = f"{instance_url}/services/data/{API_VERSION}/ssot/query-sql"
151
158
  headers = {"Authorization": f"Bearer {access_token}"}
152
159
  params = {"dataspace": self.dataspace}
153
- body = {"sql": f"{sql} LIMIT {row_limit}"}
160
+ if self._default_row_limit is not None:
161
+ body = {"sql": f"{sql} LIMIT {self._default_row_limit}"}
162
+ else:
163
+ body = {"sql": sql}
154
164
 
155
165
  logger.debug(f"Executing Data Cloud query: {body['sql']}")
156
166
 
@@ -190,19 +200,17 @@ class SFCLIDataCloudReader(BaseDataCloudReader):
190
200
  self,
191
201
  name: str,
192
202
  schema: Union[AtomicType, StructType, str, None] = None,
193
- row_limit: int = 1000,
194
203
  ) -> PySparkDataFrame:
195
204
  """Read a Data Lake Object (DLO) from Data Cloud.
196
205
 
197
206
  Args:
198
207
  name: DLO name.
199
208
  schema: Optional explicit schema.
200
- row_limit: Maximum rows to fetch.
201
209
 
202
210
  Returns:
203
211
  PySpark DataFrame.
204
212
  """
205
- pandas_df = self._execute_query(f"SELECT * FROM {name}", row_limit)
213
+ pandas_df = self._execute_query(f"SELECT * FROM {name}")
206
214
  if not schema:
207
215
  schema = _pandas_to_spark_schema(pandas_df)
208
216
  return self.spark.createDataFrame(pandas_df, schema)
@@ -211,19 +219,17 @@ class SFCLIDataCloudReader(BaseDataCloudReader):
211
219
  self,
212
220
  name: str,
213
221
  schema: Union[AtomicType, StructType, str, None] = None,
214
- row_limit: int = 1000,
215
222
  ) -> PySparkDataFrame:
216
223
  """Read a Data Model Object (DMO) from Data Cloud.
217
224
 
218
225
  Args:
219
226
  name: DMO name.
220
227
  schema: Optional explicit schema.
221
- row_limit: Maximum rows to fetch.
222
228
 
223
229
  Returns:
224
230
  PySpark DataFrame.
225
231
  """
226
- pandas_df = self._execute_query(f"SELECT * FROM {name}", row_limit)
232
+ pandas_df = self._execute_query(f"SELECT * FROM {name}")
227
233
  if not schema:
228
234
  schema = _pandas_to_spark_schema(pandas_df)
229
235
  return self.spark.createDataFrame(pandas_df, schema)
@@ -90,7 +90,7 @@ class PrintDataCloudWriter(BaseDataCloudWriter):
90
90
  schema.
91
91
  """
92
92
  # Get DLO schema (no data, just schema)
93
- dlo_df = self.reader.read_dlo(dlo_name, row_limit=0)
93
+ dlo_df = self.reader.read_dlo(dlo_name).limit(0)
94
94
  dlo_columns = set(dlo_df.columns)
95
95
  df_columns = set(dataframe.columns)
96
96
 
@@ -27,3 +27,8 @@ class LocalProxyClientProvider(BaseProxyClient):
27
27
 
28
28
  def call_llm_gateway(self, llmModelId: str, prompt: str, maxTokens: int) -> str:
29
29
  return f"Hello, thanks for using {llmModelId}. So many tokens: {maxTokens}"
30
+
31
+ def llm_gateway_generate_text(
32
+ self, template, values, llmModelId: str, maxTokens: int
33
+ ):
34
+ return f"Using Generate Text with {llmModelId} and maxTokens: {maxTokens}"
@@ -25,3 +25,8 @@ class BaseProxyClient(BaseProxyAccessLayer):
25
25
 
26
26
  @abstractmethod
27
27
  def call_llm_gateway(self, llmModelId: str, prompt: str, maxTokens: int) -> str: ...
28
+
29
+ @abstractmethod
30
+ def llm_gateway_generate_text(
31
+ self, template, values, llmModelId: str, maxTokens: int
32
+ ): ...