Skip to content

Commit

Permalink
fix models for python 3.8
Browse files Browse the repository at this point in the history
  • Loading branch information
20081984 authored and 20081984 committed Feb 13, 2024
1 parent 82c0b1c commit 920ffb5
Show file tree
Hide file tree
Showing 25 changed files with 217 additions and 194 deletions.
8 changes: 4 additions & 4 deletions nlpf_statemachine/example/app/sc/models/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ class CustomState(BaseModel):
# Описание стейта с фронта.
"""

replace_message: bool | None = Field(default=None)
replace_message: Optional[bool] = Field(default=None)
"""Флаг подмены сообщения для примера с pre_process."""

screen: str | None = Field(default=None)
screen: Optional[str] = Field(default=None)
"""Наименование текущего экрана."""


Expand All @@ -32,7 +32,7 @@ class CustomCurrentApp(CurrentApp):
# Текущий current_app в запросе.
"""

state: CustomState | None = Field(default=None)
state: Optional[CustomState] = Field(default=None)
"""Описание стейта."""


Expand All @@ -41,7 +41,7 @@ class CustomMeta(AssistantMeta):
# Модель meta в запросе.
"""

current_app: CustomCurrentApp | None = Field(default=None)
current_app: Optional[CustomCurrentApp] = Field(default=None)
"""Текущий current_app."""


Expand Down
32 changes: 16 additions & 16 deletions nlpf_statemachine/models/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def context_model(self) -> None:
```
"""

from typing import Optional, Union, List
from pydantic import BaseModel, Field

from .debug_info import CallHistoryItem
Expand All @@ -54,40 +54,40 @@ def context_model(self) -> None:
class LocalContext(BaseModel):
"""Описание локального контекста (в рамках одной транзакции)."""

init_event: str | None = Field(default=None)
init_event: Optional[str] = Field(default=None)
"""Событие, с которого произошёл запуск ContextManager (может быть None, если был голосовой запуск)."""
base_event: str | None = Field(default=None)
base_event: Optional[str] = Field(default=None)
"""Базовое событие, с которого началась транзакция (событие, по которому был запущен первый экшен в транзакции)."""
base_message: BaseMessage | None = Field(default=None)
base_message: Optional[BaseMessage] = Field(default=None)
"""Сообщение, с которого началась транзакция."""
last_transaction_step_timestamp: float | None = Field(default=None)
last_transaction_step_timestamp: Optional[float] = Field(default=None)
"""Timestamp последнего запроса в транзакции."""
call_history: list[CallHistoryItem | None] = Field(default_factory=list)
call_history: Optional[List[Optional[CallHistoryItem]]] = Field(default_factory=list)
"""Список вызовов (полезное поле для отладки транзакции)."""
character_id: str | None = Field(default=None)
character_id: Optional[str] = Field(default=None)
"""Текущий выбранный ассистент."""
run_isolated_scenario: bool | None = Field(default=False)
run_isolated_scenario: Optional[bool] = Field(default=False)
"""Флаг на запущенный изолированный сценарий."""
isolated_scenario_id: str | None = Field(default=None)
isolated_scenario_id: Optional[str] = Field(default=None)
"""Идентификатор запущенного изолированного сценария (если запущен)."""


class Context(BaseModel):
"""Описание контекста."""

id: str | None = Field(default=None)
id: Optional[str] = Field(default=None)
"""Идентификатор текущего стейта."""
local: LocalContext = Field(default_factory=LocalContext)
"""Контекст, живущий в рамках одной транзакции (`LocalContext`)."""
screen: str | None = Field(default=None)
screen: Optional[str] = Field(default=None)
"""Страница, на которой находится пользователь в рамках текущего запроса (если определена)."""
event: str | None = Field(default=None)
event: Optional[str] = Field(default=None)
"""Событие, на которое реагируем в текущем запросе."""
last_screen: str | None = Field(default=None)
last_screen: Optional[str] = Field(default=None)
"""Страница, которая была при предыдущем запросе (обновляется в конце транзакции)."""
last_event: str | None = Field(default=None)
last_event: Optional[str] = Field(default=None)
"""Предыдущее событие."""
last_response_message_name: str | None = Field(default=None)
last_response_message_name: Optional[str] = Field(default=None)
"""Наименования предыдущего ответа."""
last_intent: str | None = Field(default=None)
last_intent: Optional[str] = Field(default=None)
"""Последний пришедший интент от платформы."""
10 changes: 5 additions & 5 deletions nlpf_statemachine/models/debug_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
Данный объект можно использовать при написании тестов для проверки цепочки вызовов. Он возвращается в поле
`nlpf_statemachine.models.response.Response.debug_info`.
"""

from typing import List, Optional
from pydantic import BaseModel, Field


class CallHistoryItem(BaseModel):
"""Элемент истории вызовов экшенов."""

event: str | None = Field(default=None)
event: Optional[str] = Field(default=None)
"""Событие, которое отработало."""
action: str
"""Экшен, который был вызван."""
Expand All @@ -22,11 +22,11 @@ class CallHistoryItem(BaseModel):
class DebugInfo(BaseModel):
"""Коллекция отладочной информации по работе ContextManager в транзакции в конкретном сценарии."""

base_event: str | None = Field(default=None)
base_event: Optional[str] = Field(default=None)
"""Базовое событие текущей транзакции."""
call_history: list[CallHistoryItem | None] = Field(default_factory=list)
call_history: Optional[List[Optional[CallHistoryItem]]] = Field(default_factory=list)
"""Список вызовов."""
transaction_finished: bool = Field(default=True)
"""Флаг на окончание транзакции."""
static_code: str | None = Field(default=None)
static_code: Optional[str] = Field(default=None)
"""Код ответа из статики."""
12 changes: 7 additions & 5 deletions nlpf_statemachine/models/message/integration_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# Базовые модели для интеграций.
"""

from typing import Optional, Dict

from pydantic import BaseModel, Field

from nlpf_statemachine.models.enums import Event
Expand All @@ -13,15 +15,15 @@ class IntegrationPayload(BaseModel):
# Описание модели IntegrationPayload.
"""

status: str | None = Field(default=None)
status: Optional[str] = Field(default=None)
"""Статус интеграции."""
errorTitle: str | None = Field(default=None)
errorTitle: Optional[str] = Field(default=None)
"""Заголовок ошибки (если есть)."""
errorMessage: str | None = Field(default=None)
errorMessage: Optional[str] = Field(default=None)
"""Сообщение об ошибке (если есть)."""
error: str | None = Field(default=None)
error: Optional[str] = Field(default=None)
"""Информация об ошибке (если есть)."""
data: dict | None = Field(default=None)
data: Optional[Dict] = Field(default=None)
"""Данные, полученные в ответ от интеграции."""


Expand Down
22 changes: 12 additions & 10 deletions nlpf_statemachine/models/message/protocol/app_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
Информация о смартапе.
"""

from typing import Optional, Dict

from pydantic import BaseModel, Field


Expand All @@ -10,23 +12,23 @@ class AppInfo(BaseModel):
# Описание модели AppInfo.
"""

projectId: str | None = Field(default=None)
projectId: Optional[str] = Field(default=None)
"""Идентификатор проекта в SmartMarket Studio."""
frontendType: str | None = Field(default=None)
frontendType: Optional[str] = Field(default=None)
"""Тип смартапа."""
applicationId: str | None = Field(default=None)
applicationId: Optional[str] = Field(default=None)
"""Идентификатор смартапа."""
appversionId: str | None = Field(default=None)
appversionId: Optional[str] = Field(default=None)
"""Идентификатор опубликованной версии смартапа."""
frontendEndpoint: str | None = Field(default=None)
frontendEndpoint: Optional[str] = Field(default=None)
"""Ссылка на веб-приложение. Поле актуально для Canvas Apps."""
systemName: str | None = Field(default=None)
systemName: Optional[str] = Field(default=None)
"""Более читаемый аналог поля projectId.Не актуален для внешних приложений."""
frontendStateId: str | None = Field(default=None)
frontendStateId: Optional[str] = Field(default=None)
"""Объединённое значение полей projectId, applicationId и appversionId."""
apkInfo: dict | None = Field(default=None)
apkInfo: Optional[Dict] = Field(default=None)
"""Информация о приложении"""
ageLimit: int | None = Field(default=None)
ageLimit: Optional[int] = Field(default=None)
"""Информация о возрастном ограничении"""
affiliationType: str | None = Field(default=None)
affiliationType: Optional[str] = Field(default=None)
"""Тип перехода"""
10 changes: 6 additions & 4 deletions nlpf_statemachine/models/message/protocol/base_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# Базовая модель любого запроса в сервис.
"""

from typing import Optional, Dict

from pydantic import BaseModel, Field

from .uuid import UUID
Expand All @@ -14,17 +16,17 @@ class BaseMessage(BaseModel):

messageName: str
"""Тип сообщения. Определяет логику обработки события."""
messageId: int | None = Field(default=None)
messageId: Optional[int] = Field(default=None)
"""
Идентификатор запроса, который отправил ассистент.
Ответ на запрос должен содержать такой же идентификатор в поле messageId.
"""
sessionId: str | None = Field(default=None)
sessionId: Optional[str] = Field(default=None)
"""
Идентификатор соединения платформы (не диалоговой сессии).
128 bit hex GUID converted to string.
"""
uuid: UUID | None = Field(default=None)
uuid: Optional[UUID] = Field(default=None)
"Составной идентификатор пользователя."
payload: dict | None = Field(default={})
payload: Optional[Dict] = Field(default={})
"""Коллекция, в которой в зависимости от потребителя и messageName передается дополнительная информация."""
10 changes: 6 additions & 4 deletions nlpf_statemachine/models/message/protocol/character.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# Описание модели ассистента.
"""

from typing import Optional

from pydantic import BaseModel, Field

from nlpf_statemachine.models.enums import AssistantAppeal, AssistantGender, AssistantId, AssistantName
Expand All @@ -12,7 +14,7 @@ class Character(BaseModel):
# Модель ассистента.
"""

id: AssistantId | None = Field(default=None)
name: AssistantName | None = Field(default=None)
gender: AssistantGender | None = Field(default=None)
appeal: AssistantAppeal | None = Field(default=None)
id: Optional[AssistantId] = Field(default=None)
name: Optional[AssistantName] = Field(default=None)
gender: Optional[AssistantGender] = Field(default=None)
appeal: Optional[AssistantAppeal] = Field(default=None)
8 changes: 4 additions & 4 deletions nlpf_statemachine/models/message/protocol/current_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ class AssistantState(BaseModel):
*Данный класс необходимо переопределять в конкретных приложениях.*
"""

screen: str | None = Field(default=None)
item_selector: ItemSelector | None = Field(default=None)
screen: Optional[str] = Field(default=None)
item_selector: Optional[ItemSelector] = Field(default=None)


class CurrentApp(BaseModel):
"""
# Описание модели CurrentApp.
"""

app_info: AppInfo | None = Field(default=None)
state: AssistantState | None = Field(default=None)
app_info: Optional[AppInfo] = Field(default=None)
state: Optional[AssistantState] = Field(default=None)
22 changes: 11 additions & 11 deletions nlpf_statemachine/models/message/protocol/device.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""
# Описание модели Device.
"""
from typing import Any
from typing import Any, Optional

from pydantic import BaseModel, Field

Expand All @@ -14,7 +14,7 @@ class Device(BaseModel):
# Описание модели Device.
"""

platformType: str | None = Field(default=None)
platformType: Optional[str] = Field(default=None)
"""
Операционная система устройства.
Expand All @@ -23,9 +23,9 @@ class Device(BaseModel):
* ANDROID;
* IOS.
"""
platformVersion: str | None = Field(default=None)
platformVersion: Optional[str] = Field(default=None)
"""Версия операционной системы."""
surface: str | None = Field(default=None)
surface: Optional[str] = Field(default=None)
"""
Устройство или мобильное приложение, от которого приходит вызов ассистента.
Expand All @@ -35,17 +35,17 @@ class Device(BaseModel):
* COMPANION — запрос от приложения Салют;
* STARGATE — запрос от устройства SberPortal.
"""
surfaceVersion: str | None = Field(default=None)
surfaceVersion: Optional[str] = Field(default=None)
"""Версия поверхности."""
deviceId: str | None = Field(default=None)
deviceId: Optional[str] = Field(default=None)
"""Идентификатор устройства."""
features: DeviceFeatures | None = Field(default=None)
features: Optional[DeviceFeatures] = Field(default=None)
"""Описание функциональности устройства."""
capabilities: DeviceCapabilities | None = Field(default=None)
capabilities: Optional[DeviceCapabilities] = Field(default=None)
"""Описание возможностей устройства пользователя."""
additionalInfo: Any | None = Field(default=None)
additionalInfo: Optional[Any] = Field(default=None)
"""Дополнительная информация об объекте или устройстве. В настоящий момент не используется."""
deviceManufacturer: str | None = Field(default=None)
deviceManufacturer: Optional[str] = Field(default=None)
"""Производитель устройства"""
deviceModel: str | None = Field(default=None)
deviceModel: Optional[str] = Field(default=None)
"""Модель устройства"""
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
# Описание возможностей устройства пользователя.
"""
from typing import Optional

from pydantic import BaseModel, Field

Expand All @@ -10,7 +11,7 @@ class DeviceCapability(BaseModel):
# Описание модели DeviceCapability.
"""

available: bool | None = Field(default=None)
available: Optional[bool] = Field(default=None)
"""Флаг наличия возможностию"""


Expand All @@ -19,9 +20,9 @@ class DeviceCapabilities(BaseModel):
# Описание модели DeviceCapabilities.
"""

screen: DeviceCapability | None = Field(default=None)
screen: Optional[DeviceCapability] = Field(default=None)
"""Описание экрана устройства."""
mic: DeviceCapability | None = Field(default=None)
mic: Optional[DeviceCapability] = Field(default=None)
"""Описание микрофона устройства."""
speak: DeviceCapability | None = Field(default=None)
speak: Optional[DeviceCapability] = Field(default=None)
"""Описание динамиков устройства."""
6 changes: 3 additions & 3 deletions nlpf_statemachine/models/message/protocol/device_features.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""
Описание функциональности устройства.
"""

from typing import Optional, List, Union, Dict
from pydantic import BaseModel, Field

from nlpf_statemachine.models.enums import DeviceFeaturesAppTypes
Expand All @@ -12,7 +12,7 @@ class DeviceFeatures(BaseModel):
# Описание модели DeviceFeatures.
"""

appTypes: list[DeviceFeaturesAppTypes | str] | None = Field(default=None)
appTypes: Optional[List[Union[DeviceFeaturesAppTypes, str]]] = Field(default=None)
"""
Типы смартапов, которые поддерживает устройство.
Expand All @@ -25,5 +25,5 @@ class DeviceFeatures(BaseModel):
* EMBEDDED_APP
* ...
"""
clientFlags: dict | None = Field(default={})
clientFlags: Optional[Dict] = Field(default={})
"""Описание клиентских флагов"""
Loading

0 comments on commit 920ffb5

Please sign in to comment.