kailash 0.9.15__tar.gz → 0.9.18__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.9.15/src/kailash.egg-info → kailash-0.9.18}/PKG-INFO +1 -1
- {kailash-0.9.15 → kailash-0.9.18}/pyproject.toml +1 -1
- {kailash-0.9.15 → kailash-0.9.18}/setup.py +1 -1
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/__init__.py +3 -3
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/base_models.py +7 -1
- kailash-0.9.18/src/kailash/migration/__init__.py +30 -0
- kailash-0.9.18/src/kailash/migration/cli.py +340 -0
- kailash-0.9.18/src/kailash/migration/compatibility_checker.py +662 -0
- kailash-0.9.18/src/kailash/migration/configuration_validator.py +837 -0
- kailash-0.9.18/src/kailash/migration/documentation_generator.py +1828 -0
- kailash-0.9.18/src/kailash/migration/examples/__init__.py +5 -0
- kailash-0.9.18/src/kailash/migration/examples/complete_migration_example.py +692 -0
- kailash-0.9.18/src/kailash/migration/migration_assistant.py +715 -0
- kailash-0.9.18/src/kailash/migration/performance_comparator.py +760 -0
- kailash-0.9.18/src/kailash/migration/regression_detector.py +1141 -0
- kailash-0.9.18/src/kailash/migration/tests/__init__.py +6 -0
- kailash-0.9.18/src/kailash/migration/tests/test_compatibility_checker.py +403 -0
- kailash-0.9.18/src/kailash/migration/tests/test_integration.py +463 -0
- kailash-0.9.18/src/kailash/migration/tests/test_migration_assistant.py +397 -0
- kailash-0.9.18/src/kailash/migration/tests/test_performance_comparator.py +433 -0
- kailash-0.9.18/src/kailash/monitoring/__init__.py +45 -0
- kailash-0.9.18/src/kailash/monitoring/asyncsql_metrics.py +301 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/llm_agent.py +176 -9
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/async_sql.py +1828 -33
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/local.py +1255 -8
- kailash-0.9.18/src/kailash/runtime/monitoring/__init__.py +1 -0
- kailash-0.9.18/src/kailash/runtime/monitoring/runtime_monitor.py +780 -0
- kailash-0.9.18/src/kailash/runtime/resource_manager.py +3033 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/sdk_exceptions.py +21 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cyclic_runner.py +18 -2
- {kailash-0.9.15 → kailash-0.9.18/src/kailash.egg-info}/PKG-INFO +1 -1
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash.egg-info/SOURCES.txt +19 -0
- kailash-0.9.15/src/kailash/monitoring/__init__.py +0 -18
- {kailash-0.9.15 → kailash-0.9.18}/LICENSE +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/MANIFEST.in +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/NOTICE +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/README.md +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/setup.cfg +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/__main__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/access_control/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/access_control/managers.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/access_control/rule_evaluators.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/access_control.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/access_control_abac.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/adapters/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/analysis/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/analysis/conditional_branch_analyzer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/auth.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/custom_nodes.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/custom_nodes_secure.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/gateway.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/mcp_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/studio.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/api/workflow_api.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/api_channel.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/base.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/cli_channel.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/event_router.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/mcp_channel.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/channels/session.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/cli/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/cli/commands.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/cli/validate_imports.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/cli/validation_audit.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/client/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/client/enhanced_client.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/config/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/config/database_config.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/actors/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/actors/connection_actor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/actors/supervisor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/ml/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/ml/query_patterns.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/monitoring/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/monitoring/connection_metrics.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/optimization/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/resilience/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/resilience/bulkhead.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/resilience/circuit_breaker.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/core/resilience/health_monitor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/database/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/database/execution_pipeline.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/compliance.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/consistency.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/coordination/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/coordination/global_ordering.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/coordination/leader_election.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/coordination/partition_detector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/coordination/raft.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/discovery.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/location.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/migration/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/migration/edge_migration_service.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/migration/edge_migrator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/monitoring/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/prediction/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/cloud_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/cost_optimizer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/docker_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/platform_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/predictive_scaler.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/resource_analyzer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/edge/resource/resource_pools.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/gateway/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/gateway/api.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/gateway/enhanced_gateway.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/gateway/resource_resolver.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/gateway/security.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/integrations/dataflow_edge.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/manifest.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/advanced_features.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/ai_registry_server.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/auth.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/client.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/client_new.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/discovery.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/errors.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/oauth.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/protocol.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/registry_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/server.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/subscriptions.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/transports.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/utils/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/utils/cache.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/utils/config.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/utils/formatters.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/mcp_server/utils/metrics.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/access_control.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/auth_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/exceptions.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/jwt_auth.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/models.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/auth/utils.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/communication/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/communication/ai_chat.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/communication/api_gateway.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/communication/events.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/communication/realtime.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/core/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/core/agent_ui.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/core/schema.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/core/workflows.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/base.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/enums.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/migrations.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/models.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/repositories.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/database/session_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/deduplicator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/durable_request.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/event_store.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/gateway/storage_backends.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/mcp/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/mcp/client_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/monitoring/alerts.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/monitoring/metrics.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/__init___original.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/audit_log.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/permission_check.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/role_management.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/schema.sql +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/schema_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/security_event.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/transaction_utils.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/admin/user_management.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/a2a.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/a2a_backup.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/agents.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/ai_providers.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/embedding_generator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/hybrid_search.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/models.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/self_organizing.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/semantic_memory.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ai/vision_utils.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/alerts/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/alerts/base.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/alerts/discord.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/auth.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/graphql.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/http.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/monitoring.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/rate_limiting.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/rest.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/api/security.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/directory_integration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/mfa.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/risk_assessment.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/session_management.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/auth/sso.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/base.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/base_async.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/base_cycle_aware.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/base_with_acl.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/cache/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/cache/cache.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/code/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/code/async_python.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/code/python.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/compliance/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/compliance/data_retention.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/compliance/gdpr.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/async_connection.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/async_vector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/bulk_operations.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/directory.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/event_generation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/file_discovery.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/optimistic_locking.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/query_builder.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/query_cache.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/query_pipeline.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/query_router.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/readers.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/redis.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/retrieval.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/sources.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/sql.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/streaming.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/vector_db.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/data/writers.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/base.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/cloud_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/coordination.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/docker_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/edge_data.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/edge_migration_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/edge_state.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/platform_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/governance.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/async_operations.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/convergence.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/intelligent_merge.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/loop.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/operations.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/logic/workflow.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/mixins/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/mixins/event_emitter.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/mixins/mcp.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/mixins/security.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/mixins.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/health_check.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/log_processor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/ports.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/advanced.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/agentic.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/conversational.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/evaluation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/federated.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/graph.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/multimodal.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/optimized.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/privacy.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/query_processing.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/realtime.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/registry.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/router.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/similarity.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/strategies.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/rag/workflows.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/abac_evaluator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/audit_log.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/behavior_analysis.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/credential_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/rotating_credentials.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/security_event.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/security/threat_detection.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/system/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/system/command_parser.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/testing/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/testing/credential_testing.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/distributed_transaction_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/saga_state_storage.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/saga_step.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/transaction_context.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transform/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transform/chunkers.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transform/formatters.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/transform/processors.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/validation/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/validation/test_executor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/validation/validation_nodes.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/nodes/validation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/planning/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/planning/dynamic_execution_planner.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/resources/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/resources/factory.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/resources/health.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/resources/reference.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/resources/registry.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/access_controlled.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/async_local.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/compatibility_reporter.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/docker.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/hierarchical_switch_executor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/parallel.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/parallel_cyclic.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/parameter_injection.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/parameter_injector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/performance_monitor.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/runner.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/secret_provider.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/testing.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/connection_context.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/error_categorizer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/import_validator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/metrics.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/performance.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/runtime/validation/suggestion_engine.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/security.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/servers/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/servers/durable_workflow_server.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/servers/enterprise_workflow_server.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/servers/gateway.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/servers/workflow_server.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/testing/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/testing/async_test_case.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/testing/async_utils.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/testing/fixtures.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/testing/mock_registry.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/metrics_collector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/models.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/storage/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/storage/base.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/storage/database.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/tracking/storage/filesystem.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/circular_dependency_detector.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/data_paths.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/data_validation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/export.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/migrations/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/migrations/generator.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/migrations/models.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/migrations/runner.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/resource_manager.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/secure_logging.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/utils/templates.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/visualization/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/visualization/api.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/visualization/dashboard.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/visualization/performance.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/visualization/reports.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/__init__.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/async_builder.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/async_patterns.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/builder.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/contracts.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/convergence.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_analyzer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_builder.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_config.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_debugger.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_exceptions.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_profiler.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/cycle_state.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/edge_infrastructure.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/graph.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/input_handling.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/mermaid_visualizer.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/migration.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/mock_registry.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/resilience.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/runner.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/safety.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/state.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/templates.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/type_inference.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/validation.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash/workflow/visualization.py +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash.egg-info/dependency_links.txt +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash.egg-info/entry_points.txt +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash.egg-info/not-zip-safe +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash.egg-info/requires.txt +0 -0
- {kailash-0.9.15 → kailash-0.9.18}/src/kailash.egg-info/top_level.txt +0 -0
@@ -13,7 +13,7 @@ with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f:
|
|
13
13
|
# Package configuration
|
14
14
|
setup(
|
15
15
|
name="kailash",
|
16
|
-
version="0.9.
|
16
|
+
version="0.9.18",
|
17
17
|
author="Integrum",
|
18
18
|
author_email="info@integrum.com",
|
19
19
|
description="Python SDK for the Kailash container-node architecture",
|
@@ -3,8 +3,8 @@
|
|
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.9.
|
7
|
-
|
6
|
+
New in v0.9.17: AsyncSQL per-pool locking eliminates lock contention bottleneck.
|
7
|
+
Achieves 100% success at 300+ concurrent operations (was 50% failure). 85% performance improvement with per-pool locks.
|
8
8
|
Previous v0.9.13: Fixed WorkflowBuilder parameter validation false positives (Bug 010).
|
9
9
|
Enhanced validation.py to recognize auto_map_from parameters, eliminating spurious warnings.
|
10
10
|
Previous v0.9.12: SQLite Compatibility & Code Quality improvements.
|
@@ -52,7 +52,7 @@ except ImportError:
|
|
52
52
|
# For backward compatibility
|
53
53
|
WorkflowGraph = Workflow
|
54
54
|
|
55
|
-
__version__ = "0.9.
|
55
|
+
__version__ = "0.9.18"
|
56
56
|
|
57
57
|
__all__ = [
|
58
58
|
# Core workflow components
|
@@ -8,7 +8,13 @@ import uuid
|
|
8
8
|
from datetime import datetime, timezone
|
9
9
|
from typing import Any, Dict, List, Optional
|
10
10
|
|
11
|
-
from sqlalchemy import
|
11
|
+
from sqlalchemy import (
|
12
|
+
JSON,
|
13
|
+
Boolean,
|
14
|
+
CheckConstraint,
|
15
|
+
Column,
|
16
|
+
DateTime,
|
17
|
+
)
|
12
18
|
from sqlalchemy import Enum as SQLEnum
|
13
19
|
from sqlalchemy import (
|
14
20
|
Float,
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"""Comprehensive migration tools for upgrading to enhanced LocalRuntime.
|
2
|
+
|
3
|
+
This module provides a complete suite of migration utilities for upgrading
|
4
|
+
existing codebases to use the enhanced LocalRuntime with zero downtime and
|
5
|
+
comprehensive validation.
|
6
|
+
|
7
|
+
Components:
|
8
|
+
- CompatibilityChecker: Analyze existing code for compatibility issues
|
9
|
+
- MigrationAssistant: Automated configuration conversion and optimization
|
10
|
+
- PerformanceComparator: Before/after performance analysis
|
11
|
+
- ConfigurationValidator: Runtime configuration validation
|
12
|
+
- MigrationDocGenerator: Automated migration guide generation
|
13
|
+
- RegressionDetector: Post-migration validation and regression detection
|
14
|
+
"""
|
15
|
+
|
16
|
+
from .compatibility_checker import CompatibilityChecker
|
17
|
+
from .configuration_validator import ConfigurationValidator
|
18
|
+
from .documentation_generator import MigrationDocGenerator
|
19
|
+
from .migration_assistant import MigrationAssistant
|
20
|
+
from .performance_comparator import PerformanceComparator
|
21
|
+
from .regression_detector import RegressionDetector
|
22
|
+
|
23
|
+
__all__ = [
|
24
|
+
"CompatibilityChecker",
|
25
|
+
"MigrationAssistant",
|
26
|
+
"PerformanceComparator",
|
27
|
+
"ConfigurationValidator",
|
28
|
+
"MigrationDocGenerator",
|
29
|
+
"RegressionDetector",
|
30
|
+
]
|
@@ -0,0 +1,340 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""Command-line interface for LocalRuntime migration tools.
|
3
|
+
|
4
|
+
This module provides a simple CLI for accessing all migration tools
|
5
|
+
and utilities from the command line.
|
6
|
+
"""
|
7
|
+
|
8
|
+
import argparse
|
9
|
+
import json
|
10
|
+
import sys
|
11
|
+
from pathlib import Path
|
12
|
+
from typing import Any, Dict
|
13
|
+
|
14
|
+
from .compatibility_checker import CompatibilityChecker
|
15
|
+
from .configuration_validator import ConfigurationValidator
|
16
|
+
from .documentation_generator import MigrationDocGenerator
|
17
|
+
from .migration_assistant import MigrationAssistant
|
18
|
+
from .performance_comparator import PerformanceComparator
|
19
|
+
from .regression_detector import RegressionDetector
|
20
|
+
|
21
|
+
|
22
|
+
def cmd_analyze(args):
|
23
|
+
"""Run compatibility analysis."""
|
24
|
+
print("🔍 Running compatibility analysis...")
|
25
|
+
|
26
|
+
checker = CompatibilityChecker()
|
27
|
+
result = checker.analyze_codebase(
|
28
|
+
args.path, include_patterns=args.include, exclude_patterns=args.exclude
|
29
|
+
)
|
30
|
+
|
31
|
+
if args.output:
|
32
|
+
report = checker.generate_report(result, args.format)
|
33
|
+
Path(args.output).write_text(report)
|
34
|
+
print(f"📄 Analysis report saved to: {args.output}")
|
35
|
+
else:
|
36
|
+
print(checker.generate_report(result, "text"))
|
37
|
+
|
38
|
+
|
39
|
+
def cmd_validate(args):
|
40
|
+
"""Run configuration validation."""
|
41
|
+
print("⚙️ Running configuration validation...")
|
42
|
+
|
43
|
+
# Load configuration from file or command line
|
44
|
+
if args.config_file:
|
45
|
+
with open(args.config_file) as f:
|
46
|
+
config = json.load(f)
|
47
|
+
else:
|
48
|
+
# Parse config from command line args
|
49
|
+
config = {}
|
50
|
+
if args.debug is not None:
|
51
|
+
config["debug"] = args.debug
|
52
|
+
if args.max_concurrency:
|
53
|
+
config["max_concurrency"] = args.max_concurrency
|
54
|
+
if args.enable_monitoring is not None:
|
55
|
+
config["enable_monitoring"] = args.enable_monitoring
|
56
|
+
if args.enable_security is not None:
|
57
|
+
config["enable_security"] = args.enable_security
|
58
|
+
|
59
|
+
validator = ConfigurationValidator()
|
60
|
+
result = validator.validate_configuration(config)
|
61
|
+
|
62
|
+
if args.output:
|
63
|
+
report = validator.generate_validation_report(result, args.format)
|
64
|
+
Path(args.output).write_text(report)
|
65
|
+
print(f"📄 Validation report saved to: {args.output}")
|
66
|
+
else:
|
67
|
+
print(validator.generate_validation_report(result, "text"))
|
68
|
+
|
69
|
+
|
70
|
+
def cmd_migrate(args):
|
71
|
+
"""Run migration planning and execution."""
|
72
|
+
print("🚀 Running migration planning...")
|
73
|
+
|
74
|
+
assistant = MigrationAssistant(dry_run=args.dry_run, create_backups=args.backup)
|
75
|
+
|
76
|
+
# Create migration plan
|
77
|
+
plan = assistant.create_migration_plan(
|
78
|
+
args.path, include_patterns=args.include, exclude_patterns=args.exclude
|
79
|
+
)
|
80
|
+
|
81
|
+
print(f"Created migration plan with {len(plan.steps)} steps")
|
82
|
+
print(f"Estimated duration: {plan.estimated_duration_minutes} minutes")
|
83
|
+
print(f"Risk level: {plan.risk_level}")
|
84
|
+
|
85
|
+
if not args.plan_only:
|
86
|
+
print("\n🔄 Executing migration...")
|
87
|
+
result = assistant.execute_migration(plan)
|
88
|
+
|
89
|
+
print(f"Migration {'successful' if result.success else 'failed'}")
|
90
|
+
print(f"Steps completed: {result.steps_completed}")
|
91
|
+
if result.steps_failed > 0:
|
92
|
+
print(f"Steps failed: {result.steps_failed}")
|
93
|
+
for error in result.errors:
|
94
|
+
print(f"❌ Error: {error}")
|
95
|
+
|
96
|
+
if args.output:
|
97
|
+
report = assistant.generate_migration_report(
|
98
|
+
plan, result if not args.plan_only else None
|
99
|
+
)
|
100
|
+
Path(args.output).write_text(report)
|
101
|
+
print(f"📄 Migration report saved to: {args.output}")
|
102
|
+
|
103
|
+
|
104
|
+
def cmd_compare(args):
|
105
|
+
"""Run performance comparison."""
|
106
|
+
print("📊 Running performance comparison...")
|
107
|
+
|
108
|
+
# Load configurations
|
109
|
+
with open(args.before_config) as f:
|
110
|
+
before_config = json.load(f)
|
111
|
+
|
112
|
+
with open(args.after_config) as f:
|
113
|
+
after_config = json.load(f)
|
114
|
+
|
115
|
+
comparator = PerformanceComparator(
|
116
|
+
sample_size=args.samples, warmup_runs=args.warmup
|
117
|
+
)
|
118
|
+
|
119
|
+
try:
|
120
|
+
report = comparator.compare_configurations(before_config, after_config)
|
121
|
+
|
122
|
+
print(f"Performance change: {report.overall_change_percentage:+.1f}%")
|
123
|
+
print(
|
124
|
+
f"Status: {'Improvement' if report.overall_improvement else 'Regression'}"
|
125
|
+
)
|
126
|
+
print(f"Risk: {report.risk_assessment}")
|
127
|
+
|
128
|
+
if args.output:
|
129
|
+
perf_report = comparator.generate_performance_report(report, args.format)
|
130
|
+
Path(args.output).write_text(perf_report)
|
131
|
+
print(f"📄 Performance report saved to: {args.output}")
|
132
|
+
|
133
|
+
except Exception as e:
|
134
|
+
print(f"❌ Performance comparison failed: {e}")
|
135
|
+
print(" Ensure LocalRuntime is properly installed and configured")
|
136
|
+
|
137
|
+
|
138
|
+
def cmd_baseline(args):
|
139
|
+
"""Create regression baseline."""
|
140
|
+
print("📊 Creating regression baseline...")
|
141
|
+
|
142
|
+
with open(args.config) as f:
|
143
|
+
config = json.load(f)
|
144
|
+
|
145
|
+
detector = RegressionDetector(baseline_path=args.baseline_file)
|
146
|
+
|
147
|
+
try:
|
148
|
+
baselines = detector.create_baseline(config)
|
149
|
+
print(f"Created {len(baselines)} baseline snapshots")
|
150
|
+
print(f"Baseline saved to: {args.baseline_file}")
|
151
|
+
except Exception as e:
|
152
|
+
print(f"❌ Baseline creation failed: {e}")
|
153
|
+
|
154
|
+
|
155
|
+
def cmd_regress(args):
|
156
|
+
"""Run regression detection."""
|
157
|
+
print("🔍 Running regression detection...")
|
158
|
+
|
159
|
+
with open(args.config) as f:
|
160
|
+
config = json.load(f)
|
161
|
+
|
162
|
+
detector = RegressionDetector(baseline_path=args.baseline_file)
|
163
|
+
|
164
|
+
try:
|
165
|
+
report = detector.detect_regressions(config)
|
166
|
+
|
167
|
+
print(f"Tests run: {report.total_tests}")
|
168
|
+
print(f"Passed: {report.passed_tests}")
|
169
|
+
print(f"Failed: {report.failed_tests}")
|
170
|
+
print(f"Status: {report.overall_status}")
|
171
|
+
|
172
|
+
if args.output:
|
173
|
+
regression_report = detector.generate_regression_report(report, args.format)
|
174
|
+
Path(args.output).write_text(regression_report)
|
175
|
+
print(f"📄 Regression report saved to: {args.output}")
|
176
|
+
|
177
|
+
except Exception as e:
|
178
|
+
print(f"❌ Regression detection failed: {e}")
|
179
|
+
|
180
|
+
|
181
|
+
def cmd_docs(args):
|
182
|
+
"""Generate migration documentation."""
|
183
|
+
print("📚 Generating migration documentation...")
|
184
|
+
|
185
|
+
generator = MigrationDocGenerator()
|
186
|
+
|
187
|
+
# Load results from previous analysis if available
|
188
|
+
analysis_result = None
|
189
|
+
if args.analysis_file:
|
190
|
+
# This would need to load from saved analysis
|
191
|
+
print("Loading previous analysis results...")
|
192
|
+
|
193
|
+
guide = generator.generate_migration_guide(
|
194
|
+
analysis_result=analysis_result, scenario=args.scenario, audience=args.audience
|
195
|
+
)
|
196
|
+
|
197
|
+
generator.export_guide(guide, args.output, args.format)
|
198
|
+
print(f"📄 Migration guide saved to: {args.output}")
|
199
|
+
|
200
|
+
|
201
|
+
def main():
|
202
|
+
"""Main CLI entry point."""
|
203
|
+
parser = argparse.ArgumentParser(
|
204
|
+
description="LocalRuntime Migration Tools CLI", prog="kailash-migrate"
|
205
|
+
)
|
206
|
+
|
207
|
+
subparsers = parser.add_subparsers(dest="command", help="Available commands")
|
208
|
+
|
209
|
+
# Analyze command
|
210
|
+
analyze_parser = subparsers.add_parser("analyze", help="Run compatibility analysis")
|
211
|
+
analyze_parser.add_argument("path", type=Path, help="Project path to analyze")
|
212
|
+
analyze_parser.add_argument(
|
213
|
+
"--include", nargs="*", default=["*.py"], help="Include patterns"
|
214
|
+
)
|
215
|
+
analyze_parser.add_argument("--exclude", nargs="*", help="Exclude patterns")
|
216
|
+
analyze_parser.add_argument("--output", "-o", help="Output file path")
|
217
|
+
analyze_parser.add_argument(
|
218
|
+
"--format", choices=["text", "json", "markdown"], default="text"
|
219
|
+
)
|
220
|
+
analyze_parser.set_defaults(func=cmd_analyze)
|
221
|
+
|
222
|
+
# Validate command
|
223
|
+
validate_parser = subparsers.add_parser("validate", help="Validate configuration")
|
224
|
+
validate_parser.add_argument("--config-file", help="Configuration file (JSON)")
|
225
|
+
validate_parser.add_argument("--debug", type=bool, help="Debug mode")
|
226
|
+
validate_parser.add_argument("--max-concurrency", type=int, help="Max concurrency")
|
227
|
+
validate_parser.add_argument(
|
228
|
+
"--enable-monitoring", type=bool, help="Enable monitoring"
|
229
|
+
)
|
230
|
+
validate_parser.add_argument("--enable-security", type=bool, help="Enable security")
|
231
|
+
validate_parser.add_argument("--output", "-o", help="Output file path")
|
232
|
+
validate_parser.add_argument(
|
233
|
+
"--format", choices=["text", "json", "markdown"], default="text"
|
234
|
+
)
|
235
|
+
validate_parser.set_defaults(func=cmd_validate)
|
236
|
+
|
237
|
+
# Migrate command
|
238
|
+
migrate_parser = subparsers.add_parser("migrate", help="Run migration")
|
239
|
+
migrate_parser.add_argument("path", type=Path, help="Project path to migrate")
|
240
|
+
migrate_parser.add_argument(
|
241
|
+
"--include", nargs="*", default=["*.py"], help="Include patterns"
|
242
|
+
)
|
243
|
+
migrate_parser.add_argument("--exclude", nargs="*", help="Exclude patterns")
|
244
|
+
migrate_parser.add_argument(
|
245
|
+
"--dry-run", action="store_true", default=True, help="Dry run mode"
|
246
|
+
)
|
247
|
+
migrate_parser.add_argument(
|
248
|
+
"--no-dry-run",
|
249
|
+
dest="dry_run",
|
250
|
+
action="store_false",
|
251
|
+
help="Execute actual migration",
|
252
|
+
)
|
253
|
+
migrate_parser.add_argument(
|
254
|
+
"--backup", action="store_true", default=True, help="Create backups"
|
255
|
+
)
|
256
|
+
migrate_parser.add_argument(
|
257
|
+
"--no-backup", dest="backup", action="store_false", help="Skip backups"
|
258
|
+
)
|
259
|
+
migrate_parser.add_argument(
|
260
|
+
"--plan-only", action="store_true", help="Only create plan, don't execute"
|
261
|
+
)
|
262
|
+
migrate_parser.add_argument("--output", "-o", help="Output file path")
|
263
|
+
migrate_parser.set_defaults(func=cmd_migrate)
|
264
|
+
|
265
|
+
# Compare command
|
266
|
+
compare_parser = subparsers.add_parser("compare", help="Compare performance")
|
267
|
+
compare_parser.add_argument(
|
268
|
+
"before_config", help="Before configuration file (JSON)"
|
269
|
+
)
|
270
|
+
compare_parser.add_argument("after_config", help="After configuration file (JSON)")
|
271
|
+
compare_parser.add_argument(
|
272
|
+
"--samples", type=int, default=3, help="Number of samples"
|
273
|
+
)
|
274
|
+
compare_parser.add_argument("--warmup", type=int, default=1, help="Warmup runs")
|
275
|
+
compare_parser.add_argument("--output", "-o", help="Output file path")
|
276
|
+
compare_parser.add_argument(
|
277
|
+
"--format", choices=["text", "json", "markdown"], default="text"
|
278
|
+
)
|
279
|
+
compare_parser.set_defaults(func=cmd_compare)
|
280
|
+
|
281
|
+
# Baseline command
|
282
|
+
baseline_parser = subparsers.add_parser(
|
283
|
+
"baseline", help="Create regression baseline"
|
284
|
+
)
|
285
|
+
baseline_parser.add_argument("config", help="Configuration file (JSON)")
|
286
|
+
baseline_parser.add_argument(
|
287
|
+
"--baseline-file", default="baseline.json", help="Baseline file path"
|
288
|
+
)
|
289
|
+
baseline_parser.set_defaults(func=cmd_baseline)
|
290
|
+
|
291
|
+
# Regression command
|
292
|
+
regress_parser = subparsers.add_parser("regress", help="Run regression detection")
|
293
|
+
regress_parser.add_argument("config", help="Configuration file (JSON)")
|
294
|
+
regress_parser.add_argument(
|
295
|
+
"--baseline-file", default="baseline.json", help="Baseline file path"
|
296
|
+
)
|
297
|
+
regress_parser.add_argument("--output", "-o", help="Output file path")
|
298
|
+
regress_parser.add_argument(
|
299
|
+
"--format", choices=["text", "json", "markdown"], default="text"
|
300
|
+
)
|
301
|
+
regress_parser.set_defaults(func=cmd_regress)
|
302
|
+
|
303
|
+
# Documentation command
|
304
|
+
docs_parser = subparsers.add_parser("docs", help="Generate documentation")
|
305
|
+
docs_parser.add_argument("output", help="Output file path")
|
306
|
+
docs_parser.add_argument(
|
307
|
+
"--scenario",
|
308
|
+
choices=["simple", "standard", "enterprise", "performance_critical"],
|
309
|
+
default="standard",
|
310
|
+
help="Documentation scenario",
|
311
|
+
)
|
312
|
+
docs_parser.add_argument(
|
313
|
+
"--audience",
|
314
|
+
choices=["developer", "admin", "architect", "all"],
|
315
|
+
default="developer",
|
316
|
+
help="Target audience",
|
317
|
+
)
|
318
|
+
docs_parser.add_argument("--analysis-file", help="Previous analysis results file")
|
319
|
+
docs_parser.add_argument(
|
320
|
+
"--format", choices=["markdown", "html"], default="markdown"
|
321
|
+
)
|
322
|
+
docs_parser.set_defaults(func=cmd_docs)
|
323
|
+
|
324
|
+
# Parse arguments and execute
|
325
|
+
args = parser.parse_args()
|
326
|
+
|
327
|
+
if not args.command:
|
328
|
+
parser.print_help()
|
329
|
+
return 1
|
330
|
+
|
331
|
+
try:
|
332
|
+
args.func(args)
|
333
|
+
return 0
|
334
|
+
except Exception as e:
|
335
|
+
print(f"❌ Error: {e}")
|
336
|
+
return 1
|
337
|
+
|
338
|
+
|
339
|
+
if __name__ == "__main__":
|
340
|
+
sys.exit(main())
|