Coverage for whole_app/models.py: 100%
26 statements
« prev ^ index » next coverage.py v7.10.4, created at 2025-08-21 23:45 +0000
« prev ^ index » next coverage.py v7.10.4, created at 2025-08-21 23:45 +0000
1# pylint: disable=no-member
2"""Models for input/output."""
4import typing
6import pydantic
8from .settings import SETTINGS, AvailableLanguages, AvailableLanguagesType
11class OneCorrection(pydantic.BaseModel):
12 first_position: int
13 last_position: int
14 word: str
15 suggestions: set[str]
18class SpellCheckRequest(pydantic.BaseModel):
19 text: str = pydantic.Field(..., examples=["Привед как дила"])
20 language: AvailableLanguagesType
21 user_name: str | None = pydantic.Field(
22 None,
23 examples=["username"],
24 pattern=SETTINGS.username_regex,
25 min_length=SETTINGS.username_min_length,
26 max_length=SETTINGS.username_max_length,
27 )
28 exclude_urls: bool = True
31class SpellCheckResponse(pydantic.BaseModel):
32 text: str
33 language: str
34 corrections: list[OneCorrection]
37class UserDictionaryRequest(pydantic.BaseModel):
38 user_name: str = pydantic.Field(
39 examples=["username"],
40 pattern=SETTINGS.username_regex,
41 min_length=SETTINGS.username_min_length,
42 max_length=SETTINGS.username_max_length,
43 )
46class UserDictionaryRequestWithWord(UserDictionaryRequest):
47 exception_word: str = pydantic.Field(..., examples=["привед"])
50class HealthCheckResponse(pydantic.BaseModel):
51 service_name: str = SETTINGS.service_name
52 supported_languages: tuple[str, ...] = AvailableLanguages
53 version: str = SETTINGS.current_version
54 status: typing.Literal["ok", "notok"] = "ok"