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
@@ -33,16 +33,13 @@ class TweetView(BaseModel):
33
33
  state: StrictStr
34
34
  __properties: ClassVar[List[str]] = ["count", "state"]
35
35
 
36
- @field_validator('count')
36
+ @field_validator('count', mode="before")
37
37
  def count_validate_regular_expression(cls, value):
38
38
  """Validates the regular expression"""
39
39
  if value is None:
40
40
  return value
41
41
 
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
 
@@ -0,0 +1,146 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Twitter OpenAPI
5
+
6
+ Twitter OpenAPI(Swagger) specification
7
+
8
+ The version of the OpenAPI document: 0.0.1
9
+ Contact: yuki@yuki0311.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
+ from typing_extensions import Annotated
24
+ from twitter_openapi_python_generated.models.list_banner_media import ListBannerMedia
25
+ from twitter_openapi_python_generated.models.user_results import UserResults
26
+ from typing import Optional, Set
27
+ from typing_extensions import Self
28
+ from pydantic_core import to_jsonable_python
29
+
30
+ class TwitterList(BaseModel):
31
+ """
32
+ TwitterList
33
+ """ # noqa: E501
34
+ created_at: StrictInt
35
+ default_banner_media: ListBannerMedia
36
+ default_banner_media_results: Dict[str, Any]
37
+ description: StrictStr
38
+ facepile_urls: List[StrictStr]
39
+ followers_context: Optional[StrictStr] = None
40
+ following: StrictBool
41
+ id: StrictStr
42
+ id_str: Annotated[str, Field(strict=True)]
43
+ is_member: StrictBool
44
+ member_count: StrictInt
45
+ members_context: Optional[StrictStr] = None
46
+ mode: StrictStr
47
+ muting: StrictBool
48
+ name: StrictStr
49
+ pinning: StrictBool
50
+ subscriber_count: StrictInt
51
+ user_results: UserResults
52
+ __properties: ClassVar[List[str]] = ["created_at", "default_banner_media", "default_banner_media_results", "description", "facepile_urls", "followers_context", "following", "id", "id_str", "is_member", "member_count", "members_context", "mode", "muting", "name", "pinning", "subscriber_count", "user_results"]
53
+
54
+ @field_validator('id_str', mode="before")
55
+ def id_str_validate_regular_expression(cls, value):
56
+ """Validates the regular expression"""
57
+ if isinstance(value, str) and not re.match(r"^[0-9]+$", value):
58
+ raise ValueError(r"must validate the regular expression /^[0-9]+$/")
59
+ return value
60
+
61
+ @field_validator('mode')
62
+ def mode_validate_enum(cls, value):
63
+ """Validates the enum"""
64
+ if value not in set(['Public', 'Private']):
65
+ raise ValueError("must be one of enum values ('Public', 'Private')")
66
+ return value
67
+
68
+ model_config = ConfigDict(
69
+ validate_by_name=True,
70
+ validate_by_alias=True,
71
+ validate_assignment=True,
72
+ protected_namespaces=(),
73
+ )
74
+
75
+
76
+ def to_str(self) -> str:
77
+ """Returns the string representation of the model using alias"""
78
+ return pprint.pformat(self.model_dump(by_alias=True))
79
+
80
+ def to_json(self) -> str:
81
+ """Returns the JSON representation of the model using alias"""
82
+ return json.dumps(to_jsonable_python(self.to_dict()))
83
+
84
+ @classmethod
85
+ def from_json(cls, json_str: str) -> Optional[Self]:
86
+ """Create an instance of TwitterList from a JSON string"""
87
+ return cls.from_dict(json.loads(json_str))
88
+
89
+ def to_dict(self) -> Dict[str, Any]:
90
+ """Return the dictionary representation of the model using alias.
91
+
92
+ This has the following differences from calling pydantic's
93
+ `self.model_dump(by_alias=True)`:
94
+
95
+ * `None` is only added to the output dict for nullable fields that
96
+ were set at model initialization. Other fields with value `None`
97
+ are ignored.
98
+ """
99
+ excluded_fields: Set[str] = set([
100
+ ])
101
+
102
+ _dict = self.model_dump(
103
+ by_alias=True,
104
+ exclude=excluded_fields,
105
+ exclude_none=True,
106
+ )
107
+ # override the default output from pydantic by calling `to_dict()` of default_banner_media
108
+ if self.default_banner_media:
109
+ _dict['default_banner_media'] = self.default_banner_media.to_dict()
110
+ # override the default output from pydantic by calling `to_dict()` of user_results
111
+ if self.user_results:
112
+ _dict['user_results'] = self.user_results.to_dict()
113
+ return _dict
114
+
115
+ @classmethod
116
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
117
+ """Create an instance of TwitterList from a dict"""
118
+ if obj is None:
119
+ return None
120
+
121
+ if not isinstance(obj, dict):
122
+ return cls.model_validate(obj)
123
+
124
+ _obj = cls.model_validate({
125
+ "created_at": obj.get("created_at"),
126
+ "default_banner_media": ListBannerMedia.from_dict(obj["default_banner_media"]) if obj.get("default_banner_media") is not None else None,
127
+ "default_banner_media_results": obj.get("default_banner_media_results"),
128
+ "description": obj.get("description"),
129
+ "facepile_urls": obj.get("facepile_urls"),
130
+ "followers_context": obj.get("followers_context"),
131
+ "following": obj.get("following"),
132
+ "id": obj.get("id"),
133
+ "id_str": obj.get("id_str"),
134
+ "is_member": obj.get("is_member"),
135
+ "member_count": obj.get("member_count"),
136
+ "members_context": obj.get("members_context"),
137
+ "mode": obj.get("mode"),
138
+ "muting": obj.get("muting"),
139
+ "name": obj.get("name"),
140
+ "pinning": obj.get("pinning"),
141
+ "subscriber_count": obj.get("subscriber_count"),
142
+ "user_results": UserResults.from_dict(obj["user_results"]) if obj.get("user_results") is not None else None
143
+ })
144
+ return _obj
145
+
146
+
@@ -28,6 +28,10 @@ class TypeName(str, Enum):
28
28
  allowed enum values
29
29
  """
30
30
  TIMELINETWEET = 'TimelineTweet'
31
+ SEGMENTEDTIMELINES = 'SegmentedTimelines'
32
+ TIMELINEFRAME = 'TimelineFrame'
33
+ TIMELINETWITTERLIST = 'TimelineTwitterList'
34
+ TIMELINELABEL = 'TimelineLabel'
31
35
  TIMELINETIMELINEITEM = 'TimelineTimelineItem'
32
36
  TIMELINEUSER = 'TimelineUser'
33
37
  TIMELINETIMELINECURSOR = 'TimelineTimelineCursor'
@@ -80,8 +80,7 @@ class UnfavoriteTweetResponse(BaseModel):
80
80
  _items = []
81
81
  if self.errors:
82
82
  for _item_errors in self.errors:
83
- if _item_errors:
84
- _items.append(_item_errors.to_dict())
83
+ _items.append(_item_errors.to_dict() if _item_errors is not None else None)
85
84
  _dict['errors'] = _items
86
85
  return _dict
87
86
 
@@ -19,7 +19,7 @@ import re # noqa: F401
19
19
  import json
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
- from typing import Any, ClassVar, Dict, List
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from twitter_openapi_python_generated.models.urt_endpoint_request_params import UrtEndpointRequestParams
24
24
  from typing import Optional, Set
25
25
  from typing_extensions import Self
@@ -30,7 +30,7 @@ class UrtEndpointOptions(BaseModel):
30
30
  UrtEndpointOptions
31
31
  """ # noqa: E501
32
32
  request_params: List[UrtEndpointRequestParams] = Field(alias="requestParams")
33
- title: StrictStr
33
+ title: Optional[StrictStr] = None
34
34
  __properties: ClassVar[List[str]] = ["requestParams", "title"]
35
35
 
36
36
  model_config = ConfigDict(
@@ -76,8 +76,7 @@ class UrtEndpointOptions(BaseModel):
76
76
  _items = []
77
77
  if self.request_params:
78
78
  for _item_request_params in self.request_params:
79
- if _item_request_params:
80
- _items.append(_item_request_params.to_dict())
79
+ _items.append(_item_request_params.to_dict() if _item_request_params is not None else None)
81
80
  _dict['requestParams'] = _items
82
81
  return _dict
83
82
 
@@ -23,7 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing_extensions import Annotated
24
24
  from twitter_openapi_python_generated.models.profile_bio import ProfileBio
25
25
  from twitter_openapi_python_generated.models.type_name import TypeName
26
+ from twitter_openapi_python_generated.models.user_action_counts import UserActionCounts
26
27
  from twitter_openapi_python_generated.models.user_avatar import UserAvatar
28
+ from twitter_openapi_python_generated.models.user_banner import UserBanner
27
29
  from twitter_openapi_python_generated.models.user_core import UserCore
28
30
  from twitter_openapi_python_generated.models.user_dm_permissions import UserDmPermissions
29
31
  from twitter_openapi_python_generated.models.user_highlights_info import UserHighlightsInfo
@@ -31,13 +33,20 @@ from twitter_openapi_python_generated.models.user_legacy import UserLegacy
31
33
  from twitter_openapi_python_generated.models.user_legacy_extended_profile import UserLegacyExtendedProfile
32
34
  from twitter_openapi_python_generated.models.user_location import UserLocation
33
35
  from twitter_openapi_python_generated.models.user_media_permissions import UserMediaPermissions
36
+ from twitter_openapi_python_generated.models.user_notifications_settings import UserNotificationsSettings
37
+ from twitter_openapi_python_generated.models.user_pinned_items import UserPinnedItems
34
38
  from twitter_openapi_python_generated.models.user_privacy import UserPrivacy
35
39
  from twitter_openapi_python_generated.models.user_professional import UserProfessional
36
40
  from twitter_openapi_python_generated.models.user_profile import UserProfile
41
+ from twitter_openapi_python_generated.models.user_profile_metadata import UserProfileMetadata
42
+ from twitter_openapi_python_generated.models.user_profile_translation import UserProfileTranslation
43
+ from twitter_openapi_python_generated.models.user_relationship_counts import UserRelationshipCounts
37
44
  from twitter_openapi_python_generated.models.user_relationship_perspectives import UserRelationshipPerspectives
38
45
  from twitter_openapi_python_generated.models.user_tip_jar_settings import UserTipJarSettings
46
+ from twitter_openapi_python_generated.models.user_tweet_counts import UserTweetCounts
39
47
  from twitter_openapi_python_generated.models.user_verification import UserVerification
40
48
  from twitter_openapi_python_generated.models.user_verification_info import UserVerificationInfo
49
+ from twitter_openapi_python_generated.models.user_website import UserWebsite
41
50
  from typing import Optional, Set
42
51
  from typing_extensions import Self
43
52
  from pydantic_core import to_jsonable_python
@@ -47,12 +56,16 @@ class User(BaseModel):
47
56
  User
48
57
  """ # noqa: E501
49
58
  typename: TypeName = Field(alias="__typename")
59
+ action_counts: Optional[UserActionCounts] = None
50
60
  affiliates_highlighted_label: Optional[Dict[str, Any]] = None
51
61
  avatar: Optional[UserAvatar] = None
62
+ banner: Optional[UserBanner] = None
52
63
  business_account: Optional[Dict[str, Any]] = None
53
64
  core: Optional[UserCore] = None
54
65
  creator_subscriptions_count: Optional[StrictInt] = None
55
66
  dm_permissions: Optional[UserDmPermissions] = None
67
+ follow_request_sent: Optional[StrictBool] = None
68
+ grok_translated_bio_with_availability: Optional[GrokTranslatedBioWithAvailability] = None
56
69
  has_graduated_access: Optional[StrictBool] = None
57
70
  has_hidden_likes_on_profile: Optional[StrictBool] = None
58
71
  has_hidden_subscriptions_on_profile: Optional[StrictBool] = None
@@ -61,18 +74,25 @@ class User(BaseModel):
61
74
  id: Annotated[str, Field(strict=True)]
62
75
  is_blue_verified: StrictBool
63
76
  is_profile_translatable: Optional[StrictBool] = None
64
- legacy: UserLegacy
77
+ is_verified_organization: Optional[StrictBool] = None
78
+ legacy: Optional[UserLegacy] = None
65
79
  legacy_extended_profile: Optional[UserLegacyExtendedProfile] = None
66
80
  location: Optional[UserLocation] = None
67
81
  media_permissions: Optional[UserMediaPermissions] = None
82
+ notifications_settings: Optional[UserNotificationsSettings] = None
68
83
  parody_commentary_fan_label: Optional[StrictStr] = None
84
+ pinned_items: Optional[UserPinnedItems] = None
85
+ possibly_sensitive: Optional[StrictBool] = None
69
86
  premium_gifting_eligible: Optional[StrictBool] = None
70
87
  privacy: Optional[UserPrivacy] = None
71
88
  professional: Optional[UserProfessional] = None
72
89
  profile_bio: Optional[ProfileBio] = None
73
90
  profile_description_language: Optional[StrictStr] = None
74
91
  profile_image_shape: StrictStr
92
+ profile_metadata: Optional[UserProfileMetadata] = None
75
93
  profile_sort_enabled: Optional[StrictBool] = None
94
+ profile_translation: Optional[UserProfileTranslation] = None
95
+ relationship_counts: Optional[UserRelationshipCounts] = None
76
96
  relationship_perspectives: Optional[UserRelationshipPerspectives] = None
77
97
  rest_id: Annotated[str, Field(strict=True)]
78
98
  super_follow_eligible: Optional[StrictBool] = None
@@ -80,19 +100,18 @@ class User(BaseModel):
80
100
  super_following: Optional[StrictBool] = None
81
101
  super_follows_user_profile: Optional[UserProfile] = None
82
102
  tipjar_settings: Optional[UserTipJarSettings] = None
103
+ tweet_counts: Optional[UserTweetCounts] = None
83
104
  user_seed_tweet_count: Optional[StrictInt] = None
84
105
  verification: Optional[UserVerification] = None
85
106
  verification_info: Optional[UserVerificationInfo] = None
86
107
  verified_user_profiles: Optional[UserProfile] = None
87
- __properties: ClassVar[List[str]] = ["__typename", "affiliates_highlighted_label", "avatar", "business_account", "core", "creator_subscriptions_count", "dm_permissions", "has_graduated_access", "has_hidden_likes_on_profile", "has_hidden_subscriptions_on_profile", "has_nft_avatar", "highlights_info", "id", "is_blue_verified", "is_profile_translatable", "legacy", "legacy_extended_profile", "location", "media_permissions", "parody_commentary_fan_label", "premium_gifting_eligible", "privacy", "professional", "profile_bio", "profile_description_language", "profile_image_shape", "profile_sort_enabled", "relationship_perspectives", "rest_id", "super_follow_eligible", "super_followed_by", "super_following", "super_follows_user_profile", "tipjar_settings", "user_seed_tweet_count", "verification", "verification_info", "verified_user_profiles"]
108
+ website: Optional[UserWebsite] = None
109
+ __properties: ClassVar[List[str]] = ["__typename", "action_counts", "affiliates_highlighted_label", "avatar", "banner", "business_account", "core", "creator_subscriptions_count", "dm_permissions", "follow_request_sent", "grok_translated_bio_with_availability", "has_graduated_access", "has_hidden_likes_on_profile", "has_hidden_subscriptions_on_profile", "has_nft_avatar", "highlights_info", "id", "is_blue_verified", "is_profile_translatable", "is_verified_organization", "legacy", "legacy_extended_profile", "location", "media_permissions", "notifications_settings", "parody_commentary_fan_label", "pinned_items", "possibly_sensitive", "premium_gifting_eligible", "privacy", "professional", "profile_bio", "profile_description_language", "profile_image_shape", "profile_metadata", "profile_sort_enabled", "profile_translation", "relationship_counts", "relationship_perspectives", "rest_id", "super_follow_eligible", "super_followed_by", "super_following", "super_follows_user_profile", "tipjar_settings", "tweet_counts", "user_seed_tweet_count", "verification", "verification_info", "verified_user_profiles", "website"]
88
110
 
89
- @field_validator('id')
111
+ @field_validator('id', mode="before")
90
112
  def id_validate_regular_expression(cls, value):
91
113
  """Validates the regular expression"""
92
- if not isinstance(value, str):
93
- value = str(value)
94
-
95
- if not re.match(r"^([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)?$", value):
114
+ if isinstance(value, str) and not re.match(r"^([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)?$", value):
96
115
  raise ValueError(r"must validate the regular expression /^([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)?$/")
97
116
  return value
98
117
 
@@ -113,13 +132,10 @@ class User(BaseModel):
113
132
  raise ValueError("must be one of enum values ('Circle', 'Square', 'Hexagon')")
114
133
  return value
115
134
 
116
- @field_validator('rest_id')
135
+ @field_validator('rest_id', mode="before")
117
136
  def rest_id_validate_regular_expression(cls, value):
118
137
  """Validates the regular expression"""
119
- if not isinstance(value, str):
120
- value = str(value)
121
-
122
- if not re.match(r"^[0-9]+$", value):
138
+ if isinstance(value, str) and not re.match(r"^[0-9]+$", value):
123
139
  raise ValueError(r"must validate the regular expression /^[0-9]+$/")
124
140
  return value
125
141
 
@@ -162,15 +178,24 @@ class User(BaseModel):
162
178
  exclude=excluded_fields,
163
179
  exclude_none=True,
164
180
  )
181
+ # override the default output from pydantic by calling `to_dict()` of action_counts
182
+ if self.action_counts:
183
+ _dict['action_counts'] = self.action_counts.to_dict()
165
184
  # override the default output from pydantic by calling `to_dict()` of avatar
166
185
  if self.avatar:
167
186
  _dict['avatar'] = self.avatar.to_dict()
187
+ # override the default output from pydantic by calling `to_dict()` of banner
188
+ if self.banner:
189
+ _dict['banner'] = self.banner.to_dict()
168
190
  # override the default output from pydantic by calling `to_dict()` of core
169
191
  if self.core:
170
192
  _dict['core'] = self.core.to_dict()
171
193
  # override the default output from pydantic by calling `to_dict()` of dm_permissions
172
194
  if self.dm_permissions:
173
195
  _dict['dm_permissions'] = self.dm_permissions.to_dict()
196
+ # override the default output from pydantic by calling `to_dict()` of grok_translated_bio_with_availability
197
+ if self.grok_translated_bio_with_availability:
198
+ _dict['grok_translated_bio_with_availability'] = self.grok_translated_bio_with_availability.to_dict()
174
199
  # override the default output from pydantic by calling `to_dict()` of highlights_info
175
200
  if self.highlights_info:
176
201
  _dict['highlights_info'] = self.highlights_info.to_dict()
@@ -186,6 +211,12 @@ class User(BaseModel):
186
211
  # override the default output from pydantic by calling `to_dict()` of media_permissions
187
212
  if self.media_permissions:
188
213
  _dict['media_permissions'] = self.media_permissions.to_dict()
214
+ # override the default output from pydantic by calling `to_dict()` of notifications_settings
215
+ if self.notifications_settings:
216
+ _dict['notifications_settings'] = self.notifications_settings.to_dict()
217
+ # override the default output from pydantic by calling `to_dict()` of pinned_items
218
+ if self.pinned_items:
219
+ _dict['pinned_items'] = self.pinned_items.to_dict()
189
220
  # override the default output from pydantic by calling `to_dict()` of privacy
190
221
  if self.privacy:
191
222
  _dict['privacy'] = self.privacy.to_dict()
@@ -195,6 +226,15 @@ class User(BaseModel):
195
226
  # override the default output from pydantic by calling `to_dict()` of profile_bio
196
227
  if self.profile_bio:
197
228
  _dict['profile_bio'] = self.profile_bio.to_dict()
229
+ # override the default output from pydantic by calling `to_dict()` of profile_metadata
230
+ if self.profile_metadata:
231
+ _dict['profile_metadata'] = self.profile_metadata.to_dict()
232
+ # override the default output from pydantic by calling `to_dict()` of profile_translation
233
+ if self.profile_translation:
234
+ _dict['profile_translation'] = self.profile_translation.to_dict()
235
+ # override the default output from pydantic by calling `to_dict()` of relationship_counts
236
+ if self.relationship_counts:
237
+ _dict['relationship_counts'] = self.relationship_counts.to_dict()
198
238
  # override the default output from pydantic by calling `to_dict()` of relationship_perspectives
199
239
  if self.relationship_perspectives:
200
240
  _dict['relationship_perspectives'] = self.relationship_perspectives.to_dict()
@@ -204,6 +244,9 @@ class User(BaseModel):
204
244
  # override the default output from pydantic by calling `to_dict()` of tipjar_settings
205
245
  if self.tipjar_settings:
206
246
  _dict['tipjar_settings'] = self.tipjar_settings.to_dict()
247
+ # override the default output from pydantic by calling `to_dict()` of tweet_counts
248
+ if self.tweet_counts:
249
+ _dict['tweet_counts'] = self.tweet_counts.to_dict()
207
250
  # override the default output from pydantic by calling `to_dict()` of verification
208
251
  if self.verification:
209
252
  _dict['verification'] = self.verification.to_dict()
@@ -213,6 +256,9 @@ class User(BaseModel):
213
256
  # override the default output from pydantic by calling `to_dict()` of verified_user_profiles
214
257
  if self.verified_user_profiles:
215
258
  _dict['verified_user_profiles'] = self.verified_user_profiles.to_dict()
259
+ # override the default output from pydantic by calling `to_dict()` of website
260
+ if self.website:
261
+ _dict['website'] = self.website.to_dict()
216
262
  return _dict
217
263
 
218
264
  @classmethod
@@ -226,12 +272,16 @@ class User(BaseModel):
226
272
 
227
273
  _obj = cls.model_validate({
228
274
  "__typename": obj.get("__typename"),
275
+ "action_counts": UserActionCounts.from_dict(obj["action_counts"]) if obj.get("action_counts") is not None else None,
229
276
  "affiliates_highlighted_label": obj.get("affiliates_highlighted_label"),
230
277
  "avatar": UserAvatar.from_dict(obj["avatar"]) if obj.get("avatar") is not None else None,
278
+ "banner": UserBanner.from_dict(obj["banner"]) if obj.get("banner") is not None else None,
231
279
  "business_account": obj.get("business_account"),
232
280
  "core": UserCore.from_dict(obj["core"]) if obj.get("core") is not None else None,
233
281
  "creator_subscriptions_count": obj.get("creator_subscriptions_count"),
234
282
  "dm_permissions": UserDmPermissions.from_dict(obj["dm_permissions"]) if obj.get("dm_permissions") is not None else None,
283
+ "follow_request_sent": obj.get("follow_request_sent"),
284
+ "grok_translated_bio_with_availability": GrokTranslatedBioWithAvailability.from_dict(obj["grok_translated_bio_with_availability"]) if obj.get("grok_translated_bio_with_availability") is not None else None,
235
285
  "has_graduated_access": obj.get("has_graduated_access"),
236
286
  "has_hidden_likes_on_profile": obj.get("has_hidden_likes_on_profile"),
237
287
  "has_hidden_subscriptions_on_profile": obj.get("has_hidden_subscriptions_on_profile"),
@@ -240,18 +290,25 @@ class User(BaseModel):
240
290
  "id": obj.get("id"),
241
291
  "is_blue_verified": obj.get("is_blue_verified"),
242
292
  "is_profile_translatable": obj.get("is_profile_translatable"),
293
+ "is_verified_organization": obj.get("is_verified_organization"),
243
294
  "legacy": UserLegacy.from_dict(obj["legacy"]) if obj.get("legacy") is not None else None,
244
295
  "legacy_extended_profile": UserLegacyExtendedProfile.from_dict(obj["legacy_extended_profile"]) if obj.get("legacy_extended_profile") is not None else None,
245
296
  "location": UserLocation.from_dict(obj["location"]) if obj.get("location") is not None else None,
246
297
  "media_permissions": UserMediaPermissions.from_dict(obj["media_permissions"]) if obj.get("media_permissions") is not None else None,
298
+ "notifications_settings": UserNotificationsSettings.from_dict(obj["notifications_settings"]) if obj.get("notifications_settings") is not None else None,
247
299
  "parody_commentary_fan_label": obj.get("parody_commentary_fan_label"),
300
+ "pinned_items": UserPinnedItems.from_dict(obj["pinned_items"]) if obj.get("pinned_items") is not None else None,
301
+ "possibly_sensitive": obj.get("possibly_sensitive"),
248
302
  "premium_gifting_eligible": obj.get("premium_gifting_eligible"),
249
303
  "privacy": UserPrivacy.from_dict(obj["privacy"]) if obj.get("privacy") is not None else None,
250
304
  "professional": UserProfessional.from_dict(obj["professional"]) if obj.get("professional") is not None else None,
251
305
  "profile_bio": ProfileBio.from_dict(obj["profile_bio"]) if obj.get("profile_bio") is not None else None,
252
306
  "profile_description_language": obj.get("profile_description_language"),
253
307
  "profile_image_shape": obj.get("profile_image_shape"),
308
+ "profile_metadata": UserProfileMetadata.from_dict(obj["profile_metadata"]) if obj.get("profile_metadata") is not None else None,
254
309
  "profile_sort_enabled": obj.get("profile_sort_enabled"),
310
+ "profile_translation": UserProfileTranslation.from_dict(obj["profile_translation"]) if obj.get("profile_translation") is not None else None,
311
+ "relationship_counts": UserRelationshipCounts.from_dict(obj["relationship_counts"]) if obj.get("relationship_counts") is not None else None,
255
312
  "relationship_perspectives": UserRelationshipPerspectives.from_dict(obj["relationship_perspectives"]) if obj.get("relationship_perspectives") is not None else None,
256
313
  "rest_id": obj.get("rest_id"),
257
314
  "super_follow_eligible": obj.get("super_follow_eligible"),
@@ -259,11 +316,16 @@ class User(BaseModel):
259
316
  "super_following": obj.get("super_following"),
260
317
  "super_follows_user_profile": UserProfile.from_dict(obj["super_follows_user_profile"]) if obj.get("super_follows_user_profile") is not None else None,
261
318
  "tipjar_settings": UserTipJarSettings.from_dict(obj["tipjar_settings"]) if obj.get("tipjar_settings") is not None else None,
319
+ "tweet_counts": UserTweetCounts.from_dict(obj["tweet_counts"]) if obj.get("tweet_counts") is not None else None,
262
320
  "user_seed_tweet_count": obj.get("user_seed_tweet_count"),
263
321
  "verification": UserVerification.from_dict(obj["verification"]) if obj.get("verification") is not None else None,
264
322
  "verification_info": UserVerificationInfo.from_dict(obj["verification_info"]) if obj.get("verification_info") is not None else None,
265
- "verified_user_profiles": UserProfile.from_dict(obj["verified_user_profiles"]) if obj.get("verified_user_profiles") is not None else None
323
+ "verified_user_profiles": UserProfile.from_dict(obj["verified_user_profiles"]) if obj.get("verified_user_profiles") is not None else None,
324
+ "website": UserWebsite.from_dict(obj["website"]) if obj.get("website") is not None else None
266
325
  })
267
326
  return _obj
268
327
 
328
+ from twitter_openapi_python_generated.models.grok_translated_bio_with_availability import GrokTranslatedBioWithAvailability
329
+ # TODO: Rewrite to not use raise_errors
330
+ User.model_rebuild(raise_errors=False)
269
331
 
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Twitter OpenAPI
5
+
6
+ Twitter OpenAPI(Swagger) specification
7
+
8
+ The version of the OpenAPI document: 0.0.1
9
+ Contact: yuki@yuki0311.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, StrictInt
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class UserActionCounts(BaseModel):
28
+ """
29
+ UserActionCounts
30
+ """ # noqa: E501
31
+ favorites_count: StrictInt
32
+ __properties: ClassVar[List[str]] = ["favorites_count"]
33
+
34
+ model_config = ConfigDict(
35
+ validate_by_name=True,
36
+ validate_by_alias=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ return json.dumps(to_jsonable_python(self.to_dict()))
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of UserActionCounts from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ return _dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
77
+ """Create an instance of UserActionCounts from a dict"""
78
+ if obj is None:
79
+ return None
80
+
81
+ if not isinstance(obj, dict):
82
+ return cls.model_validate(obj)
83
+
84
+ _obj = cls.model_validate({
85
+ "favorites_count": obj.get("favorites_count")
86
+ })
87
+ return _obj
88
+
89
+
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Twitter OpenAPI
5
+
6
+ Twitter OpenAPI(Swagger) specification
7
+
8
+ The version of the OpenAPI document: 0.0.1
9
+ Contact: yuki@yuki0311.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, StrictStr
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class UserBanner(BaseModel):
28
+ """
29
+ UserBanner
30
+ """ # noqa: E501
31
+ image_url: StrictStr
32
+ __properties: ClassVar[List[str]] = ["image_url"]
33
+
34
+ model_config = ConfigDict(
35
+ validate_by_name=True,
36
+ validate_by_alias=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ return json.dumps(to_jsonable_python(self.to_dict()))
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of UserBanner from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ return _dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
77
+ """Create an instance of UserBanner from a dict"""
78
+ if obj is None:
79
+ return None
80
+
81
+ if not isinstance(obj, dict):
82
+ return cls.model_validate(obj)
83
+
84
+ _obj = cls.model_validate({
85
+ "image_url": obj.get("image_url")
86
+ })
87
+ return _obj
88
+
89
+