twitter-openapi-python-generated 0.0.9__py3-none-any.whl → 0.0.11__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 (281) hide show
  1. twitter_openapi_python_generated/__init__.py +59 -2
  2. twitter_openapi_python_generated/api/default_api.py +5 -13
  3. twitter_openapi_python_generated/api/other_api.py +4 -11
  4. twitter_openapi_python_generated/api/post_api.py +10 -19
  5. twitter_openapi_python_generated/api/tweet_api.py +14 -22
  6. twitter_openapi_python_generated/api/user_api.py +5 -13
  7. twitter_openapi_python_generated/api/user_list_api.py +8 -16
  8. twitter_openapi_python_generated/api/users_api.py +4 -12
  9. twitter_openapi_python_generated/api/v11_get_api.py +5 -13
  10. twitter_openapi_python_generated/api/v11_post_api.py +5 -13
  11. twitter_openapi_python_generated/api/v20_get_api.py +4 -12
  12. twitter_openapi_python_generated/api_client.py +45 -18
  13. twitter_openapi_python_generated/api_response.py +3 -3
  14. twitter_openapi_python_generated/configuration.py +5 -3
  15. twitter_openapi_python_generated/exceptions.py +0 -1
  16. twitter_openapi_python_generated/models/__init__.py +58 -1
  17. twitter_openapi_python_generated/models/additional_media_info.py +30 -13
  18. twitter_openapi_python_generated/models/additional_media_info_call_to_actions.py +92 -0
  19. twitter_openapi_python_generated/models/additional_media_info_call_to_actions_visit_site.py +88 -0
  20. twitter_openapi_python_generated/models/author_community_relationship.py +110 -0
  21. twitter_openapi_python_generated/models/birdwatch_entity.py +10 -12
  22. twitter_openapi_python_generated/models/birdwatch_entity_ref.py +11 -13
  23. twitter_openapi_python_generated/models/birdwatch_pivot.py +21 -17
  24. twitter_openapi_python_generated/models/birdwatch_pivot_call_to_action.py +92 -0
  25. twitter_openapi_python_generated/models/birdwatch_pivot_footer.py +10 -11
  26. twitter_openapi_python_generated/models/birdwatch_pivot_note.py +9 -11
  27. twitter_openapi_python_generated/models/birdwatch_pivot_subtitle.py +10 -11
  28. twitter_openapi_python_generated/models/bookmarks_response.py +10 -11
  29. twitter_openapi_python_generated/models/bookmarks_response_data.py +10 -11
  30. twitter_openapi_python_generated/models/bookmarks_timeline.py +10 -11
  31. twitter_openapi_python_generated/models/callback.py +9 -10
  32. twitter_openapi_python_generated/models/client_event_info.py +9 -10
  33. twitter_openapi_python_generated/models/communities_actions.py +9 -10
  34. twitter_openapi_python_generated/models/community.py +92 -0
  35. twitter_openapi_python_generated/models/community_actions.py +110 -0
  36. twitter_openapi_python_generated/models/community_data.py +210 -0
  37. twitter_openapi_python_generated/models/community_delete_action_result.py +98 -0
  38. twitter_openapi_python_generated/models/community_invites_result.py +100 -0
  39. twitter_openapi_python_generated/models/community_join_action_result.py +89 -0
  40. twitter_openapi_python_generated/models/community_join_requests_result.py +89 -0
  41. twitter_openapi_python_generated/models/community_leave_action_result.py +100 -0
  42. twitter_openapi_python_generated/models/community_pin_action_result.py +89 -0
  43. twitter_openapi_python_generated/models/community_rule.py +100 -0
  44. twitter_openapi_python_generated/models/community_urls.py +92 -0
  45. twitter_openapi_python_generated/models/community_urls_permalink.py +88 -0
  46. twitter_openapi_python_generated/models/content_entry_type.py +1 -9
  47. twitter_openapi_python_generated/models/content_item_type.py +1 -9
  48. twitter_openapi_python_generated/models/content_union.py +8 -17
  49. twitter_openapi_python_generated/models/cover_cta.py +13 -15
  50. twitter_openapi_python_generated/models/create_retweet.py +10 -11
  51. twitter_openapi_python_generated/models/create_retweet_response.py +10 -11
  52. twitter_openapi_python_generated/models/create_retweet_response_data.py +10 -11
  53. twitter_openapi_python_generated/models/create_retweet_response_result.py +10 -11
  54. twitter_openapi_python_generated/models/create_tweet.py +10 -11
  55. twitter_openapi_python_generated/models/create_tweet_response.py +10 -11
  56. twitter_openapi_python_generated/models/create_tweet_response_data.py +10 -11
  57. twitter_openapi_python_generated/models/create_tweet_response_result.py +10 -11
  58. twitter_openapi_python_generated/models/cta_client_event_info.py +10 -11
  59. twitter_openapi_python_generated/models/cursor_type.py +1 -9
  60. twitter_openapi_python_generated/models/delete_retweet.py +10 -11
  61. twitter_openapi_python_generated/models/delete_retweet_response.py +10 -11
  62. twitter_openapi_python_generated/models/delete_retweet_response_data.py +10 -11
  63. twitter_openapi_python_generated/models/delete_retweet_response_result.py +10 -11
  64. twitter_openapi_python_generated/models/delete_tweet_response.py +10 -11
  65. twitter_openapi_python_generated/models/delete_tweet_response_data.py +10 -11
  66. twitter_openapi_python_generated/models/delete_tweet_response_result.py +9 -10
  67. twitter_openapi_python_generated/models/display_treatment.py +88 -0
  68. twitter_openapi_python_generated/models/display_type.py +40 -0
  69. twitter_openapi_python_generated/models/entities.py +11 -12
  70. twitter_openapi_python_generated/models/error.py +12 -13
  71. twitter_openapi_python_generated/models/error_extensions.py +10 -11
  72. twitter_openapi_python_generated/models/error_response.py +10 -11
  73. twitter_openapi_python_generated/models/errors.py +10 -11
  74. twitter_openapi_python_generated/models/ext_media_availability.py +10 -11
  75. twitter_openapi_python_generated/models/extended_entities.py +10 -11
  76. twitter_openapi_python_generated/models/extensions.py +10 -11
  77. twitter_openapi_python_generated/models/favorite_tweet.py +9 -10
  78. twitter_openapi_python_generated/models/favorite_tweet_response_data.py +10 -11
  79. twitter_openapi_python_generated/models/{social_context.py → feedback_info.py} +17 -23
  80. twitter_openapi_python_generated/models/follow_response.py +10 -11
  81. twitter_openapi_python_generated/models/follow_response_data.py +10 -11
  82. twitter_openapi_python_generated/models/follow_response_result.py +10 -12
  83. twitter_openapi_python_generated/models/follow_response_user.py +10 -11
  84. twitter_openapi_python_generated/models/follow_timeline.py +10 -11
  85. twitter_openapi_python_generated/models/get_bookmarks200_response.py +8 -17
  86. twitter_openapi_python_generated/models/get_favoriters200_response.py +8 -17
  87. twitter_openapi_python_generated/models/get_followers200_response.py +8 -17
  88. twitter_openapi_python_generated/models/get_home_latest_timeline200_response.py +8 -17
  89. twitter_openapi_python_generated/models/get_likes200_response.py +8 -17
  90. twitter_openapi_python_generated/models/get_list_latest_tweets_timeline200_response.py +8 -17
  91. twitter_openapi_python_generated/models/get_profile_spotlights_query200_response.py +8 -17
  92. twitter_openapi_python_generated/models/get_retweeters200_response.py +8 -17
  93. twitter_openapi_python_generated/models/get_search_timeline200_response.py +8 -17
  94. twitter_openapi_python_generated/models/get_tweet_detail200_response.py +8 -17
  95. twitter_openapi_python_generated/models/get_tweet_result_by_rest_id200_response.py +8 -17
  96. twitter_openapi_python_generated/models/get_user_by_rest_id200_response.py +8 -17
  97. twitter_openapi_python_generated/models/get_user_highlights_tweets200_response.py +8 -17
  98. twitter_openapi_python_generated/models/get_users_by_rest_ids200_response.py +8 -17
  99. twitter_openapi_python_generated/models/highlight.py +96 -0
  100. twitter_openapi_python_generated/models/home_timeline_home.py +10 -11
  101. twitter_openapi_python_generated/models/home_timeline_response_data.py +10 -11
  102. twitter_openapi_python_generated/models/instruction_type.py +1 -9
  103. twitter_openapi_python_generated/models/instruction_union.py +8 -17
  104. twitter_openapi_python_generated/models/item_content_union.py +8 -17
  105. twitter_openapi_python_generated/models/item_result.py +10 -12
  106. twitter_openapi_python_generated/models/list_latest_tweets_timeline_response.py +10 -11
  107. twitter_openapi_python_generated/models/list_tweets_timeline.py +10 -11
  108. twitter_openapi_python_generated/models/list_tweets_timeline_data.py +10 -11
  109. twitter_openapi_python_generated/models/list_tweets_timeline_list.py +10 -11
  110. twitter_openapi_python_generated/models/location.py +9 -10
  111. twitter_openapi_python_generated/models/media.py +52 -16
  112. twitter_openapi_python_generated/models/media_extended.py +43 -19
  113. twitter_openapi_python_generated/models/media_original_info.py +10 -11
  114. twitter_openapi_python_generated/models/media_original_info_focus_rect.py +9 -10
  115. twitter_openapi_python_generated/models/media_size.py +10 -11
  116. twitter_openapi_python_generated/models/media_sizes.py +13 -14
  117. twitter_openapi_python_generated/models/media_stats.py +9 -11
  118. twitter_openapi_python_generated/models/media_video_info.py +10 -11
  119. twitter_openapi_python_generated/models/media_video_info_variant.py +9 -10
  120. twitter_openapi_python_generated/models/module_entry.py +11 -13
  121. twitter_openapi_python_generated/models/module_item.py +10 -12
  122. twitter_openapi_python_generated/models/note_tweet.py +10 -11
  123. twitter_openapi_python_generated/models/note_tweet_result.py +10 -11
  124. twitter_openapi_python_generated/models/note_tweet_result_data.py +12 -14
  125. twitter_openapi_python_generated/models/note_tweet_result_media.py +10 -11
  126. twitter_openapi_python_generated/models/note_tweet_result_media_inline_media.py +9 -11
  127. twitter_openapi_python_generated/models/note_tweet_result_rich_text.py +10 -11
  128. twitter_openapi_python_generated/models/note_tweet_result_rich_text_tag.py +10 -11
  129. twitter_openapi_python_generated/models/one_factor_login_eligibility.py +9 -11
  130. twitter_openapi_python_generated/models/other200_response.py +8 -17
  131. twitter_openapi_python_generated/models/other_response.py +10 -12
  132. twitter_openapi_python_generated/models/post_create_retweet200_response.py +8 -17
  133. twitter_openapi_python_generated/models/post_create_retweet_request.py +10 -12
  134. twitter_openapi_python_generated/models/post_create_retweet_request_variables.py +9 -10
  135. twitter_openapi_python_generated/models/post_create_tweet200_response.py +8 -17
  136. twitter_openapi_python_generated/models/post_create_tweet_request.py +12 -14
  137. twitter_openapi_python_generated/models/post_create_tweet_request_features.py +15 -12
  138. twitter_openapi_python_generated/models/post_create_tweet_request_variables.py +11 -12
  139. twitter_openapi_python_generated/models/post_create_tweet_request_variables_media.py +10 -11
  140. twitter_openapi_python_generated/models/post_create_tweet_request_variables_media_media_entities_inner.py +9 -10
  141. twitter_openapi_python_generated/models/post_create_tweet_request_variables_reply.py +9 -10
  142. twitter_openapi_python_generated/models/post_delete_retweet200_response.py +8 -17
  143. twitter_openapi_python_generated/models/post_delete_retweet_request.py +10 -12
  144. twitter_openapi_python_generated/models/post_delete_retweet_request_variables.py +9 -10
  145. twitter_openapi_python_generated/models/post_delete_tweet200_response.py +8 -17
  146. twitter_openapi_python_generated/models/post_delete_tweet_request.py +10 -12
  147. twitter_openapi_python_generated/models/post_favorite_tweet200_response.py +8 -17
  148. twitter_openapi_python_generated/models/post_favorite_tweet_request.py +10 -12
  149. twitter_openapi_python_generated/models/post_unfavorite_tweet200_response.py +8 -17
  150. twitter_openapi_python_generated/models/post_unfavorite_tweet_request.py +10 -12
  151. twitter_openapi_python_generated/models/primary_community_topic.py +98 -0
  152. twitter_openapi_python_generated/models/profile_response.py +10 -11
  153. twitter_openapi_python_generated/models/profile_response_data.py +10 -11
  154. twitter_openapi_python_generated/models/quoted_ref_result.py +92 -0
  155. twitter_openapi_python_generated/models/quoted_ref_result_data.py +99 -0
  156. twitter_openapi_python_generated/models/quoted_status_permalink.py +92 -0
  157. twitter_openapi_python_generated/models/retweet.py +10 -12
  158. twitter_openapi_python_generated/models/retweet_legacy.py +9 -10
  159. twitter_openapi_python_generated/models/search_by_raw_query.py +10 -11
  160. twitter_openapi_python_generated/models/search_timeline.py +10 -11
  161. twitter_openapi_python_generated/models/search_timeline_data.py +10 -11
  162. twitter_openapi_python_generated/models/search_timeline_response.py +10 -11
  163. twitter_openapi_python_generated/models/self_thread.py +9 -11
  164. twitter_openapi_python_generated/models/session.py +13 -15
  165. twitter_openapi_python_generated/models/social_context_landing_url.py +106 -0
  166. twitter_openapi_python_generated/models/social_context_union.py +156 -0
  167. twitter_openapi_python_generated/models/social_context_union_type.py +38 -0
  168. twitter_openapi_python_generated/models/super_follows_reply_user_result.py +92 -0
  169. twitter_openapi_python_generated/models/super_follows_reply_user_result_data.py +95 -0
  170. twitter_openapi_python_generated/models/super_follows_reply_user_result_legacy.py +88 -0
  171. twitter_openapi_python_generated/models/text.py +10 -11
  172. twitter_openapi_python_generated/models/text_entity.py +10 -12
  173. twitter_openapi_python_generated/models/text_entity_ref.py +11 -13
  174. twitter_openapi_python_generated/models/text_highlight.py +90 -0
  175. twitter_openapi_python_generated/models/timeline.py +10 -12
  176. twitter_openapi_python_generated/models/timeline_add_entries.py +10 -11
  177. twitter_openapi_python_generated/models/timeline_add_entry.py +10 -12
  178. twitter_openapi_python_generated/models/timeline_add_to_module.py +10 -12
  179. twitter_openapi_python_generated/models/timeline_clear_cache.py +9 -10
  180. twitter_openapi_python_generated/models/timeline_community.py +10 -12
  181. twitter_openapi_python_generated/models/timeline_cover_behavior.py +10 -11
  182. twitter_openapi_python_generated/models/timeline_general_context.py +109 -0
  183. twitter_openapi_python_generated/models/timeline_half_cover.py +15 -17
  184. twitter_openapi_python_generated/models/timeline_message_prompt.py +10 -12
  185. twitter_openapi_python_generated/models/timeline_pin_entry.py +10 -11
  186. twitter_openapi_python_generated/models/timeline_prompt.py +10 -12
  187. twitter_openapi_python_generated/models/timeline_replace_entry.py +10 -11
  188. twitter_openapi_python_generated/models/timeline_response.py +10 -11
  189. twitter_openapi_python_generated/models/timeline_show_alert.py +13 -15
  190. twitter_openapi_python_generated/models/timeline_show_alert_rich_text.py +9 -10
  191. twitter_openapi_python_generated/models/timeline_show_cover.py +11 -13
  192. twitter_openapi_python_generated/models/timeline_terminate_timeline.py +10 -11
  193. twitter_openapi_python_generated/models/timeline_timeline_cursor.py +18 -12
  194. twitter_openapi_python_generated/models/timeline_timeline_item.py +11 -13
  195. twitter_openapi_python_generated/models/timeline_timeline_module.py +21 -21
  196. twitter_openapi_python_generated/models/timeline_topic_context.py +107 -0
  197. twitter_openapi_python_generated/models/timeline_tweet.py +21 -17
  198. twitter_openapi_python_generated/models/timeline_user.py +16 -18
  199. twitter_openapi_python_generated/models/timeline_v2.py +10 -11
  200. twitter_openapi_python_generated/models/topic_context.py +100 -0
  201. twitter_openapi_python_generated/models/tracing.py +9 -11
  202. twitter_openapi_python_generated/models/tweet.py +51 -21
  203. twitter_openapi_python_generated/models/tweet_card.py +10 -11
  204. twitter_openapi_python_generated/models/tweet_card_legacy.py +28 -13
  205. twitter_openapi_python_generated/models/tweet_card_legacy_binding_value.py +10 -11
  206. twitter_openapi_python_generated/models/tweet_card_legacy_binding_value_data.py +25 -12
  207. twitter_openapi_python_generated/models/tweet_card_legacy_binding_value_data_image.py +94 -0
  208. twitter_openapi_python_generated/models/tweet_card_platform.py +98 -0
  209. twitter_openapi_python_generated/models/tweet_card_platform_audience.py +95 -0
  210. twitter_openapi_python_generated/models/tweet_card_platform_data.py +92 -0
  211. twitter_openapi_python_generated/models/tweet_card_platform_device.py +98 -0
  212. twitter_openapi_python_generated/models/tweet_detail_response.py +10 -11
  213. twitter_openapi_python_generated/models/tweet_detail_response_data.py +10 -11
  214. twitter_openapi_python_generated/models/tweet_edit_control.py +10 -12
  215. twitter_openapi_python_generated/models/tweet_edit_control_initial.py +9 -11
  216. twitter_openapi_python_generated/models/tweet_edit_prespective.py +9 -10
  217. twitter_openapi_python_generated/models/tweet_favoriters_response.py +10 -11
  218. twitter_openapi_python_generated/models/tweet_favoriters_response_data.py +10 -11
  219. twitter_openapi_python_generated/models/tweet_interstitial.py +110 -0
  220. twitter_openapi_python_generated/models/tweet_interstitial_reveal_text.py +100 -0
  221. twitter_openapi_python_generated/models/tweet_interstitial_text.py +100 -0
  222. twitter_openapi_python_generated/models/tweet_interstitial_text_entity.py +96 -0
  223. twitter_openapi_python_generated/models/tweet_interstitial_text_entity_ref.py +106 -0
  224. twitter_openapi_python_generated/models/tweet_legacy.py +80 -16
  225. twitter_openapi_python_generated/models/tweet_legacy_scopes.py +88 -0
  226. twitter_openapi_python_generated/models/tweet_previous_counts.py +96 -0
  227. twitter_openapi_python_generated/models/tweet_result_by_rest_id_data.py +10 -12
  228. twitter_openapi_python_generated/models/tweet_result_by_rest_id_response.py +10 -11
  229. twitter_openapi_python_generated/models/tweet_retweeters_response.py +10 -11
  230. twitter_openapi_python_generated/models/tweet_retweeters_response_data.py +10 -11
  231. twitter_openapi_python_generated/models/tweet_tombstone.py +10 -12
  232. twitter_openapi_python_generated/models/tweet_union.py +8 -17
  233. twitter_openapi_python_generated/models/tweet_view.py +10 -12
  234. twitter_openapi_python_generated/models/tweet_with_visibility_results.py +20 -14
  235. twitter_openapi_python_generated/models/type_name.py +9 -9
  236. twitter_openapi_python_generated/models/unfavorite_tweet.py +9 -10
  237. twitter_openapi_python_generated/models/unfavorite_tweet_response_data.py +10 -11
  238. twitter_openapi_python_generated/models/unified_card.py +95 -0
  239. twitter_openapi_python_generated/models/url.py +9 -10
  240. twitter_openapi_python_generated/models/urt_endpoint_options.py +98 -0
  241. twitter_openapi_python_generated/models/urt_endpoint_request_params.py +90 -0
  242. twitter_openapi_python_generated/models/user.py +45 -14
  243. twitter_openapi_python_generated/models/user_features.py +9 -10
  244. twitter_openapi_python_generated/models/user_highlights_info.py +90 -0
  245. twitter_openapi_python_generated/models/user_highlights_tweets_data.py +10 -11
  246. twitter_openapi_python_generated/models/user_highlights_tweets_response.py +10 -11
  247. twitter_openapi_python_generated/models/user_highlights_tweets_result.py +10 -12
  248. twitter_openapi_python_generated/models/user_highlights_tweets_timeline.py +10 -11
  249. twitter_openapi_python_generated/models/user_highlights_tweets_user.py +10 -11
  250. twitter_openapi_python_generated/models/user_legacy.py +25 -13
  251. twitter_openapi_python_generated/models/user_professional.py +115 -0
  252. twitter_openapi_python_generated/models/user_professional_category.py +92 -0
  253. twitter_openapi_python_generated/models/user_response.py +10 -11
  254. twitter_openapi_python_generated/models/user_response_data.py +10 -11
  255. twitter_openapi_python_generated/models/user_result_by_screen_name.py +10 -12
  256. twitter_openapi_python_generated/models/user_result_by_screen_name_legacy.py +9 -10
  257. twitter_openapi_python_generated/models/user_result_by_screen_name_result.py +10 -12
  258. twitter_openapi_python_generated/models/user_result_core.py +10 -11
  259. twitter_openapi_python_generated/models/user_results.py +10 -11
  260. twitter_openapi_python_generated/models/user_tweets_data.py +10 -11
  261. twitter_openapi_python_generated/models/user_tweets_response.py +10 -11
  262. twitter_openapi_python_generated/models/user_tweets_result.py +10 -12
  263. twitter_openapi_python_generated/models/user_tweets_user.py +10 -11
  264. twitter_openapi_python_generated/models/user_unavailable.py +9 -11
  265. twitter_openapi_python_generated/models/user_union.py +8 -17
  266. twitter_openapi_python_generated/models/user_value.py +96 -0
  267. twitter_openapi_python_generated/models/user_verification_info.py +94 -0
  268. twitter_openapi_python_generated/models/user_verification_info_reason.py +104 -0
  269. twitter_openapi_python_generated/models/user_verification_info_reason_description.py +98 -0
  270. twitter_openapi_python_generated/models/user_verification_info_reason_description_entities.py +96 -0
  271. twitter_openapi_python_generated/models/user_verification_info_reason_description_entities_ref.py +97 -0
  272. twitter_openapi_python_generated/models/users_response.py +10 -11
  273. twitter_openapi_python_generated/models/users_response_data.py +10 -11
  274. twitter_openapi_python_generated/rest.py +23 -35
  275. {twitter_openapi_python_generated-0.0.9.dist-info → twitter_openapi_python_generated-0.0.11.dist-info}/METADATA +1 -1
  276. twitter_openapi_python_generated-0.0.11.dist-info/RECORD +282 -0
  277. twitter_openapi_python_generated-0.0.9.dist-info/RECORD +0 -225
  278. {twitter_openapi_python_generated-0.0.9.dist-info → twitter_openapi_python_generated-0.0.11.dist-info}/LICENSE +0 -0
  279. {twitter_openapi_python_generated-0.0.9.dist-info → twitter_openapi_python_generated-0.0.11.dist-info}/LICENSE.AGPL +0 -0
  280. {twitter_openapi_python_generated-0.0.9.dist-info → twitter_openapi_python_generated-0.0.11.dist-info}/WHEEL +0 -0
  281. {twitter_openapi_python_generated-0.0.9.dist-info → twitter_openapi_python_generated-0.0.11.dist-info}/top_level.txt +0 -0
@@ -18,14 +18,11 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
22
- from typing import Any, ClassVar, Dict, List
23
21
  from pydantic import BaseModel
22
+ from typing import Any, ClassVar, Dict, List
24
23
  from twitter_openapi_python_generated.models.list_tweets_timeline_data import ListTweetsTimelineData
25
- try:
26
- from typing import Self
27
- except ImportError:
28
- from typing_extensions import Self
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
29
26
 
30
27
  class ListLatestTweetsTimelineResponse(BaseModel):
31
28
  """
@@ -51,7 +48,7 @@ class ListLatestTweetsTimelineResponse(BaseModel):
51
48
  return json.dumps(self.to_dict())
52
49
 
53
50
  @classmethod
54
- def from_json(cls, json_str: str) -> Self:
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
52
  """Create an instance of ListLatestTweetsTimelineResponse from a JSON string"""
56
53
  return cls.from_dict(json.loads(json_str))
57
54
 
@@ -65,10 +62,12 @@ class ListLatestTweetsTimelineResponse(BaseModel):
65
62
  were set at model initialization. Other fields with value `None`
66
63
  are ignored.
67
64
  """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
68
  _dict = self.model_dump(
69
69
  by_alias=True,
70
- exclude={
71
- },
70
+ exclude=excluded_fields,
72
71
  exclude_none=True,
73
72
  )
74
73
  # override the default output from pydantic by calling `to_dict()` of data
@@ -77,7 +76,7 @@ class ListLatestTweetsTimelineResponse(BaseModel):
77
76
  return _dict
78
77
 
79
78
  @classmethod
80
- def from_dict(cls, obj: Dict) -> Self:
79
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
80
  """Create an instance of ListLatestTweetsTimelineResponse from a dict"""
82
81
  if obj is None:
83
82
  return None
@@ -86,7 +85,7 @@ class ListLatestTweetsTimelineResponse(BaseModel):
86
85
  return cls.model_validate(obj)
87
86
 
88
87
  _obj = cls.model_validate({
89
- "data": ListTweetsTimelineData.from_dict(obj.get("data")) if obj.get("data") is not None else None
88
+ "data": ListTweetsTimelineData.from_dict(obj["data"]) if obj.get("data") is not None else None
90
89
  })
91
90
  return _obj
92
91
 
@@ -18,14 +18,11 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
22
- from typing import Any, ClassVar, Dict, List, Optional
23
21
  from pydantic import BaseModel
22
+ from typing import Any, ClassVar, Dict, List, Optional
24
23
  from twitter_openapi_python_generated.models.timeline import Timeline
25
- try:
26
- from typing import Self
27
- except ImportError:
28
- from typing_extensions import Self
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
29
26
 
30
27
  class ListTweetsTimeline(BaseModel):
31
28
  """
@@ -51,7 +48,7 @@ class ListTweetsTimeline(BaseModel):
51
48
  return json.dumps(self.to_dict())
52
49
 
53
50
  @classmethod
54
- def from_json(cls, json_str: str) -> Self:
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
52
  """Create an instance of ListTweetsTimeline from a JSON string"""
56
53
  return cls.from_dict(json.loads(json_str))
57
54
 
@@ -65,10 +62,12 @@ class ListTweetsTimeline(BaseModel):
65
62
  were set at model initialization. Other fields with value `None`
66
63
  are ignored.
67
64
  """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
68
  _dict = self.model_dump(
69
69
  by_alias=True,
70
- exclude={
71
- },
70
+ exclude=excluded_fields,
72
71
  exclude_none=True,
73
72
  )
74
73
  # override the default output from pydantic by calling `to_dict()` of timeline
@@ -77,7 +76,7 @@ class ListTweetsTimeline(BaseModel):
77
76
  return _dict
78
77
 
79
78
  @classmethod
80
- def from_dict(cls, obj: Dict) -> Self:
79
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
80
  """Create an instance of ListTweetsTimeline from a dict"""
82
81
  if obj is None:
83
82
  return None
@@ -86,7 +85,7 @@ class ListTweetsTimeline(BaseModel):
86
85
  return cls.model_validate(obj)
87
86
 
88
87
  _obj = cls.model_validate({
89
- "timeline": Timeline.from_dict(obj.get("timeline")) if obj.get("timeline") is not None else None
88
+ "timeline": Timeline.from_dict(obj["timeline"]) if obj.get("timeline") is not None else None
90
89
  })
91
90
  return _obj
92
91
 
@@ -18,14 +18,11 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
22
- from typing import Any, ClassVar, Dict, List
23
21
  from pydantic import BaseModel
22
+ from typing import Any, ClassVar, Dict, List
24
23
  from twitter_openapi_python_generated.models.list_tweets_timeline_list import ListTweetsTimelineList
25
- try:
26
- from typing import Self
27
- except ImportError:
28
- from typing_extensions import Self
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
29
26
 
30
27
  class ListTweetsTimelineData(BaseModel):
31
28
  """
@@ -51,7 +48,7 @@ class ListTweetsTimelineData(BaseModel):
51
48
  return json.dumps(self.to_dict())
52
49
 
53
50
  @classmethod
54
- def from_json(cls, json_str: str) -> Self:
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
52
  """Create an instance of ListTweetsTimelineData from a JSON string"""
56
53
  return cls.from_dict(json.loads(json_str))
57
54
 
@@ -65,10 +62,12 @@ class ListTweetsTimelineData(BaseModel):
65
62
  were set at model initialization. Other fields with value `None`
66
63
  are ignored.
67
64
  """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
68
  _dict = self.model_dump(
69
69
  by_alias=True,
70
- exclude={
71
- },
70
+ exclude=excluded_fields,
72
71
  exclude_none=True,
73
72
  )
74
73
  # override the default output from pydantic by calling `to_dict()` of list
@@ -77,7 +76,7 @@ class ListTweetsTimelineData(BaseModel):
77
76
  return _dict
78
77
 
79
78
  @classmethod
80
- def from_dict(cls, obj: Dict) -> Self:
79
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
80
  """Create an instance of ListTweetsTimelineData from a dict"""
82
81
  if obj is None:
83
82
  return None
@@ -86,7 +85,7 @@ class ListTweetsTimelineData(BaseModel):
86
85
  return cls.model_validate(obj)
87
86
 
88
87
  _obj = cls.model_validate({
89
- "list": ListTweetsTimelineList.from_dict(obj.get("list")) if obj.get("list") is not None else None
88
+ "list": ListTweetsTimelineList.from_dict(obj["list"]) if obj.get("list") is not None else None
90
89
  })
91
90
  return _obj
92
91
 
@@ -18,14 +18,11 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
22
- from typing import Any, ClassVar, Dict, List
23
21
  from pydantic import BaseModel
22
+ from typing import Any, ClassVar, Dict, List
24
23
  from twitter_openapi_python_generated.models.list_tweets_timeline import ListTweetsTimeline
25
- try:
26
- from typing import Self
27
- except ImportError:
28
- from typing_extensions import Self
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
29
26
 
30
27
  class ListTweetsTimelineList(BaseModel):
31
28
  """
@@ -51,7 +48,7 @@ class ListTweetsTimelineList(BaseModel):
51
48
  return json.dumps(self.to_dict())
52
49
 
53
50
  @classmethod
54
- def from_json(cls, json_str: str) -> Self:
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
52
  """Create an instance of ListTweetsTimelineList from a JSON string"""
56
53
  return cls.from_dict(json.loads(json_str))
57
54
 
@@ -65,10 +62,12 @@ class ListTweetsTimelineList(BaseModel):
65
62
  were set at model initialization. Other fields with value `None`
66
63
  are ignored.
67
64
  """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
68
  _dict = self.model_dump(
69
69
  by_alias=True,
70
- exclude={
71
- },
70
+ exclude=excluded_fields,
72
71
  exclude_none=True,
73
72
  )
74
73
  # override the default output from pydantic by calling `to_dict()` of tweets_timeline
@@ -77,7 +76,7 @@ class ListTweetsTimelineList(BaseModel):
77
76
  return _dict
78
77
 
79
78
  @classmethod
80
- def from_dict(cls, obj: Dict) -> Self:
79
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
80
  """Create an instance of ListTweetsTimelineList from a dict"""
82
81
  if obj is None:
83
82
  return None
@@ -86,7 +85,7 @@ class ListTweetsTimelineList(BaseModel):
86
85
  return cls.model_validate(obj)
87
86
 
88
87
  _obj = cls.model_validate({
89
- "tweets_timeline": ListTweetsTimeline.from_dict(obj.get("tweets_timeline")) if obj.get("tweets_timeline") is not None else None
88
+ "tweets_timeline": ListTweetsTimeline.from_dict(obj["tweets_timeline"]) if obj.get("tweets_timeline") is not None else None
90
89
  })
91
90
  return _obj
92
91
 
@@ -18,13 +18,10 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
22
- from typing import Any, ClassVar, Dict, List
23
21
  from pydantic import BaseModel, StrictInt
24
- try:
25
- from typing import Self
26
- except ImportError:
27
- from typing_extensions import Self
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
28
25
 
29
26
  class Location(BaseModel):
30
27
  """
@@ -51,7 +48,7 @@ class Location(BaseModel):
51
48
  return json.dumps(self.to_dict())
52
49
 
53
50
  @classmethod
54
- def from_json(cls, json_str: str) -> Self:
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
52
  """Create an instance of Location from a JSON string"""
56
53
  return cls.from_dict(json.loads(json_str))
57
54
 
@@ -65,16 +62,18 @@ class Location(BaseModel):
65
62
  were set at model initialization. Other fields with value `None`
66
63
  are ignored.
67
64
  """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
68
  _dict = self.model_dump(
69
69
  by_alias=True,
70
- exclude={
71
- },
70
+ exclude=excluded_fields,
72
71
  exclude_none=True,
73
72
  )
74
73
  return _dict
75
74
 
76
75
  @classmethod
77
- def from_dict(cls, obj: Dict) -> Self:
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
78
77
  """Create an instance of Location from a dict"""
79
78
  if obj is None:
80
79
  return None
@@ -18,33 +18,37 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
21
+ from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator
22
22
  from typing import Any, ClassVar, Dict, List, Optional
23
- from pydantic import BaseModel, StrictInt, StrictStr, field_validator
24
- from pydantic import Field
25
23
  from typing_extensions import Annotated
24
+ from twitter_openapi_python_generated.models.ext_media_availability import ExtMediaAvailability
26
25
  from twitter_openapi_python_generated.models.media_original_info import MediaOriginalInfo
27
26
  from twitter_openapi_python_generated.models.media_sizes import MediaSizes
28
- try:
29
- from typing import Self
30
- except ImportError:
31
- from typing_extensions import Self
27
+ from typing import Optional, Set
28
+ from typing_extensions import Self
32
29
 
33
30
  class Media(BaseModel):
34
31
  """
35
32
  Media
36
33
  """ # noqa: E501
34
+ additional_media_info: Optional[Dict[str, Any]] = None
37
35
  display_url: StrictStr
38
36
  expanded_url: StrictStr
37
+ ext_alt_text: Optional[StrictStr] = None
38
+ ext_media_availability: ExtMediaAvailability
39
39
  features: Optional[Dict[str, Any]] = None
40
40
  id_str: Annotated[str, Field(strict=True)]
41
41
  indices: List[StrictInt]
42
+ media_key: StrictStr
42
43
  media_url_https: StrictStr
43
44
  original_info: MediaOriginalInfo
44
45
  sizes: MediaSizes
46
+ source_status_id_str: Optional[Annotated[str, Field(strict=True)]] = None
47
+ source_user_id_str: Optional[Annotated[str, Field(strict=True)]] = None
45
48
  type: StrictStr
46
49
  url: StrictStr
47
- __properties: ClassVar[List[str]] = ["display_url", "expanded_url", "features", "id_str", "indices", "media_url_https", "original_info", "sizes", "type", "url"]
50
+ video_info: Optional[Dict[str, Any]] = None
51
+ __properties: ClassVar[List[str]] = ["additional_media_info", "display_url", "expanded_url", "ext_alt_text", "ext_media_availability", "features", "id_str", "indices", "media_key", "media_url_https", "original_info", "sizes", "source_status_id_str", "source_user_id_str", "type", "url", "video_info"]
48
52
 
49
53
  @field_validator('id_str')
50
54
  def id_str_validate_regular_expression(cls, value):
@@ -53,10 +57,30 @@ class Media(BaseModel):
53
57
  raise ValueError(r"must validate the regular expression /^[0-9]+$/")
54
58
  return value
55
59
 
60
+ @field_validator('source_status_id_str')
61
+ def source_status_id_str_validate_regular_expression(cls, value):
62
+ """Validates the regular expression"""
63
+ if value is None:
64
+ return value
65
+
66
+ if not re.match(r"^[0-9]+$", value):
67
+ raise ValueError(r"must validate the regular expression /^[0-9]+$/")
68
+ return value
69
+
70
+ @field_validator('source_user_id_str')
71
+ def source_user_id_str_validate_regular_expression(cls, value):
72
+ """Validates the regular expression"""
73
+ if value is None:
74
+ return value
75
+
76
+ if not re.match(r"^[0-9]+$", value):
77
+ raise ValueError(r"must validate the regular expression /^[0-9]+$/")
78
+ return value
79
+
56
80
  @field_validator('type')
57
81
  def type_validate_enum(cls, value):
58
82
  """Validates the enum"""
59
- if value not in ('photo', 'video', 'animated_gif'):
83
+ if value not in set(['photo', 'video', 'animated_gif']):
60
84
  raise ValueError("must be one of enum values ('photo', 'video', 'animated_gif')")
61
85
  return value
62
86
 
@@ -77,7 +101,7 @@ class Media(BaseModel):
77
101
  return json.dumps(self.to_dict())
78
102
 
79
103
  @classmethod
80
- def from_json(cls, json_str: str) -> Self:
104
+ def from_json(cls, json_str: str) -> Optional[Self]:
81
105
  """Create an instance of Media from a JSON string"""
82
106
  return cls.from_dict(json.loads(json_str))
83
107
 
@@ -91,12 +115,17 @@ class Media(BaseModel):
91
115
  were set at model initialization. Other fields with value `None`
92
116
  are ignored.
93
117
  """
118
+ excluded_fields: Set[str] = set([
119
+ ])
120
+
94
121
  _dict = self.model_dump(
95
122
  by_alias=True,
96
- exclude={
97
- },
123
+ exclude=excluded_fields,
98
124
  exclude_none=True,
99
125
  )
126
+ # override the default output from pydantic by calling `to_dict()` of ext_media_availability
127
+ if self.ext_media_availability:
128
+ _dict['ext_media_availability'] = self.ext_media_availability.to_dict()
100
129
  # override the default output from pydantic by calling `to_dict()` of original_info
101
130
  if self.original_info:
102
131
  _dict['original_info'] = self.original_info.to_dict()
@@ -106,7 +135,7 @@ class Media(BaseModel):
106
135
  return _dict
107
136
 
108
137
  @classmethod
109
- def from_dict(cls, obj: Dict) -> Self:
138
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
110
139
  """Create an instance of Media from a dict"""
111
140
  if obj is None:
112
141
  return None
@@ -115,16 +144,23 @@ class Media(BaseModel):
115
144
  return cls.model_validate(obj)
116
145
 
117
146
  _obj = cls.model_validate({
147
+ "additional_media_info": obj.get("additional_media_info"),
118
148
  "display_url": obj.get("display_url"),
119
149
  "expanded_url": obj.get("expanded_url"),
150
+ "ext_alt_text": obj.get("ext_alt_text"),
151
+ "ext_media_availability": ExtMediaAvailability.from_dict(obj["ext_media_availability"]) if obj.get("ext_media_availability") is not None else None,
120
152
  "features": obj.get("features"),
121
153
  "id_str": obj.get("id_str"),
122
154
  "indices": obj.get("indices"),
155
+ "media_key": obj.get("media_key"),
123
156
  "media_url_https": obj.get("media_url_https"),
124
- "original_info": MediaOriginalInfo.from_dict(obj.get("original_info")) if obj.get("original_info") is not None else None,
125
- "sizes": MediaSizes.from_dict(obj.get("sizes")) if obj.get("sizes") is not None else None,
157
+ "original_info": MediaOriginalInfo.from_dict(obj["original_info"]) if obj.get("original_info") is not None else None,
158
+ "sizes": MediaSizes.from_dict(obj["sizes"]) if obj.get("sizes") is not None else None,
159
+ "source_status_id_str": obj.get("source_status_id_str"),
160
+ "source_user_id_str": obj.get("source_user_id_str"),
126
161
  "type": obj.get("type"),
127
- "url": obj.get("url")
162
+ "url": obj.get("url"),
163
+ "video_info": obj.get("video_info")
128
164
  })
129
165
  return _obj
130
166
 
@@ -18,10 +18,8 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
21
+ from pydantic import BaseModel, Field, StrictInt, StrictStr, field_validator
22
22
  from typing import Any, ClassVar, Dict, List, Optional
23
- from pydantic import BaseModel, StrictInt, StrictStr, field_validator
24
- from pydantic import Field
25
23
  from typing_extensions import Annotated
26
24
  from twitter_openapi_python_generated.models.additional_media_info import AdditionalMediaInfo
27
25
  from twitter_openapi_python_generated.models.ext_media_availability import ExtMediaAvailability
@@ -29,10 +27,8 @@ from twitter_openapi_python_generated.models.media_original_info import MediaOri
29
27
  from twitter_openapi_python_generated.models.media_sizes import MediaSizes
30
28
  from twitter_openapi_python_generated.models.media_stats import MediaStats
31
29
  from twitter_openapi_python_generated.models.media_video_info import MediaVideoInfo
32
- try:
33
- from typing import Self
34
- except ImportError:
35
- from typing_extensions import Self
30
+ from typing import Optional, Set
31
+ from typing_extensions import Self
36
32
 
37
33
  class MediaExtended(BaseModel):
38
34
  """
@@ -41,6 +37,7 @@ class MediaExtended(BaseModel):
41
37
  additional_media_info: Optional[AdditionalMediaInfo] = None
42
38
  display_url: StrictStr
43
39
  expanded_url: StrictStr
40
+ ext_alt_text: Optional[StrictStr] = None
44
41
  ext_media_availability: Optional[ExtMediaAvailability] = None
45
42
  features: Optional[Dict[str, Any]] = None
46
43
  id_str: Annotated[str, Field(strict=True)]
@@ -50,10 +47,12 @@ class MediaExtended(BaseModel):
50
47
  media_url_https: StrictStr
51
48
  original_info: MediaOriginalInfo
52
49
  sizes: MediaSizes
50
+ source_status_id_str: Optional[Annotated[str, Field(strict=True)]] = None
51
+ source_user_id_str: Optional[Annotated[str, Field(strict=True)]] = None
53
52
  type: StrictStr
54
53
  url: StrictStr
55
54
  video_info: Optional[MediaVideoInfo] = None
56
- __properties: ClassVar[List[str]] = ["additional_media_info", "display_url", "expanded_url", "ext_media_availability", "features", "id_str", "indices", "mediaStats", "media_key", "media_url_https", "original_info", "sizes", "type", "url", "video_info"]
55
+ __properties: ClassVar[List[str]] = ["additional_media_info", "display_url", "expanded_url", "ext_alt_text", "ext_media_availability", "features", "id_str", "indices", "mediaStats", "media_key", "media_url_https", "original_info", "sizes", "source_status_id_str", "source_user_id_str", "type", "url", "video_info"]
57
56
 
58
57
  @field_validator('id_str')
59
58
  def id_str_validate_regular_expression(cls, value):
@@ -62,10 +61,30 @@ class MediaExtended(BaseModel):
62
61
  raise ValueError(r"must validate the regular expression /^[0-9]+$/")
63
62
  return value
64
63
 
64
+ @field_validator('source_status_id_str')
65
+ def source_status_id_str_validate_regular_expression(cls, value):
66
+ """Validates the regular expression"""
67
+ if value is None:
68
+ return value
69
+
70
+ if not re.match(r"^[0-9]+$", value):
71
+ raise ValueError(r"must validate the regular expression /^[0-9]+$/")
72
+ return value
73
+
74
+ @field_validator('source_user_id_str')
75
+ def source_user_id_str_validate_regular_expression(cls, value):
76
+ """Validates the regular expression"""
77
+ if value is None:
78
+ return value
79
+
80
+ if not re.match(r"^[0-9]+$", value):
81
+ raise ValueError(r"must validate the regular expression /^[0-9]+$/")
82
+ return value
83
+
65
84
  @field_validator('type')
66
85
  def type_validate_enum(cls, value):
67
86
  """Validates the enum"""
68
- if value not in ('photo', 'video', 'animated_gif'):
87
+ if value not in set(['photo', 'video', 'animated_gif']):
69
88
  raise ValueError("must be one of enum values ('photo', 'video', 'animated_gif')")
70
89
  return value
71
90
 
@@ -86,7 +105,7 @@ class MediaExtended(BaseModel):
86
105
  return json.dumps(self.to_dict())
87
106
 
88
107
  @classmethod
89
- def from_json(cls, json_str: str) -> Self:
108
+ def from_json(cls, json_str: str) -> Optional[Self]:
90
109
  """Create an instance of MediaExtended from a JSON string"""
91
110
  return cls.from_dict(json.loads(json_str))
92
111
 
@@ -100,10 +119,12 @@ class MediaExtended(BaseModel):
100
119
  were set at model initialization. Other fields with value `None`
101
120
  are ignored.
102
121
  """
122
+ excluded_fields: Set[str] = set([
123
+ ])
124
+
103
125
  _dict = self.model_dump(
104
126
  by_alias=True,
105
- exclude={
106
- },
127
+ exclude=excluded_fields,
107
128
  exclude_none=True,
108
129
  )
109
130
  # override the default output from pydantic by calling `to_dict()` of additional_media_info
@@ -127,7 +148,7 @@ class MediaExtended(BaseModel):
127
148
  return _dict
128
149
 
129
150
  @classmethod
130
- def from_dict(cls, obj: Dict) -> Self:
151
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
131
152
  """Create an instance of MediaExtended from a dict"""
132
153
  if obj is None:
133
154
  return None
@@ -136,21 +157,24 @@ class MediaExtended(BaseModel):
136
157
  return cls.model_validate(obj)
137
158
 
138
159
  _obj = cls.model_validate({
139
- "additional_media_info": AdditionalMediaInfo.from_dict(obj.get("additional_media_info")) if obj.get("additional_media_info") is not None else None,
160
+ "additional_media_info": AdditionalMediaInfo.from_dict(obj["additional_media_info"]) if obj.get("additional_media_info") is not None else None,
140
161
  "display_url": obj.get("display_url"),
141
162
  "expanded_url": obj.get("expanded_url"),
142
- "ext_media_availability": ExtMediaAvailability.from_dict(obj.get("ext_media_availability")) if obj.get("ext_media_availability") is not None else None,
163
+ "ext_alt_text": obj.get("ext_alt_text"),
164
+ "ext_media_availability": ExtMediaAvailability.from_dict(obj["ext_media_availability"]) if obj.get("ext_media_availability") is not None else None,
143
165
  "features": obj.get("features"),
144
166
  "id_str": obj.get("id_str"),
145
167
  "indices": obj.get("indices"),
146
- "mediaStats": MediaStats.from_dict(obj.get("mediaStats")) if obj.get("mediaStats") is not None else None,
168
+ "mediaStats": MediaStats.from_dict(obj["mediaStats"]) if obj.get("mediaStats") is not None else None,
147
169
  "media_key": obj.get("media_key"),
148
170
  "media_url_https": obj.get("media_url_https"),
149
- "original_info": MediaOriginalInfo.from_dict(obj.get("original_info")) if obj.get("original_info") is not None else None,
150
- "sizes": MediaSizes.from_dict(obj.get("sizes")) if obj.get("sizes") is not None else None,
171
+ "original_info": MediaOriginalInfo.from_dict(obj["original_info"]) if obj.get("original_info") is not None else None,
172
+ "sizes": MediaSizes.from_dict(obj["sizes"]) if obj.get("sizes") is not None else None,
173
+ "source_status_id_str": obj.get("source_status_id_str"),
174
+ "source_user_id_str": obj.get("source_user_id_str"),
151
175
  "type": obj.get("type"),
152
176
  "url": obj.get("url"),
153
- "video_info": MediaVideoInfo.from_dict(obj.get("video_info")) if obj.get("video_info") is not None else None
177
+ "video_info": MediaVideoInfo.from_dict(obj["video_info"]) if obj.get("video_info") is not None else None
154
178
  })
155
179
  return _obj
156
180
 
@@ -18,14 +18,11 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
-
22
- from typing import Any, ClassVar, Dict, List, Optional
23
21
  from pydantic import BaseModel, StrictInt
22
+ from typing import Any, ClassVar, Dict, List, Optional
24
23
  from twitter_openapi_python_generated.models.media_original_info_focus_rect import MediaOriginalInfoFocusRect
25
- try:
26
- from typing import Self
27
- except ImportError:
28
- from typing_extensions import Self
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
29
26
 
30
27
  class MediaOriginalInfo(BaseModel):
31
28
  """
@@ -53,7 +50,7 @@ class MediaOriginalInfo(BaseModel):
53
50
  return json.dumps(self.to_dict())
54
51
 
55
52
  @classmethod
56
- def from_json(cls, json_str: str) -> Self:
53
+ def from_json(cls, json_str: str) -> Optional[Self]:
57
54
  """Create an instance of MediaOriginalInfo from a JSON string"""
58
55
  return cls.from_dict(json.loads(json_str))
59
56
 
@@ -67,10 +64,12 @@ class MediaOriginalInfo(BaseModel):
67
64
  were set at model initialization. Other fields with value `None`
68
65
  are ignored.
69
66
  """
67
+ excluded_fields: Set[str] = set([
68
+ ])
69
+
70
70
  _dict = self.model_dump(
71
71
  by_alias=True,
72
- exclude={
73
- },
72
+ exclude=excluded_fields,
74
73
  exclude_none=True,
75
74
  )
76
75
  # override the default output from pydantic by calling `to_dict()` of each item in focus_rects (list)
@@ -83,7 +82,7 @@ class MediaOriginalInfo(BaseModel):
83
82
  return _dict
84
83
 
85
84
  @classmethod
86
- def from_dict(cls, obj: Dict) -> Self:
85
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
87
86
  """Create an instance of MediaOriginalInfo from a dict"""
88
87
  if obj is None:
89
88
  return None
@@ -92,7 +91,7 @@ class MediaOriginalInfo(BaseModel):
92
91
  return cls.model_validate(obj)
93
92
 
94
93
  _obj = cls.model_validate({
95
- "focus_rects": [MediaOriginalInfoFocusRect.from_dict(_item) for _item in obj.get("focus_rects")] if obj.get("focus_rects") is not None else None,
94
+ "focus_rects": [MediaOriginalInfoFocusRect.from_dict(_item) for _item in obj["focus_rects"]] if obj.get("focus_rects") is not None else None,
96
95
  "height": obj.get("height"),
97
96
  "width": obj.get("width")
98
97
  })