feat: add Valkey as a vector store backend#35337
Conversation
Pyrefly Diffbase → PR--- /tmp/pyrefly_base.txt 2026-04-17 03:41:53.732644455 +0000
+++ /tmp/pyrefly_pr.txt 2026-04-17 03:41:42.198612951 +0000
@@ -552,6 +552,8 @@
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:33:5
ERROR Object of class `ModuleType` has no attribute `Index` [missing-attribute]
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:34:5
+ERROR Cannot set item in `list[list[float] | str]` [unsupported-operation]
+ --> providers/vdb/vdb-valkey/tests/integration_tests/test_valkey.py:248:9
ERROR Object of class `ModuleType` has no attribute `SimpleConnectionPool` [missing-attribute]
--> providers/vdb/vdb-vastbase/tests/unit_tests/test_vastbase_vector.py:27:5
ERROR Object of class `ModuleType` has no attribute `execute_values` [missing-attribute]
@@ -4592,7 +4594,7 @@
ERROR Argument `list[Document | SimpleNamespace]` is not assignable to parameter `texts` with type `list[Document]` in function `core.rag.datasource.vdb.vector_base.BaseVector._get_uuids` [bad-argument-type]
--> tests/unit_tests/core/rag/datasource/vdb/test_vector_base.py:87:30
ERROR Class member `_Expr.__eq__` overrides parent class `object` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:203:13
+ --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:204:13
ERROR Argument `list[str]` is not assignable to parameter `docs` with type `Sequence[Document]` in function `core.rag.docstore.dataset_docstore.DatasetDocumentStore.add_documents` [bad-argument-type]
--> tests/unit_tests/core/rag/docstore/test_dataset_docstore.py:307:37
ERROR Argument `None` is not assignable to parameter `orig` with type `BaseException` in function `sqlalchemy.exc.DBAPIError.__init__` [bad-argument-type]
|
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds Valkey as a supported vector store backend for embeddings + retrieval, wiring it through configuration, packaging/entrypoints, Docker env, and CI workflows.
Changes:
- Introduces a new
ValkeyVectorbackend (factory + config), backed byvalkey-glideandvalkey-search. - Adds Valkey configuration/env examples and registers the provider in the API workspace.
- Adds unit + integration tests and includes Valkey in vdb CI workflows.
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| docker/docker-compose.yaml | Adds Valkey env vars to the shared API/worker environment block. |
| docker/.env.example | Documents valkey as a vector store option and adds Valkey-specific env vars. |
| api/.env.example | Documents valkey as a vector store option and adds Valkey-specific env vars. |
| api/core/rag/datasource/vdb/vector_type.py | Adds VALKEY to the VectorType enum. |
| api/configs/middleware/vdb/valkey_config.py | Introduces Pydantic settings for Valkey connection + metric selection. |
| api/configs/middleware/init.py | Registers ValkeyConfig in the middleware config mixin. |
| api/pyproject.toml | Adds dify-vdb-valkey to workspace deps and feature groups. |
| api/tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py | Registers Valkey factory module path in vector factory tests. |
| api/providers/vdb/vdb-valkey/pyproject.toml | Defines the new provider package + entrypoint. |
| api/providers/vdb/vdb-valkey/src/dify_vdb_valkey/valkey_vector.py | Implements Valkey vector backend + helpers + factory. |
| api/providers/vdb/vdb-valkey/tests/unit_tests/test_valkey_vector.py | Adds unit tests for helper functions + config defaults. |
| api/providers/vdb/vdb-valkey/tests/integration_tests/test_valkey.py | Adds integration tests against a live Valkey+valkey-search instance. |
| .github/workflows/vdb-tests.yml | Adds Valkey to smoke vdb integration matrix and test paths. |
| .github/workflows/vdb-tests-full.yml | Adds Valkey to weekly/full vdb integration matrix. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Please mark those comments as resolved if you think it's ok. |
Pyrefly Diffbase → PR--- /tmp/pyrefly_base.txt 2026-04-17 04:50:08.566547899 +0000
+++ /tmp/pyrefly_pr.txt 2026-04-17 04:49:57.595535056 +0000
@@ -552,6 +552,8 @@
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:33:5
ERROR Object of class `ModuleType` has no attribute `Index` [missing-attribute]
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:34:5
+ERROR Cannot set item in `list[list[float] | str]` [unsupported-operation]
+ --> providers/vdb/vdb-valkey/tests/integration_tests/test_valkey.py:248:9
ERROR Object of class `ModuleType` has no attribute `SimpleConnectionPool` [missing-attribute]
--> providers/vdb/vdb-vastbase/tests/unit_tests/test_vastbase_vector.py:27:5
ERROR Object of class `ModuleType` has no attribute `execute_values` [missing-attribute]
@@ -4592,7 +4594,7 @@
ERROR Argument `list[Document | SimpleNamespace]` is not assignable to parameter `texts` with type `list[Document]` in function `core.rag.datasource.vdb.vector_base.BaseVector._get_uuids` [bad-argument-type]
--> tests/unit_tests/core/rag/datasource/vdb/test_vector_base.py:87:30
ERROR Class member `_Expr.__eq__` overrides parent class `object` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:203:13
+ --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:204:13
ERROR Argument `list[str]` is not assignable to parameter `docs` with type `Sequence[Document]` in function `core.rag.docstore.dataset_docstore.DatasetDocumentStore.add_documents` [bad-argument-type]
--> tests/unit_tests/core/rag/docstore/test_dataset_docstore.py:307:37
ERROR Argument `None` is not assignable to parameter `orig` with type `BaseException` in function `sqlalchemy.exc.DBAPIError.__init__` [bad-argument-type]
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 15 out of 16 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Pyrefly Diffbase → PR--- /tmp/pyrefly_base.txt 2026-04-20 08:59:26.176613055 +0000
+++ /tmp/pyrefly_pr.txt 2026-04-20 08:59:14.695377570 +0000
@@ -1,7 +1,9 @@
ERROR Object of class `Server` has no attribute `app` [missing-attribute]
--> app_factory.py:132:5
ERROR Object of class `App` has no attribute `access_mode` [missing-attribute]
- --> controllers/console/app/app.py:553:13
+ --> controllers/console/app/app.py:552:13
+ERROR Object of class `object` has no attribute `value` [missing-attribute]
+ --> controllers/console/app/conversation_variables.py:48:24
ERROR Argument `str | None` is not assignable to parameter `language` with type `str` in function `services.account_service.AccountService.send_email_register_email` [bad-argument-type]
--> controllers/console/auth/email_register.py:75:108
ERROR Object of class `MissingRouter` has no attribute `get` [missing-attribute]
@@ -18,7 +20,9 @@
--> controllers/console/socketio/workflow.py:45:14
ERROR Object of class `MissingRouter` has no attribute `get` [missing-attribute]
--> controllers/console/version.py:30:2
-ERROR Class member `EasyUIBasedGenerateTaskPipeline._application_generate_entity` overrides parent class `BasedGenerateTaskPipeline` in an inconsistent manner [bad-override-mutable-attribute]
+ERROR Object of class `object` has no attribute `value` [missing-attribute]
+ --> controllers/service_api/app/conversation.py:87:24
+ERROR Class member `EasyUIBasedGenerateTaskPipeline._application_generate_entity` overrides parent class `BasedGenerateTaskPipeline` in an inconsistent manner [bad-override]
--> core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:75:5
ERROR `+=` is not supported between `list[PromptMessageContentUnionTypes]` and `str` [unsupported-operation]
--> core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py:321:29
@@ -42,7 +46,27 @@
--> core/llm_generator/llm_generator.py:394:60
ERROR No matching overload found for function `core.model_manager.ModelInstance.invoke_llm` called with arguments: (prompt_messages=list[SystemPromptMessage | UserPromptMessage], model_parameters=dict[str, float], stream=Literal[False]) [no-matching-overload]
--> core/llm_generator/llm_generator.py:582:60
-ERROR Class member `OpsTraceProviderConfigMap.__getitem__` overrides parent class `UserDict` in an inconsistent manner [bad-override-param-name]
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:171:17
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:196:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:216:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:238:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:255:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:280:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:308:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:327:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:343:13
+ERROR Missing positional argument `function` in function `ModelInstance._round_robin_invoke` [bad-argument-count]
+ --> core/model_manager.py:360:13
+ERROR Class member `OpsTraceProviderConfigMap.__getitem__` overrides parent class `UserDict` in an inconsistent manner [bad-param-name-override]
--> core/ops/ops_trace_manager.py:206:9
ERROR Object of class `NoneType` has no attribute `data_source_type` [missing-attribute]
--> core/rag/datasource/keyword/jieba/jieba.py:142:36
@@ -65,7 +89,7 @@
ERROR Argument `Unknown | None` is not assignable to parameter `result_object` with type `dict[str, Any]` in function `WaterCrawlProvider._structure_data` [bad-argument-type]
--> core/rag/extractor/watercrawl/provider.py:108:37
ERROR Object of class `BaseOxmlElement` has no attribute `body` [missing-attribute]
- --> core/rag/extractor/word_extractor.py:448:24
+ --> core/rag/extractor/word_extractor.py:426:24
ERROR Object of class `Document` has no attribute `score` [missing-attribute]
--> core/rag/index_processor/processor/paragraph_index_processor.py:203:33
ERROR Object of class `Document` has no attribute `score` [missing-attribute]
@@ -80,9 +104,9 @@
--> core/rag/index_processor/processor/qa_index_processor.py:209:16
ERROR No matching overload found for function `core.model_manager.ModelInstance.invoke_llm` called with arguments: (prompt_messages=list[SystemPromptMessage | UserPromptMessage], tools=list[PromptMessageTool], stream=Literal[False], model_parameters=dict[str, float | int]) [no-matching-overload]
--> core/rag/retrieval/router/multi_dataset_function_call_router.py:31:58
-ERROR Class member `MCPToolProviderController.entity` overrides parent class `ToolProviderController` in an inconsistent manner [bad-override-mutable-attribute]
+ERROR Class member `MCPToolProviderController.entity` overrides parent class `ToolProviderController` in an inconsistent manner [bad-override]
--> core/tools/mcp_tool/provider.py:33:14
-ERROR Class member `PluginToolProviderController.entity` overrides parent class `BuiltinToolProviderController` in an inconsistent manner [bad-override-mutable-attribute]
+ERROR Class member `PluginToolProviderController.entity` overrides parent class `BuiltinToolProviderController` in an inconsistent manner [bad-override]
--> core/tools/plugin_tool/provider.py:12:5
ERROR `(method: str, url: str, max_retries: int = ..., **kwargs: Any) -> httpx._models.Response` is not assignable to attribute `perform_request` with type `(self: CloudScraper, method: Unknown, url: Unknown, *args: Unknown, **kwargs: Unknown) -> requests.models.Response` [bad-assignment]
--> core/tools/utils/web_reader_tool.py:66:35
@@ -92,6 +116,8 @@
--> extensions/storage/huawei_obs_storage.py:27:23
ERROR Cannot index into `Literal['']` [bad-index]
--> extensions/storage/huawei_obs_storage.py:31:20
+ERROR Object of class `object` has no attribute `value` [missing-attribute]
+ --> fields/conversation_variable_fields.py:60:24
ERROR Argument `Module[Crypto.Hash.SHA1] | Unknown` is not assignable to parameter with type `Hash | HashModule` [bad-argument-type]
--> libs/gmpy2_pkcs10aep_cipher.py:73:49
ERROR Object of class `NoneType` has no attribute `trace_id` [missing-attribute]
@@ -718,6 +744,10 @@
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:33:5
ERROR Object of class `ModuleType` has no attribute `Index` [missing-attribute]
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:34:5
+ERROR Cannot set item in `list[list[float] | str]` [unsupported-operation]
+ --> providers/vdb/vdb-valkey/tests/integration_tests/test_valkey.py:248:9
+ERROR Argument `Literal['HAMMING']` is not assignable to parameter `distance_metric` with type `Literal['COSINE', 'IP', 'L2']` in function `dify_vdb_valkey.valkey_vector.ValkeyVectorConfig.__init__` [bad-argument-type]
+ --> providers/vdb/vdb-valkey/tests/unit_tests/test_valkey_vector.py:246:48
ERROR Object of class `ModuleType` has no attribute `SimpleConnectionPool` [missing-attribute]
--> providers/vdb/vdb-vastbase/tests/unit_tests/test_vastbase_vector.py:27:5
ERROR Object of class `ModuleType` has no attribute `execute_values` [missing-attribute]
@@ -784,8 +814,6 @@
--> services/hit_testing_service.py:92:28
ERROR Argument `RetrievalMethod | bool | dict[str, str] | int | Any | None` is not assignable to parameter `weights` with type `WeightsDict | None` in function `core.rag.datasource.retrieval_service.RetrievalService.retrieve` [bad-argument-type]
--> services/hit_testing_service.py:93:21
-ERROR Argument `bool | str | Any` is not assignable to parameter `token` with type `str` in function `core.helper.encrypter.encrypt_token` [bad-argument-type]
- --> services/model_load_balancing_service.py:623:71
ERROR `handled_tenant_count` was assigned in the current scope before the nonlocal declaration [unknown-name]
--> services/plugin/plugin_migration.py:92:34
ERROR `dict[str, Any]` is not assignable to attribute `credentials` with type `Never` [bad-assignment]
@@ -798,7 +826,7 @@
--> tasks/regenerate_summary_index_task.py:276:61
ERROR `str` is not assignable to attribute `error` with type `Never` [bad-assignment]
--> tasks/regenerate_summary_index_task.py:277:60
-ERROR Class member `AsyncWorkflowCFSPlanScheduler.plan` overrides parent class `CFSPlanScheduler` in an inconsistent manner [bad-override-mutable-attribute]
+ERROR Class member `AsyncWorkflowCFSPlanScheduler.plan` overrides parent class `CFSPlanScheduler` in an inconsistent manner [bad-override]
--> tasks/workflow_cfs_scheduler/cfs_scheduler.py:19:5
ERROR Argument `Literal['normal']` is not assignable to parameter `value` with type `AppStatus | SQLCoreOperations[AppStatus]` in function `sqlalchemy.orm.base.Mapped.__set__` [bad-argument-type]
--> tests/integration_tests/controllers/console/app/test_chat_message_permissions.py:31:22
@@ -806,10 +834,12 @@
--> tests/integration_tests/controllers/console/app/test_feedback_export_api.py:32:22
ERROR Argument `Literal['normal']` is not assignable to parameter `value` with type `AppStatus | SQLCoreOperations[AppStatus]` in function `sqlalchemy.orm.base.Mapped.__set__` [bad-argument-type]
--> tests/integration_tests/controllers/console/app/test_model_config_permissions.py:28:22
+ERROR `dict[str, str]` is not assignable to TypedDict key `data` with type `BaseNodeData` [bad-typed-dict-key]
+ --> tests/integration_tests/core/workflow/nodes/datasource/test_datasource_node_integration.py:75:21
ERROR Argument `_GP` is not assignable to parameter `graph_init_params` with type `GraphInitParams` in function `core.workflow.nodes.datasource.datasource_node.DatasourceNode.__init__` [bad-argument-type]
- --> tests/integration_tests/core/workflow/nodes/datasource/test_datasource_node_integration.py:83:27
+ --> tests/integration_tests/core/workflow/nodes/datasource/test_datasource_node_integration.py:85:27
ERROR Argument `_GS` is not assignable to parameter `graph_runtime_state` with type `GraphRuntimeState` in function `core.workflow.nodes.datasource.datasource_node.DatasourceNode.__init__` [bad-argument-type]
- --> tests/integration_tests/core/workflow/nodes/datasource/test_datasource_node_integration.py:84:29
+ --> tests/integration_tests/core/workflow/nodes/datasource/test_datasource_node_integration.py:86:29
ERROR Could not import `Overflow` from `libs.broadcast_channel.channel` [missing-module-attribute]
--> tests/integration_tests/libs/broadcast_channel/redis/utils/test_data.py:11:44
ERROR `unpatch` may be uninitialized [unbound-name]
@@ -830,22 +860,30 @@
--> tests/integration_tests/services/test_workflow_draft_variable_service.py:651:21
ERROR Object of class `TestWorkflowDraftVariableServiceResetVariable` has no attribute `_test_user_id` [missing-attribute]
--> tests/integration_tests/services/test_workflow_draft_variable_service.py:817:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol | None` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
- --> tests/integration_tests/workflow/nodes/test_http.py:83:21
+ERROR Argument `dict[Unknown, Unknown]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.code.code_node.CodeNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_code.py:68:16
+ERROR Argument `dict[Unknown, Unknown]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_http.py:79:16
ERROR Argument `type[ToolFileManager]` is not assignable to parameter `tool_file_manager_factory` with type `() -> ToolFileManagerProtocol` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
--> tests/integration_tests/workflow/nodes/test_http.py:84:35
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/integration_tests/workflow/nodes/test_http.py:242:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol | None` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
- --> tests/integration_tests/workflow/nodes/test_http.py:731:21
+ERROR Argument `dict[str, dict[str, dict[str, dict[str, str] | str] | str | Unknown | None] | str] | dict[str, dict[str, str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_http.py:727:16
ERROR Argument `type[ToolFileManager]` is not assignable to parameter `tool_file_manager_factory` with type `() -> ToolFileManagerProtocol` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
--> tests/integration_tests/workflow/nodes/test_http.py:732:35
+ERROR Argument `dict[Unknown, Unknown]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.llm.node.LLMNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_llm.py:79:16
+ERROR Argument `dict[Unknown, Unknown]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.parameter_extractor.parameter_extractor_node.ParameterExtractorNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_parameter_extractor.py:73:16
+ERROR Argument `dict[str, dict[str, list[dict[str, list[str] | str]] | str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.template_transform.template_transform_node.TemplateTransformNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_template_transform.py:90:16
ERROR Argument `_SimpleJinja2Renderer` is not assignable to parameter `jinja2_template_renderer` with type `Jinja2TemplateRenderer` in function `graphon.nodes.template_transform.template_transform_node.TemplateTransformNode.__init__` [bad-argument-type]
- --> tests/integration_tests/workflow/nodes/test_template_transform.py:94:34
+ --> tests/integration_tests/workflow/nodes/test_template_transform.py:93:34
+ERROR Argument `dict[Unknown, Unknown]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.tool.tool_node.ToolNode.__init__` [bad-argument-type]
+ --> tests/integration_tests/workflow/nodes/test_tool.py:64:16
ERROR `dict[str, str | None]` is not assignable to attribute `env` with type `dict[str, str]` [bad-assignment]
--> tests/test_containers_integration_tests/conftest.py:204:39
ERROR Argument value `Literal[0]` violates Pydantic `ge` constraint `Literal[1]` for field `page` [bad-argument-type]
- --> tests/test_containers_integration_tests/controllers/console/app/test_app_apis.py:662:51
+ --> tests/test_containers_integration_tests/controllers/console/app/test_app_apis.py:633:51
ERROR Object of class `RequestError` has no attribute `response` [missing-attribute]
--> tests/test_containers_integration_tests/controllers/console/auth/test_oauth.py:196:9
ERROR Object of class `RequestError` has no attribute `response` [missing-attribute]
@@ -960,6 +998,12 @@
--> tests/test_containers_integration_tests/core/rag/retrieval/test_dataset_retrieval_integration.py:574:23
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
--> tests/test_containers_integration_tests/core/rag/retrieval/test_dataset_retrieval_integration.py:584:23
+ERROR `dict[str, Any]` is not assignable to TypedDict key `data` with type `BaseNodeData` [bad-typed-dict-key]
+ --> tests/test_containers_integration_tests/core/workflow/test_human_input_resume_node_execution.py:105:40
+ERROR `dict[str, Any]` is not assignable to TypedDict key `data` with type `BaseNodeData` [bad-typed-dict-key]
+ --> tests/test_containers_integration_tests/core/workflow/test_human_input_resume_node_execution.py:120:40
+ERROR `dict[str, Any]` is not assignable to TypedDict key `data` with type `BaseNodeData` [bad-typed-dict-key]
+ --> tests/test_containers_integration_tests/core/workflow/test_human_input_resume_node_execution.py:134:38
ERROR Argument `Connection | Engine` is not assignable to parameter `session_factory` with type `Engine | sessionmaker[Unknown]` in function `core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository.__init__` [bad-argument-type]
--> tests/test_containers_integration_tests/core/workflow/test_human_input_resume_node_execution.py:264:29
ERROR Argument `Connection | Engine` is not assignable to parameter `session_factory` with type `Engine | sessionmaker[Unknown]` in function `core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository.__init__` [bad-argument-type]
@@ -1219,51 +1263,51 @@
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
--> tests/test_containers_integration_tests/services/test_app_service.py:652:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:713:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:711:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:773:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:771:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:833:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:831:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:884:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:882:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:897:70
+ --> tests/test_containers_integration_tests/services/test_app_service.py:895:70
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:936:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:934:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:959:70
+ --> tests/test_containers_integration_tests/services/test_app_service.py:957:70
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:996:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:994:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1035:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1033:38
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1075:38
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1073:38
ERROR Argument `Literal['normal']` is not assignable to parameter `value` with type `AppStatus | SQLCoreOperations[AppStatus]` in function `sqlalchemy.orm.base.Mapped.__set__` [bad-argument-type]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1082:23
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1080:23
ERROR Argument `Literal['uuid']` is not assignable to parameter `value` with type `CustomizeTokenStrategy | SQLCoreOperations[CustomizeTokenStrategy]` in function `sqlalchemy.orm.base.Mapped.__set__` [bad-argument-type]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1084:41
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1082:41
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1128:36
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1126:36
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1160:13
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1158:13
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1175:13
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1173:13
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1190:13
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1188:13
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1206:13
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1204:13
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1222:68
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1220:68
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1230:68
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1228:68
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1238:68
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1236:68
ERROR Object of class `NoneType` has no attribute `id` [missing-attribute]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1246:68
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1244:68
ERROR Argument `SimpleNamespace` is not assignable to parameter `app_model` with type `App` in function `services.app_service.AppService.get_app_meta` [bad-argument-type]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1282:41
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1280:41
ERROR Argument `SimpleNamespace` is not assignable to parameter `app_model` with type `App` in function `services.app_service.AppService.get_app_meta` [bad-argument-type]
- --> tests/test_containers_integration_tests/services/test_app_service.py:1296:41
+ --> tests/test_containers_integration_tests/services/test_app_service.py:1294:41
ERROR Argument `Literal['owner']` is not assignable to parameter `role` with type `SQLCoreOperations[TenantAccountRole] | TenantAccountRole` in function `models.account.TenantAccountJoin.__init__` [bad-argument-type]
--> tests/test_containers_integration_tests/services/test_conversation_service.py:43:18
ERROR Argument `Literal['owner']` is not assignable to parameter `role` with type `SQLCoreOperations[TenantAccountRole] | TenantAccountRole` in function `models.account.TenantAccountJoin.__init__` [bad-argument-type]
@@ -1316,7 +1360,7 @@
--> tests/test_containers_integration_tests/services/test_file_service.py:78:20
ERROR Argument `Literal['owner']` is not assignable to parameter `role` with type `SQLCoreOperations[TenantAccountRole] | TenantAccountRole` in function `models.account.TenantAccountJoin.__init__` [bad-argument-type]
--> tests/test_containers_integration_tests/services/test_human_input_delivery_test.py:32:18
-ERROR Unexpected keyword argument `whole_workspace` in function `core.workflow.human_input_adapter.EmailRecipients.__init__` [unexpected-keyword]
+ERROR Unexpected keyword argument `whole_workspace` in function `core.workflow.human_input_compat.EmailRecipients.__init__` [unexpected-keyword]
--> tests/test_containers_integration_tests/services/test_human_input_delivery_test_service.py:239:44
ERROR Argument `Literal['active']` is not assignable to parameter `status` with type `AccountStatus | SQLCoreOperations[AccountStatus]` in function `models.account.Account.__init__` [bad-argument-type]
--> tests/test_containers_integration_tests/services/test_message_export_service.py:53:20
@@ -2253,11 +2297,11 @@
ERROR Argument `list[dict[str, Any]] | None` is not assignable to parameter `obj` with type `Sized` in function `len` [bad-argument-type]
--> tests/unit_tests/controllers/service_api/app/test_completion.py:156:20
ERROR Argument value `Literal[0]` violates Pydantic `ge` constraint `Literal[1]` for field `limit` [bad-argument-type]
- --> tests/unit_tests/controllers/service_api/app/test_conversation.py:86:35
+ --> tests/unit_tests/controllers/service_api/app/test_conversation.py:84:35
ERROR Argument value `Literal[101]` violates Pydantic `le` constraint `Literal[100]` for field `limit` [bad-argument-type]
- --> tests/unit_tests/controllers/service_api/app/test_conversation.py:91:35
+ --> tests/unit_tests/controllers/service_api/app/test_conversation.py:89:35
ERROR Missing argument `session` in function `services.conversation_service.ConversationService.pagination_by_last_id` [missing-argument]
- --> tests/unit_tests/controllers/service_api/app/test_conversation.py:455:59
+ --> tests/unit_tests/controllers/service_api/app/test_conversation.py:427:59
ERROR Argument value `Literal[0]` violates Pydantic `ge` constraint `Literal[1]` for field `limit` [bad-argument-type]
--> tests/unit_tests/controllers/service_api/app/test_message.py:94:63
ERROR Argument value `Literal[101]` violates Pydantic `le` constraint `Literal[100]` for field `limit` [bad-argument-type]
@@ -3223,43 +3267,43 @@
ERROR Object of class `ModuleType` has no attribute `TraceQueueManager` [missing-attribute]
--> tests/unit_tests/core/app/apps/test_pause_resume.py:42:5
ERROR Class member `_StubToolNode._run` overrides parent class `Node` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:92:9
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:79:9
ERROR Argument `SimpleNamespace` is not assignable to parameter `app_model` with type `App` in function `core.app.apps.workflow.app_generator.WorkflowAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:226:19
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:220:19
ERROR Argument `SimpleNamespace` is not assignable to parameter `workflow` with type `Workflow` in function `core.app.apps.workflow.app_generator.WorkflowAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:227:18
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:221:18
ERROR Argument `SimpleNamespace` is not assignable to parameter `user` with type `Account | EndUser` in function `core.app.apps.workflow.app_generator.WorkflowAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:228:14
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:222:14
ERROR Argument `SimpleNamespace` is not assignable to parameter `application_generate_entity` with type `WorkflowAppGenerateEntity` in function `core.app.apps.workflow.app_generator.WorkflowAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:229:37
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:223:37
ERROR Argument `SimpleNamespace` is not assignable to parameter `workflow_execution_repository` with type `WorkflowExecutionRepository` in function `core.app.apps.workflow.app_generator.WorkflowAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:231:39
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:225:39
ERROR Argument `SimpleNamespace` is not assignable to parameter `workflow_node_execution_repository` with type `WorkflowNodeExecutionRepository` in function `core.app.apps.workflow.app_generator.WorkflowAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:232:44
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:226:44
ERROR `+` is not supported between `list[str]` and `Generator[Mapping[str, Any] | str]` [unsupported-operation]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:235:12
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:229:12
ERROR `+` is not supported between `list[str]` and `Mapping[str, Any]` [unsupported-operation]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:235:12
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:229:12
ERROR Argument `SimpleNamespace` is not assignable to parameter `app_model` with type `App` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:266:19
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:260:19
ERROR Argument `SimpleNamespace` is not assignable to parameter `workflow` with type `Workflow` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:267:18
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:261:18
ERROR Argument `SimpleNamespace` is not assignable to parameter `user` with type `Account | EndUser` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:268:14
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:262:14
ERROR Argument `SimpleNamespace` is not assignable to parameter `conversation` with type `Conversation` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:269:22
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:263:22
ERROR Argument `SimpleNamespace` is not assignable to parameter `message` with type `Message` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:270:17
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:264:17
ERROR Argument `SimpleNamespace` is not assignable to parameter `application_generate_entity` with type `AdvancedChatAppGenerateEntity` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:271:37
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:265:37
ERROR Argument `SimpleNamespace` is not assignable to parameter `workflow_execution_repository` with type `WorkflowExecutionRepository` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:272:39
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:266:39
ERROR Argument `SimpleNamespace` is not assignable to parameter `workflow_node_execution_repository` with type `WorkflowNodeExecutionRepository` in function `core.app.apps.advanced_chat.app_generator.AdvancedChatAppGenerator.resume` [bad-argument-type]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:273:44
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:267:44
ERROR `+` is not supported between `list[str]` and `Generator[Mapping[str, Any] | str]` [unsupported-operation]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:277:12
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:271:12
ERROR `+` is not supported between `list[str]` and `Mapping[str, Any]` [unsupported-operation]
- --> tests/unit_tests/core/app/apps/test_pause_resume.py:277:12
+ --> tests/unit_tests/core/app/apps/test_pause_resume.py:271:12
ERROR Cannot index into `str` [bad-index]
--> tests/unit_tests/core/app/apps/test_streaming_utils.py:79:12
ERROR Argument `FakeTopic` is not assignable to parameter `topic` with type `Topic` in function `core.app.apps.streaming_utils.stream_topic_events` [bad-argument-type]
@@ -3932,8 +3976,8 @@
--> tests/unit_tests/core/app/workflow/test_persistence_layer.py:174:16
ERROR Object of class `object` has no attribute `total_steps` [missing-attribute]
--> tests/unit_tests/core/app/workflow/test_persistence_layer.py:175:16
-ERROR Object of class `GraphRuntimeState` has no attribute `_graph_execution` [missing-attribute]
- --> tests/unit_tests/core/app/workflow/test_persistence_layer.py:182:9
+ERROR `SimpleNamespace` is not assignable to attribute `_graph_execution` with type `GraphExecutionProtocol | None` [bad-assignment]
+ --> tests/unit_tests/core/app/workflow/test_persistence_layer.py:182:42
ERROR Object of class `object` has no attribute `status` [missing-attribute]
--> tests/unit_tests/core/app/workflow/test_persistence_layer.py:189:16
ERROR Object of class `object` has no attribute `exceptions_count` [missing-attribute]
@@ -4138,7 +4182,7 @@
ERROR Object of class `JSONRPCNotification` has no attribute `id` [missing-attribute]
--> tests/unit_tests/core/mcp/client/test_streamable_http.py:684:16
ERROR `Literal['not-a-client-metadata']` is not assignable to attribute `metadata` with type `ClientMessageMetadata | ServerMessageMetadata | None` [bad-assignment]
- --> tests/unit_tests/core/mcp/client/test_streamable_http.py:1407:24
+ --> tests/unit_tests/core/mcp/client/test_streamable_http.py:1390:24
ERROR `MockNotificationParams` is not assignable to upper bound `NotificationParams | dict[str, Any] | None` of type variable `NotificationParamsT` [bad-specialization]
--> tests/unit_tests/core/mcp/session/test_base_session.py:50:24
ERROR `MockRequest` is not assignable to upper bound `ClientRequest | ServerRequest` of type variable `SendRequestT` [bad-specialization]
@@ -4151,7 +4195,7 @@
--> tests/unit_tests/core/mcp/session/test_base_session.py:63:19
ERROR `ReceiveNotification` is not assignable to upper bound `ClientNotification | ServerNotification` of type variable `ReceiveNotificationT` [bad-specialization]
--> tests/unit_tests/core/mcp/session/test_base_session.py:63:19
-ERROR Class member `MockSession._handle_incoming` overrides parent class `BaseSession` in an inconsistent manner [bad-override-param-name]
+ERROR Class member `MockSession._handle_incoming` overrides parent class `BaseSession` in an inconsistent manner [bad-param-name-override]
--> tests/unit_tests/core/mcp/session/test_base_session.py:76:9
ERROR `ReceiveRequest` is not assignable to upper bound `ClientRequest | ServerRequest` of type variable `ReceiveRequestT` [bad-specialization]
--> tests/unit_tests/core/mcp/session/test_base_session.py:92:33
@@ -4542,7 +4586,7 @@
ERROR Argument `list[Document | SimpleNamespace]` is not assignable to parameter `texts` with type `list[Document]` in function `core.rag.datasource.vdb.vector_base.BaseVector._get_uuids` [bad-argument-type]
--> tests/unit_tests/core/rag/datasource/vdb/test_vector_base.py:87:30
ERROR Class member `_Expr.__eq__` overrides parent class `object` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:203:13
+ --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:204:13
ERROR Argument `list[str]` is not assignable to parameter `docs` with type `Sequence[Document]` in function `core.rag.docstore.dataset_docstore.DatasetDocumentStore.add_documents` [bad-argument-type]
--> tests/unit_tests/core/rag/docstore/test_dataset_docstore.py:307:37
ERROR Argument `None` is not assignable to parameter `orig` with type `BaseException` in function `sqlalchemy.exc.DBAPIError.__init__` [bad-argument-type]
@@ -4563,7 +4607,7 @@
--> tests/unit_tests/core/rag/embedding/test_embedding_service.py:559:85
ERROR Argument `list[LiteralString]` is not assignable to parameter `texts` with type `list[str]` in function `core.rag.embedding.cached_embedding.CacheEmbedding.embed_documents` [bad-argument-type]
--> tests/unit_tests/core/rag/embedding/test_embedding_service.py:1322:54
-ERROR Class member `_ManagedStringIO.__exit__` overrides parent class `StringIO` in an inconsistent manner [bad-override-param-name]
+ERROR Class member `_ManagedStringIO.__exit__` overrides parent class `StringIO` in an inconsistent manner [bad-param-name-override]
--> tests/unit_tests/core/rag/extractor/test_csv_extractor.py:16:9
ERROR Argument `SimpleNamespace` is not assignable to parameter `upload_file` with type `UploadFile` in function `core.rag.extractor.extract_processor.ExtractProcessor.load_from_upload_file` [bad-argument-type]
--> tests/unit_tests/core/rag/extractor/test_extract_processor.py:73:67
@@ -4590,21 +4634,21 @@
ERROR Argument `SimpleNamespace` is not assignable to parameter `document_model` with type `Document | None` in function `core.rag.extractor.notion_extractor.NotionExtractor.update_last_edited_time` [bad-argument-type]
--> tests/unit_tests/core/rag/extractor/test_notion_extractor.py:435:43
ERROR Type `object` is not iterable [not-iterable]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:92:9
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:90:9
ERROR `Any | None` is not assignable to attribute `FILES_URL` with type `str` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:211:33
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:209:33
ERROR `Any | None` is not assignable to attribute `INTERNAL_FILES_URL` with type `str` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:212:42
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:210:42
ERROR `Literal['Dify']` is not assignable to attribute `text` with type `Ellipsis` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:233:14
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:231:14
ERROR `Literal[' HYPERLINK "http://example.com" ']` is not assignable to attribute `text` with type `Ellipsis` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:286:22
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:284:22
ERROR `Literal['Example']` is not assignable to attribute `text` with type `Ellipsis` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:298:15
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:296:15
ERROR `Literal['Dify']` is not assignable to attribute `text` with type `Ellipsis` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:688:14
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:655:14
ERROR `Literal['john@test.com']` is not assignable to attribute `text` with type `Ellipsis` [bad-assignment]
- --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:728:14
+ --> tests/unit_tests/core/rag/extractor/test_word_extractor.py:695:14
ERROR Argument `Literal['semantic_search']` is not assignable to parameter `retrieval_method` with type `RetrievalMethod` in function `core.rag.index_processor.processor.paragraph_index_processor.ParagraphIndexProcessor.retrieve` [bad-argument-type]
--> tests/unit_tests/core/rag/indexing/processor/test_paragraph_index_processor.py:246:39
ERROR Argument `Literal['semantic_search']` is not assignable to parameter `retrieval_method` with type `RetrievalMethod` in function `core.rag.index_processor.processor.parent_child_index_processor.ParentChildIndexProcessor.retrieve` [bad-argument-type]
@@ -5294,16 +5338,6 @@
ERROR Object of class `BlobChunkMessage` has no attribute `variable_value`
ERROR Object of class `BlobChunkMessage` has no attribute `stream`
ERROR Object of class `BlobChunkMessage` has no attribute `file_marker`
-ERROR Argument `object` is not assignable to parameter `obj` with type `Sized` in function `len` [bad-argument-type]
- --> tests/unit_tests/core/variables/test_segment.py:503:20
-ERROR Cannot index into `object` [bad-index]
- --> tests/unit_tests/core/variables/test_segment.py:504:16
-ERROR Cannot index into `object` [bad-index]
- --> tests/unit_tests/core/variables/test_segment.py:505:16
-ERROR Cannot index into `object` [bad-index]
- --> tests/unit_tests/core/variables/test_segment.py:512:16
-ERROR Cannot index into `object` [bad-index]
- --> tests/unit_tests/core/variables/test_segment.py:513:16
ERROR Cannot set field `value` [read-only]
--> tests/unit_tests/core/variables/test_variables.py:20:9
ERROR Cannot set field `value` [read-only]
@@ -5333,39 +5367,47 @@
ERROR Could not find name `NodeType` [unknown-name]
--> tests/unit_tests/core/workflow/graph_engine/test_mock_config.py:158:46
ERROR Cannot extend final class `DifyNodeFactory` [invalid-inheritance]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_factory.py:38:23
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_factory.py:37:23
ERROR Cannot set item in `dict[str, type[MockAgentNode] | type[MockCodeNode] | type[MockDocumentExtractorNode] | type[MockHttpRequestNode] | type[MockIterationNode] | type[MockKnowledgeRetrievalNode] | type[MockLLMNode] | type[MockLoopNode] | type[MockParameterExtractorNode] | type[MockQuestionClassifierNode] | type[MockTemplateTransformNode] | type[MockToolNode]]` [unsupported-operation]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_factory.py:162:44
-ERROR Unexpected keyword argument `node_id` in function `object.__init__` [unexpected-keyword]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:100:13
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_factory.py:161:44
+ERROR Unexpected keyword argument `id` in function `object.__init__` [unexpected-keyword]
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:99:13
ERROR Unexpected keyword argument `config` in function `object.__init__` [unexpected-keyword]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:101:13
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:100:13
ERROR Unexpected keyword argument `graph_init_params` in function `object.__init__` [unexpected-keyword]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:102:13
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:101:13
ERROR Unexpected keyword argument `graph_runtime_state` in function `object.__init__` [unexpected-keyword]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:103:13
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:102:13
ERROR Object of class `MockNodeMixin` has no attribute `_node_id` [missing-attribute]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:114:56
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:113:56
ERROR Object of class `MockNodeMixin` has no attribute `_node_id` [missing-attribute]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:129:56
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:128:56
ERROR Object of class `MockNodeMixin` has no attribute `_node_id` [missing-attribute]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:140:56
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:139:56
ERROR Class member `MockKnowledgeRetrievalNode.version` overrides parent class `KnowledgeRetrievalNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:351:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:350:9
ERROR Class member `MockKnowledgeRetrievalNode._run` overrides parent class `KnowledgeRetrievalNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:355:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:354:9
ERROR Class member `MockHttpRequestNode._run` overrides parent class `HttpRequestNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:412:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:411:9
+ERROR Class member `MockQuestionClassifierNode.version` overrides parent class `QuestionClassifierNode` in an inconsistent manner [bad-override]
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:460:9
ERROR Class member `MockQuestionClassifierNode._run` overrides parent class `QuestionClassifierNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:465:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:464:9
ERROR Class member `MockParameterExtractorNode._run` overrides parent class `ParameterExtractorNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:513:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:512:9
ERROR Class member `MockDocumentExtractorNode._run` overrides parent class `DocumentExtractorNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:563:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:562:9
ERROR Argument `str | None` is not assignable to parameter `root_node_id` with type `str` in function `graphon.graph.graph.Graph.init` [bad-argument-type]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:662:85
-ERROR Class member `MockLoopNode._create_graph_engine` overrides parent class `LoopNode` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:690:9
+ --> tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py:661:85
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.base.node.Node.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_join_resume.py:143:16
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_join_resume.py:158:16
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_join_resume.py:168:16
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.base.node.Node.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_join_resume.py:186:16
ERROR Argument `Sequence[type[GraphEngineEvent]]` is not assignable to parameter `expected_sequence` with type `list[type[GraphEngineEvent]]` in function `TableTestRunner._validate_event_sequence` [bad-argument-type]
--> tests/unit_tests/core/workflow/graph_engine/test_table_runner.py:402:21
ERROR `graph` is uninitialized [unbound-name]
@@ -5374,52 +5416,20 @@
--> tests/unit_tests/core/workflow/graph_engine/test_table_runner.py:456:37
ERROR Argument `Iterator[Unknown]` is not assignable to parameter `messages` with type `Generator[ToolInvokeMessage]` in function `core.workflow.nodes.agent.message_transformer.AgentMessageTransformer.transform` [bad-argument-type]
--> tests/unit_tests/core/workflow/nodes/agent/test_message_transformer.py:15:26
+ERROR Argument `dict[str, dict[str, str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.base.node.Node.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/answer/test_answer.py:82:16
ERROR Class member `_Version1._get_retry_config` overrides parent class `Node` in an inconsistent manner [bad-override]
--> tests/unit_tests/core/workflow/nodes/base/test_get_node_type_classes_mapping.py:53:13
-ERROR Expected 1 positional argument, got 2 in function `graphon.nodes.code.code_node.CodeNode._check_boolean` [bad-argument-count]
- --> tests/unit_tests/core/workflow/nodes/code/code_node_spec.py:150:44
-ERROR Expected 1 positional argument, got 2 in function `graphon.nodes.code.code_node.CodeNode._check_boolean` [bad-argument-count]
- --> tests/unit_tests/core/workflow/nodes/code/code_node_spec.py:157:44
-ERROR Expected 1 positional argument, got 2 in function `graphon.nodes.code.code_node.CodeNode._check_boolean` [bad-argument-count]
- --> tests/unit_tests/core/workflow/nodes/code/code_node_spec.py:164:45
ERROR `BaseNodeData` is not assignable to attribute `_node_data` with type `CodeNodeData` [bad-assignment]
--> tests/unit_tests/core/workflow/nodes/code/code_node_spec.py:440:27
ERROR `BaseNodeData` is not assignable to attribute `_node_data` with type `CodeNodeData` [bad-assignment]
--> tests/unit_tests/core/workflow/nodes/code/code_node_spec.py:456:27
+ERROR `dict[str, str]` is not assignable to TypedDict key `data` with type `BaseNodeData` [bad-typed-dict-key]
+ --> tests/unit_tests/core/workflow/nodes/datasource/test_datasource_node.py:83:21
ERROR Argument `_GraphParams` is not assignable to parameter `graph_init_params` with type `GraphInitParams` in function `core.workflow.nodes.datasource.datasource_node.DatasourceNode.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/datasource/test_datasource_node.py:91:27
+ --> tests/unit_tests/core/workflow/nodes/datasource/test_datasource_node.py:93:27
ERROR Argument `_GraphState` is not assignable to parameter `graph_runtime_state` with type `GraphRuntimeState` in function `core.workflow.nodes.datasource.datasource_node.DatasourceNode.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/datasource/test_datasource_node.py:92:29
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:64:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:120:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:178:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:224:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:271:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:324:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:361:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:413:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:440:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:467:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:494:25
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:520:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:570:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:617:21
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol` in function `graphon.nodes.http_request.executor.Executor.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_executor.py:658:21
+ --> tests/unit_tests/core/workflow/nodes/datasource/test_datasource_node.py:94:29
ERROR Cannot index into `object` [bad-index]
--> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:32:15
ERROR Cannot index into `object` [bad-index]
@@ -5432,98 +5442,190 @@
--> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:65:12
ERROR Cannot index into `object` [bad-index]
--> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:66:12
-ERROR Argument `SSRFProxy` is not assignable to parameter `http_client` with type `HttpClientProtocol | None` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:122:21
+ERROR Argument `dict[str, Any]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:118:16
ERROR Argument `type[ToolFileManager]` is not assignable to parameter `tool_file_manager_factory` with type `() -> ToolFileManagerProtocol` in function `graphon.nodes.http_request.node.HttpRequestNode.__init__` [bad-argument-type]
--> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:123:35
-ERROR Argument `Response` is not assignable to parameter `response` with type `HttpResponse` in function `graphon.nodes.http_request.entities.Response.__init__` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/http_request/test_http_request_node.py:158:17
ERROR Object of class `NoneType` has no attribute `type` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:204:16
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:184:16
ERROR Object of class `NoneType` has no attribute `value` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:205:16
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:185:16
ERROR Object of class `NoneType` has no attribute `type` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:213:16
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:193:16
ERROR Object of class `NoneType` has no attribute `selector` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:214:16
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:194:16
ERROR Object of class `HumanInputNodeData` has no attribute `delivery_methods` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:298:20
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:278:20
ERROR Object of class `HumanInputNodeData` has no attribute `delivery_methods` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:321:20
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:301:20
ERROR Object of class `ExternalRecipient` has no attribute `reference_id` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:414:16
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:394:16
ERROR Object of class `BoundRecipient` has no attribute `email` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:415:16
-ERROR Missing argument `reference_id` in function `core.workflow.human_input_adapter.BoundRecipient.__init__` [missing-argument]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:419:28
-ERROR Unexpected keyword argument `user_id` in function `core.workflow.human_input_adapter.BoundRecipient.__init__` [unexpected-keyword]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:419:61
-ERROR Unexpected keyword argument `whole_workspace` in function `core.workflow.human_input_adapter.EmailRecipients.__init__` [unexpected-keyword]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:421:38
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:395:16
+ERROR Missing argument `reference_id` in function `core.workflow.human_input_compat.BoundRecipient.__init__` [missing-argument]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:399:28
+ERROR Unexpected keyword argument `user_id` in function `core.workflow.human_input_compat.BoundRecipient.__init__` [unexpected-keyword]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:399:61
+ERROR Unexpected keyword argument `whole_workspace` in function `core.workflow.human_input_compat.EmailRecipients.__init__` [unexpected-keyword]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:401:38
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:470:20
ERROR Object of class `SchedulingPause` has no attribute `resolved_default_values` [missing-attribute]
- --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:501:16
-ERROR Argument `dict[str, list[str] | str]` is not assignable to parameter `node_data` with type `KnowledgeIndexNodeData | dict[str, object]` in function `_build_node` [bad-argument-type]
- --> tests/unit_tests/core/workflow/nodes/knowledge_index/test_knowledge_index_node.py:139:23
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:481:16
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:535:20
+ERROR Argument `dict[str, dict[str, list[dict[str, bool | dict[Unknown, Unknown] | str]] | list[dict[str, str]] | list[Unknown] | str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:600:20
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:676:20
+ERROR Argument `dict[str, dict[str, Any] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_entities.py:775:20
+ERROR Argument `dict[str, dict[str, list[dict[str, str]] | list[dict[str, dict[str, str] | str]] | str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_human_input_form_filled_event.py:85:16
+ERROR Argument `dict[str, dict[str, list[dict[str, str]] | list[dict[str, dict[str, str] | str]] | str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `graphon.nodes.human_input.human_input_node.HumanInputNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/human_input/test_human_input_form_filled_event.py:150:16
+ERROR `dict[str, list[str] | str]` is not assignable to TypedDict key `data` with type `BaseNodeData` [bad-typed-dict-key]
+ --> tests/unit_tests/core/workflow/nodes/iteration/test_iteration_child_engine_errors.py:50:21
+ERROR Argument `dict[str, dict[str, list[str] | str] | str]` is not assignable to parameter `config` with type `NodeConfigDict` in function `core.workflow.nodes.knowledge_index.knowledge_index_node.KnowledgeIndexNode.__init__` [bad-argument-type]
+ --> tests/unit_tests/core/workflow/nodes/knowledge_index/test_knowledge_index_node.py:120:20
ERROR Argument `dict[str, bool]` is not assignable to parameter `summary_index_setting` with type `SummaryIndexSettingDict | None`\n\n... (truncated) ... |
Pyrefly Diffbase → PR--- /tmp/pyrefly_base.txt 2026-04-22 09:03:22.878180080 +0000
+++ /tmp/pyrefly_pr.txt 2026-04-22 09:03:09.971204910 +0000
@@ -712,6 +712,10 @@
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:33:5
ERROR Object of class `ModuleType` has no attribute `Index` [missing-attribute]
--> providers/vdb/vdb-upstash/tests/unit_tests/test_upstash_vector.py:34:5
+ERROR Cannot set item in `list[list[float] | str]` [unsupported-operation]
+ --> providers/vdb/vdb-valkey/tests/integration_tests/test_valkey.py:255:9
+ERROR Argument `Literal['HAMMING']` is not assignable to parameter `distance_metric` with type `Literal['COSINE', 'IP', 'L2']` in function `dify_vdb_valkey.valkey_vector.ValkeyVectorConfig.__init__` [bad-argument-type]
+ --> providers/vdb/vdb-valkey/tests/unit_tests/test_valkey_vector.py:246:48
ERROR Object of class `ModuleType` has no attribute `SimpleConnectionPool` [missing-attribute]
--> providers/vdb/vdb-vastbase/tests/unit_tests/test_vastbase_vector.py:27:5
ERROR Object of class `ModuleType` has no attribute `execute_values` [missing-attribute]
@@ -4526,7 +4530,7 @@
ERROR Argument `list[Document | SimpleNamespace]` is not assignable to parameter `texts` with type `list[Document]` in function `core.rag.datasource.vdb.vector_base.BaseVector._get_uuids` [bad-argument-type]
--> tests/unit_tests/core/rag/datasource/vdb/test_vector_base.py:87:30
ERROR Class member `_Expr.__eq__` overrides parent class `object` in an inconsistent manner [bad-override]
- --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:203:13
+ --> tests/unit_tests/core/rag/datasource/vdb/test_vector_factory.py:204:13
ERROR Argument `list[str]` is not assignable to parameter `docs` with type `Sequence[Document]` in function `core.rag.docstore.dataset_docstore.DatasetDocumentStore.add_documents` [bad-argument-type]
--> tests/unit_tests/core/rag/docstore/test_dataset_docstore.py:307:37
ERROR Argument `None` is not assignable to parameter `orig` with type `BaseException` in function `sqlalchemy.exc.DBAPIError.__init__` [bad-argument-type]
|
|
@crazywoola this PR is ready for review. The Pyrefly issues from the earlier feedback have been addressed. |
1 similar comment
|
@crazywoola this PR is ready for review. The Pyrefly issues from the earlier feedback have been addressed. |
|
@crazywoola this PR is ready for review, please take a look when you have a chance |
64a433c to
c785221
Compare
Signed-off-by: Daria Korenieva <daric2612@gmail.com>
- Fix S110 lint: replace bare except-pass with logger.debug in __del__ - Fix type-check: use Literal type for VALKEY_DISTANCE_METRIC in config - Fix VDB CI: expose valkey port in CI, read host/port from env vars in tests Signed-off-by: Daria Korenieva <daric2612@gmail.com>
- Add valkey service definition to docker-compose-template.yaml - Change VALKEY_HOST default from localhost to valkey in .env.example - Prevents autofix from removing valkey service on regeneration Signed-off-by: Daria Korenieva <daric2612@gmail.com>
- Fix list type annotation in integration test field_pairs - Add type: ignore for intentional invalid arg in unit test Signed-off-by: Daria Korenieva <daric2612@gmail.com>
Signed-off-by: Daria Korenieva <daric2612@gmail.com>
a302b5d to
b7e62d3
Compare
Fixes #35229
Summary
Adds Valkey as a supported vector database backend for knowledge base embeddings and retrieval in Dify, using valkey-glide (the official Valkey Python client) and the valkey-search module for vector similarity search.
What's included:
Key design decisions:
Dependencies:
Checklist