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