twitter-openapi-python-generated 0.0.34__py3-none-any.whl → 0.0.35__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 (227) hide show
  1. twitter_openapi_python_generated/__init__.py +165 -1
  2. twitter_openapi_python_generated/api/post_api.py +2079 -203
  3. twitter_openapi_python_generated/api/tweet_api.py +3207 -231
  4. twitter_openapi_python_generated/api/user_api.py +969 -66
  5. twitter_openapi_python_generated/api/user_list_api.py +1907 -0
  6. twitter_openapi_python_generated/api_client.py +47 -9
  7. twitter_openapi_python_generated/configuration.py +55 -6
  8. twitter_openapi_python_generated/models/__init__.py +82 -0
  9. twitter_openapi_python_generated/models/additional_media_info.py +3 -1
  10. twitter_openapi_python_generated/models/article_cover_media.py +2 -5
  11. twitter_openapi_python_generated/models/article_cover_media_color_info.py +1 -2
  12. twitter_openapi_python_generated/models/article_result.py +3 -7
  13. twitter_openapi_python_generated/models/badge_counts.py +97 -0
  14. twitter_openapi_python_generated/models/birdwatch_entity_ref.py +3 -1
  15. twitter_openapi_python_generated/models/birdwatch_pivot_footer.py +1 -2
  16. twitter_openapi_python_generated/models/birdwatch_pivot_note.py +2 -5
  17. twitter_openapi_python_generated/models/birdwatch_pivot_subtitle.py +1 -2
  18. twitter_openapi_python_generated/models/bookmarks_response.py +1 -2
  19. twitter_openapi_python_generated/models/cashtag_attachment.py +89 -0
  20. twitter_openapi_python_generated/models/community.py +4 -9
  21. twitter_openapi_python_generated/models/community_about_timeline_response.py +1 -2
  22. twitter_openapi_python_generated/models/community_discovery_timeline_response.py +102 -0
  23. twitter_openapi_python_generated/models/community_discovery_timeline_response_data.py +93 -0
  24. twitter_openapi_python_generated/models/community_discovery_timeline_viewer.py +93 -0
  25. twitter_openapi_python_generated/models/community_join_action_result_union.py +3 -2
  26. twitter_openapi_python_generated/models/community_media_timeline_response.py +1 -2
  27. twitter_openapi_python_generated/models/community_relationship.py +2 -5
  28. twitter_openapi_python_generated/models/community_rule.py +2 -5
  29. twitter_openapi_python_generated/models/community_tweets_timeline_response.py +1 -2
  30. twitter_openapi_python_generated/models/community_union.py +3 -2
  31. twitter_openapi_python_generated/models/connect_tab_timeline_response.py +102 -0
  32. twitter_openapi_python_generated/models/connect_tab_timeline_response_data.py +93 -0
  33. twitter_openapi_python_generated/models/content_disclosure_ai_generated_disclosure.py +2 -2
  34. twitter_openapi_python_generated/models/content_item_type.py +3 -0
  35. twitter_openapi_python_generated/models/content_union.py +3 -2
  36. twitter_openapi_python_generated/models/cover_cta.py +1 -2
  37. twitter_openapi_python_generated/models/create_bookmark_response.py +1 -2
  38. twitter_openapi_python_generated/models/create_draft_tweet_response.py +102 -0
  39. twitter_openapi_python_generated/models/create_draft_tweet_response_data.py +93 -0
  40. twitter_openapi_python_generated/models/create_draft_tweet_response_tweet.py +97 -0
  41. twitter_openapi_python_generated/models/create_retweet_response.py +1 -2
  42. twitter_openapi_python_generated/models/create_tweet_response.py +1 -2
  43. twitter_openapi_python_generated/models/delete_bookmark_response.py +1 -2
  44. twitter_openapi_python_generated/models/delete_draft_tweets_response.py +102 -0
  45. twitter_openapi_python_generated/models/delete_draft_tweets_response_data.py +89 -0
  46. twitter_openapi_python_generated/models/delete_list_response.py +102 -0
  47. twitter_openapi_python_generated/models/delete_list_response_data.py +89 -0
  48. twitter_openapi_python_generated/models/delete_retweet.py +1 -2
  49. twitter_openapi_python_generated/models/delete_retweet_response.py +1 -2
  50. twitter_openapi_python_generated/models/delete_tweet_response.py +1 -2
  51. twitter_openapi_python_generated/models/draft_list.py +96 -0
  52. twitter_openapi_python_generated/models/draft_tweet.py +109 -0
  53. twitter_openapi_python_generated/models/draft_tweet_create_request.py +99 -0
  54. twitter_openapi_python_generated/models/draft_tweet_user.py +100 -0
  55. twitter_openapi_python_generated/models/draft_tweet_user_results.py +93 -0
  56. twitter_openapi_python_generated/models/draft_tweets_viewer.py +93 -0
  57. twitter_openapi_python_generated/models/entities.py +7 -9
  58. twitter_openapi_python_generated/models/error_extensions.py +1 -1
  59. twitter_openapi_python_generated/models/error_response.py +3 -5
  60. twitter_openapi_python_generated/models/explore_page.py +95 -0
  61. twitter_openapi_python_generated/models/explore_page_body.py +104 -0
  62. twitter_openapi_python_generated/models/explore_page_response.py +102 -0
  63. twitter_openapi_python_generated/models/explore_page_response_data.py +93 -0
  64. twitter_openapi_python_generated/models/explore_timeline.py +105 -0
  65. twitter_openapi_python_generated/models/explore_timeline_scribe_config.py +91 -0
  66. twitter_openapi_python_generated/models/extended_entities.py +1 -2
  67. twitter_openapi_python_generated/models/favorite_tweet_response.py +1 -2
  68. twitter_openapi_python_generated/models/fetch_draft_tweets_response.py +102 -0
  69. twitter_openapi_python_generated/models/fetch_draft_tweets_response_data.py +93 -0
  70. twitter_openapi_python_generated/models/fetch_scheduled_tweets_response.py +102 -0
  71. twitter_openapi_python_generated/models/fetch_scheduled_tweets_response_data.py +93 -0
  72. twitter_openapi_python_generated/models/follow_response.py +1 -2
  73. twitter_openapi_python_generated/models/generic_timeline_by_id_response.py +102 -0
  74. twitter_openapi_python_generated/models/generic_timeline_by_id_response_data.py +93 -0
  75. twitter_openapi_python_generated/models/grok_share_attachment.py +1 -2
  76. twitter_openapi_python_generated/models/grok_translated_bio.py +101 -0
  77. twitter_openapi_python_generated/models/grok_translated_bio_with_availability.py +97 -0
  78. twitter_openapi_python_generated/models/grok_translated_community_note.py +1 -2
  79. twitter_openapi_python_generated/models/highlight.py +1 -2
  80. twitter_openapi_python_generated/models/instruction_union.py +3 -2
  81. twitter_openapi_python_generated/models/item_content_union.py +68 -10
  82. twitter_openapi_python_generated/models/list_banner_media.py +93 -0
  83. twitter_openapi_python_generated/models/list_banner_media_info.py +99 -0
  84. twitter_openapi_python_generated/models/list_banner_media_salient_rect.py +95 -0
  85. twitter_openapi_python_generated/models/list_latest_tweets_timeline_response.py +1 -2
  86. twitter_openapi_python_generated/models/list_members_list.py +93 -0
  87. twitter_openapi_python_generated/models/list_members_response.py +102 -0
  88. twitter_openapi_python_generated/models/list_members_response_data.py +93 -0
  89. twitter_openapi_python_generated/models/list_recommended_users_list.py +93 -0
  90. twitter_openapi_python_generated/models/list_recommended_users_response.py +102 -0
  91. twitter_openapi_python_generated/models/list_recommended_users_response_data.py +93 -0
  92. twitter_openapi_python_generated/models/list_response.py +102 -0
  93. twitter_openapi_python_generated/models/list_response_data.py +93 -0
  94. twitter_openapi_python_generated/models/list_subscribers_list.py +93 -0
  95. twitter_openapi_python_generated/models/list_subscribers_response.py +102 -0
  96. twitter_openapi_python_generated/models/list_subscribers_response_data.py +93 -0
  97. twitter_openapi_python_generated/models/media.py +16 -17
  98. twitter_openapi_python_generated/models/media_extended.py +13 -16
  99. twitter_openapi_python_generated/models/media_original_info.py +1 -2
  100. twitter_openapi_python_generated/models/media_video_info.py +1 -2
  101. twitter_openapi_python_generated/models/module_item.py +2 -5
  102. twitter_openapi_python_generated/models/note_tweet_result_data.py +2 -5
  103. twitter_openapi_python_generated/models/note_tweet_result_media.py +1 -2
  104. twitter_openapi_python_generated/models/note_tweet_result_media_inline_media.py +2 -5
  105. twitter_openapi_python_generated/models/note_tweet_result_rich_text.py +1 -2
  106. twitter_openapi_python_generated/models/notifications_result.py +2 -5
  107. twitter_openapi_python_generated/models/notifications_timeline_response.py +1 -2
  108. twitter_openapi_python_generated/models/post_create_bookmark_request.py +1 -1
  109. twitter_openapi_python_generated/models/post_create_bookmark_request_variables.py +2 -2
  110. twitter_openapi_python_generated/models/post_create_draft_tweet_request.py +95 -0
  111. twitter_openapi_python_generated/models/post_create_draft_tweet_request_variables.py +93 -0
  112. twitter_openapi_python_generated/models/post_create_draft_tweet_request_variables_post_tweet_request.py +97 -0
  113. twitter_openapi_python_generated/models/post_create_list_request.py +101 -0
  114. twitter_openapi_python_generated/models/post_create_list_request_features.py +97 -0
  115. twitter_openapi_python_generated/models/post_create_list_request_variables.py +93 -0
  116. twitter_openapi_python_generated/models/post_create_retweet_request.py +1 -1
  117. twitter_openapi_python_generated/models/post_create_retweet_request_variables.py +3 -3
  118. twitter_openapi_python_generated/models/post_create_tweet_request.py +2 -2
  119. twitter_openapi_python_generated/models/post_create_tweet_request_features.py +43 -41
  120. twitter_openapi_python_generated/models/post_create_tweet_request_variables.py +4 -4
  121. twitter_openapi_python_generated/models/post_create_tweet_request_variables_conversation_control.py +2 -2
  122. twitter_openapi_python_generated/models/post_create_tweet_request_variables_media.py +3 -4
  123. twitter_openapi_python_generated/models/post_create_tweet_request_variables_media_media_entities_inner.py +2 -2
  124. twitter_openapi_python_generated/models/post_create_tweet_request_variables_reply.py +2 -2
  125. twitter_openapi_python_generated/models/post_cta_title_text.py +1 -2
  126. twitter_openapi_python_generated/models/post_delete_bookmark_request.py +1 -1
  127. twitter_openapi_python_generated/models/post_delete_draft_tweets_request.py +95 -0
  128. twitter_openapi_python_generated/models/post_delete_draft_tweets_request_variables.py +89 -0
  129. twitter_openapi_python_generated/models/post_delete_list_request.py +95 -0
  130. twitter_openapi_python_generated/models/post_delete_list_request_variables.py +89 -0
  131. twitter_openapi_python_generated/models/post_delete_retweet_request.py +1 -1
  132. twitter_openapi_python_generated/models/post_delete_retweet_request_variables.py +3 -3
  133. twitter_openapi_python_generated/models/post_delete_tweet_request.py +2 -2
  134. twitter_openapi_python_generated/models/post_favorite_tweet_request.py +1 -1
  135. twitter_openapi_python_generated/models/post_list_add_member_request.py +101 -0
  136. twitter_openapi_python_generated/models/post_list_add_member_request_variables.py +91 -0
  137. twitter_openapi_python_generated/models/post_list_remove_member_request.py +101 -0
  138. twitter_openapi_python_generated/models/post_unfavorite_tweet_request.py +1 -1
  139. twitter_openapi_python_generated/models/primary_community_topic.py +2 -5
  140. twitter_openapi_python_generated/models/profile_bio.py +11 -3
  141. twitter_openapi_python_generated/models/profile_bio_entities.py +98 -0
  142. twitter_openapi_python_generated/models/profile_bio_entities_urls.py +96 -0
  143. twitter_openapi_python_generated/models/profile_response.py +1 -2
  144. twitter_openapi_python_generated/models/retweet.py +4 -7
  145. twitter_openapi_python_generated/models/scheduled_tweets_viewer.py +89 -0
  146. twitter_openapi_python_generated/models/search_timeline_response.py +1 -2
  147. twitter_openapi_python_generated/models/self_thread.py +2 -5
  148. twitter_openapi_python_generated/models/session.py +8 -20
  149. twitter_openapi_python_generated/models/social_context_union.py +3 -2
  150. twitter_openapi_python_generated/models/text.py +1 -2
  151. twitter_openapi_python_generated/models/timeline.py +1 -2
  152. twitter_openapi_python_generated/models/timeline_add_entries.py +1 -2
  153. twitter_openapi_python_generated/models/timeline_add_entry.py +4 -10
  154. twitter_openapi_python_generated/models/timeline_add_to_module.py +1 -2
  155. twitter_openapi_python_generated/models/timeline_frame.py +97 -0
  156. twitter_openapi_python_generated/models/timeline_half_cover.py +1 -2
  157. twitter_openapi_python_generated/models/timeline_label.py +101 -0
  158. twitter_openapi_python_generated/models/timeline_mark_entries_unread_greater_than_sort_index.py +2 -5
  159. twitter_openapi_python_generated/models/timeline_response.py +1 -2
  160. twitter_openapi_python_generated/models/timeline_show_alert.py +7 -3
  161. twitter_openapi_python_generated/models/timeline_timeline_module.py +1 -2
  162. twitter_openapi_python_generated/models/timeline_trend.py +16 -4
  163. twitter_openapi_python_generated/models/timeline_twitter_list.py +101 -0
  164. twitter_openapi_python_generated/models/tombstone_rich_text.py +1 -2
  165. twitter_openapi_python_generated/models/tracing.py +2 -5
  166. twitter_openapi_python_generated/models/trend_metadata.py +4 -2
  167. twitter_openapi_python_generated/models/trend_results.py +2 -5
  168. twitter_openapi_python_generated/models/tweet.py +17 -6
  169. twitter_openapi_python_generated/models/tweet_card_legacy.py +2 -4
  170. twitter_openapi_python_generated/models/tweet_card_platform_device.py +2 -5
  171. twitter_openapi_python_generated/models/tweet_detail_response.py +1 -2
  172. twitter_openapi_python_generated/models/tweet_edit_control.py +6 -15
  173. twitter_openapi_python_generated/models/tweet_edit_control_initial.py +4 -10
  174. twitter_openapi_python_generated/models/tweet_favoriters_response.py +1 -2
  175. twitter_openapi_python_generated/models/tweet_interstitial_reveal_text.py +1 -2
  176. twitter_openapi_python_generated/models/tweet_interstitial_text.py +1 -2
  177. twitter_openapi_python_generated/models/tweet_legacy.py +15 -36
  178. twitter_openapi_python_generated/models/tweet_limited_action_results.py +1 -2
  179. twitter_openapi_python_generated/models/tweet_preview_display_tweet.py +5 -11
  180. twitter_openapi_python_generated/models/tweet_preview_display_tweet_view_count.py +2 -5
  181. twitter_openapi_python_generated/models/tweet_result_by_rest_id_response.py +1 -2
  182. twitter_openapi_python_generated/models/tweet_retweeters_response.py +1 -2
  183. twitter_openapi_python_generated/models/tweet_union.py +3 -2
  184. twitter_openapi_python_generated/models/tweet_view.py +2 -5
  185. twitter_openapi_python_generated/models/twitter_list.py +146 -0
  186. twitter_openapi_python_generated/models/type_name.py +4 -0
  187. twitter_openapi_python_generated/models/unfavorite_tweet_response.py +1 -2
  188. twitter_openapi_python_generated/models/urt_endpoint_options.py +3 -4
  189. twitter_openapi_python_generated/models/user.py +75 -13
  190. twitter_openapi_python_generated/models/user_action_counts.py +89 -0
  191. twitter_openapi_python_generated/models/user_banner.py +89 -0
  192. twitter_openapi_python_generated/models/user_core.py +3 -6
  193. twitter_openapi_python_generated/models/user_highlights_tweets_response.py +1 -2
  194. twitter_openapi_python_generated/models/user_legacy.py +3 -6
  195. twitter_openapi_python_generated/models/user_notifications_settings.py +89 -0
  196. twitter_openapi_python_generated/models/user_pinned_items.py +90 -0
  197. twitter_openapi_python_generated/models/user_professional.py +3 -7
  198. twitter_openapi_python_generated/models/user_profile_metadata.py +89 -0
  199. twitter_openapi_python_generated/models/user_profile_translation.py +89 -0
  200. twitter_openapi_python_generated/models/user_relationship_counts.py +91 -0
  201. twitter_openapi_python_generated/models/user_relationship_perspectives.py +6 -2
  202. twitter_openapi_python_generated/models/user_response.py +1 -2
  203. twitter_openapi_python_generated/models/user_result_by_screen_name.py +2 -5
  204. twitter_openapi_python_generated/models/user_result_by_screen_name_result.py +8 -12
  205. twitter_openapi_python_generated/models/user_result_core.py +3 -1
  206. twitter_openapi_python_generated/models/user_results.py +3 -1
  207. twitter_openapi_python_generated/models/user_tweet_counts.py +91 -0
  208. twitter_openapi_python_generated/models/user_tweets_response.py +1 -2
  209. twitter_openapi_python_generated/models/user_union.py +6 -3
  210. twitter_openapi_python_generated/models/user_value.py +8 -9
  211. twitter_openapi_python_generated/models/user_verification_info_reason.py +2 -5
  212. twitter_openapi_python_generated/models/user_verification_info_reason_description.py +1 -2
  213. twitter_openapi_python_generated/models/user_website.py +89 -0
  214. twitter_openapi_python_generated/models/users_response.py +1 -2
  215. twitter_openapi_python_generated/models/users_response_data.py +1 -2
  216. twitter_openapi_python_generated/models/viewer_badge_counts_response.py +102 -0
  217. twitter_openapi_python_generated/models/viewer_badge_counts_response_data.py +93 -0
  218. twitter_openapi_python_generated/models/viewer_badge_counts_result.py +96 -0
  219. twitter_openapi_python_generated/models/viewer_badge_counts_user_results.py +93 -0
  220. twitter_openapi_python_generated/models/viewer_badge_counts_viewer.py +93 -0
  221. twitter_openapi_python_generated/rest.py +79 -8
  222. {twitter_openapi_python_generated-0.0.34.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/METADATA +926 -816
  223. {twitter_openapi_python_generated-0.0.34.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/RECORD +227 -145
  224. {twitter_openapi_python_generated-0.0.34.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/WHEEL +1 -1
  225. {twitter_openapi_python_generated-0.0.34.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/licenses/LICENSE +31 -31
  226. {twitter_openapi_python_generated-0.0.34.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/licenses/LICENSE.AGPL +660 -660
  227. {twitter_openapi_python_generated-0.0.34.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/top_level.txt +0 -0
@@ -92,7 +92,7 @@ class ApiClient:
92
92
  self.default_headers[header_name] = header_value
93
93
  self.cookie = cookie
94
94
  # Set default User-Agent.
95
- self.user_agent = 'OpenAPI-Generator/0.0.34/python'
95
+ self.user_agent = 'OpenAPI-Generator/0.0.35/python'
96
96
  self.client_side_validation = configuration.client_side_validation
97
97
 
98
98
  def __enter__(self):
@@ -248,7 +248,6 @@ class ApiClient:
248
248
 
249
249
  return method, url, header_params, body, post_params
250
250
 
251
-
252
251
  def call_api(
253
252
  self,
254
253
  method,
@@ -303,6 +302,12 @@ class ApiClient:
303
302
  # if not found, look for '1XX', '2XX', etc.
304
303
  response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
305
304
 
305
+ # If the response_type has not matched (eg. did not match the previous if statements) and the default response is available, use it.
306
+ if response_type is None and str(response_data.status) not in response_types_map \
307
+ and (not isinstance(response_data.status, int) or not 100 <= response_data.status <= 599 or str(response_data.status)[0] + "XX" not in response_types_map) \
308
+ and 'default' in response_types_map:
309
+ response_type = response_types_map['default']
310
+
306
311
  # deserialize response data
307
312
  response_text = None
308
313
  return_data = None
@@ -435,6 +440,12 @@ class ApiClient:
435
440
  return None
436
441
 
437
442
  if isinstance(klass, str):
443
+ if klass.startswith('Optional['):
444
+ m = re.match(r'Optional\[(.*)]', klass)
445
+ assert m is not None, "Malformed Optional type definition"
446
+ # data is not None here, so the optionality is already resolved
447
+ return self.__deserialize(data, m.group(1))
448
+
438
449
  if klass.startswith('List['):
439
450
  m = re.match(r'List\[(.*)]', klass)
440
451
  assert m is not None, "Malformed List type definition"
@@ -483,10 +494,15 @@ class ApiClient:
483
494
  if collection_formats is None:
484
495
  collection_formats = {}
485
496
  for k, v in params.items() if isinstance(params, dict) else params:
497
+ if isinstance(v, bool):
498
+ v = str(v).lower()
486
499
  if k in collection_formats:
487
500
  collection_format = collection_formats[k]
488
501
  if collection_format == 'multi':
489
- new_params.extend((k, value) for value in v)
502
+ new_params.extend(
503
+ (k, str(value).lower() if isinstance(value, bool) else value)
504
+ for value in v
505
+ )
490
506
  else:
491
507
  if collection_format == 'ssv':
492
508
  delimiter = ' '
@@ -497,11 +513,20 @@ class ApiClient:
497
513
  else: # csv is the default
498
514
  delimiter = ','
499
515
  new_params.append(
500
- (k, delimiter.join(str(value) for value in v)))
516
+ (k, delimiter.join(
517
+ str(value).lower() if isinstance(value, bool) else str(value)
518
+ for value in v)))
501
519
  else:
502
520
  new_params.append((k, v))
503
521
  return new_params
504
522
 
523
+ def explode_query_object(self, name, obj):
524
+ """form style, explode: one query parameter per entry, keyed by the property name; a list repeats the name, None is left out"""
525
+ obj = self.sanitize_for_serialization(obj)
526
+ if not isinstance(obj, dict):
527
+ obj = {name: obj}
528
+ return [(k, item) for k, v in obj.items() for item in (v if isinstance(v, (list, tuple)) else [v]) if item is not None]
529
+
505
530
  def parameters_to_url_query(self, params, collection_formats):
506
531
  """Get parameters as list of tuples, formatting collections.
507
532
 
@@ -520,10 +545,14 @@ class ApiClient:
520
545
  if isinstance(v, dict):
521
546
  v = json.dumps(v)
522
547
 
523
- if k in collection_formats:
548
+ # a collection format applies only to a list; an exploded entry may share a declared array parameter's name
549
+ if k in collection_formats and isinstance(v, (list, tuple)):
524
550
  collection_format = collection_formats[k]
525
551
  if collection_format == 'multi':
526
- new_params.extend((k, quote(str(value))) for value in v)
552
+ new_params.extend(
553
+ (quote(str(k)), quote(str(value).lower() if isinstance(value, bool) else str(value)))
554
+ for value in v
555
+ )
527
556
  else:
528
557
  if collection_format == 'ssv':
529
558
  delimiter = ' '
@@ -534,10 +563,13 @@ class ApiClient:
534
563
  else: # csv is the default
535
564
  delimiter = ','
536
565
  new_params.append(
537
- (k, delimiter.join(quote(str(value)) for value in v))
566
+ (quote(str(k)), delimiter.join(
567
+ quote(str(value).lower() if isinstance(value, bool) else str(value))
568
+ for value in v))
538
569
  )
539
570
  else:
540
- new_params.append((k, quote(str(v))))
571
+ # names are quoted too: an exploded object's names are runtime data
572
+ new_params.append((quote(str(k)), quote(str(v))))
541
573
 
542
574
  return "&".join(["=".join(map(str, item)) for item in new_params])
543
575
 
@@ -673,7 +705,13 @@ class ApiClient:
673
705
  :param auth_setting: auth settings for the endpoint
674
706
  """
675
707
  if auth_setting['in'] == 'cookie':
676
- headers['Cookie'] = auth_setting['value']
708
+ if not 'Cookie' in headers:
709
+ headers['Cookie'] = ""
710
+ else:
711
+ headers['Cookie'] += "; "
712
+ # Account for cookie value containing spaces and special characters, excluding base64 delimiters
713
+ cookie_value = quote(str(auth_setting['value']), safe="!#$%&'()*+-./:<=>?@[]^_`{|}~%+/=")
714
+ headers['Cookie'] += f"{auth_setting['key']}={cookie_value}"
677
715
  elif auth_setting['in'] == 'header':
678
716
  if auth_setting['type'] != 'http-signature':
679
717
  headers[auth_setting['key']] = auth_setting['value']
@@ -16,8 +16,11 @@ import http.client as httplib
16
16
  import logging
17
17
  from logging import FileHandler
18
18
  import multiprocessing
19
+ import ssl
19
20
  import sys
20
21
  from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict, Union
22
+ from urllib.parse import urlparse
23
+ from urllib.request import getproxies
21
24
  from typing_extensions import NotRequired, Self
22
25
 
23
26
  import urllib3
@@ -192,7 +195,9 @@ class Configuration:
192
195
  :param tls_server_name: SSL/TLS Server Name Indication (SNI). Set this to the SNI value expected by the server.
193
196
  :param connection_pool_maxsize: Connection pool max size. None in the constructor is coerced to 100 for async and cpu_count * 5 for sync.
194
197
  :param proxy: Proxy URL.
198
+ :param no_proxy: Comma-separated hosts that bypass the proxy.
195
199
  :param proxy_headers: Proxy headers.
200
+ :param proxy_ssl_context: SSL context used only for the TLS handshake with the proxy itself, independent of the destination TLS settings.
196
201
  :param safe_chars_for_path_param: Safe characters for path parameter encoding.
197
202
  :param client_side_validation: Enable client-side validation. Default True.
198
203
  :param socket_options: Options to pass down to the underlying urllib3 socket.
@@ -246,7 +251,9 @@ conf = twitter_openapi_python_generated.Configuration(
246
251
  tls_server_name: Optional[str]=None,
247
252
  connection_pool_maxsize: Optional[int]=None,
248
253
  proxy: Optional[str]=None,
254
+ no_proxy: Optional[str]=None,
249
255
  proxy_headers: Optional[Any]=None,
256
+ proxy_ssl_context: Optional[ssl.SSLContext]=None,
250
257
  safe_chars_for_path_param: str='',
251
258
  client_side_validation: bool=True,
252
259
  socket_options: Optional[Any]=None,
@@ -352,12 +359,29 @@ conf = twitter_openapi_python_generated.Configuration(
352
359
  per pool. None in the constructor is coerced to cpu_count * 5.
353
360
  """
354
361
 
355
- self.proxy = proxy
356
- """Proxy URL
362
+ # urllib3 does not read proxy environment variables itself:
363
+ # https://github.com/urllib3/urllib3/issues/1785
364
+ # A proxy taken from the environment is re-resolved when the host is
365
+ # assigned; see the host setter.
366
+ self._proxy_from_env = proxy is None
367
+ if proxy is None or no_proxy is None:
368
+ proxies = getproxies()
369
+ if proxy is None:
370
+ proxy = self._env_proxy(proxies, self.host)
371
+ if no_proxy is None:
372
+ no_proxy = proxies.get("no")
373
+ self._proxy = proxy
374
+ self.no_proxy = no_proxy
375
+ """Hosts that bypass the proxy
357
376
  """
358
377
  self.proxy_headers = proxy_headers
359
378
  """Proxy headers
360
379
  """
380
+ self.proxy_ssl_context = proxy_ssl_context
381
+ """SSL context used only for the TLS handshake with the proxy itself
382
+ (e.g. an HTTPS CONNECT tunnel), independent of the destination TLS
383
+ settings above.
384
+ """
361
385
  self.safe_chars_for_path_param = safe_chars_for_path_param
362
386
  """Safe chars for path_param
363
387
  """
@@ -384,13 +408,17 @@ conf = twitter_openapi_python_generated.Configuration(
384
408
  result = cls.__new__(cls)
385
409
  memo[id(self)] = result
386
410
  for k, v in self.__dict__.items():
411
+ if k == 'proxy_ssl_context':
412
+ # ssl.SSLContext holds unpicklable C state and can't be deepcopied.
413
+ setattr(result, k, v)
414
+ continue
387
415
  if k not in ('logger', 'logger_file_handler'):
388
416
  setattr(result, k, copy.deepcopy(v, memo))
389
417
  # shallow copy of loggers
390
418
  result.logger = copy.copy(self.logger)
391
- # use setters to configure loggers
419
+ # use setter to re-create the file handler (excluded from __dict__ copy)
392
420
  result.logger_file = self.logger_file
393
- result.debug = self.debug
421
+
394
422
  return result
395
423
 
396
424
  def __setattr__(self, name: str, value: Any) -> None:
@@ -527,7 +555,8 @@ conf = twitter_openapi_python_generated.Configuration(
527
555
  self.refresh_api_key_hook(self)
528
556
  key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
529
557
  if key:
530
- prefix = self.api_key_prefix.get(identifier)
558
+ prefix = self.api_key_prefix.get(
559
+ identifier, self.api_key_prefix.get(alias) if alias is not None else None)
531
560
  if prefix:
532
561
  return "%s %s" % (prefix, key)
533
562
  else:
@@ -773,7 +802,7 @@ conf = twitter_openapi_python_generated.Configuration(
773
802
  "OS: {env}\n"\
774
803
  "Python Version: {pyversion}\n"\
775
804
  "Version of the API: 0.0.1\n"\
776
- "SDK Package Version: 0.0.34".\
805
+ "SDK Package Version: 0.0.35".\
777
806
  format(env=sys.platform, pyversion=sys.version)
778
807
 
779
808
  def get_host_settings(self) -> List[HostSetting]:
@@ -847,3 +876,23 @@ conf = twitter_openapi_python_generated.Configuration(
847
876
  """Fix base path."""
848
877
  self._base_path = value
849
878
  self.server_index = None
879
+ if self._proxy_from_env:
880
+ # the scheme-specific proxy depends on the host, which is
881
+ # commonly assigned after construction
882
+ self._proxy = self._env_proxy(getproxies(), value)
883
+
884
+ @staticmethod
885
+ def _env_proxy(proxies: Dict[str, str], host: str) -> Optional[str]:
886
+ """Pick the environment proxy that applies to `host`."""
887
+ return proxies.get(urlparse(host).scheme) or proxies.get("all")
888
+
889
+ @property
890
+ def proxy(self) -> Optional[str]:
891
+ """Proxy URL
892
+ """
893
+ return self._proxy
894
+
895
+ @proxy.setter
896
+ def proxy(self, value: Optional[str]) -> None:
897
+ self._proxy = value
898
+ self._proxy_from_env = False
@@ -34,6 +34,7 @@ from twitter_openapi_python_generated.models.article_preview import ArticlePrevi
34
34
  from twitter_openapi_python_generated.models.article_result import ArticleResult
35
35
  from twitter_openapi_python_generated.models.article_results import ArticleResults
36
36
  from twitter_openapi_python_generated.models.author_community_relationship import AuthorCommunityRelationship
37
+ from twitter_openapi_python_generated.models.badge_counts import BadgeCounts
37
38
  from twitter_openapi_python_generated.models.birdwatch_entity import BirdwatchEntity
38
39
  from twitter_openapi_python_generated.models.birdwatch_entity_ref import BirdwatchEntityRef
39
40
  from twitter_openapi_python_generated.models.birdwatch_pivot import BirdwatchPivot
@@ -45,12 +46,16 @@ from twitter_openapi_python_generated.models.bookmarks_response import Bookmarks
45
46
  from twitter_openapi_python_generated.models.bookmarks_response_data import BookmarksResponseData
46
47
  from twitter_openapi_python_generated.models.bookmarks_timeline import BookmarksTimeline
47
48
  from twitter_openapi_python_generated.models.callback import Callback
49
+ from twitter_openapi_python_generated.models.cashtag_attachment import CashtagAttachment
48
50
  from twitter_openapi_python_generated.models.client_event_info import ClientEventInfo
49
51
  from twitter_openapi_python_generated.models.communities_actions import CommunitiesActions
50
52
  from twitter_openapi_python_generated.models.community import Community
51
53
  from twitter_openapi_python_generated.models.community_about_timeline_response import CommunityAboutTimelineResponse
52
54
  from twitter_openapi_python_generated.models.community_actions import CommunityActions
53
55
  from twitter_openapi_python_generated.models.community_delete_action_result import CommunityDeleteActionResult
56
+ from twitter_openapi_python_generated.models.community_discovery_timeline_response import CommunityDiscoveryTimelineResponse
57
+ from twitter_openapi_python_generated.models.community_discovery_timeline_response_data import CommunityDiscoveryTimelineResponseData
58
+ from twitter_openapi_python_generated.models.community_discovery_timeline_viewer import CommunityDiscoveryTimelineViewer
54
59
  from twitter_openapi_python_generated.models.community_invites_result import CommunityInvitesResult
55
60
  from twitter_openapi_python_generated.models.community_join_action import CommunityJoinAction
56
61
  from twitter_openapi_python_generated.models.community_join_action_result_union import CommunityJoinActionResultUnion
@@ -68,6 +73,8 @@ from twitter_openapi_python_generated.models.community_union import CommunityUni
68
73
  from twitter_openapi_python_generated.models.community_unpin_action_result import CommunityUnpinActionResult
69
74
  from twitter_openapi_python_generated.models.community_urls import CommunityUrls
70
75
  from twitter_openapi_python_generated.models.community_urls_permalink import CommunityUrlsPermalink
76
+ from twitter_openapi_python_generated.models.connect_tab_timeline_response import ConnectTabTimelineResponse
77
+ from twitter_openapi_python_generated.models.connect_tab_timeline_response_data import ConnectTabTimelineResponseData
71
78
  from twitter_openapi_python_generated.models.content_disclosure import ContentDisclosure
72
79
  from twitter_openapi_python_generated.models.content_disclosure_advertising_disclosure import ContentDisclosureAdvertisingDisclosure
73
80
  from twitter_openapi_python_generated.models.content_disclosure_ai_generated_disclosure import ContentDisclosureAiGeneratedDisclosure
@@ -78,6 +85,9 @@ from twitter_openapi_python_generated.models.conversation_control import Convers
78
85
  from twitter_openapi_python_generated.models.cover_cta import CoverCta
79
86
  from twitter_openapi_python_generated.models.create_bookmark_response import CreateBookmarkResponse
80
87
  from twitter_openapi_python_generated.models.create_bookmark_response_data import CreateBookmarkResponseData
88
+ from twitter_openapi_python_generated.models.create_draft_tweet_response import CreateDraftTweetResponse
89
+ from twitter_openapi_python_generated.models.create_draft_tweet_response_data import CreateDraftTweetResponseData
90
+ from twitter_openapi_python_generated.models.create_draft_tweet_response_tweet import CreateDraftTweetResponseTweet
81
91
  from twitter_openapi_python_generated.models.create_retweet import CreateRetweet
82
92
  from twitter_openapi_python_generated.models.create_retweet_response import CreateRetweetResponse
83
93
  from twitter_openapi_python_generated.models.create_retweet_response_data import CreateRetweetResponseData
@@ -90,6 +100,10 @@ from twitter_openapi_python_generated.models.cta_client_event_info import CtaCli
90
100
  from twitter_openapi_python_generated.models.cursor_type import CursorType
91
101
  from twitter_openapi_python_generated.models.delete_bookmark_response import DeleteBookmarkResponse
92
102
  from twitter_openapi_python_generated.models.delete_bookmark_response_data import DeleteBookmarkResponseData
103
+ from twitter_openapi_python_generated.models.delete_draft_tweets_response import DeleteDraftTweetsResponse
104
+ from twitter_openapi_python_generated.models.delete_draft_tweets_response_data import DeleteDraftTweetsResponseData
105
+ from twitter_openapi_python_generated.models.delete_list_response import DeleteListResponse
106
+ from twitter_openapi_python_generated.models.delete_list_response_data import DeleteListResponseData
93
107
  from twitter_openapi_python_generated.models.delete_retweet import DeleteRetweet
94
108
  from twitter_openapi_python_generated.models.delete_retweet_response import DeleteRetweetResponse
95
109
  from twitter_openapi_python_generated.models.delete_retweet_response_data import DeleteRetweetResponseData
@@ -99,26 +113,46 @@ from twitter_openapi_python_generated.models.delete_tweet_response_data import D
99
113
  from twitter_openapi_python_generated.models.delete_tweet_response_result import DeleteTweetResponseResult
100
114
  from twitter_openapi_python_generated.models.display_treatment import DisplayTreatment
101
115
  from twitter_openapi_python_generated.models.display_type import DisplayType
116
+ from twitter_openapi_python_generated.models.draft_list import DraftList
117
+ from twitter_openapi_python_generated.models.draft_tweet import DraftTweet
118
+ from twitter_openapi_python_generated.models.draft_tweet_create_request import DraftTweetCreateRequest
119
+ from twitter_openapi_python_generated.models.draft_tweet_user import DraftTweetUser
120
+ from twitter_openapi_python_generated.models.draft_tweet_user_results import DraftTweetUserResults
121
+ from twitter_openapi_python_generated.models.draft_tweets_viewer import DraftTweetsViewer
102
122
  from twitter_openapi_python_generated.models.entities import Entities
103
123
  from twitter_openapi_python_generated.models.error_extensions import ErrorExtensions
104
124
  from twitter_openapi_python_generated.models.error_response import ErrorResponse
105
125
  from twitter_openapi_python_generated.models.error_response_path_inner import ErrorResponsePathInner
126
+ from twitter_openapi_python_generated.models.explore_page import ExplorePage
127
+ from twitter_openapi_python_generated.models.explore_page_body import ExplorePageBody
128
+ from twitter_openapi_python_generated.models.explore_page_response import ExplorePageResponse
129
+ from twitter_openapi_python_generated.models.explore_page_response_data import ExplorePageResponseData
130
+ from twitter_openapi_python_generated.models.explore_timeline import ExploreTimeline
131
+ from twitter_openapi_python_generated.models.explore_timeline_scribe_config import ExploreTimelineScribeConfig
106
132
  from twitter_openapi_python_generated.models.ext_media_availability import ExtMediaAvailability
107
133
  from twitter_openapi_python_generated.models.extended_entities import ExtendedEntities
108
134
  from twitter_openapi_python_generated.models.favorite_tweet import FavoriteTweet
109
135
  from twitter_openapi_python_generated.models.favorite_tweet_response import FavoriteTweetResponse
110
136
  from twitter_openapi_python_generated.models.feedback_info import FeedbackInfo
137
+ from twitter_openapi_python_generated.models.fetch_draft_tweets_response import FetchDraftTweetsResponse
138
+ from twitter_openapi_python_generated.models.fetch_draft_tweets_response_data import FetchDraftTweetsResponseData
139
+ from twitter_openapi_python_generated.models.fetch_scheduled_tweets_response import FetchScheduledTweetsResponse
140
+ from twitter_openapi_python_generated.models.fetch_scheduled_tweets_response_data import FetchScheduledTweetsResponseData
111
141
  from twitter_openapi_python_generated.models.follow_response import FollowResponse
112
142
  from twitter_openapi_python_generated.models.follow_response_data import FollowResponseData
113
143
  from twitter_openapi_python_generated.models.follow_response_result import FollowResponseResult
114
144
  from twitter_openapi_python_generated.models.follow_response_user import FollowResponseUser
115
145
  from twitter_openapi_python_generated.models.follow_timeline import FollowTimeline
146
+ from twitter_openapi_python_generated.models.generic_timeline_by_id_response import GenericTimelineByIdResponse
147
+ from twitter_openapi_python_generated.models.generic_timeline_by_id_response_data import GenericTimelineByIdResponseData
116
148
  from twitter_openapi_python_generated.models.grok_annotation import GrokAnnotation
117
149
  from twitter_openapi_python_generated.models.grok_entity import GrokEntity
118
150
  from twitter_openapi_python_generated.models.grok_entity_ref import GrokEntityRef
119
151
  from twitter_openapi_python_generated.models.grok_image_annotation import GrokImageAnnotation
120
152
  from twitter_openapi_python_generated.models.grok_share_attachment import GrokShareAttachment
121
153
  from twitter_openapi_python_generated.models.grok_share_attachment_item import GrokShareAttachmentItem
154
+ from twitter_openapi_python_generated.models.grok_translated_bio import GrokTranslatedBio
155
+ from twitter_openapi_python_generated.models.grok_translated_bio_with_availability import GrokTranslatedBioWithAvailability
122
156
  from twitter_openapi_python_generated.models.grok_translated_community_note import GrokTranslatedCommunityNote
123
157
  from twitter_openapi_python_generated.models.grok_translated_community_note_with_availability import GrokTranslatedCommunityNoteWithAvailability
124
158
  from twitter_openapi_python_generated.models.grok_translated_post import GrokTranslatedPost
@@ -131,7 +165,21 @@ from twitter_openapi_python_generated.models.instruction_union import Instructio
131
165
  from twitter_openapi_python_generated.models.item_content_union import ItemContentUnion
132
166
  from twitter_openapi_python_generated.models.item_result import ItemResult
133
167
  from twitter_openapi_python_generated.models.limited_action_results_data import LimitedActionResultsData
168
+ from twitter_openapi_python_generated.models.list_banner_media import ListBannerMedia
169
+ from twitter_openapi_python_generated.models.list_banner_media_info import ListBannerMediaInfo
170
+ from twitter_openapi_python_generated.models.list_banner_media_salient_rect import ListBannerMediaSalientRect
134
171
  from twitter_openapi_python_generated.models.list_latest_tweets_timeline_response import ListLatestTweetsTimelineResponse
172
+ from twitter_openapi_python_generated.models.list_members_list import ListMembersList
173
+ from twitter_openapi_python_generated.models.list_members_response import ListMembersResponse
174
+ from twitter_openapi_python_generated.models.list_members_response_data import ListMembersResponseData
175
+ from twitter_openapi_python_generated.models.list_recommended_users_list import ListRecommendedUsersList
176
+ from twitter_openapi_python_generated.models.list_recommended_users_response import ListRecommendedUsersResponse
177
+ from twitter_openapi_python_generated.models.list_recommended_users_response_data import ListRecommendedUsersResponseData
178
+ from twitter_openapi_python_generated.models.list_response import ListResponse
179
+ from twitter_openapi_python_generated.models.list_response_data import ListResponseData
180
+ from twitter_openapi_python_generated.models.list_subscribers_list import ListSubscribersList
181
+ from twitter_openapi_python_generated.models.list_subscribers_response import ListSubscribersResponse
182
+ from twitter_openapi_python_generated.models.list_subscribers_response_data import ListSubscribersResponseData
135
183
  from twitter_openapi_python_generated.models.list_tweets_timeline_data import ListTweetsTimelineData
136
184
  from twitter_openapi_python_generated.models.list_tweets_timeline_list import ListTweetsTimelineList
137
185
  from twitter_openapi_python_generated.models.location import Location
@@ -170,6 +218,12 @@ from twitter_openapi_python_generated.models.one_factor_login_eligibility import
170
218
  from twitter_openapi_python_generated.models.other_object_all import OtherObjectAll
171
219
  from twitter_openapi_python_generated.models.post_create_bookmark_request import PostCreateBookmarkRequest
172
220
  from twitter_openapi_python_generated.models.post_create_bookmark_request_variables import PostCreateBookmarkRequestVariables
221
+ from twitter_openapi_python_generated.models.post_create_draft_tweet_request import PostCreateDraftTweetRequest
222
+ from twitter_openapi_python_generated.models.post_create_draft_tweet_request_variables import PostCreateDraftTweetRequestVariables
223
+ from twitter_openapi_python_generated.models.post_create_draft_tweet_request_variables_post_tweet_request import PostCreateDraftTweetRequestVariablesPostTweetRequest
224
+ from twitter_openapi_python_generated.models.post_create_list_request import PostCreateListRequest
225
+ from twitter_openapi_python_generated.models.post_create_list_request_features import PostCreateListRequestFeatures
226
+ from twitter_openapi_python_generated.models.post_create_list_request_variables import PostCreateListRequestVariables
173
227
  from twitter_openapi_python_generated.models.post_create_retweet_request import PostCreateRetweetRequest
174
228
  from twitter_openapi_python_generated.models.post_create_retweet_request_variables import PostCreateRetweetRequestVariables
175
229
  from twitter_openapi_python_generated.models.post_create_tweet_request import PostCreateTweetRequest
@@ -187,13 +241,22 @@ from twitter_openapi_python_generated.models.post_cta_user_results import PostCt
187
241
  from twitter_openapi_python_generated.models.post_cta_user_results_avatar import PostCtaUserResultsAvatar
188
242
  from twitter_openapi_python_generated.models.post_cta_user_results_result import PostCtaUserResultsResult
189
243
  from twitter_openapi_python_generated.models.post_delete_bookmark_request import PostDeleteBookmarkRequest
244
+ from twitter_openapi_python_generated.models.post_delete_draft_tweets_request import PostDeleteDraftTweetsRequest
245
+ from twitter_openapi_python_generated.models.post_delete_draft_tweets_request_variables import PostDeleteDraftTweetsRequestVariables
246
+ from twitter_openapi_python_generated.models.post_delete_list_request import PostDeleteListRequest
247
+ from twitter_openapi_python_generated.models.post_delete_list_request_variables import PostDeleteListRequestVariables
190
248
  from twitter_openapi_python_generated.models.post_delete_retweet_request import PostDeleteRetweetRequest
191
249
  from twitter_openapi_python_generated.models.post_delete_retweet_request_variables import PostDeleteRetweetRequestVariables
192
250
  from twitter_openapi_python_generated.models.post_delete_tweet_request import PostDeleteTweetRequest
193
251
  from twitter_openapi_python_generated.models.post_favorite_tweet_request import PostFavoriteTweetRequest
252
+ from twitter_openapi_python_generated.models.post_list_add_member_request import PostListAddMemberRequest
253
+ from twitter_openapi_python_generated.models.post_list_add_member_request_variables import PostListAddMemberRequestVariables
254
+ from twitter_openapi_python_generated.models.post_list_remove_member_request import PostListRemoveMemberRequest
194
255
  from twitter_openapi_python_generated.models.post_unfavorite_tweet_request import PostUnfavoriteTweetRequest
195
256
  from twitter_openapi_python_generated.models.primary_community_topic import PrimaryCommunityTopic
196
257
  from twitter_openapi_python_generated.models.profile_bio import ProfileBio
258
+ from twitter_openapi_python_generated.models.profile_bio_entities import ProfileBioEntities
259
+ from twitter_openapi_python_generated.models.profile_bio_entities_urls import ProfileBioEntitiesUrls
197
260
  from twitter_openapi_python_generated.models.profile_response import ProfileResponse
198
261
  from twitter_openapi_python_generated.models.profile_response_data import ProfileResponseData
199
262
  from twitter_openapi_python_generated.models.quoted_ref_result import QuotedRefResult
@@ -204,6 +267,7 @@ from twitter_openapi_python_generated.models.ranked_community_tweet_data import
204
267
  from twitter_openapi_python_generated.models.retweet import Retweet
205
268
  from twitter_openapi_python_generated.models.retweet_legacy import RetweetLegacy
206
269
  from twitter_openapi_python_generated.models.rich_message import RichMessage
270
+ from twitter_openapi_python_generated.models.scheduled_tweets_viewer import ScheduledTweetsViewer
207
271
  from twitter_openapi_python_generated.models.search_by_raw_query import SearchByRawQuery
208
272
  from twitter_openapi_python_generated.models.search_timeline import SearchTimeline
209
273
  from twitter_openapi_python_generated.models.search_timeline_data import SearchTimelineData
@@ -235,8 +299,10 @@ from twitter_openapi_python_generated.models.timeline_clear_entries_unread_state
235
299
  from twitter_openapi_python_generated.models.timeline_community import TimelineCommunity
236
300
  from twitter_openapi_python_generated.models.timeline_cover_behavior import TimelineCoverBehavior
237
301
  from twitter_openapi_python_generated.models.timeline_cover_behavior_url import TimelineCoverBehaviorUrl
302
+ from twitter_openapi_python_generated.models.timeline_frame import TimelineFrame
238
303
  from twitter_openapi_python_generated.models.timeline_general_context import TimelineGeneralContext
239
304
  from twitter_openapi_python_generated.models.timeline_half_cover import TimelineHalfCover
305
+ from twitter_openapi_python_generated.models.timeline_label import TimelineLabel
240
306
  from twitter_openapi_python_generated.models.timeline_mark_entries_unread_greater_than_sort_index import TimelineMarkEntriesUnreadGreaterThanSortIndex
241
307
  from twitter_openapi_python_generated.models.timeline_message_prompt import TimelineMessagePrompt
242
308
  from twitter_openapi_python_generated.models.timeline_notification import TimelineNotification
@@ -256,6 +322,7 @@ from twitter_openapi_python_generated.models.timeline_tombstone import TimelineT
256
322
  from twitter_openapi_python_generated.models.timeline_topic_context import TimelineTopicContext
257
323
  from twitter_openapi_python_generated.models.timeline_trend import TimelineTrend
258
324
  from twitter_openapi_python_generated.models.timeline_tweet import TimelineTweet
325
+ from twitter_openapi_python_generated.models.timeline_twitter_list import TimelineTwitterList
259
326
  from twitter_openapi_python_generated.models.timeline_user import TimelineUser
260
327
  from twitter_openapi_python_generated.models.timestamp import Timestamp
261
328
  from twitter_openapi_python_generated.models.tombstone_entity import TombstoneEntity
@@ -308,6 +375,7 @@ from twitter_openapi_python_generated.models.tweet_unavailable import TweetUnava
308
375
  from twitter_openapi_python_generated.models.tweet_union import TweetUnion
309
376
  from twitter_openapi_python_generated.models.tweet_view import TweetView
310
377
  from twitter_openapi_python_generated.models.tweet_with_visibility_results import TweetWithVisibilityResults
378
+ from twitter_openapi_python_generated.models.twitter_list import TwitterList
311
379
  from twitter_openapi_python_generated.models.type_name import TypeName
312
380
  from twitter_openapi_python_generated.models.unfavorite_tweet import UnfavoriteTweet
313
381
  from twitter_openapi_python_generated.models.unfavorite_tweet_response import UnfavoriteTweetResponse
@@ -316,7 +384,9 @@ from twitter_openapi_python_generated.models.url import Url
316
384
  from twitter_openapi_python_generated.models.urt_endpoint_options import UrtEndpointOptions
317
385
  from twitter_openapi_python_generated.models.urt_endpoint_request_params import UrtEndpointRequestParams
318
386
  from twitter_openapi_python_generated.models.user import User
387
+ from twitter_openapi_python_generated.models.user_action_counts import UserActionCounts
319
388
  from twitter_openapi_python_generated.models.user_avatar import UserAvatar
389
+ from twitter_openapi_python_generated.models.user_banner import UserBanner
320
390
  from twitter_openapi_python_generated.models.user_core import UserCore
321
391
  from twitter_openapi_python_generated.models.user_dm_permissions import UserDmPermissions
322
392
  from twitter_openapi_python_generated.models.user_features import UserFeatures
@@ -331,10 +401,15 @@ from twitter_openapi_python_generated.models.user_legacy_extended_profile import
331
401
  from twitter_openapi_python_generated.models.user_legacy_extended_profile_birthdate import UserLegacyExtendedProfileBirthdate
332
402
  from twitter_openapi_python_generated.models.user_location import UserLocation
333
403
  from twitter_openapi_python_generated.models.user_media_permissions import UserMediaPermissions
404
+ from twitter_openapi_python_generated.models.user_notifications_settings import UserNotificationsSettings
405
+ from twitter_openapi_python_generated.models.user_pinned_items import UserPinnedItems
334
406
  from twitter_openapi_python_generated.models.user_privacy import UserPrivacy
335
407
  from twitter_openapi_python_generated.models.user_professional import UserProfessional
336
408
  from twitter_openapi_python_generated.models.user_professional_category import UserProfessionalCategory
337
409
  from twitter_openapi_python_generated.models.user_profile import UserProfile
410
+ from twitter_openapi_python_generated.models.user_profile_metadata import UserProfileMetadata
411
+ from twitter_openapi_python_generated.models.user_profile_translation import UserProfileTranslation
412
+ from twitter_openapi_python_generated.models.user_relationship_counts import UserRelationshipCounts
338
413
  from twitter_openapi_python_generated.models.user_relationship_perspectives import UserRelationshipPerspectives
339
414
  from twitter_openapi_python_generated.models.user_response import UserResponse
340
415
  from twitter_openapi_python_generated.models.user_response_data import UserResponseData
@@ -347,6 +422,7 @@ from twitter_openapi_python_generated.models.user_result_privacy import UserResu
347
422
  from twitter_openapi_python_generated.models.user_result_relationship_perspectives import UserResultRelationshipPerspectives
348
423
  from twitter_openapi_python_generated.models.user_results import UserResults
349
424
  from twitter_openapi_python_generated.models.user_tip_jar_settings import UserTipJarSettings
425
+ from twitter_openapi_python_generated.models.user_tweet_counts import UserTweetCounts
350
426
  from twitter_openapi_python_generated.models.user_tweets_data import UserTweetsData
351
427
  from twitter_openapi_python_generated.models.user_tweets_response import UserTweetsResponse
352
428
  from twitter_openapi_python_generated.models.user_tweets_result_v1 import UserTweetsResultV1
@@ -361,6 +437,12 @@ from twitter_openapi_python_generated.models.user_verification_info_reason impor
361
437
  from twitter_openapi_python_generated.models.user_verification_info_reason_description import UserVerificationInfoReasonDescription
362
438
  from twitter_openapi_python_generated.models.user_verification_info_reason_description_entities import UserVerificationInfoReasonDescriptionEntities
363
439
  from twitter_openapi_python_generated.models.user_verification_info_reason_description_entities_ref import UserVerificationInfoReasonDescriptionEntitiesRef
440
+ from twitter_openapi_python_generated.models.user_website import UserWebsite
364
441
  from twitter_openapi_python_generated.models.users_response import UsersResponse
365
442
  from twitter_openapi_python_generated.models.users_response_data import UsersResponseData
443
+ from twitter_openapi_python_generated.models.viewer_badge_counts_response import ViewerBadgeCountsResponse
444
+ from twitter_openapi_python_generated.models.viewer_badge_counts_response_data import ViewerBadgeCountsResponseData
445
+ from twitter_openapi_python_generated.models.viewer_badge_counts_result import ViewerBadgeCountsResult
446
+ from twitter_openapi_python_generated.models.viewer_badge_counts_user_results import ViewerBadgeCountsUserResults
447
+ from twitter_openapi_python_generated.models.viewer_badge_counts_viewer import ViewerBadgeCountsViewer
366
448
 
@@ -21,7 +21,6 @@ import json
21
21
  from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
22
22
  from typing import Any, ClassVar, Dict, List, Optional
23
23
  from twitter_openapi_python_generated.models.additional_media_info_call_to_actions import AdditionalMediaInfoCallToActions
24
- from twitter_openapi_python_generated.models.user_result_core import UserResultCore
25
24
  from typing import Optional, Set
26
25
  from typing_extensions import Self
27
26
  from pydantic_core import to_jsonable_python
@@ -104,4 +103,7 @@ class AdditionalMediaInfo(BaseModel):
104
103
  })
105
104
  return _obj
106
105
 
106
+ from twitter_openapi_python_generated.models.user_result_core import UserResultCore
107
+ # TODO: Rewrite to not use raise_errors
108
+ AdditionalMediaInfo.model_rebuild(raise_errors=False)
107
109
 
@@ -36,13 +36,10 @@ class ArticleCoverMedia(BaseModel):
36
36
  media_key: StrictStr
37
37
  __properties: ClassVar[List[str]] = ["id", "media_id", "media_info", "media_key"]
38
38
 
39
- @field_validator('media_id')
39
+ @field_validator('media_id', mode="before")
40
40
  def media_id_validate_regular_expression(cls, value):
41
41
  """Validates the regular expression"""
42
- if not isinstance(value, str):
43
- value = str(value)
44
-
45
- if not re.match(r"^[0-9]+$", value):
42
+ if isinstance(value, str) and not re.match(r"^[0-9]+$", value):
46
43
  raise ValueError(r"must validate the regular expression /^[0-9]+$/")
47
44
  return value
48
45
 
@@ -75,8 +75,7 @@ class ArticleCoverMediaColorInfo(BaseModel):
75
75
  _items = []
76
76
  if self.palette:
77
77
  for _item_palette in self.palette:
78
- if _item_palette:
79
- _items.append(_item_palette.to_dict())
78
+ _items.append(_item_palette.to_dict() if _item_palette is not None else None)
80
79
  _dict['palette'] = _items
81
80
  return _dict
82
81
 
@@ -44,13 +44,10 @@ class ArticleResult(BaseModel):
44
44
  title: StrictStr
45
45
  __properties: ClassVar[List[str]] = ["content_state", "cover_media", "id", "is_grok_summary_eligible", "lifecycle_state", "media_entities", "metadata", "preview_text", "rest_id", "title"]
46
46
 
47
- @field_validator('rest_id')
47
+ @field_validator('rest_id', mode="before")
48
48
  def rest_id_validate_regular_expression(cls, value):
49
49
  """Validates the regular expression"""
50
- if not isinstance(value, str):
51
- value = str(value)
52
-
53
- if not re.match(r"^[0-9]+$", value):
50
+ if isinstance(value, str) and not re.match(r"^[0-9]+$", value):
54
51
  raise ValueError(r"must validate the regular expression /^[0-9]+$/")
55
52
  return value
56
53
 
@@ -103,8 +100,7 @@ class ArticleResult(BaseModel):
103
100
  _items = []
104
101
  if self.media_entities:
105
102
  for _item_media_entities in self.media_entities:
106
- if _item_media_entities:
107
- _items.append(_item_media_entities.to_dict())
103
+ _items.append(_item_media_entities.to_dict() if _item_media_entities is not None else None)
108
104
  _dict['media_entities'] = _items
109
105
  # override the default output from pydantic by calling `to_dict()` of metadata
110
106
  if self.metadata: