kailash 0.9.10__tar.gz → 0.9.12__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 (420) hide show
  1. {kailash-0.9.10/src/kailash.egg-info → kailash-0.9.12}/PKG-INFO +9 -9
  2. {kailash-0.9.10 → kailash-0.9.12}/README.md +8 -8
  3. {kailash-0.9.10 → kailash-0.9.12}/pyproject.toml +1 -1
  4. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/__init__.py +1 -1
  5. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/async_sql.py +206 -19
  6. {kailash-0.9.10 → kailash-0.9.12/src/kailash.egg-info}/PKG-INFO +9 -9
  7. {kailash-0.9.10 → kailash-0.9.12}/LICENSE +0 -0
  8. {kailash-0.9.10 → kailash-0.9.12}/MANIFEST.in +0 -0
  9. {kailash-0.9.10 → kailash-0.9.12}/NOTICE +0 -0
  10. {kailash-0.9.10 → kailash-0.9.12}/setup.cfg +0 -0
  11. {kailash-0.9.10 → kailash-0.9.12}/setup.py +0 -0
  12. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/__main__.py +0 -0
  13. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/access_control/__init__.py +0 -0
  14. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/access_control/managers.py +0 -0
  15. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/access_control/rule_evaluators.py +0 -0
  16. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/access_control.py +0 -0
  17. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/access_control_abac.py +0 -0
  18. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/adapters/__init__.py +0 -0
  19. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
  20. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/analysis/__init__.py +0 -0
  21. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/analysis/conditional_branch_analyzer.py +0 -0
  22. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/auth.py +0 -0
  23. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/custom_nodes.py +0 -0
  24. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/custom_nodes_secure.py +0 -0
  25. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/gateway.py +0 -0
  26. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/mcp_integration.py +0 -0
  27. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/studio.py +0 -0
  28. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/api/workflow_api.py +0 -0
  29. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/__init__.py +0 -0
  30. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/api_channel.py +0 -0
  31. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/base.py +0 -0
  32. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/cli_channel.py +0 -0
  33. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/event_router.py +0 -0
  34. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/mcp_channel.py +0 -0
  35. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/channels/session.py +0 -0
  36. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/cli/__init__.py +0 -0
  37. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/cli/commands.py +0 -0
  38. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/cli/validate_imports.py +0 -0
  39. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/cli/validation_audit.py +0 -0
  40. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/client/__init__.py +0 -0
  41. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/client/enhanced_client.py +0 -0
  42. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/config/__init__.py +0 -0
  43. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/config/database_config.py +0 -0
  44. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/actors/__init__.py +0 -0
  45. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
  46. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/actors/connection_actor.py +0 -0
  47. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/actors/supervisor.py +0 -0
  48. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/ml/__init__.py +0 -0
  49. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/ml/query_patterns.py +0 -0
  50. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/monitoring/__init__.py +0 -0
  51. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/monitoring/connection_metrics.py +0 -0
  52. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/optimization/__init__.py +0 -0
  53. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/resilience/__init__.py +0 -0
  54. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/resilience/bulkhead.py +0 -0
  55. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/resilience/circuit_breaker.py +0 -0
  56. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/core/resilience/health_monitor.py +0 -0
  57. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/database/__init__.py +0 -0
  58. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/database/execution_pipeline.py +0 -0
  59. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/__init__.py +0 -0
  60. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/compliance.py +0 -0
  61. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/consistency.py +0 -0
  62. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/coordination/__init__.py +0 -0
  63. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/coordination/global_ordering.py +0 -0
  64. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/coordination/leader_election.py +0 -0
  65. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/coordination/partition_detector.py +0 -0
  66. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/coordination/raft.py +0 -0
  67. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/discovery.py +0 -0
  68. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/location.py +0 -0
  69. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/migration/__init__.py +0 -0
  70. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/migration/edge_migration_service.py +0 -0
  71. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/migration/edge_migrator.py +0 -0
  72. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/monitoring/__init__.py +0 -0
  73. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
  74. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/prediction/__init__.py +0 -0
  75. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
  76. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/__init__.py +0 -0
  77. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/cloud_integration.py +0 -0
  78. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/cost_optimizer.py +0 -0
  79. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/docker_integration.py +0 -0
  80. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
  81. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/platform_integration.py +0 -0
  82. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/predictive_scaler.py +0 -0
  83. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/resource_analyzer.py +0 -0
  84. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/edge/resource/resource_pools.py +0 -0
  85. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/gateway/__init__.py +0 -0
  86. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/gateway/api.py +0 -0
  87. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/gateway/enhanced_gateway.py +0 -0
  88. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/gateway/resource_resolver.py +0 -0
  89. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/gateway/security.py +0 -0
  90. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/integrations/dataflow_edge.py +0 -0
  91. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/manifest.py +0 -0
  92. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/__init__.py +0 -0
  93. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/advanced_features.py +0 -0
  94. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/ai_registry_server.py +0 -0
  95. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/auth.py +0 -0
  96. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/client.py +0 -0
  97. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/client_new.py +0 -0
  98. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/discovery.py +0 -0
  99. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/errors.py +0 -0
  100. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/oauth.py +0 -0
  101. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/protocol.py +0 -0
  102. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/registry_integration.py +0 -0
  103. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/server.py +0 -0
  104. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
  105. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/subscriptions.py +0 -0
  106. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/transports.py +0 -0
  107. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/utils/__init__.py +0 -0
  108. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/utils/cache.py +0 -0
  109. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/utils/config.py +0 -0
  110. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/utils/formatters.py +0 -0
  111. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/mcp_server/utils/metrics.py +0 -0
  112. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/__init__.py +0 -0
  113. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/__init__.py +0 -0
  114. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/access_control.py +0 -0
  115. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/auth_manager.py +0 -0
  116. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/exceptions.py +0 -0
  117. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  118. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/models.py +0 -0
  119. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/auth/utils.py +0 -0
  120. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/communication/__init__.py +0 -0
  121. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/communication/ai_chat.py +0 -0
  122. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/communication/api_gateway.py +0 -0
  123. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/communication/events.py +0 -0
  124. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/communication/realtime.py +0 -0
  125. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/core/__init__.py +0 -0
  126. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/core/agent_ui.py +0 -0
  127. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/core/schema.py +0 -0
  128. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/core/workflows.py +0 -0
  129. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/__init__.py +0 -0
  130. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/base.py +0 -0
  131. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/base_models.py +0 -0
  132. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/enums.py +0 -0
  133. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/migrations.py +0 -0
  134. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/models.py +0 -0
  135. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/repositories.py +0 -0
  136. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/database/session_manager.py +0 -0
  137. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/__init__.py +0 -0
  138. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
  139. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/deduplicator.py +0 -0
  140. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
  141. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/durable_request.py +0 -0
  142. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/event_store.py +0 -0
  143. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/gateway/storage_backends.py +0 -0
  144. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/mcp/__init__.py +0 -0
  145. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/mcp/client_integration.py +0 -0
  146. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
  147. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/monitoring/__init__.py +0 -0
  148. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/monitoring/alerts.py +0 -0
  149. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/monitoring/metrics.py +0 -0
  150. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/__init__.py +0 -0
  151. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/__init__.py +0 -0
  152. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/audit_log.py +0 -0
  153. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/permission_check.py +0 -0
  154. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/role_management.py +0 -0
  155. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/schema.sql +0 -0
  156. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/schema_manager.py +0 -0
  157. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/security_event.py +0 -0
  158. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
  159. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/transaction_utils.py +0 -0
  160. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/admin/user_management.py +0 -0
  161. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/__init__.py +0 -0
  162. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/a2a.py +0 -0
  163. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/a2a_backup.py +0 -0
  164. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/agents.py +0 -0
  165. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/ai_providers.py +0 -0
  166. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  167. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/hybrid_search.py +0 -0
  168. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  169. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  170. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/llm_agent.py +0 -0
  171. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/models.py +0 -0
  172. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/self_organizing.py +0 -0
  173. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/semantic_memory.py +0 -0
  174. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
  175. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ai/vision_utils.py +0 -0
  176. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/alerts/__init__.py +0 -0
  177. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/alerts/base.py +0 -0
  178. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/alerts/discord.py +0 -0
  179. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/__init__.py +0 -0
  180. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/auth.py +0 -0
  181. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/graphql.py +0 -0
  182. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/http.py +0 -0
  183. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/monitoring.py +0 -0
  184. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/rate_limiting.py +0 -0
  185. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/rest.py +0 -0
  186. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/api/security.py +0 -0
  187. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/__init__.py +0 -0
  188. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/directory_integration.py +0 -0
  189. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  190. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/mfa.py +0 -0
  191. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  192. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/session_management.py +0 -0
  193. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/auth/sso.py +0 -0
  194. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/base.py +0 -0
  195. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/base_async.py +0 -0
  196. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/base_cycle_aware.py +0 -0
  197. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/base_with_acl.py +0 -0
  198. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/cache/__init__.py +0 -0
  199. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/cache/cache.py +0 -0
  200. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
  201. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
  202. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/code/__init__.py +0 -0
  203. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/code/async_python.py +0 -0
  204. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/code/python.py +0 -0
  205. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/compliance/__init__.py +0 -0
  206. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/compliance/data_retention.py +0 -0
  207. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/compliance/gdpr.py +0 -0
  208. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/__init__.py +0 -0
  209. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/async_connection.py +0 -0
  210. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/async_vector.py +0 -0
  211. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/bulk_operations.py +0 -0
  212. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/directory.py +0 -0
  213. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/event_generation.py +0 -0
  214. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/file_discovery.py +0 -0
  215. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/optimistic_locking.py +0 -0
  216. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/query_builder.py +0 -0
  217. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/query_cache.py +0 -0
  218. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/query_pipeline.py +0 -0
  219. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/query_router.py +0 -0
  220. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/readers.py +0 -0
  221. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/redis.py +0 -0
  222. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/retrieval.py +0 -0
  223. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  224. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/sources.py +0 -0
  225. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/sql.py +0 -0
  226. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/streaming.py +0 -0
  227. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/vector_db.py +0 -0
  228. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
  229. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/data/writers.py +0 -0
  230. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/__init__.py +0 -0
  231. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/base.py +0 -0
  232. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/cloud_node.py +0 -0
  233. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/coordination.py +0 -0
  234. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/docker_node.py +0 -0
  235. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/edge_data.py +0 -0
  236. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/edge_migration_node.py +0 -0
  237. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
  238. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/edge_state.py +0 -0
  239. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
  240. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
  241. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/platform_node.py +0 -0
  242. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
  243. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
  244. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
  245. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/__init__.py +0 -0
  246. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
  247. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  248. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  249. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
  250. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
  251. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
  252. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/governance.py +0 -0
  253. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/__init__.py +0 -0
  254. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/async_operations.py +0 -0
  255. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/convergence.py +0 -0
  256. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/intelligent_merge.py +0 -0
  257. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/loop.py +0 -0
  258. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/operations.py +0 -0
  259. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/logic/workflow.py +0 -0
  260. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/mixins/__init__.py +0 -0
  261. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  262. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/mixins/mcp.py +0 -0
  263. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/mixins/security.py +0 -0
  264. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/mixins.py +0 -0
  265. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/__init__.py +0 -0
  266. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
  267. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
  268. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/health_check.py +0 -0
  269. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/log_processor.py +0 -0
  270. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
  271. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
  272. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  273. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
  274. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
  275. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
  276. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/ports.py +0 -0
  277. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/__init__.py +0 -0
  278. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/advanced.py +0 -0
  279. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/agentic.py +0 -0
  280. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/conversational.py +0 -0
  281. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/evaluation.py +0 -0
  282. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/federated.py +0 -0
  283. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/graph.py +0 -0
  284. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/multimodal.py +0 -0
  285. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/optimized.py +0 -0
  286. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/privacy.py +0 -0
  287. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/query_processing.py +0 -0
  288. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/realtime.py +0 -0
  289. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/registry.py +0 -0
  290. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/router.py +0 -0
  291. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/similarity.py +0 -0
  292. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/strategies.py +0 -0
  293. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/rag/workflows.py +0 -0
  294. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/__init__.py +0 -0
  295. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  296. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/audit_log.py +0 -0
  297. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  298. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/credential_manager.py +0 -0
  299. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  300. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/security_event.py +0 -0
  301. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/security/threat_detection.py +0 -0
  302. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/system/__init__.py +0 -0
  303. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/system/command_parser.py +0 -0
  304. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/testing/__init__.py +0 -0
  305. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/testing/credential_testing.py +0 -0
  306. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/__init__.py +0 -0
  307. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/distributed_transaction_manager.py +0 -0
  308. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
  309. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/saga_state_storage.py +0 -0
  310. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/saga_step.py +0 -0
  311. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/transaction_context.py +0 -0
  312. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
  313. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transform/__init__.py +0 -0
  314. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transform/chunkers.py +0 -0
  315. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transform/formatters.py +0 -0
  316. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/transform/processors.py +0 -0
  317. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/validation/__init__.py +0 -0
  318. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/validation/test_executor.py +0 -0
  319. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/validation/validation_nodes.py +0 -0
  320. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/nodes/validation.py +0 -0
  321. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/planning/__init__.py +0 -0
  322. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/planning/dynamic_execution_planner.py +0 -0
  323. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/resources/__init__.py +0 -0
  324. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/resources/factory.py +0 -0
  325. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/resources/health.py +0 -0
  326. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/resources/reference.py +0 -0
  327. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/resources/registry.py +0 -0
  328. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/__init__.py +0 -0
  329. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/access_controlled.py +0 -0
  330. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/async_local.py +0 -0
  331. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/compatibility_reporter.py +0 -0
  332. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/docker.py +0 -0
  333. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/hierarchical_switch_executor.py +0 -0
  334. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/local.py +0 -0
  335. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/parallel.py +0 -0
  336. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/parallel_cyclic.py +0 -0
  337. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/parameter_injection.py +0 -0
  338. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/parameter_injector.py +0 -0
  339. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/performance_monitor.py +0 -0
  340. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/runner.py +0 -0
  341. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/secret_provider.py +0 -0
  342. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/testing.py +0 -0
  343. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/__init__.py +0 -0
  344. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/connection_context.py +0 -0
  345. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
  346. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/error_categorizer.py +0 -0
  347. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/import_validator.py +0 -0
  348. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/metrics.py +0 -0
  349. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/performance.py +0 -0
  350. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/runtime/validation/suggestion_engine.py +0 -0
  351. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/sdk_exceptions.py +0 -0
  352. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/security.py +0 -0
  353. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/servers/__init__.py +0 -0
  354. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/servers/durable_workflow_server.py +0 -0
  355. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/servers/enterprise_workflow_server.py +0 -0
  356. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/servers/gateway.py +0 -0
  357. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/servers/workflow_server.py +0 -0
  358. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/testing/__init__.py +0 -0
  359. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/testing/async_test_case.py +0 -0
  360. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/testing/async_utils.py +0 -0
  361. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/testing/fixtures.py +0 -0
  362. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/testing/mock_registry.py +0 -0
  363. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/__init__.py +0 -0
  364. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/manager.py +0 -0
  365. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/metrics_collector.py +0 -0
  366. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/models.py +0 -0
  367. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/storage/__init__.py +0 -0
  368. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/storage/base.py +0 -0
  369. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/storage/database.py +0 -0
  370. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/tracking/storage/filesystem.py +0 -0
  371. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/__init__.py +0 -0
  372. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/data_paths.py +0 -0
  373. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/data_validation.py +0 -0
  374. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/export.py +0 -0
  375. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/migrations/__init__.py +0 -0
  376. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/migrations/generator.py +0 -0
  377. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/migrations/models.py +0 -0
  378. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/migrations/runner.py +0 -0
  379. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/resource_manager.py +0 -0
  380. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/secure_logging.py +0 -0
  381. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/utils/templates.py +0 -0
  382. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/visualization/__init__.py +0 -0
  383. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/visualization/api.py +0 -0
  384. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/visualization/dashboard.py +0 -0
  385. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/visualization/performance.py +0 -0
  386. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/visualization/reports.py +0 -0
  387. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/__init__.py +0 -0
  388. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/async_builder.py +0 -0
  389. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/async_patterns.py +0 -0
  390. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/builder.py +0 -0
  391. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/contracts.py +0 -0
  392. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/convergence.py +0 -0
  393. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_analyzer.py +0 -0
  394. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_builder.py +0 -0
  395. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_config.py +0 -0
  396. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_debugger.py +0 -0
  397. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_exceptions.py +0 -0
  398. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_profiler.py +0 -0
  399. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cycle_state.py +0 -0
  400. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/cyclic_runner.py +0 -0
  401. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/edge_infrastructure.py +0 -0
  402. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/graph.py +0 -0
  403. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/input_handling.py +0 -0
  404. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/mermaid_visualizer.py +0 -0
  405. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/migration.py +0 -0
  406. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/mock_registry.py +0 -0
  407. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/resilience.py +0 -0
  408. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/runner.py +0 -0
  409. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/safety.py +0 -0
  410. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/state.py +0 -0
  411. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/templates.py +0 -0
  412. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/type_inference.py +0 -0
  413. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/validation.py +0 -0
  414. {kailash-0.9.10 → kailash-0.9.12}/src/kailash/workflow/visualization.py +0 -0
  415. {kailash-0.9.10 → kailash-0.9.12}/src/kailash.egg-info/SOURCES.txt +0 -0
  416. {kailash-0.9.10 → kailash-0.9.12}/src/kailash.egg-info/dependency_links.txt +0 -0
  417. {kailash-0.9.10 → kailash-0.9.12}/src/kailash.egg-info/entry_points.txt +0 -0
  418. {kailash-0.9.10 → kailash-0.9.12}/src/kailash.egg-info/not-zip-safe +0 -0
  419. {kailash-0.9.10 → kailash-0.9.12}/src/kailash.egg-info/requires.txt +0 -0
  420. {kailash-0.9.10 → kailash-0.9.12}/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.9.10
3
+ Version: 0.9.12
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
@@ -105,7 +105,7 @@ Dynamic: requires-python
105
105
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
106
106
  <img src="https://img.shields.io/badge/license-Apache%202.0%20with%20Additional%20Terms-orange.svg" alt="Apache 2.0 with Additional Terms">
107
107
  <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
108
- <img src="https://img.shields.io/badge/tests-2400%2B%20passing-brightgreen.svg" alt="Tests: 2400+ Passing">
108
+ <img src="https://img.shields.io/badge/tests-4000%2B%20passing-brightgreen.svg" alt="Tests: 4000+ Passing">
109
109
  <img src="https://img.shields.io/badge/performance-11x%20faster-yellow.svg" alt="Performance: 11x Faster">
110
110
  <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
111
111
  <img src="https://img.shields.io/badge/AI-MCP%20validated-purple.svg" alt="AI: MCP Validated">
@@ -158,7 +158,7 @@ Not just a toolkit - complete production-ready applications built on enterprise-
158
158
  - **11x faster test execution** (117s → 10.75s) with smart isolation
159
159
  - **31.8M operations/second** query performance baseline
160
160
  - **30,000+ iterations/second** cyclic workflow execution
161
- - **100% test pass rate** across 2,400+ tests
161
+ - **100% test pass rate** across 4,000+ tests
162
162
 
163
163
  ### 🤖 **AI-First Architecture**
164
164
  - **A2A Google Protocol** for enterprise multi-agent coordination
@@ -198,7 +198,7 @@ kailash_python_sdk/
198
198
  │ ├── kailash-mcp/ # Enterprise MCP platform
199
199
  │ ├── ai_registry/ # Advanced RAG capabilities
200
200
  │ └── user_management/ # Enterprise RBAC system
201
- ├── tests/ # 2,400+ tests (100% pass rate)
201
+ ├── tests/ # 4,000+ tests (100% pass rate)
202
202
  ├── docs/ # Comprehensive documentation
203
203
  └── examples/ # Feature validation examples
204
204
  ```
@@ -299,7 +299,7 @@ results, run_id = runtime.execute(workflow.build())
299
299
  ## 🎯 Key Features
300
300
 
301
301
  ### 🧪 **Testing Excellence**
302
- - **2,400+ tests** with 100% pass rate
302
+ - **4,000+ tests** with 100% pass rate
303
303
  - **11x performance improvement** (117s → 10.75s execution)
304
304
  - **Docker integration** for real PostgreSQL, Redis, MongoDB
305
305
  - **Smart isolation** without process forking overhead
@@ -347,7 +347,7 @@ results, run_id = runtime.execute(workflow.build())
347
347
 
348
348
  ### Recent Achievements
349
349
  - **11x faster test execution**: 117s → 10.75s with smart isolation
350
- - **100% test pass rate**: 2,400+ tests across all categories
350
+ - **100% test pass rate**: 4,000+ tests across all categories
351
351
  - **31.8M operations/second**: Query performance baseline
352
352
  - **30,000+ iterations/second**: Cyclic workflow execution
353
353
 
@@ -401,7 +401,7 @@ pip install kailash-user-management
401
401
 
402
402
  ### Comprehensive Test Suite
403
403
  ```bash
404
- # All tests (2,400+ tests)
404
+ # All tests (4,000+ tests)
405
405
  pytest
406
406
 
407
407
  # Fast unit tests (11x faster execution)
@@ -496,7 +496,7 @@ git clone https://github.com/integrum/kailash-python-sdk.git
496
496
  cd kailash-python-sdk
497
497
  uv sync
498
498
 
499
- # Run tests (2,400+ tests)
499
+ # Run tests (4,000+ tests)
500
500
  pytest tests/unit/ --timeout=1 # Fast unit tests
501
501
  pytest tests/integration/ --timeout=5 # Integration tests
502
502
  pytest tests/e2e/ --timeout=10 # End-to-end tests
@@ -529,7 +529,7 @@ See [Contributing Guide](CONTRIBUTING.md) and [sdk-contributors/CLAUDE.md](sdk-c
529
529
  - **Complete Application Framework**: DataFlow, Nexus, AI Registry, User Management
530
530
  - **PyPI Integration**: All packages available with proper extras support
531
531
  - **Performance Breakthrough**: 11x faster test execution
532
- - **Testing Excellence**: 2,400+ tests with 100% pass rate
532
+ - **Testing Excellence**: 4,000+ tests with 100% pass rate
533
533
  - **Enterprise Ready**: Production deployment patterns
534
534
 
535
535
  ### ✅ v0.7.0 - Major Framework Release
@@ -6,7 +6,7 @@
6
6
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
7
7
  <img src="https://img.shields.io/badge/license-Apache%202.0%20with%20Additional%20Terms-orange.svg" alt="Apache 2.0 with Additional Terms">
8
8
  <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
9
- <img src="https://img.shields.io/badge/tests-2400%2B%20passing-brightgreen.svg" alt="Tests: 2400+ Passing">
9
+ <img src="https://img.shields.io/badge/tests-4000%2B%20passing-brightgreen.svg" alt="Tests: 4000+ Passing">
10
10
  <img src="https://img.shields.io/badge/performance-11x%20faster-yellow.svg" alt="Performance: 11x Faster">
11
11
  <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
12
12
  <img src="https://img.shields.io/badge/AI-MCP%20validated-purple.svg" alt="AI: MCP Validated">
@@ -59,7 +59,7 @@ Not just a toolkit - complete production-ready applications built on enterprise-
59
59
  - **11x faster test execution** (117s → 10.75s) with smart isolation
60
60
  - **31.8M operations/second** query performance baseline
61
61
  - **30,000+ iterations/second** cyclic workflow execution
62
- - **100% test pass rate** across 2,400+ tests
62
+ - **100% test pass rate** across 4,000+ tests
63
63
 
64
64
  ### 🤖 **AI-First Architecture**
65
65
  - **A2A Google Protocol** for enterprise multi-agent coordination
@@ -99,7 +99,7 @@ kailash_python_sdk/
99
99
  │ ├── kailash-mcp/ # Enterprise MCP platform
100
100
  │ ├── ai_registry/ # Advanced RAG capabilities
101
101
  │ └── user_management/ # Enterprise RBAC system
102
- ├── tests/ # 2,400+ tests (100% pass rate)
102
+ ├── tests/ # 4,000+ tests (100% pass rate)
103
103
  ├── docs/ # Comprehensive documentation
104
104
  └── examples/ # Feature validation examples
105
105
  ```
@@ -200,7 +200,7 @@ results, run_id = runtime.execute(workflow.build())
200
200
  ## 🎯 Key Features
201
201
 
202
202
  ### 🧪 **Testing Excellence**
203
- - **2,400+ tests** with 100% pass rate
203
+ - **4,000+ tests** with 100% pass rate
204
204
  - **11x performance improvement** (117s → 10.75s execution)
205
205
  - **Docker integration** for real PostgreSQL, Redis, MongoDB
206
206
  - **Smart isolation** without process forking overhead
@@ -248,7 +248,7 @@ results, run_id = runtime.execute(workflow.build())
248
248
 
249
249
  ### Recent Achievements
250
250
  - **11x faster test execution**: 117s → 10.75s with smart isolation
251
- - **100% test pass rate**: 2,400+ tests across all categories
251
+ - **100% test pass rate**: 4,000+ tests across all categories
252
252
  - **31.8M operations/second**: Query performance baseline
253
253
  - **30,000+ iterations/second**: Cyclic workflow execution
254
254
 
@@ -302,7 +302,7 @@ pip install kailash-user-management
302
302
 
303
303
  ### Comprehensive Test Suite
304
304
  ```bash
305
- # All tests (2,400+ tests)
305
+ # All tests (4,000+ tests)
306
306
  pytest
307
307
 
308
308
  # Fast unit tests (11x faster execution)
@@ -397,7 +397,7 @@ git clone https://github.com/integrum/kailash-python-sdk.git
397
397
  cd kailash-python-sdk
398
398
  uv sync
399
399
 
400
- # Run tests (2,400+ tests)
400
+ # Run tests (4,000+ tests)
401
401
  pytest tests/unit/ --timeout=1 # Fast unit tests
402
402
  pytest tests/integration/ --timeout=5 # Integration tests
403
403
  pytest tests/e2e/ --timeout=10 # End-to-end tests
@@ -430,7 +430,7 @@ See [Contributing Guide](CONTRIBUTING.md) and [sdk-contributors/CLAUDE.md](sdk-c
430
430
  - **Complete Application Framework**: DataFlow, Nexus, AI Registry, User Management
431
431
  - **PyPI Integration**: All packages available with proper extras support
432
432
  - **Performance Breakthrough**: 11x faster test execution
433
- - **Testing Excellence**: 2,400+ tests with 100% pass rate
433
+ - **Testing Excellence**: 4,000+ tests with 100% pass rate
434
434
  - **Enterprise Ready**: Production deployment patterns
435
435
 
436
436
  ### ✅ v0.7.0 - Major Framework Release
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kailash"
7
- version = "0.9.10"
7
+ version = "0.9.12"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
@@ -50,7 +50,7 @@ except ImportError:
50
50
  # For backward compatibility
51
51
  WorkflowGraph = Workflow
52
52
 
53
- __version__ = "0.9.10"
53
+ __version__ = "0.9.12"
54
54
 
55
55
  __all__ = [
56
56
  # Core workflow components
@@ -434,22 +434,63 @@ class PostgreSQLAdapter(DatabaseAdapter):
434
434
  parameter_types: Optional[dict[str, str]] = None,
435
435
  ) -> Any:
436
436
  """Execute query and return results."""
437
+
438
+ import logging
439
+
440
+ logger = logging.getLogger(__name__)
441
+
437
442
  # Convert dict params to positional for asyncpg
438
443
  if isinstance(params, dict):
439
444
  # Simple parameter substitution for named params
440
- # In production, use a proper SQL parser
445
+ # Fix: Use proper ordering and safe replacement to avoid collisions
441
446
  import json
447
+ import logging
448
+
449
+ logger = logging.getLogger(__name__)
442
450
 
443
451
  query_params = []
444
452
  param_names = [] # Track parameter names for type mapping
445
- for i, (key, value) in enumerate(params.items(), 1):
446
- query = query.replace(f":{key}", f"${i}")
453
+
454
+ # Keep original order for parameter values, but do replacements safely
455
+ original_items = list(params.items())
456
+
457
+ # Create parameter values in original order
458
+ for key, value in original_items:
447
459
  param_names.append(key)
448
460
  # For PostgreSQL, lists should remain as lists for array operations
449
461
  # Only convert dicts to JSON strings
450
462
  if isinstance(value, dict):
451
463
  value = json.dumps(value)
464
+ # Fix for parameter $11 issue: Handle ambiguous integer values
465
+ # AsyncPG has trouble with certain integer values (especially 0)
466
+ # where it can't determine the PostgreSQL type automatically
467
+ elif isinstance(value, int) and value == 0:
468
+ # Keep as int but we'll add explicit casting in the query later
469
+ pass
452
470
  query_params.append(value)
471
+
472
+ # Replace parameters in the query, processing longer keys first to avoid collision
473
+ # Sort keys by length (descending) for replacement order only
474
+ keys_by_length = sorted(params.keys(), key=len, reverse=True)
475
+
476
+ for key in keys_by_length:
477
+ # Find the position of this key in the original order
478
+ position = (
479
+ next(i for i, (k, v) in enumerate(original_items) if k == key) + 1
480
+ )
481
+ value = original_items[position - 1][1] # Get the actual value
482
+
483
+ # Fix for parameter $11 issue: Add explicit type casting for ambiguous values
484
+ # Note: Check boolean first since bool is a subclass of int in Python
485
+ if isinstance(value, bool):
486
+ # Cast boolean parameters to avoid type ambiguity
487
+ query = query.replace(f":{key}", f"${position}::boolean")
488
+ elif isinstance(value, int):
489
+ # Cast integer parameters to avoid PostgreSQL type determination issues
490
+ query = query.replace(f":{key}", f"${position}::integer")
491
+ else:
492
+ query = query.replace(f":{key}", f"${position}")
493
+
453
494
  params = query_params
454
495
 
455
496
  # Apply parameter type casts if provided
@@ -462,6 +503,8 @@ class PostgreSQLAdapter(DatabaseAdapter):
462
503
  query = query.replace(f"${i}", f"${i}::{pg_type}")
463
504
 
464
505
  else:
506
+ # Parameters are not dict - they might be list/tuple
507
+
465
508
  # For positional params, apply type casts if provided
466
509
  if parameter_types and isinstance(params, (list, tuple)):
467
510
  # Build query with type casts for positional parameters
@@ -671,9 +714,11 @@ class MySQLAdapter(DatabaseAdapter):
671
714
  fetch_mode: FetchMode = FetchMode.ALL,
672
715
  fetch_size: Optional[int] = None,
673
716
  transaction: Optional[Any] = None,
717
+ parameter_types: Optional[dict[str, str]] = None,
674
718
  ) -> Any:
675
719
  """Execute query and return results."""
676
720
  # Use transaction connection if provided, otherwise get from pool
721
+ # Note: parameter_types is only used by PostgreSQL adapter
677
722
  if transaction:
678
723
  conn = transaction
679
724
  async with conn.cursor() as cursor:
@@ -774,6 +819,10 @@ class MySQLAdapter(DatabaseAdapter):
774
819
  class SQLiteAdapter(DatabaseAdapter):
775
820
  """SQLite adapter using aiosqlite."""
776
821
 
822
+ # Class-level shared connections for memory databases to solve isolation issues
823
+ _shared_memory_connections = {}
824
+ _connection_locks = {}
825
+
777
826
  async def connect(self) -> None:
778
827
  """Establish connection pool."""
779
828
  try:
@@ -784,13 +833,71 @@ class SQLiteAdapter(DatabaseAdapter):
784
833
  )
785
834
 
786
835
  # SQLite doesn't have true connection pooling
787
- # We'll manage a single connection for simplicity
836
+ # We'll manage connections based on database type
788
837
  self._aiosqlite = aiosqlite
789
- self._db_path = self.config.database
838
+
839
+ # Extract database path from connection string if database path not provided
840
+ if self.config.database:
841
+ self._db_path = self.config.database
842
+ elif self.config.connection_string:
843
+ # Parse SQLite connection string formats:
844
+ # sqlite:///path/to/file.db (absolute path)
845
+ # sqlite://path/to/file.db (relative path - rare)
846
+ # file:path/to/file.db (file URI scheme)
847
+ conn_str = self.config.connection_string
848
+ if conn_str.startswith("sqlite:///"):
849
+ # Absolute path: sqlite:///path/to/file.db -> /path/to/file.db
850
+ # Special case: sqlite:///:memory: -> :memory:
851
+ path_part = conn_str[9:] # Remove "sqlite://" to keep the leading slash
852
+ if path_part == "/:memory:":
853
+ self._db_path = ":memory:"
854
+ else:
855
+ self._db_path = path_part
856
+ elif conn_str.startswith("sqlite://"):
857
+ # Relative path: sqlite://path/to/file.db -> path/to/file.db
858
+ self._db_path = conn_str[9:] # Remove "sqlite://"
859
+ elif conn_str.startswith("file:"):
860
+ # File URI: file:path/to/file.db -> path/to/file.db
861
+ self._db_path = conn_str[5:] # Remove "file:"
862
+ else:
863
+ # Assume the connection string IS the path
864
+ self._db_path = conn_str
865
+ else:
866
+ raise NodeExecutionError(
867
+ "SQLite requires either 'database' path or 'connection_string'"
868
+ )
869
+
870
+ # Set up connection sharing for memory databases to prevent isolation
871
+ self._is_memory_db = self._db_path == ":memory:"
872
+ if self._is_memory_db:
873
+ import asyncio
874
+
875
+ # All :memory: databases should share the same connection to avoid isolation
876
+ self._memory_key = "global_memory_db"
877
+ if self._memory_key not in self._connection_locks:
878
+ self._connection_locks[self._memory_key] = asyncio.Lock()
879
+
880
+ async def _get_connection(self):
881
+ """Get a database connection, using shared connection for memory databases."""
882
+ if self._is_memory_db:
883
+ # Use shared connection for memory databases to prevent isolation
884
+ async with self._connection_locks[self._memory_key]:
885
+ if self._memory_key not in self._shared_memory_connections:
886
+ # Create the shared memory connection
887
+ conn = await self._aiosqlite.connect(self._db_path)
888
+ conn.row_factory = self._aiosqlite.Row
889
+ self._shared_memory_connections[self._memory_key] = conn
890
+ return self._shared_memory_connections[self._memory_key]
891
+ else:
892
+ # For file databases, create new connections as before
893
+ conn = await self._aiosqlite.connect(self._db_path)
894
+ conn.row_factory = self._aiosqlite.Row
895
+ return conn
790
896
 
791
897
  async def disconnect(self) -> None:
792
898
  """Close connection."""
793
- # Connections are managed per-operation for SQLite
899
+ # For memory databases, we keep the shared connection alive
900
+ # For file databases, connections are managed per-operation
794
901
  pass
795
902
 
796
903
  async def execute(
@@ -800,6 +907,7 @@ class SQLiteAdapter(DatabaseAdapter):
800
907
  fetch_mode: FetchMode = FetchMode.ALL,
801
908
  fetch_size: Optional[int] = None,
802
909
  transaction: Optional[Any] = None,
910
+ parameter_types: Optional[dict[str, str]] = None,
803
911
  ) -> Any:
804
912
  """Execute query and return results."""
805
913
  if transaction:
@@ -820,21 +928,43 @@ class SQLiteAdapter(DatabaseAdapter):
820
928
  return [self._convert_row(dict(row)) for row in rows]
821
929
  else:
822
930
  # Create new connection for non-transactional queries
823
- async with self._aiosqlite.connect(self._db_path) as db:
824
- db.row_factory = self._aiosqlite.Row
931
+ if self._is_memory_db:
932
+ # Use shared connection for memory databases
933
+ db = await self._get_connection()
825
934
  cursor = await db.execute(query, params or [])
826
935
 
827
936
  if fetch_mode == FetchMode.ONE:
828
937
  row = await cursor.fetchone()
829
- return self._convert_row(dict(row)) if row else None
938
+ result = self._convert_row(dict(row)) if row else None
830
939
  elif fetch_mode == FetchMode.ALL:
831
940
  rows = await cursor.fetchall()
832
- return [self._convert_row(dict(row)) for row in rows]
941
+ result = [self._convert_row(dict(row)) for row in rows]
833
942
  elif fetch_mode == FetchMode.MANY:
834
943
  if not fetch_size:
835
944
  raise ValueError("fetch_size required for MANY mode")
836
945
  rows = await cursor.fetchmany(fetch_size)
837
- return [self._convert_row(dict(row)) for row in rows]
946
+ result = [self._convert_row(dict(row)) for row in rows]
947
+
948
+ # Commit for memory databases (needed for INSERT/UPDATE/DELETE)
949
+ await db.commit()
950
+ return result
951
+ else:
952
+ # Use context manager for file databases
953
+ async with self._aiosqlite.connect(self._db_path) as db:
954
+ db.row_factory = self._aiosqlite.Row
955
+ cursor = await db.execute(query, params or [])
956
+
957
+ if fetch_mode == FetchMode.ONE:
958
+ row = await cursor.fetchone()
959
+ return self._convert_row(dict(row)) if row else None
960
+ elif fetch_mode == FetchMode.ALL:
961
+ rows = await cursor.fetchall()
962
+ return [self._convert_row(dict(row)) for row in rows]
963
+ elif fetch_mode == FetchMode.MANY:
964
+ if not fetch_size:
965
+ raise ValueError("fetch_size required for MANY mode")
966
+ rows = await cursor.fetchmany(fetch_size)
967
+ return [self._convert_row(dict(row)) for row in rows]
838
968
 
839
969
  await db.commit()
840
970
 
@@ -851,26 +981,44 @@ class SQLiteAdapter(DatabaseAdapter):
851
981
  # Don't commit here - let transaction handling do it
852
982
  else:
853
983
  # Create new connection for non-transactional queries
854
- async with self._aiosqlite.connect(self._db_path) as db:
984
+ if self._is_memory_db:
985
+ # Use shared connection for memory databases
986
+ db = await self._get_connection()
855
987
  await db.executemany(query, params_list)
856
988
  await db.commit()
989
+ else:
990
+ # Use context manager for file databases
991
+ async with self._aiosqlite.connect(self._db_path) as db:
992
+ await db.executemany(query, params_list)
993
+ await db.commit()
857
994
 
858
995
  async def begin_transaction(self) -> Any:
859
996
  """Begin a transaction."""
860
- db = await self._aiosqlite.connect(self._db_path)
861
- db.row_factory = self._aiosqlite.Row
862
- await db.execute("BEGIN")
863
- return db
997
+ if self._is_memory_db:
998
+ # Use shared connection for memory databases
999
+ db = await self._get_connection()
1000
+ await db.execute("BEGIN")
1001
+ return db
1002
+ else:
1003
+ # Create new connection for file databases
1004
+ db = await self._aiosqlite.connect(self._db_path)
1005
+ db.row_factory = self._aiosqlite.Row
1006
+ await db.execute("BEGIN")
1007
+ return db
864
1008
 
865
1009
  async def commit_transaction(self, transaction: Any) -> None:
866
1010
  """Commit a transaction."""
867
1011
  await transaction.commit()
868
- await transaction.close()
1012
+ # Don't close shared memory connections
1013
+ if not self._is_memory_db:
1014
+ await transaction.close()
869
1015
 
870
1016
  async def rollback_transaction(self, transaction: Any) -> None:
871
1017
  """Rollback a transaction."""
872
1018
  await transaction.rollback()
873
- await transaction.close()
1019
+ # Don't close shared memory connections
1020
+ if not self._is_memory_db:
1021
+ await transaction.close()
874
1022
 
875
1023
 
876
1024
  class DatabaseConfigManager:
@@ -1421,8 +1569,44 @@ class AsyncSQLDatabaseNode(AsyncNode):
1421
1569
  # Re-initialize instance variables with updated config
1422
1570
  self._reinitialize_from_config()
1423
1571
 
1424
- # Validate database type
1572
+ # Auto-detect database type from connection string if not explicitly set
1425
1573
  db_type = self.config.get("database_type", "").lower()
1574
+ connection_string = self.config.get("connection_string")
1575
+
1576
+ # If database_type is the default and we have a connection string, try to auto-detect
1577
+ if (
1578
+ db_type == "postgresql"
1579
+ and connection_string
1580
+ and self.config.get("database_type")
1581
+ == self.get_parameters()["database_type"].default
1582
+ ):
1583
+ try:
1584
+ # Simple detection based on connection string patterns
1585
+ conn_lower = connection_string.lower()
1586
+ if (
1587
+ connection_string == ":memory:"
1588
+ or conn_lower.endswith(".db")
1589
+ or conn_lower.endswith(".sqlite")
1590
+ or conn_lower.endswith(".sqlite3")
1591
+ or conn_lower.startswith("sqlite")
1592
+ or
1593
+ # File path without URL scheme (likely SQLite)
1594
+ ("/" in connection_string and "://" not in connection_string)
1595
+ ):
1596
+ db_type = "sqlite"
1597
+ self.config["database_type"] = "sqlite"
1598
+ elif conn_lower.startswith("mysql"):
1599
+ db_type = "mysql"
1600
+ self.config["database_type"] = "mysql"
1601
+ elif conn_lower.startswith(("postgresql", "postgres")):
1602
+ db_type = "postgresql"
1603
+ self.config["database_type"] = "postgresql"
1604
+ # Otherwise keep default postgresql
1605
+ except Exception:
1606
+ # If detection fails, keep the default
1607
+ pass
1608
+
1609
+ # Validate database type
1426
1610
  if db_type not in ["postgresql", "mysql", "sqlite"]:
1427
1611
  raise NodeValidationError(
1428
1612
  f"Invalid database_type: {db_type}. "
@@ -1908,6 +2092,9 @@ class AsyncSQLDatabaseNode(AsyncNode):
1908
2092
  except Exception as e:
1909
2093
  last_error = e
1910
2094
 
2095
+ # Parameter type determination is now handled during dict-to-positional conversion
2096
+ # No special retry logic needed for parameter $11
2097
+
1911
2098
  # Check if error is retryable
1912
2099
  if not self._retry_config.should_retry(e):
1913
2100
  raise
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kailash
3
- Version: 0.9.10
3
+ Version: 0.9.12
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
@@ -105,7 +105,7 @@ Dynamic: requires-python
105
105
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
106
106
  <img src="https://img.shields.io/badge/license-Apache%202.0%20with%20Additional%20Terms-orange.svg" alt="Apache 2.0 with Additional Terms">
107
107
  <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
108
- <img src="https://img.shields.io/badge/tests-2400%2B%20passing-brightgreen.svg" alt="Tests: 2400+ Passing">
108
+ <img src="https://img.shields.io/badge/tests-4000%2B%20passing-brightgreen.svg" alt="Tests: 4000+ Passing">
109
109
  <img src="https://img.shields.io/badge/performance-11x%20faster-yellow.svg" alt="Performance: 11x Faster">
110
110
  <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
111
111
  <img src="https://img.shields.io/badge/AI-MCP%20validated-purple.svg" alt="AI: MCP Validated">
@@ -158,7 +158,7 @@ Not just a toolkit - complete production-ready applications built on enterprise-
158
158
  - **11x faster test execution** (117s → 10.75s) with smart isolation
159
159
  - **31.8M operations/second** query performance baseline
160
160
  - **30,000+ iterations/second** cyclic workflow execution
161
- - **100% test pass rate** across 2,400+ tests
161
+ - **100% test pass rate** across 4,000+ tests
162
162
 
163
163
  ### 🤖 **AI-First Architecture**
164
164
  - **A2A Google Protocol** for enterprise multi-agent coordination
@@ -198,7 +198,7 @@ kailash_python_sdk/
198
198
  │ ├── kailash-mcp/ # Enterprise MCP platform
199
199
  │ ├── ai_registry/ # Advanced RAG capabilities
200
200
  │ └── user_management/ # Enterprise RBAC system
201
- ├── tests/ # 2,400+ tests (100% pass rate)
201
+ ├── tests/ # 4,000+ tests (100% pass rate)
202
202
  ├── docs/ # Comprehensive documentation
203
203
  └── examples/ # Feature validation examples
204
204
  ```
@@ -299,7 +299,7 @@ results, run_id = runtime.execute(workflow.build())
299
299
  ## 🎯 Key Features
300
300
 
301
301
  ### 🧪 **Testing Excellence**
302
- - **2,400+ tests** with 100% pass rate
302
+ - **4,000+ tests** with 100% pass rate
303
303
  - **11x performance improvement** (117s → 10.75s execution)
304
304
  - **Docker integration** for real PostgreSQL, Redis, MongoDB
305
305
  - **Smart isolation** without process forking overhead
@@ -347,7 +347,7 @@ results, run_id = runtime.execute(workflow.build())
347
347
 
348
348
  ### Recent Achievements
349
349
  - **11x faster test execution**: 117s → 10.75s with smart isolation
350
- - **100% test pass rate**: 2,400+ tests across all categories
350
+ - **100% test pass rate**: 4,000+ tests across all categories
351
351
  - **31.8M operations/second**: Query performance baseline
352
352
  - **30,000+ iterations/second**: Cyclic workflow execution
353
353
 
@@ -401,7 +401,7 @@ pip install kailash-user-management
401
401
 
402
402
  ### Comprehensive Test Suite
403
403
  ```bash
404
- # All tests (2,400+ tests)
404
+ # All tests (4,000+ tests)
405
405
  pytest
406
406
 
407
407
  # Fast unit tests (11x faster execution)
@@ -496,7 +496,7 @@ git clone https://github.com/integrum/kailash-python-sdk.git
496
496
  cd kailash-python-sdk
497
497
  uv sync
498
498
 
499
- # Run tests (2,400+ tests)
499
+ # Run tests (4,000+ tests)
500
500
  pytest tests/unit/ --timeout=1 # Fast unit tests
501
501
  pytest tests/integration/ --timeout=5 # Integration tests
502
502
  pytest tests/e2e/ --timeout=10 # End-to-end tests
@@ -529,7 +529,7 @@ See [Contributing Guide](CONTRIBUTING.md) and [sdk-contributors/CLAUDE.md](sdk-c
529
529
  - **Complete Application Framework**: DataFlow, Nexus, AI Registry, User Management
530
530
  - **PyPI Integration**: All packages available with proper extras support
531
531
  - **Performance Breakthrough**: 11x faster test execution
532
- - **Testing Excellence**: 2,400+ tests with 100% pass rate
532
+ - **Testing Excellence**: 4,000+ tests with 100% pass rate
533
533
  - **Enterprise Ready**: Production deployment patterns
534
534
 
535
535
  ### ✅ v0.7.0 - Major Framework Release
File without changes
File without changes
File without changes
File without changes
File without changes