agi-med-common 5.1.3__py3-none-any.whl → 5.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- __version__ = "5.1.3"
1
+ __version__ = "5.1.5"
2
2
 
3
3
  from .models import (
4
4
  MTRSLabelEnum,
@@ -12,6 +12,7 @@ from .models import (
12
12
  AIMessage,
13
13
  HumanMessage,
14
14
  MiscMessage,
15
+ Base,
15
16
  )
16
17
  from .models.widget import Widget
17
18
  from .file_storage import FileStorage, ResourceId
@@ -1,4 +1,4 @@
1
- from ._base import _Base
1
+ from .base import Base
2
2
 
3
3
  from .enums import MTRSLabelEnum, DiagnosticsXMLTagEnum, MTRSXMLTagEnum, DoctorChoiceXMLTagEnum
4
4
  from .chat_item import ChatItem, OuterContextItem, InnerContextItem, ReplicaItem
@@ -0,0 +1,15 @@
1
+ import json
2
+ from typing import Any
3
+
4
+ from pydantic import ConfigDict, BaseModel, model_validator
5
+
6
+
7
+ class Base(BaseModel):
8
+ model_config = ConfigDict(populate_by_name=True, str_strip_whitespace=True)
9
+
10
+ @model_validator(mode="before")
11
+ @classmethod
12
+ def validate_to_json(cls, value: str | Any) -> Any:
13
+ if isinstance(value, str):
14
+ return cls(**json.loads(value))
15
+ return value
@@ -9,7 +9,7 @@ from agi_med_common.type_union import TypeUnion
9
9
  from agi_med_common.utils import first_nonnull
10
10
  from pydantic import Field, ValidationError
11
11
 
12
- from ._base import _Base
12
+ from .base import Base
13
13
 
14
14
 
15
15
  _DT_FORMAT: str = "%Y-%m-%d-%H-%M-%S"
@@ -24,7 +24,7 @@ def now_pretty() -> str:
24
24
  return datetime.now().strftime(_DT_FORMAT)
25
25
 
26
26
 
27
- class Context(_Base):
27
+ class Context(Base):
28
28
  client_id: str = Field("", examples=["543216789"])
29
29
  user_id: str = Field("", examples=["123456789"])
30
30
  session_id: str = Field("", examples=["987654321"])
@@ -115,7 +115,7 @@ def _get_widget(obj: Content) -> Widget | None:
115
115
  # todo fix: generalize functions _get_field
116
116
 
117
117
 
118
- class BaseMessage(_Base):
118
+ class BaseMessage(Base):
119
119
  type: str
120
120
  content: Content = Field("", examples=["Привет"])
121
121
  date_time: str = Field(default_factory=now_pretty, examples=[_EXAMPLE_DT])
@@ -182,7 +182,7 @@ class MiscMessage(BaseMessage):
182
182
  ChatMessage = TypeUnion[HumanMessage, AIMessage, MiscMessage]
183
183
 
184
184
 
185
- class Chat(_Base):
185
+ class Chat(Base):
186
186
  context: Context
187
187
  messages: List[ChatMessage] = Field(default_factory=list)
188
188
 
@@ -4,7 +4,7 @@ from typing import Annotated, Any, List, Callable
4
4
  from agi_med_common.models.widget import Widget
5
5
  from pydantic import Field, ConfigDict, BeforeValidator, AfterValidator
6
6
 
7
- from ._base import _Base
7
+ from .base import Base
8
8
 
9
9
 
10
10
  _DT_FORMAT: str = "%Y-%m-%d-%H-%M-%S"
@@ -16,7 +16,7 @@ def now_pretty() -> str:
16
16
  return datetime.now().strftime(ReplicaItem.DATETIME_FORMAT())
17
17
 
18
18
 
19
- class OuterContextItem(_Base):
19
+ class OuterContextItem(Base):
20
20
  # remove annoying warning for protected `model_` namespace
21
21
  model_config = ConfigDict(protected_namespaces=())
22
22
 
@@ -63,7 +63,7 @@ def nullify_empty(text: str) -> str | None:
63
63
  return text or None
64
64
 
65
65
 
66
- class ReplicaItem(_Base):
66
+ class ReplicaItem(Base):
67
67
  body: str = Field("", alias="Body", examples=["Привет"])
68
68
  resource_id: Annotated[str | None, AfterValidator(nullify_empty)] = Field(
69
69
  None, alias="ResourceId", examples=["<link-id>"]
@@ -105,7 +105,7 @@ class ReplicaItem(_Base):
105
105
  return self.model_copy(update=dict(body=body_upd))
106
106
 
107
107
 
108
- class InnerContextItem(_Base):
108
+ class InnerContextItem(Base):
109
109
  replicas: list[ReplicaItem] = Field(alias="Replicas")
110
110
  attrs: dict[str, str | int] | None = Field(default={}, alias="Attrs")
111
111
 
@@ -113,7 +113,7 @@ class InnerContextItem(_Base):
113
113
  return self.model_dump(by_alias=True)
114
114
 
115
115
 
116
- class ChatItem(_Base):
116
+ class ChatItem(Base):
117
117
  outer_context: OuterContextItem = Field(alias="OuterContext")
118
118
  inner_context: InnerContextItem = Field(alias="InnerContext")
119
119
 
@@ -1,14 +1,14 @@
1
1
  from pydantic import Field
2
2
 
3
- from ._base import _Base
3
+ from .base import Base
4
4
 
5
5
 
6
- class TrackInfo(_Base):
6
+ class TrackInfo(Base):
7
7
  track_id: str = Field(alias="TrackId")
8
8
  name: str = Field(alias="Name")
9
9
  domain_id: str = Field(alias="DomainId")
10
10
 
11
11
 
12
- class DomainInfo(_Base):
12
+ class DomainInfo(Base):
13
13
  domain_id: str = Field(alias="DomainId")
14
14
  name: str = Field(alias="Name")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agi_med_common
3
- Version: 5.1.3
3
+ Version: 5.1.5
4
4
  Summary: Сommon for agi-med team
5
5
  Author: AGI-MED-TEAM
6
6
  Requires-Python: >=3.11
@@ -1,4 +1,4 @@
1
- agi_med_common/__init__.py,sha256=E6mljKp3mSDWOYfFE1tPlPL-DrkuGH5TcEHIavj-N60,739
1
+ agi_med_common/__init__.py,sha256=widUkjiAlBOsHUoB7rPNe0oSkEuaSHmY02ZV8rwiDY0,749
2
2
  agi_med_common/api.py,sha256=gj6BPEAOvpT6GHWeE7bzmKIR-pvq0yORZ3L0ADvI8ps,1828
3
3
  agi_med_common/file_storage.py,sha256=T0Hbs4W-pWO6HdWcmlVqABrQHYdq7lLZH4_Vu-YNVbw,1802
4
4
  agi_med_common/parallel_map.py,sha256=Qx6xe7DqlEUDpSucp5Hm8r9y9Iquwh9JvX7lOqHhnOw,921
@@ -6,16 +6,16 @@ agi_med_common/type_union.py,sha256=diwmzcnbqkpGFckPHNw9o8zyQ955mOGNvhTlcBJ0RMI,
6
6
  agi_med_common/utils.py,sha256=EeeXRv5BjrB-_GtHzI3V5swyVO0KPR-SMpjHRx2r2aM,1560
7
7
  agi_med_common/validators.py,sha256=vMoPN42XzC8re-zdjekk5_lNQYHuTiAWD56YLvj2Z2w,2824
8
8
  agi_med_common/xml_parser.py,sha256=VvLIX_XCZao9i0qqpTVx8nx0vbFXSe8pEbdJdXnj97g,568
9
- agi_med_common/models/__init__.py,sha256=dqr2kP-RuxFfAZhCr103PQzTVZFKIcdxyzTYiHhdTsE,375
10
- agi_med_common/models/_base.py,sha256=qNdH8x3x3mYbo5XgWtR9VpEarxsEvXvzynadUlDvHmU,149
11
- agi_med_common/models/chat.py,sha256=fYG79Niemwc9NF9tIl3P4agmZIT-apEG4dlZtd_FmGI,11536
12
- agi_med_common/models/chat_item.py,sha256=QlJ5Q40eX7lEeH9YBmdTH71ugrEtsU-4thkhD8cJhu0,5548
9
+ agi_med_common/models/__init__.py,sha256=-wM3sdET5WU2mf9rK-VUNtTTmEEK44F_xPL2EKBQo50,373
10
+ agi_med_common/models/base.py,sha256=mKtXV2x51XVj7W-et9tjGcPMDUUUMelW-BywMgFc2p0,411
11
+ agi_med_common/models/chat.py,sha256=hW8lZLEHGRMUP06jbbKE-QDZ_ZEO-ROGYS5HYuoM_7E,11531
12
+ agi_med_common/models/chat_item.py,sha256=HSgCVlQ0GqQL3rw1pbDM1b9D9gOosQa8kLeSdzge818,5542
13
13
  agi_med_common/models/enums.py,sha256=J-GNpql9MCnKnWiV9aJRQGI-pAybvV86923RZs99grA,1006
14
- agi_med_common/models/tracks.py,sha256=UP-jeWqDiCK6dyoMDfs7hemgl_xsJKee_DApjBf-XYc,311
14
+ agi_med_common/models/tracks.py,sha256=HKDp-BX1p7AlDfSEKfOKCu0TRSK9cD4Dmq1vJt8oRjw,307
15
15
  agi_med_common/models/widget.py,sha256=aJZ2vWx_PTFN02Wz16eokz9IIVrxqNuZYVDqLG36toE,710
16
16
  agi_med_common/models/base_config_models/__init__.py,sha256=KjS_bSCka8BOMsigwcIML-e6eNB2ouMU6gxlhRmzeuY,44
17
17
  agi_med_common/models/base_config_models/gigachat_config.py,sha256=WNSCTO8Fjpxc1v2LRUHfKqo9aeMDpXltTHYBFgTD2N0,422
18
- agi_med_common-5.1.3.dist-info/METADATA,sha256=XNJpGPJzRJQHdD-ZGvkB4FL19Zw-Q-KBk7b4TRNktQM,517
19
- agi_med_common-5.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
- agi_med_common-5.1.3.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
21
- agi_med_common-5.1.3.dist-info/RECORD,,
18
+ agi_med_common-5.1.5.dist-info/METADATA,sha256=TrHsozgGmMe1bzGs3UkrdGn_YLtc35xgyV4GGfdsXX4,517
19
+ agi_med_common-5.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
20
+ agi_med_common-5.1.5.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
21
+ agi_med_common-5.1.5.dist-info/RECORD,,
@@ -1,5 +0,0 @@
1
- from pydantic import ConfigDict, BaseModel
2
-
3
-
4
- class _Base(BaseModel):
5
- model_config = ConfigDict(populate_by_name=True, str_strip_whitespace=True)