fix: drop dead code phase2 unused class (#22042)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>pull/22455/merge
parent
3587bd4040
commit
d2933c2bfe
@ -1,52 +0,0 @@
|
|||||||
import base64
|
|
||||||
import hashlib
|
|
||||||
import hmac
|
|
||||||
import os
|
|
||||||
import time
|
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
|
||||||
|
|
||||||
from configs import dify_config
|
|
||||||
|
|
||||||
|
|
||||||
class SignedUrlParams(BaseModel):
|
|
||||||
sign_key: str = Field(..., description="The sign key")
|
|
||||||
timestamp: str = Field(..., description="Timestamp")
|
|
||||||
nonce: str = Field(..., description="Nonce")
|
|
||||||
sign: str = Field(..., description="Signature")
|
|
||||||
|
|
||||||
|
|
||||||
class UrlSigner:
|
|
||||||
@classmethod
|
|
||||||
def get_signed_url(cls, url: str, sign_key: str, prefix: str) -> str:
|
|
||||||
signed_url_params = cls.get_signed_url_params(sign_key, prefix)
|
|
||||||
return (
|
|
||||||
f"{url}?timestamp={signed_url_params.timestamp}"
|
|
||||||
f"&nonce={signed_url_params.nonce}&sign={signed_url_params.sign}"
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_signed_url_params(cls, sign_key: str, prefix: str) -> SignedUrlParams:
|
|
||||||
timestamp = str(int(time.time()))
|
|
||||||
nonce = os.urandom(16).hex()
|
|
||||||
sign = cls._sign(sign_key, timestamp, nonce, prefix)
|
|
||||||
|
|
||||||
return SignedUrlParams(sign_key=sign_key, timestamp=timestamp, nonce=nonce, sign=sign)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def verify(cls, sign_key: str, timestamp: str, nonce: str, sign: str, prefix: str) -> bool:
|
|
||||||
recalculated_sign = cls._sign(sign_key, timestamp, nonce, prefix)
|
|
||||||
|
|
||||||
return sign == recalculated_sign
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _sign(cls, sign_key: str, timestamp: str, nonce: str, prefix: str) -> str:
|
|
||||||
if not dify_config.SECRET_KEY:
|
|
||||||
raise Exception("SECRET_KEY is not set")
|
|
||||||
|
|
||||||
data_to_sign = f"{prefix}|{sign_key}|{timestamp}|{nonce}"
|
|
||||||
secret_key = dify_config.SECRET_KEY.encode()
|
|
||||||
sign = hmac.new(secret_key, data_to_sign.encode(), hashlib.sha256).digest()
|
|
||||||
encoded_sign = base64.urlsafe_b64encode(sign).decode()
|
|
||||||
|
|
||||||
return encoded_sign
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
"""Abstract interface for document clean implementations."""
|
|
||||||
|
|
||||||
from core.rag.cleaner.cleaner_base import BaseCleaner
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredNonAsciiCharsCleaner(BaseCleaner):
|
|
||||||
def clean(self, content) -> str:
|
|
||||||
"""clean document content."""
|
|
||||||
from unstructured.cleaners.core import clean_extra_whitespace
|
|
||||||
|
|
||||||
# Returns "ITEM 1A: RISK FACTORS"
|
|
||||||
return clean_extra_whitespace(content)
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
"""Abstract interface for document clean implementations."""
|
|
||||||
|
|
||||||
from core.rag.cleaner.cleaner_base import BaseCleaner
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredGroupBrokenParagraphsCleaner(BaseCleaner):
|
|
||||||
def clean(self, content) -> str:
|
|
||||||
"""clean document content."""
|
|
||||||
import re
|
|
||||||
|
|
||||||
from unstructured.cleaners.core import group_broken_paragraphs
|
|
||||||
|
|
||||||
para_split_re = re.compile(r"(\s*\n\s*){3}")
|
|
||||||
|
|
||||||
return group_broken_paragraphs(content, paragraph_split=para_split_re)
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
"""Abstract interface for document clean implementations."""
|
|
||||||
|
|
||||||
from core.rag.cleaner.cleaner_base import BaseCleaner
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredNonAsciiCharsCleaner(BaseCleaner):
|
|
||||||
def clean(self, content) -> str:
|
|
||||||
"""clean document content."""
|
|
||||||
from unstructured.cleaners.core import clean_non_ascii_chars
|
|
||||||
|
|
||||||
# Returns "This text contains non-ascii characters!"
|
|
||||||
return clean_non_ascii_chars(content)
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
"""Abstract interface for document clean implementations."""
|
|
||||||
|
|
||||||
from core.rag.cleaner.cleaner_base import BaseCleaner
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredNonAsciiCharsCleaner(BaseCleaner):
|
|
||||||
def clean(self, content) -> str:
|
|
||||||
"""Replaces unicode quote characters, such as the \x91 character in a string."""
|
|
||||||
|
|
||||||
from unstructured.cleaners.core import replace_unicode_quotes
|
|
||||||
|
|
||||||
return replace_unicode_quotes(content)
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
"""Abstract interface for document clean implementations."""
|
|
||||||
|
|
||||||
from core.rag.cleaner.cleaner_base import BaseCleaner
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredTranslateTextCleaner(BaseCleaner):
|
|
||||||
def clean(self, content) -> str:
|
|
||||||
"""clean document content."""
|
|
||||||
from unstructured.cleaners.translate import translate_text
|
|
||||||
|
|
||||||
return translate_text(content)
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
from typing import Optional
|
|
||||||
|
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
|
|
||||||
class ClusterEntity(BaseModel):
|
|
||||||
"""
|
|
||||||
Model Config Entity.
|
|
||||||
"""
|
|
||||||
|
|
||||||
name: str
|
|
||||||
cluster_id: str
|
|
||||||
displayName: str
|
|
||||||
region: str
|
|
||||||
spendingLimit: Optional[int] = 1000
|
|
||||||
version: str
|
|
||||||
createdBy: str
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
import logging
|
|
||||||
|
|
||||||
from core.rag.extractor.extractor_base import BaseExtractor
|
|
||||||
from core.rag.models.document import Document
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredPDFExtractor(BaseExtractor):
|
|
||||||
"""Load pdf files.
|
|
||||||
|
|
||||||
|
|
||||||
Args:
|
|
||||||
file_path: Path to the file to load.
|
|
||||||
|
|
||||||
api_url: Unstructured API URL
|
|
||||||
|
|
||||||
api_key: Unstructured API Key
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, file_path: str, api_url: str, api_key: str):
|
|
||||||
"""Initialize with file path."""
|
|
||||||
self._file_path = file_path
|
|
||||||
self._api_url = api_url
|
|
||||||
self._api_key = api_key
|
|
||||||
|
|
||||||
def extract(self) -> list[Document]:
|
|
||||||
if self._api_url:
|
|
||||||
from unstructured.partition.api import partition_via_api
|
|
||||||
|
|
||||||
elements = partition_via_api(
|
|
||||||
filename=self._file_path, api_url=self._api_url, api_key=self._api_key, strategy="auto"
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
from unstructured.partition.pdf import partition_pdf
|
|
||||||
|
|
||||||
elements = partition_pdf(filename=self._file_path, strategy="auto")
|
|
||||||
|
|
||||||
from unstructured.chunking.title import chunk_by_title
|
|
||||||
|
|
||||||
chunks = chunk_by_title(elements, max_characters=2000, combine_text_under_n_chars=2000)
|
|
||||||
documents = []
|
|
||||||
for chunk in chunks:
|
|
||||||
text = chunk.text.strip()
|
|
||||||
documents.append(Document(page_content=text))
|
|
||||||
|
|
||||||
return documents
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
import logging
|
|
||||||
|
|
||||||
from core.rag.extractor.extractor_base import BaseExtractor
|
|
||||||
from core.rag.models.document import Document
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredTextExtractor(BaseExtractor):
|
|
||||||
"""Load msg files.
|
|
||||||
|
|
||||||
|
|
||||||
Args:
|
|
||||||
file_path: Path to the file to load.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, file_path: str, api_url: str):
|
|
||||||
"""Initialize with file path."""
|
|
||||||
self._file_path = file_path
|
|
||||||
self._api_url = api_url
|
|
||||||
|
|
||||||
def extract(self) -> list[Document]:
|
|
||||||
from unstructured.partition.text import partition_text
|
|
||||||
|
|
||||||
elements = partition_text(filename=self._file_path)
|
|
||||||
from unstructured.chunking.title import chunk_by_title
|
|
||||||
|
|
||||||
chunks = chunk_by_title(elements, max_characters=2000, combine_text_under_n_chars=2000)
|
|
||||||
documents = []
|
|
||||||
for chunk in chunks:
|
|
||||||
text = chunk.text.strip()
|
|
||||||
documents.append(Document(page_content=text))
|
|
||||||
|
|
||||||
return documents
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
from typing import Optional
|
|
||||||
|
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
|
||||||
from core.workflow.nodes.base import BaseIterationState, BaseLoopState, BaseNode
|
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.workflow import Workflow, WorkflowType
|
|
||||||
|
|
||||||
from .node_entities import NodeRunResult
|
|
||||||
from .variable_pool import VariablePool
|
|
||||||
|
|
||||||
|
|
||||||
class WorkflowNodeAndResult:
|
|
||||||
node: BaseNode
|
|
||||||
result: Optional[NodeRunResult] = None
|
|
||||||
|
|
||||||
def __init__(self, node: BaseNode, result: Optional[NodeRunResult] = None):
|
|
||||||
self.node = node
|
|
||||||
self.result = result
|
|
||||||
|
|
||||||
|
|
||||||
class WorkflowRunState:
|
|
||||||
tenant_id: str
|
|
||||||
app_id: str
|
|
||||||
workflow_id: str
|
|
||||||
workflow_type: WorkflowType
|
|
||||||
user_id: str
|
|
||||||
user_from: UserFrom
|
|
||||||
invoke_from: InvokeFrom
|
|
||||||
|
|
||||||
workflow_call_depth: int
|
|
||||||
|
|
||||||
start_at: float
|
|
||||||
variable_pool: VariablePool
|
|
||||||
|
|
||||||
total_tokens: int = 0
|
|
||||||
|
|
||||||
workflow_nodes_and_results: list[WorkflowNodeAndResult]
|
|
||||||
|
|
||||||
class NodeRun(BaseModel):
|
|
||||||
node_id: str
|
|
||||||
iteration_node_id: str
|
|
||||||
loop_node_id: str
|
|
||||||
|
|
||||||
workflow_node_runs: list[NodeRun]
|
|
||||||
workflow_node_steps: int
|
|
||||||
|
|
||||||
current_iteration_state: Optional[BaseIterationState]
|
|
||||||
current_loop_state: Optional[BaseLoopState]
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
workflow: Workflow,
|
|
||||||
start_at: float,
|
|
||||||
variable_pool: VariablePool,
|
|
||||||
user_id: str,
|
|
||||||
user_from: UserFrom,
|
|
||||||
invoke_from: InvokeFrom,
|
|
||||||
workflow_call_depth: int,
|
|
||||||
):
|
|
||||||
self.workflow_id = workflow.id
|
|
||||||
self.tenant_id = workflow.tenant_id
|
|
||||||
self.app_id = workflow.app_id
|
|
||||||
self.workflow_type = WorkflowType.value_of(workflow.type)
|
|
||||||
self.user_id = user_id
|
|
||||||
self.user_from = user_from
|
|
||||||
self.invoke_from = invoke_from
|
|
||||||
self.workflow_call_depth = workflow_call_depth
|
|
||||||
|
|
||||||
self.start_at = start_at
|
|
||||||
self.variable_pool = variable_pool
|
|
||||||
|
|
||||||
self.total_tokens = 0
|
|
||||||
|
|
||||||
self.workflow_node_steps = 1
|
|
||||||
self.workflow_node_runs = []
|
|
||||||
self.current_iteration_state = None
|
|
||||||
self.current_loop_state = None
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
|
|
||||||
class PydanticModelEncoder(json.JSONEncoder):
|
|
||||||
def default(self, o):
|
|
||||||
if isinstance(o, BaseModel):
|
|
||||||
return o.model_dump()
|
|
||||||
else:
|
|
||||||
super().default(o)
|
|
||||||
Loading…
Reference in New Issue