mirror of
https://github.com/langgenius/dify.git
synced 2025-12-21 15:02:26 +00:00
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
Main CI Pipeline / Check Changed Files (push) Waiting to run
Main CI Pipeline / API Tests (push) Blocked by required conditions
Main CI Pipeline / Web Tests (push) Blocked by required conditions
Main CI Pipeline / Style Check (push) Waiting to run
Main CI Pipeline / VDB Tests (push) Blocked by required conditions
Main CI Pipeline / DB Migration Test (push) Blocked by required conditions
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: -LAN- <laipz8200@outlook.com>
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from collections.abc import Iterable, Sequence
|
|
from typing import Any
|
|
|
|
import orjson
|
|
|
|
from .segment_group import SegmentGroup
|
|
from .segments import ArrayFileSegment, FileSegment, Segment
|
|
|
|
|
|
def to_selector(node_id: str, name: str, paths: Iterable[str] = ()) -> Sequence[str]:
|
|
selectors = [node_id, name]
|
|
if paths:
|
|
selectors.extend(paths)
|
|
return selectors
|
|
|
|
|
|
def segment_orjson_default(o: Any):
|
|
"""Default function for orjson serialization of Segment types"""
|
|
if isinstance(o, ArrayFileSegment):
|
|
return [v.model_dump() for v in o.value]
|
|
elif isinstance(o, FileSegment):
|
|
return o.value.model_dump()
|
|
elif isinstance(o, SegmentGroup):
|
|
return [segment_orjson_default(seg) for seg in o.value]
|
|
elif isinstance(o, Segment):
|
|
return o.value
|
|
raise TypeError(f"Object of type {type(o).__name__} is not JSON serializable")
|
|
|
|
|
|
def dumps_with_segments(obj: Any, ensure_ascii: bool = False) -> str:
|
|
"""JSON dumps with segment support using orjson"""
|
|
option = orjson.OPT_NON_STR_KEYS
|
|
return orjson.dumps(obj, default=segment_orjson_default, option=option).decode("utf-8")
|