kailash 0.5.0__py3-none-any.whl → 0.6.1__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.
Files changed (74) hide show
  1. kailash/__init__.py +1 -1
  2. kailash/access_control/__init__.py +1 -1
  3. kailash/client/__init__.py +12 -0
  4. kailash/client/enhanced_client.py +306 -0
  5. kailash/core/actors/__init__.py +16 -0
  6. kailash/core/actors/adaptive_pool_controller.py +630 -0
  7. kailash/core/actors/connection_actor.py +566 -0
  8. kailash/core/actors/supervisor.py +364 -0
  9. kailash/core/ml/__init__.py +1 -0
  10. kailash/core/ml/query_patterns.py +544 -0
  11. kailash/core/monitoring/__init__.py +19 -0
  12. kailash/core/monitoring/connection_metrics.py +488 -0
  13. kailash/core/optimization/__init__.py +1 -0
  14. kailash/core/resilience/__init__.py +17 -0
  15. kailash/core/resilience/circuit_breaker.py +382 -0
  16. kailash/edge/__init__.py +16 -0
  17. kailash/edge/compliance.py +834 -0
  18. kailash/edge/discovery.py +659 -0
  19. kailash/edge/location.py +582 -0
  20. kailash/gateway/__init__.py +33 -0
  21. kailash/gateway/api.py +289 -0
  22. kailash/gateway/enhanced_gateway.py +357 -0
  23. kailash/gateway/resource_resolver.py +217 -0
  24. kailash/gateway/security.py +227 -0
  25. kailash/middleware/auth/access_control.py +6 -6
  26. kailash/middleware/auth/models.py +2 -2
  27. kailash/middleware/communication/ai_chat.py +7 -7
  28. kailash/middleware/communication/api_gateway.py +5 -15
  29. kailash/middleware/database/base_models.py +1 -7
  30. kailash/middleware/gateway/__init__.py +22 -0
  31. kailash/middleware/gateway/checkpoint_manager.py +398 -0
  32. kailash/middleware/gateway/deduplicator.py +382 -0
  33. kailash/middleware/gateway/durable_gateway.py +417 -0
  34. kailash/middleware/gateway/durable_request.py +498 -0
  35. kailash/middleware/gateway/event_store.py +499 -0
  36. kailash/middleware/mcp/enhanced_server.py +2 -2
  37. kailash/nodes/admin/permission_check.py +817 -33
  38. kailash/nodes/admin/role_management.py +1242 -108
  39. kailash/nodes/admin/schema_manager.py +438 -0
  40. kailash/nodes/admin/user_management.py +1124 -1582
  41. kailash/nodes/code/__init__.py +8 -1
  42. kailash/nodes/code/async_python.py +1035 -0
  43. kailash/nodes/code/python.py +1 -0
  44. kailash/nodes/data/async_sql.py +9 -3
  45. kailash/nodes/data/query_pipeline.py +641 -0
  46. kailash/nodes/data/query_router.py +895 -0
  47. kailash/nodes/data/sql.py +20 -11
  48. kailash/nodes/data/workflow_connection_pool.py +1071 -0
  49. kailash/nodes/monitoring/__init__.py +3 -5
  50. kailash/nodes/monitoring/connection_dashboard.py +822 -0
  51. kailash/nodes/rag/__init__.py +2 -7
  52. kailash/resources/__init__.py +40 -0
  53. kailash/resources/factory.py +533 -0
  54. kailash/resources/health.py +319 -0
  55. kailash/resources/reference.py +288 -0
  56. kailash/resources/registry.py +392 -0
  57. kailash/runtime/async_local.py +711 -302
  58. kailash/testing/__init__.py +34 -0
  59. kailash/testing/async_test_case.py +353 -0
  60. kailash/testing/async_utils.py +345 -0
  61. kailash/testing/fixtures.py +458 -0
  62. kailash/testing/mock_registry.py +495 -0
  63. kailash/workflow/__init__.py +8 -0
  64. kailash/workflow/async_builder.py +621 -0
  65. kailash/workflow/async_patterns.py +766 -0
  66. kailash/workflow/cyclic_runner.py +107 -16
  67. kailash/workflow/graph.py +7 -2
  68. kailash/workflow/resilience.py +11 -1
  69. {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/METADATA +19 -4
  70. {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/RECORD +74 -28
  71. {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/WHEEL +0 -0
  72. {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/entry_points.txt +0 -0
  73. {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/licenses/LICENSE +0 -0
  74. {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/top_level.txt +0 -0
@@ -297,19 +297,29 @@ class CyclicWorkflowExecutor:
297
297
  entry_nodes = set()
298
298
  exit_nodes = set()
299
299
 
300
+ # First, collect all nodes in the cycle
300
301
  for source, target, data in cycle_edges:
301
302
  cycle_nodes.add(source)
302
303
  cycle_nodes.add(target)
303
304
 
305
+ # Then identify entry and exit nodes
306
+ for node in cycle_nodes:
304
307
  # Entry nodes have incoming edges from non-cycle nodes
305
- for pred in workflow.graph.predecessors(target):
308
+ for pred in workflow.graph.predecessors(node):
306
309
  if pred not in cycle_nodes:
307
- entry_nodes.add(target)
310
+ entry_nodes.add(node)
311
+ logger.debug(
312
+ f"Cycle {cycle_id}: Node {node} is an entry node (has predecessor {pred})"
313
+ )
308
314
 
309
315
  # Exit nodes have outgoing edges to non-cycle nodes
310
- for succ in workflow.graph.successors(source):
316
+ for succ in workflow.graph.successors(node):
311
317
  if succ not in cycle_nodes:
312
- exit_nodes.add(source)
318
+ exit_nodes.add(node)
319
+
320
+ logger.debug(
321
+ f"Cycle {cycle_id}: nodes={cycle_nodes}, entry_nodes={entry_nodes}, exit_nodes={exit_nodes}"
322
+ )
313
323
 
314
324
  plan.add_cycle_group(
315
325
  cycle_id=cycle_id,
@@ -320,7 +330,7 @@ class CyclicWorkflowExecutor:
320
330
  )
321
331
 
322
332
  # Build execution stages
323
- plan.build_stages(topo_order, dag_graph)
333
+ plan.build_stages(topo_order, dag_graph, workflow)
324
334
 
325
335
  return plan
326
336
 
@@ -628,6 +638,10 @@ class CyclicWorkflowExecutor:
628
638
  # Gather inputs from connections
629
639
  inputs = {}
630
640
 
641
+ logger.debug(
642
+ f"_execute_node {node_id}: state.node_outputs keys = {list(state.node_outputs.keys())}"
643
+ )
644
+
631
645
  # Check if we're in a cycle and this is not the first iteration
632
646
  in_cycle = cycle_state is not None
633
647
  is_cycle_iteration = in_cycle and cycle_state.iteration > 0
@@ -654,6 +668,9 @@ class CyclicWorkflowExecutor:
654
668
 
655
669
  # Apply mapping
656
670
  mapping = edge_data.get("mapping", {})
671
+ logger.debug(
672
+ f"Edge {pred} -> {node_id}: mapping = {mapping}, pred_output keys = {list(pred_output.keys()) if isinstance(pred_output, dict) else type(pred_output)}"
673
+ )
657
674
  for src_key, dst_key in mapping.items():
658
675
  # Handle nested output access
659
676
  if "." in src_key:
@@ -669,6 +686,9 @@ class CyclicWorkflowExecutor:
669
686
  inputs[dst_key] = value
670
687
  elif isinstance(pred_output, dict) and src_key in pred_output:
671
688
  inputs[dst_key] = pred_output[src_key]
689
+ logger.debug(
690
+ f"Mapped {src_key} -> {dst_key}: {type(pred_output[src_key])}, length={len(pred_output[src_key]) if hasattr(pred_output[src_key], '__len__') else 'N/A'}"
691
+ )
672
692
  elif src_key == "output":
673
693
  # Default output mapping
674
694
  inputs[dst_key] = pred_output
@@ -698,12 +718,11 @@ class CyclicWorkflowExecutor:
698
718
  # Order: config < initial_parameters < connection inputs
699
719
  merged_inputs = {**node.config}
700
720
 
701
- # Add initial parameters if available and node hasn't been executed yet
721
+ # Add initial parameters if available
722
+ # For cycle nodes, initial parameters should be available throughout all iterations
702
723
  if hasattr(state, "initial_parameters") and node_id in state.initial_parameters:
703
- if node_id not in state.node_outputs or (
704
- cycle_state and cycle_state.iteration == 0
705
- ):
706
- # Use initial parameters on first execution
724
+ if node_id not in state.node_outputs or cycle_state is not None:
725
+ # Use initial parameters on first execution or for any cycle iteration
707
726
  merged_inputs.update(state.initial_parameters[node_id])
708
727
 
709
728
  # Connection inputs override everything
@@ -712,6 +731,10 @@ class CyclicWorkflowExecutor:
712
731
  # Filter out None values to avoid security validation errors
713
732
  merged_inputs = {k: v for k, v in merged_inputs.items() if v is not None}
714
733
 
734
+ logger.debug(
735
+ f"Final merged_inputs for {node_id}: keys={list(merged_inputs.keys())}"
736
+ )
737
+
715
738
  # Create task for node execution if task manager available
716
739
  task = None
717
740
  if task_manager and state.run_id:
@@ -837,12 +860,15 @@ class ExecutionPlan:
837
860
  edges=edges,
838
861
  )
839
862
 
840
- def build_stages(self, topo_order: list[str], dag_graph: nx.DiGraph) -> None:
863
+ def build_stages(
864
+ self, topo_order: list[str], dag_graph: nx.DiGraph, workflow: Workflow
865
+ ) -> None:
841
866
  """Build execution stages.
842
867
 
843
868
  Args:
844
869
  topo_order: Topological order of DAG nodes
845
870
  dag_graph: DAG portion of the graph
871
+ workflow: The full workflow for checking dependencies
846
872
  """
847
873
  # Track which nodes have been scheduled
848
874
  scheduled = set()
@@ -873,18 +899,83 @@ class ExecutionPlan:
873
899
  f"in_cycle_id value: {in_cycle_id}, found_cycle_group: {found_cycle_group is not None}"
874
900
  )
875
901
  if found_cycle_group is not None:
876
- logger.debug(f"Scheduling cycle group {in_cycle_id} for node {node_id}")
877
- # Schedule entire cycle group
878
- self.stages.append(
879
- ExecutionStage(is_cycle=True, cycle_group=found_cycle_group)
902
+ # Check if all DAG dependencies of cycle entry nodes are satisfied
903
+ can_schedule_cycle = True
904
+ logger.debug(
905
+ f"Checking dependencies for cycle {in_cycle_id}, entry_nodes: {found_cycle_group.entry_nodes}"
880
906
  )
881
- scheduled.update(found_cycle_group.nodes)
907
+ for entry_node in found_cycle_group.entry_nodes:
908
+ # Check all predecessors of this entry node in the FULL workflow graph
909
+ # (dag_graph only contains DAG edges, not connections to cycle nodes)
910
+ preds = list(workflow.graph.predecessors(entry_node))
911
+ logger.debug(
912
+ f"Entry node {entry_node} has predecessors: {preds}, scheduled: {scheduled}"
913
+ )
914
+ for pred in preds:
915
+ # Skip self-cycles and nodes within the same cycle group
916
+ logger.debug(
917
+ f"Checking pred {pred}: in scheduled? {pred in scheduled}, in cycle? {pred in found_cycle_group.nodes}"
918
+ )
919
+ if (
920
+ pred not in scheduled
921
+ and pred not in found_cycle_group.nodes
922
+ ):
923
+ # This predecessor hasn't been scheduled yet
924
+ logger.debug(
925
+ f"Cannot schedule cycle {in_cycle_id} yet - entry node {entry_node} "
926
+ f"depends on unscheduled node {pred}"
927
+ )
928
+ can_schedule_cycle = False
929
+ break
930
+ if not can_schedule_cycle:
931
+ break
932
+
933
+ if can_schedule_cycle:
934
+ logger.debug(
935
+ f"Scheduling cycle group {in_cycle_id} for node {node_id}"
936
+ )
937
+ # Schedule entire cycle group
938
+ self.stages.append(
939
+ ExecutionStage(is_cycle=True, cycle_group=found_cycle_group)
940
+ )
941
+ scheduled.update(found_cycle_group.nodes)
942
+ else:
943
+ # Skip this node for now, it will be scheduled when its dependencies are met
944
+ logger.debug(
945
+ f"Deferring cycle group {in_cycle_id} - dependencies not met"
946
+ )
947
+ continue
882
948
  else:
883
949
  logger.debug(f"Scheduling DAG node {node_id}")
884
950
  # Schedule DAG node
885
951
  self.stages.append(ExecutionStage(is_cycle=False, nodes=[node_id]))
886
952
  scheduled.add(node_id)
887
953
 
954
+ # After processing all nodes in topological order, check for any unscheduled cycle groups
955
+ for cycle_id, cycle_group in self.cycle_groups.items():
956
+ if not any(node in scheduled for node in cycle_group.nodes):
957
+ # This cycle group hasn't been scheduled yet
958
+ # Check if all dependencies are now satisfied
959
+ can_schedule = True
960
+ for entry_node in cycle_group.entry_nodes:
961
+ for pred in workflow.graph.predecessors(entry_node):
962
+ if pred not in scheduled and pred not in cycle_group.nodes:
963
+ logger.warning(
964
+ f"Cycle group {cycle_id} has unsatisfied dependency: "
965
+ f"{entry_node} depends on {pred}"
966
+ )
967
+ can_schedule = False
968
+ break
969
+ if not can_schedule:
970
+ break
971
+
972
+ if can_schedule:
973
+ logger.debug(f"Scheduling deferred cycle group {cycle_id}")
974
+ self.stages.append(
975
+ ExecutionStage(is_cycle=True, cycle_group=cycle_group)
976
+ )
977
+ scheduled.update(cycle_group.nodes)
978
+
888
979
 
889
980
  class ExecutionStage:
890
981
  """Single stage in execution plan."""
kailash/workflow/graph.py CHANGED
@@ -657,9 +657,14 @@ class Workflow:
657
657
  cycle_groups = {}
658
658
  _, cycle_edges = self.separate_dag_and_cycle_edges()
659
659
 
660
- # First pass: group by cycle_id as before
660
+ # First pass: group by cycle_id, using edge-based IDs when not specified
661
661
  for source, target, data in cycle_edges:
662
- cycle_id = data.get("cycle_id", "default")
662
+ # Generate unique cycle_id based on edge if not provided
663
+ cycle_id = data.get("cycle_id")
664
+ if cycle_id is None:
665
+ # Create unique ID based on the cycle edge
666
+ cycle_id = f"cycle_{source}_{target}"
667
+
663
668
  if cycle_id not in cycle_groups:
664
669
  cycle_groups[cycle_id] = []
665
670
  cycle_groups[cycle_id].append((source, target, data))
@@ -6,7 +6,7 @@ including retry policies, fallback nodes, and circuit breakers.
6
6
 
7
7
  import asyncio
8
8
  import time
9
- from dataclasses import dataclass, field
9
+ from dataclasses import asdict, dataclass, field
10
10
  from datetime import datetime
11
11
  from enum import Enum
12
12
  from typing import Any, Callable, Dict, List, Optional, Union
@@ -50,6 +50,16 @@ class RetryPolicy:
50
50
 
51
51
  return min(delay, self.max_delay)
52
52
 
53
+ def to_dict(self) -> dict:
54
+ """Convert RetryPolicy to dictionary."""
55
+ return {
56
+ "max_retries": self.max_retries,
57
+ "strategy": self.strategy.value,
58
+ "base_delay": self.base_delay,
59
+ "max_delay": self.max_delay,
60
+ "retry_on": [cls.__name__ for cls in self.retry_on],
61
+ }
62
+
53
63
 
54
64
  @dataclass
55
65
  class CircuitBreakerConfig:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kailash
3
- Version: 0.5.0
3
+ Version: 0.6.1
4
4
  Summary: Python SDK for the Kailash container-node architecture
5
5
  Home-page: https://github.com/integrum/kailash-python-sdk
6
6
  Author: Integrum
@@ -30,6 +30,7 @@ Requires-Dist: requests>=2.32.3
30
30
  Requires-Dist: pytest-cov>=6.1.1
31
31
  Requires-Dist: isort>=6.0.1
32
32
  Requires-Dist: aiohttp>=3.12.4
33
+ Requires-Dist: aiohttp-cors>=0.7.0
33
34
  Requires-Dist: ruff>=0.11.12
34
35
  Requires-Dist: msal>=1.32.3
35
36
  Requires-Dist: sphinx>=8.2.3
@@ -61,6 +62,8 @@ Requires-Dist: asyncpg>=0.30.0
61
62
  Requires-Dist: aiomysql>=0.2.0
62
63
  Requires-Dist: twilio>=9.6.3
63
64
  Requires-Dist: qrcode>=8.2
65
+ Requires-Dist: aiofiles>=24.1.0
66
+ Requires-Dist: bcrypt>=4.3.0
64
67
  Provides-Extra: dev
65
68
  Requires-Dist: pytest>=7.0; extra == "dev"
66
69
  Requires-Dist: pytest-cov>=3.0; extra == "dev"
@@ -80,8 +83,9 @@ Dynamic: requires-python
80
83
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
81
84
  <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT License">
82
85
  <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
83
- <img src="https://img.shields.io/badge/tests-127%20organized-brightgreen.svg" alt="Tests: 127 organized">
84
- <img src="https://img.shields.io/badge/test%20structure-reorganized-blue.svg" alt="Test structure: reorganized">
86
+ <img src="https://img.shields.io/badge/tests-production%20quality-brightgreen.svg" alt="Tests: Production Quality">
87
+ <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
88
+ <img src="https://img.shields.io/badge/AI-ollama%20validated-purple.svg" alt="AI: Ollama Validated">
85
89
  </p>
86
90
 
87
91
  <p align="center">
@@ -94,6 +98,17 @@ Dynamic: requires-python
94
98
 
95
99
  ---
96
100
 
101
+ ## 🔥 Latest Release: v0.6.1 (January 26, 2025)
102
+
103
+ **Critical patch fixing middleware compatibility issues from v0.6.0**
104
+
105
+ - 🚨 **Fixed**: All middleware components now use `.execute()` method
106
+ - 🔧 **Fixed**: DataTransformer string transformation validation
107
+ - 🧹 **Fixed**: EventStore async task cleanup preventing crashes
108
+ - 🐳 **New**: Standardized Docker test environment (`./test-env`)
109
+
110
+ [Full Changelog](changelogs/releases/v0.6.1-2025-01-26.md) | [Migration Guide](sdk-users/migration-guides/v0.6.0-to-v0.6.1-migration.md)
111
+
97
112
  ## ✨ Highlights
98
113
 
99
114
  - 🚀 **Rapid Prototyping**: Create and test workflows locally without containerization
@@ -121,6 +136,7 @@ Dynamic: requires-python
121
136
  - 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
122
137
  - 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
123
138
  - ⚡ **Performance Revolution (v0.5.0)**: 10-100x faster parameter resolution, clear async/sync separation, automatic resource management
139
+ - 🧪 **Production-Quality Testing (v0.5.0)**: Comprehensive testing infrastructure with Docker integration, AI workflows, and real-world business scenarios
124
140
 
125
141
  ## 🏗️ Project Architecture
126
142
 
@@ -177,7 +193,6 @@ pip install kailash[user-management]
177
193
  # Everything
178
194
  pip install kailash[all]
179
195
  ```
180
- >>>>>>> origin/main
181
196
 
182
197
  ## 🎯 Who Is This For?
183
198
 
@@ -1,11 +1,11 @@
1
- kailash/__init__.py,sha256=DNNHLV-T781fKqEzh6k-FKu74CJHZG9hsjx6a9xxV48,1724
1
+ kailash/__init__.py,sha256=3ymX4NjOkCaHdw8nCAxgzBLwNu5hIc9i8zWgOMBRmEg,1724
2
2
  kailash/__main__.py,sha256=vr7TVE5o16V6LsTmRFKG6RDKUXHpIWYdZ6Dok2HkHnI,198
3
3
  kailash/access_control.py,sha256=2ctdRFeSeu-d7DU04Aovxh6Rt_4t3IyQfkKEjTeQiMM,25519
4
4
  kailash/access_control_abac.py,sha256=FPfa_8PuDP3AxTjdWfiH3ntwWO8NodA0py9W8SE5dno,30263
5
5
  kailash/manifest.py,sha256=qzOmeMGWz20Sp4IJitSH9gTVbGng7hlimc96VTW4KI8,24814
6
6
  kailash/sdk_exceptions.py,sha256=dueSUxUYqKXmHS5mwl6QtEzP6a0rMGXcBFGCh5sT0tg,10179
7
7
  kailash/security.py,sha256=eTb5rq92vFz7xU1Ov5gM5izRIAi2JQO3Pmf0xe2U3ls,26433
8
- kailash/access_control/__init__.py,sha256=6ZKYHe8SqEdiog369KMmqXBPKM77eBuncwIRbBG8ij4,3958
8
+ kailash/access_control/__init__.py,sha256=ykR_zGJXQoCU_4gGNFbYzhVdUemxeAAoDQLhKIPVBGE,4018
9
9
  kailash/access_control/managers.py,sha256=Vg2inaZqR2GBXsySvPZcEqQtFHgF94z7A_wUHMtA3qA,14431
10
10
  kailash/access_control/rule_evaluators.py,sha256=niguhjThBjA0jIXvdKdGAXzdSM_bAd0ebphGgRrDFKU,15337
11
11
  kailash/api/auth.py,sha256=SnEgCJ2AkFQORDiFHW4-DsMf2HZ4Ox2qfi1iL75wdG0,19913
@@ -17,10 +17,32 @@ kailash/api/studio.py,sha256=F48J0dzqv48n_OiGPR7VGQk7KfH39yHNk9rQNM_-fJM,34888
17
17
  kailash/api/workflow_api.py,sha256=1Y8EfjqBJrs9rettbGHH_SifDi1c-cwibDk3GGG-NUo,13139
18
18
  kailash/cli/__init__.py,sha256=kJaqsBp3fRmagJhqA6LMwMbEa_Vkz93hIPH3W5Mn5r0,97
19
19
  kailash/cli/commands.py,sha256=lv1S1uB0JQE4tiQCJIa1HCbjYDbFE9KwcK3M1jRtRU4,18168
20
+ kailash/client/__init__.py,sha256=WNR39t4O6TDQLI14uR_MjQpLza2c6rU3YkQCXcGCiSU,293
21
+ kailash/client/enhanced_client.py,sha256=trcDWQsON0Hphj14WozVMbfU7HKuxauknzDfoy1fTlo,9431
20
22
  kailash/config/__init__.py,sha256=9qNwtvXAVV-KkHbuL1ZbtC6yXDtowH4YoFiOP-Qbe-w,638
21
23
  kailash/config/database_config.py,sha256=rdlqIP9WUzC0kvAdSjno1LMpu_bEy2v5FgFdgJy-qsc,11588
24
+ kailash/core/actors/__init__.py,sha256=o8CrwZRTPW5uB3UZiiFtz34n1Q-XBoKNwTz5NMTDQgA,433
25
+ kailash/core/actors/adaptive_pool_controller.py,sha256=tque9heLsLwjrNlM1wZSAYi1RInv19Z3HTjbozc9XtY,22484
26
+ kailash/core/actors/connection_actor.py,sha256=TFqlYPEnV8Hjmc706tdRzEw9pBJs2OieH8UeaOrWYIo,18949
27
+ kailash/core/actors/supervisor.py,sha256=7_YXm9o4O_xBs5YxsDFt7RjzaMvTbKcK-jd4KPmSt1M,11968
28
+ kailash/core/ml/__init__.py,sha256=eaD-bmoxMXtwwtKWePsoX1IkcpysX0bMAGyMR7jaAqI,64
29
+ kailash/core/ml/query_patterns.py,sha256=4wV1pBOwUiK80UTKuMXSoRgR0pojtjg2BMNoa5qWpc0,20290
30
+ kailash/core/monitoring/__init__.py,sha256=Qua4i50JYUQcRkWHy1wGyuXGqzqsDVMmdPtud746xts,371
31
+ kailash/core/monitoring/connection_metrics.py,sha256=fvFyHOgMU5lgRB2EB7d-D_F5XERjlmcGAfkrIL0I_OQ,16805
32
+ kailash/core/optimization/__init__.py,sha256=FY5SLLNedH0_aawLYdXHj2rsGdBaaB49QuJ_R9ctHOE,65
33
+ kailash/core/resilience/__init__.py,sha256=nYfMU_hK0CHeK_ZZGZWM3oeI2YjcNg5Wop7bnjPt28c,364
34
+ kailash/core/resilience/circuit_breaker.py,sha256=4fVyTTaz_O4hnPScPK_OKr8MFAltBIuhjQTJd4EGRuQ,14532
22
35
  kailash/database/__init__.py,sha256=keUIl-BhRMSR7ohW4kojaEYCzKmeb_pb4IpWqDqfnOk,686
23
36
  kailash/database/execution_pipeline.py,sha256=1Y-iVXKPoCED3dRoQvOZe1lQyff92NJ__q77NPI0CRQ,16453
37
+ kailash/edge/__init__.py,sha256=-jhM4xaDAUCbwrq6jJjRCdlf49XDULVTcvfsUiqz_qg,447
38
+ kailash/edge/compliance.py,sha256=tUiKiib7FjNtZ62ThQIRhxkehOddndTGLu-Y4He7iRQ,31951
39
+ kailash/edge/discovery.py,sha256=tEV7W2XVPfEgEOM5oaRAlWAtuXV3M4xM07Z7OcnXZxY,24311
40
+ kailash/edge/location.py,sha256=ZrG4CqN-taZFo9VDLvZ2z1lNiTHgXcZvzBJS9meXY8k,19717
41
+ kailash/gateway/__init__.py,sha256=zh2uCsDHi82pZ_tGJklsH_FS-Mx9V31r0hkxk48CM-g,927
42
+ kailash/gateway/api.py,sha256=rvbqV85Av1w7b0FsOg9pulcguu1Oq0D37t029N-tqsA,9478
43
+ kailash/gateway/enhanced_gateway.py,sha256=WYs56k31VLRbfryeRwuiahDAL59aHk99eGrmGtvuD0A,13389
44
+ kailash/gateway/resource_resolver.py,sha256=IC1dceiKfjfUWToYCIBcrUapuR3LlDG6RJ4o7haLY10,7746
45
+ kailash/gateway/security.py,sha256=kf4Quf6u7dqhs80fQQ982eHbRb4weDKG0DaYNeKntT4,7557
24
46
  kailash/mcp/__init__.py,sha256=jQHP7EVT126QXmi0TqR1mU3QNrUeEB4oIC4sD4B2a8c,1813
25
47
  kailash/mcp/ai_registry_server.py,sha256=9pOzJnJFpxJnZPfLo2QvVZ5yvAq5IRqzXPbQL1rL1ns,28104
26
48
  kailash/mcp/client.py,sha256=sTouSiuiu1nbahMXSWcP8-mr1k7cqdBCzSxm8G7le-s,16058
@@ -35,15 +57,15 @@ kailash/mcp/utils/formatters.py,sha256=D-2j1nvmprApiUI13HWY-L2_WPSAcJDtVdHcshAuO
35
57
  kailash/mcp/utils/metrics.py,sha256=MNUjWGQyq1EGdeqzAKCCZJNgcWHOyaYAV8MlS2cb-4k,13754
36
58
  kailash/middleware/__init__.py,sha256=ZGo0qujL-qWn82nIrojY96N1rMPTWFKHumW6CGGpb4Y,10409
37
59
  kailash/middleware/auth/__init__.py,sha256=VkKM8H-zVFx2PLGL7kyxE2IfSiV1HiwveSysbmxMcg0,2077
38
- kailash/middleware/auth/access_control.py,sha256=u8jlfTXRkRteHXi-kiwSGfFFKzAfabxWR6t6L4dU2bk,14954
60
+ kailash/middleware/auth/access_control.py,sha256=6Z09mPyeTb1VBi2C4wRlyqNaJN0lR-me6GMwxDaoR5c,14954
39
61
  kailash/middleware/auth/auth_manager.py,sha256=d1XFJ9jOCrOTwV26qO0b7wBOSbroTvTxaJADII-mCz0,14057
40
62
  kailash/middleware/auth/exceptions.py,sha256=tPDQgaX9nMQ9BJZR3Y5tv2LwLy8pZcUz-uFATQjALRA,2496
41
63
  kailash/middleware/auth/jwt_auth.py,sha256=r4dauFKcoARHj0yb4f4WwBmY9YQpLNBGyk4gdBZEI1k,21626
42
- kailash/middleware/auth/models.py,sha256=RSLiP3GeOFgQ6p1ZSV0zIsfo8a_3nkbF9ctPoAKtYEA,3509
64
+ kailash/middleware/auth/models.py,sha256=sMQ1JnEDKPId1kLNCi2fDfhgLZX-YguHPnSMfS_UAmw,3514
43
65
  kailash/middleware/auth/utils.py,sha256=AW4fYJ2opQvOr_1YgSQi_MsC_RoFPq0XVOEgbxoXWtw,6555
44
66
  kailash/middleware/communication/__init__.py,sha256=keQ2db4WI2-oZ_nJ5sLE1Tum_RkUt7M2VLTmqOlt0zA,778
45
- kailash/middleware/communication/ai_chat.py,sha256=T4R2dujQ40cFH3mI09FTpc6UCbjTItvFLwG0JGe48BQ,36045
46
- kailash/middleware/communication/api_gateway.py,sha256=NMO-Kysvv_z0c8LORvPViPj31nTnkExV0vvlieVni9w,31724
67
+ kailash/middleware/communication/ai_chat.py,sha256=2XmnJB2Nz2xm2darsF2DYnSLGLAYdyYooHok5GrHKb8,35994
68
+ kailash/middleware/communication/api_gateway.py,sha256=xj81IdaGSG7WIS7klzpYC_iYXsjLICUleBzRCeuLzzQ,31359
47
69
  kailash/middleware/communication/events.py,sha256=MEjgcibNyjA4tSFK8CeXDn1oCE75My7K_saxdCBz2HY,15367
48
70
  kailash/middleware/communication/realtime.py,sha256=JS7lMV1_Ta5orvTJPQsetdCdvIiUdsgYt7M7NSQu6fs,24951
49
71
  kailash/middleware/core/__init__.py,sha256=4yQkOWC4b88zSogs1YVqtKG1PugbncqNCwNNWxTdIZA,545
@@ -52,15 +74,21 @@ kailash/middleware/core/schema.py,sha256=uVF-5ZJlLYHOQdsKrG46FnTO1bq_QtDjhUSkIID
52
74
  kailash/middleware/core/workflows.py,sha256=kjwwP69-T6eCY7kWIMLUBwVy2CapoPR34cqCETquq0s,12480
53
75
  kailash/middleware/database/__init__.py,sha256=UMws94L-vja94AjfzPWIgn0h4_5BGQzI3YaSdqtzeLk,1682
54
76
  kailash/middleware/database/base.py,sha256=cWEei9Gb6J-C-bpa4M4T0takfWE3POXWumzYhqX3V4g,2735
55
- kailash/middleware/database/base_models.py,sha256=XBcHEUmcpl2f6zZHCAgHQ_0jqUB3Gl82XARR83lW5GY,18287
77
+ kailash/middleware/database/base_models.py,sha256=t4HfXKGHZkfLkzoRgXXvlO_wdgsqXhm7S0XP4OIdQXc,18262
56
78
  kailash/middleware/database/enums.py,sha256=Yo_wMS7OpsleWtNMESTc2LTf15d93nPnBADIn2EHjeQ,2516
57
79
  kailash/middleware/database/migrations.py,sha256=v5VZxsqciwmOl3rzIBQLp5p6-OP8OG_EL3mu65_yrCM,240
58
80
  kailash/middleware/database/models.py,sha256=CJwwUEdgxqBteXqpFJr1tWskjypJxViZXjODZlByrFk,17784
59
81
  kailash/middleware/database/repositories.py,sha256=7l2OcAem5sMQxbbnmBR4O22P-OcLv5zEo-4r9fIMl1o,23340
60
82
  kailash/middleware/database/session_manager.py,sha256=Pzj7c2TZnM3GRty2igSaxmLOf0-Fs67NVe2Q5lR_C-Q,379
83
+ kailash/middleware/gateway/__init__.py,sha256=3R7HkvAadJKYCkDHEXFnOPHJ6yzdj8HpBOHtafStqSE,588
84
+ kailash/middleware/gateway/checkpoint_manager.py,sha256=kSX90UeSI4gN4aaLa__BOMxIUhNpl0PJ3wGxa7KUCdQ,13606
85
+ kailash/middleware/gateway/deduplicator.py,sha256=CblV3fwc7s4wg6KIvypwyNMYL5AuQi9EwtcxVOy64X8,13265
86
+ kailash/middleware/gateway/durable_gateway.py,sha256=EsIgMNxS_no2W40AXDyE7FmVdnGNU26kBRC5rfnSzoQ,14626
87
+ kailash/middleware/gateway/durable_request.py,sha256=SCnp-bF0tQX9oahr9reqcZjJ_YhyJkeYYl-un9rJ6lo,15437
88
+ kailash/middleware/gateway/event_store.py,sha256=A3Kh2MhVVPbXWvjeo550SqEGPiJYyspAfu6Gv7UZzo4,16131
61
89
  kailash/middleware/mcp/__init__.py,sha256=EdZB8zOMSBEEmudRzs8ksz9QZJYWQMEx7Tm1MOwIWnI,922
62
90
  kailash/middleware/mcp/client_integration.py,sha256=opzhB5TUts_ND8gARXh93nKCc1u4kwo6SqNMMWqMcSU,18258
63
- kailash/middleware/mcp/enhanced_server.py,sha256=ydU265wAoC2d2sFLuuVzmETowzH9qsqvrzJ5mrwEVvU,18458
91
+ kailash/middleware/mcp/enhanced_server.py,sha256=XUjQt0KyRX207FVYAFenkYHa_K8FWWKquROgXQWkoOQ,18453
64
92
  kailash/nodes/__init__.py,sha256=E6CEp1ooq4GgFhKtwVAczOhPt5N3x-AVQ-R0n3_IFyA,936
65
93
  kailash/nodes/base.py,sha256=Fu9c2I5k_Ke192y4fj2NVhf-Y_I0nPr0sDE1zMSRCJY,55417
66
94
  kailash/nodes/base_async.py,sha256=mpntaeFMbUYLIyTvjsb221mXckx_H2dGX2LhxeKhhfA,6569
@@ -70,10 +98,11 @@ kailash/nodes/mixins.py,sha256=ncAdNQPe1sphLByeerP6G_s8mjFLt7dM4baiozzIBPA,12083
70
98
  kailash/nodes/validation.py,sha256=tuBZRZkDiEdvfeU7JaRB7v2-j1vxPYMJ1gVaJ-PKHRk,12117
71
99
  kailash/nodes/admin/__init__.py,sha256=C9_pK2w0rH6JEV_-roypeasAIyIhEFKKnH-npGBeew0,1508
72
100
  kailash/nodes/admin/audit_log.py,sha256=CSSeWwAK-_hGYXs8eess89wNVju8jvsdNKA1A1946to,41066
73
- kailash/nodes/admin/permission_check.py,sha256=yA_vHWzMg3KH27oDnu1M6IWfxXWsRnH0m8x72YKkrFI,32484
74
- kailash/nodes/admin/role_management.py,sha256=2jDQak5jIblP5Dd7vSCKt7h-4vbi6AEhCynu3blQ3vw,30184
101
+ kailash/nodes/admin/permission_check.py,sha256=0SY1PojT3kymhE8hjkXlY6t0OuESDGjJl3IkB8lnUlA,63109
102
+ kailash/nodes/admin/role_management.py,sha256=DVkFJU5yQRf_1TxlvmQBhHzCeE5oJQzIjCKjrEfZb1g,72894
103
+ kailash/nodes/admin/schema_manager.py,sha256=U8W8Xn4H5wamEtSq-I9jh54tWQnrLo4vZDKdX3K4bKs,15073
75
104
  kailash/nodes/admin/security_event.py,sha256=We_nGn6_J004b7LQVd0nKU6LmhJ6vyrl5zySC3xVdfo,56336
76
- kailash/nodes/admin/user_management.py,sha256=g9YUWcxo1Sph2dsCZpiu_f9k3tsEd_rEv6k0njH--vQ,72118
105
+ kailash/nodes/admin/user_management.py,sha256=yoOee8auya9CMiXfDMPH_9A83OdaoJ0B_Sc72sto88w,53702
77
106
  kailash/nodes/ai/__init__.py,sha256=rslxIS8jlovshiNgWqVzQjD_kfT_3h3Ct03sk-iRe6U,2202
78
107
  kailash/nodes/ai/a2a.py,sha256=QpTPl-Cm6mqzM0unLfqPrgEu964QP47g5p2T4clVPMs,70004
79
108
  kailash/nodes/ai/agents.py,sha256=CRA3cdapQjpuvOniXUh6ZVWAlRxUIepVw1BROW6QzdY,20373
@@ -103,25 +132,29 @@ kailash/nodes/auth/mfa.py,sha256=FqeKemNLn1smy8l_A5YxrwKAx19hoer3Wo0WmXP8pCA,853
103
132
  kailash/nodes/auth/risk_assessment.py,sha256=ZVKYCXp8saTBsVxonh2YAM_BkqBPg5HtulRT6PHWspk,30157
104
133
  kailash/nodes/auth/session_management.py,sha256=FzOxic3hjmRlMiAQy7ps8a7XO7AoxYToZL9ywAcwKxY,38694
105
134
  kailash/nodes/auth/sso.py,sha256=m-sYRNGEWwKfpvAzaHikGC3Wy45h0o-JhqgeYLTTV24,38507
106
- kailash/nodes/code/__init__.py,sha256=L3QBfnITPb6v-Wbq2ezNWt8xDlC4uGaTgrkqIJ9vGKU,1191
107
- kailash/nodes/code/python.py,sha256=v5pGJms-0CWKHGn8TI7c_lyPEYrNdl3A9azddTfDFuc,51417
135
+ kailash/nodes/code/__init__.py,sha256=yhEwuMjUEPFfe6hMGMd4E4gZdLUuf2JEQ7knYapiM4o,1283
136
+ kailash/nodes/code/async_python.py,sha256=VPGO4-Xsd-NFyoeE-iBLn1lTg7HuCe8DTijzBG_LkSA,36944
137
+ kailash/nodes/code/python.py,sha256=fu1nIx_AW0CzeOAjQ_d2T5dFE5HLhDQXCYJwuUsLzW4,51481
108
138
  kailash/nodes/compliance/__init__.py,sha256=6a_FL4ofc8MAVuZ-ARW5uYenZLS4mBFVM9AI2QsnoF8,214
109
139
  kailash/nodes/compliance/data_retention.py,sha256=rP85W9mIbbVb4LqxPFYYFySgUJXI5Q5mdoYLY0o3Mnw,69419
110
140
  kailash/nodes/compliance/gdpr.py,sha256=iEAVU7Faqp0HVHk2KLw51oXr6VyJPycvsVL5IQR4ciY,70528
111
141
  kailash/nodes/data/__init__.py,sha256=4UVGZ77ZjCUdDQqwOrhZH60Ka8hGVrZMZCySPk9mFJc,4898
112
142
  kailash/nodes/data/async_connection.py,sha256=wfArHs9svU48bxGZIiixSV2YVn9cukNgEjagwTRu6J4,17250
113
- kailash/nodes/data/async_sql.py,sha256=6DQ7idKe3R6F4Z4Ivmjtb3w0Vl8CAzndDJpCGKSHFho,27155
143
+ kailash/nodes/data/async_sql.py,sha256=QQg-wFzwPlmwjC23H1JgR20EyTAIsR0Zw1e0PHJkP70,27337
114
144
  kailash/nodes/data/async_vector.py,sha256=HtwQLO25IXu8Vq80qzU8rMkUAKPQ2qM0x8YxjXHlygU,21005
115
145
  kailash/nodes/data/directory.py,sha256=fbfLqD_ijRubk-4xew3604QntPsyDxqaF4k6TpfyjDg,9923
116
146
  kailash/nodes/data/event_generation.py,sha256=Bc1se0tPg1IAGCQDrWqlFmgoOpUyfMN9ku4Lm3akhXU,11579
117
147
  kailash/nodes/data/file_discovery.py,sha256=njLLusndwBFwbaWP8rcaiE0UQ49RpDlNQ-3SXH7Jhi4,21733
148
+ kailash/nodes/data/query_pipeline.py,sha256=qX9QdszpMyjTRrljFLtcY_CytSJRDTpGjt4DhwAdPlk,21710
149
+ kailash/nodes/data/query_router.py,sha256=HExyJlOoz4p5gCYh1zonlFls4Y0r19VvM2TjRztzmqg,32005
118
150
  kailash/nodes/data/readers.py,sha256=fX82yQSLGPUFbSf6krT_-9gybp6IBnBH-Lcr87aNlHQ,45962
119
151
  kailash/nodes/data/retrieval.py,sha256=H8Qb2R64fQ_OeaQBh6jVn7-xLuygiF3fjzbh4ssNOrU,20591
120
152
  kailash/nodes/data/sharepoint_graph.py,sha256=J1_KZQ5s8yXkjGY1PjsMY7T8viKARi3os5P8CXpmn2U,37160
121
153
  kailash/nodes/data/sources.py,sha256=tvgDDDerWELD6QkAm73ciKmNakD_SYMd50idlOjpbF0,3632
122
- kailash/nodes/data/sql.py,sha256=ByBr_IaJuHJahyrgrtixFcWTZjE9A1XkSMCHE1K_9mo,33933
154
+ kailash/nodes/data/sql.py,sha256=3On6JatlXvGrp2D4MdObX_l_H3CIEoHxqoPUoSfXYso,34426
123
155
  kailash/nodes/data/streaming.py,sha256=VE4e3CNuRAdjckV8UXFpkTj3mPLY2cicoZwnkq10ZnE,37163
124
156
  kailash/nodes/data/vector_db.py,sha256=pwCl-3tyk_Cv_VQ8GafgodJ1yM88W1BXCIcYC56XoqU,32056
157
+ kailash/nodes/data/workflow_connection_pool.py,sha256=o-c-gu4HRtD0i7G6eCLZuOVB4CDJMOXFuL5CbXipZtk,40284
125
158
  kailash/nodes/data/writers.py,sha256=-RPLetKhKAPXOU6YPwMkVRXF8by6ROhgICm3aUnGcFs,17537
126
159
  kailash/nodes/enterprise/__init__.py,sha256=1a6SsEnzozP4MSFDo-Yimzx-e65NwnmGeTDMammSrtk,407
127
160
  kailash/nodes/enterprise/batch_processor.py,sha256=wA9AtBC_roLF040zoFSBo7wqdE2KFWvVLMIRBBR2_cY,27170
@@ -136,9 +169,10 @@ kailash/nodes/mixins/__init__.py,sha256=0WYfu5kj-lHbFwP9g5vmlbsG8UzvI-vhOyHMEUzX
136
169
  kailash/nodes/mixins/event_emitter.py,sha256=xTeNrBWmuWIf8qYA5DZekymjjrTAD1sboW9dKbAP40w,7492
137
170
  kailash/nodes/mixins/mcp.py,sha256=HSULx66VY-e8h5R4HjcNDI5pPVq3MN9HxD8T9FI9vRo,7040
138
171
  kailash/nodes/mixins/security.py,sha256=oxIwfKHd6Sdmd2GIaoNkRcSzVHUusYKyGNA7rM61fvw,5534
139
- kailash/nodes/monitoring/__init__.py,sha256=my9X4QK-RPAtdkHpQSdwnFc7kVPi-XXxnc90-p-vu5s,168
172
+ kailash/nodes/monitoring/__init__.py,sha256=FvNERJPXZbIDeeBGhfhG6L4Q0WV2ritdhIsrig8rfko,164
173
+ kailash/nodes/monitoring/connection_dashboard.py,sha256=mvrBt081SGZ8xNrc_8kdTFQcphxBHUVAPf8xrW4z-3o,29074
140
174
  kailash/nodes/monitoring/performance_benchmark.py,sha256=KPDjsoSZ1TT0Z1teITDdSbdpYXvyJUoPzgsVWdzQybs,87637
141
- kailash/nodes/rag/__init__.py,sha256=0tUkBZoUvRep7O_isRvb8b5HF9OfUeAGo7AMjfJjfp0,8705
175
+ kailash/nodes/rag/__init__.py,sha256=3UdByxZHfz2jtrYtUKYcffYdc9Xtd7skoUbKsA2vtfA,8660
142
176
  kailash/nodes/rag/advanced.py,sha256=oPcdS8i4yscJ3NCkwQjv9KCwNhmC_5tp8JZ1_XPQY4I,60265
143
177
  kailash/nodes/rag/agentic.py,sha256=6jmUJphKPYXRH7P3K5fPPFuKy1BYfkgR7Mmkv8JvPaM,24153
144
178
  kailash/nodes/rag/conversational.py,sha256=wmN4dArb1XBYYc2wm-FSDuykqbX8EfsHvA-FVEMjEa0,35498
@@ -169,15 +203,25 @@ kailash/nodes/transform/__init__.py,sha256=JWciUYn9y78-tWiYhc4SCXRoy8YP2O3S2dRp-
169
203
  kailash/nodes/transform/chunkers.py,sha256=StRuS6-eLE67OVsqqJJF8dqA2jngD-4yp_rjZQfMAAA,24621
170
204
  kailash/nodes/transform/formatters.py,sha256=BWb5depTZ23Bbg41A_nZojIeET7in6WxYvi3Bhjg-bk,3072
171
205
  kailash/nodes/transform/processors.py,sha256=lLEujPQfZXEDIpgcDoQG6_5s9UgBwWmf0N6rzLVehAA,38353
206
+ kailash/resources/__init__.py,sha256=JM90kDB7k9wTsd6-2jwm-312SeOaXvavyKnPwQwy4PY,1077
207
+ kailash/resources/factory.py,sha256=CYqBm3EFjTv_Aoqb3AUFT8emJlUrtwAZGCSVLt8K3KA,15824
208
+ kailash/resources/health.py,sha256=i6XS0HdL6pUYq8SBdRjvchf-oj0sy3JoRLszNylfQJc,9702
209
+ kailash/resources/reference.py,sha256=RKfXzJFIdid0cLOwsXSmlXq4NhSEci4GO-q3M3qcjA8,7526
210
+ kailash/resources/registry.py,sha256=4qXk4rdsPeaUgwizLakq1TG9cLCNuKQGd313vCIstnw,13504
172
211
  kailash/runtime/__init__.py,sha256=CvU-qBMESYYISqFOlYlLsYJrXJu0Gqr4x6yr4Ob_Rng,278
173
212
  kailash/runtime/access_controlled.py,sha256=Td8Fa8oPxEqlb74bDiH_HtT6J-ku0AudvN7mrUZOacc,17219
174
- kailash/runtime/async_local.py,sha256=qQWCrdBNoa-E6113UqYQ--C5u8F-wq6p1nESLnshIjg,13699
213
+ kailash/runtime/async_local.py,sha256=Ebk3-pDij804YCQST7izXzqC0QWAS5--X_pnNqiwNxQ,29900
175
214
  kailash/runtime/docker.py,sha256=sZknVl1PCGfAZeyc0-exTuKlllSyjYlFIgJoiB3CRNs,23500
176
215
  kailash/runtime/local.py,sha256=i2hnRrk2Ks0Q5jR9SkBhM6d6plJbpH0i7rNkJ8laLCw,39078
177
216
  kailash/runtime/parallel.py,sha256=mz_wPD13-YVc3Q_8HkOs4nPQPdTjnjCcnRL7ZRM70lo,21070
178
217
  kailash/runtime/parallel_cyclic.py,sha256=yANZHnePjhCPuCFbq3lFQA1K6jbCv5Of5-vIKbCsmZk,19863
179
218
  kailash/runtime/runner.py,sha256=Lt9ugsk56ICD9XLKJjnhejtqdiz0mJNdlqH7sSxIlWU,3214
180
219
  kailash/runtime/testing.py,sha256=-Uiq58evL0jzaT8c0Q1oEqQNjeQhkNe3HGrU0FKQ3rQ,19073
220
+ kailash/testing/__init__.py,sha256=4cqLSbcFz9bDY09vuK5Vpg3UtoAAa93R5tc9zIUvGAE,796
221
+ kailash/testing/async_test_case.py,sha256=3Pdi13zT-_LduJ5Tfe7yuhz8Qz7KQpcER6G2nMe-t5A,12815
222
+ kailash/testing/async_utils.py,sha256=gSHcArDJf98mDi--NPFpCoGmAgKHDZ0__tyKAjDjpm0,10745
223
+ kailash/testing/fixtures.py,sha256=AG_859XGZ5yu517jSX67r9WqHlN_B9aWcE4d-N3RgVM,14064
224
+ kailash/testing/mock_registry.py,sha256=1KsIjZh7ig4dC9Xi_FcpyAruPrQP79a3_hCxWrcZ6Zk,18389
181
225
  kailash/tracking/__init__.py,sha256=nhyecV24JuB_D-veJ3qw7h4oO8Sbdmyb6RvPS6VQktU,305
182
226
  kailash/tracking/manager.py,sha256=OxDgvuObiLLcje7-DF5DRIqi8f5clzvrlean1RrL9KE,28006
183
227
  kailash/tracking/metrics_collector.py,sha256=rvKvm2BzhAwdFazJpEQ87j78AMVDSehoScZK4Tfm3O8,11798
@@ -200,7 +244,9 @@ kailash/visualization/api.py,sha256=AavUemsir_tCQgU-YZxo9RyrZJP5g__RCaE7B8_eJIc,
200
244
  kailash/visualization/dashboard.py,sha256=26uL82scgQEhOhqDTyZ-UJr9rNkW9pLw_iJ9bIu3GSs,32806
201
245
  kailash/visualization/performance.py,sha256=KvB7IG8Un2sM1ZnT1TWOabwj4kK40DlCWUN33Mb89nk,28514
202
246
  kailash/visualization/reports.py,sha256=D7kJ0flHr16d-qSEq8vnw20N8u_dgTrXtKVSXVm886w,52778
203
- kailash/workflow/__init__.py,sha256=eUTrN7nVrbw1VaqGeYUzFjC0Un5YIjzh3-03OWPiFSs,1513
247
+ kailash/workflow/__init__.py,sha256=DDQDE9K6RmbX6479guNLLgjiVVV-gQERRvCEJWSVlsM,1836
248
+ kailash/workflow/async_builder.py,sha256=iv8bDJHdWAUZ77SyMo6sucd92dTdtXesdxycrSE7mM4,20613
249
+ kailash/workflow/async_patterns.py,sha256=X0ZDXwr6UAu0WC1xnCB7-0V1-tRbKs9UI4JqaBCB6tE,22824
204
250
  kailash/workflow/builder.py,sha256=CPnfNHlL4HKsX58BI4kOv-CLNrFa_7cg_0lBqqVByYw,10779
205
251
  kailash/workflow/convergence.py,sha256=vfIDR-uNaQE-LVUEzrRtfgKPgX9gL0nLNH-nTg5ra-c,10031
206
252
  kailash/workflow/cycle_analyzer.py,sha256=BGBpgdB-g0-KRI65sVAvHV4lxfoCzMt4uKOHbw8GXT4,32596
@@ -210,21 +256,21 @@ kailash/workflow/cycle_debugger.py,sha256=eG-Q_kakqyhr1Ts-q4pRnO0EI7mVO9ao1s9WOx
210
256
  kailash/workflow/cycle_exceptions.py,sha256=4_OLnbEXqIiXKzOc3uh8DzFik4wEHwl8bRZhY9Xhf2A,21838
211
257
  kailash/workflow/cycle_profiler.py,sha256=aEWSCm0Xy15SjgLTpPooVJMzpFhtJWt4livR-3Me4N8,28547
212
258
  kailash/workflow/cycle_state.py,sha256=hzRUvciRreWfS56Cf7ZLQPit_mlPTQDoNTawh8yi-2s,10747
213
- kailash/workflow/cyclic_runner.py,sha256=Q3-pwYBYrrqSnv6sbMo2pdq_PUUN0xbIz-QjpEtrSqE,36092
214
- kailash/workflow/graph.py,sha256=Dk-5DuhybQlBprLIkblMEmChc9a-Xci7elDqHa4JEGI,55920
259
+ kailash/workflow/cyclic_runner.py,sha256=NZqK_GTNbvf-pp08_brvzOlDCytrKscr1XRDy8PD8Is,40816
260
+ kailash/workflow/graph.py,sha256=gknGNgv3Z6FyNno90jZLGHZ0tTdiUx0_HAy6bEWh6OQ,56156
215
261
  kailash/workflow/mermaid_visualizer.py,sha256=UsQDvxgIAhy-Th7ZzFnbuziaTx1Cd5yUh6S_25DffoQ,22294
216
262
  kailash/workflow/migration.py,sha256=zsmXgbUtOZdjoOx9YoEY0-x7uOY1T-_yQo4MnZjokCQ,31487
217
263
  kailash/workflow/mock_registry.py,sha256=J4gyH8YdhRyhvORDVxGTya0FgDK8iAA8Nonur6p9s-o,1692
218
- kailash/workflow/resilience.py,sha256=_SvyeTQIY5XYGZMB14-mxeq5KSB4hdt4UwauaWiIJZc,8214
264
+ kailash/workflow/resilience.py,sha256=Ecef4gBg-QWP369a_xfzQnVWhHryvEcO2RSFVSriLJI,8569
219
265
  kailash/workflow/runner.py,sha256=l6jb-H7DwbRlvQ3H3SuTs70rut-u7H3Gi8nybKCEjZU,10795
220
266
  kailash/workflow/safety.py,sha256=pS5GKu7UdkzFZcb16Dn-0jBxjULDU-59_M0CbUVMVyw,11298
221
267
  kailash/workflow/state.py,sha256=UTZxs5-Ona6uvBhx1__i6-RX8gB4qazkBIWE7uyRmWQ,7600
222
268
  kailash/workflow/templates.py,sha256=MTIMHGyQML6omLbqeKDbTVIVykfXG6pIFWTTsGBUHN0,48591
223
269
  kailash/workflow/validation.py,sha256=JIbIajWVIaWHSvWtgZ4WUVJaBaUOCz5B9cyTwM--dL4,33060
224
270
  kailash/workflow/visualization.py,sha256=ICMWCWqh5fOQ7eJygbvu2PMWHxe-H5_0epwdZuz8cMw,19737
225
- kailash-0.5.0.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
226
- kailash-0.5.0.dist-info/METADATA,sha256=j4mPimtOBR2E8IoFOKKuYYLCNQQMA7-gYIqaPOpPTuQ,25034
227
- kailash-0.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
228
- kailash-0.5.0.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
229
- kailash-0.5.0.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
230
- kailash-0.5.0.dist-info/RECORD,,
271
+ kailash-0.6.1.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
272
+ kailash-0.6.1.dist-info/METADATA,sha256=uYAx8RZ-rKdgoXsNC0jOUmdDIJ8or0CTEm7eWW6z2BA,25896
273
+ kailash-0.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
274
+ kailash-0.6.1.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
275
+ kailash-0.6.1.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
276
+ kailash-0.6.1.dist-info/RECORD,,