python-trueconf-bot 1.2.2__py3-none-any.whl → 1.2.3.dev1__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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.2.2
3
+ Version: 1.2.3.dev1
4
4
  Summary: Lightweight and powerful framework for the TrueConf Server Chatbot API
5
5
  Author-email: TrueConf LLC <info@trueconf.com>, Anton Baadzhi <baadzhianton@gmail.com>
6
6
  License-Expression: BSD-3-Clause-Clear
@@ -1,6 +1,6 @@
1
- python_trueconf_bot-1.2.2.dist-info/licenses/LICENSE,sha256=ftDuEzhr-yY_dsfpEQ2SKAP_dEAO-iPt96MBZq_K48o,1684
1
+ python_trueconf_bot-1.2.3.dev1.dist-info/licenses/LICENSE,sha256=ftDuEzhr-yY_dsfpEQ2SKAP_dEAO-iPt96MBZq_K48o,1684
2
2
  trueconf/__init__.py,sha256=JRFC0ca_JhwlDuzcnZ1r9bflnAmQyMYhJr_hBRYcdpw,394
3
- trueconf/_version.py,sha256=ZLdO3c0Krm1iUa-6rVXQl9mdRqQ1AlwRpz3571_cYvM,520
3
+ trueconf/_version.py,sha256=GU697UbDRMobw369MOjK5OiWpHCOfOcCJPfxrNBaeMw,533
4
4
  trueconf/exceptions.py,sha256=oBDcWPd1O7059fKrPbdP29VdsWcom6GTfVUeM93OvUE,4436
5
5
  trueconf/loggers.py,sha256=4dnq14qFo6fJ8SKZJCRZd0iJDYRqmcuX-ccv5FezxlQ,594
6
6
  trueconf/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -31,7 +31,7 @@ trueconf/filters/method.py,sha256=v2cB3N8fzKWqz1AGJaUjsswen8d58pafOt4eB0qJtgM,36
31
31
  trueconf/methods/__init__.py,sha256=fapNvuoZ16q6YUaJJjRWljoSXAOmyqq3PyUK8yyCh9Q,1911
32
32
  trueconf/methods/add_participant_to_chat.py,sha256=uT-NBkHXFDfmHbi3f_hc3HJtS_jRS69yBuIQ87HczVQ,677
33
33
  trueconf/methods/auth.py,sha256=ZEYoJpEKqUybDyqW8YJMPxA8QK2cAYXhipYr8V3nbj0,783
34
- trueconf/methods/base.py,sha256=lR-InH7rLPVNLvYZGKXRvNhhd4dBolQanO1eFdKZZqs,2707
34
+ trueconf/methods/base.py,sha256=CXGbKOxEk-RmSjQ05GXV6cJ5MXedSn3bMwHObb2nE8A,2925
35
35
  trueconf/methods/change_participant_role.py,sha256=7uH1Huvy0tpDmPv-TdceGp7tfX2UoEUfuPMsJeUOTtM,663
36
36
  trueconf/methods/clear_chat_history.py,sha256=6HM52Bza05QBNM1MlFX-uPIqqPWqrSoXBGd-jG1WH_w,584
37
37
  trueconf/methods/create_channel.py,sha256=Lov3Dctpx4qWjpQuv_pMeyL8AEu2MDImTEYRlHiQKoQ,510
@@ -76,7 +76,7 @@ trueconf/types/content/base.py,sha256=xEOPSI90Ocz2C2_jBCYBquC3TpxmXe_EpEkoHXQaPs
76
76
  trueconf/types/content/chat_created.py,sha256=p2VOmhoq4b5OlAmcqpM0wlYAk_QR4eTTVn1xGFlrNsI,277
77
77
  trueconf/types/content/document.py,sha256=tM_a1JlWnoYbhq_quZN7KycBM-UqwVmdaSHLYDh2bXs,2217
78
78
  trueconf/types/content/edit_chat_title.py,sha256=BGLwpA3B431VlGvYjFaOF49oB5Blp1Duhf-X3K-Ce00,214
79
- trueconf/types/content/forward_message.py,sha256=O-pYJjV8WdsAs1CjxMvHY9YzDXpebIb0vUTcHPZMKHU,876
79
+ trueconf/types/content/forward_message.py,sha256=fNika_n21twiaAaT6TPVRhv-dIC6agug_O34WjfU3z8,906
80
80
  trueconf/types/content/location.py,sha256=0Lsm4il90tw8WxO1qjD3eRCE4aRrKgtrKDccwjUL0ps,250
81
81
  trueconf/types/content/photo.py,sha256=owWidCpcbImJPpU90iCsTxM1nX9Hhy3a3_W_lthYVko,2239
82
82
  trueconf/types/content/remove_participant.py,sha256=_luIKTOewolqAQZOWPDJWFQUxZFtgWLMXUlR7KB0JwU,259
@@ -115,13 +115,13 @@ trueconf/types/responses/edit_chat_title_response.py,sha256=aVSpCR6d-fCifDq8zype
115
115
  trueconf/types/responses/edit_message_response.py,sha256=r6XNFfyRwEwdLgr92VJtS0bURoYNwnT0hXcFDLI7N-U,256
116
116
  trueconf/types/responses/edit_survey_response.py,sha256=ywKuklhxqfznu112t4HQinX74uqci1Oi-dWTiRjD2co,256
117
117
  trueconf/types/responses/forward_message_response.py,sha256=7-zjnTVmGG8Mq4fQzD855J4LmbpEA8WS89LsFaF3BLw,315
118
- trueconf/types/responses/get_chat_by_id_response.py,sha256=O-Oen4jBRWsZahB2Kyay_ebyZAvvGIzYtg8fJ-_-TP0,591
118
+ trueconf/types/responses/get_chat_by_id_response.py,sha256=UeNPphQn6Wyp7xtGaul69TTu0Xz5BA3D7PYpUUSnQTM,605
119
119
  trueconf/types/responses/get_chat_history_response.py,sha256=xbLRwvu1chn6VbCVD22AxgDZ0CY4aB2Fs2FXEfONMzA,423
120
120
  trueconf/types/responses/get_chat_participant_response.py,sha256=UFyYOekdyUfaddONzylwIeBT_eX3Dza_q1I6TCdaJUc,434
121
121
  trueconf/types/responses/get_chat_participants_response.py,sha256=xIiB40zMA-gccqY4zQa_g9N6NlryoAktaICZP8XtraY,392
122
122
  trueconf/types/responses/get_chats_response.py,sha256=MVQK4GfajUH9VcJsoowmLJ9jiDA5zPBH0AxEfDL9I9g,392
123
- trueconf/types/responses/get_file_info_response.py,sha256=ONG6ovIYxa1uHEA9839C8G-7188zq8ESOQh-d5kXjas,1024
124
- trueconf/types/responses/get_file_upload_limits_response.py,sha256=C_Hw6J_Pla8L4xoEesqqv6XJgjRmux2IL6M1hs06tW8,391
123
+ trueconf/types/responses/get_file_info_response.py,sha256=PwwQFaZP_TKI4B6GfKZBYrOMEHv-S-Kr4_xwD9P8_Es,1060
124
+ trueconf/types/responses/get_file_upload_limits_response.py,sha256=MgQOqGewF0hwgmtV-29HQgNFrGaxrz1XyzrU4kNIrVI,405
125
125
  trueconf/types/responses/get_message_by_id_response.py,sha256=bckZ7bwhPZZ05aJc3DtvkbLs541mQtVC7gR3-zePDBA,1209
126
126
  trueconf/types/responses/get_user_display_name_response.py,sha256=ffyCWtpDWTOVCLFwdDw2aOcjKtUuYgvs8Pnawhn1LF0,249
127
127
  trueconf/types/responses/has_chat_participant_response.py,sha256=gguDNCrxsiMB0xIJEaZpvcjKKIZ83XVniz4yHjHKB48,194
@@ -137,9 +137,9 @@ trueconf/types/responses/upload_file_response.py,sha256=CmhLmby4MVny8KmfQ1aHW6UD
137
137
  trueconf/utils/__init__.py,sha256=O1ZS6uwnlZpSH19FEodZQ2fOLyua0SJYsIgEO70UIRg,39
138
138
  trueconf/utils/_generate_secret_for_survey.py,sha256=QclUSR_T2PU2mkUSCI3LG72HMTBTHAHaYFCm8gkevwI,242
139
139
  trueconf/utils/_token.py,sha256=quI_OgdnLcfapBYZc3ejAX8AozlpQ9gGAZ5SdNtELDw,2307
140
- trueconf/utils/_version_checker.py,sha256=U1AB0KgASTCuI68r7SiLGnWeeSy3T1yFqLNg8h3fjM0,2029
140
+ trueconf/utils/_version_checker.py,sha256=WmVnPLoxfAqRyemNuaE-wQE6sQMcXxgyvTQ2F6kdSgQ,1709
141
141
  trueconf/utils/split_text.py,sha256=0HTVv63kLo2gx1r-ImM47ejTR4X_uDkNr5QMxvWdTBo,18807
142
- python_trueconf_bot-1.2.2.dist-info/METADATA,sha256=UEqsb6MfeX7szaA4mWFFGE_dKPK1tc8u9wfRlX-I5Yg,5674
143
- python_trueconf_bot-1.2.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
144
- python_trueconf_bot-1.2.2.dist-info/top_level.txt,sha256=GjgYdn_osTUuU-H8f59VhIS7MY44xLV7-D7veywJaeY,9
145
- python_trueconf_bot-1.2.2.dist-info/RECORD,,
142
+ python_trueconf_bot-1.2.3.dev1.dist-info/METADATA,sha256=Em79RYDbhZrYf_VPdwFmXk9Lrtu07xGGBSRXA-9YrgM,5679
143
+ python_trueconf_bot-1.2.3.dev1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
144
+ python_trueconf_bot-1.2.3.dev1.dist-info/top_level.txt,sha256=GjgYdn_osTUuU-H8f59VhIS7MY44xLV7-D7veywJaeY,9
145
+ python_trueconf_bot-1.2.3.dev1.dist-info/RECORD,,
trueconf/_version.py CHANGED
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.2'
22
- __version_tuple__ = version_tuple = (1, 2, 2)
21
+ __version__ = version = '1.2.3.dev1'
22
+ __version_tuple__ = version_tuple = (1, 2, 3, 'dev1')
23
23
 
24
24
  __commit_id__ = commit_id = None
trueconf/methods/base.py CHANGED
@@ -4,6 +4,7 @@ from asyncio import get_running_loop
4
4
  from abc import ABC, abstractmethod
5
5
  from typing import TypeVar, Generic, TYPE_CHECKING, ClassVar, Protocol, runtime_checkable
6
6
  from trueconf.types.responses.api_error import ApiError
7
+ import asyncio
7
8
 
8
9
  logger = logging.getLogger("chat_bot")
9
10
 
@@ -69,7 +70,7 @@ class TrueConfMethod(ABC, Generic[T]):
69
70
 
70
71
  return ret(**payload) # type: ignore[misc]
71
72
 
72
- async def __call__(self, bot: "ChatBot") -> T:
73
+ async def __call__(self, bot: "Bot", timeout: float = 10.0) -> T:
73
74
  loop = get_running_loop()
74
75
  future = loop.create_future()
75
76
  bot._register_future(self.id, future)
@@ -91,7 +92,10 @@ class TrueConfMethod(ABC, Generic[T]):
91
92
 
92
93
  await bot._send_ws_payload(message)
93
94
 
94
- data = await future
95
+ try:
96
+ data = await asyncio.wait_for(future, timeout=timeout)
97
+ except asyncio.TimeoutError:
98
+ raise TimeoutError(f"Request to {self.__api_method__} timed out after {timeout}s")
95
99
  logger.debug(f"✅ Received response for {self.__api_method__}: {data}")
96
100
 
97
101
  return self._parse_return(data)
@@ -17,5 +17,5 @@ class ForwardMessage(AbstractEnvelopeContent):
17
17
  content: Union[TextContent, AttachmentContent, SurveyContent]
18
18
  message_id: str = field(metadata={"alias": "messageId"})
19
19
  chat_id: str = field(metadata={"alias": "chatId"})
20
- is_edited: Optional[bool] = field(metadata={"alias": "isEdited"})
21
- box: Optional[EnvelopeBox]
20
+ is_edited: bool | None = field(default=None, metadata={"alias": "isEdited"})
21
+ box: EnvelopeBox | None = field(default=None)
@@ -6,9 +6,9 @@ from trueconf.types.last_message import LastMessage
6
6
 
7
7
  @dataclass
8
8
  class GetChatByIdResponse(DataClassDictMixin):
9
- chat_id: str = field(metadata={"alias": "chatId"})
10
9
  title: str
10
+ chat_id: str = field(metadata={"alias": "chatId"})
11
11
  chat_type: int = field(metadata={"alias": "chatType"})
12
- avatar_url: str | None = field(metadata={"alias": "avatarUrl"})
13
12
  unread_messages: int = field(metadata={"alias": "unreadMessages"})
13
+ avatar_url: str | None = field(default=None, metadata={"alias": "avatarUrl"})
14
14
  last_message: LastMessage | None = field(default=None, metadata={"alias": "lastMessage"})
@@ -17,11 +17,11 @@ class Previews(DataClassDictMixin):
17
17
  class GetFileInfoResponse(DataClassDictMixin):
18
18
  name: str
19
19
  size: int
20
- previews: Optional[List[Previews]]
21
20
  mimetype: str = field(metadata={"alias": "mimeType"})
22
- download_url: Optional[str] = field(metadata={"alias": "downloadUrl"})
23
21
  ready_state: FileReadyState = field(metadata={"alias": "readyState"})
24
22
  file_id: str = field(metadata={"alias": "fileId"})
23
+ previews: Optional[List[Previews]] = field(default=None)
24
+ download_url: Optional[str] = field(default=None, metadata={"alias": "downloadUrl"})
25
25
 
26
26
  @classmethod
27
27
  def __pre_deserialize__(cls, d: dict[Any, Any]) -> dict[Any, Any]:
@@ -12,5 +12,5 @@ class Extensions(DataClassDictMixin):
12
12
 
13
13
  @dataclass
14
14
  class GetFileUploadLimitsResponse(DataClassDictMixin):
15
- max_size: int | None = field(metadata={"alias": "maxSize"})
16
- extensions: Extensions | None
15
+ extensions: Extensions | None
16
+ max_size: int | None = field(default=None, metadata={"alias": "maxSize"})
@@ -21,12 +21,6 @@ class _VersionChecker:
21
21
  library_spec=None,
22
22
  message="Chatbots are not supported (server version 5.5.0+ required).",
23
23
  ),
24
- CompatibilityRule(
25
- server_spec=SpecifierSet(">=5.5.0,<=5.5.2"),
26
- library_spec=SpecifierSet(">=1.1.0,<1.2.0"),
27
- message="Server version 5.5.0–5.5.2 requires python-trueconf-bot v1.1.x.",
28
- install_hint='uv pip install "python-trueconf-bot>=1.1.0,<1.2.0"',
29
- ),
30
24
  )
31
25
 
32
26
  @classmethod