kailash 0.6.0__py3-none-any.whl → 0.6.2__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/core/actors/adaptive_pool_controller.py +630 -0
- kailash/core/actors/connection_actor.py +3 -3
- 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/gateway/api.py +7 -5
- kailash/gateway/enhanced_gateway.py +1 -1
- kailash/middleware/auth/access_control.py +11 -11
- kailash/middleware/communication/ai_chat.py +7 -7
- kailash/middleware/communication/api_gateway.py +5 -15
- kailash/middleware/gateway/checkpoint_manager.py +45 -8
- kailash/middleware/gateway/event_store.py +66 -26
- kailash/middleware/mcp/enhanced_server.py +2 -2
- kailash/nodes/admin/permission_check.py +110 -30
- kailash/nodes/admin/schema.sql +387 -0
- kailash/nodes/admin/tenant_isolation.py +249 -0
- kailash/nodes/admin/transaction_utils.py +244 -0
- kailash/nodes/admin/user_management.py +37 -9
- kailash/nodes/ai/ai_providers.py +55 -3
- kailash/nodes/ai/llm_agent.py +115 -13
- kailash/nodes/data/query_pipeline.py +641 -0
- kailash/nodes/data/query_router.py +895 -0
- kailash/nodes/data/sql.py +24 -0
- kailash/nodes/data/workflow_connection_pool.py +451 -23
- kailash/nodes/monitoring/__init__.py +3 -5
- kailash/nodes/monitoring/connection_dashboard.py +822 -0
- kailash/nodes/rag/__init__.py +1 -3
- kailash/resources/registry.py +6 -0
- kailash/runtime/async_local.py +7 -0
- kailash/utils/export.py +152 -0
- kailash/workflow/builder.py +42 -0
- kailash/workflow/graph.py +86 -17
- kailash/workflow/templates.py +4 -9
- {kailash-0.6.0.dist-info → kailash-0.6.2.dist-info}/METADATA +14 -1
- {kailash-0.6.0.dist-info → kailash-0.6.2.dist-info}/RECORD +45 -31
- {kailash-0.6.0.dist-info → kailash-0.6.2.dist-info}/WHEEL +0 -0
- {kailash-0.6.0.dist-info → kailash-0.6.2.dist-info}/entry_points.txt +0 -0
- {kailash-0.6.0.dist-info → kailash-0.6.2.dist-info}/licenses/LICENSE +0 -0
- {kailash-0.6.0.dist-info → kailash-0.6.2.dist-info}/top_level.txt +0 -0
kailash/nodes/rag/__init__.py
CHANGED
@@ -174,9 +174,7 @@ from .query_processing import (
|
|
174
174
|
|
175
175
|
# Real-time RAG
|
176
176
|
from .realtime import IncrementalIndexNode, RealtimeRAGNode
|
177
|
-
from .realtime import
|
178
|
-
StreamingRAGNode as RealtimeStreamingRAGNode, # Avoid name conflict
|
179
|
-
)
|
177
|
+
from .realtime import StreamingRAGNode as RealtimeStreamingRAGNode
|
180
178
|
from .registry import RAGWorkflowRegistry
|
181
179
|
from .router import (
|
182
180
|
RAGPerformanceMonitorNode,
|
kailash/resources/registry.py
CHANGED
@@ -266,6 +266,12 @@ class ResourceRegistry:
|
|
266
266
|
)
|
267
267
|
|
268
268
|
# Try generic cleanup methods
|
269
|
+
elif hasattr(resource, "aclose"):
|
270
|
+
# Use aclose for modern async resources (e.g., Redis)
|
271
|
+
if asyncio.iscoroutinefunction(resource.aclose):
|
272
|
+
await resource.aclose()
|
273
|
+
else:
|
274
|
+
resource.aclose()
|
269
275
|
elif hasattr(resource, "close"):
|
270
276
|
if asyncio.iscoroutinefunction(resource.close):
|
271
277
|
await resource.close()
|
kailash/runtime/async_local.py
CHANGED
@@ -717,6 +717,13 @@ class AsyncLocalRuntime(LocalRuntime):
|
|
717
717
|
# Navigate the path (e.g., "result.data")
|
718
718
|
path_parts = source_path.split(".")
|
719
719
|
current_data = source_data
|
720
|
+
|
721
|
+
# CRITICAL FIX: Handle paths starting with "result"
|
722
|
+
# When source_path is "result.field", the node output IS the result
|
723
|
+
if path_parts[0] == "result" and len(path_parts) > 1:
|
724
|
+
# Skip the "result" prefix and navigate from the actual data
|
725
|
+
path_parts = path_parts[1:]
|
726
|
+
|
720
727
|
for part in path_parts:
|
721
728
|
if (
|
722
729
|
isinstance(current_data, dict)
|
kailash/utils/export.py
CHANGED
@@ -4,6 +4,7 @@ import json
|
|
4
4
|
import logging
|
5
5
|
import re
|
6
6
|
from copy import deepcopy
|
7
|
+
from datetime import UTC, datetime
|
7
8
|
from pathlib import Path
|
8
9
|
from typing import Any
|
9
10
|
|
@@ -643,6 +644,157 @@ class WorkflowExporter:
|
|
643
644
|
except Exception as e:
|
644
645
|
raise ExportException(f"Failed to export workflow manifest: {e}") from e
|
645
646
|
|
647
|
+
def export_as_code(self, workflow: Workflow, output_path: str | None = None) -> str:
|
648
|
+
"""Export workflow as executable Python code.
|
649
|
+
|
650
|
+
Args:
|
651
|
+
workflow: Workflow to export
|
652
|
+
output_path: Optional path to write Python file
|
653
|
+
|
654
|
+
Returns:
|
655
|
+
Python code string
|
656
|
+
|
657
|
+
Raises:
|
658
|
+
ExportException: If export fails
|
659
|
+
"""
|
660
|
+
if not workflow:
|
661
|
+
raise ExportException("Workflow is required")
|
662
|
+
|
663
|
+
try:
|
664
|
+
if self.pre_export_hook:
|
665
|
+
self.pre_export_hook(workflow, "python")
|
666
|
+
|
667
|
+
# Generate Python code
|
668
|
+
metadata = workflow.metadata if hasattr(workflow, "metadata") else {}
|
669
|
+
if isinstance(metadata, dict):
|
670
|
+
name = metadata.get("name", "workflow")
|
671
|
+
description = metadata.get("description", "Generated workflow")
|
672
|
+
else:
|
673
|
+
name = getattr(metadata, "name", "workflow")
|
674
|
+
description = getattr(metadata, "description", "Generated workflow")
|
675
|
+
|
676
|
+
code_lines = [
|
677
|
+
"#!/usr/bin/env python3",
|
678
|
+
'"""',
|
679
|
+
f"Generated workflow: {name}",
|
680
|
+
f"Description: {description}",
|
681
|
+
f"Generated at: {datetime.now(UTC).isoformat()}",
|
682
|
+
'"""',
|
683
|
+
"",
|
684
|
+
"from kailash import WorkflowBuilder",
|
685
|
+
"from kailash.runtime.local import LocalRuntime",
|
686
|
+
"",
|
687
|
+
"",
|
688
|
+
"def build_workflow():",
|
689
|
+
' """Build the workflow."""',
|
690
|
+
" builder = WorkflowBuilder()",
|
691
|
+
"",
|
692
|
+
]
|
693
|
+
|
694
|
+
# Add nodes
|
695
|
+
for node_id, node in workflow.nodes.items():
|
696
|
+
node_type = node.node_type
|
697
|
+
config = node.config
|
698
|
+
|
699
|
+
# Format config as Python dict
|
700
|
+
config_str = self._format_dict_for_code(config, indent=8)
|
701
|
+
|
702
|
+
code_lines.extend(
|
703
|
+
[
|
704
|
+
f" # Add {node_type} node",
|
705
|
+
f' builder.add_node("{node_type}", "{node_id}", config={config_str})',
|
706
|
+
"",
|
707
|
+
]
|
708
|
+
)
|
709
|
+
|
710
|
+
# Add connections
|
711
|
+
if workflow.connections:
|
712
|
+
code_lines.append(" # Add connections")
|
713
|
+
for conn in workflow.connections:
|
714
|
+
code_lines.append(
|
715
|
+
f' builder.add_connection("{conn.source_node}", "{conn.source_output}", '
|
716
|
+
f'"{conn.target_node}", "{conn.target_input}")'
|
717
|
+
)
|
718
|
+
code_lines.append("")
|
719
|
+
|
720
|
+
# Build workflow
|
721
|
+
code_lines.extend(
|
722
|
+
[
|
723
|
+
f' return builder.build("{name}")',
|
724
|
+
"",
|
725
|
+
"",
|
726
|
+
"def main():",
|
727
|
+
' """Execute the workflow."""',
|
728
|
+
" # Build workflow",
|
729
|
+
" workflow = build_workflow()",
|
730
|
+
" ",
|
731
|
+
" # Create runtime",
|
732
|
+
" runtime = LocalRuntime()",
|
733
|
+
" ",
|
734
|
+
" # Execute workflow",
|
735
|
+
" result = runtime.execute(workflow)",
|
736
|
+
" ",
|
737
|
+
" # Print results",
|
738
|
+
' print("Workflow execution completed!")',
|
739
|
+
' print(f"Result: {result}")',
|
740
|
+
"",
|
741
|
+
"",
|
742
|
+
'if __name__ == "__main__":',
|
743
|
+
" main()",
|
744
|
+
"",
|
745
|
+
]
|
746
|
+
)
|
747
|
+
|
748
|
+
python_code = "\n".join(code_lines)
|
749
|
+
|
750
|
+
if output_path:
|
751
|
+
try:
|
752
|
+
Path(output_path).parent.mkdir(parents=True, exist_ok=True)
|
753
|
+
Path(output_path).write_text(python_code)
|
754
|
+
# Make executable
|
755
|
+
Path(output_path).chmod(0o755)
|
756
|
+
except Exception as e:
|
757
|
+
raise ExportException(
|
758
|
+
f"Failed to write Python code to '{output_path}': {e}"
|
759
|
+
) from e
|
760
|
+
|
761
|
+
if self.post_export_hook:
|
762
|
+
self.post_export_hook(workflow, "python", python_code)
|
763
|
+
|
764
|
+
return python_code
|
765
|
+
|
766
|
+
except ExportException:
|
767
|
+
raise
|
768
|
+
except Exception as e:
|
769
|
+
raise ExportException(f"Failed to export workflow as code: {e}") from e
|
770
|
+
|
771
|
+
def _format_dict_for_code(self, data: dict, indent: int = 0) -> str:
|
772
|
+
"""Format dictionary for Python code generation."""
|
773
|
+
if not data:
|
774
|
+
return "{}"
|
775
|
+
|
776
|
+
lines = ["{"]
|
777
|
+
indent_str = " " * indent
|
778
|
+
inner_indent = " " * (indent + 4)
|
779
|
+
|
780
|
+
for i, (key, value) in enumerate(data.items()):
|
781
|
+
if isinstance(value, str):
|
782
|
+
value_str = f'"{value}"'
|
783
|
+
elif isinstance(value, dict):
|
784
|
+
value_str = self._format_dict_for_code(value, indent + 4)
|
785
|
+
elif isinstance(value, list):
|
786
|
+
value_str = str(value)
|
787
|
+
else:
|
788
|
+
value_str = str(value)
|
789
|
+
|
790
|
+
line = f'{inner_indent}"{key}": {value_str}'
|
791
|
+
if i < len(data) - 1:
|
792
|
+
line += ","
|
793
|
+
lines.append(line)
|
794
|
+
|
795
|
+
lines.append(indent_str + "}")
|
796
|
+
return "\n".join(lines)
|
797
|
+
|
646
798
|
def export_with_templates(
|
647
799
|
self, workflow: Workflow, template_name: str, output_dir: str
|
648
800
|
) -> dict[str, str]:
|
kailash/workflow/builder.py
CHANGED
@@ -162,6 +162,48 @@ class WorkflowBuilder:
|
|
162
162
|
|
163
163
|
logger.info(f"Connected '{from_node}.{from_output}' to '{to_node}.{to_input}'")
|
164
164
|
|
165
|
+
def connect(
|
166
|
+
self,
|
167
|
+
from_node: str,
|
168
|
+
to_node: str,
|
169
|
+
mapping: dict = None,
|
170
|
+
from_output: str = None,
|
171
|
+
to_input: str = None,
|
172
|
+
) -> None:
|
173
|
+
"""
|
174
|
+
Connect two nodes in the workflow with flexible parameter formats.
|
175
|
+
|
176
|
+
This method provides a more intuitive API for connecting nodes and supports
|
177
|
+
both simple connections and complex mapping-based connections.
|
178
|
+
|
179
|
+
Args:
|
180
|
+
from_node: Source node ID
|
181
|
+
to_node: Target node ID
|
182
|
+
mapping: Dict mapping from_output to to_input (e.g., {"data": "input"})
|
183
|
+
from_output: Single output field (alternative to mapping)
|
184
|
+
to_input: Single input field (alternative to mapping)
|
185
|
+
|
186
|
+
Examples:
|
187
|
+
# Simple connection
|
188
|
+
workflow.connect("node1", "node2", from_output="data", to_input="input")
|
189
|
+
|
190
|
+
# Mapping-based connection
|
191
|
+
workflow.connect("node1", "node2", mapping={"data": "input"})
|
192
|
+
|
193
|
+
# Default data flow
|
194
|
+
workflow.connect("node1", "node2") # Uses "data" -> "data"
|
195
|
+
"""
|
196
|
+
if mapping:
|
197
|
+
# Handle mapping-based connections
|
198
|
+
for from_out, to_in in mapping.items():
|
199
|
+
self.add_connection(from_node, from_out, to_node, to_in)
|
200
|
+
elif from_output and to_input:
|
201
|
+
# Handle explicit parameter connections
|
202
|
+
self.add_connection(from_node, from_output, to_node, to_input)
|
203
|
+
else:
|
204
|
+
# Default data flow
|
205
|
+
self.add_connection(from_node, "data", to_node, "data")
|
206
|
+
|
165
207
|
def set_metadata(self, **kwargs) -> "WorkflowBuilder":
|
166
208
|
"""
|
167
209
|
Set workflow metadata.
|
kailash/workflow/graph.py
CHANGED
@@ -346,18 +346,27 @@ class Workflow:
|
|
346
346
|
# Validate cycle parameters and issue deprecation warning
|
347
347
|
if cycle:
|
348
348
|
# Issue deprecation warning for cycle usage via connect()
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
349
|
+
# Skip warning if called from CycleBuilder (check stack)
|
350
|
+
import inspect
|
351
|
+
|
352
|
+
frame = inspect.currentframe()
|
353
|
+
caller_frame = frame.f_back if frame else None
|
354
|
+
caller_filename = caller_frame.f_code.co_filename if caller_frame else ""
|
355
|
+
|
356
|
+
# Only warn if NOT called from CycleBuilder
|
357
|
+
if "cycle_builder.py" not in caller_filename:
|
358
|
+
warnings.warn(
|
359
|
+
"Using workflow.connect() with cycle=True is deprecated and will be removed in v0.2.0. "
|
360
|
+
"Use the new CycleBuilder API instead:\n"
|
361
|
+
" workflow.create_cycle('cycle_name')\\\n"
|
362
|
+
" .connect(source_node, target_node)\\\n"
|
363
|
+
" .max_iterations(N)\\\n"
|
364
|
+
" .converge_when('condition')\\\n"
|
365
|
+
" .build()\n"
|
366
|
+
"See Phase 5 API documentation for details.",
|
367
|
+
DeprecationWarning,
|
368
|
+
stacklevel=2,
|
369
|
+
)
|
361
370
|
|
362
371
|
# Import enhanced exceptions for better error messaging
|
363
372
|
try:
|
@@ -426,11 +435,20 @@ class Workflow:
|
|
426
435
|
for c in self.connections
|
427
436
|
if c.source_node == source_node and c.target_node == target_node
|
428
437
|
]
|
438
|
+
# Allow multiple connections between same nodes for different mappings
|
439
|
+
# Only reject if it's a duplicate mapping, not just any existing connection
|
429
440
|
if existing_connections and not cycle:
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
441
|
+
# Check if any of the new mappings already exist
|
442
|
+
existing_mappings = set()
|
443
|
+
for conn in existing_connections:
|
444
|
+
existing_mappings.add((conn.source_output, conn.target_input))
|
445
|
+
|
446
|
+
for source_output, target_input in mapping.items():
|
447
|
+
if (source_output, target_input) in existing_mappings:
|
448
|
+
raise ConnectionError(
|
449
|
+
f"Duplicate connection already exists: '{source_node}.{source_output}' -> '{target_node}.{target_input}'. "
|
450
|
+
f"Existing mappings: {[c.model_dump() for c in existing_connections]}"
|
451
|
+
)
|
434
452
|
|
435
453
|
# Create connections (store in self.connections list)
|
436
454
|
for source_output, target_input in mapping.items():
|
@@ -495,7 +513,58 @@ class Workflow:
|
|
495
513
|
}
|
496
514
|
)
|
497
515
|
|
498
|
-
#
|
516
|
+
# CRITICAL FIX: Merge edge data for multiple connections between same nodes
|
517
|
+
# Check if edge already exists and merge mappings
|
518
|
+
existing_edge_data = None
|
519
|
+
if self.graph.has_edge(source_node, target_node):
|
520
|
+
existing_edge_data = self.graph.get_edge_data(source_node, target_node)
|
521
|
+
|
522
|
+
if existing_edge_data and "mapping" in existing_edge_data:
|
523
|
+
# Merge with existing mapping
|
524
|
+
merged_mapping = existing_edge_data["mapping"].copy()
|
525
|
+
merged_mapping.update(mapping)
|
526
|
+
edge_data = {
|
527
|
+
"mapping": merged_mapping, # Merged mapping dictionary
|
528
|
+
}
|
529
|
+
|
530
|
+
# Update backward compatibility fields
|
531
|
+
if len(merged_mapping) == 1:
|
532
|
+
edge_data["from_output"] = list(merged_mapping.keys())[0]
|
533
|
+
edge_data["to_input"] = list(merged_mapping.values())[0]
|
534
|
+
else:
|
535
|
+
edge_data["from_output"] = list(merged_mapping.keys())
|
536
|
+
edge_data["to_input"] = list(merged_mapping.values())
|
537
|
+
|
538
|
+
# Preserve any existing cycle metadata
|
539
|
+
if existing_edge_data.get("cycle"):
|
540
|
+
edge_data.update(
|
541
|
+
{
|
542
|
+
k: v
|
543
|
+
for k, v in existing_edge_data.items()
|
544
|
+
if k not in ["mapping", "from_output", "to_input"]
|
545
|
+
}
|
546
|
+
)
|
547
|
+
else:
|
548
|
+
# No existing edge or no mapping, use new mapping as-is
|
549
|
+
# (edge_data was already set above)
|
550
|
+
pass
|
551
|
+
|
552
|
+
# Add cycle metadata to edge if this is a cycle connection
|
553
|
+
if cycle:
|
554
|
+
edge_data.update(
|
555
|
+
{
|
556
|
+
"cycle": cycle,
|
557
|
+
"max_iterations": max_iterations,
|
558
|
+
"convergence_check": convergence_check,
|
559
|
+
"cycle_id": cycle_id,
|
560
|
+
"timeout": timeout,
|
561
|
+
"memory_limit": memory_limit,
|
562
|
+
"condition": condition,
|
563
|
+
"parent_cycle": parent_cycle,
|
564
|
+
}
|
565
|
+
)
|
566
|
+
|
567
|
+
# Add or update the edge with merged data
|
499
568
|
self.graph.add_edge(source_node, target_node, **edge_data)
|
500
569
|
|
501
570
|
# Enhanced logging for cycles
|
kailash/workflow/templates.py
CHANGED
@@ -176,15 +176,10 @@ class CycleTemplates:
|
|
176
176
|
# Connect processor to evaluator
|
177
177
|
workflow.connect(processor_node, evaluator_node)
|
178
178
|
|
179
|
-
# Close the cycle with convergence condition
|
180
|
-
workflow.connect(
|
181
|
-
evaluator_node,
|
182
|
-
|
183
|
-
cycle=True,
|
184
|
-
max_iterations=max_iterations,
|
185
|
-
convergence_check=convergence,
|
186
|
-
cycle_id=cycle_id,
|
187
|
-
)
|
179
|
+
# Close the cycle with convergence condition using new API
|
180
|
+
workflow.create_cycle(cycle_id).connect(
|
181
|
+
evaluator_node, processor_node
|
182
|
+
).max_iterations(max_iterations).converge_when(convergence).build()
|
188
183
|
|
189
184
|
return cycle_id
|
190
185
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: kailash
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.2
|
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
|
@@ -63,6 +64,7 @@ Requires-Dist: twilio>=9.6.3
|
|
63
64
|
Requires-Dist: qrcode>=8.2
|
64
65
|
Requires-Dist: aiofiles>=24.1.0
|
65
66
|
Requires-Dist: bcrypt>=4.3.0
|
67
|
+
Requires-Dist: plotly>=6.2.0
|
66
68
|
Provides-Extra: dev
|
67
69
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
68
70
|
Requires-Dist: pytest-cov>=3.0; extra == "dev"
|
@@ -97,6 +99,17 @@ Dynamic: requires-python
|
|
97
99
|
|
98
100
|
---
|
99
101
|
|
102
|
+
## 🔥 Latest Release: v0.6.1 (January 26, 2025)
|
103
|
+
|
104
|
+
**Critical patch fixing middleware compatibility issues from v0.6.0**
|
105
|
+
|
106
|
+
- 🚨 **Fixed**: All middleware components now use `.execute()` method
|
107
|
+
- 🔧 **Fixed**: DataTransformer string transformation validation
|
108
|
+
- 🧹 **Fixed**: EventStore async task cleanup preventing crashes
|
109
|
+
- 🐳 **New**: Standardized Docker test environment (`./test-env`)
|
110
|
+
|
111
|
+
[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)
|
112
|
+
|
100
113
|
## ✨ Highlights
|
101
114
|
|
102
115
|
- 🚀 **Rapid Prototyping**: Create and test workflows locally without containerization
|
@@ -1,11 +1,11 @@
|
|
1
|
-
kailash/__init__.py,sha256=
|
1
|
+
kailash/__init__.py,sha256=ZV1hjURaVjSCN-pI1JcNDbpBxyaYv5DYgnhgupZRzSc,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
|
@@ -22,8 +22,16 @@ kailash/client/enhanced_client.py,sha256=trcDWQsON0Hphj14WozVMbfU7HKuxauknzDfoy1
|
|
22
22
|
kailash/config/__init__.py,sha256=9qNwtvXAVV-KkHbuL1ZbtC6yXDtowH4YoFiOP-Qbe-w,638
|
23
23
|
kailash/config/database_config.py,sha256=rdlqIP9WUzC0kvAdSjno1LMpu_bEy2v5FgFdgJy-qsc,11588
|
24
24
|
kailash/core/actors/__init__.py,sha256=o8CrwZRTPW5uB3UZiiFtz34n1Q-XBoKNwTz5NMTDQgA,433
|
25
|
-
kailash/core/actors/
|
25
|
+
kailash/core/actors/adaptive_pool_controller.py,sha256=tque9heLsLwjrNlM1wZSAYi1RInv19Z3HTjbozc9XtY,22484
|
26
|
+
kailash/core/actors/connection_actor.py,sha256=M8fOX1a3jvH5PUkfQyk0eBJqCk0SD9KGZCw0TXLON_o,18979
|
26
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
|
27
35
|
kailash/database/__init__.py,sha256=keUIl-BhRMSR7ohW4kojaEYCzKmeb_pb4IpWqDqfnOk,686
|
28
36
|
kailash/database/execution_pipeline.py,sha256=1Y-iVXKPoCED3dRoQvOZe1lQyff92NJ__q77NPI0CRQ,16453
|
29
37
|
kailash/edge/__init__.py,sha256=-jhM4xaDAUCbwrq6jJjRCdlf49XDULVTcvfsUiqz_qg,447
|
@@ -31,8 +39,8 @@ kailash/edge/compliance.py,sha256=tUiKiib7FjNtZ62ThQIRhxkehOddndTGLu-Y4He7iRQ,31
|
|
31
39
|
kailash/edge/discovery.py,sha256=tEV7W2XVPfEgEOM5oaRAlWAtuXV3M4xM07Z7OcnXZxY,24311
|
32
40
|
kailash/edge/location.py,sha256=ZrG4CqN-taZFo9VDLvZ2z1lNiTHgXcZvzBJS9meXY8k,19717
|
33
41
|
kailash/gateway/__init__.py,sha256=zh2uCsDHi82pZ_tGJklsH_FS-Mx9V31r0hkxk48CM-g,927
|
34
|
-
kailash/gateway/api.py,sha256=
|
35
|
-
kailash/gateway/enhanced_gateway.py,sha256=
|
42
|
+
kailash/gateway/api.py,sha256=xpK8PIamsqQPpKAJwacyV7RA_Snjv2pc_0ljnnU9Oy4,9534
|
43
|
+
kailash/gateway/enhanced_gateway.py,sha256=IlN1XV01FQrF4rGcq_z9LE4uUHAAAQoVsRNToXENen0,13399
|
36
44
|
kailash/gateway/resource_resolver.py,sha256=IC1dceiKfjfUWToYCIBcrUapuR3LlDG6RJ4o7haLY10,7746
|
37
45
|
kailash/gateway/security.py,sha256=kf4Quf6u7dqhs80fQQ982eHbRb4weDKG0DaYNeKntT4,7557
|
38
46
|
kailash/mcp/__init__.py,sha256=jQHP7EVT126QXmi0TqR1mU3QNrUeEB4oIC4sD4B2a8c,1813
|
@@ -49,15 +57,15 @@ kailash/mcp/utils/formatters.py,sha256=D-2j1nvmprApiUI13HWY-L2_WPSAcJDtVdHcshAuO
|
|
49
57
|
kailash/mcp/utils/metrics.py,sha256=MNUjWGQyq1EGdeqzAKCCZJNgcWHOyaYAV8MlS2cb-4k,13754
|
50
58
|
kailash/middleware/__init__.py,sha256=ZGo0qujL-qWn82nIrojY96N1rMPTWFKHumW6CGGpb4Y,10409
|
51
59
|
kailash/middleware/auth/__init__.py,sha256=VkKM8H-zVFx2PLGL7kyxE2IfSiV1HiwveSysbmxMcg0,2077
|
52
|
-
kailash/middleware/auth/access_control.py,sha256=
|
60
|
+
kailash/middleware/auth/access_control.py,sha256=2FwQjp_fZm2fg-V_CIgAN69GGL9YwyZwsbQis0hbW7I,14848
|
53
61
|
kailash/middleware/auth/auth_manager.py,sha256=d1XFJ9jOCrOTwV26qO0b7wBOSbroTvTxaJADII-mCz0,14057
|
54
62
|
kailash/middleware/auth/exceptions.py,sha256=tPDQgaX9nMQ9BJZR3Y5tv2LwLy8pZcUz-uFATQjALRA,2496
|
55
63
|
kailash/middleware/auth/jwt_auth.py,sha256=r4dauFKcoARHj0yb4f4WwBmY9YQpLNBGyk4gdBZEI1k,21626
|
56
64
|
kailash/middleware/auth/models.py,sha256=sMQ1JnEDKPId1kLNCi2fDfhgLZX-YguHPnSMfS_UAmw,3514
|
57
65
|
kailash/middleware/auth/utils.py,sha256=AW4fYJ2opQvOr_1YgSQi_MsC_RoFPq0XVOEgbxoXWtw,6555
|
58
66
|
kailash/middleware/communication/__init__.py,sha256=keQ2db4WI2-oZ_nJ5sLE1Tum_RkUt7M2VLTmqOlt0zA,778
|
59
|
-
kailash/middleware/communication/ai_chat.py,sha256=
|
60
|
-
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
|
61
69
|
kailash/middleware/communication/events.py,sha256=MEjgcibNyjA4tSFK8CeXDn1oCE75My7K_saxdCBz2HY,15367
|
62
70
|
kailash/middleware/communication/realtime.py,sha256=JS7lMV1_Ta5orvTJPQsetdCdvIiUdsgYt7M7NSQu6fs,24951
|
63
71
|
kailash/middleware/core/__init__.py,sha256=4yQkOWC4b88zSogs1YVqtKG1PugbncqNCwNNWxTdIZA,545
|
@@ -73,14 +81,14 @@ kailash/middleware/database/models.py,sha256=CJwwUEdgxqBteXqpFJr1tWskjypJxViZXjO
|
|
73
81
|
kailash/middleware/database/repositories.py,sha256=7l2OcAem5sMQxbbnmBR4O22P-OcLv5zEo-4r9fIMl1o,23340
|
74
82
|
kailash/middleware/database/session_manager.py,sha256=Pzj7c2TZnM3GRty2igSaxmLOf0-Fs67NVe2Q5lR_C-Q,379
|
75
83
|
kailash/middleware/gateway/__init__.py,sha256=3R7HkvAadJKYCkDHEXFnOPHJ6yzdj8HpBOHtafStqSE,588
|
76
|
-
kailash/middleware/gateway/checkpoint_manager.py,sha256=
|
84
|
+
kailash/middleware/gateway/checkpoint_manager.py,sha256=zF2ZnHYxQwXmG3d5g7Qwx9pW8tDRTcqV9yh8dvhY95E,15056
|
77
85
|
kailash/middleware/gateway/deduplicator.py,sha256=CblV3fwc7s4wg6KIvypwyNMYL5AuQi9EwtcxVOy64X8,13265
|
78
86
|
kailash/middleware/gateway/durable_gateway.py,sha256=EsIgMNxS_no2W40AXDyE7FmVdnGNU26kBRC5rfnSzoQ,14626
|
79
87
|
kailash/middleware/gateway/durable_request.py,sha256=SCnp-bF0tQX9oahr9reqcZjJ_YhyJkeYYl-un9rJ6lo,15437
|
80
|
-
kailash/middleware/gateway/event_store.py,sha256=
|
88
|
+
kailash/middleware/gateway/event_store.py,sha256=A3Kh2MhVVPbXWvjeo550SqEGPiJYyspAfu6Gv7UZzo4,16131
|
81
89
|
kailash/middleware/mcp/__init__.py,sha256=EdZB8zOMSBEEmudRzs8ksz9QZJYWQMEx7Tm1MOwIWnI,922
|
82
90
|
kailash/middleware/mcp/client_integration.py,sha256=opzhB5TUts_ND8gARXh93nKCc1u4kwo6SqNMMWqMcSU,18258
|
83
|
-
kailash/middleware/mcp/enhanced_server.py,sha256=
|
91
|
+
kailash/middleware/mcp/enhanced_server.py,sha256=XUjQt0KyRX207FVYAFenkYHa_K8FWWKquROgXQWkoOQ,18453
|
84
92
|
kailash/nodes/__init__.py,sha256=E6CEp1ooq4GgFhKtwVAczOhPt5N3x-AVQ-R0n3_IFyA,936
|
85
93
|
kailash/nodes/base.py,sha256=Fu9c2I5k_Ke192y4fj2NVhf-Y_I0nPr0sDE1zMSRCJY,55417
|
86
94
|
kailash/nodes/base_async.py,sha256=mpntaeFMbUYLIyTvjsb221mXckx_H2dGX2LhxeKhhfA,6569
|
@@ -90,19 +98,22 @@ kailash/nodes/mixins.py,sha256=ncAdNQPe1sphLByeerP6G_s8mjFLt7dM4baiozzIBPA,12083
|
|
90
98
|
kailash/nodes/validation.py,sha256=tuBZRZkDiEdvfeU7JaRB7v2-j1vxPYMJ1gVaJ-PKHRk,12117
|
91
99
|
kailash/nodes/admin/__init__.py,sha256=C9_pK2w0rH6JEV_-roypeasAIyIhEFKKnH-npGBeew0,1508
|
92
100
|
kailash/nodes/admin/audit_log.py,sha256=CSSeWwAK-_hGYXs8eess89wNVju8jvsdNKA1A1946to,41066
|
93
|
-
kailash/nodes/admin/permission_check.py,sha256=
|
101
|
+
kailash/nodes/admin/permission_check.py,sha256=tLz6aGmNp1xV44Wfy_F1RgvGU4te9qzhNOAEpGo9fdU,66564
|
94
102
|
kailash/nodes/admin/role_management.py,sha256=DVkFJU5yQRf_1TxlvmQBhHzCeE5oJQzIjCKjrEfZb1g,72894
|
103
|
+
kailash/nodes/admin/schema.sql,sha256=50V-0NoQmYg66KYVE6rAJxx7LSacCVYs2UvvA1Y9zF0,14028
|
95
104
|
kailash/nodes/admin/schema_manager.py,sha256=U8W8Xn4H5wamEtSq-I9jh54tWQnrLo4vZDKdX3K4bKs,15073
|
96
105
|
kailash/nodes/admin/security_event.py,sha256=We_nGn6_J004b7LQVd0nKU6LmhJ6vyrl5zySC3xVdfo,56336
|
97
|
-
kailash/nodes/admin/
|
106
|
+
kailash/nodes/admin/tenant_isolation.py,sha256=jztFmChohj4ZpwAUdM_z2tKYcFopFtCJ2ViXnlMuvzA,8270
|
107
|
+
kailash/nodes/admin/transaction_utils.py,sha256=La3BLwT2XrYtKesiFRGEYL0dXop6JM5TqPUHLx5DYVs,7884
|
108
|
+
kailash/nodes/admin/user_management.py,sha256=6u0iMyFKvb_zyaQdiKuGemQM65gEeax9wwEjoadb4Ro,54623
|
98
109
|
kailash/nodes/ai/__init__.py,sha256=rslxIS8jlovshiNgWqVzQjD_kfT_3h3Ct03sk-iRe6U,2202
|
99
110
|
kailash/nodes/ai/a2a.py,sha256=QpTPl-Cm6mqzM0unLfqPrgEu964QP47g5p2T4clVPMs,70004
|
100
111
|
kailash/nodes/ai/agents.py,sha256=CRA3cdapQjpuvOniXUh6ZVWAlRxUIepVw1BROW6QzdY,20373
|
101
|
-
kailash/nodes/ai/ai_providers.py,sha256=
|
112
|
+
kailash/nodes/ai/ai_providers.py,sha256=XeDIaYH7PrX8frWCVV6CYFNQXFjHX_61T3eR1yullqs,65355
|
102
113
|
kailash/nodes/ai/embedding_generator.py,sha256=rsos3B6oWrgGTMIbwSWIBzGH9kq3SFVD_-bEDrujBRs,31860
|
103
114
|
kailash/nodes/ai/intelligent_agent_orchestrator.py,sha256=xw44C-CkcNH3SVmEJ49o4oNV3o4ZqjLE9aLpggwoIXs,83021
|
104
115
|
kailash/nodes/ai/iterative_llm_agent.py,sha256=pv54W_YDfDPDl6DJf0ul9_rs2mL2kE_C59sSAJ4CRn8,52884
|
105
|
-
kailash/nodes/ai/llm_agent.py,sha256
|
116
|
+
kailash/nodes/ai/llm_agent.py,sha256=-E95jRYZMJzZz7Y4jh4HYHmx7Hoid5ZvZqcEP-OsHqE,82177
|
106
117
|
kailash/nodes/ai/models.py,sha256=wsEeUTuegy87mnLtKgSTg7ggCXvC1n3MsL-iZ4qujHs,16393
|
107
118
|
kailash/nodes/ai/self_organizing.py,sha256=M7yCLkN4I1JCNU7PWuwrqwQSlaG9MJVxYIR44TV52MM,62877
|
108
119
|
kailash/nodes/ai/vision_utils.py,sha256=OHD9cVH_mq0WpJyQkNTj_mpipIVWfSV_bF9eA6CdyeA,4166
|
@@ -137,14 +148,16 @@ kailash/nodes/data/async_vector.py,sha256=HtwQLO25IXu8Vq80qzU8rMkUAKPQ2qM0x8YxjX
|
|
137
148
|
kailash/nodes/data/directory.py,sha256=fbfLqD_ijRubk-4xew3604QntPsyDxqaF4k6TpfyjDg,9923
|
138
149
|
kailash/nodes/data/event_generation.py,sha256=Bc1se0tPg1IAGCQDrWqlFmgoOpUyfMN9ku4Lm3akhXU,11579
|
139
150
|
kailash/nodes/data/file_discovery.py,sha256=njLLusndwBFwbaWP8rcaiE0UQ49RpDlNQ-3SXH7Jhi4,21733
|
151
|
+
kailash/nodes/data/query_pipeline.py,sha256=qX9QdszpMyjTRrljFLtcY_CytSJRDTpGjt4DhwAdPlk,21710
|
152
|
+
kailash/nodes/data/query_router.py,sha256=HExyJlOoz4p5gCYh1zonlFls4Y0r19VvM2TjRztzmqg,32005
|
140
153
|
kailash/nodes/data/readers.py,sha256=fX82yQSLGPUFbSf6krT_-9gybp6IBnBH-Lcr87aNlHQ,45962
|
141
154
|
kailash/nodes/data/retrieval.py,sha256=H8Qb2R64fQ_OeaQBh6jVn7-xLuygiF3fjzbh4ssNOrU,20591
|
142
155
|
kailash/nodes/data/sharepoint_graph.py,sha256=J1_KZQ5s8yXkjGY1PjsMY7T8viKARi3os5P8CXpmn2U,37160
|
143
156
|
kailash/nodes/data/sources.py,sha256=tvgDDDerWELD6QkAm73ciKmNakD_SYMd50idlOjpbF0,3632
|
144
|
-
kailash/nodes/data/sql.py,sha256=
|
157
|
+
kailash/nodes/data/sql.py,sha256=0VfOedQ6UwSiBJtwmMLhAvqQWeakrnB1QNrhjan5jIg,35288
|
145
158
|
kailash/nodes/data/streaming.py,sha256=VE4e3CNuRAdjckV8UXFpkTj3mPLY2cicoZwnkq10ZnE,37163
|
146
159
|
kailash/nodes/data/vector_db.py,sha256=pwCl-3tyk_Cv_VQ8GafgodJ1yM88W1BXCIcYC56XoqU,32056
|
147
|
-
kailash/nodes/data/workflow_connection_pool.py,sha256=
|
160
|
+
kailash/nodes/data/workflow_connection_pool.py,sha256=o-c-gu4HRtD0i7G6eCLZuOVB4CDJMOXFuL5CbXipZtk,40284
|
148
161
|
kailash/nodes/data/writers.py,sha256=-RPLetKhKAPXOU6YPwMkVRXF8by6ROhgICm3aUnGcFs,17537
|
149
162
|
kailash/nodes/enterprise/__init__.py,sha256=1a6SsEnzozP4MSFDo-Yimzx-e65NwnmGeTDMammSrtk,407
|
150
163
|
kailash/nodes/enterprise/batch_processor.py,sha256=wA9AtBC_roLF040zoFSBo7wqdE2KFWvVLMIRBBR2_cY,27170
|
@@ -159,9 +172,10 @@ kailash/nodes/mixins/__init__.py,sha256=0WYfu5kj-lHbFwP9g5vmlbsG8UzvI-vhOyHMEUzX
|
|
159
172
|
kailash/nodes/mixins/event_emitter.py,sha256=xTeNrBWmuWIf8qYA5DZekymjjrTAD1sboW9dKbAP40w,7492
|
160
173
|
kailash/nodes/mixins/mcp.py,sha256=HSULx66VY-e8h5R4HjcNDI5pPVq3MN9HxD8T9FI9vRo,7040
|
161
174
|
kailash/nodes/mixins/security.py,sha256=oxIwfKHd6Sdmd2GIaoNkRcSzVHUusYKyGNA7rM61fvw,5534
|
162
|
-
kailash/nodes/monitoring/__init__.py,sha256=
|
175
|
+
kailash/nodes/monitoring/__init__.py,sha256=FvNERJPXZbIDeeBGhfhG6L4Q0WV2ritdhIsrig8rfko,164
|
176
|
+
kailash/nodes/monitoring/connection_dashboard.py,sha256=mvrBt081SGZ8xNrc_8kdTFQcphxBHUVAPf8xrW4z-3o,29074
|
163
177
|
kailash/nodes/monitoring/performance_benchmark.py,sha256=KPDjsoSZ1TT0Z1teITDdSbdpYXvyJUoPzgsVWdzQybs,87637
|
164
|
-
kailash/nodes/rag/__init__.py,sha256=
|
178
|
+
kailash/nodes/rag/__init__.py,sha256=3UdByxZHfz2jtrYtUKYcffYdc9Xtd7skoUbKsA2vtfA,8660
|
165
179
|
kailash/nodes/rag/advanced.py,sha256=oPcdS8i4yscJ3NCkwQjv9KCwNhmC_5tp8JZ1_XPQY4I,60265
|
166
180
|
kailash/nodes/rag/agentic.py,sha256=6jmUJphKPYXRH7P3K5fPPFuKy1BYfkgR7Mmkv8JvPaM,24153
|
167
181
|
kailash/nodes/rag/conversational.py,sha256=wmN4dArb1XBYYc2wm-FSDuykqbX8EfsHvA-FVEMjEa0,35498
|
@@ -196,10 +210,10 @@ kailash/resources/__init__.py,sha256=JM90kDB7k9wTsd6-2jwm-312SeOaXvavyKnPwQwy4PY
|
|
196
210
|
kailash/resources/factory.py,sha256=CYqBm3EFjTv_Aoqb3AUFT8emJlUrtwAZGCSVLt8K3KA,15824
|
197
211
|
kailash/resources/health.py,sha256=i6XS0HdL6pUYq8SBdRjvchf-oj0sy3JoRLszNylfQJc,9702
|
198
212
|
kailash/resources/reference.py,sha256=RKfXzJFIdid0cLOwsXSmlXq4NhSEci4GO-q3M3qcjA8,7526
|
199
|
-
kailash/resources/registry.py,sha256=
|
213
|
+
kailash/resources/registry.py,sha256=5978e9VcUq0XBi9LRN89swptBSOAOAyNmwe2pxFHMxM,13789
|
200
214
|
kailash/runtime/__init__.py,sha256=CvU-qBMESYYISqFOlYlLsYJrXJu0Gqr4x6yr4Ob_Rng,278
|
201
215
|
kailash/runtime/access_controlled.py,sha256=Td8Fa8oPxEqlb74bDiH_HtT6J-ku0AudvN7mrUZOacc,17219
|
202
|
-
kailash/runtime/async_local.py,sha256=
|
216
|
+
kailash/runtime/async_local.py,sha256=XJyJYWmsezZBmAB8Y8xfAbiytPaY1j_zYU_moABP-3E,30313
|
203
217
|
kailash/runtime/docker.py,sha256=sZknVl1PCGfAZeyc0-exTuKlllSyjYlFIgJoiB3CRNs,23500
|
204
218
|
kailash/runtime/local.py,sha256=i2hnRrk2Ks0Q5jR9SkBhM6d6plJbpH0i7rNkJ8laLCw,39078
|
205
219
|
kailash/runtime/parallel.py,sha256=mz_wPD13-YVc3Q_8HkOs4nPQPdTjnjCcnRL7ZRM70lo,21070
|
@@ -220,7 +234,7 @@ kailash/tracking/storage/base.py,sha256=wWkK1XdrMV0EGxlbFDyfuVnDoIG0tdSPPwz_8iwz
|
|
220
234
|
kailash/tracking/storage/database.py,sha256=O3-qYmgwTccq9jYl25C0L6R398pXPsWkIAoWLL1aZvQ,20048
|
221
235
|
kailash/tracking/storage/filesystem.py,sha256=VhWxNvqf_Ta3mIaGqKuOrcCqQiEvJj7S8NK5yRd1V68,19627
|
222
236
|
kailash/utils/__init__.py,sha256=pFKhHJxU_kyFE9aGT5recw5E-3nbfVF5pMHepBJWB2E,253
|
223
|
-
kailash/utils/export.py,sha256=
|
237
|
+
kailash/utils/export.py,sha256=WBazN03LOCI03TsIElNv31wSZ_uTLPl8THnqdohgyTk,37361
|
224
238
|
kailash/utils/resource_manager.py,sha256=xMgcSogLofUIRpRMXzmK4gxBi2lIqEJ7rn2rsBBm9xo,13209
|
225
239
|
kailash/utils/secure_logging.py,sha256=3iEJt7sXnIgvdiRz8qsx0JbcygrsUf0_C8UHFXLNfcs,11325
|
226
240
|
kailash/utils/templates.py,sha256=1O9mniUTJmZZFkC1gFaWy73pDIZxcawljDIQpPj6G9Q,21977
|
@@ -236,7 +250,7 @@ kailash/visualization/reports.py,sha256=D7kJ0flHr16d-qSEq8vnw20N8u_dgTrXtKVSXVm8
|
|
236
250
|
kailash/workflow/__init__.py,sha256=DDQDE9K6RmbX6479guNLLgjiVVV-gQERRvCEJWSVlsM,1836
|
237
251
|
kailash/workflow/async_builder.py,sha256=iv8bDJHdWAUZ77SyMo6sucd92dTdtXesdxycrSE7mM4,20613
|
238
252
|
kailash/workflow/async_patterns.py,sha256=X0ZDXwr6UAu0WC1xnCB7-0V1-tRbKs9UI4JqaBCB6tE,22824
|
239
|
-
kailash/workflow/builder.py,sha256=
|
253
|
+
kailash/workflow/builder.py,sha256=FTzvso-FWVAcPYs2DOvL3CSEvbxaVbMP3L2T8_wtzbM,12356
|
240
254
|
kailash/workflow/convergence.py,sha256=vfIDR-uNaQE-LVUEzrRtfgKPgX9gL0nLNH-nTg5ra-c,10031
|
241
255
|
kailash/workflow/cycle_analyzer.py,sha256=BGBpgdB-g0-KRI65sVAvHV4lxfoCzMt4uKOHbw8GXT4,32596
|
242
256
|
kailash/workflow/cycle_builder.py,sha256=uWAx8K4ZKMtFC3mWylK4gHT03xeu0xChJlhw50hVqEE,20883
|
@@ -246,7 +260,7 @@ kailash/workflow/cycle_exceptions.py,sha256=4_OLnbEXqIiXKzOc3uh8DzFik4wEHwl8bRZh
|
|
246
260
|
kailash/workflow/cycle_profiler.py,sha256=aEWSCm0Xy15SjgLTpPooVJMzpFhtJWt4livR-3Me4N8,28547
|
247
261
|
kailash/workflow/cycle_state.py,sha256=hzRUvciRreWfS56Cf7ZLQPit_mlPTQDoNTawh8yi-2s,10747
|
248
262
|
kailash/workflow/cyclic_runner.py,sha256=NZqK_GTNbvf-pp08_brvzOlDCytrKscr1XRDy8PD8Is,40816
|
249
|
-
kailash/workflow/graph.py,sha256=
|
263
|
+
kailash/workflow/graph.py,sha256=zRpGLXeuwtuxFBvE7_16c_bB9yqZirM_uwtfD1_MY4g,59272
|
250
264
|
kailash/workflow/mermaid_visualizer.py,sha256=UsQDvxgIAhy-Th7ZzFnbuziaTx1Cd5yUh6S_25DffoQ,22294
|
251
265
|
kailash/workflow/migration.py,sha256=zsmXgbUtOZdjoOx9YoEY0-x7uOY1T-_yQo4MnZjokCQ,31487
|
252
266
|
kailash/workflow/mock_registry.py,sha256=J4gyH8YdhRyhvORDVxGTya0FgDK8iAA8Nonur6p9s-o,1692
|
@@ -254,12 +268,12 @@ kailash/workflow/resilience.py,sha256=Ecef4gBg-QWP369a_xfzQnVWhHryvEcO2RSFVSriLJ
|
|
254
268
|
kailash/workflow/runner.py,sha256=l6jb-H7DwbRlvQ3H3SuTs70rut-u7H3Gi8nybKCEjZU,10795
|
255
269
|
kailash/workflow/safety.py,sha256=pS5GKu7UdkzFZcb16Dn-0jBxjULDU-59_M0CbUVMVyw,11298
|
256
270
|
kailash/workflow/state.py,sha256=UTZxs5-Ona6uvBhx1__i6-RX8gB4qazkBIWE7uyRmWQ,7600
|
257
|
-
kailash/workflow/templates.py,sha256=
|
271
|
+
kailash/workflow/templates.py,sha256=98EN5H4fO9b4xeczk20Hu5L8hNcAuRQNGayT6vnZYCw,48540
|
258
272
|
kailash/workflow/validation.py,sha256=JIbIajWVIaWHSvWtgZ4WUVJaBaUOCz5B9cyTwM--dL4,33060
|
259
273
|
kailash/workflow/visualization.py,sha256=ICMWCWqh5fOQ7eJygbvu2PMWHxe-H5_0epwdZuz8cMw,19737
|
260
|
-
kailash-0.6.
|
261
|
-
kailash-0.6.
|
262
|
-
kailash-0.6.
|
263
|
-
kailash-0.6.
|
264
|
-
kailash-0.6.
|
265
|
-
kailash-0.6.
|
274
|
+
kailash-0.6.2.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
|
275
|
+
kailash-0.6.2.dist-info/METADATA,sha256=lksSZ5ngxdJDTik-awxRlqV87v3BoZe82PPS6biRnww,25925
|
276
|
+
kailash-0.6.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
277
|
+
kailash-0.6.2.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
|
278
|
+
kailash-0.6.2.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
|
279
|
+
kailash-0.6.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|