twitter-openapi-python-generated 0.0.33__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.
- twitter_openapi_python_generated/__init__.py +906 -330
- twitter_openapi_python_generated/api/default_api.py +1 -2
- twitter_openapi_python_generated/api/other_api.py +1 -2
- twitter_openapi_python_generated/api/post_api.py +2081 -206
- twitter_openapi_python_generated/api/tweet_api.py +3225 -250
- twitter_openapi_python_generated/api/user_api.py +993 -91
- twitter_openapi_python_generated/api/user_list_api.py +2291 -68
- twitter_openapi_python_generated/api/users_api.py +1 -2
- twitter_openapi_python_generated/api/v11_get_api.py +1 -2
- twitter_openapi_python_generated/api/v11_post_api.py +1 -2
- twitter_openapi_python_generated/api/v20_get_api.py +1 -2
- twitter_openapi_python_generated/api_client.py +81 -36
- twitter_openapi_python_generated/configuration.py +103 -30
- twitter_openapi_python_generated/exceptions.py +7 -5
- twitter_openapi_python_generated/models/__init__.py +123 -2
- twitter_openapi_python_generated/models/about_community_result.py +4 -3
- twitter_openapi_python_generated/models/about_community_results.py +4 -3
- twitter_openapi_python_generated/models/about_community_tweet_data.py +4 -3
- twitter_openapi_python_generated/models/additional_media_info.py +7 -4
- twitter_openapi_python_generated/models/additional_media_info_call_to_actions.py +4 -3
- twitter_openapi_python_generated/models/additional_media_info_call_to_actions_url.py +4 -3
- twitter_openapi_python_generated/models/allow_download_status.py +4 -3
- twitter_openapi_python_generated/models/analysis_results.py +4 -3
- twitter_openapi_python_generated/models/article.py +4 -3
- twitter_openapi_python_generated/models/article_cover_media.py +6 -5
- twitter_openapi_python_generated/models/article_cover_media_color_info.py +5 -5
- twitter_openapi_python_generated/models/article_cover_media_color_info_palette.py +4 -3
- twitter_openapi_python_generated/models/article_cover_media_color_info_palette_rgb.py +4 -3
- twitter_openapi_python_generated/models/article_cover_media_info.py +4 -3
- twitter_openapi_python_generated/models/article_lifecycle_state.py +4 -3
- twitter_openapi_python_generated/models/article_metadata.py +4 -3
- twitter_openapi_python_generated/models/article_preview.py +99 -0
- twitter_openapi_python_generated/models/article_result.py +21 -8
- twitter_openapi_python_generated/models/article_results.py +4 -3
- twitter_openapi_python_generated/models/author_community_relationship.py +9 -8
- twitter_openapi_python_generated/models/badge_counts.py +97 -0
- twitter_openapi_python_generated/models/birdwatch_entity.py +4 -3
- twitter_openapi_python_generated/models/birdwatch_entity_ref.py +7 -4
- twitter_openapi_python_generated/models/birdwatch_pivot.py +19 -6
- twitter_openapi_python_generated/models/birdwatch_pivot_call_to_action.py +4 -3
- twitter_openapi_python_generated/models/birdwatch_pivot_footer.py +5 -5
- twitter_openapi_python_generated/models/birdwatch_pivot_note.py +19 -8
- twitter_openapi_python_generated/models/birdwatch_pivot_subtitle.py +5 -5
- twitter_openapi_python_generated/models/bookmarks_response.py +5 -5
- twitter_openapi_python_generated/models/bookmarks_response_data.py +4 -3
- twitter_openapi_python_generated/models/bookmarks_timeline.py +4 -3
- twitter_openapi_python_generated/models/callback.py +4 -3
- twitter_openapi_python_generated/models/cashtag_attachment.py +89 -0
- twitter_openapi_python_generated/models/client_event_info.py +4 -3
- twitter_openapi_python_generated/models/communities_actions.py +4 -3
- twitter_openapi_python_generated/models/community.py +141 -12
- twitter_openapi_python_generated/models/community_about_timeline_response.py +5 -5
- twitter_openapi_python_generated/models/community_actions.py +4 -3
- twitter_openapi_python_generated/models/community_delete_action_result.py +4 -3
- twitter_openapi_python_generated/models/community_discovery_timeline_response.py +102 -0
- twitter_openapi_python_generated/models/community_discovery_timeline_response_data.py +93 -0
- twitter_openapi_python_generated/models/community_discovery_timeline_viewer.py +93 -0
- twitter_openapi_python_generated/models/community_invites_result.py +4 -3
- twitter_openapi_python_generated/models/community_join_action.py +4 -3
- twitter_openapi_python_generated/models/community_join_action_result_union.py +3 -2
- twitter_openapi_python_generated/models/community_join_action_unavailable.py +4 -3
- twitter_openapi_python_generated/models/community_join_requests_result.py +4 -3
- twitter_openapi_python_generated/models/community_leave_action_result.py +4 -3
- twitter_openapi_python_generated/models/community_media_timeline_response.py +5 -5
- twitter_openapi_python_generated/models/community_pin_action_result.py +4 -3
- twitter_openapi_python_generated/models/community_relationship.py +6 -5
- twitter_openapi_python_generated/models/community_result.py +93 -0
- twitter_openapi_python_generated/models/community_rule.py +6 -5
- twitter_openapi_python_generated/models/community_tweets_timeline_response.py +5 -5
- twitter_openapi_python_generated/models/community_unavailable.py +90 -0
- twitter_openapi_python_generated/models/community_union.py +157 -0
- twitter_openapi_python_generated/models/community_unpin_action_result.py +4 -3
- twitter_openapi_python_generated/models/community_urls.py +4 -3
- twitter_openapi_python_generated/models/community_urls_permalink.py +4 -3
- twitter_openapi_python_generated/models/connect_tab_timeline_response.py +102 -0
- twitter_openapi_python_generated/models/connect_tab_timeline_response_data.py +93 -0
- twitter_openapi_python_generated/models/content_disclosure.py +99 -0
- twitter_openapi_python_generated/models/content_disclosure_advertising_disclosure.py +89 -0
- twitter_openapi_python_generated/models/content_disclosure_ai_generated_disclosure.py +103 -0
- twitter_openapi_python_generated/models/content_item_type.py +3 -0
- twitter_openapi_python_generated/models/content_union.py +3 -2
- twitter_openapi_python_generated/models/conversation_control.py +4 -3
- twitter_openapi_python_generated/models/cover_cta.py +5 -5
- twitter_openapi_python_generated/models/create_bookmark_response.py +5 -5
- twitter_openapi_python_generated/models/create_bookmark_response_data.py +4 -3
- twitter_openapi_python_generated/models/create_draft_tweet_response.py +102 -0
- twitter_openapi_python_generated/models/create_draft_tweet_response_data.py +93 -0
- twitter_openapi_python_generated/models/create_draft_tweet_response_tweet.py +97 -0
- twitter_openapi_python_generated/models/create_retweet.py +4 -3
- twitter_openapi_python_generated/models/create_retweet_response.py +5 -5
- twitter_openapi_python_generated/models/create_retweet_response_data.py +4 -3
- twitter_openapi_python_generated/models/create_retweet_response_result.py +4 -3
- twitter_openapi_python_generated/models/create_tweet.py +4 -3
- twitter_openapi_python_generated/models/create_tweet_response.py +5 -5
- twitter_openapi_python_generated/models/create_tweet_response_data.py +4 -3
- twitter_openapi_python_generated/models/create_tweet_response_result.py +4 -3
- twitter_openapi_python_generated/models/cta_client_event_info.py +4 -3
- twitter_openapi_python_generated/models/delete_bookmark_response.py +5 -5
- twitter_openapi_python_generated/models/delete_bookmark_response_data.py +4 -3
- twitter_openapi_python_generated/models/delete_draft_tweets_response.py +102 -0
- twitter_openapi_python_generated/models/delete_draft_tweets_response_data.py +89 -0
- twitter_openapi_python_generated/models/delete_list_response.py +102 -0
- twitter_openapi_python_generated/models/delete_list_response_data.py +89 -0
- twitter_openapi_python_generated/models/delete_retweet.py +5 -5
- twitter_openapi_python_generated/models/delete_retweet_response.py +5 -5
- twitter_openapi_python_generated/models/delete_retweet_response_data.py +4 -3
- twitter_openapi_python_generated/models/delete_retweet_response_result.py +4 -3
- twitter_openapi_python_generated/models/delete_tweet_response.py +5 -5
- twitter_openapi_python_generated/models/delete_tweet_response_data.py +4 -3
- twitter_openapi_python_generated/models/delete_tweet_response_result.py +4 -3
- twitter_openapi_python_generated/models/display_treatment.py +4 -3
- twitter_openapi_python_generated/models/draft_list.py +96 -0
- twitter_openapi_python_generated/models/draft_tweet.py +109 -0
- twitter_openapi_python_generated/models/draft_tweet_create_request.py +99 -0
- twitter_openapi_python_generated/models/draft_tweet_user.py +100 -0
- twitter_openapi_python_generated/models/draft_tweet_user_results.py +93 -0
- twitter_openapi_python_generated/models/draft_tweets_viewer.py +93 -0
- twitter_openapi_python_generated/models/entities.py +24 -15
- twitter_openapi_python_generated/models/error_extensions.py +5 -4
- twitter_openapi_python_generated/models/error_response.py +15 -8
- twitter_openapi_python_generated/models/error_response_path_inner.py +144 -0
- twitter_openapi_python_generated/models/explore_page.py +95 -0
- twitter_openapi_python_generated/models/explore_page_body.py +104 -0
- twitter_openapi_python_generated/models/explore_page_response.py +102 -0
- twitter_openapi_python_generated/models/explore_page_response_data.py +93 -0
- twitter_openapi_python_generated/models/explore_timeline.py +105 -0
- twitter_openapi_python_generated/models/explore_timeline_scribe_config.py +91 -0
- twitter_openapi_python_generated/models/ext_media_availability.py +4 -3
- twitter_openapi_python_generated/models/extended_entities.py +5 -5
- twitter_openapi_python_generated/models/favorite_tweet.py +4 -3
- twitter_openapi_python_generated/models/favorite_tweet_response.py +5 -5
- twitter_openapi_python_generated/models/feedback_info.py +4 -3
- twitter_openapi_python_generated/models/fetch_draft_tweets_response.py +102 -0
- twitter_openapi_python_generated/models/fetch_draft_tweets_response_data.py +93 -0
- twitter_openapi_python_generated/models/fetch_scheduled_tweets_response.py +102 -0
- twitter_openapi_python_generated/models/fetch_scheduled_tweets_response_data.py +93 -0
- twitter_openapi_python_generated/models/follow_response.py +5 -5
- twitter_openapi_python_generated/models/follow_response_data.py +4 -3
- twitter_openapi_python_generated/models/follow_response_result.py +4 -3
- twitter_openapi_python_generated/models/follow_response_user.py +4 -3
- twitter_openapi_python_generated/models/follow_timeline.py +4 -3
- twitter_openapi_python_generated/models/generic_timeline_by_id_response.py +102 -0
- twitter_openapi_python_generated/models/generic_timeline_by_id_response_data.py +93 -0
- twitter_openapi_python_generated/models/grok_annotation.py +89 -0
- twitter_openapi_python_generated/models/grok_entity.py +97 -0
- twitter_openapi_python_generated/models/grok_entity_ref.py +116 -0
- twitter_openapi_python_generated/models/grok_image_annotation.py +4 -3
- twitter_openapi_python_generated/models/grok_share_attachment.py +5 -5
- twitter_openapi_python_generated/models/grok_share_attachment_item.py +7 -4
- twitter_openapi_python_generated/models/grok_translated_bio.py +101 -0
- twitter_openapi_python_generated/models/grok_translated_bio_with_availability.py +97 -0
- twitter_openapi_python_generated/models/grok_translated_community_note.py +104 -0
- twitter_openapi_python_generated/models/grok_translated_community_note_with_availability.py +95 -0
- twitter_openapi_python_generated/models/grok_translated_post.py +103 -0
- twitter_openapi_python_generated/models/grok_translated_post_with_availability.py +95 -0
- twitter_openapi_python_generated/models/highlight.py +5 -5
- twitter_openapi_python_generated/models/home_timeline_home.py +4 -3
- twitter_openapi_python_generated/models/home_timeline_response_data.py +4 -3
- twitter_openapi_python_generated/models/instruction_union.py +3 -2
- twitter_openapi_python_generated/models/item_content_union.py +68 -10
- twitter_openapi_python_generated/models/item_result.py +4 -3
- twitter_openapi_python_generated/models/limited_action_results_data.py +4 -3
- twitter_openapi_python_generated/models/list_banner_media.py +93 -0
- twitter_openapi_python_generated/models/list_banner_media_info.py +99 -0
- twitter_openapi_python_generated/models/list_banner_media_salient_rect.py +95 -0
- twitter_openapi_python_generated/models/list_latest_tweets_timeline_response.py +5 -5
- twitter_openapi_python_generated/models/list_members_list.py +93 -0
- twitter_openapi_python_generated/models/list_members_response.py +102 -0
- twitter_openapi_python_generated/models/list_members_response_data.py +93 -0
- twitter_openapi_python_generated/models/list_recommended_users_list.py +93 -0
- twitter_openapi_python_generated/models/list_recommended_users_response.py +102 -0
- twitter_openapi_python_generated/models/list_recommended_users_response_data.py +93 -0
- twitter_openapi_python_generated/models/list_response.py +102 -0
- twitter_openapi_python_generated/models/list_response_data.py +93 -0
- twitter_openapi_python_generated/models/list_subscribers_list.py +93 -0
- twitter_openapi_python_generated/models/list_subscribers_response.py +102 -0
- twitter_openapi_python_generated/models/list_subscribers_response_data.py +93 -0
- twitter_openapi_python_generated/models/list_tweets_timeline_data.py +4 -3
- twitter_openapi_python_generated/models/list_tweets_timeline_list.py +4 -3
- twitter_openapi_python_generated/models/location.py +4 -3
- twitter_openapi_python_generated/models/media.py +23 -11
- twitter_openapi_python_generated/models/media_community_result.py +4 -3
- twitter_openapi_python_generated/models/media_community_results.py +4 -3
- twitter_openapi_python_generated/models/media_community_tweet_data.py +4 -3
- twitter_openapi_python_generated/models/media_extended.py +20 -10
- twitter_openapi_python_generated/models/media_original_info.py +5 -5
- twitter_openapi_python_generated/models/media_original_info_focus_rect.py +4 -3
- twitter_openapi_python_generated/models/media_result.py +4 -3
- twitter_openapi_python_generated/models/media_results.py +4 -3
- twitter_openapi_python_generated/models/media_size.py +4 -3
- twitter_openapi_python_generated/models/media_sizes.py +4 -3
- twitter_openapi_python_generated/models/media_stats.py +4 -3
- twitter_openapi_python_generated/models/media_video_info.py +5 -5
- twitter_openapi_python_generated/models/media_video_info_variant.py +4 -3
- twitter_openapi_python_generated/models/media_visibility_results.py +4 -3
- twitter_openapi_python_generated/models/media_visibility_results_blurred_image_interstitial.py +4 -3
- twitter_openapi_python_generated/models/module_entry.py +4 -3
- twitter_openapi_python_generated/models/module_item.py +6 -5
- twitter_openapi_python_generated/models/note_tweet.py +6 -5
- twitter_openapi_python_generated/models/note_tweet_result.py +4 -3
- twitter_openapi_python_generated/models/note_tweet_result_data.py +6 -5
- twitter_openapi_python_generated/models/note_tweet_result_media.py +5 -5
- twitter_openapi_python_generated/models/note_tweet_result_media_inline_media.py +6 -5
- twitter_openapi_python_generated/models/note_tweet_result_rich_text.py +5 -5
- twitter_openapi_python_generated/models/note_tweet_result_rich_text_tag.py +4 -3
- twitter_openapi_python_generated/models/notification_template.py +4 -3
- twitter_openapi_python_generated/models/notifications_result.py +6 -5
- twitter_openapi_python_generated/models/notifications_timeline_data.py +4 -3
- twitter_openapi_python_generated/models/notifications_timeline_response.py +5 -5
- twitter_openapi_python_generated/models/notifications_user_results.py +4 -3
- twitter_openapi_python_generated/models/notifications_viewer_v2.py +4 -3
- twitter_openapi_python_generated/models/one_factor_login_eligibility.py +4 -3
- twitter_openapi_python_generated/models/other_object_all.py +4 -3
- twitter_openapi_python_generated/models/post_create_bookmark_request.py +5 -4
- twitter_openapi_python_generated/models/post_create_bookmark_request_variables.py +6 -5
- twitter_openapi_python_generated/models/post_create_draft_tweet_request.py +95 -0
- twitter_openapi_python_generated/models/post_create_draft_tweet_request_variables.py +93 -0
- twitter_openapi_python_generated/models/post_create_draft_tweet_request_variables_post_tweet_request.py +97 -0
- twitter_openapi_python_generated/models/post_create_list_request.py +101 -0
- twitter_openapi_python_generated/models/post_create_list_request_features.py +97 -0
- twitter_openapi_python_generated/models/post_create_list_request_variables.py +93 -0
- twitter_openapi_python_generated/models/post_create_retweet_request.py +6 -5
- twitter_openapi_python_generated/models/post_create_retweet_request_variables.py +7 -6
- twitter_openapi_python_generated/models/post_create_tweet_request.py +6 -5
- twitter_openapi_python_generated/models/post_create_tweet_request_features.py +60 -43
- twitter_openapi_python_generated/models/post_create_tweet_request_variables.py +8 -7
- twitter_openapi_python_generated/models/post_create_tweet_request_variables_conversation_control.py +6 -5
- twitter_openapi_python_generated/models/post_create_tweet_request_variables_media.py +7 -7
- twitter_openapi_python_generated/models/post_create_tweet_request_variables_media_media_entities_inner.py +6 -5
- twitter_openapi_python_generated/models/post_create_tweet_request_variables_reply.py +6 -5
- twitter_openapi_python_generated/models/post_cta.py +101 -0
- twitter_openapi_python_generated/models/post_cta_title_text.py +98 -0
- twitter_openapi_python_generated/models/post_cta_title_text_entity.py +97 -0
- twitter_openapi_python_generated/models/post_cta_title_text_entity_ref.py +96 -0
- twitter_openapi_python_generated/models/post_cta_user_results.py +93 -0
- twitter_openapi_python_generated/models/post_cta_user_results_avatar.py +89 -0
- twitter_openapi_python_generated/models/post_cta_user_results_result.py +96 -0
- twitter_openapi_python_generated/models/post_delete_bookmark_request.py +5 -4
- twitter_openapi_python_generated/models/post_delete_draft_tweets_request.py +95 -0
- twitter_openapi_python_generated/models/post_delete_draft_tweets_request_variables.py +89 -0
- twitter_openapi_python_generated/models/post_delete_list_request.py +95 -0
- twitter_openapi_python_generated/models/post_delete_list_request_variables.py +89 -0
- twitter_openapi_python_generated/models/post_delete_retweet_request.py +6 -5
- twitter_openapi_python_generated/models/post_delete_retweet_request_variables.py +7 -6
- twitter_openapi_python_generated/models/post_delete_tweet_request.py +6 -5
- twitter_openapi_python_generated/models/post_favorite_tweet_request.py +5 -4
- twitter_openapi_python_generated/models/post_list_add_member_request.py +101 -0
- twitter_openapi_python_generated/models/post_list_add_member_request_variables.py +91 -0
- twitter_openapi_python_generated/models/post_list_remove_member_request.py +101 -0
- twitter_openapi_python_generated/models/post_unfavorite_tweet_request.py +5 -4
- twitter_openapi_python_generated/models/primary_community_topic.py +6 -5
- twitter_openapi_python_generated/models/profile_bio.py +97 -0
- twitter_openapi_python_generated/models/profile_bio_entities.py +98 -0
- twitter_openapi_python_generated/models/profile_bio_entities_urls.py +96 -0
- twitter_openapi_python_generated/models/profile_response.py +5 -5
- twitter_openapi_python_generated/models/profile_response_data.py +4 -3
- twitter_openapi_python_generated/models/quoted_ref_result.py +4 -3
- twitter_openapi_python_generated/models/quoted_status_permalink.py +4 -3
- twitter_openapi_python_generated/models/ranked_community_result.py +4 -3
- twitter_openapi_python_generated/models/ranked_community_results.py +4 -3
- twitter_openapi_python_generated/models/ranked_community_tweet_data.py +4 -3
- twitter_openapi_python_generated/models/retweet.py +8 -7
- twitter_openapi_python_generated/models/retweet_legacy.py +4 -3
- twitter_openapi_python_generated/models/rich_message.py +4 -3
- twitter_openapi_python_generated/models/scheduled_tweets_viewer.py +89 -0
- twitter_openapi_python_generated/models/search_by_raw_query.py +4 -3
- twitter_openapi_python_generated/models/search_timeline.py +4 -3
- twitter_openapi_python_generated/models/search_timeline_data.py +4 -3
- twitter_openapi_python_generated/models/search_timeline_response.py +5 -5
- twitter_openapi_python_generated/models/self_thread.py +6 -5
- twitter_openapi_python_generated/models/sensitive_media_warning.py +4 -3
- twitter_openapi_python_generated/models/session.py +12 -11
- twitter_openapi_python_generated/models/smarttag.py +97 -0
- twitter_openapi_python_generated/models/smarttag_tag.py +89 -0
- twitter_openapi_python_generated/models/social_context_landing_url.py +4 -3
- twitter_openapi_python_generated/models/social_context_union.py +3 -2
- twitter_openapi_python_generated/models/super_follow_user_profile.py +89 -0
- twitter_openapi_python_generated/models/super_follows_reply_user_result.py +4 -3
- twitter_openapi_python_generated/models/super_follows_reply_user_result_core.py +89 -0
- twitter_openapi_python_generated/models/super_follows_reply_user_result_data.py +12 -11
- twitter_openapi_python_generated/models/super_follows_reply_user_result_legacy.py +4 -3
- twitter_openapi_python_generated/models/text.py +5 -5
- twitter_openapi_python_generated/models/text_entity.py +4 -3
- twitter_openapi_python_generated/models/text_entity_ref.py +4 -3
- twitter_openapi_python_generated/models/text_highlight.py +4 -3
- twitter_openapi_python_generated/models/thumbnail_image.py +4 -3
- twitter_openapi_python_generated/models/timeline.py +5 -5
- twitter_openapi_python_generated/models/timeline_add_entries.py +5 -5
- twitter_openapi_python_generated/models/timeline_add_entry.py +8 -7
- twitter_openapi_python_generated/models/timeline_add_to_module.py +5 -5
- twitter_openapi_python_generated/models/timeline_clear_cache.py +4 -3
- twitter_openapi_python_generated/models/timeline_clear_entries_unread_state.py +4 -3
- twitter_openapi_python_generated/models/timeline_community.py +4 -3
- twitter_openapi_python_generated/models/timeline_cover_behavior.py +4 -3
- twitter_openapi_python_generated/models/timeline_cover_behavior_url.py +4 -3
- twitter_openapi_python_generated/models/timeline_frame.py +97 -0
- twitter_openapi_python_generated/models/timeline_general_context.py +4 -3
- twitter_openapi_python_generated/models/timeline_half_cover.py +5 -5
- twitter_openapi_python_generated/models/timeline_label.py +101 -0
- twitter_openapi_python_generated/models/timeline_mark_entries_unread_greater_than_sort_index.py +6 -5
- twitter_openapi_python_generated/models/timeline_message_prompt.py +4 -3
- twitter_openapi_python_generated/models/timeline_notification.py +4 -3
- twitter_openapi_python_generated/models/timeline_pin_entry.py +4 -3
- twitter_openapi_python_generated/models/timeline_prompt.py +4 -3
- twitter_openapi_python_generated/models/timeline_replace_entry.py +4 -3
- twitter_openapi_python_generated/models/timeline_response.py +5 -5
- twitter_openapi_python_generated/models/timeline_result.py +4 -3
- twitter_openapi_python_generated/models/timeline_show_alert.py +18 -7
- twitter_openapi_python_generated/models/timeline_show_alert_rich_text.py +4 -3
- twitter_openapi_python_generated/models/timeline_show_cover.py +4 -3
- twitter_openapi_python_generated/models/timeline_terminate_timeline.py +4 -3
- twitter_openapi_python_generated/models/timeline_timeline_cursor.py +4 -3
- twitter_openapi_python_generated/models/timeline_timeline_item.py +4 -3
- twitter_openapi_python_generated/models/timeline_timeline_module.py +5 -5
- twitter_openapi_python_generated/models/timeline_tombstone.py +4 -3
- twitter_openapi_python_generated/models/timeline_topic_context.py +4 -3
- twitter_openapi_python_generated/models/timeline_trend.py +20 -7
- twitter_openapi_python_generated/models/timeline_tweet.py +4 -3
- twitter_openapi_python_generated/models/timeline_twitter_list.py +101 -0
- twitter_openapi_python_generated/models/timeline_user.py +4 -3
- twitter_openapi_python_generated/models/timestamp.py +4 -3
- twitter_openapi_python_generated/models/tombstone_entity.py +4 -3
- twitter_openapi_python_generated/models/tombstone_info.py +4 -3
- twitter_openapi_python_generated/models/tombstone_ref.py +4 -3
- twitter_openapi_python_generated/models/tombstone_rich_text.py +5 -5
- twitter_openapi_python_generated/models/topic_context.py +4 -3
- twitter_openapi_python_generated/models/tracing.py +6 -5
- twitter_openapi_python_generated/models/trend_image.py +4 -3
- twitter_openapi_python_generated/models/trend_metadata.py +8 -5
- twitter_openapi_python_generated/models/trend_results.py +6 -5
- twitter_openapi_python_generated/models/tweet.py +52 -9
- twitter_openapi_python_generated/models/tweet_card.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_legacy.py +6 -7
- twitter_openapi_python_generated/models/tweet_card_legacy_binding_value.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_legacy_binding_value_data.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_legacy_binding_value_data_image.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_platform.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_platform_audience.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_platform_data.py +4 -3
- twitter_openapi_python_generated/models/tweet_card_platform_device.py +6 -5
- twitter_openapi_python_generated/models/tweet_detail_response.py +5 -5
- twitter_openapi_python_generated/models/tweet_detail_response_data.py +4 -3
- twitter_openapi_python_generated/models/tweet_edit_control.py +10 -9
- twitter_openapi_python_generated/models/tweet_edit_control_initial.py +8 -7
- twitter_openapi_python_generated/models/tweet_edit_prespective.py +4 -3
- twitter_openapi_python_generated/models/tweet_favoriters_response.py +5 -5
- twitter_openapi_python_generated/models/tweet_favoriters_response_data.py +4 -3
- twitter_openapi_python_generated/models/tweet_interstitial.py +6 -5
- twitter_openapi_python_generated/models/tweet_interstitial_reveal_text.py +5 -5
- twitter_openapi_python_generated/models/tweet_interstitial_text.py +5 -5
- twitter_openapi_python_generated/models/tweet_interstitial_text_entity.py +4 -3
- twitter_openapi_python_generated/models/tweet_interstitial_text_entity_ref.py +4 -3
- twitter_openapi_python_generated/models/tweet_legacy.py +20 -19
- twitter_openapi_python_generated/models/tweet_legacy_scopes.py +4 -3
- twitter_openapi_python_generated/models/tweet_limited_action_results.py +5 -5
- twitter_openapi_python_generated/models/tweet_post_cta.py +105 -0
- twitter_openapi_python_generated/models/tweet_preview_display.py +4 -3
- twitter_openapi_python_generated/models/tweet_preview_display_cta.py +4 -3
- twitter_openapi_python_generated/models/tweet_preview_display_cta_url.py +4 -3
- twitter_openapi_python_generated/models/tweet_preview_display_tweet.py +17 -10
- twitter_openapi_python_generated/models/tweet_preview_display_tweet_view_count.py +6 -5
- twitter_openapi_python_generated/models/tweet_previous_counts.py +4 -3
- twitter_openapi_python_generated/models/tweet_result_by_rest_id_data.py +4 -3
- twitter_openapi_python_generated/models/tweet_result_by_rest_id_response.py +5 -5
- twitter_openapi_python_generated/models/tweet_retweeters_response.py +5 -5
- twitter_openapi_python_generated/models/tweet_retweeters_response_data.py +4 -3
- twitter_openapi_python_generated/models/tweet_tombstone.py +4 -3
- twitter_openapi_python_generated/models/tweet_unavailable.py +4 -3
- twitter_openapi_python_generated/models/tweet_union.py +3 -2
- twitter_openapi_python_generated/models/tweet_view.py +6 -5
- twitter_openapi_python_generated/models/tweet_with_visibility_results.py +4 -3
- twitter_openapi_python_generated/models/twitter_list.py +146 -0
- twitter_openapi_python_generated/models/type_name.py +6 -0
- twitter_openapi_python_generated/models/unfavorite_tweet.py +4 -3
- twitter_openapi_python_generated/models/unfavorite_tweet_response.py +5 -5
- twitter_openapi_python_generated/models/unified_card.py +4 -3
- twitter_openapi_python_generated/models/url.py +4 -3
- twitter_openapi_python_generated/models/urt_endpoint_options.py +7 -7
- twitter_openapi_python_generated/models/urt_endpoint_request_params.py +4 -3
- twitter_openapi_python_generated/models/user.py +150 -12
- twitter_openapi_python_generated/models/user_action_counts.py +89 -0
- twitter_openapi_python_generated/models/user_avatar.py +89 -0
- twitter_openapi_python_generated/models/user_banner.py +89 -0
- twitter_openapi_python_generated/models/user_core.py +101 -0
- twitter_openapi_python_generated/models/user_dm_permissions.py +89 -0
- twitter_openapi_python_generated/models/user_features.py +4 -3
- twitter_openapi_python_generated/models/user_highlights_info.py +4 -3
- twitter_openapi_python_generated/models/user_highlights_tweets_data.py +4 -3
- twitter_openapi_python_generated/models/user_highlights_tweets_response.py +5 -5
- twitter_openapi_python_generated/models/user_highlights_tweets_result.py +4 -3
- twitter_openapi_python_generated/models/user_highlights_tweets_timeline.py +4 -3
- twitter_openapi_python_generated/models/user_highlights_tweets_user.py +4 -3
- twitter_openapi_python_generated/models/user_legacy.py +26 -14
- twitter_openapi_python_generated/models/user_legacy_extended_profile.py +4 -3
- twitter_openapi_python_generated/models/user_legacy_extended_profile_birthdate.py +4 -3
- twitter_openapi_python_generated/models/user_location.py +89 -0
- twitter_openapi_python_generated/models/user_media_permissions.py +89 -0
- twitter_openapi_python_generated/models/user_notifications_settings.py +89 -0
- twitter_openapi_python_generated/models/user_pinned_items.py +90 -0
- twitter_openapi_python_generated/models/user_privacy.py +89 -0
- twitter_openapi_python_generated/models/user_professional.py +9 -9
- twitter_openapi_python_generated/models/user_professional_category.py +4 -3
- twitter_openapi_python_generated/models/user_profile.py +93 -0
- twitter_openapi_python_generated/models/user_profile_metadata.py +89 -0
- twitter_openapi_python_generated/models/user_profile_translation.py +89 -0
- twitter_openapi_python_generated/models/user_relationship_counts.py +91 -0
- twitter_openapi_python_generated/models/user_relationship_perspectives.py +99 -0
- twitter_openapi_python_generated/models/user_response.py +5 -5
- twitter_openapi_python_generated/models/user_response_data.py +4 -3
- twitter_openapi_python_generated/models/user_result_by_screen_name.py +6 -5
- twitter_openapi_python_generated/models/user_result_by_screen_name_core.py +91 -0
- twitter_openapi_python_generated/models/user_result_by_screen_name_legacy.py +4 -3
- twitter_openapi_python_generated/models/user_result_by_screen_name_result.py +32 -11
- twitter_openapi_python_generated/models/user_result_core.py +7 -4
- twitter_openapi_python_generated/models/user_result_privacy.py +89 -0
- twitter_openapi_python_generated/models/user_result_relationship_perspectives.py +95 -0
- twitter_openapi_python_generated/models/user_results.py +7 -4
- twitter_openapi_python_generated/models/user_tip_jar_settings.py +4 -3
- twitter_openapi_python_generated/models/user_tweet_counts.py +91 -0
- twitter_openapi_python_generated/models/user_tweets_data.py +4 -3
- twitter_openapi_python_generated/models/user_tweets_response.py +5 -5
- twitter_openapi_python_generated/models/user_tweets_result_v1.py +4 -3
- twitter_openapi_python_generated/models/user_tweets_result_v2.py +4 -3
- twitter_openapi_python_generated/models/user_tweets_user.py +4 -3
- twitter_openapi_python_generated/models/user_unavailable.py +4 -3
- twitter_openapi_python_generated/models/user_union.py +6 -3
- twitter_openapi_python_generated/models/user_value.py +12 -9
- twitter_openapi_python_generated/models/user_verification.py +101 -0
- twitter_openapi_python_generated/models/user_verification_info.py +4 -3
- twitter_openapi_python_generated/models/user_verification_info_reason.py +6 -5
- twitter_openapi_python_generated/models/user_verification_info_reason_description.py +5 -5
- twitter_openapi_python_generated/models/user_verification_info_reason_description_entities.py +4 -3
- twitter_openapi_python_generated/models/user_verification_info_reason_description_entities_ref.py +4 -3
- twitter_openapi_python_generated/models/user_website.py +89 -0
- twitter_openapi_python_generated/models/users_response.py +5 -5
- twitter_openapi_python_generated/models/users_response_data.py +5 -5
- twitter_openapi_python_generated/models/viewer_badge_counts_response.py +102 -0
- twitter_openapi_python_generated/models/viewer_badge_counts_response_data.py +93 -0
- twitter_openapi_python_generated/models/viewer_badge_counts_result.py +96 -0
- twitter_openapi_python_generated/models/viewer_badge_counts_user_results.py +93 -0
- twitter_openapi_python_generated/models/viewer_badge_counts_viewer.py +93 -0
- twitter_openapi_python_generated/rest.py +86 -10
- twitter_openapi_python_generated-0.0.35.dist-info/METADATA +926 -0
- twitter_openapi_python_generated-0.0.35.dist-info/RECORD +456 -0
- {twitter_openapi_python_generated-0.0.33.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/WHEEL +1 -1
- {twitter_openapi_python_generated-0.0.33.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/licenses/LICENSE +31 -31
- {twitter_openapi_python_generated-0.0.33.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/licenses/LICENSE.AGPL +660 -660
- twitter_openapi_python_generated/models/community_data.py +0 -219
- twitter_openapi_python_generated-0.0.33.dist-info/METADATA +0 -29
- twitter_openapi_python_generated-0.0.33.dist-info/RECORD +0 -335
- {twitter_openapi_python_generated-0.0.33.dist-info → twitter_openapi_python_generated-0.0.35.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
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
|
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
|
23
|
+
from twitter_openapi_python_generated.models.viewer_badge_counts_viewer import ViewerBadgeCountsViewer
|
|
24
|
+
from typing import Optional, Set
|
|
25
|
+
from typing_extensions import Self
|
|
26
|
+
from pydantic_core import to_jsonable_python
|
|
27
|
+
|
|
28
|
+
class ViewerBadgeCountsResponseData(BaseModel):
|
|
29
|
+
"""
|
|
30
|
+
ViewerBadgeCountsResponseData
|
|
31
|
+
""" # noqa: E501
|
|
32
|
+
viewer_v2: ViewerBadgeCountsViewer
|
|
33
|
+
__properties: ClassVar[List[str]] = ["viewer_v2"]
|
|
34
|
+
|
|
35
|
+
model_config = ConfigDict(
|
|
36
|
+
validate_by_name=True,
|
|
37
|
+
validate_by_alias=True,
|
|
38
|
+
validate_assignment=True,
|
|
39
|
+
protected_namespaces=(),
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def to_str(self) -> str:
|
|
44
|
+
"""Returns the string representation of the model using alias"""
|
|
45
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
46
|
+
|
|
47
|
+
def to_json(self) -> str:
|
|
48
|
+
"""Returns the JSON representation of the model using alias"""
|
|
49
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
53
|
+
"""Create an instance of ViewerBadgeCountsResponseData from a JSON string"""
|
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
|
55
|
+
|
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
|
58
|
+
|
|
59
|
+
This has the following differences from calling pydantic's
|
|
60
|
+
`self.model_dump(by_alias=True)`:
|
|
61
|
+
|
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
|
63
|
+
were set at model initialization. Other fields with value `None`
|
|
64
|
+
are ignored.
|
|
65
|
+
"""
|
|
66
|
+
excluded_fields: Set[str] = set([
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
_dict = self.model_dump(
|
|
70
|
+
by_alias=True,
|
|
71
|
+
exclude=excluded_fields,
|
|
72
|
+
exclude_none=True,
|
|
73
|
+
)
|
|
74
|
+
# override the default output from pydantic by calling `to_dict()` of viewer_v2
|
|
75
|
+
if self.viewer_v2:
|
|
76
|
+
_dict['viewer_v2'] = self.viewer_v2.to_dict()
|
|
77
|
+
return _dict
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
81
|
+
"""Create an instance of ViewerBadgeCountsResponseData from a dict"""
|
|
82
|
+
if obj is None:
|
|
83
|
+
return None
|
|
84
|
+
|
|
85
|
+
if not isinstance(obj, dict):
|
|
86
|
+
return cls.model_validate(obj)
|
|
87
|
+
|
|
88
|
+
_obj = cls.model_validate({
|
|
89
|
+
"viewer_v2": ViewerBadgeCountsViewer.from_dict(obj["viewer_v2"]) if obj.get("viewer_v2") is not None else None
|
|
90
|
+
})
|
|
91
|
+
return _obj
|
|
92
|
+
|
|
93
|
+
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
|
23
|
+
from twitter_openapi_python_generated.models.badge_counts import BadgeCounts
|
|
24
|
+
from twitter_openapi_python_generated.models.type_name import TypeName
|
|
25
|
+
from typing import Optional, Set
|
|
26
|
+
from typing_extensions import Self
|
|
27
|
+
from pydantic_core import to_jsonable_python
|
|
28
|
+
|
|
29
|
+
class ViewerBadgeCountsResult(BaseModel):
|
|
30
|
+
"""
|
|
31
|
+
ViewerBadgeCountsResult
|
|
32
|
+
""" # noqa: E501
|
|
33
|
+
typename: TypeName = Field(alias="__typename")
|
|
34
|
+
badge_counts: BadgeCounts
|
|
35
|
+
__properties: ClassVar[List[str]] = ["__typename", "badge_counts"]
|
|
36
|
+
|
|
37
|
+
model_config = ConfigDict(
|
|
38
|
+
validate_by_name=True,
|
|
39
|
+
validate_by_alias=True,
|
|
40
|
+
validate_assignment=True,
|
|
41
|
+
protected_namespaces=(),
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def to_str(self) -> str:
|
|
46
|
+
"""Returns the string representation of the model using alias"""
|
|
47
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
48
|
+
|
|
49
|
+
def to_json(self) -> str:
|
|
50
|
+
"""Returns the JSON representation of the model using alias"""
|
|
51
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
55
|
+
"""Create an instance of ViewerBadgeCountsResult from a JSON string"""
|
|
56
|
+
return cls.from_dict(json.loads(json_str))
|
|
57
|
+
|
|
58
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
59
|
+
"""Return the dictionary representation of the model using alias.
|
|
60
|
+
|
|
61
|
+
This has the following differences from calling pydantic's
|
|
62
|
+
`self.model_dump(by_alias=True)`:
|
|
63
|
+
|
|
64
|
+
* `None` is only added to the output dict for nullable fields that
|
|
65
|
+
were set at model initialization. Other fields with value `None`
|
|
66
|
+
are ignored.
|
|
67
|
+
"""
|
|
68
|
+
excluded_fields: Set[str] = set([
|
|
69
|
+
])
|
|
70
|
+
|
|
71
|
+
_dict = self.model_dump(
|
|
72
|
+
by_alias=True,
|
|
73
|
+
exclude=excluded_fields,
|
|
74
|
+
exclude_none=True,
|
|
75
|
+
)
|
|
76
|
+
# override the default output from pydantic by calling `to_dict()` of badge_counts
|
|
77
|
+
if self.badge_counts:
|
|
78
|
+
_dict['badge_counts'] = self.badge_counts.to_dict()
|
|
79
|
+
return _dict
|
|
80
|
+
|
|
81
|
+
@classmethod
|
|
82
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
83
|
+
"""Create an instance of ViewerBadgeCountsResult from a dict"""
|
|
84
|
+
if obj is None:
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
if not isinstance(obj, dict):
|
|
88
|
+
return cls.model_validate(obj)
|
|
89
|
+
|
|
90
|
+
_obj = cls.model_validate({
|
|
91
|
+
"__typename": obj.get("__typename"),
|
|
92
|
+
"badge_counts": BadgeCounts.from_dict(obj["badge_counts"]) if obj.get("badge_counts") is not None else None
|
|
93
|
+
})
|
|
94
|
+
return _obj
|
|
95
|
+
|
|
96
|
+
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
|
23
|
+
from twitter_openapi_python_generated.models.viewer_badge_counts_result import ViewerBadgeCountsResult
|
|
24
|
+
from typing import Optional, Set
|
|
25
|
+
from typing_extensions import Self
|
|
26
|
+
from pydantic_core import to_jsonable_python
|
|
27
|
+
|
|
28
|
+
class ViewerBadgeCountsUserResults(BaseModel):
|
|
29
|
+
"""
|
|
30
|
+
ViewerBadgeCountsUserResults
|
|
31
|
+
""" # noqa: E501
|
|
32
|
+
result: ViewerBadgeCountsResult
|
|
33
|
+
__properties: ClassVar[List[str]] = ["result"]
|
|
34
|
+
|
|
35
|
+
model_config = ConfigDict(
|
|
36
|
+
validate_by_name=True,
|
|
37
|
+
validate_by_alias=True,
|
|
38
|
+
validate_assignment=True,
|
|
39
|
+
protected_namespaces=(),
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def to_str(self) -> str:
|
|
44
|
+
"""Returns the string representation of the model using alias"""
|
|
45
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
46
|
+
|
|
47
|
+
def to_json(self) -> str:
|
|
48
|
+
"""Returns the JSON representation of the model using alias"""
|
|
49
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
53
|
+
"""Create an instance of ViewerBadgeCountsUserResults from a JSON string"""
|
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
|
55
|
+
|
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
|
58
|
+
|
|
59
|
+
This has the following differences from calling pydantic's
|
|
60
|
+
`self.model_dump(by_alias=True)`:
|
|
61
|
+
|
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
|
63
|
+
were set at model initialization. Other fields with value `None`
|
|
64
|
+
are ignored.
|
|
65
|
+
"""
|
|
66
|
+
excluded_fields: Set[str] = set([
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
_dict = self.model_dump(
|
|
70
|
+
by_alias=True,
|
|
71
|
+
exclude=excluded_fields,
|
|
72
|
+
exclude_none=True,
|
|
73
|
+
)
|
|
74
|
+
# override the default output from pydantic by calling `to_dict()` of result
|
|
75
|
+
if self.result:
|
|
76
|
+
_dict['result'] = self.result.to_dict()
|
|
77
|
+
return _dict
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
81
|
+
"""Create an instance of ViewerBadgeCountsUserResults from a dict"""
|
|
82
|
+
if obj is None:
|
|
83
|
+
return None
|
|
84
|
+
|
|
85
|
+
if not isinstance(obj, dict):
|
|
86
|
+
return cls.model_validate(obj)
|
|
87
|
+
|
|
88
|
+
_obj = cls.model_validate({
|
|
89
|
+
"result": ViewerBadgeCountsResult.from_dict(obj["result"]) if obj.get("result") is not None else None
|
|
90
|
+
})
|
|
91
|
+
return _obj
|
|
92
|
+
|
|
93
|
+
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
|
23
|
+
from twitter_openapi_python_generated.models.viewer_badge_counts_user_results import ViewerBadgeCountsUserResults
|
|
24
|
+
from typing import Optional, Set
|
|
25
|
+
from typing_extensions import Self
|
|
26
|
+
from pydantic_core import to_jsonable_python
|
|
27
|
+
|
|
28
|
+
class ViewerBadgeCountsViewer(BaseModel):
|
|
29
|
+
"""
|
|
30
|
+
ViewerBadgeCountsViewer
|
|
31
|
+
""" # noqa: E501
|
|
32
|
+
user_results: ViewerBadgeCountsUserResults
|
|
33
|
+
__properties: ClassVar[List[str]] = ["user_results"]
|
|
34
|
+
|
|
35
|
+
model_config = ConfigDict(
|
|
36
|
+
validate_by_name=True,
|
|
37
|
+
validate_by_alias=True,
|
|
38
|
+
validate_assignment=True,
|
|
39
|
+
protected_namespaces=(),
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def to_str(self) -> str:
|
|
44
|
+
"""Returns the string representation of the model using alias"""
|
|
45
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
46
|
+
|
|
47
|
+
def to_json(self) -> str:
|
|
48
|
+
"""Returns the JSON representation of the model using alias"""
|
|
49
|
+
return json.dumps(to_jsonable_python(self.to_dict()))
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
53
|
+
"""Create an instance of ViewerBadgeCountsViewer from a JSON string"""
|
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
|
55
|
+
|
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
|
58
|
+
|
|
59
|
+
This has the following differences from calling pydantic's
|
|
60
|
+
`self.model_dump(by_alias=True)`:
|
|
61
|
+
|
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
|
63
|
+
were set at model initialization. Other fields with value `None`
|
|
64
|
+
are ignored.
|
|
65
|
+
"""
|
|
66
|
+
excluded_fields: Set[str] = set([
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
_dict = self.model_dump(
|
|
70
|
+
by_alias=True,
|
|
71
|
+
exclude=excluded_fields,
|
|
72
|
+
exclude_none=True,
|
|
73
|
+
)
|
|
74
|
+
# override the default output from pydantic by calling `to_dict()` of user_results
|
|
75
|
+
if self.user_results:
|
|
76
|
+
_dict['user_results'] = self.user_results.to_dict()
|
|
77
|
+
return _dict
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
81
|
+
"""Create an instance of ViewerBadgeCountsViewer from a dict"""
|
|
82
|
+
if obj is None:
|
|
83
|
+
return None
|
|
84
|
+
|
|
85
|
+
if not isinstance(obj, dict):
|
|
86
|
+
return cls.model_validate(obj)
|
|
87
|
+
|
|
88
|
+
_obj = cls.model_validate({
|
|
89
|
+
"user_results": ViewerBadgeCountsUserResults.from_dict(obj["user_results"]) if obj.get("user_results") is not None else None
|
|
90
|
+
})
|
|
91
|
+
return _obj
|
|
92
|
+
|
|
93
|
+
|
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
""" # noqa: E501
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
import ipaddress
|
|
16
17
|
import io
|
|
17
18
|
import json
|
|
18
19
|
import re
|
|
19
20
|
import ssl
|
|
21
|
+
from urllib.parse import urlparse
|
|
20
22
|
|
|
21
23
|
import urllib3
|
|
22
24
|
|
|
@@ -35,6 +37,59 @@ def is_socks_proxy_url(url):
|
|
|
35
37
|
else:
|
|
36
38
|
return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES
|
|
37
39
|
|
|
40
|
+
def contenttype_matches(contenttype, maintype, subtype):
|
|
41
|
+
"""Matches the given contenttype against the given type and subtype
|
|
42
|
+
|
|
43
|
+
:param contenttype: the content type to match
|
|
44
|
+
:param maintype: the expected maintype
|
|
45
|
+
:param subtype: the expected subtype
|
|
46
|
+
:return: `true` when the given content type matches the given type and subtype,
|
|
47
|
+
regardless of the presence of mime type parameters, otherwise returns `false`.
|
|
48
|
+
:rtype: bool
|
|
49
|
+
"""
|
|
50
|
+
pattern = '{type}/(?:[^+;]+\\+)?{subtype}(?:[ \t]*;.*)?'.format(
|
|
51
|
+
type = re.escape(maintype),
|
|
52
|
+
subtype = re.escape(subtype),
|
|
53
|
+
)
|
|
54
|
+
return re.fullmatch(pattern, contenttype, re.IGNORECASE) is not None
|
|
55
|
+
|
|
56
|
+
def should_bypass_proxies(url: str, no_proxy: str) -> bool:
|
|
57
|
+
"""Return whether ``url`` matches the comma-separated ``no_proxy`` rules."""
|
|
58
|
+
parsed_url = urlparse(url)
|
|
59
|
+
if not parsed_url.hostname:
|
|
60
|
+
return True
|
|
61
|
+
|
|
62
|
+
host = parsed_url.hostname.lower()
|
|
63
|
+
host_and_port = parsed_url.netloc.lower()
|
|
64
|
+
try:
|
|
65
|
+
host_ip = ipaddress.ip_address(host)
|
|
66
|
+
except ValueError:
|
|
67
|
+
host_ip = None
|
|
68
|
+
|
|
69
|
+
for entry in (entry.strip().lower() for entry in no_proxy.split(',')):
|
|
70
|
+
if not entry:
|
|
71
|
+
continue
|
|
72
|
+
if entry == '*':
|
|
73
|
+
return True
|
|
74
|
+
|
|
75
|
+
if host_ip is not None:
|
|
76
|
+
try:
|
|
77
|
+
if host_ip in ipaddress.ip_network(entry, strict=False):
|
|
78
|
+
return True
|
|
79
|
+
except ValueError:
|
|
80
|
+
pass
|
|
81
|
+
|
|
82
|
+
entry = entry.lstrip('.')
|
|
83
|
+
if (
|
|
84
|
+
host == entry
|
|
85
|
+
or host.endswith('.' + entry)
|
|
86
|
+
or host_and_port == entry
|
|
87
|
+
or host_and_port.endswith('.' + entry)
|
|
88
|
+
):
|
|
89
|
+
return True
|
|
90
|
+
|
|
91
|
+
return False
|
|
92
|
+
|
|
38
93
|
|
|
39
94
|
class RESTResponse(io.IOBase):
|
|
40
95
|
|
|
@@ -49,12 +104,17 @@ class RESTResponse(io.IOBase):
|
|
|
49
104
|
self.data = self.response.data
|
|
50
105
|
return self.data
|
|
51
106
|
|
|
107
|
+
@property
|
|
108
|
+
def headers(self):
|
|
109
|
+
"""Returns a dictionary of response headers."""
|
|
110
|
+
return self.response.headers
|
|
111
|
+
|
|
52
112
|
def getheaders(self):
|
|
53
|
-
"""Returns a dictionary of the response headers."""
|
|
113
|
+
"""Returns a dictionary of the response headers; use ``headers`` instead."""
|
|
54
114
|
return self.response.headers
|
|
55
115
|
|
|
56
116
|
def getheader(self, name, default=None):
|
|
57
|
-
"""Returns a given response header."""
|
|
117
|
+
"""Returns a given response header; use ``headers.get()`` instead."""
|
|
58
118
|
return self.response.headers.get(name, default)
|
|
59
119
|
|
|
60
120
|
|
|
@@ -100,7 +160,9 @@ class RESTClientObject:
|
|
|
100
160
|
# https pool manager
|
|
101
161
|
self.pool_manager: urllib3.PoolManager
|
|
102
162
|
|
|
103
|
-
if configuration.proxy
|
|
163
|
+
if configuration.proxy and not should_bypass_proxies(
|
|
164
|
+
configuration.host, configuration.no_proxy or ''
|
|
165
|
+
):
|
|
104
166
|
if is_socks_proxy_url(configuration.proxy):
|
|
105
167
|
from urllib3.contrib.socks import SOCKSProxyManager
|
|
106
168
|
pool_args["proxy_url"] = configuration.proxy
|
|
@@ -109,6 +171,8 @@ class RESTClientObject:
|
|
|
109
171
|
else:
|
|
110
172
|
pool_args["proxy_url"] = configuration.proxy
|
|
111
173
|
pool_args["proxy_headers"] = configuration.proxy_headers
|
|
174
|
+
if configuration.proxy_ssl_context is not None:
|
|
175
|
+
pool_args["proxy_ssl_context"] = configuration.proxy_ssl_context
|
|
112
176
|
self.pool_manager = urllib3.ProxyManager(**pool_args)
|
|
113
177
|
else:
|
|
114
178
|
self.pool_manager = urllib3.PoolManager(**pool_args)
|
|
@@ -172,12 +236,24 @@ class RESTClientObject:
|
|
|
172
236
|
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
|
173
237
|
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
|
174
238
|
|
|
175
|
-
# no content type provided or payload is json
|
|
176
239
|
content_type = headers.get('Content-Type')
|
|
177
|
-
|
|
240
|
+
is_json = (
|
|
178
241
|
not content_type
|
|
179
|
-
or
|
|
180
|
-
)
|
|
242
|
+
or contenttype_matches(content_type, 'application', 'json')
|
|
243
|
+
)
|
|
244
|
+
# JSON is valid YAML 1.2, so structured YAML bodies can use
|
|
245
|
+
# the existing JSON serializer:
|
|
246
|
+
# https://yaml.org/spec/1.2.2/#13-relation-to-json
|
|
247
|
+
is_structured_yaml = (
|
|
248
|
+
content_type
|
|
249
|
+
and (
|
|
250
|
+
contenttype_matches(content_type, 'application', 'yaml')
|
|
251
|
+
or contenttype_matches(content_type, 'text', 'yaml')
|
|
252
|
+
or contenttype_matches(content_type, 'text', 'x-yaml')
|
|
253
|
+
)
|
|
254
|
+
and not isinstance(body, (str, bytes))
|
|
255
|
+
)
|
|
256
|
+
if is_json or is_structured_yaml:
|
|
181
257
|
request_body = None
|
|
182
258
|
if body is not None:
|
|
183
259
|
request_body = json.dumps(body)
|
|
@@ -189,7 +265,7 @@ class RESTClientObject:
|
|
|
189
265
|
headers=headers,
|
|
190
266
|
preload_content=False
|
|
191
267
|
)
|
|
192
|
-
elif content_type
|
|
268
|
+
elif contenttype_matches(content_type, 'application', 'x-www-form-urlencoded'):
|
|
193
269
|
r = self.pool_manager.request(
|
|
194
270
|
method,
|
|
195
271
|
url,
|
|
@@ -199,7 +275,7 @@ class RESTClientObject:
|
|
|
199
275
|
headers=headers,
|
|
200
276
|
preload_content=False
|
|
201
277
|
)
|
|
202
|
-
elif content_type
|
|
278
|
+
elif contenttype_matches(content_type, 'multipart', 'form-data'):
|
|
203
279
|
# must del headers['Content-Type'], or the correct
|
|
204
280
|
# Content-Type which generated by urllib3 will be
|
|
205
281
|
# overwritten.
|
|
@@ -227,7 +303,7 @@ class RESTClientObject:
|
|
|
227
303
|
headers=headers,
|
|
228
304
|
preload_content=False
|
|
229
305
|
)
|
|
230
|
-
elif
|
|
306
|
+
elif content_type.startswith('text/') and isinstance(body, bool):
|
|
231
307
|
request_body = "true" if body else "false"
|
|
232
308
|
r = self.pool_manager.request(
|
|
233
309
|
method,
|