feldera 0.110.0__tar.gz → 0.112.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.

Potentially problematic release.


This version of feldera might be problematic. Click here for more details.

Files changed (32) hide show
  1. {feldera-0.110.0 → feldera-0.112.0}/PKG-INFO +1 -1
  2. {feldera-0.110.0 → feldera-0.112.0}/feldera/pipeline.py +6 -6
  3. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/feldera_client.py +5 -1
  4. {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/PKG-INFO +1 -1
  5. {feldera-0.110.0 → feldera-0.112.0}/pyproject.toml +1 -1
  6. {feldera-0.110.0 → feldera-0.112.0}/tests/test_shared_pipeline1.py +26 -3
  7. {feldera-0.110.0 → feldera-0.112.0}/README.md +0 -0
  8. {feldera-0.110.0 → feldera-0.112.0}/feldera/__init__.py +0 -0
  9. {feldera-0.110.0 → feldera-0.112.0}/feldera/_callback_runner.py +0 -0
  10. {feldera-0.110.0 → feldera-0.112.0}/feldera/_helpers.py +0 -0
  11. {feldera-0.110.0 → feldera-0.112.0}/feldera/enums.py +0 -0
  12. {feldera-0.110.0 → feldera-0.112.0}/feldera/output_handler.py +0 -0
  13. {feldera-0.110.0 → feldera-0.112.0}/feldera/pipeline_builder.py +0 -0
  14. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/__init__.py +0 -0
  15. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/_helpers.py +0 -0
  16. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/_httprequests.py +0 -0
  17. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/config.py +0 -0
  18. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/errors.py +0 -0
  19. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/feldera_config.py +0 -0
  20. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/pipeline.py +0 -0
  21. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/sql_table.py +0 -0
  22. {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/sql_view.py +0 -0
  23. {feldera-0.110.0 → feldera-0.112.0}/feldera/runtime_config.py +0 -0
  24. {feldera-0.110.0 → feldera-0.112.0}/feldera/stats.py +0 -0
  25. {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/SOURCES.txt +0 -0
  26. {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/dependency_links.txt +0 -0
  27. {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/requires.txt +0 -0
  28. {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/top_level.txt +0 -0
  29. {feldera-0.110.0 → feldera-0.112.0}/setup.cfg +0 -0
  30. {feldera-0.110.0 → feldera-0.112.0}/tests/test_pipeline_builder.py +0 -0
  31. {feldera-0.110.0 → feldera-0.112.0}/tests/test_shared_pipeline0.py +0 -0
  32. {feldera-0.110.0 → feldera-0.112.0}/tests/test_udf.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: feldera
3
- Version: 0.110.0
3
+ Version: 0.112.0
4
4
  Summary: The feldera python client
5
5
  Author-email: Feldera Team <dev@feldera.com>
6
6
  License: MIT
@@ -838,14 +838,14 @@ pipeline '{self.name}' to sync checkpoint '{uuid}'"""
838
838
 
839
839
  def set_runtime_config(self, runtime_config: RuntimeConfig):
840
840
  """Updates the runtime config of the pipeline. The pipeline
841
- must be stopped and, in addition, changing some pipeline
842
- configuration requires storage to be cleared.
841
+ must be stopped. Changing some pipeline configuration, such
842
+ as the number of workers, requires storage to be cleared.
843
843
 
844
- For example, to set 'min_batch_size_records' on a pipeline:
844
+ For example, to set 'min_batch_size_records' on a pipeline::
845
845
 
846
- runtime_config = pipeline.runtime_config()
847
- runtime_config.min_batch_size_records = 500
848
- pipeline.set_runtime_config(runtime_config)
846
+ runtime_config = pipeline.runtime_config()
847
+ runtime_config.min_batch_size_records = 500
848
+ pipeline.set_runtime_config(runtime_config)
849
849
 
850
850
  """
851
851
 
@@ -272,7 +272,11 @@ class FelderaClient:
272
272
 
273
273
  if status == "Running":
274
274
  break
275
- elif status == "Failed":
275
+ elif (
276
+ status == "Stopped"
277
+ and len(resp.deployment_error or {}) > 0
278
+ and resp.deployment_desired_status == "Stopped"
279
+ ):
276
280
  raise RuntimeError(
277
281
  f"""Unable to START the pipeline.
278
282
  Reason: The pipeline is in a STOPPED state due to the following error:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: feldera
3
- Version: 0.110.0
3
+ Version: 0.112.0
4
4
  Summary: The feldera python client
5
5
  Author-email: Feldera Team <dev@feldera.com>
6
6
  License: MIT
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
  name = "feldera"
7
7
  readme = "README.md"
8
8
  description = "The feldera python client"
9
- version = "0.110.0"
9
+ version = "0.112.0"
10
10
  license = { text = "MIT" }
11
11
  requires-python = ">=3.10"
12
12
  authors = [
@@ -1,4 +1,5 @@
1
1
  import random
2
+ from uuid import uuid4
2
3
  import time
3
4
  from typing import Optional
4
5
  from feldera.runtime_config import RuntimeConfig, Storage
@@ -36,7 +37,13 @@ def storage_cfg(
36
37
 
37
38
  class TestCheckpointSync(SharedTestPipeline):
38
39
  @enterprise_only
39
- def test_checkpoint_sync(self, from_uuid: bool = False, auth_err: bool = False):
40
+ def test_checkpoint_sync(
41
+ self,
42
+ from_uuid: bool = False,
43
+ random_uuid: bool = False,
44
+ clear_storage: bool = True,
45
+ auth_err: bool = False,
46
+ ):
40
47
  """
41
48
  CREATE TABLE t0 (c0 INT, c1 VARCHAR);
42
49
  CREATE MATERIALIZED VIEW v0 AS SELECT c0 FROM t0;
@@ -56,7 +63,12 @@ class TestCheckpointSync(SharedTestPipeline):
56
63
  uuid = self.pipeline.sync_checkpoint(wait=True)
57
64
 
58
65
  self.pipeline.stop(force=True)
59
- self.pipeline.clear_storage()
66
+
67
+ if clear_storage:
68
+ self.pipeline.clear_storage()
69
+
70
+ if random_uuid:
71
+ uuid = uuid4()
60
72
 
61
73
  # Restart pipeline from checkpoint
62
74
  storage_config = storage_cfg(
@@ -69,13 +81,24 @@ class TestCheckpointSync(SharedTestPipeline):
69
81
  self.assertCountEqual(got_before, got_after)
70
82
 
71
83
  self.pipeline.stop(force=True)
72
- self.pipeline.clear_storage()
84
+
85
+ if clear_storage:
86
+ self.pipeline.clear_storage()
73
87
 
74
88
  @enterprise_only
75
89
  def test_checkpoint_sync_from_uuid(self):
76
90
  self.test_checkpoint_sync(from_uuid=True)
77
91
 
92
+ @enterprise_only
93
+ def test_checkpoint_sync_without_clearing_storage(self):
94
+ self.test_checkpoint_sync(clear_storage=False)
95
+
78
96
  @enterprise_only
79
97
  def test_checkpoint_sync_err(self):
80
98
  with self.assertRaisesRegex(RuntimeError, "SignatureDoesNotMatch"):
81
99
  self.test_checkpoint_sync(auth_err=True)
100
+
101
+ @enterprise_only
102
+ def test_checkpoint_sync_err_nonexistent_checkpoint(self):
103
+ with self.assertRaisesRegex(RuntimeError, "were not found in source"):
104
+ self.test_checkpoint_sync(random_uuid=True, from_uuid=True)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes