dc-python-sdk 1.5.31__tar.gz → 1.5.33__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 (35) hide show
  1. {dc_python_sdk-1.5.31/src/dc_python_sdk.egg-info → dc_python_sdk-1.5.33}/PKG-INFO +1 -1
  2. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/pyproject.toml +1 -1
  3. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/setup.cfg +1 -1
  4. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33/src/dc_python_sdk.egg-info}/PKG-INFO +1 -1
  5. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/handler.py +15 -1
  6. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/pipeline.py +1 -1
  7. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/LICENSE +0 -0
  8. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/README.md +0 -0
  9. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_python_sdk.egg-info/SOURCES.txt +0 -0
  10. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_python_sdk.egg-info/dependency_links.txt +0 -0
  11. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_python_sdk.egg-info/entry_points.txt +0 -0
  12. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_python_sdk.egg-info/requires.txt +0 -0
  13. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_python_sdk.egg-info/top_level.txt +0 -0
  14. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/__init__.py +0 -0
  15. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/app.py +0 -0
  16. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/cli.py +0 -0
  17. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/errors.py +0 -0
  18. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/__init__.py +0 -0
  19. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/ai.py +0 -0
  20. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/ai_http.py +0 -0
  21. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/mapping.py +0 -0
  22. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/models/__init__.py +0 -0
  23. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/models/enums.py +0 -0
  24. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/models/errors.py +0 -0
  25. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/models/log_templates.py +0 -0
  26. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/models/pipeline_details.py +0 -0
  27. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/server.py +0 -0
  28. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/__init__.py +0 -0
  29. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/api.py +0 -0
  30. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/aws.py +0 -0
  31. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/environment.py +0 -0
  32. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/loader.py +0 -0
  33. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/logger.py +0 -0
  34. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/src/services/session.py +0 -0
  35. {dc_python_sdk-1.5.31 → dc_python_sdk-1.5.33}/src/dc_sdk/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dc-python-sdk
3
- Version: 1.5.31
3
+ Version: 1.5.33
4
4
  Summary: Data Connector Python SDK
5
5
  Home-page: https://github.com/data-connector/dc-python-sdk
6
6
  Author: DataConnector
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dc-python-sdk"
7
- version = "1.5.31"
7
+ version = "1.5.33"
8
8
  description = "Data Connector Python SDK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.6"
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = dc-python-sdk
3
- version = 1.5.31
3
+ version = 1.5.33
4
4
  author = DataConnector
5
5
  author_email = josh@dataconnector.com
6
6
  description = A small example package
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dc-python-sdk
3
- Version: 1.5.31
3
+ Version: 1.5.33
4
4
  Summary: Data Connector Python SDK
5
5
  Home-page: https://github.com/data-connector/dc-python-sdk
6
6
  Author: DataConnector
@@ -16,6 +16,14 @@ def apply_data_filters(results, data_filters):
16
16
  if not data_filters:
17
17
  return results
18
18
 
19
+ # Connectors may return either:
20
+ # 1) a bare list of rows, or
21
+ # 2) an envelope: {"data": [...], "next_page": ...}
22
+ is_envelope = isinstance(results, dict) and isinstance(results.get("data"), list)
23
+ rows = results.get("data") if is_envelope else results
24
+ if not isinstance(rows, list):
25
+ return results
26
+
19
27
  # 🔹 UI → backend operator mapping
20
28
  OPERATOR_MAP = {
21
29
  # text
@@ -75,6 +83,9 @@ def apply_data_filters(results, data_filters):
75
83
  val1 = f.get("value_1_txt")
76
84
  val2 = f.get("value_2_txt")
77
85
 
86
+ # Some connectors can emit non-dict rows; keep filtering resilient.
87
+ if not isinstance(row, dict):
88
+ return False
78
89
  row_val = row.get(col)
79
90
 
80
91
  # ---- EMPTY HANDLING ----
@@ -131,7 +142,10 @@ def apply_data_filters(results, data_filters):
131
142
  return True
132
143
 
133
144
  # 🔹 Apply filters (AND logic)
134
- return [row for row in results if all(match(row, f) for f in data_filters)]
145
+ filtered_rows = [row for row in rows if all(match(row, f) for f in data_filters)]
146
+ if is_envelope:
147
+ return {**results, "data": filtered_rows}
148
+ return filtered_rows
135
149
 
136
150
 
137
151
  def handler(event, context):
@@ -282,7 +282,7 @@ class PipelineConductor:
282
282
  return self.aws.decrypt_customer_data_object(encyption_txt, self.pipeline_details.customer_metadata_uuid)
283
283
 
284
284
  def _get_pipeline_details(self):
285
- return self.api.get_pipeline_details(str(self.pipeline_id), self.task, str(self.pipeline_run_histoy_id), pipeline_mapping_id=self.pipeline_mapping_id)
285
+ return self.api.get_pipeline_details(str(self.pipeline_id), self.task, str(self.pipeline_run_history_id), pipeline_mapping_id=self.pipeline_mapping_id)
286
286
 
287
287
  def _get_batch_row_count(self):
288
288
  results = self.connector.get_data(
File without changes
File without changes