Add typed action route metadata
This commit is contained in:
+61
-15
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
try:
|
||||
@@ -20,16 +21,36 @@ EMPTY_ACTION_POSITION_ROUTE = {
|
||||
}
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ActionPositionRoute:
|
||||
position_family: str
|
||||
position_keys: list[str]
|
||||
position_key: str
|
||||
action_family: str
|
||||
|
||||
def as_dict(self) -> dict[str, Any]:
|
||||
return {
|
||||
"position_family": self.position_family,
|
||||
"position_keys": list(self.position_keys),
|
||||
"position_key": self.position_key,
|
||||
"action_family": self.action_family,
|
||||
}
|
||||
|
||||
|
||||
def empty_action_position_route_result() -> ActionPositionRoute:
|
||||
return ActionPositionRoute(
|
||||
position_family="",
|
||||
position_keys=[],
|
||||
position_key="",
|
||||
action_family="",
|
||||
)
|
||||
|
||||
|
||||
def empty_action_position_route() -> dict[str, Any]:
|
||||
return {
|
||||
"position_family": "",
|
||||
"position_keys": [],
|
||||
"position_key": "",
|
||||
"action_family": "",
|
||||
}
|
||||
return empty_action_position_route_result().as_dict()
|
||||
|
||||
|
||||
def resolve_action_position_route(
|
||||
def resolve_action_position_route_result(
|
||||
*,
|
||||
is_pose_category: bool,
|
||||
subcategory: dict[str, Any],
|
||||
@@ -40,9 +61,9 @@ def resolve_action_position_route(
|
||||
source_composition: Any,
|
||||
pose: Any,
|
||||
item_axis_values: dict[str, Any] | None = None,
|
||||
) -> dict[str, Any]:
|
||||
) -> ActionPositionRoute:
|
||||
if not is_pose_category:
|
||||
return empty_action_position_route()
|
||||
return empty_action_position_route_result()
|
||||
|
||||
metadata = item_template_metadata or {}
|
||||
position_family = template_policy.template_position_family(
|
||||
@@ -72,9 +93,34 @@ def resolve_action_position_route(
|
||||
item_axis_values,
|
||||
)
|
||||
|
||||
return {
|
||||
"position_family": position_family,
|
||||
"position_keys": position_keys,
|
||||
"position_key": position_keys[0] if position_keys else "",
|
||||
"action_family": action_family,
|
||||
}
|
||||
return ActionPositionRoute(
|
||||
position_family=position_family,
|
||||
position_keys=position_keys,
|
||||
position_key=position_keys[0] if position_keys else "",
|
||||
action_family=action_family,
|
||||
)
|
||||
|
||||
|
||||
def resolve_action_position_route(
|
||||
*,
|
||||
is_pose_category: bool,
|
||||
subcategory: dict[str, Any],
|
||||
hardcore_position_config: dict[str, Any] | None,
|
||||
item_template_metadata: dict[str, Any] | None,
|
||||
item_text: Any,
|
||||
source_role_graph: Any,
|
||||
source_composition: Any,
|
||||
pose: Any,
|
||||
item_axis_values: dict[str, Any] | None = None,
|
||||
) -> dict[str, Any]:
|
||||
return resolve_action_position_route_result(
|
||||
is_pose_category=is_pose_category,
|
||||
subcategory=subcategory,
|
||||
hardcore_position_config=hardcore_position_config,
|
||||
item_template_metadata=item_template_metadata,
|
||||
item_text=item_text,
|
||||
source_role_graph=source_role_graph,
|
||||
source_composition=source_composition,
|
||||
pose=pose,
|
||||
item_axis_values=item_axis_values,
|
||||
).as_dict()
|
||||
|
||||
Reference in New Issue
Block a user