kailash 0.9.15__py3-none-any.whl → 0.9.17__py3-none-any.whl
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.
- kailash/__init__.py +4 -3
- kailash/middleware/database/base_models.py +7 -1
- kailash/migration/__init__.py +30 -0
- kailash/migration/cli.py +340 -0
- kailash/migration/compatibility_checker.py +662 -0
- kailash/migration/configuration_validator.py +837 -0
- kailash/migration/documentation_generator.py +1828 -0
- kailash/migration/examples/__init__.py +5 -0
- kailash/migration/examples/complete_migration_example.py +692 -0
- kailash/migration/migration_assistant.py +715 -0
- kailash/migration/performance_comparator.py +760 -0
- kailash/migration/regression_detector.py +1141 -0
- kailash/migration/tests/__init__.py +6 -0
- kailash/migration/tests/test_compatibility_checker.py +403 -0
- kailash/migration/tests/test_integration.py +463 -0
- kailash/migration/tests/test_migration_assistant.py +397 -0
- kailash/migration/tests/test_performance_comparator.py +433 -0
- kailash/monitoring/__init__.py +29 -2
- kailash/monitoring/asyncsql_metrics.py +275 -0
- kailash/nodes/data/async_sql.py +1828 -33
- kailash/runtime/local.py +1255 -8
- kailash/runtime/monitoring/__init__.py +1 -0
- kailash/runtime/monitoring/runtime_monitor.py +780 -0
- kailash/runtime/resource_manager.py +3033 -0
- kailash/sdk_exceptions.py +21 -0
- kailash/workflow/cyclic_runner.py +18 -2
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/METADATA +1 -1
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/RECORD +33 -14
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/WHEEL +0 -0
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/entry_points.txt +0 -0
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/licenses/LICENSE +0 -0
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/licenses/NOTICE +0 -0
- {kailash-0.9.15.dist-info → kailash-0.9.17.dist-info}/top_level.txt +0 -0
kailash/sdk_exceptions.py
CHANGED
@@ -196,6 +196,27 @@ class RuntimeExecutionError(RuntimeException):
|
|
196
196
|
"""
|
197
197
|
|
198
198
|
|
199
|
+
class ResourceLimitExceededError(RuntimeException):
|
200
|
+
"""Raised when runtime resource limits are exceeded.
|
201
|
+
|
202
|
+
This typically occurs when:
|
203
|
+
- Connection pool limits are exceeded
|
204
|
+
- Memory usage exceeds configured limits
|
205
|
+
- CPU usage exceeds thresholds
|
206
|
+
- Too many concurrent workflows
|
207
|
+
"""
|
208
|
+
|
209
|
+
|
210
|
+
class CircuitBreakerOpenError(RuntimeException):
|
211
|
+
"""Raised when circuit breaker is open.
|
212
|
+
|
213
|
+
This typically occurs when:
|
214
|
+
- Service has exceeded failure threshold
|
215
|
+
- Circuit breaker is protecting against cascading failures
|
216
|
+
- Service is temporarily unavailable
|
217
|
+
"""
|
218
|
+
|
219
|
+
|
199
220
|
# Task tracking exceptions
|
200
221
|
class TaskException(KailashException):
|
201
222
|
"""Base exception for task tracking errors."""
|
@@ -130,6 +130,7 @@ class WorkflowState:
|
|
130
130
|
self.node_outputs: dict[str, Any] = {}
|
131
131
|
self.execution_order: list[str] = []
|
132
132
|
self.metadata: dict[str, Any] = {}
|
133
|
+
self.runtime = None # Will be set by executor for enterprise features
|
133
134
|
|
134
135
|
|
135
136
|
class CyclicWorkflowExecutor:
|
@@ -151,6 +152,7 @@ class CyclicWorkflowExecutor:
|
|
151
152
|
parameters: dict[str, Any] | None = None,
|
152
153
|
task_manager: TaskManager | None = None,
|
153
154
|
run_id: str | None = None,
|
155
|
+
runtime=None,
|
154
156
|
) -> tuple[dict[str, Any], str]:
|
155
157
|
"""Execute workflow with cycle support.
|
156
158
|
|
@@ -159,6 +161,7 @@ class CyclicWorkflowExecutor:
|
|
159
161
|
parameters: Initial parameters/overrides
|
160
162
|
task_manager: Optional task manager for tracking execution
|
161
163
|
run_id: Optional run ID to use (if not provided, one will be generated)
|
164
|
+
runtime: Optional runtime instance for enterprise features (LocalRuntime)
|
162
165
|
|
163
166
|
Returns:
|
164
167
|
Tuple of (results dict, run_id)
|
@@ -189,7 +192,7 @@ class CyclicWorkflowExecutor:
|
|
189
192
|
# Execute with cycle support
|
190
193
|
try:
|
191
194
|
results = self._execute_with_cycles(
|
192
|
-
workflow, parameters, run_id, task_manager
|
195
|
+
workflow, parameters, run_id, task_manager, runtime
|
193
196
|
)
|
194
197
|
logger.info(f"Cyclic workflow execution completed: {workflow.name}")
|
195
198
|
return results, run_id
|
@@ -280,6 +283,7 @@ class CyclicWorkflowExecutor:
|
|
280
283
|
parameters: dict[str, Any] | None,
|
281
284
|
run_id: str,
|
282
285
|
task_manager: TaskManager | None = None,
|
286
|
+
runtime=None,
|
283
287
|
) -> dict[str, Any]:
|
284
288
|
"""Execute workflow with cycle handling.
|
285
289
|
|
@@ -304,6 +308,8 @@ class CyclicWorkflowExecutor:
|
|
304
308
|
|
305
309
|
# Store initial parameters separately (don't treat them as outputs!)
|
306
310
|
state.initial_parameters = parameters or {}
|
311
|
+
# Store runtime for enterprise features
|
312
|
+
state.runtime = runtime
|
307
313
|
|
308
314
|
# Execute the plan
|
309
315
|
results = self._execute_plan(workflow, execution_plan, state, task_manager)
|
@@ -1284,7 +1290,17 @@ class CyclicWorkflowExecutor:
|
|
1284
1290
|
|
1285
1291
|
try:
|
1286
1292
|
with collector.collect(node_id=node_id) as metrics_context:
|
1287
|
-
|
1293
|
+
# Use enterprise node execution if runtime is available
|
1294
|
+
if state.runtime and hasattr(
|
1295
|
+
state.runtime, "execute_node_with_enterprise_features_sync"
|
1296
|
+
):
|
1297
|
+
# Use sync enterprise wrapper for automatic feature integration
|
1298
|
+
result = state.runtime.execute_node_with_enterprise_features_sync(
|
1299
|
+
node, node_id, dict(context=context, **merged_inputs)
|
1300
|
+
)
|
1301
|
+
else:
|
1302
|
+
# Standard node execution (backward compatibility)
|
1303
|
+
result = node.execute(context=context, **merged_inputs)
|
1288
1304
|
|
1289
1305
|
# Get performance metrics
|
1290
1306
|
performance_metrics = metrics_context.result()
|
@@ -1,9 +1,9 @@
|
|
1
|
-
kailash/__init__.py,sha256=
|
1
|
+
kailash/__init__.py,sha256=ojLQWITpkyPY6cwQ6jbWBeKWxa6m6nO4h6sdugKCMkQ,3032
|
2
2
|
kailash/__main__.py,sha256=vr7TVE5o16V6LsTmRFKG6RDKUXHpIWYdZ6Dok2HkHnI,198
|
3
3
|
kailash/access_control.py,sha256=MjKtkoQ2sg1Mgfe7ovGxVwhAbpJKvaepPWr8dxOueMA,26058
|
4
4
|
kailash/access_control_abac.py,sha256=FPfa_8PuDP3AxTjdWfiH3ntwWO8NodA0py9W8SE5dno,30263
|
5
5
|
kailash/manifest.py,sha256=qzOmeMGWz20Sp4IJitSH9gTVbGng7hlimc96VTW4KI8,24814
|
6
|
-
kailash/sdk_exceptions.py,sha256=
|
6
|
+
kailash/sdk_exceptions.py,sha256=MeFNmFzDzs5g9PveymivIBp1vN6PI7eenGv-Dj62Gog,10774
|
7
7
|
kailash/security.py,sha256=GBU93tUXcTZGEjl0f9XXRlF3W-sSulhiatMZzv1dNqc,27228
|
8
8
|
kailash/access_control/__init__.py,sha256=ykR_zGJXQoCU_4gGNFbYzhVdUemxeAAoDQLhKIPVBGE,4018
|
9
9
|
kailash/access_control/managers.py,sha256=Vg2inaZqR2GBXsySvPZcEqQtFHgF94z7A_wUHMtA3qA,14431
|
@@ -120,7 +120,7 @@ kailash/middleware/core/schema.py,sha256=uVF-5ZJlLYHOQdsKrG46FnTO1bq_QtDjhUSkIID
|
|
120
120
|
kailash/middleware/core/workflows.py,sha256=kjwwP69-T6eCY7kWIMLUBwVy2CapoPR34cqCETquq0s,12480
|
121
121
|
kailash/middleware/database/__init__.py,sha256=UMws94L-vja94AjfzPWIgn0h4_5BGQzI3YaSdqtzeLk,1682
|
122
122
|
kailash/middleware/database/base.py,sha256=cWEei9Gb6J-C-bpa4M4T0takfWE3POXWumzYhqX3V4g,2735
|
123
|
-
kailash/middleware/database/base_models.py,sha256=
|
123
|
+
kailash/middleware/database/base_models.py,sha256=XBcHEUmcpl2f6zZHCAgHQ_0jqUB3Gl82XARR83lW5GY,18287
|
124
124
|
kailash/middleware/database/enums.py,sha256=Yo_wMS7OpsleWtNMESTc2LTf15d93nPnBADIn2EHjeQ,2516
|
125
125
|
kailash/middleware/database/migrations.py,sha256=v5VZxsqciwmOl3rzIBQLp5p6-OP8OG_EL3mu65_yrCM,240
|
126
126
|
kailash/middleware/database/models.py,sha256=CJwwUEdgxqBteXqpFJr1tWskjypJxViZXjODZlByrFk,17784
|
@@ -136,8 +136,24 @@ kailash/middleware/gateway/storage_backends.py,sha256=HJTi6zU6oBI3R3ffcm_U-Xp9qq
|
|
136
136
|
kailash/middleware/mcp/__init__.py,sha256=EdZB8zOMSBEEmudRzs8ksz9QZJYWQMEx7Tm1MOwIWnI,922
|
137
137
|
kailash/middleware/mcp/client_integration.py,sha256=dY1RmX-g5E6JzUFuWxk7viuOYIh8bMwoUSvHQMVEsYk,18265
|
138
138
|
kailash/middleware/mcp/enhanced_server.py,sha256=RUVS7jWHn0ma4F3F23UvuFwUdu7OkSsIRNQmGtkG9I8,18547
|
139
|
-
kailash/
|
139
|
+
kailash/migration/__init__.py,sha256=WFFeTikHkG1Y9s93vjYyeRJnPLNoDNoVPcOZxw-PSy0,1186
|
140
|
+
kailash/migration/cli.py,sha256=yheFAFhqUv5efTxX4kbUzsiYWBJq9bM92KSkgIoK3X4,12186
|
141
|
+
kailash/migration/compatibility_checker.py,sha256=-B9KxVXe0THq6GRbhXtAUVGh_xJEB6UPZLPskTOv9Oo,27352
|
142
|
+
kailash/migration/configuration_validator.py,sha256=s2TIG30Q_21LDQFcpcV-UH6ygeEyOjLMeFoQXVjN9VI,35494
|
143
|
+
kailash/migration/documentation_generator.py,sha256=dxR-lA3we2h-ozmfGnX3Q47eiU2ZRlv-A1g1Rr4Q67s,75289
|
144
|
+
kailash/migration/migration_assistant.py,sha256=GEixPyL_ctkxATXhA6QtcjP4in7X6GmMVy0nLP0j2iw,26014
|
145
|
+
kailash/migration/performance_comparator.py,sha256=zUv1VjSwjaRKiDx3QMrr6cG5zdHAKFyE64C_NQRKNCE,27967
|
146
|
+
kailash/migration/regression_detector.py,sha256=UxKfJcBqkXYFYyogQn_LBM6g_9mr_6e8ukHVMHgRECs,41837
|
147
|
+
kailash/migration/examples/__init__.py,sha256=JjomEr2XAiUW1Ffx7ZDgBlb2-H6gG_G5rvTtKU16l0E,206
|
148
|
+
kailash/migration/examples/complete_migration_example.py,sha256=gLlVrQ8lJUIOI_ThRODECNmeM1guE0bSjz6CggrBfWw,24875
|
149
|
+
kailash/migration/tests/__init__.py,sha256=CfeE7D6D8YEnvPYnoGxShrhExQ1GV-lKRDBjy78JLeI,292
|
150
|
+
kailash/migration/tests/test_compatibility_checker.py,sha256=Gx_lTedk1K-1sIhGDapiLrvLk1z-2hrmFN8Mst00rdg,14097
|
151
|
+
kailash/migration/tests/test_integration.py,sha256=-3j3LZdoaZ5HUcwY99wVM30FrE473rHjSH3i_tu3xNY,17202
|
152
|
+
kailash/migration/tests/test_migration_assistant.py,sha256=H0td6dL3Xkw8ivImFcQP_Cuh0WeqDRpbEKJFzuQ1LEc,14615
|
153
|
+
kailash/migration/tests/test_performance_comparator.py,sha256=cQgX4DHfqXYGmcKrl77qtlMBRYDs7xjaFxTih0M3XdE,15257
|
154
|
+
kailash/monitoring/__init__.py,sha256=41M8uKmU-rWOwNqaDG3Y3uhp0coy6JZE4riMjUMQru4,1167
|
140
155
|
kailash/monitoring/alerts.py,sha256=Hk3Xs0EEkOIBH2ZhlejJBOsLYaPlvRejAAEGqNQISc0,21400
|
156
|
+
kailash/monitoring/asyncsql_metrics.py,sha256=Wlw8Ypo_WYOsAdjc7YVc3JOxsW4D0ImuZcehKFMLfRs,9487
|
141
157
|
kailash/monitoring/metrics.py,sha256=SiAnL3o6K0QaJHgfAuWBa-0pTkW5zymhuPEsj4bgOgM,22022
|
142
158
|
kailash/nodes/__init__.py,sha256=zn4M0f-sIPAq8bG5golQIxmEY8lG5d55Kzg8UNL2lAY,6392
|
143
159
|
kailash/nodes/__init___original.py,sha256=p2KSo0dyUBCLClU123qpQ0tyv5S_36PTxosNyW58nyY,1031
|
@@ -204,7 +220,7 @@ kailash/nodes/compliance/data_retention.py,sha256=90bH_eGwlcDzUdklAJeXQM-RcuLUGQ
|
|
204
220
|
kailash/nodes/compliance/gdpr.py,sha256=ZMoHZjAo4QtGwtFCzGMrAUBFV3TbZOnJ5DZGZS87Bas,70548
|
205
221
|
kailash/nodes/data/__init__.py,sha256=f0h4ysvXxlyFcNJLvDyXrgJ0ixwDF1cS0pJ2QNPakhg,5213
|
206
222
|
kailash/nodes/data/async_connection.py,sha256=wfArHs9svU48bxGZIiixSV2YVn9cukNgEjagwTRu6J4,17250
|
207
|
-
kailash/nodes/data/async_sql.py,sha256=
|
223
|
+
kailash/nodes/data/async_sql.py,sha256=dhDBn5Ont0XBLnZz0_gG8s_8dossj50J0upuvanU7fw,185523
|
208
224
|
kailash/nodes/data/async_vector.py,sha256=HtwQLO25IXu8Vq80qzU8rMkUAKPQ2qM0x8YxjXHlygU,21005
|
209
225
|
kailash/nodes/data/bulk_operations.py,sha256=WVopmosVkIlweFxVt3boLdCPc93EqpYyQ1Ez9mCIt0c,34453
|
210
226
|
kailash/nodes/data/directory.py,sha256=fbfLqD_ijRubk-4xew3604QntPsyDxqaF4k6TpfyjDg,9923
|
@@ -325,15 +341,18 @@ kailash/runtime/async_local.py,sha256=sYNggSU0R-oo8cCvU5ayodDBqASzUhxu994ZvZxDSC
|
|
325
341
|
kailash/runtime/compatibility_reporter.py,sha256=TOQD0ODnJdsxEPyNSYOV_zQxu60X_yvHeu26seFOMEA,19807
|
326
342
|
kailash/runtime/docker.py,sha256=sZknVl1PCGfAZeyc0-exTuKlllSyjYlFIgJoiB3CRNs,23500
|
327
343
|
kailash/runtime/hierarchical_switch_executor.py,sha256=k6aPGbpf6z2m6dTbHrEyuDR8ZCvOqUanBGYp70arQn0,20782
|
328
|
-
kailash/runtime/local.py,sha256=
|
344
|
+
kailash/runtime/local.py,sha256=6c2RtT3YisYPnBAOho6lbd4fYyMiJG8EyUBOGmcei_U,201159
|
329
345
|
kailash/runtime/parallel.py,sha256=-M9VVG36RxnrrmdbcBe9IjQWb58tAEEo76RQQ2uIXaE,21084
|
330
346
|
kailash/runtime/parallel_cyclic.py,sha256=yANZHnePjhCPuCFbq3lFQA1K6jbCv5Of5-vIKbCsmZk,19863
|
331
347
|
kailash/runtime/parameter_injection.py,sha256=kG4GhmarsRr5t3VDFbc2G1HSbsZJg6UmienHCE2Ru7o,14852
|
332
348
|
kailash/runtime/parameter_injector.py,sha256=4l-OOKEBzM_cQ17Zz5o24QSV9a1Zqfu3D2qyq6Uy7hE,30810
|
333
349
|
kailash/runtime/performance_monitor.py,sha256=8K9dApYQJSQ2Vb6lUQxvGzBdvPqyTlDl_aixniSuXqU,7585
|
350
|
+
kailash/runtime/resource_manager.py,sha256=mBXWDLbVscRGv4CFa7J0uC6zJ_H64g-y-ePh9_V_Nr0,110390
|
334
351
|
kailash/runtime/runner.py,sha256=t_SEumtVn9uXlSzJicb50MpUu6xdqjW0uZ5b2phjVPY,3318
|
335
352
|
kailash/runtime/secret_provider.py,sha256=wKhasHnm_Ialo7Q4KGMcmI2qVyrKLuS22ypEnVv4NcU,8757
|
336
353
|
kailash/runtime/testing.py,sha256=hTrgGnqxwSBYoztVqnZpxzFwm0DwUnaJdChRHikgoio,19089
|
354
|
+
kailash/runtime/monitoring/__init__.py,sha256=9how7RsobJ2FCcMK2c_zutU6vd8NEjQXAtFzKZiyEG0,37
|
355
|
+
kailash/runtime/monitoring/runtime_monitor.py,sha256=68uIHI15kra_qiq3rfuoMttpEMknOab9apyUmt0b1Sg,25793
|
337
356
|
kailash/runtime/validation/__init__.py,sha256=tvSnBo59Ku0b6mDwi4MWU162-jDHm9O2rQD1MKXuEZU,432
|
338
357
|
kailash/runtime/validation/connection_context.py,sha256=NAvcyew8e6F0x_sORwszZ-SR3nn7y0Yzskv3X_3AjbU,3286
|
339
358
|
kailash/runtime/validation/enhanced_error_formatter.py,sha256=tFmKbJ9pTXQd28oM9bu01sfVVmT3QIDQK1nkQjMqHfk,7642
|
@@ -390,7 +409,7 @@ kailash/workflow/cycle_debugger.py,sha256=eG-Q_kakqyhr1Ts-q4pRnO0EI7mVO9ao1s9WOx
|
|
390
409
|
kailash/workflow/cycle_exceptions.py,sha256=4_OLnbEXqIiXKzOc3uh8DzFik4wEHwl8bRZhY9Xhf2A,21838
|
391
410
|
kailash/workflow/cycle_profiler.py,sha256=aEWSCm0Xy15SjgLTpPooVJMzpFhtJWt4livR-3Me4N8,28547
|
392
411
|
kailash/workflow/cycle_state.py,sha256=hzRUvciRreWfS56Cf7ZLQPit_mlPTQDoNTawh8yi-2s,10747
|
393
|
-
kailash/workflow/cyclic_runner.py,sha256
|
412
|
+
kailash/workflow/cyclic_runner.py,sha256=Zo2Rakp-N5pPSarndYPdkkpWgY9yHpYrrpUh-znoCKQ,71246
|
394
413
|
kailash/workflow/edge_infrastructure.py,sha256=lQDzs0-KdoCMqI4KAXAGbhHbwadM6t-ffJEWLlRuSNo,12448
|
395
414
|
kailash/workflow/graph.py,sha256=zRpGLXeuwtuxFBvE7_16c_bB9yqZirM_uwtfD1_MY4g,59272
|
396
415
|
kailash/workflow/input_handling.py,sha256=HrW--AmelYC8F18nkfmYlF_wXycA24RuNbDRjvM8rqk,6561
|
@@ -405,10 +424,10 @@ kailash/workflow/templates.py,sha256=XQMAKZXC2dlxgMMQhSEOWAF3hIbe9JJt9j_THchhAm8
|
|
405
424
|
kailash/workflow/type_inference.py,sha256=i1F7Yd_Z3elTXrthsLpqGbOnQBIVVVEjhRpI0HrIjd0,24492
|
406
425
|
kailash/workflow/validation.py,sha256=LdbIPQSokCqSLfWTBhJR82pa_0va44pcVu9dpEM4rvY,45177
|
407
426
|
kailash/workflow/visualization.py,sha256=nHBW-Ai8QBMZtn2Nf3EE1_aiMGi9S6Ui_BfpA5KbJPU,23187
|
408
|
-
kailash-0.9.
|
409
|
-
kailash-0.9.
|
410
|
-
kailash-0.9.
|
411
|
-
kailash-0.9.
|
412
|
-
kailash-0.9.
|
413
|
-
kailash-0.9.
|
414
|
-
kailash-0.9.
|
427
|
+
kailash-0.9.17.dist-info/licenses/LICENSE,sha256=9GYZHXVUmx6FdFRNzOeE_w7a_aEGeYbqTVmFtJlrbGk,13438
|
428
|
+
kailash-0.9.17.dist-info/licenses/NOTICE,sha256=9ssIK4LcHSTFqriXGdteMpBPTS1rSLlYtjppZ_bsjZ0,723
|
429
|
+
kailash-0.9.17.dist-info/METADATA,sha256=xUZBeaugdsC-xcj_U4bEYCVupaxJA02HCER2c9LmldQ,23528
|
430
|
+
kailash-0.9.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
431
|
+
kailash-0.9.17.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
|
432
|
+
kailash-0.9.17.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
|
433
|
+
kailash-0.9.17.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|