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.
- kailash/__init__.py +1 -1
- kailash/access_control/__init__.py +1 -1
- kailash/client/__init__.py +12 -0
- kailash/client/enhanced_client.py +306 -0
- kailash/core/actors/__init__.py +16 -0
- kailash/core/actors/adaptive_pool_controller.py +630 -0
- kailash/core/actors/connection_actor.py +566 -0
- kailash/core/actors/supervisor.py +364 -0
- kailash/core/ml/__init__.py +1 -0
- kailash/core/ml/query_patterns.py +544 -0
- kailash/core/monitoring/__init__.py +19 -0
- kailash/core/monitoring/connection_metrics.py +488 -0
- kailash/core/optimization/__init__.py +1 -0
- kailash/core/resilience/__init__.py +17 -0
- kailash/core/resilience/circuit_breaker.py +382 -0
- kailash/edge/__init__.py +16 -0
- kailash/edge/compliance.py +834 -0
- kailash/edge/discovery.py +659 -0
- kailash/edge/location.py +582 -0
- kailash/gateway/__init__.py +33 -0
- kailash/gateway/api.py +289 -0
- kailash/gateway/enhanced_gateway.py +357 -0
- kailash/gateway/resource_resolver.py +217 -0
- kailash/gateway/security.py +227 -0
- kailash/middleware/auth/access_control.py +6 -6
- kailash/middleware/auth/models.py +2 -2
- kailash/middleware/communication/ai_chat.py +7 -7
- kailash/middleware/communication/api_gateway.py +5 -15
- kailash/middleware/database/base_models.py +1 -7
- kailash/middleware/gateway/__init__.py +22 -0
- kailash/middleware/gateway/checkpoint_manager.py +398 -0
- kailash/middleware/gateway/deduplicator.py +382 -0
- kailash/middleware/gateway/durable_gateway.py +417 -0
- kailash/middleware/gateway/durable_request.py +498 -0
- kailash/middleware/gateway/event_store.py +499 -0
- kailash/middleware/mcp/enhanced_server.py +2 -2
- kailash/nodes/admin/permission_check.py +817 -33
- kailash/nodes/admin/role_management.py +1242 -108
- kailash/nodes/admin/schema_manager.py +438 -0
- kailash/nodes/admin/user_management.py +1124 -1582
- kailash/nodes/code/__init__.py +8 -1
- kailash/nodes/code/async_python.py +1035 -0
- kailash/nodes/code/python.py +1 -0
- kailash/nodes/data/async_sql.py +9 -3
- kailash/nodes/data/query_pipeline.py +641 -0
- kailash/nodes/data/query_router.py +895 -0
- kailash/nodes/data/sql.py +20 -11
- kailash/nodes/data/workflow_connection_pool.py +1071 -0
- kailash/nodes/monitoring/__init__.py +3 -5
- kailash/nodes/monitoring/connection_dashboard.py +822 -0
- kailash/nodes/rag/__init__.py +2 -7
- kailash/resources/__init__.py +40 -0
- kailash/resources/factory.py +533 -0
- kailash/resources/health.py +319 -0
- kailash/resources/reference.py +288 -0
- kailash/resources/registry.py +392 -0
- kailash/runtime/async_local.py +711 -302
- kailash/testing/__init__.py +34 -0
- kailash/testing/async_test_case.py +353 -0
- kailash/testing/async_utils.py +345 -0
- kailash/testing/fixtures.py +458 -0
- kailash/testing/mock_registry.py +495 -0
- kailash/workflow/__init__.py +8 -0
- kailash/workflow/async_builder.py +621 -0
- kailash/workflow/async_patterns.py +766 -0
- kailash/workflow/cyclic_runner.py +107 -16
- kailash/workflow/graph.py +7 -2
- kailash/workflow/resilience.py +11 -1
- {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/METADATA +19 -4
- {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/RECORD +74 -28
- {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/WHEEL +0 -0
- {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/entry_points.txt +0 -0
- {kailash-0.5.0.dist-info → kailash-0.6.1.dist-info}/licenses/LICENSE +0 -0
- {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(
|
308
|
+
for pred in workflow.graph.predecessors(node):
|
306
309
|
if pred not in cycle_nodes:
|
307
|
-
entry_nodes.add(
|
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(
|
316
|
+
for succ in workflow.graph.successors(node):
|
311
317
|
if succ not in cycle_nodes:
|
312
|
-
exit_nodes.add(
|
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
|
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
|
-
|
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(
|
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
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
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
|
-
|
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
|
660
|
+
# First pass: group by cycle_id, using edge-based IDs when not specified
|
661
661
|
for source, target, data in cycle_edges:
|
662
|
-
|
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))
|
kailash/workflow/resilience.py
CHANGED
@@ -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.
|
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-
|
84
|
-
<img src="https://img.shields.io/badge/
|
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=
|
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=
|
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=
|
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=
|
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=
|
46
|
-
kailash/middleware/communication/api_gateway.py,sha256=
|
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=
|
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=
|
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=
|
74
|
-
kailash/nodes/admin/role_management.py,sha256=
|
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=
|
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=
|
107
|
-
kailash/nodes/code/
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
214
|
-
kailash/workflow/graph.py,sha256=
|
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=
|
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.
|
226
|
-
kailash-0.
|
227
|
-
kailash-0.
|
228
|
-
kailash-0.
|
229
|
-
kailash-0.
|
230
|
-
kailash-0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|