twitter-openapi-python-generated 0.0.15__py3-none-any.whl → 0.0.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. twitter_openapi_python_generated/__init__.py +20 -1
  2. twitter_openapi_python_generated/api/default_api.py +23 -6
  3. twitter_openapi_python_generated/api/other_api.py +3 -3
  4. twitter_openapi_python_generated/api/post_api.py +691 -77
  5. twitter_openapi_python_generated/api/tweet_api.py +33 -33
  6. twitter_openapi_python_generated/api/user_api.py +6 -6
  7. twitter_openapi_python_generated/api/user_list_api.py +15 -15
  8. twitter_openapi_python_generated/api/users_api.py +3 -3
  9. twitter_openapi_python_generated/api/v11_get_api.py +6 -6
  10. twitter_openapi_python_generated/api/v11_post_api.py +6 -6
  11. twitter_openapi_python_generated/api/v20_get_api.py +3 -3
  12. twitter_openapi_python_generated/api_client.py +36 -24
  13. twitter_openapi_python_generated/configuration.py +14 -14
  14. twitter_openapi_python_generated/models/__init__.py +19 -0
  15. twitter_openapi_python_generated/models/allow_download_status.py +88 -0
  16. twitter_openapi_python_generated/models/article_lifecycle_state.py +88 -0
  17. twitter_openapi_python_generated/models/article_metadata.py +88 -0
  18. twitter_openapi_python_generated/models/article_result.py +14 -2
  19. twitter_openapi_python_generated/models/content_union.py +2 -2
  20. twitter_openapi_python_generated/models/create_bookmark_response.py +92 -0
  21. twitter_openapi_python_generated/models/create_bookmark_response_data.py +88 -0
  22. twitter_openapi_python_generated/models/delete_bookmark_response.py +92 -0
  23. twitter_openapi_python_generated/models/delete_bookmark_response_data.py +88 -0
  24. twitter_openapi_python_generated/models/get_bookmarks200_response.py +2 -2
  25. twitter_openapi_python_generated/models/get_favoriters200_response.py +2 -2
  26. twitter_openapi_python_generated/models/get_followers200_response.py +2 -2
  27. twitter_openapi_python_generated/models/get_home_latest_timeline200_response.py +2 -2
  28. twitter_openapi_python_generated/models/get_likes200_response.py +2 -2
  29. twitter_openapi_python_generated/models/get_list_latest_tweets_timeline200_response.py +2 -2
  30. twitter_openapi_python_generated/models/get_profile_spotlights_query200_response.py +2 -2
  31. twitter_openapi_python_generated/models/get_retweeters200_response.py +2 -2
  32. twitter_openapi_python_generated/models/get_search_timeline200_response.py +2 -2
  33. twitter_openapi_python_generated/models/get_tweet_detail200_response.py +2 -2
  34. twitter_openapi_python_generated/models/get_tweet_result_by_rest_id200_response.py +2 -2
  35. twitter_openapi_python_generated/models/get_user_by_rest_id200_response.py +2 -2
  36. twitter_openapi_python_generated/models/get_user_highlights_tweets200_response.py +2 -2
  37. twitter_openapi_python_generated/models/get_users_by_rest_ids200_response.py +2 -2
  38. twitter_openapi_python_generated/models/instruction_union.py +2 -2
  39. twitter_openapi_python_generated/models/item_content_union.py +2 -2
  40. twitter_openapi_python_generated/models/media.py +25 -5
  41. twitter_openapi_python_generated/models/media_extended.py +13 -1
  42. twitter_openapi_python_generated/models/media_result.py +88 -0
  43. twitter_openapi_python_generated/models/media_results.py +92 -0
  44. twitter_openapi_python_generated/models/media_visibility_results.py +92 -0
  45. twitter_openapi_python_generated/models/media_visibility_results_blurred_image_interstitial.py +99 -0
  46. twitter_openapi_python_generated/models/other200_response.py +2 -2
  47. twitter_openapi_python_generated/models/post_create_bookmark200_response.py +138 -0
  48. twitter_openapi_python_generated/models/post_create_bookmark_request.py +94 -0
  49. twitter_openapi_python_generated/models/post_create_bookmark_request_variables.py +88 -0
  50. twitter_openapi_python_generated/models/post_create_retweet200_response.py +2 -2
  51. twitter_openapi_python_generated/models/post_create_tweet200_response.py +2 -2
  52. twitter_openapi_python_generated/models/post_delete_bookmark200_response.py +138 -0
  53. twitter_openapi_python_generated/models/post_delete_bookmark_request.py +94 -0
  54. twitter_openapi_python_generated/models/post_delete_retweet200_response.py +2 -2
  55. twitter_openapi_python_generated/models/post_delete_tweet200_response.py +2 -2
  56. twitter_openapi_python_generated/models/post_favorite_tweet200_response.py +2 -2
  57. twitter_openapi_python_generated/models/post_unfavorite_tweet200_response.py +2 -2
  58. twitter_openapi_python_generated/models/social_context_union.py +2 -2
  59. twitter_openapi_python_generated/models/tweet_union.py +2 -2
  60. twitter_openapi_python_generated/models/tweet_with_visibility_results.py +7 -1
  61. twitter_openapi_python_generated/models/url.py +2 -2
  62. twitter_openapi_python_generated/models/user.py +13 -1
  63. twitter_openapi_python_generated/models/user_legacy_extended_profile.py +92 -0
  64. twitter_openapi_python_generated/models/user_legacy_extended_profile_birthdate.py +110 -0
  65. twitter_openapi_python_generated/models/user_tip_jar_settings.py +100 -0
  66. twitter_openapi_python_generated/models/user_union.py +2 -2
  67. twitter_openapi_python_generated/rest.py +2 -0
  68. {twitter_openapi_python_generated-0.0.15.dist-info → twitter_openapi_python_generated-0.0.16.dist-info}/METADATA +1 -1
  69. {twitter_openapi_python_generated-0.0.15.dist-info → twitter_openapi_python_generated-0.0.16.dist-info}/RECORD +73 -54
  70. {twitter_openapi_python_generated-0.0.15.dist-info → twitter_openapi_python_generated-0.0.16.dist-info}/LICENSE +0 -0
  71. {twitter_openapi_python_generated-0.0.15.dist-info → twitter_openapi_python_generated-0.0.16.dist-info}/LICENSE.AGPL +0 -0
  72. {twitter_openapi_python_generated-0.0.15.dist-info → twitter_openapi_python_generated-0.0.16.dist-info}/WHEEL +0 -0
  73. {twitter_openapi_python_generated-0.0.15.dist-info → twitter_openapi_python_generated-0.0.16.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,8 @@ import re
23
23
  import tempfile
24
24
 
25
25
  from urllib.parse import quote
26
- from typing import Tuple, Optional, List, Dict
26
+ from typing import Tuple, Optional, List, Dict, Union
27
+ from pydantic import SecretStr
27
28
 
28
29
  from twitter_openapi_python_generated.configuration import Configuration
29
30
  from twitter_openapi_python_generated.api_response import ApiResponse, T as ApiResponseT
@@ -88,7 +89,7 @@ class ApiClient:
88
89
  self.default_headers[header_name] = header_value
89
90
  self.cookie = cookie
90
91
  # Set default User-Agent.
91
- self.user_agent = 'OpenAPI-Generator/0.0.15/python'
92
+ self.user_agent = 'OpenAPI-Generator/0.0.16/python'
92
93
  self.client_side_validation = configuration.client_side_validation
93
94
 
94
95
  def __enter__(self):
@@ -208,7 +209,8 @@ class ApiClient:
208
209
  post_params,
209
210
  collection_formats
210
211
  )
211
- post_params.extend(self.files_parameters(files))
212
+ if files:
213
+ post_params.extend(self.files_parameters(files))
212
214
 
213
215
  # auth setting
214
216
  self.update_params_for_auth(
@@ -313,7 +315,10 @@ class ApiClient:
313
315
  match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
314
316
  encoding = match.group(1) if match else "utf-8"
315
317
  response_text = response_data.data.decode(encoding)
316
- return_data = self.deserialize(response_text, response_type)
318
+ if response_type in ["bytearray", "str"]:
319
+ return_data = self.__deserialize_primitive(response_text, response_type)
320
+ else:
321
+ return_data = self.deserialize(response_text, response_type)
317
322
  finally:
318
323
  if not 200 <= response_data.status <= 299:
319
324
  raise ApiException.from_response(
@@ -333,6 +338,7 @@ class ApiClient:
333
338
  """Builds a JSON POST object.
334
339
 
335
340
  If obj is None, return None.
341
+ If obj is SecretStr, return obj.get_secret_value()
336
342
  If obj is str, int, long, float, bool, return directly.
337
343
  If obj is datetime.datetime, datetime.date
338
344
  convert to string in iso8601 format.
@@ -345,6 +351,10 @@ class ApiClient:
345
351
  """
346
352
  if obj is None:
347
353
  return None
354
+ elif isinstance(obj, Enum):
355
+ return obj.value
356
+ elif isinstance(obj, SecretStr):
357
+ return obj.get_secret_value()
348
358
  elif isinstance(obj, self.PRIMITIVE_TYPES):
349
359
  return obj
350
360
  elif isinstance(obj, list):
@@ -366,7 +376,10 @@ class ApiClient:
366
376
  # and attributes which value is not None.
367
377
  # Convert attribute name to json key in
368
378
  # model definition for request.
369
- obj_dict = obj.to_dict()
379
+ if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
380
+ obj_dict = obj.to_dict()
381
+ else:
382
+ obj_dict = obj.__dict__
370
383
 
371
384
  return {
372
385
  key: self.sanitize_for_serialization(val)
@@ -505,31 +518,30 @@ class ApiClient:
505
518
 
506
519
  return "&".join(["=".join(map(str, item)) for item in new_params])
507
520
 
508
- def files_parameters(self, files=None):
521
+ def files_parameters(self, files: Dict[str, Union[str, bytes]]):
509
522
  """Builds form parameters.
510
523
 
511
524
  :param files: File parameters.
512
525
  :return: Form parameters with files.
513
526
  """
514
527
  params = []
515
-
516
- if files:
517
- for k, v in files.items():
518
- if not v:
519
- continue
520
- file_names = v if type(v) is list else [v]
521
- for n in file_names:
522
- with open(n, 'rb') as f:
523
- filename = os.path.basename(f.name)
524
- filedata = f.read()
525
- mimetype = (
526
- mimetypes.guess_type(filename)[0]
527
- or 'application/octet-stream'
528
- )
529
- params.append(
530
- tuple([k, tuple([filename, filedata, mimetype])])
531
- )
532
-
528
+ for k, v in files.items():
529
+ if isinstance(v, str):
530
+ with open(v, 'rb') as f:
531
+ filename = os.path.basename(f.name)
532
+ filedata = f.read()
533
+ elif isinstance(v, bytes):
534
+ filename = k
535
+ filedata = v
536
+ else:
537
+ raise ValueError("Unsupported file value")
538
+ mimetype = (
539
+ mimetypes.guess_type(filename)[0]
540
+ or 'application/octet-stream'
541
+ )
542
+ params.append(
543
+ tuple([k, tuple([filename, filedata, mimetype])])
544
+ )
533
545
  return params
534
546
 
535
547
  def select_header_accept(self, accepts: List[str]) -> Optional[str]:
@@ -432,15 +432,6 @@ conf = twitter_openapi_python_generated.Configuration(
432
432
  'key': 'Authorization',
433
433
  'value': 'Bearer ' + self.access_token
434
434
  }
435
- if 'CacheControl' in self.api_key:
436
- auth['CacheControl'] = {
437
- 'type': 'api_key',
438
- 'in': 'header',
439
- 'key': 'Cache-Control',
440
- 'value': self.get_api_key_with_prefix(
441
- 'CacheControl',
442
- ),
443
- }
444
435
  if 'ClientLanguage' in self.api_key:
445
436
  auth['ClientLanguage'] = {
446
437
  'type': 'api_key',
@@ -486,13 +477,22 @@ conf = twitter_openapi_python_generated.Configuration(
486
477
  'GuestToken',
487
478
  ),
488
479
  }
489
- if 'Pragma' in self.api_key:
490
- auth['Pragma'] = {
480
+ if 'Priority' in self.api_key:
481
+ auth['Priority'] = {
482
+ 'type': 'api_key',
483
+ 'in': 'header',
484
+ 'key': 'Priority',
485
+ 'value': self.get_api_key_with_prefix(
486
+ 'Priority',
487
+ ),
488
+ }
489
+ if 'Referer' in self.api_key:
490
+ auth['Referer'] = {
491
491
  'type': 'api_key',
492
492
  'in': 'header',
493
- 'key': 'Pragma',
493
+ 'key': 'Referer',
494
494
  'value': self.get_api_key_with_prefix(
495
- 'Pragma',
495
+ 'Referer',
496
496
  ),
497
497
  }
498
498
  if 'SecChUa' in self.api_key:
@@ -569,7 +569,7 @@ conf = twitter_openapi_python_generated.Configuration(
569
569
  "OS: {env}\n"\
570
570
  "Python Version: {pyversion}\n"\
571
571
  "Version of the API: 0.0.1\n"\
572
- "SDK Package Version: 0.0.15".\
572
+ "SDK Package Version: 0.0.16".\
573
573
  format(env=sys.platform, pyversion=sys.version)
574
574
 
575
575
  def get_host_settings(self):
@@ -18,12 +18,15 @@
18
18
  from twitter_openapi_python_generated.models.additional_media_info import AdditionalMediaInfo
19
19
  from twitter_openapi_python_generated.models.additional_media_info_call_to_actions import AdditionalMediaInfoCallToActions
20
20
  from twitter_openapi_python_generated.models.additional_media_info_call_to_actions_url import AdditionalMediaInfoCallToActionsUrl
21
+ from twitter_openapi_python_generated.models.allow_download_status import AllowDownloadStatus
21
22
  from twitter_openapi_python_generated.models.article import Article
22
23
  from twitter_openapi_python_generated.models.article_cover_media import ArticleCoverMedia
23
24
  from twitter_openapi_python_generated.models.article_cover_media_color_info import ArticleCoverMediaColorInfo
24
25
  from twitter_openapi_python_generated.models.article_cover_media_color_info_palette import ArticleCoverMediaColorInfoPalette
25
26
  from twitter_openapi_python_generated.models.article_cover_media_color_info_palette_rgb import ArticleCoverMediaColorInfoPaletteRGB
26
27
  from twitter_openapi_python_generated.models.article_cover_media_info import ArticleCoverMediaInfo
28
+ from twitter_openapi_python_generated.models.article_lifecycle_state import ArticleLifecycleState
29
+ from twitter_openapi_python_generated.models.article_metadata import ArticleMetadata
27
30
  from twitter_openapi_python_generated.models.article_result import ArticleResult
28
31
  from twitter_openapi_python_generated.models.article_results import ArticleResults
29
32
  from twitter_openapi_python_generated.models.author_community_relationship import AuthorCommunityRelationship
@@ -56,6 +59,8 @@ from twitter_openapi_python_generated.models.content_entry_type import ContentEn
56
59
  from twitter_openapi_python_generated.models.content_item_type import ContentItemType
57
60
  from twitter_openapi_python_generated.models.content_union import ContentUnion
58
61
  from twitter_openapi_python_generated.models.cover_cta import CoverCta
62
+ from twitter_openapi_python_generated.models.create_bookmark_response import CreateBookmarkResponse
63
+ from twitter_openapi_python_generated.models.create_bookmark_response_data import CreateBookmarkResponseData
59
64
  from twitter_openapi_python_generated.models.create_retweet import CreateRetweet
60
65
  from twitter_openapi_python_generated.models.create_retweet_response import CreateRetweetResponse
61
66
  from twitter_openapi_python_generated.models.create_retweet_response_data import CreateRetweetResponseData
@@ -66,6 +71,8 @@ from twitter_openapi_python_generated.models.create_tweet_response_data import C
66
71
  from twitter_openapi_python_generated.models.create_tweet_response_result import CreateTweetResponseResult
67
72
  from twitter_openapi_python_generated.models.cta_client_event_info import CtaClientEventInfo
68
73
  from twitter_openapi_python_generated.models.cursor_type import CursorType
74
+ from twitter_openapi_python_generated.models.delete_bookmark_response import DeleteBookmarkResponse
75
+ from twitter_openapi_python_generated.models.delete_bookmark_response_data import DeleteBookmarkResponseData
69
76
  from twitter_openapi_python_generated.models.delete_retweet import DeleteRetweet
70
77
  from twitter_openapi_python_generated.models.delete_retweet_response import DeleteRetweetResponse
71
78
  from twitter_openapi_python_generated.models.delete_retweet_response_data import DeleteRetweetResponseData
@@ -121,11 +128,15 @@ from twitter_openapi_python_generated.models.media import Media
121
128
  from twitter_openapi_python_generated.models.media_extended import MediaExtended
122
129
  from twitter_openapi_python_generated.models.media_original_info import MediaOriginalInfo
123
130
  from twitter_openapi_python_generated.models.media_original_info_focus_rect import MediaOriginalInfoFocusRect
131
+ from twitter_openapi_python_generated.models.media_result import MediaResult
132
+ from twitter_openapi_python_generated.models.media_results import MediaResults
124
133
  from twitter_openapi_python_generated.models.media_size import MediaSize
125
134
  from twitter_openapi_python_generated.models.media_sizes import MediaSizes
126
135
  from twitter_openapi_python_generated.models.media_stats import MediaStats
127
136
  from twitter_openapi_python_generated.models.media_video_info import MediaVideoInfo
128
137
  from twitter_openapi_python_generated.models.media_video_info_variant import MediaVideoInfoVariant
138
+ from twitter_openapi_python_generated.models.media_visibility_results import MediaVisibilityResults
139
+ from twitter_openapi_python_generated.models.media_visibility_results_blurred_image_interstitial import MediaVisibilityResultsBlurredImageInterstitial
129
140
  from twitter_openapi_python_generated.models.module_entry import ModuleEntry
130
141
  from twitter_openapi_python_generated.models.module_item import ModuleItem
131
142
  from twitter_openapi_python_generated.models.note_tweet import NoteTweet
@@ -138,6 +149,9 @@ from twitter_openapi_python_generated.models.note_tweet_result_rich_text_tag imp
138
149
  from twitter_openapi_python_generated.models.one_factor_login_eligibility import OneFactorLoginEligibility
139
150
  from twitter_openapi_python_generated.models.other200_response import Other200Response
140
151
  from twitter_openapi_python_generated.models.other_response import OtherResponse
152
+ from twitter_openapi_python_generated.models.post_create_bookmark200_response import PostCreateBookmark200Response
153
+ from twitter_openapi_python_generated.models.post_create_bookmark_request import PostCreateBookmarkRequest
154
+ from twitter_openapi_python_generated.models.post_create_bookmark_request_variables import PostCreateBookmarkRequestVariables
141
155
  from twitter_openapi_python_generated.models.post_create_retweet200_response import PostCreateRetweet200Response
142
156
  from twitter_openapi_python_generated.models.post_create_retweet_request import PostCreateRetweetRequest
143
157
  from twitter_openapi_python_generated.models.post_create_retweet_request_variables import PostCreateRetweetRequestVariables
@@ -148,6 +162,8 @@ from twitter_openapi_python_generated.models.post_create_tweet_request_variables
148
162
  from twitter_openapi_python_generated.models.post_create_tweet_request_variables_media import PostCreateTweetRequestVariablesMedia
149
163
  from twitter_openapi_python_generated.models.post_create_tweet_request_variables_media_media_entities_inner import PostCreateTweetRequestVariablesMediaMediaEntitiesInner
150
164
  from twitter_openapi_python_generated.models.post_create_tweet_request_variables_reply import PostCreateTweetRequestVariablesReply
165
+ from twitter_openapi_python_generated.models.post_delete_bookmark200_response import PostDeleteBookmark200Response
166
+ from twitter_openapi_python_generated.models.post_delete_bookmark_request import PostDeleteBookmarkRequest
151
167
  from twitter_openapi_python_generated.models.post_delete_retweet200_response import PostDeleteRetweet200Response
152
168
  from twitter_openapi_python_generated.models.post_delete_retweet_request import PostDeleteRetweetRequest
153
169
  from twitter_openapi_python_generated.models.post_delete_retweet_request_variables import PostDeleteRetweetRequestVariables
@@ -258,6 +274,8 @@ from twitter_openapi_python_generated.models.user_highlights_tweets_result impor
258
274
  from twitter_openapi_python_generated.models.user_highlights_tweets_timeline import UserHighlightsTweetsTimeline
259
275
  from twitter_openapi_python_generated.models.user_highlights_tweets_user import UserHighlightsTweetsUser
260
276
  from twitter_openapi_python_generated.models.user_legacy import UserLegacy
277
+ from twitter_openapi_python_generated.models.user_legacy_extended_profile import UserLegacyExtendedProfile
278
+ from twitter_openapi_python_generated.models.user_legacy_extended_profile_birthdate import UserLegacyExtendedProfileBirthdate
261
279
  from twitter_openapi_python_generated.models.user_professional import UserProfessional
262
280
  from twitter_openapi_python_generated.models.user_professional_category import UserProfessionalCategory
263
281
  from twitter_openapi_python_generated.models.user_response import UserResponse
@@ -267,6 +285,7 @@ from twitter_openapi_python_generated.models.user_result_by_screen_name_legacy i
267
285
  from twitter_openapi_python_generated.models.user_result_by_screen_name_result import UserResultByScreenNameResult
268
286
  from twitter_openapi_python_generated.models.user_result_core import UserResultCore
269
287
  from twitter_openapi_python_generated.models.user_results import UserResults
288
+ from twitter_openapi_python_generated.models.user_tip_jar_settings import UserTipJarSettings
270
289
  from twitter_openapi_python_generated.models.user_tweets_data import UserTweetsData
271
290
  from twitter_openapi_python_generated.models.user_tweets_response import UserTweetsResponse
272
291
  from twitter_openapi_python_generated.models.user_tweets_result import UserTweetsResult
@@ -0,0 +1,88 @@
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, StrictBool
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class AllowDownloadStatus(BaseModel):
27
+ """
28
+ AllowDownloadStatus
29
+ """ # noqa: E501
30
+ allow_download: StrictBool
31
+ __properties: ClassVar[List[str]] = ["allow_download"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of AllowDownloadStatus from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of AllowDownloadStatus from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "allow_download": obj.get("allow_download")
85
+ })
86
+ return _obj
87
+
88
+
@@ -0,0 +1,88 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Twitter OpenAPI
5
+
6
+ Twitter OpenAPI(Swagger) specification
7
+
8
+ The version of the OpenAPI document: 0.0.1
9
+ Contact: yuki@yuki0311.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, StrictInt
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class ArticleLifecycleState(BaseModel):
27
+ """
28
+ ArticleLifecycleState
29
+ """ # noqa: E501
30
+ modified_at_secs: StrictInt
31
+ __properties: ClassVar[List[str]] = ["modified_at_secs"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of ArticleLifecycleState from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of ArticleLifecycleState from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "modified_at_secs": obj.get("modified_at_secs")
85
+ })
86
+ return _obj
87
+
88
+
@@ -0,0 +1,88 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Twitter OpenAPI
5
+
6
+ Twitter OpenAPI(Swagger) specification
7
+
8
+ The version of the OpenAPI document: 0.0.1
9
+ Contact: yuki@yuki0311.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, StrictInt
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class ArticleMetadata(BaseModel):
27
+ """
28
+ ArticleMetadata
29
+ """ # noqa: E501
30
+ first_published_at_secs: StrictInt
31
+ __properties: ClassVar[List[str]] = ["first_published_at_secs"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of ArticleMetadata from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of ArticleMetadata from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "first_published_at_secs": obj.get("first_published_at_secs")
85
+ })
86
+ return _obj
87
+
88
+
@@ -19,9 +19,11 @@ import re # noqa: F401
19
19
  import json
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
22
- from typing import Any, ClassVar, Dict, List
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing_extensions import Annotated
24
24
  from twitter_openapi_python_generated.models.article_cover_media import ArticleCoverMedia
25
+ from twitter_openapi_python_generated.models.article_lifecycle_state import ArticleLifecycleState
26
+ from twitter_openapi_python_generated.models.article_metadata import ArticleMetadata
25
27
  from typing import Optional, Set
26
28
  from typing_extensions import Self
27
29
 
@@ -31,10 +33,12 @@ class ArticleResult(BaseModel):
31
33
  """ # noqa: E501
32
34
  cover_media: ArticleCoverMedia
33
35
  id: StrictStr
36
+ lifecycle_state: Optional[ArticleLifecycleState] = None
37
+ metadata: ArticleMetadata
34
38
  preview_text: StrictStr
35
39
  rest_id: Annotated[str, Field(strict=True)]
36
40
  title: StrictStr
37
- __properties: ClassVar[List[str]] = ["cover_media", "id", "preview_text", "rest_id", "title"]
41
+ __properties: ClassVar[List[str]] = ["cover_media", "id", "lifecycle_state", "metadata", "preview_text", "rest_id", "title"]
38
42
 
39
43
  @field_validator('rest_id')
40
44
  def rest_id_validate_regular_expression(cls, value):
@@ -85,6 +89,12 @@ class ArticleResult(BaseModel):
85
89
  # override the default output from pydantic by calling `to_dict()` of cover_media
86
90
  if self.cover_media:
87
91
  _dict['cover_media'] = self.cover_media.to_dict()
92
+ # override the default output from pydantic by calling `to_dict()` of lifecycle_state
93
+ if self.lifecycle_state:
94
+ _dict['lifecycle_state'] = self.lifecycle_state.to_dict()
95
+ # override the default output from pydantic by calling `to_dict()` of metadata
96
+ if self.metadata:
97
+ _dict['metadata'] = self.metadata.to_dict()
88
98
  return _dict
89
99
 
90
100
  @classmethod
@@ -99,6 +109,8 @@ class ArticleResult(BaseModel):
99
109
  _obj = cls.model_validate({
100
110
  "cover_media": ArticleCoverMedia.from_dict(obj["cover_media"]) if obj.get("cover_media") is not None else None,
101
111
  "id": obj.get("id"),
112
+ "lifecycle_state": ArticleLifecycleState.from_dict(obj["lifecycle_state"]) if obj.get("lifecycle_state") is not None else None,
113
+ "metadata": ArticleMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None,
102
114
  "preview_text": obj.get("preview_text"),
103
115
  "rest_id": obj.get("rest_id"),
104
116
  "title": obj.get("title")
@@ -22,7 +22,7 @@ from twitter_openapi_python_generated.models.timeline_timeline_cursor import Tim
22
22
  from twitter_openapi_python_generated.models.timeline_timeline_item import TimelineTimelineItem
23
23
  from twitter_openapi_python_generated.models.timeline_timeline_module import TimelineTimelineModule
24
24
  from pydantic import StrictStr, Field
25
- from typing import Union, List, Optional, Dict
25
+ from typing import Union, List, Set, Optional, Dict
26
26
  from typing_extensions import Literal, Self
27
27
 
28
28
  CONTENTUNION_ONE_OF_SCHEMAS = ["TimelineTimelineCursor", "TimelineTimelineItem", "TimelineTimelineModule"]
@@ -38,7 +38,7 @@ class ContentUnion(BaseModel):
38
38
  # data type: TimelineTimelineCursor
39
39
  oneof_schema_3_validator: Optional[TimelineTimelineCursor] = None
40
40
  actual_instance: Optional[Union[TimelineTimelineCursor, TimelineTimelineItem, TimelineTimelineModule]] = None
41
- one_of_schemas: List[str] = Field(default=Literal["TimelineTimelineCursor", "TimelineTimelineItem", "TimelineTimelineModule"])
41
+ one_of_schemas: Set[str] = { "TimelineTimelineCursor", "TimelineTimelineItem", "TimelineTimelineModule" }
42
42
 
43
43
  model_config = ConfigDict(
44
44
  validate_assignment=True,