kailash 0.9.11__tar.gz → 0.9.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kailash-0.9.11/src/kailash.egg-info → kailash-0.9.12}/PKG-INFO +1 -1
- {kailash-0.9.11 → kailash-0.9.12}/pyproject.toml +1 -1
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/__init__.py +1 -1
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/async_sql.py +49 -3
- {kailash-0.9.11 → kailash-0.9.12/src/kailash.egg-info}/PKG-INFO +1 -1
- {kailash-0.9.11 → kailash-0.9.12}/LICENSE +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/MANIFEST.in +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/NOTICE +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/README.md +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/setup.cfg +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/setup.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/__main__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/access_control/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/access_control/managers.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/access_control/rule_evaluators.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/access_control.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/access_control_abac.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/adapters/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/analysis/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/analysis/conditional_branch_analyzer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/auth.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/custom_nodes.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/custom_nodes_secure.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/gateway.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/mcp_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/studio.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/api/workflow_api.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/api_channel.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/base.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/cli_channel.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/event_router.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/mcp_channel.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/channels/session.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/cli/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/cli/commands.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/cli/validate_imports.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/cli/validation_audit.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/client/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/client/enhanced_client.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/config/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/config/database_config.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/actors/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/actors/connection_actor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/actors/supervisor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/ml/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/ml/query_patterns.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/monitoring/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/monitoring/connection_metrics.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/optimization/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/resilience/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/resilience/bulkhead.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/resilience/circuit_breaker.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/core/resilience/health_monitor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/database/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/database/execution_pipeline.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/compliance.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/consistency.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/coordination/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/coordination/global_ordering.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/coordination/leader_election.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/coordination/partition_detector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/coordination/raft.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/discovery.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/location.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/migration/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/migration/edge_migration_service.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/migration/edge_migrator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/monitoring/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/prediction/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/cloud_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/cost_optimizer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/docker_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/platform_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/predictive_scaler.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/resource_analyzer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/edge/resource/resource_pools.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/gateway/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/gateway/api.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/gateway/enhanced_gateway.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/gateway/resource_resolver.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/gateway/security.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/integrations/dataflow_edge.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/manifest.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/advanced_features.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/ai_registry_server.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/auth.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/client.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/client_new.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/discovery.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/errors.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/oauth.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/protocol.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/registry_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/server.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/subscriptions.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/transports.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/utils/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/utils/cache.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/utils/config.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/utils/formatters.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/mcp_server/utils/metrics.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/access_control.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/auth_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/exceptions.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/jwt_auth.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/models.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/auth/utils.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/communication/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/communication/ai_chat.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/communication/api_gateway.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/communication/events.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/communication/realtime.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/core/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/core/agent_ui.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/core/schema.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/core/workflows.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/base.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/base_models.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/enums.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/migrations.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/models.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/repositories.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/database/session_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/deduplicator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/durable_request.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/event_store.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/gateway/storage_backends.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/mcp/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/mcp/client_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/monitoring/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/monitoring/alerts.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/monitoring/metrics.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/audit_log.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/permission_check.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/role_management.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/schema.sql +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/schema_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/security_event.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/transaction_utils.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/admin/user_management.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/a2a.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/a2a_backup.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/agents.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/ai_providers.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/embedding_generator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/hybrid_search.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/llm_agent.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/models.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/self_organizing.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/semantic_memory.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ai/vision_utils.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/alerts/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/alerts/base.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/alerts/discord.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/auth.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/graphql.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/http.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/monitoring.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/rate_limiting.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/rest.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/api/security.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/directory_integration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/mfa.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/risk_assessment.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/session_management.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/auth/sso.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/base.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/base_async.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/base_cycle_aware.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/base_with_acl.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/cache/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/cache/cache.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/code/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/code/async_python.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/code/python.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/compliance/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/compliance/data_retention.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/compliance/gdpr.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/async_connection.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/async_vector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/bulk_operations.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/directory.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/event_generation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/file_discovery.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/optimistic_locking.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/query_builder.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/query_cache.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/query_pipeline.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/query_router.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/readers.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/redis.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/retrieval.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/sources.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/sql.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/streaming.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/vector_db.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/data/writers.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/base.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/cloud_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/coordination.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/docker_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/edge_data.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/edge_migration_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/edge_state.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/platform_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/governance.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/async_operations.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/convergence.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/intelligent_merge.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/loop.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/operations.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/logic/workflow.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/mixins/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/mixins/event_emitter.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/mixins/mcp.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/mixins/security.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/mixins.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/health_check.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/log_processor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/ports.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/advanced.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/agentic.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/conversational.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/evaluation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/federated.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/graph.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/multimodal.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/optimized.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/privacy.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/query_processing.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/realtime.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/registry.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/router.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/similarity.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/strategies.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/rag/workflows.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/abac_evaluator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/audit_log.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/behavior_analysis.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/credential_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/rotating_credentials.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/security_event.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/security/threat_detection.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/system/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/system/command_parser.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/testing/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/testing/credential_testing.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/distributed_transaction_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/saga_state_storage.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/saga_step.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/transaction_context.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transform/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transform/chunkers.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transform/formatters.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/transform/processors.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/validation/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/validation/test_executor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/validation/validation_nodes.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/nodes/validation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/planning/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/planning/dynamic_execution_planner.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/resources/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/resources/factory.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/resources/health.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/resources/reference.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/resources/registry.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/access_controlled.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/async_local.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/compatibility_reporter.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/docker.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/hierarchical_switch_executor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/local.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/parallel.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/parallel_cyclic.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/parameter_injection.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/parameter_injector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/performance_monitor.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/runner.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/secret_provider.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/testing.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/connection_context.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/error_categorizer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/import_validator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/metrics.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/performance.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/runtime/validation/suggestion_engine.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/sdk_exceptions.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/security.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/servers/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/servers/durable_workflow_server.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/servers/enterprise_workflow_server.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/servers/gateway.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/servers/workflow_server.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/testing/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/testing/async_test_case.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/testing/async_utils.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/testing/fixtures.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/testing/mock_registry.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/metrics_collector.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/models.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/storage/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/storage/base.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/storage/database.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/tracking/storage/filesystem.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/data_paths.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/data_validation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/export.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/migrations/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/migrations/generator.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/migrations/models.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/migrations/runner.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/resource_manager.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/secure_logging.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/utils/templates.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/visualization/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/visualization/api.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/visualization/dashboard.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/visualization/performance.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/visualization/reports.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/__init__.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/async_builder.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/async_patterns.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/builder.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/contracts.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/convergence.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_analyzer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_builder.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_config.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_debugger.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_exceptions.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_profiler.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cycle_state.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/cyclic_runner.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/edge_infrastructure.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/graph.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/input_handling.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/mermaid_visualizer.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/migration.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/mock_registry.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/resilience.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/runner.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/safety.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/state.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/templates.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/type_inference.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/validation.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash/workflow/visualization.py +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash.egg-info/SOURCES.txt +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash.egg-info/dependency_links.txt +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash.egg-info/entry_points.txt +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash.egg-info/not-zip-safe +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash.egg-info/requires.txt +0 -0
- {kailash-0.9.11 → kailash-0.9.12}/src/kailash.egg-info/top_level.txt +0 -0
@@ -434,22 +434,63 @@ class PostgreSQLAdapter(DatabaseAdapter):
|
|
434
434
|
parameter_types: Optional[dict[str, str]] = None,
|
435
435
|
) -> Any:
|
436
436
|
"""Execute query and return results."""
|
437
|
+
|
438
|
+
import logging
|
439
|
+
|
440
|
+
logger = logging.getLogger(__name__)
|
441
|
+
|
437
442
|
# Convert dict params to positional for asyncpg
|
438
443
|
if isinstance(params, dict):
|
439
444
|
# Simple parameter substitution for named params
|
440
|
-
#
|
445
|
+
# Fix: Use proper ordering and safe replacement to avoid collisions
|
441
446
|
import json
|
447
|
+
import logging
|
448
|
+
|
449
|
+
logger = logging.getLogger(__name__)
|
442
450
|
|
443
451
|
query_params = []
|
444
452
|
param_names = [] # Track parameter names for type mapping
|
445
|
-
|
446
|
-
|
453
|
+
|
454
|
+
# Keep original order for parameter values, but do replacements safely
|
455
|
+
original_items = list(params.items())
|
456
|
+
|
457
|
+
# Create parameter values in original order
|
458
|
+
for key, value in original_items:
|
447
459
|
param_names.append(key)
|
448
460
|
# For PostgreSQL, lists should remain as lists for array operations
|
449
461
|
# Only convert dicts to JSON strings
|
450
462
|
if isinstance(value, dict):
|
451
463
|
value = json.dumps(value)
|
464
|
+
# Fix for parameter $11 issue: Handle ambiguous integer values
|
465
|
+
# AsyncPG has trouble with certain integer values (especially 0)
|
466
|
+
# where it can't determine the PostgreSQL type automatically
|
467
|
+
elif isinstance(value, int) and value == 0:
|
468
|
+
# Keep as int but we'll add explicit casting in the query later
|
469
|
+
pass
|
452
470
|
query_params.append(value)
|
471
|
+
|
472
|
+
# Replace parameters in the query, processing longer keys first to avoid collision
|
473
|
+
# Sort keys by length (descending) for replacement order only
|
474
|
+
keys_by_length = sorted(params.keys(), key=len, reverse=True)
|
475
|
+
|
476
|
+
for key in keys_by_length:
|
477
|
+
# Find the position of this key in the original order
|
478
|
+
position = (
|
479
|
+
next(i for i, (k, v) in enumerate(original_items) if k == key) + 1
|
480
|
+
)
|
481
|
+
value = original_items[position - 1][1] # Get the actual value
|
482
|
+
|
483
|
+
# Fix for parameter $11 issue: Add explicit type casting for ambiguous values
|
484
|
+
# Note: Check boolean first since bool is a subclass of int in Python
|
485
|
+
if isinstance(value, bool):
|
486
|
+
# Cast boolean parameters to avoid type ambiguity
|
487
|
+
query = query.replace(f":{key}", f"${position}::boolean")
|
488
|
+
elif isinstance(value, int):
|
489
|
+
# Cast integer parameters to avoid PostgreSQL type determination issues
|
490
|
+
query = query.replace(f":{key}", f"${position}::integer")
|
491
|
+
else:
|
492
|
+
query = query.replace(f":{key}", f"${position}")
|
493
|
+
|
453
494
|
params = query_params
|
454
495
|
|
455
496
|
# Apply parameter type casts if provided
|
@@ -462,6 +503,8 @@ class PostgreSQLAdapter(DatabaseAdapter):
|
|
462
503
|
query = query.replace(f"${i}", f"${i}::{pg_type}")
|
463
504
|
|
464
505
|
else:
|
506
|
+
# Parameters are not dict - they might be list/tuple
|
507
|
+
|
465
508
|
# For positional params, apply type casts if provided
|
466
509
|
if parameter_types and isinstance(params, (list, tuple)):
|
467
510
|
# Build query with type casts for positional parameters
|
@@ -2049,6 +2092,9 @@ class AsyncSQLDatabaseNode(AsyncNode):
|
|
2049
2092
|
except Exception as e:
|
2050
2093
|
last_error = e
|
2051
2094
|
|
2095
|
+
# Parameter type determination is now handled during dict-to-positional conversion
|
2096
|
+
# No special retry logic needed for parameter $11
|
2097
|
+
|
2052
2098
|
# Check if error is retryable
|
2053
2099
|
if not self._retry_config.should_retry(e):
|
2054
2100
|
raise
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|