merge main

This commit is contained in:
Joel
2024-12-04 11:06:00 +08:00
316 changed files with 9096 additions and 2149 deletions

View File

@ -6,14 +6,14 @@ import string
import subprocess
import time
import uuid
from collections.abc import Generator
from collections.abc import Generator, Mapping
from datetime import datetime
from hashlib import sha256
from typing import Any, Optional, Union
from zoneinfo import available_timezones
from flask import Response, stream_with_context
from flask_restful import fields
from zoneinfo import available_timezones
from configs import dify_config
from core.app.features.rate_limiting.rate_limit import RateLimitGenerator
@ -180,7 +180,9 @@ def generate_text_hash(text: str) -> str:
return sha256(hash_text.encode()).hexdigest()
def compact_generate_response(response: Union[dict, RateLimitGenerator]) -> Response:
def compact_generate_response(
response: Union[Mapping[str, Any], RateLimitGenerator, Generator[str, None, None]],
) -> Response:
if isinstance(response, dict):
return Response(response=json.dumps(response), status=200, mimetype="application/json")
else:

View File

@ -221,15 +221,29 @@ class NotionOAuth(OAuthDataSource):
return pages
def notion_page_search(self, access_token: str):
data = {"filter": {"value": "page", "property": "object"}}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"Notion-Version": "2022-06-28",
}
response = requests.post(url=self._NOTION_PAGE_SEARCH, json=data, headers=headers)
response_json = response.json()
results = response_json.get("results", [])
results = []
next_cursor = None
has_more = True
while has_more:
data = {
"filter": {"value": "page", "property": "object"},
**({"start_cursor": next_cursor} if next_cursor else {}),
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"Notion-Version": "2022-06-28",
}
response = requests.post(url=self._NOTION_PAGE_SEARCH, json=data, headers=headers)
response_json = response.json()
results.extend(response_json.get("results", []))
has_more = response_json.get("has_more", False)
next_cursor = response_json.get("next_cursor", None)
return results
def notion_block_parent_page_id(self, access_token: str, block_id: str):
@ -260,13 +274,26 @@ class NotionOAuth(OAuthDataSource):
return "workspace"
def notion_database_search(self, access_token: str):
data = {"filter": {"value": "database", "property": "object"}}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"Notion-Version": "2022-06-28",
}
response = requests.post(url=self._NOTION_PAGE_SEARCH, json=data, headers=headers)
response_json = response.json()
results = response_json.get("results", [])
results = []
next_cursor = None
has_more = True
while has_more:
data = {
"filter": {"value": "database", "property": "object"},
**({"start_cursor": next_cursor} if next_cursor else {}),
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"Notion-Version": "2022-06-28",
}
response = requests.post(url=self._NOTION_PAGE_SEARCH, json=data, headers=headers)
response_json = response.json()
results.extend(response_json.get("results", []))
has_more = response_json.get("has_more", False)
next_cursor = response_json.get("next_cursor", None)
return results

View File

@ -0,0 +1,19 @@
from configs import dify_config
def apply_gevent_threading_patch():
"""
Run threading patch by gevent
to make standard library threading compatible.
Patching should be done as early as possible in the lifecycle of the program.
:return:
"""
if not dify_config.DEBUG:
from gevent import monkey
from grpc.experimental import gevent as grpc_gevent
# gevent
monkey.patch_all()
# grpc gevent
grpc_gevent.init_gevent()

12
api/libs/version_utils.py Normal file
View File

@ -0,0 +1,12 @@
import sys
def check_supported_python_version():
python_version = sys.version_info
if not ((3, 11) <= python_version < (3, 13)):
print(
"Aborted to launch the service "
f" with unsupported Python version {python_version.major}.{python_version.minor}."
" Please ensure Python 3.11 or 3.12."
)
raise SystemExit(1)