kailash 0.1.4__py3-none-any.whl → 0.1.5__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.
@@ -7,8 +7,117 @@ from kailash.nodes.base import Node, NodeParameter, register_node
7
7
 
8
8
 
9
9
  @register_node()
10
- class Filter(Node):
11
- """Filters data based on a condition."""
10
+ class FilterNode(Node):
11
+ """
12
+ Filters data based on configurable conditions and operators.
13
+
14
+ This node provides flexible data filtering capabilities for lists and collections,
15
+ supporting various comparison operators and field-based filtering for structured
16
+ data. It's designed to work seamlessly in data processing pipelines, reducing
17
+ datasets to items that match specific criteria.
18
+
19
+ Design Philosophy:
20
+ The FilterNode embodies the principle of "declarative data selection." Rather
21
+ than writing custom filtering code, users declare their filtering criteria
22
+ through simple configuration. The design supports both simple value filtering
23
+ and complex field-based filtering for dictionaries, making it versatile for
24
+ various data structures.
25
+
26
+ Upstream Dependencies:
27
+ - Data source nodes providing lists to filter
28
+ - Transform nodes producing structured data
29
+ - Aggregation nodes generating collections
30
+ - API nodes returning result sets
31
+ - File readers loading datasets
32
+
33
+ Downstream Consumers:
34
+ - Processing nodes working with filtered subsets
35
+ - Aggregation nodes summarizing filtered data
36
+ - Writer nodes exporting filtered results
37
+ - Visualization nodes displaying subsets
38
+ - Decision nodes based on filter results
39
+
40
+ Configuration:
41
+ The node supports flexible filtering options:
42
+ - Field selection for dictionary filtering
43
+ - Multiple comparison operators
44
+ - Type-aware comparisons
45
+ - Null value handling
46
+ - String contains operations
47
+
48
+ Implementation Details:
49
+ - Handles lists of any type (dicts, primitives, objects)
50
+ - Type coercion for numeric comparisons
51
+ - Null-safe operations
52
+ - String conversion for contains operator
53
+ - Preserves original data structure
54
+ - Zero-copy filtering (returns references)
55
+
56
+ Error Handling:
57
+ - Graceful handling of type mismatches
58
+ - Null value comparison logic
59
+ - Empty data returns empty result
60
+ - Invalid field names return no matches
61
+ - Operator errors fail safely
62
+
63
+ Side Effects:
64
+ - No side effects (pure function)
65
+ - Does not modify input data
66
+ - Returns new filtered list
67
+
68
+ Examples:
69
+ >>> # Filter list of numbers
70
+ >>> filter_node = FilterNode()
71
+ >>> result = filter_node.run(
72
+ ... data=[1, 2, 3, 4, 5],
73
+ ... operator=">",
74
+ ... value=3
75
+ ... )
76
+ >>> assert result["filtered_data"] == [4, 5]
77
+ >>>
78
+ >>> # Filter list of dictionaries by field
79
+ >>> users = [
80
+ ... {"name": "Alice", "age": 30},
81
+ ... {"name": "Bob", "age": 25},
82
+ ... {"name": "Charlie", "age": 35}
83
+ ... ]
84
+ >>> result = filter_node.run(
85
+ ... data=users,
86
+ ... field="age",
87
+ ... operator=">=",
88
+ ... value=30
89
+ ... )
90
+ >>> assert len(result["filtered_data"]) == 2
91
+ >>> assert result["filtered_data"][0]["name"] == "Alice"
92
+ >>>
93
+ >>> # String contains filtering
94
+ >>> items = [
95
+ ... {"title": "Python Programming"},
96
+ ... {"title": "Java Development"},
97
+ ... {"title": "Python for Data Science"}
98
+ ... ]
99
+ >>> result = filter_node.run(
100
+ ... data=items,
101
+ ... field="title",
102
+ ... operator="contains",
103
+ ... value="Python"
104
+ ... )
105
+ >>> assert len(result["filtered_data"]) == 2
106
+ >>>
107
+ >>> # Null value handling
108
+ >>> data_with_nulls = [
109
+ ... {"value": 10},
110
+ ... {"value": None},
111
+ ... {"value": 20}
112
+ ... ]
113
+ >>> result = filter_node.run(
114
+ ... data=data_with_nulls,
115
+ ... field="value",
116
+ ... operator="!=",
117
+ ... value=None
118
+ ... )
119
+ >>> assert len(result["filtered_data"]) == 2
120
+ """
12
121
 
13
122
  def get_parameters(self) -> Dict[str, NodeParameter]:
14
123
  return {
@@ -67,8 +176,10 @@ class Filter(Node):
67
176
  try:
68
177
  # Handle None values - they fail most comparisons
69
178
  if item_value is None:
70
- if operator in ["==", "!="]:
71
- return (operator == "==") == (compare_value is None)
179
+ if operator == "==":
180
+ return compare_value is None
181
+ elif operator == "!=":
182
+ return compare_value is not None
72
183
  else:
73
184
  return False # None fails all other comparisons
74
185
 
@@ -379,3 +490,7 @@ class Sort(Node):
379
490
  sorted_data = sorted(data, reverse=reverse)
380
491
 
381
492
  return {"sorted_data": sorted_data}
493
+
494
+
495
+ # Backward compatibility aliases
496
+ Filter = FilterNode
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kailash
3
- Version: 0.1.4
3
+ Version: 0.1.5
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
@@ -92,6 +92,8 @@ Dynamic: requires-python
92
92
  - 🧠 **Retrieval-Augmented Generation**: Full RAG pipeline with intelligent document processing
93
93
  - 🌐 **REST API Wrapper**: Expose any workflow as a production-ready API in 3 lines
94
94
  - 🚪 **Multi-Workflow Gateway**: Manage multiple workflows through unified API with MCP integration
95
+ - 🤖 **Self-Organizing Agents**: Autonomous agent pools with intelligent team formation and convergence detection
96
+ - 🧠 **Agent-to-Agent Communication**: Shared memory pools and intelligent caching for coordinated multi-agent systems
95
97
 
96
98
  ## 🎯 Who Is This For?
97
99
 
@@ -410,6 +412,173 @@ gateway.run(port=8000)
410
412
 
411
413
  See the [Gateway examples](examples/integration_examples/gateway_comprehensive_demo.py) for complete implementation patterns.
412
414
 
415
+ ### Self-Organizing Agent Pools - Autonomous Multi-Agent Systems
416
+
417
+ Build intelligent agent systems that can autonomously form teams, share information, and solve complex problems collaboratively:
418
+
419
+ ```python
420
+ from kailash import Workflow
421
+ from kailash.runtime import LocalRuntime
422
+ from kailash.nodes.ai.intelligent_agent_orchestrator import (
423
+ OrchestrationManagerNode,
424
+ IntelligentCacheNode,
425
+ ConvergenceDetectorNode
426
+ )
427
+ from kailash.nodes.ai.self_organizing import (
428
+ AgentPoolManagerNode,
429
+ TeamFormationNode,
430
+ ProblemAnalyzerNode
431
+ )
432
+ from kailash.nodes.ai.a2a import SharedMemoryPoolNode, A2AAgentNode
433
+
434
+ # Create self-organizing agent workflow
435
+ workflow = Workflow("self_organizing_research")
436
+
437
+ # Shared infrastructure
438
+ memory_pool = SharedMemoryPoolNode(
439
+ memory_size_limit=1000,
440
+ attention_window=50
441
+ )
442
+ workflow.add_node("memory", memory_pool)
443
+
444
+ # Intelligent caching to prevent redundant operations
445
+ cache = IntelligentCacheNode(
446
+ ttl=3600, # 1 hour cache
447
+ similarity_threshold=0.8,
448
+ max_entries=1000
449
+ )
450
+ workflow.add_node("cache", cache)
451
+
452
+ # Problem analysis and team formation
453
+ problem_analyzer = ProblemAnalyzerNode()
454
+ team_former = TeamFormationNode(
455
+ formation_strategy="capability_matching",
456
+ optimization_rounds=3
457
+ )
458
+ workflow.add_node("analyzer", problem_analyzer)
459
+ workflow.add_node("team_former", team_former)
460
+
461
+ # Self-organizing agent pool
462
+ pool_manager = AgentPoolManagerNode(
463
+ max_active_agents=20,
464
+ agent_timeout=120
465
+ )
466
+ workflow.add_node("pool", pool_manager)
467
+
468
+ # Convergence detection for stopping criteria
469
+ convergence = ConvergenceDetectorNode(
470
+ quality_threshold=0.85,
471
+ improvement_threshold=0.02,
472
+ max_iterations=10
473
+ )
474
+ workflow.add_node("convergence", convergence)
475
+
476
+ # Orchestration manager coordinates the entire system
477
+ orchestrator = OrchestrationManagerNode(
478
+ max_iterations=10,
479
+ quality_threshold=0.85,
480
+ parallel_execution=True
481
+ )
482
+ workflow.add_node("orchestrator", orchestrator)
483
+
484
+ # Execute with complex business problem
485
+ runtime = LocalRuntime()
486
+ result, _ = runtime.execute(workflow, parameters={
487
+ "orchestrator": {
488
+ "query": "Analyze market trends and develop growth strategy for fintech",
489
+ "agent_pool_size": 12,
490
+ "mcp_servers": [
491
+ {"name": "market_data", "command": "python", "args": ["-m", "market_mcp"]},
492
+ {"name": "financial", "command": "python", "args": ["-m", "finance_mcp"]},
493
+ {"name": "research", "command": "python", "args": ["-m", "research_mcp"]}
494
+ ],
495
+ "context": {
496
+ "domain": "fintech",
497
+ "depth": "comprehensive",
498
+ "output_format": "strategic_report"
499
+ }
500
+ }
501
+ })
502
+
503
+ print(f"Solution Quality: {result['orchestrator']['quality_score']:.2%}")
504
+ print(f"Agents Used: {result['orchestrator']['agents_deployed']}")
505
+ print(f"Iterations: {result['orchestrator']['iterations_completed']}")
506
+ print(f"Final Strategy: {result['orchestrator']['final_solution']['strategy']}")
507
+ ```
508
+
509
+ #### Key Self-Organizing Features
510
+
511
+ - **Autonomous Team Formation**: Agents automatically form optimal teams based on:
512
+ - Capability matching for skill-specific tasks
513
+ - Swarm-based formation for exploration
514
+ - Market-based allocation for resource constraints
515
+ - Hierarchical organization for complex problems
516
+
517
+ - **Intelligent Information Sharing**:
518
+ - **SharedMemoryPoolNode**: Selective attention mechanisms for relevant information
519
+ - **IntelligentCacheNode**: Semantic similarity detection prevents redundant operations
520
+ - **A2AAgentNode**: Direct agent-to-agent communication with context awareness
521
+
522
+ - **Convergence Detection**: Automatic termination when:
523
+ - Solution quality exceeds threshold (e.g., 85% confidence)
524
+ - Improvement rate drops below minimum (e.g., <2% per iteration)
525
+ - Maximum iterations reached
526
+ - Time limits exceeded
527
+
528
+ - **MCP Integration**: Agents can access external tools and data sources:
529
+ - File systems, databases, APIs
530
+ - Web scraping and research tools
531
+ - Specialized domain knowledge bases
532
+ - Real-time data streams
533
+
534
+ - **Performance Optimization**:
535
+ - Multi-level caching strategies
536
+ - Parallel agent execution
537
+ - Resource management and monitoring
538
+ - Cost tracking for API usage
539
+
540
+ See the [Self-Organizing Agents examples](examples/integration_examples/) for complete implementation patterns and the [Agent Systems Guide](docs/guides/self_organizing_agents.rst) for detailed documentation.
541
+
542
+ ### Zero-Code MCP Ecosystem - Visual Workflow Builder
543
+
544
+ Build and deploy workflows through an interactive web interface without writing any code:
545
+
546
+ ```python
547
+ from kailash.api.gateway import WorkflowAPIGateway
548
+ from kailash.api.mcp_integration import MCPServerRegistry
549
+
550
+ # Run the MCP ecosystem demo
551
+ # cd examples/integration_examples
552
+ # ./run_ecosystem.sh
553
+
554
+ # Or run programmatically:
555
+ python examples/integration_examples/mcp_ecosystem_demo.py
556
+ ```
557
+
558
+ #### Features
559
+
560
+ - **Drag-and-Drop Builder**: Visual interface for creating workflows
561
+ - Drag nodes from palette (CSV Reader, Python Code, JSON Writer, etc.)
562
+ - Drop onto canvas to build workflows
563
+ - Deploy with one click
564
+
565
+ - **Live Dashboard**: Real-time monitoring and statistics
566
+ - Connected MCP server status
567
+ - Running workflow count
568
+ - Execution logs with timestamps
569
+
570
+ - **Pre-built Templates**: One-click deployment
571
+ - GitHub → Slack Notifier
572
+ - Data Processing Pipeline (CSV → Transform → JSON)
573
+ - AI Research Assistant
574
+
575
+ - **Technology Stack**: Lightweight and fast
576
+ - Backend: FastAPI + Kailash SDK
577
+ - Frontend: Vanilla HTML/CSS/JavaScript (no frameworks)
578
+ - Zero build process required
579
+
580
+ See the [MCP Ecosystem example](examples/integration_examples/) for the complete zero-code workflow deployment platform.
581
+
413
582
  ## 📚 Documentation
414
583
 
415
584
  | Resource | Description |
@@ -471,6 +640,21 @@ The SDK includes a rich set of pre-built nodes for common operations:
471
640
  - `SentimentAnalyzer` - Sentiment analysis
472
641
  - `NamedEntityRecognizer` - NER extraction
473
642
 
643
+ **Self-Organizing Agent Nodes**
644
+ - `SharedMemoryPoolNode` - Agent memory sharing
645
+ - `A2AAgentNode` - Agent-to-agent communication
646
+ - `A2ACoordinatorNode` - Multi-agent coordination
647
+ - `IntelligentCacheNode` - Semantic caching system
648
+ - `MCPAgentNode` - MCP-enabled agents
649
+ - `QueryAnalysisNode` - Query complexity analysis
650
+ - `OrchestrationManagerNode` - System orchestration
651
+ - `ConvergenceDetectorNode` - Solution convergence
652
+ - `AgentPoolManagerNode` - Agent pool management
653
+ - `ProblemAnalyzerNode` - Problem decomposition
654
+ - `TeamFormationNode` - Optimal team creation
655
+ - `SolutionEvaluatorNode` - Multi-criteria evaluation
656
+ - `SelfOrganizingAgentNode` - Adaptive individual agents
657
+
474
658
  </td>
475
659
  <td width="50%">
476
660
 
@@ -1104,7 +1288,7 @@ pre-commit run pytest-check
1104
1288
  <td width="40%">
1105
1289
 
1106
1290
  ### ✅ Completed
1107
- - Core node system with 15+ node types
1291
+ - Core node system with 66+ node types
1108
1292
  - Workflow builder with DAG validation
1109
1293
  - Local & async execution engines
1110
1294
  - Task tracking with metrics
@@ -1115,6 +1299,11 @@ pre-commit run pytest-check
1115
1299
  - API integration with rate limiting
1116
1300
  - OAuth 2.0 authentication
1117
1301
  - SharePoint Graph API integration
1302
+ - **Self-organizing agent pools with 13 specialized nodes**
1303
+ - **Agent-to-agent communication and shared memory**
1304
+ - **Intelligent caching and convergence detection**
1305
+ - **MCP integration for external tool access**
1306
+ - **Multi-strategy team formation algorithms**
1118
1307
  - **Real-time performance metrics collection**
1119
1308
  - **Performance visualization dashboards**
1120
1309
  - **Real-time monitoring dashboard with WebSocket streaming**
@@ -11,22 +11,25 @@ kailash/cli/commands.py,sha256=K5slsaoYSw7ZpVgePvobN6K4w9_dXJugBTIY0aifKik,18236
11
11
  kailash/nodes/__init__.py,sha256=dy36thqtYzTWkyLpmV93e7G0RXslzCtByLZvib4WYPM,564
12
12
  kailash/nodes/base.py,sha256=Q2gUtyFYQOtq9Y1blikLAm030Ccn-lWtIVp1Q8UNDhI,37823
13
13
  kailash/nodes/base_async.py,sha256=7tHM14qSxbZxbqCZeI-Ac4WR-NwpBPOLX5QUfW2HlBQ,4867
14
- kailash/nodes/ai/__init__.py,sha256=IzdC6n_02lSeCJlv-2mPVH0jPRf5GKHWtsK4ss6K5gI,1167
15
- kailash/nodes/ai/agents.py,sha256=oThnANX7r1SgCkfDAbdiN4On55h4qYBirKlPR05PUOc,15268
16
- kailash/nodes/ai/ai_providers.py,sha256=bPYUa7WGbGBufqqAQJ54QtdQTe-mNa4Ib-sVgwugHZg,44472
14
+ kailash/nodes/ai/__init__.py,sha256=Pct4gxsTFFbS37VWpQruGw8rA7n-Oqh4LUWGDpzdh50,2118
15
+ kailash/nodes/ai/a2a.py,sha256=_gs7avm16SjzvQ2Fw-BdMWjDbTuTUgDdmL4Ehzo9368,43595
16
+ kailash/nodes/ai/agents.py,sha256=yygZw8eJPt7iuRm4jZR-I2wtfIVrIH8OxoorgZ2HNrw,20379
17
+ kailash/nodes/ai/ai_providers.py,sha256=rtFOvsyUlcoD0voeiCHyBR7ELcRMfJa5T2T7wFyB5js,53026
17
18
  kailash/nodes/ai/embedding_generator.py,sha256=UZagRpoybTlV_LMCt0HMUuc1TYFh5yLfs38mqdLItEI,31846
19
+ kailash/nodes/ai/intelligent_agent_orchestrator.py,sha256=7fmvG_QA6Rpy56kR1MaTQOgON3TvEFbXx4srBqy_PIw,80518
18
20
  kailash/nodes/ai/llm_agent.py,sha256=wRNAiwzxJGcvC0_O-dqeNy7aZ_gmzvac0DLjBqS3vC8,46607
19
21
  kailash/nodes/ai/models.py,sha256=t90NvEIEJJxdBXwW0DhKACQG1Um-sJPm-lBdPBt8-ZA,16399
22
+ kailash/nodes/ai/self_organizing.py,sha256=BBjgVoXKKjMYLZoBW6diRqHsSZoPD63poce0tRv6lR4,60692
20
23
  kailash/nodes/api/__init__.py,sha256=1yFcWVYyc-bsilknBT5aAGV7jcp-Ysu_afRilNJlD0A,1529
21
24
  kailash/nodes/api/auth.py,sha256=cpHUIZ6-YFo3jkW0K4-eBP38EZCl7Lrfibg5XTZaPWo,19427
22
25
  kailash/nodes/api/graphql.py,sha256=PH1ccwbw-fsBfKHl8L_whkZSRMgGAPKM7kkLTmwci5s,16994
23
- kailash/nodes/api/http.py,sha256=6uJBurI9Jhcu1AWeo_KTj0KuSVw5kmlXRemHyEVjZyI,35104
26
+ kailash/nodes/api/http.py,sha256=XTkHmmVnGyvIqpNhmjUsRNuk-qYzvWdyF89cg5zHxI8,38396
24
27
  kailash/nodes/api/rate_limiting.py,sha256=f-cY_ee5juWHyKT3FqtaTk-SjEgMWX2DxU10Y41DZG4,19728
25
- kailash/nodes/api/rest.py,sha256=_Z7aoCIaG3l2wz8W3q8KxEzGpJTovfRXx8v0o4Llefk,39589
28
+ kailash/nodes/api/rest.py,sha256=yRLcNuIGVq5Nc1z759tc3Nqt3c2d7UnMqE7lZ8tVKMM,43357
26
29
  kailash/nodes/code/__init__.py,sha256=L3QBfnITPb6v-Wbq2ezNWt8xDlC4uGaTgrkqIJ9vGKU,1191
27
30
  kailash/nodes/code/python.py,sha256=HD1a8sIR6yTTjlm6B7x_fzBOqUE8QU_ybBz1lMrEVpY,35536
28
31
  kailash/nodes/data/__init__.py,sha256=dIPx7Dfk3ZQ_SZvU4qYhAtYMTDCj4DeeXOSqMMW92mI,4107
29
- kailash/nodes/data/readers.py,sha256=U1-3QuIvm6LWZp7YZnLQGjoHQAPD24yqXrRInxp6Sq0,16462
32
+ kailash/nodes/data/readers.py,sha256=_tAxmOsSGLph91Zwj9R98SGSui9K0hd4JinsXQyJyrM,18816
30
33
  kailash/nodes/data/retrieval.py,sha256=ANQXk0h5QI_NX_VdgABJEHbKWI3wtiRXCNgoap27M04,7516
31
34
  kailash/nodes/data/sharepoint_graph.py,sha256=UIyy8Q-9bGTzj-hjcxne8DkBJvr6Eig1HgY1JqGZqss,22437
32
35
  kailash/nodes/data/sources.py,sha256=MaXFPSDg4VN7TN5iNMZxwhxgj6nNpH43tQYmkxhHxjE,3638
@@ -35,17 +38,17 @@ kailash/nodes/data/streaming.py,sha256=OAME3quVU9NbQFMBM6X-Yiri8Q5WGlEi91U4oGs78
35
38
  kailash/nodes/data/vector_db.py,sha256=rywRU65g7ou9v1QPSZmC5esnqC-O0DezGOJS37wKdJs,30556
36
39
  kailash/nodes/data/writers.py,sha256=5tv0Qf-Wjhsd03epDUafvlTTLd5Q1NeCYaR-hQfIeJU,16981
37
40
  kailash/nodes/logic/__init__.py,sha256=kP24cdxLPdguL1a2GkTkP_bp_mU7MbhveeMLm5-Y8oA,365
38
- kailash/nodes/logic/async_operations.py,sha256=AHjiogaiwYehKoWbtlTZoY_cAdbR4Lxl4kLGg0o1r-I,26247
39
- kailash/nodes/logic/operations.py,sha256=A8u-wQpaFfAUAsG4_RP8BrUuLZEDrawCD7ywiTjRZ-Y,20958
40
- kailash/nodes/logic/workflow.py,sha256=Gp-khyguNH7h0LFAO5QACiL_iLTZIhhgmdSc9fzbFwg,16704
41
+ kailash/nodes/logic/async_operations.py,sha256=WLV05FG3u02tuHNFbce-aYhiTL0s45fOrGQcvog3mLU,27512
42
+ kailash/nodes/logic/operations.py,sha256=EYZ6YGx0clCwt7dLadCICBDVaOEoF9D8LBVUUvpkAeI,21840
43
+ kailash/nodes/logic/workflow.py,sha256=xo5IS_dB3bz4ApaCOa0LZXkCoornCcBspQs2laA-eBQ,17178
41
44
  kailash/nodes/mcp/__init__.py,sha256=Ea1vtdGpVRGTL4QrRGsrh9mhKIprXFWWBN68E9ljqps,225
42
45
  kailash/nodes/mcp/client.py,sha256=YVJlfjnY-DzyxY3AqcgtNcSH5RPAcTUuR703R_SEiTg,20674
43
46
  kailash/nodes/mcp/resource.py,sha256=A5luATUYGNiO1ESXmaInpvuGrPwLOk6ioBw_tIhXB0M,24469
44
47
  kailash/nodes/mcp/server.py,sha256=jZEIA6xqvsboeqQGT3tn-26pu8y9R46VQOKUmSpxQPk,20836
45
- kailash/nodes/transform/__init__.py,sha256=cQhv6js_oal6_ZUcVjZuR-Y8ZC8tUHz47FRiGDHeFPA,529
48
+ kailash/nodes/transform/__init__.py,sha256=sIUk7XMEl3x_XKNiRIyVtHmbLRUa0jHj1fEuUyELT_s,584
46
49
  kailash/nodes/transform/chunkers.py,sha256=qh2wYq6bdo5qGoDRLrowDrpl4VinRO4hDOj05DOr3RY,2580
47
50
  kailash/nodes/transform/formatters.py,sha256=02T87cQ4nVJoUKV9spEBzKa1YxtbV_KurngbhnfkVao,3078
48
- kailash/nodes/transform/processors.py,sha256=WKPYjJAJ5gWiE7OmgJhMvY8yyGrBLsMJGBudeW--omU,14434
51
+ kailash/nodes/transform/processors.py,sha256=BZjDigpHD5pFxyZ0sty7-jpdEmD11euQip9N3U4Uzlw,18490
49
52
  kailash/runtime/__init__.py,sha256=jDdjbnUKyNnLx8Fc3fydaBERG2MuBN-NBvU_V2_4kmg,187
50
53
  kailash/runtime/async_local.py,sha256=h8NrwgXOEX-pgozPS1_TPLCrWeSorf0AqridKX1yI2w,12264
51
54
  kailash/runtime/docker.py,sha256=U0nU4fGTLA59H25mBDFC6EkTXry-5bwXkWUgRw1qBqc,23559
@@ -77,9 +80,9 @@ kailash/workflow/mock_registry.py,sha256=oweiPQ-mBuDdzTUbo3qZAW6OaBKNqST_1vX32xM
77
80
  kailash/workflow/runner.py,sha256=QATm4y7botMoOFltcHe8CreeUlobJX0M5nLHQ9usRgo,10839
78
81
  kailash/workflow/state.py,sha256=3vZkptVfPYqN-Q9aFwO2sUpmy-l1h5vIMVwh67uTwE4,7722
79
82
  kailash/workflow/visualization.py,sha256=gSMT-jaSzQBufV4mDArWVPJj5bpNIxTa_NE796Rm8I8,19536
80
- kailash-0.1.4.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
81
- kailash-0.1.4.dist-info/METADATA,sha256=4tL-7lac6fCtscYG2iYatqrRDdJlO7eRR7bYrI5bQvs,37351
82
- kailash-0.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- kailash-0.1.4.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
84
- kailash-0.1.4.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
85
- kailash-0.1.4.dist-info/RECORD,,
83
+ kailash-0.1.5.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
84
+ kailash-0.1.5.dist-info/METADATA,sha256=ypGNmh_M3h3OJq2Zfd3UpiYTLVPHe7XSe5MZlLKXnyY,44188
85
+ kailash-0.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
86
+ kailash-0.1.5.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
87
+ kailash-0.1.5.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
88
+ kailash-0.1.5.dist-info/RECORD,,