5 Commits

Author SHA1 Message Date
TheNoxium
b28d40adaf fix: value 2025-11-24 04:39:38 +07:00
TheNoxium
5aa14f5ae8 fix: descriptor port 2025-11-24 04:32:42 +07:00
TheNoxium
0d6ecfeb40 fix: descriptor (listen, set, if, )deprecated typings 2025-11-24 04:12:26 +07:00
TheNoxium
0bc87b589e fix: description nodes 2025-11-18 13:35:01 +05:00
TheNoxium
11090a742a feat: delete ports 2025-11-15 15:10:17 +05:00
31 changed files with 151 additions and 209 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,67 +1,77 @@
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
from pydantic import BaseModel, Field
from typing import Literal, Annotated, Union
class LinkPort(BaseModel): class LinkPort(BaseModel):
id: str id: int
label: str label: str
is_addable: Optional[bool] = None is_addable: bool | None = None
class LineElement(BaseModel): class LineElement(BaseModel):
type: Literal['line'] type: Literal['line'] = 'line'
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: str | None = None
value: str | None = None
class AreaElement(BaseModel): class AreaElement(BaseModel):
type: Literal['area'] type: Literal['area'] = 'area'
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: str | None = None
value: str | None = None
class SelectElement(BaseModel): class SelectElement(BaseModel):
type: Literal['select'] type: Literal['select'] = 'select'
name: str name: str
label: str label: str
data: List[str] data: list[str]
default: Optional[str] = None default: str | None = None
placeholder: Optional[str] = None placeholder: str | None = None
value: str | None = None
class NumberElement(BaseModel): class NumberElement(BaseModel):
type: Literal['number'] type: Literal['number'] = 'number'
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: str | None = None
value: int | float | None = None
class DateElement(BaseModel): class DateElement(BaseModel):
type: Literal['date'] type: Literal['date'] = 'date'
name: str name: str
label: str label: str
placeholder: Optional[str] = None placeholder: str | None = None
value: str | None = None
FieldElement = Annotated[ FieldElement = Annotated[
LineElement | AreaElement | SelectElement | NumberElement | DateElement, LineElement | AreaElement | SelectElement | NumberElement | DateElement,
Field(discriminator='type'), Field(discriminator='type')
] ]
class RowElement(BaseModel): class RowElement(BaseModel):
type: Literal['row'] type: Literal['row'] = 'row'
name: str name: str
label: str label: str
link_port: Optional[LinkPort] = None link_port: LinkPort | None = None
elements: Optional[List[FieldElement]] = None elements: list[FieldElement] | None = 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

@@ -21,9 +21,8 @@ class CallbackNodeLinks(BaseModel):
class CallbackNodeCoreSchemaData(BaseModel): class CallbackNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла callback Pydantic модель для данных узла callback
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
class CallbackNodeCoreSchema(BaseModel): class CallbackNodeCoreSchema(BaseModel):
@@ -111,7 +110,7 @@ CALLBACK_FORM_DESCRIPTOR = FormDescriptor(
name="then_row", name="then_row",
type="row", type="row",
label="Then", label="Then",
link_port=LinkPort(id="then_output", label="Then"), link_port=LinkPort(id=0, label="Then"),
), ),
] ]
) )

View File

@@ -21,10 +21,8 @@ class EachNodeLinks(BaseModel):
class EachNodeCoreSchemaData(BaseModel): class EachNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла each Pydantic модель для данных узла each
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
else_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи Else (LINK)")
class EachNodeCoreSchema(BaseModel): class EachNodeCoreSchema(BaseModel):
@@ -45,7 +43,7 @@ EACH_FORM_DESCRIPTOR = FormDescriptor(
name="list_row", name="list_row",
type="row", type="row",
label="List", label="List",
link_port=LinkPort(id="then_output", label="Then"), link_port=LinkPort(id=0, label="Then"),
elements=[ elements=[
LineElement( LineElement(
name="list", name="list",
@@ -59,7 +57,7 @@ EACH_FORM_DESCRIPTOR = FormDescriptor(
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

@@ -21,10 +21,8 @@ class IfNodeLinks(BaseModel):
class IfNodeCoreSchemaData(BaseModel): class IfNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла if Pydantic модель для данных узла if
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
else_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи Else (LINK)")
class IfNodeCoreSchema(BaseModel): class IfNodeCoreSchema(BaseModel):
@@ -38,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",
@@ -58,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

@@ -22,9 +22,9 @@ class ListenNodeLinks(BaseModel):
class ListenNodeCoreSchemaData(BaseModel): class ListenNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла listen Pydantic модель для данных узла listen
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
is_start: bool = Field(default=False, description="Является ли узел стартовым") is_start: bool = Field(default=False, description="Является ли узел стартовым")
@@ -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

@@ -21,9 +21,9 @@ class RunNodeLinks(BaseModel):
class RunNodeCoreSchemaData(BaseModel): class RunNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла run Pydantic модель для данных узла run
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
class RunNodeCoreSchema(BaseModel): class RunNodeCoreSchema(BaseModel):
@@ -71,7 +71,7 @@ RUN_FORM_DESCRIPTOR = FormDescriptor(
name="then_row", name="then_row",
type="row", type="row",
label="Then", label="Then",
link_port=LinkPort(id="then_output", label="Then"), link_port=LinkPort(id=0, label="Then"),
), ),
] ]
) )

View File

@@ -21,9 +21,9 @@ class SetNodeLinks(BaseModel):
class SetNodeCoreSchemaData(BaseModel): class SetNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла set Pydantic модель для данных узла set
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи then (LINK)")
class SetNodeCoreSchema(BaseModel): class SetNodeCoreSchema(BaseModel):
@@ -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

@@ -21,10 +21,9 @@ class SwitchNodeLinks(BaseModel):
class SwitchNodeCoreSchemaData(BaseModel): class SwitchNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла switch Pydantic модель для данных узла switch
""" """
default_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи default (LINK)")
case_1_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи case_1 (LINK)")
class SwitchNodeCoreSchema(BaseModel): class SwitchNodeCoreSchema(BaseModel):
@@ -45,7 +44,7 @@ SWITCH_FORM_DESCRIPTOR = FormDescriptor(
name="switch_row", name="switch_row",
type="row", type="row",
label="Switch condition", label="Switch condition",
link_port=LinkPort(id="case_1_output", label="case_1", is_addable=True), link_port=LinkPort(id=0, label="case_1", is_addable=True),
elements=[ elements=[
AreaElement( AreaElement(
name="switch_value", name="switch_value",
@@ -59,7 +58,7 @@ SWITCH_FORM_DESCRIPTOR = FormDescriptor(
name="default_row", name="default_row",
type="row", type="row",
label="Default", label="Default",
link_port=LinkPort(id="default_output", label="default"), link_port=LinkPort(id=0, label="default"),
), ),
] ]
) )

View File

@@ -19,9 +19,9 @@ class TestNodeLinks(BaseModel):
class TestNodeCoreSchemaData(BaseModel): class TestNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла test Pydantic модель для данных узла test
""" """
node_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
class TestNodeCoreSchema(BaseModel): class TestNodeCoreSchema(BaseModel):

View File

@@ -21,9 +21,9 @@ class TriggerNodeLinks(BaseModel):
class TriggerNodeCoreSchemaData(BaseModel): class TriggerNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла trigger Pydantic модель для данных узла trigger
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
class TriggerNodeCoreSchema(BaseModel): class TriggerNodeCoreSchema(BaseModel):
@@ -70,7 +70,7 @@ TRIGGER_FORM_DESCRIPTOR = FormDescriptor(
name="then_row", name="then_row",
type="row", type="row",
label="Then", label="Then",
link_port=LinkPort(id="then_output", label="Then"), link_port=LinkPort(id=0, label="Then"),
), ),
] ]
) )

View File

@@ -21,9 +21,9 @@ class WaitNodeLinks(BaseModel):
class WaitNodeCoreSchemaData(BaseModel): class WaitNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла wait Pydantic модель для данных узла wait
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи then (LINK)")
class WaitNodeCoreSchema(BaseModel): class WaitNodeCoreSchema(BaseModel):
@@ -84,7 +84,7 @@ WAIT_FORM_DESCRIPTOR = FormDescriptor(
name="then_row", name="then_row",
type="row", type="row",
label="Transition", label="Transition",
link_port=LinkPort(id="then_output", label="then"), link_port=LinkPort(id=0, label="then"),
), ),
] ]
) )

View File

@@ -21,10 +21,9 @@ class WhileNodeLinks(BaseModel):
class WhileNodeCoreSchemaData(BaseModel): class WhileNodeCoreSchemaData(BaseModel):
""" """
Pydantic модель для данных портов узла while Pydantic модель для данных узла while
""" """
then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)")
else_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи Else (LINK)")
class WhileNodeCoreSchema(BaseModel): class WhileNodeCoreSchema(BaseModel):
@@ -45,7 +44,7 @@ WHILE_FORM_DESCRIPTOR = FormDescriptor(
name="condition_row", name="condition_row",
type="row", type="row",
label="Parameter", label="Parameter",
link_port=LinkPort(id="then_output", label="Then"), link_port=LinkPort(id=0, label="Then"),
elements=[ elements=[
AreaElement( AreaElement(
name="condition", name="condition",
@@ -59,7 +58,7 @@ WHILE_FORM_DESCRIPTOR = FormDescriptor(
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=0, label="Else"),
), ),
] ]
) )

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
""" """
@@ -33,17 +33,13 @@ class VorkNodeCallback(VorkNode):
Валидирует данные узла callback и возвращает схему Валидирует данные узла callback и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
node_data = CallbackNodeCoreSchemaData( node_data = None
then_port_number=0
)
# Создаем схему с валидированными данными
return CallbackNodeCoreSchema( return CallbackNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -33,19 +33,12 @@ class VorkNodeEach(VorkNode):
Валидирует данные узла each и возвращает схему Валидирует данные узла each и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
# Создаем данные портов (аналогично if) node_data = None
node_data = EachNodeCoreSchemaData(
then_port_number=0,
else_port_number=1,
)
# Создаем схему с валидированными данными
return EachNodeCoreSchema( return EachNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -28,19 +28,12 @@ class VorkNodeIf(VorkNode):
и возвращает схему с валидированными данными. и возвращает схему с валидированными данными.
""" """
try: try:
# Валидируем данные
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи
validated_links = self.validate_links() validated_links = self.validate_links()
# Создаем вложенную схему с данными портов node_data = None
node_data = IfNodeCoreSchemaData(
then_port_number=0,
else_port_number=1,
)
# Создаем схему с валидированными данными из экземпляра
return IfNodeCoreSchema( return IfNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -33,18 +33,14 @@ class VorkNodeListen(VorkNode):
Валидирует данные узла listen и возвращает схему Валидирует данные узла listen и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
node_data = ListenNodeCoreSchemaData( node_data = ListenNodeCoreSchemaData(
then_port_number=0,
is_start=validated_data.is_start is_start=validated_data.is_start
) )
# Создаем схему с валидированными данными
return ListenNodeCoreSchema( return ListenNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -33,17 +33,13 @@ class VorkNodeRun(VorkNode):
Валидирует данные узла run и возвращает схему Валидирует данные узла run и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
node_data = RunNodeCoreSchemaData( node_data = None
then_port_number=0
)
# Создаем схему с валидированными данными
return RunNodeCoreSchema( return RunNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -33,18 +33,13 @@ class VorkNodeSet(VorkNode):
Валидирует данные узла set и возвращает схему Валидирует данные узла set и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
# Создаем данные портов node_data = None
node_data = SetNodeCoreSchemaData(
then_port_number=0,
)
# Создаем схему с валидированными данными
return SetNodeCoreSchema( return SetNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -40,10 +40,7 @@ class VorkNodeSwitch(VorkNode):
validated_links = self.validate_links() validated_links = self.validate_links()
# Создаем данные портов (default=0, case_1=1) # Создаем данные портов (default=0, case_1=1)
node_data = SwitchNodeCoreSchemaData( node_data = None
default_port_number=0,
case_1_port_number=1,
)
# Создаем схему с валидированными данными # Создаем схему с валидированными данными
return SwitchNodeCoreSchema( return SwitchNodeCoreSchema(

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
""" """
@@ -33,17 +33,12 @@ class VorkNodeTrigger(VorkNode):
Валидирует данные узла trigger и возвращает схему Валидирует данные узла trigger и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
node_data = TriggerNodeCoreSchemaData( node_data = None
then_port_number=0
)
# Создаем схему с валидированными данными
return TriggerNodeCoreSchema( return TriggerNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -33,18 +33,12 @@ class VorkNodeWait(VorkNode):
Валидирует данные узла wait и возвращает схему Валидирует данные узла wait и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
# Создаем данные портов node_data = None
node_data = WaitNodeCoreSchemaData(
then_port_number=0,
)
# Создаем схему с валидированными данными
return WaitNodeCoreSchema( return WaitNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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
""" """
@@ -33,19 +33,13 @@ class VorkNodeWhile(VorkNode):
Валидирует данные узла while и возвращает схему Валидирует данные узла while и возвращает схему
""" """
try: try:
# Валидируем данные узла
validated_data = self.validate_data() validated_data = self.validate_data()
# Валидируем связи узла
validated_links = self.validate_links() validated_links = self.validate_links()
# Создаем данные портов (аналогично if) node_data = None
node_data = WhileNodeCoreSchemaData(
then_port_number=0,
else_port_number=1,
)
# Создаем схему с валидированными данными
return WhileNodeCoreSchema( return WhileNodeCoreSchema(
ps_id=validated_data.ps_id, ps_id=validated_data.ps_id,
node_type=validated_data.node_type, node_type=validated_data.node_type,

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