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
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -12,6 +10,7 @@
|
|
|
12
10
|
Do not edit the class manually.
|
|
13
11
|
""" # noqa: E501
|
|
14
12
|
|
|
13
|
+
|
|
15
14
|
import warnings
|
|
16
15
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
|
17
16
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -12,6 +10,7 @@
|
|
|
12
10
|
Do not edit the class manually.
|
|
13
11
|
""" # noqa: E501
|
|
14
12
|
|
|
13
|
+
|
|
15
14
|
import warnings
|
|
16
15
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
|
17
16
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -12,6 +10,7 @@
|
|
|
12
10
|
Do not edit the class manually.
|
|
13
11
|
""" # noqa: E501
|
|
14
12
|
|
|
13
|
+
|
|
15
14
|
import warnings
|
|
16
15
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
|
17
16
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -12,6 +10,7 @@
|
|
|
12
10
|
Do not edit the class manually.
|
|
13
11
|
""" # noqa: E501
|
|
14
12
|
|
|
13
|
+
|
|
15
14
|
import warnings
|
|
16
15
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
|
17
16
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -13,6 +11,7 @@
|
|
|
13
11
|
""" # noqa: E501
|
|
14
12
|
|
|
15
13
|
|
|
14
|
+
|
|
16
15
|
import datetime
|
|
17
16
|
from dateutil.parser import parse
|
|
18
17
|
from enum import Enum
|
|
@@ -22,6 +21,7 @@ import mimetypes
|
|
|
22
21
|
import os
|
|
23
22
|
import re
|
|
24
23
|
import tempfile
|
|
24
|
+
import uuid
|
|
25
25
|
|
|
26
26
|
from urllib.parse import quote
|
|
27
27
|
from typing import Tuple, Optional, List, Dict, Union
|
|
@@ -69,6 +69,7 @@ class ApiClient:
|
|
|
69
69
|
'date': datetime.date,
|
|
70
70
|
'datetime': datetime.datetime,
|
|
71
71
|
'decimal': decimal.Decimal,
|
|
72
|
+
'UUID': uuid.UUID,
|
|
72
73
|
'object': object,
|
|
73
74
|
}
|
|
74
75
|
_pool = None
|
|
@@ -91,7 +92,7 @@ class ApiClient:
|
|
|
91
92
|
self.default_headers[header_name] = header_value
|
|
92
93
|
self.cookie = cookie
|
|
93
94
|
# Set default User-Agent.
|
|
94
|
-
self.user_agent = 'OpenAPI-Generator/0.0.
|
|
95
|
+
self.user_agent = 'OpenAPI-Generator/0.0.35/python'
|
|
95
96
|
self.client_side_validation = configuration.client_side_validation
|
|
96
97
|
|
|
97
98
|
def __enter__(self):
|
|
@@ -247,7 +248,6 @@ class ApiClient:
|
|
|
247
248
|
|
|
248
249
|
return method, url, header_params, body, post_params
|
|
249
250
|
|
|
250
|
-
|
|
251
251
|
def call_api(
|
|
252
252
|
self,
|
|
253
253
|
method,
|
|
@@ -302,17 +302,23 @@ class ApiClient:
|
|
|
302
302
|
# if not found, look for '1XX', '2XX', etc.
|
|
303
303
|
response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
|
|
304
304
|
|
|
305
|
+
# If the response_type has not matched (eg. did not match the previous if statements) and the default response is available, use it.
|
|
306
|
+
if response_type is None and str(response_data.status) not in response_types_map \
|
|
307
|
+
and (not isinstance(response_data.status, int) or not 100 <= response_data.status <= 599 or str(response_data.status)[0] + "XX" not in response_types_map) \
|
|
308
|
+
and 'default' in response_types_map:
|
|
309
|
+
response_type = response_types_map['default']
|
|
310
|
+
|
|
305
311
|
# deserialize response data
|
|
306
312
|
response_text = None
|
|
307
313
|
return_data = None
|
|
308
314
|
try:
|
|
309
|
-
if response_type
|
|
315
|
+
if response_type in ("bytearray", "bytes"):
|
|
310
316
|
return_data = response_data.data
|
|
311
317
|
elif response_type == "file":
|
|
312
318
|
return_data = self.__deserialize_file(response_data)
|
|
313
319
|
elif response_type is not None:
|
|
314
320
|
match = None
|
|
315
|
-
content_type = response_data.
|
|
321
|
+
content_type = response_data.headers.get('content-type')
|
|
316
322
|
if content_type is not None:
|
|
317
323
|
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
|
|
318
324
|
encoding = match.group(1) if match else "utf-8"
|
|
@@ -329,7 +335,7 @@ class ApiClient:
|
|
|
329
335
|
return ApiResponse(
|
|
330
336
|
status_code = response_data.status,
|
|
331
337
|
data = return_data,
|
|
332
|
-
headers = response_data.
|
|
338
|
+
headers = response_data.headers,
|
|
333
339
|
raw_data = response_data.data
|
|
334
340
|
)
|
|
335
341
|
|
|
@@ -357,6 +363,8 @@ class ApiClient:
|
|
|
357
363
|
return obj.get_secret_value()
|
|
358
364
|
elif isinstance(obj, self.PRIMITIVE_TYPES):
|
|
359
365
|
return obj
|
|
366
|
+
elif isinstance(obj, uuid.UUID):
|
|
367
|
+
return str(obj)
|
|
360
368
|
elif isinstance(obj, list):
|
|
361
369
|
return [
|
|
362
370
|
self.sanitize_for_serialization(sub_obj) for sub_obj in obj
|
|
@@ -369,24 +377,24 @@ class ApiClient:
|
|
|
369
377
|
return obj.isoformat()
|
|
370
378
|
elif isinstance(obj, decimal.Decimal):
|
|
371
379
|
return str(obj)
|
|
372
|
-
|
|
373
380
|
elif isinstance(obj, dict):
|
|
374
|
-
|
|
381
|
+
return {
|
|
382
|
+
key: self.sanitize_for_serialization(val)
|
|
383
|
+
for key, val in obj.items()
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
# Convert model obj to dict except
|
|
387
|
+
# attributes `openapi_types`, `attribute_map`
|
|
388
|
+
# and attributes which value is not None.
|
|
389
|
+
# Convert attribute name to json key in
|
|
390
|
+
# model definition for request.
|
|
391
|
+
if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
|
|
392
|
+
obj_dict = obj.to_dict()
|
|
375
393
|
else:
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
# Convert attribute name to json key in
|
|
380
|
-
# model definition for request.
|
|
381
|
-
if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
|
|
382
|
-
obj_dict = obj.to_dict()
|
|
383
|
-
else:
|
|
384
|
-
obj_dict = obj.__dict__
|
|
394
|
+
obj_dict = obj.__dict__
|
|
395
|
+
|
|
396
|
+
return self.sanitize_for_serialization(obj_dict)
|
|
385
397
|
|
|
386
|
-
return {
|
|
387
|
-
key: self.sanitize_for_serialization(val)
|
|
388
|
-
for key, val in obj_dict.items()
|
|
389
|
-
}
|
|
390
398
|
|
|
391
399
|
def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]):
|
|
392
400
|
"""Deserializes response into an object.
|
|
@@ -405,7 +413,7 @@ class ApiClient:
|
|
|
405
413
|
data = json.loads(response_text)
|
|
406
414
|
except ValueError:
|
|
407
415
|
data = response_text
|
|
408
|
-
elif re.match(r'^application/(json|[\w
|
|
416
|
+
elif re.match(r'^application/(json|[\w!#$&.+\-^_]+\+json)\s*(;|$)', content_type, re.IGNORECASE):
|
|
409
417
|
if response_text == "":
|
|
410
418
|
data = ""
|
|
411
419
|
else:
|
|
@@ -432,6 +440,12 @@ class ApiClient:
|
|
|
432
440
|
return None
|
|
433
441
|
|
|
434
442
|
if isinstance(klass, str):
|
|
443
|
+
if klass.startswith('Optional['):
|
|
444
|
+
m = re.match(r'Optional\[(.*)]', klass)
|
|
445
|
+
assert m is not None, "Malformed Optional type definition"
|
|
446
|
+
# data is not None here, so the optionality is already resolved
|
|
447
|
+
return self.__deserialize(data, m.group(1))
|
|
448
|
+
|
|
435
449
|
if klass.startswith('List['):
|
|
436
450
|
m = re.match(r'List\[(.*)]', klass)
|
|
437
451
|
assert m is not None, "Malformed List type definition"
|
|
@@ -454,14 +468,16 @@ class ApiClient:
|
|
|
454
468
|
|
|
455
469
|
if klass in self.PRIMITIVE_TYPES:
|
|
456
470
|
return self.__deserialize_primitive(data, klass)
|
|
457
|
-
elif klass
|
|
471
|
+
elif klass is object:
|
|
458
472
|
return self.__deserialize_object(data)
|
|
459
|
-
elif klass
|
|
473
|
+
elif klass is datetime.date:
|
|
460
474
|
return self.__deserialize_date(data)
|
|
461
|
-
elif klass
|
|
475
|
+
elif klass is datetime.datetime:
|
|
462
476
|
return self.__deserialize_datetime(data)
|
|
463
|
-
elif klass
|
|
477
|
+
elif klass is decimal.Decimal:
|
|
464
478
|
return decimal.Decimal(data)
|
|
479
|
+
elif klass is uuid.UUID:
|
|
480
|
+
return uuid.UUID(data)
|
|
465
481
|
elif issubclass(klass, Enum):
|
|
466
482
|
return self.__deserialize_enum(data, klass)
|
|
467
483
|
else:
|
|
@@ -478,10 +494,15 @@ class ApiClient:
|
|
|
478
494
|
if collection_formats is None:
|
|
479
495
|
collection_formats = {}
|
|
480
496
|
for k, v in params.items() if isinstance(params, dict) else params:
|
|
497
|
+
if isinstance(v, bool):
|
|
498
|
+
v = str(v).lower()
|
|
481
499
|
if k in collection_formats:
|
|
482
500
|
collection_format = collection_formats[k]
|
|
483
501
|
if collection_format == 'multi':
|
|
484
|
-
new_params.extend(
|
|
502
|
+
new_params.extend(
|
|
503
|
+
(k, str(value).lower() if isinstance(value, bool) else value)
|
|
504
|
+
for value in v
|
|
505
|
+
)
|
|
485
506
|
else:
|
|
486
507
|
if collection_format == 'ssv':
|
|
487
508
|
delimiter = ' '
|
|
@@ -492,11 +513,20 @@ class ApiClient:
|
|
|
492
513
|
else: # csv is the default
|
|
493
514
|
delimiter = ','
|
|
494
515
|
new_params.append(
|
|
495
|
-
(k, delimiter.join(
|
|
516
|
+
(k, delimiter.join(
|
|
517
|
+
str(value).lower() if isinstance(value, bool) else str(value)
|
|
518
|
+
for value in v)))
|
|
496
519
|
else:
|
|
497
520
|
new_params.append((k, v))
|
|
498
521
|
return new_params
|
|
499
522
|
|
|
523
|
+
def explode_query_object(self, name, obj):
|
|
524
|
+
"""form style, explode: one query parameter per entry, keyed by the property name; a list repeats the name, None is left out"""
|
|
525
|
+
obj = self.sanitize_for_serialization(obj)
|
|
526
|
+
if not isinstance(obj, dict):
|
|
527
|
+
obj = {name: obj}
|
|
528
|
+
return [(k, item) for k, v in obj.items() for item in (v if isinstance(v, (list, tuple)) else [v]) if item is not None]
|
|
529
|
+
|
|
500
530
|
def parameters_to_url_query(self, params, collection_formats):
|
|
501
531
|
"""Get parameters as list of tuples, formatting collections.
|
|
502
532
|
|
|
@@ -515,10 +545,14 @@ class ApiClient:
|
|
|
515
545
|
if isinstance(v, dict):
|
|
516
546
|
v = json.dumps(v)
|
|
517
547
|
|
|
518
|
-
|
|
548
|
+
# a collection format applies only to a list; an exploded entry may share a declared array parameter's name
|
|
549
|
+
if k in collection_formats and isinstance(v, (list, tuple)):
|
|
519
550
|
collection_format = collection_formats[k]
|
|
520
551
|
if collection_format == 'multi':
|
|
521
|
-
new_params.extend(
|
|
552
|
+
new_params.extend(
|
|
553
|
+
(quote(str(k)), quote(str(value).lower() if isinstance(value, bool) else str(value)))
|
|
554
|
+
for value in v
|
|
555
|
+
)
|
|
522
556
|
else:
|
|
523
557
|
if collection_format == 'ssv':
|
|
524
558
|
delimiter = ' '
|
|
@@ -529,10 +563,13 @@ class ApiClient:
|
|
|
529
563
|
else: # csv is the default
|
|
530
564
|
delimiter = ','
|
|
531
565
|
new_params.append(
|
|
532
|
-
(k, delimiter.join(
|
|
566
|
+
(quote(str(k)), delimiter.join(
|
|
567
|
+
quote(str(value).lower() if isinstance(value, bool) else str(value))
|
|
568
|
+
for value in v))
|
|
533
569
|
)
|
|
534
570
|
else:
|
|
535
|
-
|
|
571
|
+
# names are quoted too: an exploded object's names are runtime data
|
|
572
|
+
new_params.append((quote(str(k)), quote(str(v))))
|
|
536
573
|
|
|
537
574
|
return "&".join(["=".join(map(str, item)) for item in new_params])
|
|
538
575
|
|
|
@@ -668,7 +705,13 @@ class ApiClient:
|
|
|
668
705
|
:param auth_setting: auth settings for the endpoint
|
|
669
706
|
"""
|
|
670
707
|
if auth_setting['in'] == 'cookie':
|
|
671
|
-
|
|
708
|
+
if not 'Cookie' in headers:
|
|
709
|
+
headers['Cookie'] = ""
|
|
710
|
+
else:
|
|
711
|
+
headers['Cookie'] += "; "
|
|
712
|
+
# Account for cookie value containing spaces and special characters, excluding base64 delimiters
|
|
713
|
+
cookie_value = quote(str(auth_setting['value']), safe="!#$%&'()*+-./:<=>?@[]^_`{|}~%+/=")
|
|
714
|
+
headers['Cookie'] += f"{auth_setting['key']}={cookie_value}"
|
|
672
715
|
elif auth_setting['in'] == 'header':
|
|
673
716
|
if auth_setting['type'] != 'http-signature':
|
|
674
717
|
headers[auth_setting['key']] = auth_setting['value']
|
|
@@ -695,14 +738,16 @@ class ApiClient:
|
|
|
695
738
|
os.close(fd)
|
|
696
739
|
os.remove(path)
|
|
697
740
|
|
|
698
|
-
content_disposition = response.
|
|
741
|
+
content_disposition = response.headers.get("Content-Disposition")
|
|
699
742
|
if content_disposition:
|
|
700
743
|
m = re.search(
|
|
701
744
|
r'filename=[\'"]?([^\'"\s]+)[\'"]?',
|
|
702
745
|
content_disposition
|
|
703
746
|
)
|
|
704
747
|
assert m is not None, "Unexpected 'content-disposition' header value"
|
|
705
|
-
filename = m.group(1)
|
|
748
|
+
filename = os.path.basename(m.group(1)) # Strip any directory traversal
|
|
749
|
+
if filename in ("", ".", ".."): # fall back to tmp filename
|
|
750
|
+
filename = os.path.basename(path)
|
|
706
751
|
path = os.path.join(os.path.dirname(path), filename)
|
|
707
752
|
|
|
708
753
|
with open(path, "wb") as f:
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -18,8 +16,11 @@ import http.client as httplib
|
|
|
18
16
|
import logging
|
|
19
17
|
from logging import FileHandler
|
|
20
18
|
import multiprocessing
|
|
19
|
+
import ssl
|
|
21
20
|
import sys
|
|
22
21
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict, Union
|
|
22
|
+
from urllib.parse import urlparse
|
|
23
|
+
from urllib.request import getproxies
|
|
23
24
|
from typing_extensions import NotRequired, Self
|
|
24
25
|
|
|
25
26
|
import urllib3
|
|
@@ -181,11 +182,27 @@ class Configuration:
|
|
|
181
182
|
string values to replace variables in templated server configuration.
|
|
182
183
|
The validation of enums is performed for variables with defined enum
|
|
183
184
|
values before.
|
|
185
|
+
:param verify_ssl: bool - Set this to false to skip verifying SSL certificate
|
|
186
|
+
when calling API from https server.
|
|
184
187
|
:param ssl_ca_cert: str - the path to a file of concatenated CA certificates
|
|
185
188
|
in PEM format.
|
|
186
|
-
:param retries:
|
|
189
|
+
:param retries: int | urllib3.util.retry.Retry - Retry configuration.
|
|
187
190
|
:param ca_cert_data: verify the peer using concatenated CA certificate data
|
|
188
191
|
in PEM (str) or DER (bytes) format.
|
|
192
|
+
:param cert_file: the path to a client certificate file, for mTLS.
|
|
193
|
+
:param key_file: the path to a client key file, for mTLS.
|
|
194
|
+
:param assert_hostname: Set this to True/False to enable/disable SSL hostname verification.
|
|
195
|
+
:param tls_server_name: SSL/TLS Server Name Indication (SNI). Set this to the SNI value expected by the server.
|
|
196
|
+
:param connection_pool_maxsize: Connection pool max size. None in the constructor is coerced to 100 for async and cpu_count * 5 for sync.
|
|
197
|
+
:param proxy: Proxy URL.
|
|
198
|
+
:param no_proxy: Comma-separated hosts that bypass the proxy.
|
|
199
|
+
:param proxy_headers: Proxy headers.
|
|
200
|
+
:param proxy_ssl_context: SSL context used only for the TLS handshake with the proxy itself, independent of the destination TLS settings.
|
|
201
|
+
:param safe_chars_for_path_param: Safe characters for path parameter encoding.
|
|
202
|
+
:param client_side_validation: Enable client-side validation. Default True.
|
|
203
|
+
:param socket_options: Options to pass down to the underlying urllib3 socket.
|
|
204
|
+
:param datetime_format: Datetime format string for serialization.
|
|
205
|
+
:param date_format: Date format string for serialization.
|
|
189
206
|
|
|
190
207
|
:Example:
|
|
191
208
|
|
|
@@ -225,8 +242,23 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
225
242
|
server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None,
|
|
226
243
|
ignore_operation_servers: bool=False,
|
|
227
244
|
ssl_ca_cert: Optional[str]=None,
|
|
228
|
-
retries: Optional[int] = None,
|
|
245
|
+
retries: Optional[Union[int, urllib3.util.retry.Retry]] = None,
|
|
229
246
|
ca_cert_data: Optional[Union[str, bytes]] = None,
|
|
247
|
+
cert_file: Optional[str]=None,
|
|
248
|
+
key_file: Optional[str]=None,
|
|
249
|
+
verify_ssl: bool=True,
|
|
250
|
+
assert_hostname: Optional[bool]=None,
|
|
251
|
+
tls_server_name: Optional[str]=None,
|
|
252
|
+
connection_pool_maxsize: Optional[int]=None,
|
|
253
|
+
proxy: Optional[str]=None,
|
|
254
|
+
no_proxy: Optional[str]=None,
|
|
255
|
+
proxy_headers: Optional[Any]=None,
|
|
256
|
+
proxy_ssl_context: Optional[ssl.SSLContext]=None,
|
|
257
|
+
safe_chars_for_path_param: str='',
|
|
258
|
+
client_side_validation: bool=True,
|
|
259
|
+
socket_options: Optional[Any]=None,
|
|
260
|
+
datetime_format: str="%Y-%m-%dT%H:%M:%S.%f%z",
|
|
261
|
+
date_format: str="%Y-%m-%d",
|
|
230
262
|
*,
|
|
231
263
|
debug: Optional[bool] = None,
|
|
232
264
|
) -> None:
|
|
@@ -296,7 +328,7 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
296
328
|
"""Debug switch
|
|
297
329
|
"""
|
|
298
330
|
|
|
299
|
-
self.verify_ssl =
|
|
331
|
+
self.verify_ssl = verify_ssl
|
|
300
332
|
"""SSL/TLS verification
|
|
301
333
|
Set this to false to skip verifying SSL certificate when calling API
|
|
302
334
|
from https server.
|
|
@@ -308,52 +340,66 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
308
340
|
"""Set this to verify the peer using PEM (str) or DER (bytes)
|
|
309
341
|
certificate data.
|
|
310
342
|
"""
|
|
311
|
-
self.cert_file =
|
|
343
|
+
self.cert_file = cert_file
|
|
312
344
|
"""client certificate file
|
|
313
345
|
"""
|
|
314
|
-
self.key_file =
|
|
346
|
+
self.key_file = key_file
|
|
315
347
|
"""client key file
|
|
316
348
|
"""
|
|
317
|
-
self.assert_hostname =
|
|
349
|
+
self.assert_hostname = assert_hostname
|
|
318
350
|
"""Set this to True/False to enable/disable SSL hostname verification.
|
|
319
351
|
"""
|
|
320
|
-
self.tls_server_name =
|
|
352
|
+
self.tls_server_name = tls_server_name
|
|
321
353
|
"""SSL/TLS Server Name Indication (SNI)
|
|
322
354
|
Set this to the SNI value expected by the server.
|
|
323
355
|
"""
|
|
324
356
|
|
|
325
|
-
self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
|
|
357
|
+
self.connection_pool_maxsize = connection_pool_maxsize if connection_pool_maxsize is not None else multiprocessing.cpu_count() * 5
|
|
326
358
|
"""urllib3 connection pool's maximum number of connections saved
|
|
327
|
-
per pool.
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
359
|
+
per pool. None in the constructor is coerced to cpu_count * 5.
|
|
360
|
+
"""
|
|
361
|
+
|
|
362
|
+
# urllib3 does not read proxy environment variables itself:
|
|
363
|
+
# https://github.com/urllib3/urllib3/issues/1785
|
|
364
|
+
# A proxy taken from the environment is re-resolved when the host is
|
|
365
|
+
# assigned; see the host setter.
|
|
366
|
+
self._proxy_from_env = proxy is None
|
|
367
|
+
if proxy is None or no_proxy is None:
|
|
368
|
+
proxies = getproxies()
|
|
369
|
+
if proxy is None:
|
|
370
|
+
proxy = self._env_proxy(proxies, self.host)
|
|
371
|
+
if no_proxy is None:
|
|
372
|
+
no_proxy = proxies.get("no")
|
|
373
|
+
self._proxy = proxy
|
|
374
|
+
self.no_proxy = no_proxy
|
|
375
|
+
"""Hosts that bypass the proxy
|
|
376
|
+
"""
|
|
377
|
+
self.proxy_headers = proxy_headers
|
|
337
378
|
"""Proxy headers
|
|
338
379
|
"""
|
|
339
|
-
self.
|
|
380
|
+
self.proxy_ssl_context = proxy_ssl_context
|
|
381
|
+
"""SSL context used only for the TLS handshake with the proxy itself
|
|
382
|
+
(e.g. an HTTPS CONNECT tunnel), independent of the destination TLS
|
|
383
|
+
settings above.
|
|
384
|
+
"""
|
|
385
|
+
self.safe_chars_for_path_param = safe_chars_for_path_param
|
|
340
386
|
"""Safe chars for path_param
|
|
341
387
|
"""
|
|
342
388
|
self.retries = retries
|
|
343
|
-
"""
|
|
389
|
+
"""Retry configuration
|
|
344
390
|
"""
|
|
345
391
|
# Enable client side validation
|
|
346
|
-
self.client_side_validation =
|
|
392
|
+
self.client_side_validation = client_side_validation
|
|
347
393
|
|
|
348
|
-
self.socket_options =
|
|
394
|
+
self.socket_options = socket_options
|
|
349
395
|
"""Options to pass down to the underlying urllib3 socket
|
|
350
396
|
"""
|
|
351
397
|
|
|
352
|
-
self.datetime_format =
|
|
398
|
+
self.datetime_format = datetime_format
|
|
353
399
|
"""datetime format
|
|
354
400
|
"""
|
|
355
401
|
|
|
356
|
-
self.date_format =
|
|
402
|
+
self.date_format = date_format
|
|
357
403
|
"""date format
|
|
358
404
|
"""
|
|
359
405
|
|
|
@@ -362,13 +408,17 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
362
408
|
result = cls.__new__(cls)
|
|
363
409
|
memo[id(self)] = result
|
|
364
410
|
for k, v in self.__dict__.items():
|
|
411
|
+
if k == 'proxy_ssl_context':
|
|
412
|
+
# ssl.SSLContext holds unpicklable C state and can't be deepcopied.
|
|
413
|
+
setattr(result, k, v)
|
|
414
|
+
continue
|
|
365
415
|
if k not in ('logger', 'logger_file_handler'):
|
|
366
416
|
setattr(result, k, copy.deepcopy(v, memo))
|
|
367
417
|
# shallow copy of loggers
|
|
368
418
|
result.logger = copy.copy(self.logger)
|
|
369
|
-
# use
|
|
419
|
+
# use setter to re-create the file handler (excluded from __dict__ copy)
|
|
370
420
|
result.logger_file = self.logger_file
|
|
371
|
-
|
|
421
|
+
|
|
372
422
|
return result
|
|
373
423
|
|
|
374
424
|
def __setattr__(self, name: str, value: Any) -> None:
|
|
@@ -505,7 +555,8 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
505
555
|
self.refresh_api_key_hook(self)
|
|
506
556
|
key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
|
|
507
557
|
if key:
|
|
508
|
-
prefix = self.api_key_prefix.get(
|
|
558
|
+
prefix = self.api_key_prefix.get(
|
|
559
|
+
identifier, self.api_key_prefix.get(alias) if alias is not None else None)
|
|
509
560
|
if prefix:
|
|
510
561
|
return "%s %s" % (prefix, key)
|
|
511
562
|
else:
|
|
@@ -524,6 +575,7 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
524
575
|
password = ""
|
|
525
576
|
if self.password is not None:
|
|
526
577
|
password = self.password
|
|
578
|
+
|
|
527
579
|
return urllib3.util.make_headers(
|
|
528
580
|
basic_auth=username + ':' + password
|
|
529
581
|
).get('authorization')
|
|
@@ -750,7 +802,7 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
750
802
|
"OS: {env}\n"\
|
|
751
803
|
"Python Version: {pyversion}\n"\
|
|
752
804
|
"Version of the API: 0.0.1\n"\
|
|
753
|
-
"SDK Package Version: 0.0.
|
|
805
|
+
"SDK Package Version: 0.0.35".\
|
|
754
806
|
format(env=sys.platform, pyversion=sys.version)
|
|
755
807
|
|
|
756
808
|
def get_host_settings(self) -> List[HostSetting]:
|
|
@@ -802,6 +854,7 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
802
854
|
variable_name, variable['default_value'])
|
|
803
855
|
|
|
804
856
|
if 'enum_values' in variable \
|
|
857
|
+
and variable['enum_values'] \
|
|
805
858
|
and used_value not in variable['enum_values']:
|
|
806
859
|
raise ValueError(
|
|
807
860
|
"The variable `{0}` in the host URL has invalid value "
|
|
@@ -823,3 +876,23 @@ conf = twitter_openapi_python_generated.Configuration(
|
|
|
823
876
|
"""Fix base path."""
|
|
824
877
|
self._base_path = value
|
|
825
878
|
self.server_index = None
|
|
879
|
+
if self._proxy_from_env:
|
|
880
|
+
# the scheme-specific proxy depends on the host, which is
|
|
881
|
+
# commonly assigned after construction
|
|
882
|
+
self._proxy = self._env_proxy(getproxies(), value)
|
|
883
|
+
|
|
884
|
+
@staticmethod
|
|
885
|
+
def _env_proxy(proxies: Dict[str, str], host: str) -> Optional[str]:
|
|
886
|
+
"""Pick the environment proxy that applies to `host`."""
|
|
887
|
+
return proxies.get(urlparse(host).scheme) or proxies.get("all")
|
|
888
|
+
|
|
889
|
+
@property
|
|
890
|
+
def proxy(self) -> Optional[str]:
|
|
891
|
+
"""Proxy URL
|
|
892
|
+
"""
|
|
893
|
+
return self._proxy
|
|
894
|
+
|
|
895
|
+
@proxy.setter
|
|
896
|
+
def proxy(self, value: Optional[str]) -> None:
|
|
897
|
+
self._proxy = value
|
|
898
|
+
self._proxy_from_env = False
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Twitter OpenAPI
|
|
5
3
|
|
|
@@ -12,6 +10,7 @@
|
|
|
12
10
|
Do not edit the class manually.
|
|
13
11
|
""" # noqa: E501
|
|
14
12
|
|
|
13
|
+
|
|
15
14
|
from typing import Any, Optional
|
|
16
15
|
from typing_extensions import Self
|
|
17
16
|
|
|
@@ -129,7 +128,7 @@ class ApiException(OpenApiException):
|
|
|
129
128
|
self.body = http_resp.data.decode('utf-8')
|
|
130
129
|
except Exception:
|
|
131
130
|
pass
|
|
132
|
-
self.headers = http_resp.
|
|
131
|
+
self.headers = http_resp.headers
|
|
133
132
|
|
|
134
133
|
@classmethod
|
|
135
134
|
def from_response(
|
|
@@ -170,8 +169,11 @@ class ApiException(OpenApiException):
|
|
|
170
169
|
error_message += "HTTP response headers: {0}\n".format(
|
|
171
170
|
self.headers)
|
|
172
171
|
|
|
173
|
-
if self.
|
|
174
|
-
error_message += "HTTP response body: {0}\n".format(self.
|
|
172
|
+
if self.body:
|
|
173
|
+
error_message += "HTTP response body: {0}\n".format(self.body)
|
|
174
|
+
|
|
175
|
+
if self.data:
|
|
176
|
+
error_message += "HTTP response data: {0}\n".format(self.data)
|
|
175
177
|
|
|
176
178
|
return error_message
|
|
177
179
|
|