diff --git a/api/app.py b/api/app.py
index 9830a80904..4f393f6c20 100644
--- a/api/app.py
+++ b/api/app.py
@@ -18,7 +18,7 @@ else:
# so we need to disable gevent in debug mode.
# If you are using debugpy and set GEVENT_SUPPORT=True, you can debug with gevent.
if (flask_debug := os.environ.get("FLASK_DEBUG", "0")) and flask_debug.lower() in {"false", "0", "no"}:
- from gevent import monkey # type: ignore
+ from gevent import monkey
# gevent
monkey.patch_all()
diff --git a/api/commands.py b/api/commands.py
index 07bc6cd927..dc31dc0d80 100644
--- a/api/commands.py
+++ b/api/commands.py
@@ -668,7 +668,7 @@ def upgrade_db():
click.echo(click.style("Starting database migration.", fg="green"))
# run db migration
- import flask_migrate # type: ignore
+ import flask_migrate
flask_migrate.upgrade()
diff --git a/api/controllers/common/fields.py b/api/controllers/common/fields.py
index b1ebc444a5..79869916ed 100644
--- a/api/controllers/common/fields.py
+++ b/api/controllers/common/fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
parameters__system_parameters = {
"image_file_size_limit": fields.Integer,
diff --git a/api/controllers/console/admin.py b/api/controllers/console/admin.py
index 6e3273f5d4..8cb7ad9f5b 100644
--- a/api/controllers/console/admin.py
+++ b/api/controllers/console/admin.py
@@ -1,7 +1,7 @@
from functools import wraps
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound, Unauthorized
diff --git a/api/controllers/console/apikey.py b/api/controllers/console/apikey.py
index eb42507c63..47c93a15c6 100644
--- a/api/controllers/console/apikey.py
+++ b/api/controllers/console/apikey.py
@@ -1,7 +1,7 @@
from typing import Any
-import flask_restful # type: ignore
-from flask_login import current_user # type: ignore
+import flask_restful
+from flask_login import current_user
from flask_restful import Resource, fields, marshal_with
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/app/advanced_prompt_template.py b/api/controllers/console/app/advanced_prompt_template.py
index 8d0c5b84af..c228743fa5 100644
--- a/api/controllers/console/app/advanced_prompt_template.py
+++ b/api/controllers/console/app/advanced_prompt_template.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.wraps import account_initialization_required, setup_required
diff --git a/api/controllers/console/app/agent.py b/api/controllers/console/app/agent.py
index 920cae0d85..d433415894 100644
--- a/api/controllers/console/app/agent.py
+++ b/api/controllers/console/app/agent.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/annotation.py b/api/controllers/console/app/annotation.py
index 48353a63af..91058767eb 100644
--- a/api/controllers/console/app/annotation.py
+++ b/api/controllers/console/app/annotation.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, marshal_with, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/app/app.py b/api/controllers/console/app/app.py
index 076bd3a959..860166a61a 100644
--- a/api/controllers/console/app/app.py
+++ b/api/controllers/console/app/app.py
@@ -1,8 +1,8 @@
import uuid
from typing import cast
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, inputs, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, inputs, marshal, marshal_with, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import BadRequest, Forbidden, abort
diff --git a/api/controllers/console/app/app_import.py b/api/controllers/console/app/app_import.py
index a159d4c5c4..5dc6515ce0 100644
--- a/api/controllers/console/app/app_import.py
+++ b/api/controllers/console/app/app_import.py
@@ -1,7 +1,7 @@
from typing import cast
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
diff --git a/api/controllers/console/app/audio.py b/api/controllers/console/app/audio.py
index 7519ae96c0..5f2def8d8e 100644
--- a/api/controllers/console/app/audio.py
+++ b/api/controllers/console/app/audio.py
@@ -1,7 +1,7 @@
import logging
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError
import services
diff --git a/api/controllers/console/app/completion.py b/api/controllers/console/app/completion.py
index c9820f70f7..732f5b799a 100644
--- a/api/controllers/console/app/completion.py
+++ b/api/controllers/console/app/completion.py
@@ -1,7 +1,7 @@
import logging
-import flask_login # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+import flask_login
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/console/app/conversation.py b/api/controllers/console/app/conversation.py
index 8827f129d9..70d6216497 100644
--- a/api/controllers/console/app/conversation.py
+++ b/api/controllers/console/app/conversation.py
@@ -1,9 +1,9 @@
from datetime import UTC, datetime
import pytz # pip install pytz
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy import func, or_
from sqlalchemy.orm import joinedload
from werkzeug.exceptions import Forbidden, NotFound
diff --git a/api/controllers/console/app/conversation_variables.py b/api/controllers/console/app/conversation_variables.py
index c0a20b7160..d49f433ba1 100644
--- a/api/controllers/console/app/conversation_variables.py
+++ b/api/controllers/console/app/conversation_variables.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/app/generator.py b/api/controllers/console/app/generator.py
index 4046417076..790369c052 100644
--- a/api/controllers/console/app/generator.py
+++ b/api/controllers/console/app/generator.py
@@ -1,7 +1,7 @@
import os
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.error import (
diff --git a/api/controllers/console/app/message.py b/api/controllers/console/app/message.py
index b5828b6b4b..b7a4c31a15 100644
--- a/api/controllers/console/app/message.py
+++ b/api/controllers/console/app/message.py
@@ -1,8 +1,8 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
from controllers.console import api
diff --git a/api/controllers/console/app/model_config.py b/api/controllers/console/app/model_config.py
index 8ecc8a9db5..f30e3e893c 100644
--- a/api/controllers/console/app/model_config.py
+++ b/api/controllers/console/app/model_config.py
@@ -2,8 +2,8 @@ import json
from typing import cast
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/ops_trace.py b/api/controllers/console/app/ops_trace.py
index 7176440e16..978c02412c 100644
--- a/api/controllers/console/app/ops_trace.py
+++ b/api/controllers/console/app/ops_trace.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import BadRequest
from controllers.console import api
diff --git a/api/controllers/console/app/site.py b/api/controllers/console/app/site.py
index f15f9d4dae..3c3a359eeb 100644
--- a/api/controllers/console/app/site.py
+++ b/api/controllers/console/app/site.py
@@ -1,7 +1,7 @@
from datetime import UTC, datetime
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from werkzeug.exceptions import Forbidden, NotFound
from constants.languages import supported_language
diff --git a/api/controllers/console/app/statistic.py b/api/controllers/console/app/statistic.py
index a37d26b989..86aed77412 100644
--- a/api/controllers/console/app/statistic.py
+++ b/api/controllers/console/app/statistic.py
@@ -3,8 +3,8 @@ from decimal import Decimal
import pytz
from flask import jsonify
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/workflow.py b/api/controllers/console/app/workflow.py
index 2e077d2095..0c13adce9b 100644
--- a/api/controllers/console/app/workflow.py
+++ b/api/controllers/console/app/workflow.py
@@ -3,7 +3,7 @@ import logging
from typing import cast
from flask import abort, request
-from flask_restful import Resource, inputs, marshal_with, reqparse # type: ignore
+from flask_restful import Resource, inputs, marshal_with, reqparse
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
diff --git a/api/controllers/console/app/workflow_app_log.py b/api/controllers/console/app/workflow_app_log.py
index d863747995..c475aea9fc 100644
--- a/api/controllers/console/app/workflow_app_log.py
+++ b/api/controllers/console/app/workflow_app_log.py
@@ -1,6 +1,6 @@
from dateutil.parser import isoparse
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from controllers.console import api
diff --git a/api/controllers/console/app/workflow_run.py b/api/controllers/console/app/workflow_run.py
index 25a99c1e15..08ab61bbb9 100644
--- a/api/controllers/console/app/workflow_run.py
+++ b/api/controllers/console/app/workflow_run.py
@@ -1,5 +1,5 @@
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/workflow_statistic.py b/api/controllers/console/app/workflow_statistic.py
index 097bf7d188..6c7c73707b 100644
--- a/api/controllers/console/app/workflow_statistic.py
+++ b/api/controllers/console/app/workflow_statistic.py
@@ -3,8 +3,8 @@ from decimal import Decimal
import pytz
from flask import jsonify
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/auth/activate.py b/api/controllers/console/auth/activate.py
index c56f551d49..1795563ff7 100644
--- a/api/controllers/console/auth/activate.py
+++ b/api/controllers/console/auth/activate.py
@@ -1,7 +1,7 @@
import datetime
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from constants.languages import supported_language
from controllers.console import api
diff --git a/api/controllers/console/auth/data_source_bearer_auth.py b/api/controllers/console/auth/data_source_bearer_auth.py
index 5f0762e4a5..b8c3c8f012 100644
--- a/api/controllers/console/auth/data_source_bearer_auth.py
+++ b/api/controllers/console/auth/data_source_bearer_auth.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/auth/data_source_oauth.py b/api/controllers/console/auth/data_source_oauth.py
index b4bd80fe2f..1049f864c3 100644
--- a/api/controllers/console/auth/data_source_oauth.py
+++ b/api/controllers/console/auth/data_source_oauth.py
@@ -2,8 +2,8 @@ import logging
import requests
from flask import current_app, redirect, request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from werkzeug.exceptions import Forbidden
from configs import dify_config
diff --git a/api/controllers/console/auth/forgot_password.py b/api/controllers/console/auth/forgot_password.py
index 0a12f0f473..fcb387831e 100644
--- a/api/controllers/console/auth/forgot_password.py
+++ b/api/controllers/console/auth/forgot_password.py
@@ -2,7 +2,7 @@ import base64
import secrets
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/auth/login.py b/api/controllers/console/auth/login.py
index fdcc47d680..86231bf616 100644
--- a/api/controllers/console/auth/login.py
+++ b/api/controllers/console/auth/login.py
@@ -1,8 +1,8 @@
from typing import cast
-import flask_login # type: ignore
+import flask_login
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
import services
from configs import dify_config
diff --git a/api/controllers/console/auth/oauth.py b/api/controllers/console/auth/oauth.py
index 33bafbf463..f5284cc43b 100644
--- a/api/controllers/console/auth/oauth.py
+++ b/api/controllers/console/auth/oauth.py
@@ -4,7 +4,7 @@ from typing import Optional
import requests
from flask import current_app, redirect, request
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import Unauthorized
diff --git a/api/controllers/console/billing/billing.py b/api/controllers/console/billing/billing.py
index fd7b7bd8cb..4b0c82ae6c 100644
--- a/api/controllers/console/billing/billing.py
+++ b/api/controllers/console/billing/billing.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.wraps import account_initialization_required, only_edition_cloud, setup_required
diff --git a/api/controllers/console/billing/compliance.py b/api/controllers/console/billing/compliance.py
index 6d5d668709..9679632ac7 100644
--- a/api/controllers/console/billing/compliance.py
+++ b/api/controllers/console/billing/compliance.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from libs.helper import extract_remote_ip
from libs.login import login_required
diff --git a/api/controllers/console/datasets/data_source.py b/api/controllers/console/datasets/data_source.py
index 70bfb217eb..7b0d9373cf 100644
--- a/api/controllers/console/datasets/data_source.py
+++ b/api/controllers/console/datasets/data_source.py
@@ -2,8 +2,8 @@ import datetime
import json
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/console/datasets/datasets.py b/api/controllers/console/datasets/datasets.py
index 43615af709..571a395780 100644
--- a/api/controllers/console/datasets/datasets.py
+++ b/api/controllers/console/datasets/datasets.py
@@ -1,7 +1,7 @@
-import flask_restful # type: ignore
+import flask_restful
from flask import request
-from flask_login import current_user # type: ignore # type: ignore
-from flask_restful import Resource, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, marshal_with, reqparse
from werkzeug.exceptions import Forbidden, NotFound
import services
diff --git a/api/controllers/console/datasets/datasets_document.py b/api/controllers/console/datasets/datasets_document.py
index 3588abeff5..68601adfed 100644
--- a/api/controllers/console/datasets/datasets_document.py
+++ b/api/controllers/console/datasets/datasets_document.py
@@ -4,8 +4,8 @@ from datetime import UTC, datetime
from typing import cast
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal, marshal_with, reqparse
from sqlalchemy import asc, desc
from werkzeug.exceptions import Forbidden, NotFound
diff --git a/api/controllers/console/datasets/datasets_segments.py b/api/controllers/console/datasets/datasets_segments.py
index 5c54ecbe81..a145038672 100644
--- a/api/controllers/console/datasets/datasets_segments.py
+++ b/api/controllers/console/datasets/datasets_segments.py
@@ -2,8 +2,8 @@ import uuid
import pandas as pd
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, reqparse
from werkzeug.exceptions import Forbidden, NotFound
import services
diff --git a/api/controllers/console/datasets/external.py b/api/controllers/console/datasets/external.py
index aee8323f23..30b7f63aab 100644
--- a/api/controllers/console/datasets/external.py
+++ b/api/controllers/console/datasets/external.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, reqparse
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
import services
diff --git a/api/controllers/console/datasets/hit_testing.py b/api/controllers/console/datasets/hit_testing.py
index d344e9d126..fba5d4c0f3 100644
--- a/api/controllers/console/datasets/hit_testing.py
+++ b/api/controllers/console/datasets/hit_testing.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.console import api
from controllers.console.datasets.hit_testing_base import DatasetsHitTestingBase
diff --git a/api/controllers/console/datasets/hit_testing_base.py b/api/controllers/console/datasets/hit_testing_base.py
index bd944602c1..3b4c076863 100644
--- a/api/controllers/console/datasets/hit_testing_base.py
+++ b/api/controllers/console/datasets/hit_testing_base.py
@@ -1,7 +1,7 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
import services.dataset_service
diff --git a/api/controllers/console/datasets/metadata.py b/api/controllers/console/datasets/metadata.py
index e4cac40ca1..b1a83aa371 100644
--- a/api/controllers/console/datasets/metadata.py
+++ b/api/controllers/console/datasets/metadata.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from werkzeug.exceptions import NotFound
from controllers.console import api
diff --git a/api/controllers/console/datasets/website.py b/api/controllers/console/datasets/website.py
index 33c926b4c9..4200a51709 100644
--- a/api/controllers/console/datasets/website.py
+++ b/api/controllers/console/datasets/website.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.datasets.error import WebsiteCrawlError
diff --git a/api/controllers/console/explore/audio.py b/api/controllers/console/explore/audio.py
index c7f9fec326..54bc590677 100644
--- a/api/controllers/console/explore/audio.py
+++ b/api/controllers/console/explore/audio.py
@@ -66,7 +66,7 @@ class ChatAudioApi(InstalledAppResource):
class ChatTextApi(InstalledAppResource):
def post(self, installed_app):
- from flask_restful import reqparse # type: ignore
+ from flask_restful import reqparse
app_model = installed_app.app
try:
diff --git a/api/controllers/console/explore/completion.py b/api/controllers/console/explore/completion.py
index e693a5a71b..4367da1162 100644
--- a/api/controllers/console/explore/completion.py
+++ b/api/controllers/console/explore/completion.py
@@ -1,8 +1,8 @@
import logging
from datetime import UTC, datetime
-from flask_login import current_user # type: ignore
-from flask_restful import reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/console/explore/conversation.py b/api/controllers/console/explore/conversation.py
index 600e78e09e..d7c161cc6d 100644
--- a/api/controllers/console/explore/conversation.py
+++ b/api/controllers/console/explore/conversation.py
@@ -1,6 +1,6 @@
-from flask_login import current_user # type: ignore
-from flask_restful import marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/console/explore/installed_app.py b/api/controllers/console/explore/installed_app.py
index c392203139..229f704d27 100644
--- a/api/controllers/console/explore/installed_app.py
+++ b/api/controllers/console/explore/installed_app.py
@@ -3,8 +3,8 @@ from datetime import UTC, datetime
from typing import Any
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, inputs, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, inputs, marshal_with, reqparse
from sqlalchemy import and_
from werkzeug.exceptions import BadRequest, Forbidden, NotFound
diff --git a/api/controllers/console/explore/message.py b/api/controllers/console/explore/message.py
index ff12959a65..822777604a 100644
--- a/api/controllers/console/explore/message.py
+++ b/api/controllers/console/explore/message.py
@@ -1,8 +1,8 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/console/explore/parameter.py b/api/controllers/console/explore/parameter.py
index bf9f0d6b28..a1280d91d1 100644
--- a/api/controllers/console/explore/parameter.py
+++ b/api/controllers/console/explore/parameter.py
@@ -1,4 +1,4 @@
-from flask_restful import marshal_with # type: ignore
+from flask_restful import marshal_with
from controllers.common import fields
from controllers.console import api
diff --git a/api/controllers/console/explore/recommended_app.py b/api/controllers/console/explore/recommended_app.py
index be6b1f5d21..ce85f495aa 100644
--- a/api/controllers/console/explore/recommended_app.py
+++ b/api/controllers/console/explore/recommended_app.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal_with, reqparse
from constants.languages import languages
from controllers.console import api
diff --git a/api/controllers/console/explore/saved_message.py b/api/controllers/console/explore/saved_message.py
index 3a1655d0ee..339e7007a0 100644
--- a/api/controllers/console/explore/saved_message.py
+++ b/api/controllers/console/explore/saved_message.py
@@ -1,6 +1,6 @@
-from flask_login import current_user # type: ignore
-from flask_restful import fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import NotFound
from controllers.console import api
diff --git a/api/controllers/console/explore/workflow.py b/api/controllers/console/explore/workflow.py
index a2653a94f6..3f625e6609 100644
--- a/api/controllers/console/explore/workflow.py
+++ b/api/controllers/console/explore/workflow.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError
from controllers.console.app.error import (
diff --git a/api/controllers/console/explore/wraps.py b/api/controllers/console/explore/wraps.py
index b67ef6a949..1679a078e0 100644
--- a/api/controllers/console/explore/wraps.py
+++ b/api/controllers/console/explore/wraps.py
@@ -1,7 +1,7 @@
from functools import wraps
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from werkzeug.exceptions import NotFound
from controllers.console.explore.error import AppAccessDeniedError
diff --git a/api/controllers/console/extension.py b/api/controllers/console/extension.py
index 833da0d03c..07a241ef86 100644
--- a/api/controllers/console/extension.py
+++ b/api/controllers/console/extension.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from constants import HIDDEN_VALUE
from controllers.console import api
diff --git a/api/controllers/console/feature.py b/api/controllers/console/feature.py
index da1171412f..70ab4ff865 100644
--- a/api/controllers/console/feature.py
+++ b/api/controllers/console/feature.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from libs.login import login_required
from services.feature_service import FeatureService
diff --git a/api/controllers/console/files.py b/api/controllers/console/files.py
index 8cf754bbd6..66b6214f82 100644
--- a/api/controllers/console/files.py
+++ b/api/controllers/console/files.py
@@ -1,8 +1,8 @@
from typing import Literal
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with
from werkzeug.exceptions import Forbidden
import services
diff --git a/api/controllers/console/init_validate.py b/api/controllers/console/init_validate.py
index cfed5fe7a4..b19e331d2e 100644
--- a/api/controllers/console/init_validate.py
+++ b/api/controllers/console/init_validate.py
@@ -1,7 +1,7 @@
import os
from flask import session
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/ping.py b/api/controllers/console/ping.py
index 2a116112a3..cd28cc946e 100644
--- a/api/controllers/console/ping.py
+++ b/api/controllers/console/ping.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.console import api
diff --git a/api/controllers/console/remote_files.py b/api/controllers/console/remote_files.py
index 30afc930a8..b8cf019e4f 100644
--- a/api/controllers/console/remote_files.py
+++ b/api/controllers/console/remote_files.py
@@ -2,8 +2,8 @@ import urllib.parse
from typing import cast
import httpx
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
import services
from controllers.common import helpers
diff --git a/api/controllers/console/setup.py b/api/controllers/console/setup.py
index 3b47f8f12f..e1f19a87a3 100644
--- a/api/controllers/console/setup.py
+++ b/api/controllers/console/setup.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from configs import dify_config
from libs.helper import StrLen, email, extract_remote_ip
diff --git a/api/controllers/console/tag/tags.py b/api/controllers/console/tag/tags.py
index 0d0d7ae95f..cb5dedca21 100644
--- a/api/controllers/console/tag/tags.py
+++ b/api/controllers/console/tag/tags.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/version.py b/api/controllers/console/version.py
index 7773c99944..7dea8e554e 100644
--- a/api/controllers/console/version.py
+++ b/api/controllers/console/version.py
@@ -2,7 +2,7 @@ import json
import logging
import requests
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from packaging import version
from configs import dify_config
diff --git a/api/controllers/console/workspace/__init__.py b/api/controllers/console/workspace/__init__.py
index 7af2b44a4a..072e904caf 100644
--- a/api/controllers/console/workspace/__init__.py
+++ b/api/controllers/console/workspace/__init__.py
@@ -1,6 +1,6 @@
from functools import wraps
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
diff --git a/api/controllers/console/workspace/account.py b/api/controllers/console/workspace/account.py
index e9c25e6c5b..a9dbf44456 100644
--- a/api/controllers/console/workspace/account.py
+++ b/api/controllers/console/workspace/account.py
@@ -2,8 +2,8 @@ import datetime
import pytz
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal_with, reqparse
from configs import dify_config
from constants.languages import supported_language
diff --git a/api/controllers/console/workspace/agent_providers.py b/api/controllers/console/workspace/agent_providers.py
index a41d6c501c..88c37767e3 100644
--- a/api/controllers/console/workspace/agent_providers.py
+++ b/api/controllers/console/workspace/agent_providers.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from controllers.console import api
from controllers.console.wraps import account_initialization_required, setup_required
diff --git a/api/controllers/console/workspace/endpoint.py b/api/controllers/console/workspace/endpoint.py
index aa1a78935d..eb53dcb16e 100644
--- a/api/controllers/console/workspace/endpoint.py
+++ b/api/controllers/console/workspace/endpoint.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/load_balancing_config.py b/api/controllers/console/workspace/load_balancing_config.py
index 6e1d87cb12..ba74e2c074 100644
--- a/api/controllers/console/workspace/load_balancing_config.py
+++ b/api/controllers/console/workspace/load_balancing_config.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/members.py b/api/controllers/console/workspace/members.py
index 3628aa1670..3a474a8916 100644
--- a/api/controllers/console/workspace/members.py
+++ b/api/controllers/console/workspace/members.py
@@ -1,7 +1,7 @@
from urllib import parse
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, abort, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, abort, marshal_with, reqparse
import services
from configs import dify_config
diff --git a/api/controllers/console/workspace/model_providers.py b/api/controllers/console/workspace/model_providers.py
index d7d1cc8d00..ff0fcbda6e 100644
--- a/api/controllers/console/workspace/model_providers.py
+++ b/api/controllers/console/workspace/model_providers.py
@@ -1,8 +1,8 @@
import io
from flask import send_file
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/models.py b/api/controllers/console/workspace/models.py
index 8b72a1ea3d..37d0f6c764 100644
--- a/api/controllers/console/workspace/models.py
+++ b/api/controllers/console/workspace/models.py
@@ -1,7 +1,7 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/plugin.py b/api/controllers/console/workspace/plugin.py
index 6f9ae18750..fda5a7d3bb 100644
--- a/api/controllers/console/workspace/plugin.py
+++ b/api/controllers/console/workspace/plugin.py
@@ -1,8 +1,8 @@
import io
from flask import request, send_file
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from configs import dify_config
diff --git a/api/controllers/console/workspace/tool_providers.py b/api/controllers/console/workspace/tool_providers.py
index 39ab454922..2b1379bfb2 100644
--- a/api/controllers/console/workspace/tool_providers.py
+++ b/api/controllers/console/workspace/tool_providers.py
@@ -1,8 +1,8 @@
import io
from flask import send_file
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
diff --git a/api/controllers/console/workspace/workspace.py b/api/controllers/console/workspace/workspace.py
index 332ed00222..71e6f9178f 100644
--- a/api/controllers/console/workspace/workspace.py
+++ b/api/controllers/console/workspace/workspace.py
@@ -1,8 +1,8 @@
import logging
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, inputs, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, inputs, marshal, marshal_with, reqparse
from werkzeug.exceptions import Unauthorized
import services
diff --git a/api/controllers/console/wraps.py b/api/controllers/console/wraps.py
index 36ee8492b4..0dd646fd60 100644
--- a/api/controllers/console/wraps.py
+++ b/api/controllers/console/wraps.py
@@ -4,7 +4,7 @@ import time
from functools import wraps
from flask import abort, request
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from configs import dify_config
from controllers.console.workspace.error import AccountNotInitializedError
diff --git a/api/controllers/files/image_preview.py b/api/controllers/files/image_preview.py
index 9199069585..46c19e1fbb 100644
--- a/api/controllers/files/image_preview.py
+++ b/api/controllers/files/image_preview.py
@@ -1,7 +1,7 @@
from urllib.parse import quote
from flask import Response, request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import NotFound
import services
diff --git a/api/controllers/files/tool_files.py b/api/controllers/files/tool_files.py
index 2779514bed..1c3430ef4f 100644
--- a/api/controllers/files/tool_files.py
+++ b/api/controllers/files/tool_files.py
@@ -1,7 +1,7 @@
from urllib.parse import quote
from flask import Response
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden, NotFound
from controllers.files import api
diff --git a/api/controllers/files/upload.py b/api/controllers/files/upload.py
index 178fb9477a..6641632169 100644
--- a/api/controllers/files/upload.py
+++ b/api/controllers/files/upload.py
@@ -1,7 +1,7 @@
from mimetypes import guess_extension
from flask import request
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_restful import Resource, marshal_with
from werkzeug.exceptions import Forbidden
import services
diff --git a/api/controllers/inner_api/plugin/plugin.py b/api/controllers/inner_api/plugin/plugin.py
index 061ad62a4a..f3a1bd8fa5 100644
--- a/api/controllers/inner_api/plugin/plugin.py
+++ b/api/controllers/inner_api/plugin/plugin.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.console.wraps import setup_required
from controllers.inner_api import api
diff --git a/api/controllers/inner_api/plugin/wraps.py b/api/controllers/inner_api/plugin/wraps.py
index c31f9d22ed..709bba3f30 100644
--- a/api/controllers/inner_api/plugin/wraps.py
+++ b/api/controllers/inner_api/plugin/wraps.py
@@ -3,7 +3,7 @@ from functools import wraps
from typing import Optional
from flask import request
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from pydantic import BaseModel
from sqlalchemy.orm import Session
diff --git a/api/controllers/inner_api/workspace/workspace.py b/api/controllers/inner_api/workspace/workspace.py
index 9dfa5d23c3..a2fc2d4675 100644
--- a/api/controllers/inner_api/workspace/workspace.py
+++ b/api/controllers/inner_api/workspace/workspace.py
@@ -1,6 +1,6 @@
import json
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console.wraps import setup_required
from controllers.inner_api import api
diff --git a/api/controllers/service_api/app/annotation.py b/api/controllers/service_api/app/annotation.py
index c50f551faf..bd1a23b723 100644
--- a/api/controllers/service_api/app/annotation.py
+++ b/api/controllers/service_api/app/annotation.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import Resource, marshal, marshal_with, reqparse # type: ignore
+from flask_restful import Resource, marshal, marshal_with, reqparse
from werkzeug.exceptions import Forbidden
from controllers.service_api import api
diff --git a/api/controllers/service_api/app/app.py b/api/controllers/service_api/app/app.py
index 7131e8a310..2c03aba33d 100644
--- a/api/controllers/service_api/app/app.py
+++ b/api/controllers/service_api/app/app.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_restful import Resource, marshal_with
from controllers.common import fields
from controllers.service_api import api
@@ -47,7 +47,7 @@ class AppInfoApi(Resource):
def get(self, app_model: App):
"""Get app information"""
tags = [tag.name for tag in app_model.tags]
- return {"name": app_model.name, "description": app_model.description, "tags": tags}
+ return {"name": app_model.name, "description": app_model.description, "tags": tags, "mode": app_model.mode}
api.add_resource(AppParameterApi, "/parameters")
diff --git a/api/controllers/service_api/app/audio.py b/api/controllers/service_api/app/audio.py
index e6bcc0bfd2..2682c2e7f1 100644
--- a/api/controllers/service_api/app/audio.py
+++ b/api/controllers/service_api/app/audio.py
@@ -1,7 +1,7 @@
import logging
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError
import services
diff --git a/api/controllers/service_api/app/completion.py b/api/controllers/service_api/app/completion.py
index 38a65b7a90..1d9890199d 100644
--- a/api/controllers/service_api/app/completion.py
+++ b/api/controllers/service_api/app/completion.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/service_api/app/conversation.py b/api/controllers/service_api/app/conversation.py
index dfc357e1ab..36a7905572 100644
--- a/api/controllers/service_api/app/conversation.py
+++ b/api/controllers/service_api/app/conversation.py
@@ -1,5 +1,5 @@
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/service_api/app/file.py b/api/controllers/service_api/app/file.py
index 27b21b9f50..b0fd8e65ef 100644
--- a/api/controllers/service_api/app/file.py
+++ b/api/controllers/service_api/app/file.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_restful import Resource, marshal_with
import services
from controllers.common.errors import FilenameNotExistsError
diff --git a/api/controllers/service_api/app/message.py b/api/controllers/service_api/app/message.py
index 95e538f4c7..1b148a9756 100644
--- a/api/controllers/service_api/app/message.py
+++ b/api/controllers/service_api/app/message.py
@@ -1,8 +1,8 @@
import json
import logging
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
import services
diff --git a/api/controllers/service_api/app/workflow.py b/api/controllers/service_api/app/workflow.py
index ca3e35aab8..e9bb2b046a 100644
--- a/api/controllers/service_api/app/workflow.py
+++ b/api/controllers/service_api/app/workflow.py
@@ -1,8 +1,8 @@
import logging
from dateutil.parser import isoparse
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import InternalServerError
diff --git a/api/controllers/service_api/dataset/dataset.py b/api/controllers/service_api/dataset/dataset.py
index e1e6f3168f..ee190245d5 100644
--- a/api/controllers/service_api/dataset/dataset.py
+++ b/api/controllers/service_api/dataset/dataset.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import marshal, reqparse # type: ignore
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import Forbidden, NotFound
import services.dataset_service
diff --git a/api/controllers/service_api/dataset/document.py b/api/controllers/service_api/dataset/document.py
index 9e943e2b2d..33eda37014 100644
--- a/api/controllers/service_api/dataset/document.py
+++ b/api/controllers/service_api/dataset/document.py
@@ -1,7 +1,7 @@
import json
from flask import request
-from flask_restful import marshal, reqparse # type: ignore
+from flask_restful import marshal, reqparse
from sqlalchemy import desc
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/service_api/dataset/metadata.py b/api/controllers/service_api/dataset/metadata.py
index 35578eae54..35582feea0 100644
--- a/api/controllers/service_api/dataset/metadata.py
+++ b/api/controllers/service_api/dataset/metadata.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore # type: ignore
-from flask_restful import marshal, reqparse # type: ignore
+from flask_login import current_user # type: ignore
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import NotFound
from controllers.service_api import api
diff --git a/api/controllers/service_api/dataset/segment.py b/api/controllers/service_api/dataset/segment.py
index 95753cfd67..fb3ca1e15f 100644
--- a/api/controllers/service_api/dataset/segment.py
+++ b/api/controllers/service_api/dataset/segment.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import NotFound
from controllers.service_api import api
diff --git a/api/controllers/service_api/index.py b/api/controllers/service_api/index.py
index 75d9141a6d..d24c4597e2 100644
--- a/api/controllers/service_api/index.py
+++ b/api/controllers/service_api/index.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from configs import dify_config
from controllers.service_api import api
diff --git a/api/controllers/service_api/workspace/models.py b/api/controllers/service_api/workspace/models.py
index 373f8019f9..3f18474674 100644
--- a/api/controllers/service_api/workspace/models.py
+++ b/api/controllers/service_api/workspace/models.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from controllers.service_api import api
from controllers.service_api.wraps import validate_dataset_token
diff --git a/api/controllers/service_api/wraps.py b/api/controllers/service_api/wraps.py
index 7facb03358..cd35ceac1d 100644
--- a/api/controllers/service_api/wraps.py
+++ b/api/controllers/service_api/wraps.py
@@ -7,7 +7,7 @@ from typing import Optional
from flask import current_app, request
from flask_login import user_logged_in # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from pydantic import BaseModel
from sqlalchemy import select, update
from sqlalchemy.orm import Session
diff --git a/api/controllers/web/app.py b/api/controllers/web/app.py
index 122ebc30c6..658e4a2e75 100644
--- a/api/controllers/web/app.py
+++ b/api/controllers/web/app.py
@@ -1,6 +1,4 @@
-
-from flask import request
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_restful import marshal_with
from controllers.common import fields
from controllers.web import api
diff --git a/api/controllers/web/audio.py b/api/controllers/web/audio.py
index 97d980d07c..06d9ad7564 100644
--- a/api/controllers/web/audio.py
+++ b/api/controllers/web/audio.py
@@ -65,7 +65,7 @@ class AudioApi(WebApiResource):
class TextApi(WebApiResource):
def post(self, app_model: App, end_user):
- from flask_restful import reqparse # type: ignore
+ from flask_restful import reqparse
try:
parser = reqparse.RequestParser()
diff --git a/api/controllers/web/completion.py b/api/controllers/web/completion.py
index 9677401490..fd3b9aa804 100644
--- a/api/controllers/web/completion.py
+++ b/api/controllers/web/completion.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/web/conversation.py b/api/controllers/web/conversation.py
index 419247ea14..98cea3974f 100644
--- a/api/controllers/web/conversation.py
+++ b/api/controllers/web/conversation.py
@@ -1,5 +1,5 @@
-from flask_restful import marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/web/feature.py b/api/controllers/web/feature.py
index ce841a8814..0563ed2238 100644
--- a/api/controllers/web/feature.py
+++ b/api/controllers/web/feature.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.web import api
from services.feature_service import FeatureService
diff --git a/api/controllers/web/files.py b/api/controllers/web/files.py
index 1d4474015a..df06a73a85 100644
--- a/api/controllers/web/files.py
+++ b/api/controllers/web/files.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import marshal_with # type: ignore
+from flask_restful import marshal_with
import services
from controllers.common.errors import FilenameNotExistsError
diff --git a/api/controllers/web/message.py b/api/controllers/web/message.py
index 17e9a3990f..f2e1873601 100644
--- a/api/controllers/web/message.py
+++ b/api/controllers/web/message.py
@@ -1,7 +1,7 @@
import logging
-from flask_restful import fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/web/passport.py b/api/controllers/web/passport.py
index f386d6855b..154c6772b7 100644
--- a/api/controllers/web/passport.py
+++ b/api/controllers/web/passport.py
@@ -1,7 +1,7 @@
import uuid
from flask import request
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from werkzeug.exceptions import NotFound, Unauthorized
from controllers.web import api
diff --git a/api/controllers/web/remote_files.py b/api/controllers/web/remote_files.py
index d559ab8e07..ae68df6bdc 100644
--- a/api/controllers/web/remote_files.py
+++ b/api/controllers/web/remote_files.py
@@ -1,7 +1,7 @@
import urllib.parse
import httpx
-from flask_restful import marshal_with, reqparse # type: ignore
+from flask_restful import marshal_with, reqparse
import services
from controllers.common import helpers
diff --git a/api/controllers/web/saved_message.py b/api/controllers/web/saved_message.py
index ab2d4abcd3..d7188ef0b3 100644
--- a/api/controllers/web/saved_message.py
+++ b/api/controllers/web/saved_message.py
@@ -1,5 +1,5 @@
-from flask_restful import fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import NotFound
from controllers.web import api
diff --git a/api/controllers/web/site.py b/api/controllers/web/site.py
index e68dc7aa4a..0564b15ea3 100644
--- a/api/controllers/web/site.py
+++ b/api/controllers/web/site.py
@@ -1,4 +1,4 @@
-from flask_restful import fields, marshal_with # type: ignore
+from flask_restful import fields, marshal_with
from werkzeug.exceptions import Forbidden
from configs import dify_config
diff --git a/api/controllers/web/workflow.py b/api/controllers/web/workflow.py
index d2e183be78..590fd3f2c7 100644
--- a/api/controllers/web/workflow.py
+++ b/api/controllers/web/workflow.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError
from controllers.web import api
diff --git a/api/controllers/web/wraps.py b/api/controllers/web/wraps.py
index 8d35b8e4be..cea74b854c 100644
--- a/api/controllers/web/wraps.py
+++ b/api/controllers/web/wraps.py
@@ -1,7 +1,7 @@
from functools import wraps
from flask import request
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from werkzeug.exceptions import BadRequest, NotFound, Unauthorized
from controllers.web.error import WebAppAuthAccessDeniedError, WebAppAuthRequiredError
diff --git a/api/core/indexing_runner.py b/api/core/indexing_runner.py
index a75a4c22d1..81bf59b2b6 100644
--- a/api/core/indexing_runner.py
+++ b/api/core/indexing_runner.py
@@ -9,7 +9,7 @@ import uuid
from typing import Any, Optional, cast
from flask import current_app
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy.orm.exc import ObjectDeletedError
from configs import dify_config
diff --git a/api/core/workflow/nodes/llm/node.py b/api/core/workflow/nodes/llm/node.py
index 1d8a2e2eed..6ba7569aa9 100644
--- a/api/core/workflow/nodes/llm/node.py
+++ b/api/core/workflow/nodes/llm/node.py
@@ -149,7 +149,7 @@ class LLMNode(BaseNode[LLMNodeData]):
self._llm_file_saver = llm_file_saver
def _run(self) -> Generator[NodeEvent | InNodeEvent, None, None]:
- def process_structured_output(text: str) -> Optional[dict[str, Any] | list[Any]]:
+ def process_structured_output(text: str) -> Optional[dict[str, Any]]:
"""Process structured output if enabled"""
if not self.node_data.structured_output_enabled or not self.node_data.structured_output:
return None
@@ -797,18 +797,22 @@ class LLMNode(BaseNode[LLMNodeData]):
stop = model_config.stop
return filtered_prompt_messages, stop
- def _parse_structured_output(self, result_text: str) -> dict[str, Any] | list[Any]:
- structured_output: dict[str, Any] | list[Any] = {}
+ def _parse_structured_output(self, result_text: str) -> dict[str, Any]:
+ structured_output: dict[str, Any] = {}
try:
parsed = json.loads(result_text)
- if not isinstance(parsed, (dict | list)):
+ if not isinstance(parsed, dict):
raise LLMNodeError(f"Failed to parse structured output: {result_text}")
structured_output = parsed
except json.JSONDecodeError as e:
# if the result_text is not a valid json, try to repair it
parsed = json_repair.loads(result_text)
- if not isinstance(parsed, (dict | list)):
- raise LLMNodeError(f"Failed to parse structured output: {result_text}")
+ if not isinstance(parsed, dict):
+ # handle reasoning model like deepseek-r1 got '