kailash 0.8.5__tar.gz → 0.8.7__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.
- {kailash-0.8.5/src/kailash.egg-info → kailash-0.8.7}/PKG-INFO +20 -17
- {kailash-0.8.5 → kailash-0.8.7}/README.md +18 -16
- {kailash-0.8.5 → kailash-0.8.7}/pyproject.toml +4 -3
- {kailash-0.8.5 → kailash-0.8.7}/setup.py +4 -4
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/__init__.py +5 -5
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/__init__.py +2 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/mcp_channel.py +23 -4
- kailash-0.8.7/src/kailash/cli/validate_imports.py +202 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/bulkhead.py +15 -5
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/circuit_breaker.py +4 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/health_monitor.py +312 -84
- kailash-0.8.7/src/kailash/edge/migration/edge_migration_service.py +384 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/protocol.py +26 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/server.py +1081 -8
- kailash-0.8.7/src/kailash/mcp_server/subscriptions.py +1560 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/transports.py +305 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/event_store.py +1 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base.py +77 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/code/python.py +44 -3
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/async_sql.py +42 -20
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_migration_node.py +16 -12
- kailash-0.8.7/src/kailash/nodes/governance.py +410 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/registry.py +1 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/distributed_transaction_manager.py +48 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/saga_state_storage.py +2 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation.py +8 -8
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/local.py +30 -0
- kailash-0.8.7/src/kailash/runtime/validation/__init__.py +12 -0
- kailash-0.8.7/src/kailash/runtime/validation/import_validator.py +446 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/suggestion_engine.py +5 -5
- kailash-0.8.7/src/kailash/utils/data_paths.py +74 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/builder.py +183 -4
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/mermaid_visualizer.py +3 -1
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/templates.py +6 -6
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/validation.py +134 -3
- {kailash-0.8.5 → kailash-0.8.7/src/kailash.egg-info}/PKG-INFO +20 -17
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/SOURCES.txt +6 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/requires.txt +1 -0
- kailash-0.8.5/src/kailash/runtime/validation/__init__.py +0 -20
- {kailash-0.8.5 → kailash-0.8.7}/LICENSE +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/MANIFEST.in +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/setup.cfg +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/__main__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control/managers.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control/rule_evaluators.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control_abac.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/adapters/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/auth.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/custom_nodes.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/custom_nodes_secure.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/gateway.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/mcp_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/studio.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/workflow_api.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/api_channel.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/base.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/cli_channel.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/event_router.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/session.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/cli/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/cli/commands.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/cli/validation_audit.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/client/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/client/enhanced_client.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/config/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/config/database_config.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/connection_actor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/supervisor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/ml/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/ml/query_patterns.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/monitoring/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/monitoring/connection_metrics.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/optimization/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/database/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/database/execution_pipeline.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/compliance.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/consistency.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/global_ordering.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/leader_election.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/partition_detector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/raft.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/discovery.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/location.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/migration/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/migration/edge_migrator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/monitoring/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/prediction/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/cloud_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/cost_optimizer.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/docker_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/platform_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/predictive_scaler.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/resource_analyzer.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/resource_pools.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/api.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/enhanced_gateway.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/resource_resolver.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/security.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/integrations/dataflow_edge.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/manifest.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/advanced_features.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/ai_registry_server.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/auth.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/client.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/client_new.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/discovery.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/errors.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/oauth.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/registry_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/cache.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/config.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/formatters.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/metrics.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/access_control.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/auth_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/exceptions.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/jwt_auth.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/models.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/utils.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/ai_chat.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/api_gateway.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/events.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/realtime.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/agent_ui.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/schema.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/workflows.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/base.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/base_models.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/enums.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/migrations.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/models.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/repositories.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/session_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/deduplicator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/durable_request.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/storage_backends.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/mcp/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/mcp/client_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/monitoring/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/monitoring/alerts.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/monitoring/metrics.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/audit_log.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/permission_check.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/role_management.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/schema.sql +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/schema_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/security_event.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/transaction_utils.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/user_management.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/a2a.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/a2a_backup.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/agents.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/ai_providers.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/embedding_generator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/hybrid_search.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/llm_agent.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/models.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/self_organizing.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/semantic_memory.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/vision_utils.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/alerts/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/alerts/base.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/alerts/discord.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/auth.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/graphql.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/http.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/monitoring.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/rate_limiting.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/rest.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/security.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/directory_integration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/mfa.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/risk_assessment.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/session_management.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/sso.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base_async.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base_cycle_aware.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base_with_acl.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/cache.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/code/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/code/async_python.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/compliance/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/compliance/data_retention.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/compliance/gdpr.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/async_connection.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/async_vector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/bulk_operations.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/directory.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/event_generation.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/file_discovery.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/optimistic_locking.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_builder.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_cache.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_pipeline.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_router.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/readers.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/redis.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/retrieval.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/sources.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/sql.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/streaming.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/vector_db.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/writers.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/base.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/cloud_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/coordination.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/docker_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_data.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_state.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/platform_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/async_operations.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/convergence.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/loop.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/operations.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/workflow.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/event_emitter.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/mcp.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/security.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/health_check.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/log_processor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ports.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/advanced.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/agentic.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/conversational.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/evaluation.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/federated.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/graph.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/multimodal.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/optimized.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/privacy.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/query_processing.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/realtime.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/router.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/similarity.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/strategies.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/workflows.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/abac_evaluator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/audit_log.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/behavior_analysis.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/credential_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/rotating_credentials.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/security_event.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/threat_detection.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/system/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/system/command_parser.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/testing/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/testing/credential_testing.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/saga_step.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/transaction_context.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/chunkers.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/formatters.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/processors.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation/test_executor.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation/validation_nodes.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/factory.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/health.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/reference.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/registry.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/access_controlled.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/async_local.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/docker.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parallel.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parallel_cyclic.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parameter_injection.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parameter_injector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/runner.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/secret_provider.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/testing.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/connection_context.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/error_categorizer.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/metrics.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/performance.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/sdk_exceptions.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/security.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/durable_workflow_server.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/enterprise_workflow_server.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/gateway.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/workflow_server.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/async_test_case.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/async_utils.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/fixtures.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/mock_registry.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/metrics_collector.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/models.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/base.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/database.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/filesystem.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/data_validation.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/export.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/generator.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/models.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/runner.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/resource_manager.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/secure_logging.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/templates.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/api.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/dashboard.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/performance.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/reports.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/__init__.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/async_builder.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/async_patterns.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/contracts.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/convergence.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_analyzer.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_builder.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_config.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_debugger.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_exceptions.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_profiler.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_state.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cyclic_runner.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/edge_infrastructure.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/graph.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/input_handling.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/migration.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/mock_registry.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/resilience.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/runner.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/safety.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/state.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/type_inference.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/visualization.py +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/dependency_links.txt +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/entry_points.txt +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/not-zip-safe +0 -0
- {kailash-0.8.5 → kailash-0.8.7}/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.
|
3
|
+
Version: 0.8.7
|
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
|
@@ -81,6 +81,7 @@ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.55b1
|
|
81
81
|
Requires-Dist: seaborn>=0.13.2
|
82
82
|
Requires-Dist: sqlparse>=0.5.3
|
83
83
|
Requires-Dist: jsonschema>=4.24.0
|
84
|
+
Requires-Dist: openai>=1.97.1
|
84
85
|
Provides-Extra: dev
|
85
86
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
86
87
|
Requires-Dist: pytest-cov>=3.0; extra == "dev"
|
@@ -116,18 +117,18 @@ Dynamic: requires-python
|
|
116
117
|
|
117
118
|
---
|
118
119
|
|
119
|
-
## 🔥 Latest Release: v0.8.
|
120
|
+
## 🔥 Latest Release: v0.8.5 (January 20, 2025)
|
120
121
|
|
121
|
-
**
|
122
|
+
**Architecture Cleanup & Enterprise Security**
|
122
123
|
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
-
|
128
|
-
- ✅ **
|
124
|
+
- 🏗️ **Architecture Clarity**: Removed confusing `src/kailash/nexus` module
|
125
|
+
- 🔒 **Connection Validation**: Enterprise-grade parameter validation with type safety
|
126
|
+
- 🌐 **Edge Computing**: 50+ new nodes for geo-distributed infrastructure
|
127
|
+
- 📊 **Advanced Monitoring**: AlertManager with proactive threshold monitoring
|
128
|
+
- 🚀 **Performance**: <1ms validation overhead with intelligent caching
|
129
|
+
- ✅ **Breaking Changes**: See [migration guide](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md)
|
129
130
|
|
130
|
-
[Full Changelog](
|
131
|
+
[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
132
|
|
132
133
|
## 🎯 What Makes Kailash Different
|
133
134
|
|
@@ -344,7 +345,7 @@ results, run_id = runtime.execute(workflow.build())
|
|
344
345
|
|
345
346
|
## 🚀 Applications Built with Kailash
|
346
347
|
|
347
|
-
### 1. DataFlow - Zero-Config Database Platform
|
348
|
+
### 1. DataFlow - Zero-Config Database Platform (v0.3.1)
|
348
349
|
```bash
|
349
350
|
pip install kailash-dataflow
|
350
351
|
```
|
@@ -352,8 +353,9 @@ pip install kailash-dataflow
|
|
352
353
|
- **Redis caching** with enterprise-grade invalidation
|
353
354
|
- **Automatic API generation** with OpenAPI documentation
|
354
355
|
- **4 production examples** with complete deployment guides
|
356
|
+
- **Latest**: v0.3.1 - Enhanced transaction support and schema management
|
355
357
|
|
356
|
-
### 2. Nexus - Multi-Channel Platform
|
358
|
+
### 2. Nexus - Multi-Channel Platform (v1.0.3)
|
357
359
|
```bash
|
358
360
|
pip install kailash-nexus
|
359
361
|
```
|
@@ -361,6 +363,7 @@ pip install kailash-nexus
|
|
361
363
|
- **Enterprise orchestration** with multi-tenancy
|
362
364
|
- **Session management** with cross-channel synchronization
|
363
365
|
- **105 tests** with comprehensive validation
|
366
|
+
- **Latest**: v1.0.3 - Production-ready release with enhanced stability
|
364
367
|
|
365
368
|
### 3. AI Registry - Advanced RAG Platform
|
366
369
|
```bash
|
@@ -421,8 +424,8 @@ pytest tests/e2e/ --timeout=10
|
|
421
424
|
|
422
425
|
### For Users
|
423
426
|
- **[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
|
427
|
+
- **[Node Selection Guide](sdk-users/2-core-concepts/nodes/node-selection-guide.md)**: Smart node selection with decision trees
|
428
|
+
- **[Enterprise Patterns](sdk-users/5-enterprise/)**: Production deployment patterns
|
426
429
|
- **[API Documentation](https://integrum.github.io/kailash-python-sdk)**: Complete API reference
|
427
430
|
|
428
431
|
### For Contributors
|
@@ -431,9 +434,9 @@ pytest tests/e2e/ --timeout=10
|
|
431
434
|
- **[Testing Guide](tests/README.md)**: 3-tier testing strategy
|
432
435
|
|
433
436
|
### 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
|
437
|
+
- **[Cheatsheet](sdk-users/2-core-concepts/cheatsheet/)**: 53 copy-paste patterns
|
438
|
+
- **[Common Mistakes](sdk-users/2-core-concepts/validation/common-mistakes.md)**: Error patterns and solutions
|
439
|
+
- **[Performance Guide](sdk-users/5-enterprise/performance/)**: Optimization patterns
|
437
440
|
|
438
441
|
## 🚢 Production Deployment
|
439
442
|
|
@@ -22,18 +22,18 @@
|
|
22
22
|
|
23
23
|
---
|
24
24
|
|
25
|
-
## 🔥 Latest Release: v0.8.
|
25
|
+
## 🔥 Latest Release: v0.8.5 (January 20, 2025)
|
26
26
|
|
27
|
-
**
|
27
|
+
**Architecture Cleanup & Enterprise Security**
|
28
28
|
|
29
|
-
-
|
30
|
-
-
|
31
|
-
-
|
32
|
-
-
|
33
|
-
-
|
34
|
-
- ✅ **
|
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](
|
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.
|
7
|
+
version = "0.8.7"
|
8
8
|
description = "Python SDK for the Kailash container-node architecture"
|
9
9
|
authors = [
|
10
10
|
{name = "Integrum", email = "info@integrum.com"}
|
@@ -85,6 +85,7 @@ dependencies = [
|
|
85
85
|
"seaborn>=0.13.2",
|
86
86
|
"sqlparse>=0.5.3",
|
87
87
|
"jsonschema>=4.24.0",
|
88
|
+
"openai>=1.97.1",
|
88
89
|
]
|
89
90
|
|
90
91
|
[project.optional-dependencies]
|
@@ -123,7 +124,7 @@ select = ["E", "F"]
|
|
123
124
|
ignore = ["E203", "E501", "E722", "F401", "F841"]
|
124
125
|
|
125
126
|
[tool.ruff.lint.per-file-ignores]
|
126
|
-
"sdk-users/workflows/by-industry/finance/scripts/*.py" = ["E402"]
|
127
|
+
"sdk-users/2-core-concepts/workflows/by-industry/finance/scripts/*.py" = ["E402"]
|
127
128
|
"examples/feature_examples/workflows/cyclic/*.py" = ["E722"]
|
128
129
|
"examples/feature_examples/workflows/parallel/*.py" = ["E722"]
|
129
130
|
"scripts/refactor-pythoncode-to-functions.py" = ["E722"]
|
@@ -136,7 +137,7 @@ ignore = ["E203", "E501", "E722", "F401", "F841"]
|
|
136
137
|
# Allow late imports in performance test files
|
137
138
|
"tests/unit/performance_benchmarks/*.py" = ["E402"]
|
138
139
|
# SDK user workflows may have late imports for demos
|
139
|
-
"sdk-users/workflows/**/*.py" = ["E402", "F821"]
|
140
|
+
"sdk-users/2-core-concepts/workflows/**/*.py" = ["E402", "F821"]
|
140
141
|
# Examples may have late imports and mocks
|
141
142
|
"examples/**/*.py" = ["E402", "F821"]
|
142
143
|
# 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
|
54
|
+
"kailash-dataflow>=0.3.1",
|
55
55
|
],
|
56
56
|
"nexus": [
|
57
|
-
"kailash-nexus>=1.0.
|
57
|
+
"kailash-nexus>=1.0.3",
|
58
58
|
],
|
59
59
|
"all": [
|
60
|
-
"kailash-dataflow>=0.1
|
61
|
-
"kailash-nexus>=1.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
|
7
|
-
|
8
|
-
|
9
|
-
Previous v0.
|
6
|
+
New in v0.8.7: MCP Parameter Validation Tool, 100% MCP Protocol compliance with missing
|
7
|
+
handlers, Phase 2 MCP subscriptions with GraphQL optimization, WebSocket compression, and
|
8
|
+
Redis-backed distributed coordination.
|
9
|
+
Previous v0.8.6: Enhanced parameter validation system with debugging tools.
|
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.
|
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
|
-
|
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
|
-
|
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
|
-
|
209
|
-
|
210
|
-
self._active_operations
|
211
|
-
|
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,
|
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:
|