typevar example (#25064)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Asuka Minato
2025-09-03 15:54:38 +09:00
committed by GitHub
parent 0e8a37dca8
commit 462e764a3c

View File

@@ -1,7 +1,7 @@
import os import os
from collections import OrderedDict from collections import OrderedDict
from collections.abc import Callable from collections.abc import Callable
from typing import Any from typing import TypeVar
from configs import dify_config from configs import dify_config
from core.tools.utils.yaml_utils import load_yaml_file from core.tools.utils.yaml_utils import load_yaml_file
@@ -72,11 +72,14 @@ def pin_position_map(original_position_map: dict[str, int], pin_list: list[str])
return position_map return position_map
T = TypeVar("T")
def is_filtered( def is_filtered(
include_set: set[str], include_set: set[str],
exclude_set: set[str], exclude_set: set[str],
data: Any, data: T,
name_func: Callable[[Any], str], name_func: Callable[[T], str],
) -> bool: ) -> bool:
""" """
Check if the object should be filtered out. Check if the object should be filtered out.
@@ -103,9 +106,9 @@ def is_filtered(
def sort_by_position_map( def sort_by_position_map(
position_map: dict[str, int], position_map: dict[str, int],
data: list[Any], data: list[T],
name_func: Callable[[Any], str], name_func: Callable[[T], str],
) -> list[Any]: ):
""" """
Sort the objects by the position map. Sort the objects by the position map.
If the name of the object is not in the position map, it will be put at the end. If the name of the object is not in the position map, it will be put at the end.
@@ -122,9 +125,9 @@ def sort_by_position_map(
def sort_to_dict_by_position_map( def sort_to_dict_by_position_map(
position_map: dict[str, int], position_map: dict[str, int],
data: list[Any], data: list[T],
name_func: Callable[[Any], str], name_func: Callable[[T], str],
) -> OrderedDict[str, Any]: ):
""" """
Sort the objects into a ordered dict by the position map. Sort the objects into a ordered dict by the position map.
If the name of the object is not in the position map, it will be put at the end. If the name of the object is not in the position map, it will be put at the end.
@@ -134,4 +137,4 @@ def sort_to_dict_by_position_map(
:return: an OrderedDict with the sorted pairs of name and object :return: an OrderedDict with the sorted pairs of name and object
""" """
sorted_items = sort_by_position_map(position_map, data, name_func) sorted_items = sort_by_position_map(position_map, data, name_func)
return OrderedDict([(name_func(item), item) for item in sorted_items]) return OrderedDict((name_func(item), item) for item in sorted_items)