symphony_bdk_python 2.10.dev0__py3-none-any.whl → 2.11.0__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.
Files changed (435) hide show
  1. symphony/bdk/core/__init__.py +1 -0
  2. symphony/bdk/core/activity/__init__.py +1 -2
  3. symphony/bdk/core/activity/api.py +4 -4
  4. symphony/bdk/core/activity/command.py +17 -9
  5. symphony/bdk/core/activity/exception.py +2 -4
  6. symphony/bdk/core/activity/help_command.py +3 -2
  7. symphony/bdk/core/activity/parsing/arguments.py +1 -1
  8. symphony/bdk/core/activity/parsing/command_token.py +5 -4
  9. symphony/bdk/core/activity/parsing/input_tokenizer.py +13 -5
  10. symphony/bdk/core/activity/parsing/match_result.py +5 -3
  11. symphony/bdk/core/activity/parsing/message_entities.py +7 -6
  12. symphony/bdk/core/activity/parsing/slash_command_pattern.py +22 -7
  13. symphony/bdk/core/activity/registry.py +17 -7
  14. symphony/bdk/core/auth/__init__.py +1 -2
  15. symphony/bdk/core/auth/auth_session.py +33 -14
  16. symphony/bdk/core/auth/authenticator_factory.py +41 -21
  17. symphony/bdk/core/auth/bot_authenticator.py +33 -21
  18. symphony/bdk/core/auth/exception.py +3 -6
  19. symphony/bdk/core/auth/ext_app_authenticator.py +40 -30
  20. symphony/bdk/core/auth/jwt_helper.py +36 -15
  21. symphony/bdk/core/auth/obo_authenticator.py +27 -18
  22. symphony/bdk/core/auth/tokens_repository.py +5 -6
  23. symphony/bdk/core/client/__init__.py +2 -2
  24. symphony/bdk/core/client/api_client_factory.py +40 -22
  25. symphony/bdk/core/client/trace_id.py +3 -4
  26. symphony/bdk/core/config/__init__.py +1 -2
  27. symphony/bdk/core/config/exception.py +2 -4
  28. symphony/bdk/core/config/loader.py +2 -2
  29. symphony/bdk/core/config/model/bdk_app_config.py +5 -3
  30. symphony/bdk/core/config/model/bdk_authentication_config.py +13 -7
  31. symphony/bdk/core/config/model/bdk_bot_config.py +6 -3
  32. symphony/bdk/core/config/model/bdk_client_config.py +1 -1
  33. symphony/bdk/core/config/model/bdk_config.py +12 -7
  34. symphony/bdk/core/config/model/bdk_datafeed_config.py +7 -6
  35. symphony/bdk/core/config/model/bdk_datahose_config.py +1 -2
  36. symphony/bdk/core/config/model/bdk_retry_config.py +7 -3
  37. symphony/bdk/core/config/model/bdk_rsa_key_config.py +4 -5
  38. symphony/bdk/core/config/model/bdk_server_config.py +7 -2
  39. symphony/bdk/core/extension.py +15 -13
  40. symphony/bdk/core/retry/__init__.py +13 -9
  41. symphony/bdk/core/retry/_asyncio.py +10 -7
  42. symphony/bdk/core/retry/strategy.py +5 -2
  43. symphony/bdk/core/service/__init__.py +1 -2
  44. symphony/bdk/core/service/application/application_service.py +51 -41
  45. symphony/bdk/core/service/connection/connection_service.py +14 -23
  46. symphony/bdk/core/service/connection/model/connection_status.py +1 -0
  47. symphony/bdk/core/service/datafeed/abstract_ackId_event_loop.py +24 -14
  48. symphony/bdk/core/service/datafeed/abstract_datafeed_loop.py +16 -7
  49. symphony/bdk/core/service/datafeed/abstract_datahose_loop.py +2 -2
  50. symphony/bdk/core/service/datafeed/datafeed_loop_v1.py +18 -10
  51. symphony/bdk/core/service/datafeed/datafeed_loop_v2.py +31 -21
  52. symphony/bdk/core/service/datafeed/datahose_loop.py +22 -11
  53. symphony/bdk/core/service/datafeed/on_disk_datafeed_id_repository.py +10 -4
  54. symphony/bdk/core/service/datafeed/real_time_event_listener.py +32 -18
  55. symphony/bdk/core/service/exception.py +3 -6
  56. symphony/bdk/core/service/health/health_service.py +5 -4
  57. symphony/bdk/core/service/message/message_parser.py +10 -8
  58. symphony/bdk/core/service/message/message_service.py +196 -161
  59. symphony/bdk/core/service/message/messageml_util.py +6 -6
  60. symphony/bdk/core/service/message/model.py +15 -5
  61. symphony/bdk/core/service/message/multi_attachments_messages_api.py +134 -219
  62. symphony/bdk/core/service/obo_services.py +5 -4
  63. symphony/bdk/core/service/pagination.py +9 -6
  64. symphony/bdk/core/service/presence/presence_service.py +40 -28
  65. symphony/bdk/core/service/session/session_service.py +7 -13
  66. symphony/bdk/core/service/signal/signal_service.py +66 -33
  67. symphony/bdk/core/service/stream/stream_service.py +186 -69
  68. symphony/bdk/core/service/stream/stream_util.py +1 -0
  69. symphony/bdk/core/service/user/model/delegate_action_enum.py +1 -0
  70. symphony/bdk/core/service/user/model/role_id.py +1 -0
  71. symphony/bdk/core/service/user/user_service.py +225 -313
  72. symphony/bdk/core/service/user/user_util.py +4 -6
  73. symphony/bdk/core/service/version/__init__.py +0 -0
  74. symphony/bdk/core/service/version/agent_version_service.py +62 -0
  75. symphony/bdk/core/service_factory.py +50 -53
  76. symphony/bdk/core/symphony_bdk.py +34 -18
  77. symphony/bdk/ext/group.py +52 -37
  78. symphony/bdk/gen/agent_api/attachments_api.py +10 -18
  79. symphony/bdk/gen/agent_api/audit_trail_api.py +8 -12
  80. symphony/bdk/gen/agent_api/datafeed_api.py +34 -219
  81. symphony/bdk/gen/agent_api/datahose_api.py +184 -0
  82. symphony/bdk/gen/agent_api/dlp_policies_and_dictionary_management_api.py +130 -214
  83. symphony/bdk/gen/agent_api/messages_api.py +99 -119
  84. symphony/bdk/gen/agent_api/share_api.py +7 -11
  85. symphony/bdk/gen/agent_api/signals_api.py +1 -1
  86. symphony/bdk/gen/agent_api/system_api.py +1 -1
  87. symphony/bdk/gen/agent_api/util_api.py +13 -21
  88. symphony/bdk/gen/agent_api/violations_api.py +45 -73
  89. symphony/bdk/gen/agent_model/ack_id.py +1 -1
  90. symphony/bdk/gen/agent_model/agent_info.py +1 -1
  91. symphony/bdk/gen/agent_model/attachment_info.py +1 -1
  92. symphony/bdk/gen/agent_model/base_message.py +1 -1
  93. symphony/bdk/gen/agent_model/base_signal.py +1 -1
  94. symphony/bdk/gen/agent_model/channel_subscriber.py +1 -1
  95. symphony/bdk/gen/agent_model/channel_subscriber_response.py +1 -1
  96. symphony/bdk/gen/agent_model/channel_subscription_error.py +1 -1
  97. symphony/bdk/gen/agent_model/channel_subscription_response.py +1 -1
  98. symphony/bdk/gen/agent_model/connection_request_message.py +1 -1
  99. symphony/bdk/gen/agent_model/connection_request_message_all_of.py +1 -1
  100. symphony/bdk/gen/agent_model/datafeed.py +1 -1
  101. symphony/bdk/gen/agent_model/error.py +1 -1
  102. symphony/bdk/gen/agent_model/import_response.py +1 -1
  103. symphony/bdk/gen/agent_model/import_response_list.py +1 -1
  104. symphony/bdk/gen/agent_model/imported_message.py +1 -1
  105. symphony/bdk/gen/agent_model/ingestion_error.py +266 -0
  106. symphony/bdk/gen/agent_model/message.py +1 -1
  107. symphony/bdk/gen/agent_model/message_all_of.py +1 -1
  108. symphony/bdk/gen/agent_model/message_import_list.py +1 -1
  109. symphony/bdk/gen/agent_model/message_list.py +1 -1
  110. symphony/bdk/gen/agent_model/message_search_query.py +1 -1
  111. symphony/bdk/gen/agent_model/message_submission.py +1 -1
  112. symphony/bdk/gen/agent_model/pagination.py +1 -1
  113. symphony/bdk/gen/agent_model/pagination_cursors.py +1 -1
  114. symphony/bdk/gen/agent_model/room_created_message.py +1 -1
  115. symphony/bdk/gen/agent_model/room_created_message_all_of.py +1 -1
  116. symphony/bdk/gen/agent_model/room_deactivated_message.py +1 -1
  117. symphony/bdk/gen/agent_model/room_deactivated_message_all_of.py +1 -1
  118. symphony/bdk/gen/agent_model/room_member_demoted_from_owner_message.py +1 -1
  119. symphony/bdk/gen/agent_model/room_member_demoted_from_owner_message_all_of.py +1 -1
  120. symphony/bdk/gen/agent_model/room_member_promoted_to_owner_message.py +1 -1
  121. symphony/bdk/gen/agent_model/room_member_promoted_to_owner_message_all_of.py +1 -1
  122. symphony/bdk/gen/agent_model/room_reactivated_message.py +1 -1
  123. symphony/bdk/gen/agent_model/room_reactivated_message_all_of.py +1 -1
  124. symphony/bdk/gen/agent_model/room_tag.py +1 -1
  125. symphony/bdk/gen/agent_model/room_updated_message.py +1 -1
  126. symphony/bdk/gen/agent_model/room_updated_message_all_of.py +1 -1
  127. symphony/bdk/gen/agent_model/share_article.py +1 -1
  128. symphony/bdk/gen/agent_model/share_content.py +1 -1
  129. symphony/bdk/gen/agent_model/signal.py +1 -1
  130. symphony/bdk/gen/agent_model/signal_all_of.py +1 -6
  131. symphony/bdk/gen/agent_model/signal_list.py +1 -1
  132. symphony/bdk/gen/agent_model/simple_message.py +1 -1
  133. symphony/bdk/gen/agent_model/success_response.py +1 -1
  134. symphony/bdk/gen/agent_model/user_joined_room_message.py +1 -1
  135. symphony/bdk/gen/agent_model/user_joined_room_message_all_of.py +1 -1
  136. symphony/bdk/gen/agent_model/user_left_room_message.py +1 -1
  137. symphony/bdk/gen/agent_model/user_left_room_message_all_of.py +1 -1
  138. symphony/bdk/gen/agent_model/v1_audit_trail_initiator_list.py +1 -1
  139. symphony/bdk/gen/agent_model/v1_audit_trail_initiator_response.py +1 -1
  140. symphony/bdk/gen/agent_model/v1_dlp_content_type.py +1 -1
  141. symphony/bdk/gen/agent_model/v1_dlp_dictionary.py +1 -1
  142. symphony/bdk/gen/agent_model/v1_dlp_dictionary_content.py +1 -1
  143. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata.py +1 -1
  144. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_collection_response.py +1 -1
  145. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_create_request.py +1 -1
  146. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_response.py +1 -1
  147. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_update_request.py +1 -1
  148. symphony/bdk/gen/agent_model/v1_dlp_dictionary_ref.py +1 -1
  149. symphony/bdk/gen/agent_model/v1_dlp_matched_policy.py +1 -1
  150. symphony/bdk/gen/agent_model/v1_dlp_matched_policy_list.py +1 -1
  151. symphony/bdk/gen/agent_model/v1_dlp_outcome.py +1 -1
  152. symphony/bdk/gen/agent_model/v1_dlp_policies_collection_response.py +1 -1
  153. symphony/bdk/gen/agent_model/v1_dlp_policy.py +1 -1
  154. symphony/bdk/gen/agent_model/v1_dlp_policy_request.py +9 -8
  155. symphony/bdk/gen/agent_model/v1_dlp_policy_response.py +1 -1
  156. symphony/bdk/gen/agent_model/v1_dlp_signal.py +6 -1
  157. symphony/bdk/gen/agent_model/v1_dlp_stream.py +1 -1
  158. symphony/bdk/gen/agent_model/v1_dlp_violation.py +1 -1
  159. symphony/bdk/gen/agent_model/v1_dlp_violation_message.py +1 -1
  160. symphony/bdk/gen/agent_model/v1_dlp_violation_message_response.py +1 -1
  161. symphony/bdk/gen/agent_model/v1_dlp_violation_signal.py +1 -1
  162. symphony/bdk/gen/agent_model/v1_dlp_violation_signal_response.py +1 -1
  163. symphony/bdk/gen/agent_model/v1_dlp_violation_stream.py +1 -1
  164. symphony/bdk/gen/agent_model/v1_dlp_violation_stream_response.py +1 -1
  165. symphony/bdk/gen/agent_model/v1_health_check_response.py +1 -1
  166. symphony/bdk/gen/agent_model/v2_base_message.py +1 -1
  167. symphony/bdk/gen/agent_model/v2_error.py +1 -1
  168. symphony/bdk/gen/agent_model/v2_health_check_response.py +1 -1
  169. symphony/bdk/gen/agent_model/v2_import_response.py +1 -1
  170. symphony/bdk/gen/agent_model/v2_import_response_list.py +1 -1
  171. symphony/bdk/gen/agent_model/v2_imported_message.py +1 -1
  172. symphony/bdk/gen/agent_model/v2_message.py +1 -1
  173. symphony/bdk/gen/agent_model/v2_message_all_of.py +1 -1
  174. symphony/bdk/gen/agent_model/v2_message_import_list.py +1 -1
  175. symphony/bdk/gen/agent_model/v2_message_list.py +1 -1
  176. symphony/bdk/gen/agent_model/v2_message_submission.py +1 -1
  177. symphony/bdk/gen/agent_model/v3_dlp_dictionary_meta.py +1 -1
  178. symphony/bdk/gen/agent_model/v3_dlp_file_classifier_config.py +1 -1
  179. symphony/bdk/gen/agent_model/v3_dlp_file_extension_config.py +1 -1
  180. symphony/bdk/gen/agent_model/v3_dlp_file_password_config.py +1 -1
  181. symphony/bdk/gen/agent_model/v3_dlp_file_size_config.py +1 -1
  182. symphony/bdk/gen/agent_model/v3_dlp_policies_collection_response.py +1 -1
  183. symphony/bdk/gen/agent_model/v3_dlp_policy.py +1 -1
  184. symphony/bdk/gen/agent_model/v3_dlp_policy_applies_to.py +1 -1
  185. symphony/bdk/gen/agent_model/v3_dlp_policy_request.py +1 -1
  186. symphony/bdk/gen/agent_model/v3_dlp_policy_response.py +1 -1
  187. symphony/bdk/gen/agent_model/v3_dlp_rule.py +1 -1
  188. symphony/bdk/gen/agent_model/v3_dlp_text_match_config.py +1 -1
  189. symphony/bdk/gen/agent_model/v3_dlp_violation.py +1 -1
  190. symphony/bdk/gen/agent_model/v3_dlp_violation_message.py +1 -1
  191. symphony/bdk/gen/agent_model/v3_dlp_violation_message_response.py +1 -1
  192. symphony/bdk/gen/agent_model/v3_dlp_violation_signal.py +1 -1
  193. symphony/bdk/gen/agent_model/v3_dlp_violation_signal_response.py +1 -1
  194. symphony/bdk/gen/agent_model/v3_dlp_violation_stream.py +1 -1
  195. symphony/bdk/gen/agent_model/v3_dlp_violation_stream_response.py +1 -1
  196. symphony/bdk/gen/agent_model/v3_health.py +1 -1
  197. symphony/bdk/gen/agent_model/v3_health_auth_type.py +1 -1
  198. symphony/bdk/gen/agent_model/v3_health_component.py +1 -1
  199. symphony/bdk/gen/agent_model/v3_health_status.py +1 -1
  200. symphony/bdk/gen/agent_model/v4_attachment_info.py +1 -1
  201. symphony/bdk/gen/agent_model/v4_connection_accepted.py +1 -1
  202. symphony/bdk/gen/agent_model/v4_connection_requested.py +1 -1
  203. symphony/bdk/gen/agent_model/v4_event.py +3 -3
  204. symphony/bdk/gen/agent_model/v4_event_list.py +1 -1
  205. symphony/bdk/gen/agent_model/v4_generic_system_event.py +279 -0
  206. symphony/bdk/gen/agent_model/v4_import_response.py +1 -1
  207. symphony/bdk/gen/agent_model/v4_import_response_list.py +1 -1
  208. symphony/bdk/gen/agent_model/v4_imported_message.py +1 -1
  209. symphony/bdk/gen/agent_model/v4_imported_message_attachment.py +1 -1
  210. symphony/bdk/gen/agent_model/v4_initiator.py +1 -1
  211. symphony/bdk/gen/agent_model/v4_instant_message_created.py +1 -1
  212. symphony/bdk/gen/agent_model/v4_key_value_pair.py +1 -1
  213. symphony/bdk/gen/agent_model/v4_message.py +1 -1
  214. symphony/bdk/gen/agent_model/v4_message_blast_response.py +1 -1
  215. symphony/bdk/gen/agent_model/v4_message_import_list.py +1 -1
  216. symphony/bdk/gen/agent_model/v4_message_list.py +1 -1
  217. symphony/bdk/gen/agent_model/v4_message_sent.py +1 -1
  218. symphony/bdk/gen/agent_model/v4_message_suppressed.py +1 -1
  219. symphony/bdk/gen/agent_model/v4_payload.py +8 -1
  220. symphony/bdk/gen/agent_model/v4_room_created.py +1 -1
  221. symphony/bdk/gen/agent_model/v4_room_deactivated.py +1 -1
  222. symphony/bdk/gen/agent_model/v4_room_member_demoted_from_owner.py +1 -1
  223. symphony/bdk/gen/agent_model/v4_room_member_promoted_to_owner.py +1 -1
  224. symphony/bdk/gen/agent_model/v4_room_properties.py +1 -1
  225. symphony/bdk/gen/agent_model/v4_room_reactivated.py +1 -1
  226. symphony/bdk/gen/agent_model/v4_room_updated.py +1 -1
  227. symphony/bdk/gen/agent_model/v4_shared_post.py +1 -1
  228. symphony/bdk/gen/agent_model/v4_stream.py +6 -1
  229. symphony/bdk/gen/agent_model/v4_symphony_elements_action.py +1 -1
  230. symphony/bdk/gen/agent_model/v4_thumbnail_info.py +1 -1
  231. symphony/bdk/gen/agent_model/v4_user.py +1 -1
  232. symphony/bdk/gen/agent_model/v4_user_joined_room.py +1 -1
  233. symphony/bdk/gen/agent_model/v4_user_left_room.py +1 -1
  234. symphony/bdk/gen/agent_model/v4_user_requested_to_join_room.py +1 -1
  235. symphony/bdk/gen/agent_model/v5_datafeed.py +3 -3
  236. symphony/bdk/gen/agent_model/v5_datafeed_create_body.py +1 -1
  237. symphony/bdk/gen/agent_model/v5_event_list.py +1 -1
  238. symphony/bdk/gen/agent_model/v5_events_read_body.py +5 -5
  239. symphony/bdk/gen/pod_api/app_entitlement_api.py +1 -1
  240. symphony/bdk/gen/pod_api/application_api.py +1 -1
  241. symphony/bdk/gen/pod_api/connection_api.py +1 -1
  242. symphony/bdk/gen/pod_api/default_api.py +1 -1
  243. symphony/bdk/gen/pod_api/disclaimer_api.py +1 -1
  244. symphony/bdk/gen/pod_api/info_barriers_api.py +1 -1
  245. symphony/bdk/gen/pod_api/message_api.py +1 -1
  246. symphony/bdk/gen/pod_api/message_suppression_api.py +1 -1
  247. symphony/bdk/gen/pod_api/pod_api.py +1 -1
  248. symphony/bdk/gen/pod_api/presence_api.py +1 -1
  249. symphony/bdk/gen/pod_api/room_membership_api.py +1 -1
  250. symphony/bdk/gen/pod_api/security_api.py +1 -1
  251. symphony/bdk/gen/pod_api/session_api.py +1 -1
  252. symphony/bdk/gen/pod_api/streams_api.py +162 -1
  253. symphony/bdk/gen/pod_api/system_api.py +1 -1
  254. symphony/bdk/gen/pod_api/user_api.py +264 -2
  255. symphony/bdk/gen/pod_api/users_api.py +421 -1
  256. symphony/bdk/gen/pod_model/admin_justified_action.py +1 -1
  257. symphony/bdk/gen/pod_model/admin_justified_user_action.py +1 -1
  258. symphony/bdk/gen/pod_model/app_authentication_key.py +1 -1
  259. symphony/bdk/gen/pod_model/app_authentication_keys.py +1 -1
  260. symphony/bdk/gen/pod_model/app_notification.py +1 -1
  261. symphony/bdk/gen/pod_model/app_properties.py +1 -1
  262. symphony/bdk/gen/pod_model/app_property.py +1 -1
  263. symphony/bdk/gen/pod_model/application_detail.py +1 -1
  264. symphony/bdk/gen/pod_model/application_info.py +1 -1
  265. symphony/bdk/gen/pod_model/assignee_candidate.py +1 -1
  266. symphony/bdk/gen/pod_model/assignee_candidates.py +1 -1
  267. symphony/bdk/gen/pod_model/attachment_preview.py +1 -1
  268. symphony/bdk/gen/pod_model/avatar.py +1 -1
  269. symphony/bdk/gen/pod_model/avatar_list.py +1 -1
  270. symphony/bdk/gen/pod_model/avatar_update.py +1 -1
  271. symphony/bdk/gen/pod_model/bulk_action_result.py +1 -1
  272. symphony/bdk/gen/pod_model/cert_info.py +1 -1
  273. symphony/bdk/gen/pod_model/cert_info_item.py +1 -1
  274. symphony/bdk/gen/pod_model/company_cert.py +1 -1
  275. symphony/bdk/gen/pod_model/company_cert_attributes.py +1 -1
  276. symphony/bdk/gen/pod_model/company_cert_detail.py +1 -1
  277. symphony/bdk/gen/pod_model/company_cert_info.py +1 -1
  278. symphony/bdk/gen/pod_model/company_cert_info_list.py +1 -1
  279. symphony/bdk/gen/pod_model/company_cert_status.py +1 -1
  280. symphony/bdk/gen/pod_model/company_cert_type.py +1 -1
  281. symphony/bdk/gen/pod_model/company_cert_type_list.py +1 -1
  282. symphony/bdk/gen/pod_model/conversation_specific_stream_attributes.py +1 -1
  283. symphony/bdk/gen/pod_model/delegate_action.py +1 -1
  284. symphony/bdk/gen/pod_model/disclaimer.py +1 -1
  285. symphony/bdk/gen/pod_model/disclaimer_list.py +1 -1
  286. symphony/bdk/gen/pod_model/download_receipt_count.py +1 -1
  287. symphony/bdk/gen/pod_model/error.py +1 -1
  288. symphony/bdk/gen/pod_model/faceted_match_count.py +1 -1
  289. symphony/bdk/gen/pod_model/feature.py +1 -1
  290. symphony/bdk/gen/pod_model/feature_list.py +1 -1
  291. symphony/bdk/gen/pod_model/file_extension.py +6 -1
  292. symphony/bdk/gen/pod_model/file_extensions_response.py +1 -1
  293. symphony/bdk/gen/pod_model/followers_list.py +1 -1
  294. symphony/bdk/gen/pod_model/followers_list_response.py +1 -1
  295. symphony/bdk/gen/pod_model/following_list_response.py +1 -1
  296. symphony/bdk/gen/pod_model/group.py +1 -1
  297. symphony/bdk/gen/pod_model/group_item.py +1 -1
  298. symphony/bdk/gen/pod_model/group_list.py +1 -1
  299. symphony/bdk/gen/pod_model/group_role_scope.py +1 -1
  300. symphony/bdk/gen/pod_model/im_system_info.py +1 -1
  301. symphony/bdk/gen/pod_model/immutable_room_attributes.py +1 -1
  302. symphony/bdk/gen/pod_model/integer_list.py +1 -1
  303. symphony/bdk/gen/pod_model/languages.py +1 -1
  304. symphony/bdk/gen/pod_model/member_info.py +1 -1
  305. symphony/bdk/gen/pod_model/membership_data.py +1 -1
  306. symphony/bdk/gen/pod_model/membership_list.py +1 -1
  307. symphony/bdk/gen/pod_model/message_detail.py +1 -1
  308. symphony/bdk/gen/pod_model/message_details.py +1 -1
  309. symphony/bdk/gen/pod_model/message_download_receipt_count.py +1 -1
  310. symphony/bdk/gen/pod_model/message_ids.py +1 -1
  311. symphony/bdk/gen/pod_model/message_metadata_response.py +1 -1
  312. symphony/bdk/gen/pod_model/message_metadata_response_parent.py +1 -1
  313. symphony/bdk/gen/pod_model/message_receipt_detail.py +1 -1
  314. symphony/bdk/gen/pod_model/message_receipt_detail_response.py +1 -1
  315. symphony/bdk/gen/pod_model/message_status.py +1 -1
  316. symphony/bdk/gen/pod_model/message_status_user.py +1 -1
  317. symphony/bdk/gen/pod_model/message_stream.py +1 -1
  318. symphony/bdk/gen/pod_model/message_suppression_response.py +1 -1
  319. symphony/bdk/gen/pod_model/message_user.py +1 -1
  320. symphony/bdk/gen/pod_model/name_value_pair.py +1 -1
  321. symphony/bdk/gen/pod_model/pagination.py +1 -1
  322. symphony/bdk/gen/pod_model/pagination_cursors.py +1 -1
  323. symphony/bdk/gen/pod_model/password.py +1 -1
  324. symphony/bdk/gen/pod_model/password_reset.py +1 -1
  325. symphony/bdk/gen/pod_model/pod_app_entitlement.py +1 -1
  326. symphony/bdk/gen/pod_model/pod_app_entitlement_list.py +1 -1
  327. symphony/bdk/gen/pod_model/pod_certificate.py +1 -1
  328. symphony/bdk/gen/pod_model/policy.py +1 -1
  329. symphony/bdk/gen/pod_model/policy_list.py +1 -1
  330. symphony/bdk/gen/pod_model/product.py +1 -1
  331. symphony/bdk/gen/pod_model/product_list.py +1 -1
  332. symphony/bdk/gen/pod_model/protocol.py +1 -1
  333. symphony/bdk/gen/pod_model/role.py +1 -1
  334. symphony/bdk/gen/pod_model/role_detail.py +1 -1
  335. symphony/bdk/gen/pod_model/role_detail_list.py +1 -1
  336. symphony/bdk/gen/pod_model/role_list.py +1 -1
  337. symphony/bdk/gen/pod_model/room_attributes.py +1 -1
  338. symphony/bdk/gen/pod_model/room_detail.py +1 -1
  339. symphony/bdk/gen/pod_model/room_search_criteria.py +1 -1
  340. symphony/bdk/gen/pod_model/room_specific_stream_attributes.py +1 -1
  341. symphony/bdk/gen/pod_model/room_system_info.py +1 -1
  342. symphony/bdk/gen/pod_model/room_tag.py +1 -1
  343. symphony/bdk/gen/pod_model/service_account_manifest.py +264 -0
  344. symphony/bdk/gen/pod_model/stream.py +1 -1
  345. symphony/bdk/gen/pod_model/stream_attachment_item.py +1 -1
  346. symphony/bdk/gen/pod_model/stream_attachment_response.py +1 -1
  347. symphony/bdk/gen/pod_model/stream_attributes.py +1 -1
  348. symphony/bdk/gen/pod_model/stream_filter.py +1 -1
  349. symphony/bdk/gen/pod_model/stream_list.py +1 -1
  350. symphony/bdk/gen/pod_model/stream_type.py +1 -1
  351. symphony/bdk/gen/pod_model/string_id.py +1 -1
  352. symphony/bdk/gen/pod_model/string_list.py +1 -1
  353. symphony/bdk/gen/pod_model/success_response.py +1 -1
  354. symphony/bdk/gen/pod_model/user_app_entitlement.py +1 -1
  355. symphony/bdk/gen/pod_model/user_app_entitlement_list.py +1 -1
  356. symphony/bdk/gen/pod_model/user_app_entitlement_patch.py +1 -1
  357. symphony/bdk/gen/pod_model/user_app_entitlement_patch_enum.py +1 -1
  358. symphony/bdk/gen/pod_model/user_app_entitlements_patch_list.py +1 -1
  359. symphony/bdk/gen/pod_model/user_attributes.py +1 -1
  360. symphony/bdk/gen/pod_model/user_compp.py +1 -1
  361. symphony/bdk/gen/pod_model/user_connection.py +1 -1
  362. symphony/bdk/gen/pod_model/user_connection_list.py +1 -1
  363. symphony/bdk/gen/pod_model/user_connection_request.py +1 -1
  364. symphony/bdk/gen/pod_model/user_data.py +1 -1
  365. symphony/bdk/gen/pod_model/user_detail.py +1 -1
  366. symphony/bdk/gen/pod_model/user_detail_list.py +1 -1
  367. symphony/bdk/gen/pod_model/user_error.py +1 -1
  368. symphony/bdk/gen/pod_model/user_filter.py +1 -1
  369. symphony/bdk/gen/pod_model/user_group_assignee.py +1 -1
  370. symphony/bdk/gen/pod_model/user_group_assignee_response.py +1 -1
  371. symphony/bdk/gen/pod_model/user_group_assignee_update.py +1 -1
  372. symphony/bdk/gen/pod_model/user_group_assignment_response.py +1 -1
  373. symphony/bdk/gen/pod_model/user_group_create.py +1 -1
  374. symphony/bdk/gen/pod_model/user_group_data.py +1 -1
  375. symphony/bdk/gen/pod_model/user_group_membership_data.py +1 -1
  376. symphony/bdk/gen/pod_model/user_group_membership_request.py +1 -1
  377. symphony/bdk/gen/pod_model/user_group_membership_response.py +1 -1
  378. symphony/bdk/gen/pod_model/user_group_membership_response_data.py +1 -1
  379. symphony/bdk/gen/pod_model/user_group_membership_update.py +1 -1
  380. symphony/bdk/gen/pod_model/user_group_response.py +1 -1
  381. symphony/bdk/gen/pod_model/user_group_response_list.py +1 -1
  382. symphony/bdk/gen/pod_model/user_group_update.py +1 -1
  383. symphony/bdk/gen/pod_model/user_id.py +1 -1
  384. symphony/bdk/gen/pod_model/user_id_list.py +1 -1
  385. symphony/bdk/gen/pod_model/user_info.py +1 -1
  386. symphony/bdk/gen/pod_model/user_name.py +1 -1
  387. symphony/bdk/gen/pod_model/user_name_list.py +1 -1
  388. symphony/bdk/gen/pod_model/user_search_filter.py +1 -1
  389. symphony/bdk/gen/pod_model/user_search_query.py +1 -1
  390. symphony/bdk/gen/pod_model/user_search_results.py +1 -1
  391. symphony/bdk/gen/pod_model/user_status.py +1 -1
  392. symphony/bdk/gen/pod_model/user_suspension.py +1 -1
  393. symphony/bdk/gen/pod_model/user_system_info.py +1 -1
  394. symphony/bdk/gen/pod_model/user_v2.py +1 -1
  395. symphony/bdk/gen/pod_model/v1_im_attributes.py +1 -1
  396. symphony/bdk/gen/pod_model/v1_im_detail.py +1 -1
  397. symphony/bdk/gen/pod_model/v1_session.py +301 -0
  398. symphony/bdk/gen/pod_model/v1_user_sessions.py +259 -0
  399. symphony/bdk/gen/pod_model/v2_admin_stream_attributes.py +6 -1
  400. symphony/bdk/gen/pod_model/v2_admin_stream_filter.py +1 -1
  401. symphony/bdk/gen/pod_model/v2_admin_stream_info.py +1 -1
  402. symphony/bdk/gen/pod_model/v2_admin_stream_info_list.py +1 -1
  403. symphony/bdk/gen/pod_model/v2_admin_stream_list.py +1 -1
  404. symphony/bdk/gen/pod_model/v2_admin_stream_type.py +1 -1
  405. symphony/bdk/gen/pod_model/v2_conversation_specific_stream_attributes.py +1 -1
  406. symphony/bdk/gen/pod_model/v2_member_info.py +1 -1
  407. symphony/bdk/gen/pod_model/v2_member_info_list.py +1 -1
  408. symphony/bdk/gen/pod_model/v2_member_user_detail.py +1 -1
  409. symphony/bdk/gen/pod_model/v2_membership_list.py +1 -1
  410. symphony/bdk/gen/pod_model/v2_presence.py +1 -1
  411. symphony/bdk/gen/pod_model/v2_presence_all_of.py +1 -1
  412. symphony/bdk/gen/pod_model/v2_presence_list.py +1 -1
  413. symphony/bdk/gen/pod_model/v2_presence_status.py +1 -1
  414. symphony/bdk/gen/pod_model/v2_room_search_criteria.py +1 -1
  415. symphony/bdk/gen/pod_model/v2_room_search_criteria_all_of.py +1 -1
  416. symphony/bdk/gen/pod_model/v2_room_specific_stream_attributes.py +1 -1
  417. symphony/bdk/gen/pod_model/v2_stream_attributes.py +1 -1
  418. symphony/bdk/gen/pod_model/v2_stream_type.py +1 -1
  419. symphony/bdk/gen/pod_model/v2_user_attributes.py +1 -1
  420. symphony/bdk/gen/pod_model/v2_user_create.py +1 -1
  421. symphony/bdk/gen/pod_model/v2_user_detail.py +1 -1
  422. symphony/bdk/gen/pod_model/v2_user_detail_list.py +1 -1
  423. symphony/bdk/gen/pod_model/v2_user_key_request.py +1 -1
  424. symphony/bdk/gen/pod_model/v2_user_list.py +1 -1
  425. symphony/bdk/gen/pod_model/v2_user_presence.py +1 -1
  426. symphony/bdk/gen/pod_model/v2_user_presence_all_of.py +1 -1
  427. symphony/bdk/gen/pod_model/v3_room_attributes.py +6 -1
  428. symphony/bdk/gen/pod_model/v3_room_detail.py +1 -1
  429. symphony/bdk/gen/pod_model/v3_room_search_results.py +1 -1
  430. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/METADATA +19 -5
  431. symphony_bdk_python-2.11.0.dist-info/RECORD +546 -0
  432. symphony_bdk_python-2.10.dev0.dist-info/RECORD +0 -538
  433. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/LICENSE +0 -0
  434. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/NOTICE +0 -0
  435. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/WHEEL +0 -0
@@ -1,5 +1,5 @@
1
- """This module gathers all base classes related to the datafeed loop and real time events.
2
- """
1
+ """This module gathers all base classes related to the datafeed loop and real time events."""
2
+
3
3
  import asyncio
4
4
  import logging
5
5
  from abc import ABC, abstractmethod
@@ -21,8 +21,8 @@ event_listener_context = ContextVar("event_listener_context", default="main-task
21
21
 
22
22
 
23
23
  class DatafeedVersion(Enum):
24
- """Enum of all possible datafeed versions.
25
- """
24
+ """Enum of all possible datafeed versions."""
25
+
26
26
  V1 = "v1"
27
27
  V2 = "v2"
28
28
 
@@ -36,6 +36,7 @@ class RealTimeEvent(Enum):
36
36
  First element in enum value corresponds to the listener method who should be called when given event is received.
37
37
  Second element in enum value corresponds to the field name of event in the received payload.
38
38
  """
39
+
39
40
  MESSAGESENT = ("on_message_sent", "message_sent")
40
41
  SHAREDPOST = ("on_shared_post", "shared_post")
41
42
  INSTANTMESSAGECREATED = ("on_instant_message_created", "instant_message_created")
@@ -46,7 +47,10 @@ class RealTimeEvent(Enum):
46
47
  USERREQUESTEDTOJOINROOM = ("on_user_requested_to_join_room", "user_requested_to_join_room")
47
48
  USERJOINEDROOM = ("on_user_joined_room", "user_joined_room")
48
49
  USERLEFTROOM = ("on_user_left_room", "user_left_room")
49
- ROOMMEMBERPROMOTEDTOOWNER = ("on_room_member_promoted_to_owner", "room_member_promoted_to_owner")
50
+ ROOMMEMBERPROMOTEDTOOWNER = (
51
+ "on_room_member_promoted_to_owner",
52
+ "room_member_promoted_to_owner",
53
+ )
50
54
  ROOMMEMBERDEMOTEDFROMOWNER = ("on_room_demoted_from_owner", "room_member_demoted_from_owner")
51
55
  CONNECTIONREQUESTED = ("on_connection_requested", "connection_requested")
52
56
  CONNECTIONACCEPTED = ("on_connection_accepted", "connection_accepted")
@@ -66,8 +70,13 @@ class AbstractDatafeedLoop(ABC):
66
70
  event by the subscribed listeners.
67
71
  """
68
72
 
69
- def __init__(self, datafeed_api: DatafeedApi, session_service: SessionService, auth_session: AuthSession,
70
- config: BdkConfig):
73
+ def __init__(
74
+ self,
75
+ datafeed_api: DatafeedApi,
76
+ session_service: SessionService,
77
+ auth_session: AuthSession,
78
+ config: BdkConfig,
79
+ ):
71
80
  """
72
81
 
73
82
  :param datafeed_api: DatafeedApi to request the service
@@ -9,8 +9,8 @@ logger = logging.getLogger(__name__)
9
9
  class AbstractDatahoseLoop(ABC):
10
10
  """Base class for implementing the datahose services.
11
11
 
12
- A datahose service can help a bot to get all the received real-time events that are set
13
- as filters in the configuration.
12
+ A datahose service can help a bot to get all the received real-time events that are set
13
+ as filters in the configuration.
14
14
  """
15
15
 
16
16
  @abstractmethod
@@ -4,7 +4,9 @@ from symphony.bdk.core.retry import retry
4
4
  from symphony.bdk.core.retry.strategy import read_datafeed_retry
5
5
  from symphony.bdk.core.service.datafeed.abstract_datafeed_loop import AbstractDatafeedLoop
6
6
  from symphony.bdk.core.service.datafeed.exception import EventError
7
- from symphony.bdk.core.service.datafeed.on_disk_datafeed_id_repository import OnDiskDatafeedIdRepository
7
+ from symphony.bdk.core.service.datafeed.on_disk_datafeed_id_repository import (
8
+ OnDiskDatafeedIdRepository,
9
+ )
8
10
 
9
11
  logger = logging.getLogger(__name__)
10
12
 
@@ -32,7 +34,9 @@ class DatafeedLoopV1(AbstractDatafeedLoop):
32
34
 
33
35
  def __init__(self, datafeed_api, session_service, auth_session, config, repository=None):
34
36
  super().__init__(datafeed_api, session_service, auth_session, config)
35
- self._datafeed_repository = OnDiskDatafeedIdRepository(config) if repository is None else repository
37
+ self._datafeed_repository = (
38
+ OnDiskDatafeedIdRepository(config) if repository is None else repository
39
+ )
36
40
  self._datafeed_id = None
37
41
 
38
42
  async def start(self):
@@ -57,8 +61,9 @@ class DatafeedLoopV1(AbstractDatafeedLoop):
57
61
  async def recreate_datafeed(self):
58
62
  session_token = await self._auth_session.session_token
59
63
  key_manager_token = await self._auth_session.key_manager_token
60
- response = await self._datafeed_api.v4_datafeed_create_post(session_token=session_token,
61
- key_manager_token=key_manager_token)
64
+ response = await self._datafeed_api.v4_datafeed_create_post(
65
+ session_token=session_token, key_manager_token=key_manager_token
66
+ )
62
67
  datafeed_id = response.id
63
68
  self._datafeed_repository.write(datafeed_id)
64
69
  self._datafeed_id = datafeed_id
@@ -73,17 +78,20 @@ class DatafeedLoopV1(AbstractDatafeedLoop):
73
78
  async def _read_datafeed(self):
74
79
  session_token = await self._auth_session.session_token
75
80
  key_manager_token = await self._auth_session.key_manager_token
76
- events = await self._datafeed_api.v4_datafeed_id_read_get(id=self._datafeed_id,
77
- session_token=session_token,
78
- key_manager_token=key_manager_token)
81
+ events = await self._datafeed_api.v4_datafeed_id_read_get(
82
+ id=self._datafeed_id, session_token=session_token, key_manager_token=key_manager_token
83
+ )
79
84
  return events.value if events is not None and events.value else []
80
85
 
81
86
  async def _log_listener_exception(self, task):
82
87
  exception = task.exception()
83
88
  if exception:
84
89
  if isinstance(exception, EventError):
85
- logger.warning("EventError occurred inside %s. "
86
- "EventError is not supported for DFv1, events will not get re-queued",
87
- task.get_name(), exc_info=exception)
90
+ logger.warning(
91
+ "EventError occurred inside %s. "
92
+ "EventError is not supported for DFv1, events will not get re-queued",
93
+ task.get_name(),
94
+ exc_info=exception,
95
+ )
88
96
  else:
89
97
  logging.debug("Exception occurred inside %s", task.get_name(), exc_info=exception)
@@ -23,24 +23,29 @@ logger = logging.getLogger(__name__)
23
23
  class DatafeedLoopV2(AbstractAckIdEventLoop):
24
24
  """A class for implementing the datafeed v2 loop service.
25
25
 
26
- This service will be started by calling :func:`~DatafeedLoopV2.start`.
26
+ This service will be started by calling :func:`~DatafeedLoopV2.start`.
27
27
 
28
- On the very first run, the BDK bot will try to retrieve the list of datafeed to which it is listening.
29
- Since each bot should only listen to just one datafeed, the first datafeed in the list will be used by
30
- the bot to be listened to. If the retrieved list is empty, the BDK bot will create a new datafeed to listen.
28
+ On the very first run, the BDK bot will try to retrieve the list of datafeed to which it is listening.
29
+ Since each bot should only listen to just one datafeed, the first datafeed in the list will be used by
30
+ the bot to be listened to. If the retrieved list is empty, the BDK bot will create a new datafeed to listen.
31
31
 
32
- The BDK bot will listen to this datafeed to get all the received real-time events.
32
+ The BDK bot will listen to this datafeed to get all the received real-time events.
33
33
 
34
- If this datafeed becomes stale or faulty, the BDK bot will create the new one for listening.
34
+ If this datafeed becomes stale or faulty, the BDK bot will create the new one for listening.
35
35
 
36
- This service will be stopped by calling :func:`~DatafeedLoopV1.stop`
36
+ This service will be stopped by calling :func:`~DatafeedLoopV1.stop`
37
37
 
38
- If the datafeed service is stopped during a read datafeed call, it has to wait until the last read finish to be
39
- really stopped
40
- """
38
+ If the datafeed service is stopped during a read datafeed call, it has to wait until the last read finish to be
39
+ really stopped
40
+ """
41
41
 
42
- def __init__(self, datafeed_api: DatafeedApi, session_service: SessionService, auth_session: AuthSession,
43
- config: BdkConfig):
42
+ def __init__(
43
+ self,
44
+ datafeed_api: DatafeedApi,
45
+ session_service: SessionService,
46
+ auth_session: AuthSession,
47
+ config: BdkConfig,
48
+ ):
44
49
  super().__init__(datafeed_api, session_service, auth_session, config)
45
50
  self._datafeed_id = None
46
51
 
@@ -69,7 +74,7 @@ class DatafeedLoopV2(AbstractAckIdEventLoop):
69
74
  "session_token": await self._auth_session.session_token,
70
75
  "key_manager_token": await self._auth_session.key_manager_token,
71
76
  "datafeed_id": self._datafeed_id,
72
- "ack_id": AckId(ack_id=self._ack_id)
77
+ "ack_id": AckId(ack_id=self._ack_id),
73
78
  }
74
79
  return await self._datafeed_api.read_datafeed(**params)
75
80
 
@@ -84,8 +89,9 @@ class DatafeedLoopV2(AbstractAckIdEventLoop):
84
89
  async def _retrieve_datafeed(self) -> Optional[V5Datafeed]:
85
90
  session_token = await self._auth_session.session_token
86
91
  key_manager_token = await self._auth_session.key_manager_token
87
- datafeeds = await self._datafeed_api.list_datafeed(session_token=session_token,
88
- key_manager_token=key_manager_token)
92
+ datafeeds = await self._datafeed_api.list_datafeed(
93
+ session_token=session_token, key_manager_token=key_manager_token
94
+ )
89
95
 
90
96
  datafeeds = list(filter(lambda df: DATAFEED_V2_ID_PATTERN.match(df.id), datafeeds))
91
97
  if datafeeds:
@@ -97,14 +103,18 @@ class DatafeedLoopV2(AbstractAckIdEventLoop):
97
103
  session_token = await self._auth_session.session_token
98
104
  key_manager_token = await self._auth_session.key_manager_token
99
105
 
100
- return await self._datafeed_api.create_datafeed(session_token=session_token,
101
- key_manager_token=key_manager_token,
102
- body=V5DatafeedCreateBody())
106
+ return await self._datafeed_api.create_datafeed(
107
+ session_token=session_token,
108
+ key_manager_token=key_manager_token,
109
+ body=V5DatafeedCreateBody(),
110
+ )
103
111
 
104
112
  @retry
105
113
  async def _delete_datafeed(self) -> None:
106
114
  session_token = await self._auth_session.session_token
107
115
  key_manager_token = await self._auth_session.key_manager_token
108
- await self._datafeed_api.delete_datafeed(datafeed_id=self._datafeed_id,
109
- session_token=session_token,
110
- key_manager_token=key_manager_token)
116
+ await self._datafeed_api.delete_datafeed(
117
+ datafeed_id=self._datafeed_id,
118
+ session_token=session_token,
119
+ key_manager_token=key_manager_token,
120
+ )
@@ -1,11 +1,11 @@
1
1
  import logging
2
2
 
3
+ from symphony.bdk.core.auth.auth_session import AuthSession
4
+ from symphony.bdk.core.config.model.bdk_config import BdkConfig
3
5
  from symphony.bdk.core.retry import retry
4
6
  from symphony.bdk.core.retry.strategy import read_datahose_retry
5
7
  from symphony.bdk.core.service.datafeed.abstract_ackId_event_loop import AbstractAckIdEventLoop
6
8
  from symphony.bdk.core.service.datafeed.abstract_datahose_loop import AbstractDatahoseLoop
7
- from symphony.bdk.core.auth.auth_session import AuthSession
8
- from symphony.bdk.core.config.model.bdk_config import BdkConfig
9
9
  from symphony.bdk.core.service.session.session_service import SessionService
10
10
  from symphony.bdk.gen.agent_api.datafeed_api import DatafeedApi
11
11
  from symphony.bdk.gen.agent_model.v5_events_read_body import V5EventsReadBody
@@ -20,21 +20,30 @@ logger = logging.getLogger(__name__)
20
20
  class DatahoseLoop(AbstractAckIdEventLoop, AbstractDatahoseLoop):
21
21
  """A class for implementing the datahose loop service.
22
22
 
23
- This service will be started by calling :func:`~DatahoseLoop.start`.
23
+ This service will be started by calling :func:`~DatahoseLoop.start`.
24
24
 
25
- The BDK bot will listen to this datahose to get all the received real-time events that are set
26
- as event_types in the configuration.
25
+ The BDK bot will listen to this datahose to get all the received real-time events that are set
26
+ as event_types in the configuration.
27
27
 
28
- This service will be stopped by calling :func:`~DatahoseLoop.stop`
28
+ This service will be stopped by calling :func:`~DatahoseLoop.stop`
29
29
  """
30
30
 
31
- def __init__(self, datafeed_api: DatafeedApi, session_service: SessionService, auth_session: AuthSession,
32
- config: BdkConfig):
31
+ def __init__(
32
+ self,
33
+ datafeed_api: DatafeedApi,
34
+ session_service: SessionService,
35
+ auth_session: AuthSession,
36
+ config: BdkConfig,
37
+ ):
33
38
  super().__init__(datafeed_api, session_service, auth_session, config)
34
39
  if config.datahose is not None:
35
- not_truncated_tag = config.datahose.tag if config.datahose.tag is not None \
36
- else TYPE + "-" + config.bot.username if config.bot.username is not None \
40
+ not_truncated_tag = (
41
+ config.datahose.tag
42
+ if config.datahose.tag is not None
43
+ else TYPE + "-" + config.bot.username
44
+ if config.bot.username is not None
37
45
  else TYPE
46
+ )
38
47
  self._tag = not_truncated_tag[:DATAHOSE_TAG_MAX_LENGTH]
39
48
  self._retry = config.datahose.retry
40
49
  self._event_types = config.datahose.event_types
@@ -56,7 +65,9 @@ class DatahoseLoop(AbstractAckIdEventLoop, AbstractDatahoseLoop):
56
65
  params = {
57
66
  "session_token": await self._auth_session.session_token,
58
67
  "key_manager_token": await self._auth_session.key_manager_token,
59
- "body": V5EventsReadBody(type=TYPE, tag=self._tag, event_types=self._event_types, ack_id=self._ack_id)
68
+ "body": V5EventsReadBody(
69
+ type=TYPE, tag=self._tag, event_types=self._event_types, ack_id=self._ack_id
70
+ ),
60
71
  }
61
72
 
62
73
  return await self._datafeed_api.read_events(**params)
@@ -2,6 +2,7 @@ import logging
2
2
  import os
3
3
  from abc import ABC, abstractmethod
4
4
  from pathlib import Path
5
+
5
6
  from symphony.bdk.core.config.model.bdk_config import BdkConfig
6
7
 
7
8
  logger = logging.getLogger(__name__)
@@ -30,6 +31,7 @@ class DatafeedIdRepository(ABC):
30
31
 
31
32
  class OnDiskDatafeedIdRepository(DatafeedIdRepository):
32
33
  """Implementation of DatafeedIdRepository interface for persisting a datafeed id on disk."""
34
+
33
35
  DATAFEED_ID_FILE = "datafeed.id"
34
36
 
35
37
  def __init__(self, config: BdkConfig):
@@ -42,8 +44,10 @@ class OnDiskDatafeedIdRepository(DatafeedIdRepository):
42
44
  def read(self) -> str:
43
45
  logger.debug("Retrieving datafeed id from file %s", self.datafeed_id_file_path.absolute())
44
46
  if not os.path.exists(self.datafeed_id_file_path):
45
- logger.debug("Could not retrieve datafeed id from file %s: file not found",
46
- self.datafeed_id_file_path.absolute())
47
+ logger.debug(
48
+ "Could not retrieve datafeed id from file %s: file not found",
49
+ self.datafeed_id_file_path.absolute(),
50
+ )
47
51
  return None
48
52
 
49
53
  return self._read_in_file()
@@ -56,8 +60,10 @@ class OnDiskDatafeedIdRepository(DatafeedIdRepository):
56
60
  def _read_in_line(self, line):
57
61
  index = line.find("@")
58
62
  if index == -1:
59
- logger.debug("Could not retrieve datafeed id from file %s: file without datafeed id information",
60
- self.datafeed_id_file_path.absolute())
63
+ logger.debug(
64
+ "Could not retrieve datafeed id from file %s: file without datafeed id information",
65
+ self.datafeed_id_file_path.absolute(),
66
+ )
61
67
  return None
62
68
  datafeed_id = line[0:index]
63
69
  logger.debug("Retrieved datafeed id: %s", datafeed_id)
@@ -1,21 +1,25 @@
1
+ from symphony.bdk.gen.agent_model.v4_connection_accepted import V4ConnectionAccepted
2
+ from symphony.bdk.gen.agent_model.v4_connection_requested import V4ConnectionRequested
1
3
  from symphony.bdk.gen.agent_model.v4_event import V4Event
2
- from symphony.bdk.gen.agent_model.v4_message_sent import V4MessageSent
3
4
  from symphony.bdk.gen.agent_model.v4_initiator import V4Initiator
4
- from symphony.bdk.gen.agent_model.v4_shared_post import V4SharedPost
5
5
  from symphony.bdk.gen.agent_model.v4_instant_message_created import V4InstantMessageCreated
6
+ from symphony.bdk.gen.agent_model.v4_message_sent import V4MessageSent
7
+ from symphony.bdk.gen.agent_model.v4_message_suppressed import V4MessageSuppressed
6
8
  from symphony.bdk.gen.agent_model.v4_room_created import V4RoomCreated
7
- from symphony.bdk.gen.agent_model.v4_room_updated import V4RoomUpdated
8
9
  from symphony.bdk.gen.agent_model.v4_room_deactivated import V4RoomDeactivated
10
+ from symphony.bdk.gen.agent_model.v4_room_member_demoted_from_owner import (
11
+ V4RoomMemberDemotedFromOwner,
12
+ )
13
+ from symphony.bdk.gen.agent_model.v4_room_member_promoted_to_owner import (
14
+ V4RoomMemberPromotedToOwner,
15
+ )
9
16
  from symphony.bdk.gen.agent_model.v4_room_reactivated import V4RoomReactivated
10
- from symphony.bdk.gen.agent_model.v4_user_requested_to_join_room import V4UserRequestedToJoinRoom
17
+ from symphony.bdk.gen.agent_model.v4_room_updated import V4RoomUpdated
18
+ from symphony.bdk.gen.agent_model.v4_shared_post import V4SharedPost
19
+ from symphony.bdk.gen.agent_model.v4_symphony_elements_action import V4SymphonyElementsAction
11
20
  from symphony.bdk.gen.agent_model.v4_user_joined_room import V4UserJoinedRoom
12
21
  from symphony.bdk.gen.agent_model.v4_user_left_room import V4UserLeftRoom
13
- from symphony.bdk.gen.agent_model.v4_room_member_promoted_to_owner import V4RoomMemberPromotedToOwner
14
- from symphony.bdk.gen.agent_model.v4_room_member_demoted_from_owner import V4RoomMemberDemotedFromOwner
15
- from symphony.bdk.gen.agent_model.v4_connection_requested import V4ConnectionRequested
16
- from symphony.bdk.gen.agent_model.v4_connection_accepted import V4ConnectionAccepted
17
- from symphony.bdk.gen.agent_model.v4_message_suppressed import V4MessageSuppressed
18
- from symphony.bdk.gen.agent_model.v4_symphony_elements_action import V4SymphonyElementsAction
22
+ from symphony.bdk.gen.agent_model.v4_user_requested_to_join_room import V4UserRequestedToJoinRoom
19
23
  from symphony.bdk.gen.pod_model.user_v2 import UserV2
20
24
 
21
25
 
@@ -42,21 +46,23 @@ class RealTimeEventListener:
42
46
  return False
43
47
 
44
48
  async def on_message_sent(self, initiator: V4Initiator, event: V4MessageSent):
45
- """ Called when a MESSAGESENT event is received.
49
+ """Called when a MESSAGESENT event is received.
46
50
 
47
51
  :param initiator: Event initiator.
48
52
  :param event: Message sent payload.
49
53
  """
50
54
 
51
55
  async def on_shared_post(self, initiator: V4Initiator, event: V4SharedPost):
52
- """ Called when an INSTANTMESSAGECREATED event is received.
56
+ """Called when an INSTANTMESSAGECREATED event is received.
53
57
 
54
58
  :param initiator: Event initiator.
55
59
  :param event: Shared post payload.
56
60
  """
57
61
 
58
- async def on_instant_message_created(self, initiator: V4Initiator, event: V4InstantMessageCreated):
59
- """ Called when a ROOMCREATED event is received.
62
+ async def on_instant_message_created(
63
+ self, initiator: V4Initiator, event: V4InstantMessageCreated
64
+ ):
65
+ """Called when a ROOMCREATED event is received.
60
66
 
61
67
  :param initiator: Event initiator.
62
68
  :param event: Instant Message Created payload.
@@ -90,7 +96,9 @@ class RealTimeEventListener:
90
96
  :param event: Room Reactivated payload.
91
97
  """
92
98
 
93
- async def on_user_requested_to_join_room(self, initiator: V4Initiator, event: V4UserRequestedToJoinRoom):
99
+ async def on_user_requested_to_join_room(
100
+ self, initiator: V4Initiator, event: V4UserRequestedToJoinRoom
101
+ ):
94
102
  """
95
103
 
96
104
  :param initiator: Event initiator.
@@ -111,14 +119,18 @@ class RealTimeEventListener:
111
119
  :param event: User Left Room payload.
112
120
  """
113
121
 
114
- async def on_room_member_promoted_to_owner(self, initiator: V4Initiator, event: V4RoomMemberPromotedToOwner):
122
+ async def on_room_member_promoted_to_owner(
123
+ self, initiator: V4Initiator, event: V4RoomMemberPromotedToOwner
124
+ ):
115
125
  """
116
126
 
117
127
  :param initiator: Event initiator.
118
128
  :param event: Room Member Promoted To Owner payload.
119
129
  """
120
130
 
121
- async def on_room_demoted_from_owner(self, initiator: V4Initiator, event: V4RoomMemberDemotedFromOwner):
131
+ async def on_room_demoted_from_owner(
132
+ self, initiator: V4Initiator, event: V4RoomMemberDemotedFromOwner
133
+ ):
122
134
  """
123
135
 
124
136
  :param initiator: Event initiator.
@@ -146,7 +158,9 @@ class RealTimeEventListener:
146
158
  :param event: Message Suppressed payload.
147
159
  """
148
160
 
149
- async def on_symphony_elements_action(self, initiator: V4Initiator, event: V4SymphonyElementsAction):
161
+ async def on_symphony_elements_action(
162
+ self, initiator: V4Initiator, event: V4SymphonyElementsAction
163
+ ):
150
164
  """
151
165
 
152
166
  :param initiator: Event initiator.
@@ -1,12 +1,9 @@
1
- """Module containing all service related exception.
2
- """
1
+ """Module containing all service related exception."""
3
2
 
4
3
 
5
4
  class MessageParserError(Exception):
6
- """Raised when the message is not found in the correct format
7
- """
5
+ """Raised when the message is not found in the correct format"""
8
6
 
9
7
 
10
8
  class MessageCreationError(Exception):
11
- """Raised when a :py:class:`~symphony.bdk.core.service.message.model.Message` failed to be created
12
- """
9
+ """Raised when a :py:class:`~symphony.bdk.core.service.message.model.Message` failed to be created"""
@@ -1,21 +1,22 @@
1
1
  from symphony.bdk.core.config.model.bdk_retry_config import BdkRetryConfig
2
- from symphony.bdk.gen.agent_api.system_api import SystemApi
3
2
  from symphony.bdk.gen.agent_api.signals_api import SignalsApi
3
+ from symphony.bdk.gen.agent_api.system_api import SystemApi
4
4
  from symphony.bdk.gen.agent_model.agent_info import AgentInfo
5
-
6
5
  from symphony.bdk.gen.agent_model.v3_health import V3Health
7
6
 
8
7
 
9
8
  class HealthService:
10
9
  """Service class for checking health of the Agent server."""
11
10
 
12
- def __init__(self, system_api: SystemApi, signals_api: SignalsApi, retry_config: BdkRetryConfig):
11
+ def __init__(
12
+ self, system_api: SystemApi, signals_api: SignalsApi, retry_config: BdkRetryConfig
13
+ ):
13
14
  self._system_api = system_api
14
15
  self._signals_api = signals_api
15
16
  self._retry_config = retry_config
16
17
 
17
18
  async def health_check(self) -> V3Health:
18
- """ Returns the connectivity status of your Agent server.
19
+ """Returns the connectivity status of your Agent server.
19
20
  Wraps the `Health Check v3 <https://developers.symphony.com/restapi/reference/health-check-v3>`_ endpoint.
20
21
  If your Agent server is started and running properly, the status value will be UP.
21
22
  Available on Agent 2.57.0 and above.
@@ -2,14 +2,14 @@
2
2
  extracting entities like Mentions, Hashtags, Cashtags, Emojis and extracting text content from presentationML
3
3
  contained in the message.
4
4
  """
5
- import json
6
- import html
7
5
 
6
+ import html
7
+ import json
8
8
  from enum import Enum
9
9
  from json import JSONDecodeError
10
10
  from typing import Dict
11
11
 
12
- from defusedxml.ElementTree import fromstring, tostring, ParseError
12
+ from defusedxml.ElementTree import ParseError, fromstring, tostring
13
13
 
14
14
  from symphony.bdk.core.service.exception import MessageParserError
15
15
  from symphony.bdk.gen.agent_model.v4_message import V4Message
@@ -25,11 +25,13 @@ def get_text_content_from_message(message: V4Message) -> str:
25
25
  escaped_text_content = tostring(fromstring(message.message), method="text").decode().strip()
26
26
  return html.unescape(escaped_text_content)
27
27
  except ParseError as exc:
28
- raise MessageParserError("Unable to parse the PresentationML, it is not in the correct format.") from exc
28
+ raise MessageParserError(
29
+ "Unable to parse the PresentationML, it is not in the correct format."
30
+ ) from exc
29
31
 
30
32
 
31
33
  def get_mentions(message: V4Message) -> [int]:
32
- """ Parse data inside an incoming message and returns a list containing the user ids corresponding
34
+ """Parse data inside an incoming message and returns a list containing the user ids corresponding
33
35
  to the users mentioned
34
36
 
35
37
  :param message: incoming V4 message to be parsed
@@ -40,7 +42,7 @@ def get_mentions(message: V4Message) -> [int]:
40
42
 
41
43
 
42
44
  def get_hashtags(message: V4Message) -> [str]:
43
- """ Parse data inside an incoming message and returns a list containing the text of the hashtags found
45
+ """Parse data inside an incoming message and returns a list containing the text of the hashtags found
44
46
 
45
47
  :param message: message incoming V4 message to be parsed
46
48
  :return: list of hashtags contained in the message
@@ -49,7 +51,7 @@ def get_hashtags(message: V4Message) -> [str]:
49
51
 
50
52
 
51
53
  def get_cashtags(message: V4Message) -> [str]:
52
- """ Parse data inside an incoming message and returns a list containing the text of the cashtags found
54
+ """Parse data inside an incoming message and returns a list containing the text of the cashtags found
53
55
 
54
56
  :param message: message incoming V4 message to be parsed
55
57
  :return: list of cashtags contained in the message
@@ -58,7 +60,7 @@ def get_cashtags(message: V4Message) -> [str]:
58
60
 
59
61
 
60
62
  def get_emojis(message: V4Message) -> Dict[str, str]:
61
- """ Parse data inside an incoming message and returns a map containing the list of emojis found.
63
+ """Parse data inside an incoming message and returns a map containing the list of emojis found.
62
64
  Key of the map are the annotation used to identify the emoji and the values are the their unicode.
63
65
 
64
66
  :param message: message incoming V4 message to be parsed