fix: descriptor (listen, set, if, )deprecated typings

This commit is contained in:
TheNoxium
2025-11-24 04:12:26 +07:00
parent 0bc87b589e
commit 0d6ecfeb40
23 changed files with 89 additions and 94 deletions

View File

@@ -1,16 +1,16 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import Any, Dict from typing import Any
class VorkNode(ABC): class VorkNode(ABC):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any]): def __init__(self, data: dict[str, Any], links: dict[str, Any]):
self.data: Dict[str, Any] = data self.data: dict[str, Any] = data
self.links: Dict[str, Any] = links self.links: dict[str, Any] = links
@classmethod @classmethod
@abstractmethod @abstractmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
pass pass
@abstractmethod @abstractmethod

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from model_nodes import VorkNodeLinkData, VorkNodeLinkSchema from model_nodes import VorkNodeLinkData, VorkNodeLinkSchema
@@ -8,7 +8,7 @@ from .link_name_generator import edge_title_generator, edge_title_to_number
class VorkNodeLink: class VorkNodeLink:
def __init__(self, data: Dict[str, Any]): def __init__(self, data: dict[str, Any]):
""" """
Инициализация связи между узлами Инициализация связи между узлами
""" """

View File

@@ -1,18 +1,18 @@
import importlib import importlib
import inspect import inspect
import pkgutil import pkgutil
from typing import Dict, Type, Optional, List from typing import Type, Optional
from .vork_node import VorkNode from .vork_node import VorkNode
class VorkNodeRegistry: class VorkNodeRegistry:
def __init__(self): def __init__(self):
self.registry: Dict[str, Type[VorkNode]] = {} self.registry: dict[str, Type[VorkNode]] = {}
# Автоматически сканируем пакет 'nodes' при создании # Автоматически сканируем пакет 'nodes' при создании
self._auto_discover_nodes() self._auto_discover_nodes()
def get_all(self) -> Dict[str, Type[VorkNode]]: def get_all(self) -> dict[str, Type[VorkNode]]:
return self.registry.copy() return self.registry.copy()
def get(self, node_type: str) -> Optional[Type[VorkNode]]: def get(self, node_type: str) -> Optional[Type[VorkNode]]:
@@ -55,12 +55,12 @@ class VorkNodeRegistry:
except Exception as e: except Exception as e:
print(f"Ошибка при сканировании пакета 'nodes': {e}") print(f"Ошибка при сканировании пакета 'nodes': {e}")
def get_available_node_types(self) -> List[str]: def get_available_node_types(self) -> list[str]:
""" """
Возвращает список всех доступных типов узлов Возвращает список всех доступных типов узлов
Returns: Returns:
List[str]: Список типов узлов list[str]: Список типов узлов
""" """
return list(self.registry.keys()) return list(self.registry.keys())

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from .vork_node import VorkNode from .vork_node import VorkNode
from model_nodes.node_test_models import ( from model_nodes.node_test_models import (
TestNodeData, TestNodeData,
@@ -9,7 +9,7 @@ from model_nodes.node_test_models import (
class VorkNodeTest(VorkNode): class VorkNodeTest(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла test Инициализация узла test
""" """

View File

@@ -1,10 +1,10 @@
from __future__ import annotations from __future__ import annotations
from typing import Optional, Annotated, Literal, List from typing import Optional, Annotated, Literal, Any
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
class LinkPort(BaseModel): class LinkPort(BaseModel):
id: str id: int
label: str label: str
is_addable: Optional[bool] = None is_addable: Optional[bool] = None
@@ -14,6 +14,7 @@ class LineElement(BaseModel):
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: Optional[str] = None
value: str = None
class AreaElement(BaseModel): class AreaElement(BaseModel):
@@ -21,15 +22,17 @@ class AreaElement(BaseModel):
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: Optional[str] = None
value: str = None
class SelectElement(BaseModel): class SelectElement(BaseModel):
type: Literal['select'] type: Literal['select']
name: str name: str
label: str label: str
data: List[str] data: list[str]
default: Optional[str] = None default: Optional[str] = None
placeholder: Optional[str] = None placeholder: Optional[str] = None
value: Optional[Any] = None
class NumberElement(BaseModel): class NumberElement(BaseModel):
@@ -37,6 +40,7 @@ class NumberElement(BaseModel):
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: Optional[str] = None
value: int | float
class DateElement(BaseModel): class DateElement(BaseModel):
@@ -44,6 +48,7 @@ class DateElement(BaseModel):
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: Optional[str] = None
value: str = None
FieldElement = Annotated[ FieldElement = Annotated[
@@ -57,11 +62,11 @@ class RowElement(BaseModel):
name: str name: str
label: str label: str
link_port: Optional[LinkPort] = None link_port: Optional[LinkPort] = None
elements: Optional[List[FieldElement]] = None elements: Optional[list[FieldElement]] = None
class FormDescriptor(BaseModel): class FormDescriptor(BaseModel):
elements: List[RowElement] elements: list[RowElement]
# Descriptor-suffixed aliases for clarity (backward compatible) # Descriptor-suffixed aliases for clarity (backward compatible)

View File

@@ -36,14 +36,18 @@ class IfNodeCoreSchema(BaseModel):
data: Optional[IfNodeCoreSchemaData] = Field(default=None, description="Данные узла") data: Optional[IfNodeCoreSchemaData] = Field(default=None, description="Данные узла")
# Дескриптор формы узла IF
IF_FORM_DESCRIPTOR = FormDescriptor( IF_FORM_DESCRIPTOR = FormDescriptor(
elements=[ elements=[
RowElement(
name="condition_row_label",
type="row",
label="condition_name",
),
RowElement( RowElement(
name="condition_row", name="condition_row",
type="row", type="row",
label="Condition", label="condition",
link_port=LinkPort(id="then_output", label="Then"), link_port=LinkPort(id=0, label="Then"),
elements=[ elements=[
AreaElement( AreaElement(
name="condition", name="condition",
@@ -56,8 +60,8 @@ IF_FORM_DESCRIPTOR = FormDescriptor(
RowElement( RowElement(
name="else_row", name="else_row",
type="row", type="row",
label="Alternative path", label="alternative_path",
link_port=LinkPort(id="else_output", label="Else"), link_port=LinkPort(id=1, label="Else"),
), ),
] ]
) )

View File

@@ -1,4 +1,4 @@
from typing import Optional, Dict, Any from typing import Optional
from pydantic import BaseModel, Field from pydantic import BaseModel, Field

View File

@@ -43,36 +43,36 @@ class ListenNodeCoreSchema(BaseModel):
LISTEN_FORM_DESCRIPTOR = FormDescriptor( LISTEN_FORM_DESCRIPTOR = FormDescriptor(
elements=[ elements=[
RowElement( RowElement(
name="event_row", name="listen_row_label",
type="row", type="row",
label="Event", label="listen_name",
),
RowElement(
name="listen_row",
type="row",
label="event_input",
elements=[ elements=[
LineElement( LineElement(
name="event_name", name="event_id",
type="line", type="line",
label="Event", label="event_id",
placeholder="Event identifier", placeholder="Event identifier",
) )
], ],
), ),
RowElement( RowElement(
name="condition_row", name="listen_row",
type="row", type="row",
label="Condition", label="condition_input",
link_port=LinkPort(id=0, label="Then"),
elements=[ elements=[
AreaElement( AreaElement(
name="condition", name="listen_condition",
type="area", type="area",
label="Condition", label="listen_condition",
placeholder="If P([condition(i), [AND, OR]]) == true", placeholder="If P([condition(i), [AND, OR]]) == true",
) )
], ],
), ),
RowElement(
name="then_row",
type="row",
label="Then",
link_port=LinkPort(id="then_output", label="Then"),
),
] ]
) )

View File

@@ -41,22 +41,14 @@ class SetNodeCoreSchema(BaseModel):
SET_FORM_DESCRIPTOR = FormDescriptor( SET_FORM_DESCRIPTOR = FormDescriptor(
elements=[ elements=[
RowElement( RowElement(
name="variable_row", name="set_row_label",
type="row", type="row",
label="Parameter name", label="set_row_name",
elements=[
LineElement(
name="variable",
type="line",
label="Parameter name",
placeholder="Enter parameter name",
)
],
), ),
RowElement( RowElement(
name="value_row", name="value_row",
type="row", type="row",
label="Value", label="set_value",
elements=[ elements=[
AreaElement( AreaElement(
name="value", name="value",
@@ -65,13 +57,7 @@ SET_FORM_DESCRIPTOR = FormDescriptor(
placeholder="Enter value", placeholder="Enter value",
) )
], ],
), link_port=LinkPort(id=0, label="then"),
RowElement(
name="link_row",
type="row",
label="Link",
link_port=LinkPort(id="then_output", label="then"),
elements=[],
), ),
] ]
) )

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_callback_models import ( from model_nodes.node_callback_models import (
CallbackNodeData, CallbackNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_callback_models import (
class VorkNodeCallback(VorkNode): class VorkNodeCallback(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла callback Инициализация узла callback
""" """
@@ -22,7 +22,7 @@ class VorkNodeCallback(VorkNode):
return "CALLBACK" return "CALLBACK"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Callback Возвращает статический дескриптор формы для узла Callback
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_each_models import ( from model_nodes.node_each_models import (
EachNodeData, EachNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_each_models import (
class VorkNodeEach(VorkNode): class VorkNodeEach(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла each Инициализация узла each
""" """
@@ -22,7 +22,7 @@ class VorkNodeEach(VorkNode):
return "EACH" return "EACH"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Each Возвращает статический дескриптор формы для узла Each
""" """

View File

@@ -1,4 +1,4 @@
from typing import Any, Dict from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_if_models import ( from model_nodes.node_if_models import (
IfNodeData, IfNodeData,
@@ -16,7 +16,7 @@ class VorkNodeIf(VorkNode):
return "IF" return "IF"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла IF Возвращает статический дескриптор формы для узла IF
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_listen_models import ( from model_nodes.node_listen_models import (
ListenNodeData, ListenNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_listen_models import (
class VorkNodeListen(VorkNode): class VorkNodeListen(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла listen Инициализация узла listen
""" """
@@ -22,7 +22,7 @@ class VorkNodeListen(VorkNode):
return "LISTEN" return "LISTEN"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Listen Возвращает статический дескриптор формы для узла Listen
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_run_models import ( from model_nodes.node_run_models import (
RunNodeData, RunNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_run_models import (
class VorkNodeRun(VorkNode): class VorkNodeRun(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла run Инициализация узла run
""" """
@@ -22,7 +22,7 @@ class VorkNodeRun(VorkNode):
return "RUN" return "RUN"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Run Возвращает статический дескриптор формы для узла Run
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_set_models import ( from model_nodes.node_set_models import (
SetNodeData, SetNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_set_models import (
class VorkNodeSet(VorkNode): class VorkNodeSet(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла set Инициализация узла set
""" """
@@ -22,7 +22,7 @@ class VorkNodeSet(VorkNode):
return "SET" return "SET"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Set Возвращает статический дескриптор формы для узла Set
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_switch_models import ( from model_nodes.node_switch_models import (
SwitchNodeData, SwitchNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_switch_models import (
class VorkNodeSwitch(VorkNode): class VorkNodeSwitch(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла switch Инициализация узла switch
""" """
@@ -22,7 +22,7 @@ class VorkNodeSwitch(VorkNode):
return "SWITCH" return "SWITCH"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Switch Возвращает статический дескриптор формы для узла Switch
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_trigger_models import ( from model_nodes.node_trigger_models import (
TriggerNodeData, TriggerNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_trigger_models import (
class VorkNodeTrigger(VorkNode): class VorkNodeTrigger(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла trigger Инициализация узла trigger
""" """
@@ -22,7 +22,7 @@ class VorkNodeTrigger(VorkNode):
return "TRIGGER" return "TRIGGER"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Trigger Возвращает статический дескриптор формы для узла Trigger
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_wait_models import ( from model_nodes.node_wait_models import (
WaitNodeData, WaitNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_wait_models import (
class VorkNodeWait(VorkNode): class VorkNodeWait(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла wait Инициализация узла wait
""" """
@@ -22,7 +22,7 @@ class VorkNodeWait(VorkNode):
return "WAIT" return "WAIT"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла Wait Возвращает статический дескриптор формы для узла Wait
""" """

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from core import VorkNode from core import VorkNode
from model_nodes.node_while_models import ( from model_nodes.node_while_models import (
WhileNodeData, WhileNodeData,
@@ -11,7 +11,7 @@ from model_nodes.node_while_models import (
class VorkNodeWhile(VorkNode): class VorkNodeWhile(VorkNode):
def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): def __init__(self, data: dict[str, Any], links: dict[str, Any] = None):
""" """
Инициализация узла while Инициализация узла while
""" """
@@ -22,7 +22,7 @@ class VorkNodeWhile(VorkNode):
return "WHILE" return "WHILE"
@classmethod @classmethod
def form(cls) -> Dict[str, Any]: def form(cls) -> dict[str, Any]:
""" """
Возвращает статический дескриптор формы для узла While Возвращает статический дескриптор формы для узла While
""" """

View File

@@ -1,5 +1,5 @@
from pydantic import Field from pydantic import Field
from typing import Dict, Any from typing import Any
from datetime import datetime from datetime import datetime
from enum import Enum from enum import Enum
@@ -12,7 +12,7 @@ class NodeLink(Base):
link_name: str = Field(..., max_length=20) link_name: str = Field(..., max_length=20)
node_id: int node_id: int
next_node_id: int next_node_id: int
settings: Dict[str, Any] settings: dict[str, Any]
creator_id: int creator_id: int
created_at: datetime created_at: datetime
status: NodeLinkStatus status: NodeLinkStatus

View File

@@ -1,5 +1,5 @@
from pydantic import Field from pydantic import Field
from typing import Dict, Any from typing import Any
from datetime import datetime from datetime import datetime
from enum import Enum from enum import Enum
@@ -15,5 +15,5 @@ class ProcessSchema(Base):
owner_id: int owner_id: int
creator_id: int creator_id: int
created_at: datetime created_at: datetime
settings: Dict[str, Any] settings: dict[str, Any]
status: ProcessStatus status: ProcessStatus

View File

@@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Any
from datetime import datetime from datetime import datetime
from orm.schemas.base import Base from orm.schemas.base import Base
@@ -7,7 +7,7 @@ from orm.schemas.base import Base
class ProcessStatusSchema(Base): class ProcessStatusSchema(Base):
id: int id: int
version: int version: int
snapshot: Dict[str, Any] snapshot: dict[str, Any]
owner_id: int owner_id: int
created_at: datetime created_at: datetime
is_last: int is_last: int

View File

@@ -1,5 +1,5 @@
from datetime import datetime from datetime import datetime
from typing import Dict, Any from typing import Any
from enum import Enum from enum import Enum
from orm.schemas.base import Base from orm.schemas.base import Base
@@ -11,6 +11,6 @@ class Ps_Node(Base):
ps_id: int ps_id: int
node_type: NodeType node_type: NodeType
settings: dict settings: dict
creator_id: Dict[str, Any] creator_id: dict[str, Any]
created_at: datetime created_at: datetime
status: NodeStatus status: NodeStatus