kailash 0.8.5__tar.gz → 0.8.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. {kailash-0.8.5/src/kailash.egg-info → kailash-0.8.6}/PKG-INFO +19 -17
  2. {kailash-0.8.5 → kailash-0.8.6}/README.md +18 -16
  3. {kailash-0.8.5 → kailash-0.8.6}/pyproject.toml +3 -3
  4. {kailash-0.8.5 → kailash-0.8.6}/setup.py +4 -4
  5. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/__init__.py +5 -5
  6. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/__init__.py +2 -1
  7. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/mcp_channel.py +23 -4
  8. kailash-0.8.6/src/kailash/cli/validate_imports.py +202 -0
  9. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/resilience/bulkhead.py +15 -5
  10. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/resilience/circuit_breaker.py +4 -1
  11. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/resilience/health_monitor.py +312 -84
  12. kailash-0.8.6/src/kailash/edge/migration/edge_migration_service.py +384 -0
  13. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/server.py +351 -8
  14. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/transports.py +305 -0
  15. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/event_store.py +1 -0
  16. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/base.py +77 -1
  17. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/code/python.py +44 -3
  18. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/async_sql.py +42 -20
  19. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/edge_migration_node.py +16 -12
  20. kailash-0.8.6/src/kailash/nodes/governance.py +410 -0
  21. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/registry.py +1 -1
  22. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/distributed_transaction_manager.py +48 -1
  23. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/saga_state_storage.py +2 -1
  24. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/validation.py +8 -8
  25. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/local.py +30 -0
  26. kailash-0.8.6/src/kailash/runtime/validation/__init__.py +12 -0
  27. kailash-0.8.6/src/kailash/runtime/validation/import_validator.py +446 -0
  28. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/validation/suggestion_engine.py +5 -5
  29. kailash-0.8.6/src/kailash/utils/data_paths.py +74 -0
  30. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/builder.py +183 -4
  31. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/mermaid_visualizer.py +3 -1
  32. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/templates.py +6 -6
  33. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/validation.py +134 -3
  34. {kailash-0.8.5 → kailash-0.8.6/src/kailash.egg-info}/PKG-INFO +19 -17
  35. {kailash-0.8.5 → kailash-0.8.6}/src/kailash.egg-info/SOURCES.txt +5 -0
  36. kailash-0.8.5/src/kailash/runtime/validation/__init__.py +0 -20
  37. {kailash-0.8.5 → kailash-0.8.6}/LICENSE +0 -0
  38. {kailash-0.8.5 → kailash-0.8.6}/MANIFEST.in +0 -0
  39. {kailash-0.8.5 → kailash-0.8.6}/setup.cfg +0 -0
  40. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/__main__.py +0 -0
  41. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/access_control/__init__.py +0 -0
  42. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/access_control/managers.py +0 -0
  43. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/access_control/rule_evaluators.py +0 -0
  44. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/access_control.py +0 -0
  45. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/access_control_abac.py +0 -0
  46. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/adapters/__init__.py +0 -0
  47. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
  48. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/auth.py +0 -0
  49. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/custom_nodes.py +0 -0
  50. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/custom_nodes_secure.py +0 -0
  51. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/gateway.py +0 -0
  52. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/mcp_integration.py +0 -0
  53. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/studio.py +0 -0
  54. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/api/workflow_api.py +0 -0
  55. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/api_channel.py +0 -0
  56. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/base.py +0 -0
  57. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/cli_channel.py +0 -0
  58. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/event_router.py +0 -0
  59. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/channels/session.py +0 -0
  60. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/cli/__init__.py +0 -0
  61. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/cli/commands.py +0 -0
  62. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/cli/validation_audit.py +0 -0
  63. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/client/__init__.py +0 -0
  64. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/client/enhanced_client.py +0 -0
  65. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/config/__init__.py +0 -0
  66. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/config/database_config.py +0 -0
  67. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/actors/__init__.py +0 -0
  68. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
  69. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/actors/connection_actor.py +0 -0
  70. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/actors/supervisor.py +0 -0
  71. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/ml/__init__.py +0 -0
  72. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/ml/query_patterns.py +0 -0
  73. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/monitoring/__init__.py +0 -0
  74. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/monitoring/connection_metrics.py +0 -0
  75. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/optimization/__init__.py +0 -0
  76. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/core/resilience/__init__.py +0 -0
  77. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/database/__init__.py +0 -0
  78. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/database/execution_pipeline.py +0 -0
  79. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/__init__.py +0 -0
  80. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/compliance.py +0 -0
  81. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/consistency.py +0 -0
  82. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/coordination/__init__.py +0 -0
  83. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/coordination/global_ordering.py +0 -0
  84. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/coordination/leader_election.py +0 -0
  85. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/coordination/partition_detector.py +0 -0
  86. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/coordination/raft.py +0 -0
  87. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/discovery.py +0 -0
  88. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/location.py +0 -0
  89. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/migration/__init__.py +0 -0
  90. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/migration/edge_migrator.py +0 -0
  91. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/monitoring/__init__.py +0 -0
  92. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
  93. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/prediction/__init__.py +0 -0
  94. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
  95. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/__init__.py +0 -0
  96. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/cloud_integration.py +0 -0
  97. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/cost_optimizer.py +0 -0
  98. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/docker_integration.py +0 -0
  99. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
  100. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/platform_integration.py +0 -0
  101. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/predictive_scaler.py +0 -0
  102. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/resource_analyzer.py +0 -0
  103. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/edge/resource/resource_pools.py +0 -0
  104. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/gateway/__init__.py +0 -0
  105. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/gateway/api.py +0 -0
  106. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/gateway/enhanced_gateway.py +0 -0
  107. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/gateway/resource_resolver.py +0 -0
  108. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/gateway/security.py +0 -0
  109. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/integrations/dataflow_edge.py +0 -0
  110. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/manifest.py +0 -0
  111. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/__init__.py +0 -0
  112. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/advanced_features.py +0 -0
  113. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/ai_registry_server.py +0 -0
  114. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/auth.py +0 -0
  115. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/client.py +0 -0
  116. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/client_new.py +0 -0
  117. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/discovery.py +0 -0
  118. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/errors.py +0 -0
  119. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/oauth.py +0 -0
  120. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/protocol.py +0 -0
  121. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/registry_integration.py +0 -0
  122. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
  123. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/utils/__init__.py +0 -0
  124. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/utils/cache.py +0 -0
  125. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/utils/config.py +0 -0
  126. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/utils/formatters.py +0 -0
  127. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/mcp_server/utils/metrics.py +0 -0
  128. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/__init__.py +0 -0
  129. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/__init__.py +0 -0
  130. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/access_control.py +0 -0
  131. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/auth_manager.py +0 -0
  132. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/exceptions.py +0 -0
  133. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  134. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/models.py +0 -0
  135. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/auth/utils.py +0 -0
  136. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/communication/__init__.py +0 -0
  137. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/communication/ai_chat.py +0 -0
  138. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/communication/api_gateway.py +0 -0
  139. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/communication/events.py +0 -0
  140. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/communication/realtime.py +0 -0
  141. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/core/__init__.py +0 -0
  142. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/core/agent_ui.py +0 -0
  143. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/core/schema.py +0 -0
  144. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/core/workflows.py +0 -0
  145. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/__init__.py +0 -0
  146. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/base.py +0 -0
  147. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/base_models.py +0 -0
  148. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/enums.py +0 -0
  149. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/migrations.py +0 -0
  150. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/models.py +0 -0
  151. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/repositories.py +0 -0
  152. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/database/session_manager.py +0 -0
  153. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/__init__.py +0 -0
  154. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
  155. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/deduplicator.py +0 -0
  156. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
  157. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/durable_request.py +0 -0
  158. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/gateway/storage_backends.py +0 -0
  159. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/mcp/__init__.py +0 -0
  160. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/mcp/client_integration.py +0 -0
  161. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
  162. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/monitoring/__init__.py +0 -0
  163. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/monitoring/alerts.py +0 -0
  164. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/monitoring/metrics.py +0 -0
  165. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/__init__.py +0 -0
  166. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/__init__.py +0 -0
  167. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/audit_log.py +0 -0
  168. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/permission_check.py +0 -0
  169. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/role_management.py +0 -0
  170. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/schema.sql +0 -0
  171. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/schema_manager.py +0 -0
  172. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/security_event.py +0 -0
  173. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
  174. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/transaction_utils.py +0 -0
  175. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/admin/user_management.py +0 -0
  176. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/__init__.py +0 -0
  177. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/a2a.py +0 -0
  178. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/a2a_backup.py +0 -0
  179. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/agents.py +0 -0
  180. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/ai_providers.py +0 -0
  181. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  182. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/hybrid_search.py +0 -0
  183. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  184. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  185. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/llm_agent.py +0 -0
  186. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/models.py +0 -0
  187. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/self_organizing.py +0 -0
  188. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/semantic_memory.py +0 -0
  189. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
  190. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ai/vision_utils.py +0 -0
  191. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/alerts/__init__.py +0 -0
  192. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/alerts/base.py +0 -0
  193. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/alerts/discord.py +0 -0
  194. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/__init__.py +0 -0
  195. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/auth.py +0 -0
  196. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/graphql.py +0 -0
  197. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/http.py +0 -0
  198. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/monitoring.py +0 -0
  199. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/rate_limiting.py +0 -0
  200. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/rest.py +0 -0
  201. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/api/security.py +0 -0
  202. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/__init__.py +0 -0
  203. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/directory_integration.py +0 -0
  204. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  205. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/mfa.py +0 -0
  206. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  207. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/session_management.py +0 -0
  208. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/auth/sso.py +0 -0
  209. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/base_async.py +0 -0
  210. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/base_cycle_aware.py +0 -0
  211. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/base_with_acl.py +0 -0
  212. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/cache/__init__.py +0 -0
  213. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/cache/cache.py +0 -0
  214. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
  215. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
  216. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/code/__init__.py +0 -0
  217. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/code/async_python.py +0 -0
  218. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/compliance/__init__.py +0 -0
  219. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/compliance/data_retention.py +0 -0
  220. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/compliance/gdpr.py +0 -0
  221. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/__init__.py +0 -0
  222. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/async_connection.py +0 -0
  223. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/async_vector.py +0 -0
  224. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/bulk_operations.py +0 -0
  225. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/directory.py +0 -0
  226. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/event_generation.py +0 -0
  227. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/file_discovery.py +0 -0
  228. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/optimistic_locking.py +0 -0
  229. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/query_builder.py +0 -0
  230. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/query_cache.py +0 -0
  231. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/query_pipeline.py +0 -0
  232. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/query_router.py +0 -0
  233. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/readers.py +0 -0
  234. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/redis.py +0 -0
  235. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/retrieval.py +0 -0
  236. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  237. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/sources.py +0 -0
  238. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/sql.py +0 -0
  239. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/streaming.py +0 -0
  240. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/vector_db.py +0 -0
  241. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
  242. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/data/writers.py +0 -0
  243. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/__init__.py +0 -0
  244. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/base.py +0 -0
  245. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/cloud_node.py +0 -0
  246. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/coordination.py +0 -0
  247. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/docker_node.py +0 -0
  248. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/edge_data.py +0 -0
  249. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
  250. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/edge_state.py +0 -0
  251. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
  252. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
  253. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/platform_node.py +0 -0
  254. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
  255. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
  256. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
  257. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/__init__.py +0 -0
  258. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
  259. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  260. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  261. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
  262. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
  263. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
  264. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/logic/__init__.py +0 -0
  265. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/logic/async_operations.py +0 -0
  266. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/logic/convergence.py +0 -0
  267. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/logic/loop.py +0 -0
  268. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/logic/operations.py +0 -0
  269. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/logic/workflow.py +0 -0
  270. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/mixins/__init__.py +0 -0
  271. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  272. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/mixins/mcp.py +0 -0
  273. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/mixins/security.py +0 -0
  274. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/mixins.py +0 -0
  275. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/__init__.py +0 -0
  276. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
  277. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
  278. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/health_check.py +0 -0
  279. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/log_processor.py +0 -0
  280. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
  281. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
  282. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  283. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
  284. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
  285. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
  286. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/ports.py +0 -0
  287. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/__init__.py +0 -0
  288. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/advanced.py +0 -0
  289. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/agentic.py +0 -0
  290. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/conversational.py +0 -0
  291. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/evaluation.py +0 -0
  292. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/federated.py +0 -0
  293. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/graph.py +0 -0
  294. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/multimodal.py +0 -0
  295. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/optimized.py +0 -0
  296. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/privacy.py +0 -0
  297. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/query_processing.py +0 -0
  298. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/realtime.py +0 -0
  299. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/router.py +0 -0
  300. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/similarity.py +0 -0
  301. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/strategies.py +0 -0
  302. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/rag/workflows.py +0 -0
  303. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/__init__.py +0 -0
  304. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  305. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/audit_log.py +0 -0
  306. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  307. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/credential_manager.py +0 -0
  308. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  309. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/security_event.py +0 -0
  310. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/security/threat_detection.py +0 -0
  311. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/system/__init__.py +0 -0
  312. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/system/command_parser.py +0 -0
  313. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/testing/__init__.py +0 -0
  314. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/testing/credential_testing.py +0 -0
  315. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/__init__.py +0 -0
  316. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
  317. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/saga_step.py +0 -0
  318. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/transaction_context.py +0 -0
  319. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
  320. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transform/__init__.py +0 -0
  321. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transform/chunkers.py +0 -0
  322. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transform/formatters.py +0 -0
  323. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/transform/processors.py +0 -0
  324. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/validation/__init__.py +0 -0
  325. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/validation/test_executor.py +0 -0
  326. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/nodes/validation/validation_nodes.py +0 -0
  327. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/resources/__init__.py +0 -0
  328. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/resources/factory.py +0 -0
  329. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/resources/health.py +0 -0
  330. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/resources/reference.py +0 -0
  331. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/resources/registry.py +0 -0
  332. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/__init__.py +0 -0
  333. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/access_controlled.py +0 -0
  334. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/async_local.py +0 -0
  335. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/docker.py +0 -0
  336. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/parallel.py +0 -0
  337. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/parallel_cyclic.py +0 -0
  338. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/parameter_injection.py +0 -0
  339. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/parameter_injector.py +0 -0
  340. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/runner.py +0 -0
  341. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/secret_provider.py +0 -0
  342. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/testing.py +0 -0
  343. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/validation/connection_context.py +0 -0
  344. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
  345. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/validation/error_categorizer.py +0 -0
  346. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/validation/metrics.py +0 -0
  347. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/runtime/validation/performance.py +0 -0
  348. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/sdk_exceptions.py +0 -0
  349. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/security.py +0 -0
  350. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/servers/__init__.py +0 -0
  351. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/servers/durable_workflow_server.py +0 -0
  352. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/servers/enterprise_workflow_server.py +0 -0
  353. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/servers/gateway.py +0 -0
  354. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/servers/workflow_server.py +0 -0
  355. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/testing/__init__.py +0 -0
  356. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/testing/async_test_case.py +0 -0
  357. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/testing/async_utils.py +0 -0
  358. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/testing/fixtures.py +0 -0
  359. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/testing/mock_registry.py +0 -0
  360. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/__init__.py +0 -0
  361. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/manager.py +0 -0
  362. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/metrics_collector.py +0 -0
  363. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/models.py +0 -0
  364. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/storage/__init__.py +0 -0
  365. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/storage/base.py +0 -0
  366. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/storage/database.py +0 -0
  367. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/tracking/storage/filesystem.py +0 -0
  368. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/__init__.py +0 -0
  369. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/data_validation.py +0 -0
  370. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/export.py +0 -0
  371. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/migrations/__init__.py +0 -0
  372. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/migrations/generator.py +0 -0
  373. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/migrations/models.py +0 -0
  374. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/migrations/runner.py +0 -0
  375. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/resource_manager.py +0 -0
  376. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/secure_logging.py +0 -0
  377. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/utils/templates.py +0 -0
  378. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/visualization/__init__.py +0 -0
  379. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/visualization/api.py +0 -0
  380. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/visualization/dashboard.py +0 -0
  381. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/visualization/performance.py +0 -0
  382. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/visualization/reports.py +0 -0
  383. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/__init__.py +0 -0
  384. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/async_builder.py +0 -0
  385. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/async_patterns.py +0 -0
  386. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/contracts.py +0 -0
  387. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/convergence.py +0 -0
  388. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_analyzer.py +0 -0
  389. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_builder.py +0 -0
  390. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_config.py +0 -0
  391. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_debugger.py +0 -0
  392. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_exceptions.py +0 -0
  393. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_profiler.py +0 -0
  394. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cycle_state.py +0 -0
  395. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/cyclic_runner.py +0 -0
  396. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/edge_infrastructure.py +0 -0
  397. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/graph.py +0 -0
  398. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/input_handling.py +0 -0
  399. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/migration.py +0 -0
  400. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/mock_registry.py +0 -0
  401. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/resilience.py +0 -0
  402. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/runner.py +0 -0
  403. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/safety.py +0 -0
  404. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/state.py +0 -0
  405. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/type_inference.py +0 -0
  406. {kailash-0.8.5 → kailash-0.8.6}/src/kailash/workflow/visualization.py +0 -0
  407. {kailash-0.8.5 → kailash-0.8.6}/src/kailash.egg-info/dependency_links.txt +0 -0
  408. {kailash-0.8.5 → kailash-0.8.6}/src/kailash.egg-info/entry_points.txt +0 -0
  409. {kailash-0.8.5 → kailash-0.8.6}/src/kailash.egg-info/not-zip-safe +0 -0
  410. {kailash-0.8.5 → kailash-0.8.6}/src/kailash.egg-info/requires.txt +0 -0
  411. {kailash-0.8.5 → kailash-0.8.6}/src/kailash.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kailash
3
- Version: 0.8.5
3
+ Version: 0.8.6
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
@@ -116,18 +116,18 @@ Dynamic: requires-python
116
116
 
117
117
  ---
118
118
 
119
- ## 🔥 Latest Release: v0.8.4 (January 19, 2025)
119
+ ## 🔥 Latest Release: v0.8.5 (January 20, 2025)
120
120
 
121
- **A2A Google Protocol Enhancement**
121
+ **Architecture Cleanup & Enterprise Security**
122
122
 
123
- - 🤖 **Advanced Agent Coordination**: A2ACoordinatorNode with Google Protocol best practices
124
- - 🎯 **Intelligent Task Delegation**: Context-aware task distribution with skill-based matching
125
- - 🔍 **Hybrid Search Capabilities**: Multi-strategy agent discovery and matching algorithms
126
- - 🧠 **Semantic Memory System**: Long-term memory management for agent interactions
127
- - 📊 **Real-time Analytics**: Streaming performance monitoring for A2A workflows
128
- - ✅ **Backward Compatible**: Seamless integration with existing A2A implementations
123
+ - 🏗️ **Architecture Clarity**: Removed confusing `src/kailash/nexus` module
124
+ - 🔒 **Connection Validation**: Enterprise-grade parameter validation with type safety
125
+ - 🌐 **Edge Computing**: 50+ new nodes for geo-distributed infrastructure
126
+ - 📊 **Advanced Monitoring**: AlertManager with proactive threshold monitoring
127
+ - 🚀 **Performance**: <1ms validation overhead with intelligent caching
128
+ - ✅ **Breaking Changes**: See [migration guide](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md)
129
129
 
130
- [Full Changelog](CHANGELOG.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.4/)
130
+ [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.5/)
131
131
 
132
132
  ## 🎯 What Makes Kailash Different
133
133
 
@@ -344,7 +344,7 @@ results, run_id = runtime.execute(workflow.build())
344
344
 
345
345
  ## 🚀 Applications Built with Kailash
346
346
 
347
- ### 1. DataFlow - Zero-Config Database Platform
347
+ ### 1. DataFlow - Zero-Config Database Platform (v0.3.1)
348
348
  ```bash
349
349
  pip install kailash-dataflow
350
350
  ```
@@ -352,8 +352,9 @@ pip install kailash-dataflow
352
352
  - **Redis caching** with enterprise-grade invalidation
353
353
  - **Automatic API generation** with OpenAPI documentation
354
354
  - **4 production examples** with complete deployment guides
355
+ - **Latest**: v0.3.1 - Enhanced transaction support and schema management
355
356
 
356
- ### 2. Nexus - Multi-Channel Platform
357
+ ### 2. Nexus - Multi-Channel Platform (v1.0.3)
357
358
  ```bash
358
359
  pip install kailash-nexus
359
360
  ```
@@ -361,6 +362,7 @@ pip install kailash-nexus
361
362
  - **Enterprise orchestration** with multi-tenancy
362
363
  - **Session management** with cross-channel synchronization
363
364
  - **105 tests** with comprehensive validation
365
+ - **Latest**: v1.0.3 - Production-ready release with enhanced stability
364
366
 
365
367
  ### 3. AI Registry - Advanced RAG Platform
366
368
  ```bash
@@ -421,8 +423,8 @@ pytest tests/e2e/ --timeout=10
421
423
 
422
424
  ### For Users
423
425
  - **[SDK Users Guide](sdk-users/)**: Complete workflow development guide
424
- - **[Node Selection Guide](sdk-users/nodes/node-selection-guide.md)**: Smart node selection with decision trees
425
- - **[Enterprise Patterns](sdk-users/enterprise/)**: Production deployment patterns
426
+ - **[Node Selection Guide](sdk-users/2-core-concepts/nodes/node-selection-guide.md)**: Smart node selection with decision trees
427
+ - **[Enterprise Patterns](sdk-users/5-enterprise/)**: Production deployment patterns
426
428
  - **[API Documentation](https://integrum.github.io/kailash-python-sdk)**: Complete API reference
427
429
 
428
430
  ### For Contributors
@@ -431,9 +433,9 @@ pytest tests/e2e/ --timeout=10
431
433
  - **[Testing Guide](tests/README.md)**: 3-tier testing strategy
432
434
 
433
435
  ### Quick References
434
- - **[Cheatsheet](sdk-users/cheatsheet/)**: 53 copy-paste patterns
435
- - **[Common Mistakes](sdk-users/validation/common-mistakes.md)**: Error patterns and solutions
436
- - **[Performance Guide](sdk-users/performance/)**: Optimization patterns
436
+ - **[Cheatsheet](sdk-users/2-core-concepts/cheatsheet/)**: 53 copy-paste patterns
437
+ - **[Common Mistakes](sdk-users/2-core-concepts/validation/common-mistakes.md)**: Error patterns and solutions
438
+ - **[Performance Guide](sdk-users/5-enterprise/performance/)**: Optimization patterns
437
439
 
438
440
  ## 🚢 Production Deployment
439
441
 
@@ -22,18 +22,18 @@
22
22
 
23
23
  ---
24
24
 
25
- ## 🔥 Latest Release: v0.8.4 (January 19, 2025)
25
+ ## 🔥 Latest Release: v0.8.5 (January 20, 2025)
26
26
 
27
- **A2A Google Protocol Enhancement**
27
+ **Architecture Cleanup & Enterprise Security**
28
28
 
29
- - 🤖 **Advanced Agent Coordination**: A2ACoordinatorNode with Google Protocol best practices
30
- - 🎯 **Intelligent Task Delegation**: Context-aware task distribution with skill-based matching
31
- - 🔍 **Hybrid Search Capabilities**: Multi-strategy agent discovery and matching algorithms
32
- - 🧠 **Semantic Memory System**: Long-term memory management for agent interactions
33
- - 📊 **Real-time Analytics**: Streaming performance monitoring for A2A workflows
34
- - ✅ **Backward Compatible**: Seamless integration with existing A2A implementations
29
+ - 🏗️ **Architecture Clarity**: Removed confusing `src/kailash/nexus` module
30
+ - 🔒 **Connection Validation**: Enterprise-grade parameter validation with type safety
31
+ - 🌐 **Edge Computing**: 50+ new nodes for geo-distributed infrastructure
32
+ - 📊 **Advanced Monitoring**: AlertManager with proactive threshold monitoring
33
+ - 🚀 **Performance**: <1ms validation overhead with intelligent caching
34
+ - ✅ **Breaking Changes**: See [migration guide](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md)
35
35
 
36
- [Full Changelog](CHANGELOG.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.4/)
36
+ [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.5/)
37
37
 
38
38
  ## 🎯 What Makes Kailash Different
39
39
 
@@ -250,7 +250,7 @@ results, run_id = runtime.execute(workflow.build())
250
250
 
251
251
  ## 🚀 Applications Built with Kailash
252
252
 
253
- ### 1. DataFlow - Zero-Config Database Platform
253
+ ### 1. DataFlow - Zero-Config Database Platform (v0.3.1)
254
254
  ```bash
255
255
  pip install kailash-dataflow
256
256
  ```
@@ -258,8 +258,9 @@ pip install kailash-dataflow
258
258
  - **Redis caching** with enterprise-grade invalidation
259
259
  - **Automatic API generation** with OpenAPI documentation
260
260
  - **4 production examples** with complete deployment guides
261
+ - **Latest**: v0.3.1 - Enhanced transaction support and schema management
261
262
 
262
- ### 2. Nexus - Multi-Channel Platform
263
+ ### 2. Nexus - Multi-Channel Platform (v1.0.3)
263
264
  ```bash
264
265
  pip install kailash-nexus
265
266
  ```
@@ -267,6 +268,7 @@ pip install kailash-nexus
267
268
  - **Enterprise orchestration** with multi-tenancy
268
269
  - **Session management** with cross-channel synchronization
269
270
  - **105 tests** with comprehensive validation
271
+ - **Latest**: v1.0.3 - Production-ready release with enhanced stability
270
272
 
271
273
  ### 3. AI Registry - Advanced RAG Platform
272
274
  ```bash
@@ -327,8 +329,8 @@ pytest tests/e2e/ --timeout=10
327
329
 
328
330
  ### For Users
329
331
  - **[SDK Users Guide](sdk-users/)**: Complete workflow development guide
330
- - **[Node Selection Guide](sdk-users/nodes/node-selection-guide.md)**: Smart node selection with decision trees
331
- - **[Enterprise Patterns](sdk-users/enterprise/)**: Production deployment patterns
332
+ - **[Node Selection Guide](sdk-users/2-core-concepts/nodes/node-selection-guide.md)**: Smart node selection with decision trees
333
+ - **[Enterprise Patterns](sdk-users/5-enterprise/)**: Production deployment patterns
332
334
  - **[API Documentation](https://integrum.github.io/kailash-python-sdk)**: Complete API reference
333
335
 
334
336
  ### For Contributors
@@ -337,9 +339,9 @@ pytest tests/e2e/ --timeout=10
337
339
  - **[Testing Guide](tests/README.md)**: 3-tier testing strategy
338
340
 
339
341
  ### Quick References
340
- - **[Cheatsheet](sdk-users/cheatsheet/)**: 53 copy-paste patterns
341
- - **[Common Mistakes](sdk-users/validation/common-mistakes.md)**: Error patterns and solutions
342
- - **[Performance Guide](sdk-users/performance/)**: Optimization patterns
342
+ - **[Cheatsheet](sdk-users/2-core-concepts/cheatsheet/)**: 53 copy-paste patterns
343
+ - **[Common Mistakes](sdk-users/2-core-concepts/validation/common-mistakes.md)**: Error patterns and solutions
344
+ - **[Performance Guide](sdk-users/5-enterprise/performance/)**: Optimization patterns
343
345
 
344
346
  ## 🚢 Production Deployment
345
347
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kailash"
7
- version = "0.8.5"
7
+ version = "0.8.6"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
@@ -123,7 +123,7 @@ select = ["E", "F"]
123
123
  ignore = ["E203", "E501", "E722", "F401", "F841"]
124
124
 
125
125
  [tool.ruff.lint.per-file-ignores]
126
- "sdk-users/workflows/by-industry/finance/scripts/*.py" = ["E402"]
126
+ "sdk-users/2-core-concepts/workflows/by-industry/finance/scripts/*.py" = ["E402"]
127
127
  "examples/feature_examples/workflows/cyclic/*.py" = ["E722"]
128
128
  "examples/feature_examples/workflows/parallel/*.py" = ["E722"]
129
129
  "scripts/refactor-pythoncode-to-functions.py" = ["E722"]
@@ -136,7 +136,7 @@ ignore = ["E203", "E501", "E722", "F401", "F841"]
136
136
  # Allow late imports in performance test files
137
137
  "tests/unit/performance_benchmarks/*.py" = ["E402"]
138
138
  # SDK user workflows may have late imports for demos
139
- "sdk-users/workflows/**/*.py" = ["E402", "F821"]
139
+ "sdk-users/2-core-concepts/workflows/**/*.py" = ["E402", "F821"]
140
140
  # Examples may have late imports and mocks
141
141
  "examples/**/*.py" = ["E402", "F821"]
142
142
  # Scripts may need to modify sys.path before imports
@@ -51,14 +51,14 @@ setup(
51
51
  "pygraphviz>=1.9",
52
52
  ],
53
53
  "dataflow": [
54
- "kailash-dataflow>=0.1.0",
54
+ "kailash-dataflow>=0.3.1",
55
55
  ],
56
56
  "nexus": [
57
- "kailash-nexus>=1.0.0",
57
+ "kailash-nexus>=1.0.3",
58
58
  ],
59
59
  "all": [
60
- "kailash-dataflow>=0.1.0",
61
- "kailash-nexus>=1.0.0",
60
+ "kailash-dataflow>=0.3.1",
61
+ "kailash-nexus>=1.0.3",
62
62
  ],
63
63
  },
64
64
  # Entry points for CLI
@@ -3,10 +3,10 @@
3
3
  The Kailash SDK provides a comprehensive framework for creating nodes and workflows
4
4
  that align with container-node architecture while allowing rapid prototyping.
5
5
 
6
- New in v0.7.0: Complete DataFlow and Nexus application frameworks, infrastructure hardening
7
- with 100% E2E test pass rate, enhanced AsyncNode event loop handling, 8 new monitoring operations,
8
- distributed transactions, QueryBuilder/QueryCache with Redis, and real MCP execution by default.
9
- Previous v0.6.6: AgentUIMiddleware shared workflow fix, execute() method standardization.
6
+ New in v0.8.6: Enhanced parameter validation system with 4 modes (off/warn/strict/debug),
7
+ ParameterDebugger for comprehensive flow tracing (10x faster debugging), production-ready
8
+ performance (<1ms overhead), and complete troubleshooting documentation.
9
+ Previous v0.8.5: Test infrastructure enhancement, application framework improvements.
10
10
  """
11
11
 
12
12
  from kailash.nodes.base import Node, NodeMetadata, NodeParameter
@@ -49,7 +49,7 @@ except ImportError:
49
49
  # For backward compatibility
50
50
  WorkflowGraph = Workflow
51
51
 
52
- __version__ = "0.8.5"
52
+ __version__ = "0.8.6"
53
53
 
54
54
  __all__ = [
55
55
  # Core workflow components
@@ -5,7 +5,7 @@ enabling unified management of API, CLI, and MCP interfaces through a common cha
5
5
  """
6
6
 
7
7
  from .api_channel import APIChannel
8
- from .base import Channel, ChannelConfig
8
+ from .base import Channel, ChannelConfig, ChannelType
9
9
  from .cli_channel import CLIChannel
10
10
  from .mcp_channel import MCPChannel
11
11
  from .session import CrossChannelSession, SessionManager
@@ -13,6 +13,7 @@ from .session import CrossChannelSession, SessionManager
13
13
  __all__ = [
14
14
  "Channel",
15
15
  "ChannelConfig",
16
+ "ChannelType",
16
17
  "APIChannel",
17
18
  "CLIChannel",
18
19
  "MCPChannel",
@@ -84,6 +84,7 @@ class MCPChannel(Channel):
84
84
  # MCP-specific state
85
85
  self._clients: Dict[str, Dict[str, Any]] = {}
86
86
  self._server_task: Optional[asyncio.Task] = None
87
+ self._mcp_server_task: Optional[asyncio.Task] = None
87
88
 
88
89
  logger.info(f"Initialized MCP channel {self.name}")
89
90
 
@@ -202,8 +203,15 @@ class MCPChannel(Channel):
202
203
  self.status = ChannelStatus.STARTING
203
204
  self._setup_event_queue()
204
205
 
205
- # Start MCP server
206
- await self.mcp_server.start()
206
+ # Start MCP server (Core SDK uses run() method, not start())
207
+ # For async operation, we need to run it in a separate task
208
+ if hasattr(self.mcp_server, "run"):
209
+ # Core SDK MCPServer uses run() method
210
+ loop = asyncio.get_event_loop()
211
+ self._mcp_server_task = loop.run_in_executor(None, self.mcp_server.run)
212
+ else:
213
+ # Fallback to start() if available
214
+ await self.mcp_server.start()
207
215
 
208
216
  # Start server task for handling connections
209
217
  self._server_task = asyncio.create_task(self._server_loop())
@@ -261,9 +269,20 @@ class MCPChannel(Channel):
261
269
  except asyncio.CancelledError:
262
270
  pass
263
271
 
272
+ # Stop MCP server task if running
273
+ if hasattr(self, "_mcp_server_task") and self._mcp_server_task:
274
+ self._mcp_server_task.cancel()
275
+ try:
276
+ await self._mcp_server_task
277
+ except asyncio.CancelledError:
278
+ pass
279
+
264
280
  # Stop MCP server
265
- if self.mcp_server:
266
- await self.mcp_server.stop()
281
+ if self.mcp_server and hasattr(self.mcp_server, "stop"):
282
+ try:
283
+ await self.mcp_server.stop()
284
+ except Exception as e:
285
+ logger.warning(f"Error stopping MCP server: {e}")
267
286
 
268
287
  await self._cleanup()
269
288
  self.status = ChannelStatus.STOPPED
@@ -0,0 +1,202 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Command-line tool for validating import paths for production deployment.
4
+
5
+ Usage:
6
+ python -m kailash.cli.validate_imports [path] [options]
7
+
8
+ Examples:
9
+ # Validate current directory
10
+ python -m kailash.cli.validate_imports
11
+
12
+ # Validate specific directory
13
+ python -m kailash.cli.validate_imports src/myapp
14
+
15
+ # Fix imports (dry run)
16
+ python -m kailash.cli.validate_imports src/myapp --fix
17
+
18
+ # Fix imports (apply changes)
19
+ python -m kailash.cli.validate_imports src/myapp --fix --apply
20
+ """
21
+
22
+ import argparse
23
+ import sys
24
+ from pathlib import Path
25
+ from typing import List
26
+
27
+ from kailash.runtime.validation import ImportIssue, ImportPathValidator
28
+
29
+
30
+ def main():
31
+ """Main entry point for import validation CLI."""
32
+ parser = argparse.ArgumentParser(
33
+ description="Validate Python imports for production deployment compatibility",
34
+ formatter_class=argparse.RawDescriptionHelpFormatter,
35
+ epilog="""
36
+ Examples:
37
+ %(prog)s # Validate current directory
38
+ %(prog)s src/myapp # Validate specific directory
39
+ %(prog)s src/myapp --fix # Show import fixes (dry run)
40
+ %(prog)s --file module.py # Validate single file
41
+
42
+ For more info, see: sdk-users/7-gold-standards/absolute-imports-gold-standard.md
43
+ """,
44
+ )
45
+
46
+ parser.add_argument(
47
+ "path",
48
+ nargs="?",
49
+ default=".",
50
+ help="Path to validate (directory or file, default: current directory)",
51
+ )
52
+
53
+ parser.add_argument(
54
+ "--file",
55
+ "-f",
56
+ action="store_true",
57
+ help="Treat path as a single file instead of directory",
58
+ )
59
+
60
+ parser.add_argument(
61
+ "--fix", action="store_true", help="Show suggested fixes for import issues"
62
+ )
63
+
64
+ parser.add_argument(
65
+ "--apply",
66
+ action="store_true",
67
+ help="Apply fixes (use with --fix, CAUTION: modifies files!)",
68
+ )
69
+
70
+ parser.add_argument(
71
+ "--no-recursive", "-n", action="store_true", help="Do not scan subdirectories"
72
+ )
73
+
74
+ parser.add_argument(
75
+ "--include-tests", action="store_true", help="Include test files in validation"
76
+ )
77
+
78
+ parser.add_argument("--json", action="store_true", help="Output results as JSON")
79
+
80
+ parser.add_argument(
81
+ "--quiet",
82
+ "-q",
83
+ action="store_true",
84
+ help="Only show errors, no informational output",
85
+ )
86
+
87
+ parser.add_argument(
88
+ "--verbose", "-v", action="store_true", help="Show detailed output"
89
+ )
90
+
91
+ args = parser.parse_args()
92
+
93
+ # Create validator
94
+ validator = ImportPathValidator()
95
+
96
+ # Validate path
97
+ path = Path(args.path)
98
+ if not path.exists():
99
+ print(f"Error: Path '{path}' does not exist", file=sys.stderr)
100
+ sys.exit(1)
101
+
102
+ # Collect issues
103
+ issues: List[ImportIssue] = []
104
+
105
+ if args.file or path.is_file():
106
+ # Validate single file
107
+ if args.verbose:
108
+ print(f"Validating file: {path}")
109
+ issues = validator.validate_file(str(path))
110
+ else:
111
+ # Validate directory
112
+ if args.verbose:
113
+ print(f"Validating directory: {path}")
114
+ print(f"Recursive: {not args.no_recursive}")
115
+ print(f"Include tests: {args.include_tests}")
116
+ print()
117
+
118
+ # TODO: Add support for include_tests flag in validator
119
+ issues = validator.validate_directory(
120
+ str(path), recursive=not args.no_recursive
121
+ )
122
+
123
+ # Handle results
124
+ if args.json:
125
+ import json
126
+
127
+ # Convert issues to JSON-serializable format
128
+ issues_data = [
129
+ {
130
+ "file": issue.file_path,
131
+ "line": issue.line_number,
132
+ "import": issue.import_statement,
133
+ "type": issue.issue_type.value,
134
+ "severity": issue.severity,
135
+ "message": issue.message,
136
+ "suggestion": issue.suggestion,
137
+ }
138
+ for issue in issues
139
+ ]
140
+ print(
141
+ json.dumps(
142
+ {
143
+ "issues": issues_data,
144
+ "total": len(issues),
145
+ "critical": len([i for i in issues if i.severity == "critical"]),
146
+ "warnings": len([i for i in issues if i.severity == "warning"]),
147
+ },
148
+ indent=2,
149
+ )
150
+ )
151
+
152
+ elif args.fix:
153
+ # Show fixes
154
+ if not issues:
155
+ if not args.quiet:
156
+ print("✅ No import issues found!")
157
+ sys.exit(0)
158
+
159
+ print(f"Found {len(issues)} import issues\n")
160
+
161
+ # Group by file
162
+ files_with_issues = {}
163
+ for issue in issues:
164
+ if issue.file_path not in files_with_issues:
165
+ files_with_issues[issue.file_path] = []
166
+ files_with_issues[issue.file_path].append(issue)
167
+
168
+ for file_path, file_issues in files_with_issues.items():
169
+ print(f"\n📄 {file_path}")
170
+ print("-" * 60)
171
+
172
+ if args.apply:
173
+ # Apply fixes
174
+ fixes = validator.fix_imports_in_file(file_path, dry_run=False)
175
+ for original, fixed in fixes:
176
+ print(f" ❌ {original}")
177
+ print(f" ✅ {fixed}")
178
+ print(f"\n Applied {len(fixes)} fixes to {file_path}")
179
+ else:
180
+ # Show proposed fixes
181
+ for issue in file_issues:
182
+ print(f" Line {issue.line_number}: {issue.import_statement}")
183
+ print(f" Issue: {issue.message}")
184
+ print(f" Fix: {issue.suggestion}")
185
+ print()
186
+
187
+ if not args.apply:
188
+ print("\n💡 To apply these fixes, run with --fix --apply")
189
+ print("⚠️ CAUTION: This will modify your files!")
190
+
191
+ else:
192
+ # Standard report
193
+ report = validator.generate_report(issues)
194
+ print(report)
195
+
196
+ # Exit code based on critical issues
197
+ critical_count = len([i for i in issues if i.severity == "critical"])
198
+ sys.exit(1 if critical_count > 0 else 0)
199
+
200
+
201
+ if __name__ == "__main__":
202
+ main()
@@ -204,11 +204,21 @@ class BulkheadPartition:
204
204
  await self._record_failure(execution_time)
205
205
  raise
206
206
  finally:
207
- # Clean up
208
- async with self._lock:
209
- if operation_id in self._active_operations:
210
- self._active_operations.remove(operation_id)
211
- self.metrics.active_operations = len(self._active_operations)
207
+ # Clean up - with proper exception handling for event loop issues
208
+ try:
209
+ async with self._lock:
210
+ if operation_id in self._active_operations:
211
+ self._active_operations.remove(operation_id)
212
+ self.metrics.active_operations = len(self._active_operations)
213
+ except (RuntimeError, asyncio.CancelledError):
214
+ # Handle event loop issues during cleanup - force cleanup without lock
215
+ try:
216
+ if operation_id in self._active_operations:
217
+ self._active_operations.remove(operation_id)
218
+ self.metrics.active_operations = len(self._active_operations)
219
+ except:
220
+ # Final fallback - ignore cleanup errors during shutdown
221
+ pass
212
222
 
213
223
  async def _execute_isolated(
214
224
  self, operation_id: str, func: Callable, args: tuple, kwargs: dict, timeout: int
@@ -467,7 +467,10 @@ class CircuitBreakerManager:
467
467
  return self._breakers[name]
468
468
 
469
469
  def create_circuit_breaker(
470
- self, name: str, config: Optional[CircuitBreakerConfig] = None, pattern: Optional[str] = None
470
+ self,
471
+ name: str,
472
+ config: Optional[CircuitBreakerConfig] = None,
473
+ pattern: Optional[str] = None,
471
474
  ) -> ConnectionCircuitBreaker:
472
475
  """Create a new circuit breaker with optional pattern-based configuration."""
473
476
  if pattern and pattern in self._patterns: