vrchatapi-async 1.20.8.dev1__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 (362) hide show
  1. vrchatapi/__init__.py +742 -0
  2. vrchatapi/api/__init__.py +23 -0
  3. vrchatapi/api/authentication_api.py +6253 -0
  4. vrchatapi/api/avatars_api.py +4234 -0
  5. vrchatapi/api/calendar_api.py +4090 -0
  6. vrchatapi/api/economy_api.py +11547 -0
  7. vrchatapi/api/favorites_api.py +2368 -0
  8. vrchatapi/api/files_api.py +6109 -0
  9. vrchatapi/api/friends_api.py +1708 -0
  10. vrchatapi/api/groups_api.py +15085 -0
  11. vrchatapi/api/instances_api.py +1754 -0
  12. vrchatapi/api/inventory_api.py +4333 -0
  13. vrchatapi/api/invite_api.py +3337 -0
  14. vrchatapi/api/jams_api.py +1446 -0
  15. vrchatapi/api/miscellaneous_api.py +2384 -0
  16. vrchatapi/api/notifications_api.py +3624 -0
  17. vrchatapi/api/playermoderation_api.py +1127 -0
  18. vrchatapi/api/prints_api.py +1478 -0
  19. vrchatapi/api/props_api.py +2269 -0
  20. vrchatapi/api/users_api.py +7894 -0
  21. vrchatapi/api/worlds_api.py +6153 -0
  22. vrchatapi/api_client.py +865 -0
  23. vrchatapi/api_response.py +21 -0
  24. vrchatapi/configuration.py +686 -0
  25. vrchatapi/exceptions.py +218 -0
  26. vrchatapi/models/__init__.py +345 -0
  27. vrchatapi/models/account_deletion_log.py +253 -0
  28. vrchatapi/models/add_favorite_request.py +246 -0
  29. vrchatapi/models/add_group_gallery_image_request.py +234 -0
  30. vrchatapi/models/admin_asset_bundle.py +337 -0
  31. vrchatapi/models/admin_unity_package.py +261 -0
  32. vrchatapi/models/age_verification_status.py +38 -0
  33. vrchatapi/models/agreement.py +280 -0
  34. vrchatapi/models/agreement_code.py +36 -0
  35. vrchatapi/models/agreement_request.py +256 -0
  36. vrchatapi/models/agreement_status.py +261 -0
  37. vrchatapi/models/api_config.py +1299 -0
  38. vrchatapi/models/api_config_access_logs_urls.py +258 -0
  39. vrchatapi/models/api_config_announcement.py +217 -0
  40. vrchatapi/models/api_config_audio_config.py +311 -0
  41. vrchatapi/models/api_config_avatar_perf_limiter.py +293 -0
  42. vrchatapi/models/api_config_constants.py +262 -0
  43. vrchatapi/models/api_config_constants_groups.py +306 -0
  44. vrchatapi/models/api_config_constants_instance.py +238 -0
  45. vrchatapi/models/api_config_constants_instancepopulationbrackets.py +262 -0
  46. vrchatapi/models/api_config_constants_instancepopulationbracketscrowded.py +216 -0
  47. vrchatapi/models/api_config_constants_instancepopulationbracketsfew.py +216 -0
  48. vrchatapi/models/api_config_constants_instancepopulationbracketsmany.py +216 -0
  49. vrchatapi/models/api_config_constants_language.py +234 -0
  50. vrchatapi/models/api_config_download_url_list.py +258 -0
  51. vrchatapi/models/api_config_events.py +314 -0
  52. vrchatapi/models/api_config_ios_version.py +216 -0
  53. vrchatapi/models/api_config_min_supported_client_build_number.py +348 -0
  54. vrchatapi/models/api_config_offline_analysis.py +216 -0
  55. vrchatapi/models/api_health.py +248 -0
  56. vrchatapi/models/avatar.py +463 -0
  57. vrchatapi/models/avatar_moderation.py +249 -0
  58. vrchatapi/models/avatar_moderation_created.py +248 -0
  59. vrchatapi/models/avatar_moderation_type.py +36 -0
  60. vrchatapi/models/avatar_performance.py +265 -0
  61. vrchatapi/models/avatar_published_listings_inner.py +271 -0
  62. vrchatapi/models/avatar_style.py +239 -0
  63. vrchatapi/models/avatar_styles.py +231 -0
  64. vrchatapi/models/avatar_unity_package_url_object.py +234 -0
  65. vrchatapi/models/badge.py +308 -0
  66. vrchatapi/models/balance.py +247 -0
  67. vrchatapi/models/ban_group_member_request.py +234 -0
  68. vrchatapi/models/boop_request.py +250 -0
  69. vrchatapi/models/calendar_day_of_week.py +42 -0
  70. vrchatapi/models/calendar_event.py +475 -0
  71. vrchatapi/models/calendar_event_access.py +37 -0
  72. vrchatapi/models/calendar_event_category.py +48 -0
  73. vrchatapi/models/calendar_event_discovery.py +247 -0
  74. vrchatapi/models/calendar_event_discovery_inclusion.py +38 -0
  75. vrchatapi/models/calendar_event_discovery_scope.py +38 -0
  76. vrchatapi/models/calendar_event_frequency.py +39 -0
  77. vrchatapi/models/calendar_event_occurrence_kind.py +38 -0
  78. vrchatapi/models/calendar_event_platform.py +38 -0
  79. vrchatapi/models/calendar_event_recurrence.py +261 -0
  80. vrchatapi/models/calendar_event_recurrence_end.py +246 -0
  81. vrchatapi/models/calendar_event_recurrence_end_type.py +37 -0
  82. vrchatapi/models/calendar_event_user_interest.py +251 -0
  83. vrchatapi/models/change_user_tags_request.py +212 -0
  84. vrchatapi/models/change_world_tags_request.py +212 -0
  85. vrchatapi/models/content_filter.py +40 -0
  86. vrchatapi/models/create_avatar_moderation_request.py +243 -0
  87. vrchatapi/models/create_avatar_request.py +324 -0
  88. vrchatapi/models/create_calendar_event_request.py +385 -0
  89. vrchatapi/models/create_file_request.py +251 -0
  90. vrchatapi/models/create_file_version_request.py +259 -0
  91. vrchatapi/models/create_group_announcement_request.py +253 -0
  92. vrchatapi/models/create_group_gallery_request.py +297 -0
  93. vrchatapi/models/create_group_invite_request.py +242 -0
  94. vrchatapi/models/create_group_post_request.py +267 -0
  95. vrchatapi/models/create_group_request.py +295 -0
  96. vrchatapi/models/create_group_role_request.py +255 -0
  97. vrchatapi/models/create_instance_request.py +384 -0
  98. vrchatapi/models/create_jam_submission_request.py +239 -0
  99. vrchatapi/models/create_listing_request.py +285 -0
  100. vrchatapi/models/create_product_request.py +270 -0
  101. vrchatapi/models/create_prop_request.py +308 -0
  102. vrchatapi/models/create_world_request.py +322 -0
  103. vrchatapi/models/current_user.py +909 -0
  104. vrchatapi/models/current_user_platform_history_inner.py +245 -0
  105. vrchatapi/models/current_user_presence.py +379 -0
  106. vrchatapi/models/decline_group_invite_request.py +211 -0
  107. vrchatapi/models/developer_type.py +39 -0
  108. vrchatapi/models/disable2_fa_result.py +211 -0
  109. vrchatapi/models/discord_details.py +216 -0
  110. vrchatapi/models/dynamic_content_row.py +276 -0
  111. vrchatapi/models/earnings_metrics.py +248 -0
  112. vrchatapi/models/earnings_metrics_totals.py +267 -0
  113. vrchatapi/models/economy_account.py +360 -0
  114. vrchatapi/models/economy_balances.py +221 -0
  115. vrchatapi/models/economy_payout.py +385 -0
  116. vrchatapi/models/economy_payout_eligibility.py +263 -0
  117. vrchatapi/models/economy_payout_list.py +219 -0
  118. vrchatapi/models/economy_payout_status.py +295 -0
  119. vrchatapi/models/equip_inventory_item_request.py +235 -0
  120. vrchatapi/models/error.py +215 -0
  121. vrchatapi/models/favorite.py +251 -0
  122. vrchatapi/models/favorite_group.py +278 -0
  123. vrchatapi/models/favorite_group_limits.py +249 -0
  124. vrchatapi/models/favorite_group_visibility.py +38 -0
  125. vrchatapi/models/favorite_limits.py +265 -0
  126. vrchatapi/models/favorite_type.py +39 -0
  127. vrchatapi/models/favorited_world.py +441 -0
  128. vrchatapi/models/feedback.py +331 -0
  129. vrchatapi/models/file.py +325 -0
  130. vrchatapi/models/file_analysis.py +281 -0
  131. vrchatapi/models/file_analysis_avatar_stats.py +575 -0
  132. vrchatapi/models/file_data.py +279 -0
  133. vrchatapi/models/file_status.py +39 -0
  134. vrchatapi/models/file_upload_url.py +212 -0
  135. vrchatapi/models/file_version.py +254 -0
  136. vrchatapi/models/file_version_upload_status.py +269 -0
  137. vrchatapi/models/finish_file_data_upload_request.py +248 -0
  138. vrchatapi/models/follow_calendar_event_request.py +234 -0
  139. vrchatapi/models/friend_status.py +250 -0
  140. vrchatapi/models/get_group_posts200_response.py +219 -0
  141. vrchatapi/models/get_user_group_instances200_response.py +248 -0
  142. vrchatapi/models/group.py +514 -0
  143. vrchatapi/models/group_access_type.py +38 -0
  144. vrchatapi/models/group_announcement.py +315 -0
  145. vrchatapi/models/group_audit_log_entry.py +287 -0
  146. vrchatapi/models/group_gallery.py +319 -0
  147. vrchatapi/models/group_gallery_file_order.py +211 -0
  148. vrchatapi/models/group_gallery_file_order_request.py +239 -0
  149. vrchatapi/models/group_gallery_image.py +301 -0
  150. vrchatapi/models/group_instance.py +257 -0
  151. vrchatapi/models/group_join_request_action.py +37 -0
  152. vrchatapi/models/group_join_state.py +39 -0
  153. vrchatapi/models/group_member.py +415 -0
  154. vrchatapi/models/group_member_limited_user.py +290 -0
  155. vrchatapi/models/group_member_status.py +41 -0
  156. vrchatapi/models/group_my_member.py +399 -0
  157. vrchatapi/models/group_permission.py +260 -0
  158. vrchatapi/models/group_permissions.py +63 -0
  159. vrchatapi/models/group_post.py +317 -0
  160. vrchatapi/models/group_post_visibility.py +37 -0
  161. vrchatapi/models/group_privacy.py +37 -0
  162. vrchatapi/models/group_role.py +309 -0
  163. vrchatapi/models/group_role_template.py +39 -0
  164. vrchatapi/models/group_role_template_values.py +254 -0
  165. vrchatapi/models/group_role_template_values_roles.py +253 -0
  166. vrchatapi/models/group_search_sort.py +37 -0
  167. vrchatapi/models/group_transferable.py +215 -0
  168. vrchatapi/models/group_transferable_requirements.py +266 -0
  169. vrchatapi/models/group_user_visibility.py +38 -0
  170. vrchatapi/models/image_animation_style.py +62 -0
  171. vrchatapi/models/image_loop_style.py +37 -0
  172. vrchatapi/models/image_mask.py +41 -0
  173. vrchatapi/models/image_purpose.py +46 -0
  174. vrchatapi/models/info_push.py +306 -0
  175. vrchatapi/models/info_push_data.py +288 -0
  176. vrchatapi/models/info_push_data_article.py +215 -0
  177. vrchatapi/models/info_push_data_article_content.py +251 -0
  178. vrchatapi/models/info_push_data_clickable.py +224 -0
  179. vrchatapi/models/instance.py +597 -0
  180. vrchatapi/models/instance_content_settings.py +236 -0
  181. vrchatapi/models/instance_platforms.py +222 -0
  182. vrchatapi/models/instance_region.py +40 -0
  183. vrchatapi/models/instance_short_name_response.py +248 -0
  184. vrchatapi/models/instance_type.py +40 -0
  185. vrchatapi/models/inventory.py +247 -0
  186. vrchatapi/models/inventory_consumption_results.py +255 -0
  187. vrchatapi/models/inventory_default_attributes_value.py +243 -0
  188. vrchatapi/models/inventory_default_attributes_value_validator.py +211 -0
  189. vrchatapi/models/inventory_drop.py +331 -0
  190. vrchatapi/models/inventory_equip_slot.py +39 -0
  191. vrchatapi/models/inventory_flag.py +43 -0
  192. vrchatapi/models/inventory_item.py +420 -0
  193. vrchatapi/models/inventory_item_type.py +42 -0
  194. vrchatapi/models/inventory_metadata.py +287 -0
  195. vrchatapi/models/inventory_notification_details.py +244 -0
  196. vrchatapi/models/inventory_spawn.py +216 -0
  197. vrchatapi/models/inventory_template.py +351 -0
  198. vrchatapi/models/inventory_user_attributes.py +250 -0
  199. vrchatapi/models/invite_message.py +276 -0
  200. vrchatapi/models/invite_message_type.py +39 -0
  201. vrchatapi/models/invite_request.py +243 -0
  202. vrchatapi/models/invite_response.py +235 -0
  203. vrchatapi/models/jam.py +302 -0
  204. vrchatapi/models/jam_state_change_dates.py +276 -0
  205. vrchatapi/models/jam_submission.py +275 -0
  206. vrchatapi/models/join_group_request.py +234 -0
  207. vrchatapi/models/license.py +261 -0
  208. vrchatapi/models/license_action.py +37 -0
  209. vrchatapi/models/license_group.py +235 -0
  210. vrchatapi/models/license_type.py +39 -0
  211. vrchatapi/models/limited_group.py +377 -0
  212. vrchatapi/models/limited_unity_package.py +251 -0
  213. vrchatapi/models/limited_user_friend.py +399 -0
  214. vrchatapi/models/limited_user_groups.py +386 -0
  215. vrchatapi/models/limited_user_instance.py +430 -0
  216. vrchatapi/models/limited_user_search.py +395 -0
  217. vrchatapi/models/limited_world.py +410 -0
  218. vrchatapi/models/mime_type.py +50 -0
  219. vrchatapi/models/model_print.py +299 -0
  220. vrchatapi/models/moderate_user_request.py +217 -0
  221. vrchatapi/models/moderation_report.py +296 -0
  222. vrchatapi/models/mutual_friend.py +302 -0
  223. vrchatapi/models/mutuals.py +217 -0
  224. vrchatapi/models/notification.py +283 -0
  225. vrchatapi/models/notification_detail_invite.py +250 -0
  226. vrchatapi/models/notification_detail_invite_response.py +242 -0
  227. vrchatapi/models/notification_detail_request_invite.py +239 -0
  228. vrchatapi/models/notification_detail_request_invite_response.py +242 -0
  229. vrchatapi/models/notification_detail_vote_to_kick.py +242 -0
  230. vrchatapi/models/notification_type.py +43 -0
  231. vrchatapi/models/notification_v2.py +466 -0
  232. vrchatapi/models/notification_v2_details_boop.py +255 -0
  233. vrchatapi/models/notification_v2_response.py +259 -0
  234. vrchatapi/models/notification_v2_type.py +58 -0
  235. vrchatapi/models/ok_status.py +211 -0
  236. vrchatapi/models/ok_status2.py +234 -0
  237. vrchatapi/models/order_option.py +37 -0
  238. vrchatapi/models/order_option_short.py +37 -0
  239. vrchatapi/models/paginated_calendar_event_list.py +255 -0
  240. vrchatapi/models/paginated_group_audit_log_entry_list.py +255 -0
  241. vrchatapi/models/paginated_moderation_report_list.py +255 -0
  242. vrchatapi/models/past_display_name.py +241 -0
  243. vrchatapi/models/pending2_fa_result.py +239 -0
  244. vrchatapi/models/performance_limiter_info.py +234 -0
  245. vrchatapi/models/performance_ratings.py +41 -0
  246. vrchatapi/models/permission.py +280 -0
  247. vrchatapi/models/permission_data.py +258 -0
  248. vrchatapi/models/platform_build_info.py +242 -0
  249. vrchatapi/models/player_moderation.py +276 -0
  250. vrchatapi/models/player_moderation_type.py +44 -0
  251. vrchatapi/models/print_files.py +239 -0
  252. vrchatapi/models/private_profile.py +267 -0
  253. vrchatapi/models/private_profile_activity.py +292 -0
  254. vrchatapi/models/product.py +389 -0
  255. vrchatapi/models/product_listing.py +538 -0
  256. vrchatapi/models/product_listing_type.py +39 -0
  257. vrchatapi/models/product_listing_variant.py +272 -0
  258. vrchatapi/models/product_purchase.py +571 -0
  259. vrchatapi/models/product_purchase_history.py +256 -0
  260. vrchatapi/models/product_purchase_location_type.py +46 -0
  261. vrchatapi/models/product_purchase_product.py +269 -0
  262. vrchatapi/models/product_purchase_purchase_context.py +250 -0
  263. vrchatapi/models/product_purchase_record.py +312 -0
  264. vrchatapi/models/product_type.py +39 -0
  265. vrchatapi/models/profile_represented_group.py +262 -0
  266. vrchatapi/models/prop.py +358 -0
  267. vrchatapi/models/prop_publish_status.py +234 -0
  268. vrchatapi/models/prop_unity_package.py +269 -0
  269. vrchatapi/models/public_profile.py +398 -0
  270. vrchatapi/models/purchase_context_data.py +251 -0
  271. vrchatapi/models/purchase_product_listing_request.py +281 -0
  272. vrchatapi/models/region.py +42 -0
  273. vrchatapi/models/register_user_account_request.py +278 -0
  274. vrchatapi/models/release_status.py +39 -0
  275. vrchatapi/models/report_category.py +226 -0
  276. vrchatapi/models/report_reason.py +216 -0
  277. vrchatapi/models/represented_group.py +348 -0
  278. vrchatapi/models/request_invite_request.py +235 -0
  279. vrchatapi/models/respond_group_join_request.py +217 -0
  280. vrchatapi/models/respond_notification_v2_request.py +242 -0
  281. vrchatapi/models/response.py +217 -0
  282. vrchatapi/models/reward_badge.py +308 -0
  283. vrchatapi/models/reward_redemption.py +220 -0
  284. vrchatapi/models/reward_redemption_data.py +224 -0
  285. vrchatapi/models/reward_redemption_request.py +211 -0
  286. vrchatapi/models/reward_redemption_result.py +250 -0
  287. vrchatapi/models/search_group_members200_response.py +224 -0
  288. vrchatapi/models/seller_eligibility.py +211 -0
  289. vrchatapi/models/sent_notification.py +278 -0
  290. vrchatapi/models/service_queue_stats.py +234 -0
  291. vrchatapi/models/service_status.py +281 -0
  292. vrchatapi/models/share_inventory_item_direct_request.py +239 -0
  293. vrchatapi/models/sort_option.py +53 -0
  294. vrchatapi/models/sort_option_product_purchase.py +36 -0
  295. vrchatapi/models/store.py +372 -0
  296. vrchatapi/models/store_context.py +249 -0
  297. vrchatapi/models/store_shelf.py +304 -0
  298. vrchatapi/models/store_type.py +38 -0
  299. vrchatapi/models/store_view.py +40 -0
  300. vrchatapi/models/submit_moderation_report_request.py +263 -0
  301. vrchatapi/models/submit_moderation_report_request_details.py +283 -0
  302. vrchatapi/models/subscription.py +301 -0
  303. vrchatapi/models/subscription_period.py +40 -0
  304. vrchatapi/models/success.py +215 -0
  305. vrchatapi/models/success_flag.py +211 -0
  306. vrchatapi/models/tilia_kyc.py +246 -0
  307. vrchatapi/models/tilia_status.py +259 -0
  308. vrchatapi/models/tilia_tos.py +211 -0
  309. vrchatapi/models/token_bundle.py +286 -0
  310. vrchatapi/models/transaction.py +322 -0
  311. vrchatapi/models/transaction_agreement.py +353 -0
  312. vrchatapi/models/transaction_status.py +39 -0
  313. vrchatapi/models/transaction_steam_info.py +271 -0
  314. vrchatapi/models/transaction_steam_wallet_info.py +227 -0
  315. vrchatapi/models/transfer_group_request.py +234 -0
  316. vrchatapi/models/tutorial_status.py +255 -0
  317. vrchatapi/models/two_factor_auth_code.py +211 -0
  318. vrchatapi/models/two_factor_email_code.py +211 -0
  319. vrchatapi/models/two_factor_recovery_codes.py +247 -0
  320. vrchatapi/models/two_factor_recovery_codes_otp_inner.py +216 -0
  321. vrchatapi/models/unity_package.py +360 -0
  322. vrchatapi/models/update_asset_review_notes_request.py +234 -0
  323. vrchatapi/models/update_avatar_request.py +293 -0
  324. vrchatapi/models/update_calendar_event_request.py +365 -0
  325. vrchatapi/models/update_favorite_group_request.py +246 -0
  326. vrchatapi/models/update_group_gallery_request.py +297 -0
  327. vrchatapi/models/update_group_member_request.py +256 -0
  328. vrchatapi/models/update_group_representation_request.py +234 -0
  329. vrchatapi/models/update_group_request.py +300 -0
  330. vrchatapi/models/update_group_role_request.py +255 -0
  331. vrchatapi/models/update_inventory_item_request.py +254 -0
  332. vrchatapi/models/update_invite_message_request.py +211 -0
  333. vrchatapi/models/update_listing_request.py +211 -0
  334. vrchatapi/models/update_product_request.py +261 -0
  335. vrchatapi/models/update_prop_request.py +303 -0
  336. vrchatapi/models/update_tilia_tos_request.py +211 -0
  337. vrchatapi/models/update_user_badge_request.py +216 -0
  338. vrchatapi/models/update_user_note_request.py +239 -0
  339. vrchatapi/models/update_user_request.py +358 -0
  340. vrchatapi/models/update_world_request.py +317 -0
  341. vrchatapi/models/user.py +549 -0
  342. vrchatapi/models/user_credits_eligible.py +216 -0
  343. vrchatapi/models/user_exists.py +242 -0
  344. vrchatapi/models/user_note.py +273 -0
  345. vrchatapi/models/user_note_target_user.py +277 -0
  346. vrchatapi/models/user_state.py +38 -0
  347. vrchatapi/models/user_status.py +40 -0
  348. vrchatapi/models/user_subscription.py +330 -0
  349. vrchatapi/models/user_subscription_eligible.py +274 -0
  350. vrchatapi/models/verify2_fa_email_code_result.py +211 -0
  351. vrchatapi/models/verify2_fa_result.py +216 -0
  352. vrchatapi/models/verify_auth_token_result.py +217 -0
  353. vrchatapi/models/world.py +459 -0
  354. vrchatapi/models/world_metadata.py +216 -0
  355. vrchatapi/models/world_publish_status.py +234 -0
  356. vrchatapi/py.typed +0 -0
  357. vrchatapi/rest.py +303 -0
  358. vrchatapi_async-1.20.8.dev1.dist-info/METADATA +137 -0
  359. vrchatapi_async-1.20.8.dev1.dist-info/RECORD +362 -0
  360. vrchatapi_async-1.20.8.dev1.dist-info/WHEEL +5 -0
  361. vrchatapi_async-1.20.8.dev1.dist-info/licenses/LICENSE +21 -0
  362. vrchatapi_async-1.20.8.dev1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,575 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ VRChat API Documentation
5
+
6
+
7
+ The version of the OpenAPI document: 1.20.8
8
+ Contact: vrchatapi.lpv0t@aries.fyi
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from collections.abc import Mapping as _Mapping
21
+ from pydantic import AliasChoices, BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt
22
+ from typing import Any, ClassVar, Dict, List, Optional, Union, cast as _cast
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+
28
+ _OPENAPI_GENERATOR_TO_DICT = "_openapi_generator_to_dict"
29
+
30
+
31
+ def _get_openapi_to_dict(value: Any) -> Any:
32
+ # Reciprocal function references preserve inherited generated methods
33
+ # without reserving model member names. Checking both directions also
34
+ # rejects overrides whose decorators copy function attributes.
35
+ to_dict = getattr(value, "to_dict", None)
36
+ type_to_dict = getattr(type(value), "to_dict", None)
37
+ if (
38
+ not callable(to_dict)
39
+ or getattr(to_dict, "__func__", None) is not type_to_dict
40
+ ):
41
+ return None
42
+
43
+ openapi_to_dict = getattr(
44
+ type_to_dict, _OPENAPI_GENERATOR_TO_DICT, None
45
+ )
46
+ if (
47
+ not callable(openapi_to_dict)
48
+ or getattr(
49
+ openapi_to_dict,
50
+ _OPENAPI_GENERATOR_TO_DICT,
51
+ None,
52
+ ) is not type_to_dict
53
+ ):
54
+ return None
55
+ return openapi_to_dict
56
+
57
+
58
+ def _to_legacy_item(value: Any, serialize: bool) -> Any:
59
+ to_dict = getattr(value, "to_dict", None)
60
+ if _get_openapi_to_dict(value) is not None and callable(to_dict):
61
+ return to_dict(serialize=serialize)
62
+ if callable(to_dict):
63
+ return to_dict()
64
+ return value
65
+
66
+
67
+ def _to_legacy_value(value: Any, serialize: bool) -> Any:
68
+ # python-legacy converted only immediate list elements or dictionary values:
69
+ # https://github.com/OpenAPITools/openapi-generator/blob/c84b949df1a9ec04ba75989cb49b45c940c2f694/modules/openapi-generator/src/main/resources/python-legacy/model.mustache#L203-L231
70
+ if isinstance(value, list):
71
+ return [_to_legacy_item(item, serialize) for item in value]
72
+ if isinstance(value, dict):
73
+ return {
74
+ key: _to_legacy_item(item, serialize)
75
+ for key, item in value.items()
76
+ }
77
+ return _to_legacy_item(value, serialize)
78
+
79
+
80
+ def _to_openapi_value(value: Any) -> Any:
81
+ if isinstance(value, list):
82
+ return [_to_openapi_value(item) for item in value]
83
+ if isinstance(value, dict):
84
+ return {key: _to_openapi_value(item) for key, item in value.items()}
85
+
86
+ to_openapi_dict = _get_openapi_to_dict(value)
87
+ if to_openapi_dict is not None:
88
+ return to_openapi_dict(value)
89
+
90
+ to_dict = getattr(value, "to_dict", None)
91
+ if callable(to_dict):
92
+ return to_dict()
93
+ return value
94
+
95
+
96
+ class FileAnalysisAvatarStats(BaseModel):
97
+ """
98
+ FileAnalysisAvatarStats
99
+
100
+ Attributes:
101
+ openapi_types (dict): The key is attribute name
102
+ and the value is attribute type.
103
+ attribute_map (dict): The key is attribute name
104
+ and the value is json key in definition.
105
+ """ # noqa: E501
106
+ animator_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("animatorCount", "animator_count"), serialization_alias="animatorCount")
107
+ audio_source_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("audioSourceCount", "audio_source_count"), serialization_alias="audioSourceCount")
108
+ blend_shape_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("blendShapeCount", "blend_shape_count"), serialization_alias="blendShapeCount")
109
+ bone_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("boneCount", "bone_count"), serialization_alias="boneCount")
110
+ bounds: Optional[List[Union[StrictFloat, StrictInt]]] = None
111
+ camera_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("cameraCount", "camera_count"), serialization_alias="cameraCount")
112
+ cloth_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("clothCount", "cloth_count"), serialization_alias="clothCount")
113
+ constraint_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("constraintCount", "constraint_count"), serialization_alias="constraintCount")
114
+ constraint_depth: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("constraintDepth", "constraint_depth"), serialization_alias="constraintDepth")
115
+ contact_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("contactCount", "contact_count"), serialization_alias="contactCount")
116
+ custom_expressions: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("customExpressions", "custom_expressions"), serialization_alias="customExpressions")
117
+ customize_animation_layers: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("customizeAnimationLayers", "customize_animation_layers"), serialization_alias="customizeAnimationLayers")
118
+ enable_eye_look: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("enableEyeLook", "enable_eye_look"), serialization_alias="enableEyeLook")
119
+ light_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("lightCount", "light_count"), serialization_alias="lightCount")
120
+ line_renderer_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("lineRendererCount", "line_renderer_count"), serialization_alias="lineRendererCount")
121
+ lip_sync: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("lipSync", "lip_sync"), serialization_alias="lipSync")
122
+ material_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("materialCount", "material_count"), serialization_alias="materialCount")
123
+ material_slots_used: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("materialSlotsUsed", "material_slots_used"), serialization_alias="materialSlotsUsed")
124
+ mesh_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("meshCount", "mesh_count"), serialization_alias="meshCount")
125
+ mesh_indices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("meshIndices", "mesh_indices"), serialization_alias="meshIndices")
126
+ mesh_particle_max_polygons: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("meshParticleMaxPolygons", "mesh_particle_max_polygons"), serialization_alias="meshParticleMaxPolygons")
127
+ mesh_polygons: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("meshPolygons", "mesh_polygons"), serialization_alias="meshPolygons")
128
+ mesh_vertices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("meshVertices", "mesh_vertices"), serialization_alias="meshVertices")
129
+ particle_collision_enabled: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("particleCollisionEnabled", "particle_collision_enabled"), serialization_alias="particleCollisionEnabled")
130
+ particle_system_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("particleSystemCount", "particle_system_count"), serialization_alias="particleSystemCount")
131
+ particle_trails_enabled: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("particleTrailsEnabled", "particle_trails_enabled"), serialization_alias="particleTrailsEnabled")
132
+ phys_bone_collider_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("physBoneColliderCount", "phys_bone_collider_count"), serialization_alias="physBoneColliderCount")
133
+ phys_bone_collision_check_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("physBoneCollisionCheckCount", "phys_bone_collision_check_count"), serialization_alias="physBoneCollisionCheckCount")
134
+ phys_bone_component_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("physBoneComponentCount", "phys_bone_component_count"), serialization_alias="physBoneComponentCount")
135
+ phys_bone_transform_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("physBoneTransformCount", "phys_bone_transform_count"), serialization_alias="physBoneTransformCount")
136
+ physics_colliders: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("physicsColliders", "physics_colliders"), serialization_alias="physicsColliders")
137
+ physics_rigidbodies: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("physicsRigidbodies", "physics_rigidbodies"), serialization_alias="physicsRigidbodies")
138
+ skinned_mesh_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("skinnedMeshCount", "skinned_mesh_count"), serialization_alias="skinnedMeshCount")
139
+ skinned_mesh_indices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("skinnedMeshIndices", "skinned_mesh_indices"), serialization_alias="skinnedMeshIndices")
140
+ skinned_mesh_polygons: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("skinnedMeshPolygons", "skinned_mesh_polygons"), serialization_alias="skinnedMeshPolygons")
141
+ skinned_mesh_vertices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("skinnedMeshVertices", "skinned_mesh_vertices"), serialization_alias="skinnedMeshVertices")
142
+ total_cloth_vertices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("totalClothVertices", "total_cloth_vertices"), serialization_alias="totalClothVertices")
143
+ total_indices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("totalIndices", "total_indices"), serialization_alias="totalIndices")
144
+ total_max_particles: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("totalMaxParticles", "total_max_particles"), serialization_alias="totalMaxParticles")
145
+ total_polygons: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("totalPolygons", "total_polygons"), serialization_alias="totalPolygons")
146
+ total_texture_usage: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("totalTextureUsage", "total_texture_usage"), serialization_alias="totalTextureUsage")
147
+ total_vertices: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("totalVertices", "total_vertices"), serialization_alias="totalVertices")
148
+ trail_renderer_count: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("trailRendererCount", "trail_renderer_count"), serialization_alias="trailRendererCount")
149
+ write_defaults_used: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("writeDefaultsUsed", "write_defaults_used"), serialization_alias="writeDefaultsUsed")
150
+ openapi_types: ClassVar[Dict[str, str]] = {
151
+ "animator_count": "int",
152
+ "audio_source_count": "int",
153
+ "blend_shape_count": "int",
154
+ "bone_count": "int",
155
+ "bounds": "List[float]",
156
+ "camera_count": "int",
157
+ "cloth_count": "int",
158
+ "constraint_count": "int",
159
+ "constraint_depth": "int",
160
+ "contact_count": "int",
161
+ "custom_expressions": "bool",
162
+ "customize_animation_layers": "bool",
163
+ "enable_eye_look": "bool",
164
+ "light_count": "int",
165
+ "line_renderer_count": "int",
166
+ "lip_sync": "int",
167
+ "material_count": "int",
168
+ "material_slots_used": "int",
169
+ "mesh_count": "int",
170
+ "mesh_indices": "int",
171
+ "mesh_particle_max_polygons": "int",
172
+ "mesh_polygons": "int",
173
+ "mesh_vertices": "int",
174
+ "particle_collision_enabled": "bool",
175
+ "particle_system_count": "int",
176
+ "particle_trails_enabled": "bool",
177
+ "phys_bone_collider_count": "int",
178
+ "phys_bone_collision_check_count": "int",
179
+ "phys_bone_component_count": "int",
180
+ "phys_bone_transform_count": "int",
181
+ "physics_colliders": "int",
182
+ "physics_rigidbodies": "int",
183
+ "skinned_mesh_count": "int",
184
+ "skinned_mesh_indices": "int",
185
+ "skinned_mesh_polygons": "int",
186
+ "skinned_mesh_vertices": "int",
187
+ "total_cloth_vertices": "int",
188
+ "total_indices": "int",
189
+ "total_max_particles": "int",
190
+ "total_polygons": "int",
191
+ "total_texture_usage": "int",
192
+ "total_vertices": "int",
193
+ "trail_renderer_count": "int",
194
+ "write_defaults_used": "bool"
195
+ }
196
+
197
+ attribute_map: ClassVar[Dict[str, str]] = {
198
+ "animator_count": "animatorCount",
199
+ "audio_source_count": "audioSourceCount",
200
+ "blend_shape_count": "blendShapeCount",
201
+ "bone_count": "boneCount",
202
+ "bounds": "bounds",
203
+ "camera_count": "cameraCount",
204
+ "cloth_count": "clothCount",
205
+ "constraint_count": "constraintCount",
206
+ "constraint_depth": "constraintDepth",
207
+ "contact_count": "contactCount",
208
+ "custom_expressions": "customExpressions",
209
+ "customize_animation_layers": "customizeAnimationLayers",
210
+ "enable_eye_look": "enableEyeLook",
211
+ "light_count": "lightCount",
212
+ "line_renderer_count": "lineRendererCount",
213
+ "lip_sync": "lipSync",
214
+ "material_count": "materialCount",
215
+ "material_slots_used": "materialSlotsUsed",
216
+ "mesh_count": "meshCount",
217
+ "mesh_indices": "meshIndices",
218
+ "mesh_particle_max_polygons": "meshParticleMaxPolygons",
219
+ "mesh_polygons": "meshPolygons",
220
+ "mesh_vertices": "meshVertices",
221
+ "particle_collision_enabled": "particleCollisionEnabled",
222
+ "particle_system_count": "particleSystemCount",
223
+ "particle_trails_enabled": "particleTrailsEnabled",
224
+ "phys_bone_collider_count": "physBoneColliderCount",
225
+ "phys_bone_collision_check_count": "physBoneCollisionCheckCount",
226
+ "phys_bone_component_count": "physBoneComponentCount",
227
+ "phys_bone_transform_count": "physBoneTransformCount",
228
+ "physics_colliders": "physicsColliders",
229
+ "physics_rigidbodies": "physicsRigidbodies",
230
+ "skinned_mesh_count": "skinnedMeshCount",
231
+ "skinned_mesh_indices": "skinnedMeshIndices",
232
+ "skinned_mesh_polygons": "skinnedMeshPolygons",
233
+ "skinned_mesh_vertices": "skinnedMeshVertices",
234
+ "total_cloth_vertices": "totalClothVertices",
235
+ "total_indices": "totalIndices",
236
+ "total_max_particles": "totalMaxParticles",
237
+ "total_polygons": "totalPolygons",
238
+ "total_texture_usage": "totalTextureUsage",
239
+ "total_vertices": "totalVertices",
240
+ "trail_renderer_count": "trailRendererCount",
241
+ "write_defaults_used": "writeDefaultsUsed"
242
+ }
243
+ __properties: ClassVar[List[str]] = ["animatorCount", "audioSourceCount", "blendShapeCount", "boneCount", "bounds", "cameraCount", "clothCount", "constraintCount", "constraintDepth", "contactCount", "customExpressions", "customizeAnimationLayers", "enableEyeLook", "lightCount", "lineRendererCount", "lipSync", "materialCount", "materialSlotsUsed", "meshCount", "meshIndices", "meshParticleMaxPolygons", "meshPolygons", "meshVertices", "particleCollisionEnabled", "particleSystemCount", "particleTrailsEnabled", "physBoneColliderCount", "physBoneCollisionCheckCount", "physBoneComponentCount", "physBoneTransformCount", "physicsColliders", "physicsRigidbodies", "skinnedMeshCount", "skinnedMeshIndices", "skinnedMeshPolygons", "skinnedMeshVertices", "totalClothVertices", "totalIndices", "totalMaxParticles", "totalPolygons", "totalTextureUsage", "totalVertices", "trailRendererCount", "writeDefaultsUsed"]
244
+
245
+ @classmethod
246
+ def __preprocess_input_names(
247
+ cls,
248
+ obj: Any,
249
+ remove_hidden_storage_names: bool = True,
250
+ ) -> Any:
251
+ if not isinstance(obj, _Mapping):
252
+ return obj
253
+ obj = dict(obj)
254
+ if "animatorCount" not in obj and "animator_count" in obj:
255
+ obj["animatorCount"] = obj["animator_count"]
256
+ obj.pop("animator_count", None)
257
+ if "audioSourceCount" not in obj and "audio_source_count" in obj:
258
+ obj["audioSourceCount"] = obj["audio_source_count"]
259
+ obj.pop("audio_source_count", None)
260
+ if "blendShapeCount" not in obj and "blend_shape_count" in obj:
261
+ obj["blendShapeCount"] = obj["blend_shape_count"]
262
+ obj.pop("blend_shape_count", None)
263
+ if "boneCount" not in obj and "bone_count" in obj:
264
+ obj["boneCount"] = obj["bone_count"]
265
+ obj.pop("bone_count", None)
266
+ if "cameraCount" not in obj and "camera_count" in obj:
267
+ obj["cameraCount"] = obj["camera_count"]
268
+ obj.pop("camera_count", None)
269
+ if "clothCount" not in obj and "cloth_count" in obj:
270
+ obj["clothCount"] = obj["cloth_count"]
271
+ obj.pop("cloth_count", None)
272
+ if "constraintCount" not in obj and "constraint_count" in obj:
273
+ obj["constraintCount"] = obj["constraint_count"]
274
+ obj.pop("constraint_count", None)
275
+ if "constraintDepth" not in obj and "constraint_depth" in obj:
276
+ obj["constraintDepth"] = obj["constraint_depth"]
277
+ obj.pop("constraint_depth", None)
278
+ if "contactCount" not in obj and "contact_count" in obj:
279
+ obj["contactCount"] = obj["contact_count"]
280
+ obj.pop("contact_count", None)
281
+ if "customExpressions" not in obj and "custom_expressions" in obj:
282
+ obj["customExpressions"] = obj["custom_expressions"]
283
+ obj.pop("custom_expressions", None)
284
+ if "customizeAnimationLayers" not in obj and "customize_animation_layers" in obj:
285
+ obj["customizeAnimationLayers"] = obj["customize_animation_layers"]
286
+ obj.pop("customize_animation_layers", None)
287
+ if "enableEyeLook" not in obj and "enable_eye_look" in obj:
288
+ obj["enableEyeLook"] = obj["enable_eye_look"]
289
+ obj.pop("enable_eye_look", None)
290
+ if "lightCount" not in obj and "light_count" in obj:
291
+ obj["lightCount"] = obj["light_count"]
292
+ obj.pop("light_count", None)
293
+ if "lineRendererCount" not in obj and "line_renderer_count" in obj:
294
+ obj["lineRendererCount"] = obj["line_renderer_count"]
295
+ obj.pop("line_renderer_count", None)
296
+ if "lipSync" not in obj and "lip_sync" in obj:
297
+ obj["lipSync"] = obj["lip_sync"]
298
+ obj.pop("lip_sync", None)
299
+ if "materialCount" not in obj and "material_count" in obj:
300
+ obj["materialCount"] = obj["material_count"]
301
+ obj.pop("material_count", None)
302
+ if "materialSlotsUsed" not in obj and "material_slots_used" in obj:
303
+ obj["materialSlotsUsed"] = obj["material_slots_used"]
304
+ obj.pop("material_slots_used", None)
305
+ if "meshCount" not in obj and "mesh_count" in obj:
306
+ obj["meshCount"] = obj["mesh_count"]
307
+ obj.pop("mesh_count", None)
308
+ if "meshIndices" not in obj and "mesh_indices" in obj:
309
+ obj["meshIndices"] = obj["mesh_indices"]
310
+ obj.pop("mesh_indices", None)
311
+ if "meshParticleMaxPolygons" not in obj and "mesh_particle_max_polygons" in obj:
312
+ obj["meshParticleMaxPolygons"] = obj["mesh_particle_max_polygons"]
313
+ obj.pop("mesh_particle_max_polygons", None)
314
+ if "meshPolygons" not in obj and "mesh_polygons" in obj:
315
+ obj["meshPolygons"] = obj["mesh_polygons"]
316
+ obj.pop("mesh_polygons", None)
317
+ if "meshVertices" not in obj and "mesh_vertices" in obj:
318
+ obj["meshVertices"] = obj["mesh_vertices"]
319
+ obj.pop("mesh_vertices", None)
320
+ if "particleCollisionEnabled" not in obj and "particle_collision_enabled" in obj:
321
+ obj["particleCollisionEnabled"] = obj["particle_collision_enabled"]
322
+ obj.pop("particle_collision_enabled", None)
323
+ if "particleSystemCount" not in obj and "particle_system_count" in obj:
324
+ obj["particleSystemCount"] = obj["particle_system_count"]
325
+ obj.pop("particle_system_count", None)
326
+ if "particleTrailsEnabled" not in obj and "particle_trails_enabled" in obj:
327
+ obj["particleTrailsEnabled"] = obj["particle_trails_enabled"]
328
+ obj.pop("particle_trails_enabled", None)
329
+ if "physBoneColliderCount" not in obj and "phys_bone_collider_count" in obj:
330
+ obj["physBoneColliderCount"] = obj["phys_bone_collider_count"]
331
+ obj.pop("phys_bone_collider_count", None)
332
+ if "physBoneCollisionCheckCount" not in obj and "phys_bone_collision_check_count" in obj:
333
+ obj["physBoneCollisionCheckCount"] = obj["phys_bone_collision_check_count"]
334
+ obj.pop("phys_bone_collision_check_count", None)
335
+ if "physBoneComponentCount" not in obj and "phys_bone_component_count" in obj:
336
+ obj["physBoneComponentCount"] = obj["phys_bone_component_count"]
337
+ obj.pop("phys_bone_component_count", None)
338
+ if "physBoneTransformCount" not in obj and "phys_bone_transform_count" in obj:
339
+ obj["physBoneTransformCount"] = obj["phys_bone_transform_count"]
340
+ obj.pop("phys_bone_transform_count", None)
341
+ if "physicsColliders" not in obj and "physics_colliders" in obj:
342
+ obj["physicsColliders"] = obj["physics_colliders"]
343
+ obj.pop("physics_colliders", None)
344
+ if "physicsRigidbodies" not in obj and "physics_rigidbodies" in obj:
345
+ obj["physicsRigidbodies"] = obj["physics_rigidbodies"]
346
+ obj.pop("physics_rigidbodies", None)
347
+ if "skinnedMeshCount" not in obj and "skinned_mesh_count" in obj:
348
+ obj["skinnedMeshCount"] = obj["skinned_mesh_count"]
349
+ obj.pop("skinned_mesh_count", None)
350
+ if "skinnedMeshIndices" not in obj and "skinned_mesh_indices" in obj:
351
+ obj["skinnedMeshIndices"] = obj["skinned_mesh_indices"]
352
+ obj.pop("skinned_mesh_indices", None)
353
+ if "skinnedMeshPolygons" not in obj and "skinned_mesh_polygons" in obj:
354
+ obj["skinnedMeshPolygons"] = obj["skinned_mesh_polygons"]
355
+ obj.pop("skinned_mesh_polygons", None)
356
+ if "skinnedMeshVertices" not in obj and "skinned_mesh_vertices" in obj:
357
+ obj["skinnedMeshVertices"] = obj["skinned_mesh_vertices"]
358
+ obj.pop("skinned_mesh_vertices", None)
359
+ if "totalClothVertices" not in obj and "total_cloth_vertices" in obj:
360
+ obj["totalClothVertices"] = obj["total_cloth_vertices"]
361
+ obj.pop("total_cloth_vertices", None)
362
+ if "totalIndices" not in obj and "total_indices" in obj:
363
+ obj["totalIndices"] = obj["total_indices"]
364
+ obj.pop("total_indices", None)
365
+ if "totalMaxParticles" not in obj and "total_max_particles" in obj:
366
+ obj["totalMaxParticles"] = obj["total_max_particles"]
367
+ obj.pop("total_max_particles", None)
368
+ if "totalPolygons" not in obj and "total_polygons" in obj:
369
+ obj["totalPolygons"] = obj["total_polygons"]
370
+ obj.pop("total_polygons", None)
371
+ if "totalTextureUsage" not in obj and "total_texture_usage" in obj:
372
+ obj["totalTextureUsage"] = obj["total_texture_usage"]
373
+ obj.pop("total_texture_usage", None)
374
+ if "totalVertices" not in obj and "total_vertices" in obj:
375
+ obj["totalVertices"] = obj["total_vertices"]
376
+ obj.pop("total_vertices", None)
377
+ if "trailRendererCount" not in obj and "trail_renderer_count" in obj:
378
+ obj["trailRendererCount"] = obj["trail_renderer_count"]
379
+ obj.pop("trail_renderer_count", None)
380
+ if "writeDefaultsUsed" not in obj and "write_defaults_used" in obj:
381
+ obj["writeDefaultsUsed"] = obj["write_defaults_used"]
382
+ obj.pop("write_defaults_used", None)
383
+ return obj
384
+
385
+ model_config = ConfigDict(
386
+ validate_by_name=True,
387
+ validate_by_alias=True,
388
+ validate_assignment=True,
389
+ extra="forbid",
390
+ protected_namespaces=(),
391
+ )
392
+
393
+
394
+ def to_str(self) -> str:
395
+ """Returns the string representation of the model"""
396
+ return pprint.pformat(self.to_dict())
397
+
398
+ def __repr__(self) -> str:
399
+ """For print and pprint"""
400
+ return self.to_str()
401
+
402
+ def __eq__(self, other: object) -> bool:
403
+ """Returns true if both objects are equal"""
404
+ if not isinstance(other, FileAnalysisAvatarStats):
405
+ return False
406
+
407
+ return self.to_dict() == other.to_dict()
408
+
409
+ def __ne__(self, other: object) -> bool:
410
+ """Returns true if both objects are not equal"""
411
+ if not isinstance(other, FileAnalysisAvatarStats):
412
+ return True
413
+
414
+ return not (self == other)
415
+
416
+
417
+ def to_json(self) -> str:
418
+ """Returns the JSON representation of the model using alias"""
419
+ to_openapi_dict = _get_openapi_to_dict(self)
420
+ if to_openapi_dict is not None:
421
+ return json.dumps(to_jsonable_python(to_openapi_dict(self)))
422
+ return json.dumps(to_jsonable_python(self.to_dict()))
423
+
424
+ @classmethod
425
+ def from_json(cls, json_str: str) -> Optional[Self]:
426
+ """Create an instance of FileAnalysisAvatarStats from a JSON string"""
427
+ return cls.from_dict(json.loads(json_str))
428
+
429
+ def to_dict(self, serialize: bool = False) -> Dict[str, Any]:
430
+ """Return all declared model fields using public or wire names."""
431
+ return {
432
+ ("animatorCount" if serialize else "animator_count"): _to_legacy_value(getattr(self, "animator_count", None), serialize),
433
+ ("audioSourceCount" if serialize else "audio_source_count"): _to_legacy_value(getattr(self, "audio_source_count", None), serialize),
434
+ ("blendShapeCount" if serialize else "blend_shape_count"): _to_legacy_value(getattr(self, "blend_shape_count", None), serialize),
435
+ ("boneCount" if serialize else "bone_count"): _to_legacy_value(getattr(self, "bone_count", None), serialize),
436
+ ("bounds" if serialize else "bounds"): _to_legacy_value(getattr(self, "bounds", None), serialize),
437
+ ("cameraCount" if serialize else "camera_count"): _to_legacy_value(getattr(self, "camera_count", None), serialize),
438
+ ("clothCount" if serialize else "cloth_count"): _to_legacy_value(getattr(self, "cloth_count", None), serialize),
439
+ ("constraintCount" if serialize else "constraint_count"): _to_legacy_value(getattr(self, "constraint_count", None), serialize),
440
+ ("constraintDepth" if serialize else "constraint_depth"): _to_legacy_value(getattr(self, "constraint_depth", None), serialize),
441
+ ("contactCount" if serialize else "contact_count"): _to_legacy_value(getattr(self, "contact_count", None), serialize),
442
+ ("customExpressions" if serialize else "custom_expressions"): _to_legacy_value(getattr(self, "custom_expressions", None), serialize),
443
+ ("customizeAnimationLayers" if serialize else "customize_animation_layers"): _to_legacy_value(getattr(self, "customize_animation_layers", None), serialize),
444
+ ("enableEyeLook" if serialize else "enable_eye_look"): _to_legacy_value(getattr(self, "enable_eye_look", None), serialize),
445
+ ("lightCount" if serialize else "light_count"): _to_legacy_value(getattr(self, "light_count", None), serialize),
446
+ ("lineRendererCount" if serialize else "line_renderer_count"): _to_legacy_value(getattr(self, "line_renderer_count", None), serialize),
447
+ ("lipSync" if serialize else "lip_sync"): _to_legacy_value(getattr(self, "lip_sync", None), serialize),
448
+ ("materialCount" if serialize else "material_count"): _to_legacy_value(getattr(self, "material_count", None), serialize),
449
+ ("materialSlotsUsed" if serialize else "material_slots_used"): _to_legacy_value(getattr(self, "material_slots_used", None), serialize),
450
+ ("meshCount" if serialize else "mesh_count"): _to_legacy_value(getattr(self, "mesh_count", None), serialize),
451
+ ("meshIndices" if serialize else "mesh_indices"): _to_legacy_value(getattr(self, "mesh_indices", None), serialize),
452
+ ("meshParticleMaxPolygons" if serialize else "mesh_particle_max_polygons"): _to_legacy_value(getattr(self, "mesh_particle_max_polygons", None), serialize),
453
+ ("meshPolygons" if serialize else "mesh_polygons"): _to_legacy_value(getattr(self, "mesh_polygons", None), serialize),
454
+ ("meshVertices" if serialize else "mesh_vertices"): _to_legacy_value(getattr(self, "mesh_vertices", None), serialize),
455
+ ("particleCollisionEnabled" if serialize else "particle_collision_enabled"): _to_legacy_value(getattr(self, "particle_collision_enabled", None), serialize),
456
+ ("particleSystemCount" if serialize else "particle_system_count"): _to_legacy_value(getattr(self, "particle_system_count", None), serialize),
457
+ ("particleTrailsEnabled" if serialize else "particle_trails_enabled"): _to_legacy_value(getattr(self, "particle_trails_enabled", None), serialize),
458
+ ("physBoneColliderCount" if serialize else "phys_bone_collider_count"): _to_legacy_value(getattr(self, "phys_bone_collider_count", None), serialize),
459
+ ("physBoneCollisionCheckCount" if serialize else "phys_bone_collision_check_count"): _to_legacy_value(getattr(self, "phys_bone_collision_check_count", None), serialize),
460
+ ("physBoneComponentCount" if serialize else "phys_bone_component_count"): _to_legacy_value(getattr(self, "phys_bone_component_count", None), serialize),
461
+ ("physBoneTransformCount" if serialize else "phys_bone_transform_count"): _to_legacy_value(getattr(self, "phys_bone_transform_count", None), serialize),
462
+ ("physicsColliders" if serialize else "physics_colliders"): _to_legacy_value(getattr(self, "physics_colliders", None), serialize),
463
+ ("physicsRigidbodies" if serialize else "physics_rigidbodies"): _to_legacy_value(getattr(self, "physics_rigidbodies", None), serialize),
464
+ ("skinnedMeshCount" if serialize else "skinned_mesh_count"): _to_legacy_value(getattr(self, "skinned_mesh_count", None), serialize),
465
+ ("skinnedMeshIndices" if serialize else "skinned_mesh_indices"): _to_legacy_value(getattr(self, "skinned_mesh_indices", None), serialize),
466
+ ("skinnedMeshPolygons" if serialize else "skinned_mesh_polygons"): _to_legacy_value(getattr(self, "skinned_mesh_polygons", None), serialize),
467
+ ("skinnedMeshVertices" if serialize else "skinned_mesh_vertices"): _to_legacy_value(getattr(self, "skinned_mesh_vertices", None), serialize),
468
+ ("totalClothVertices" if serialize else "total_cloth_vertices"): _to_legacy_value(getattr(self, "total_cloth_vertices", None), serialize),
469
+ ("totalIndices" if serialize else "total_indices"): _to_legacy_value(getattr(self, "total_indices", None), serialize),
470
+ ("totalMaxParticles" if serialize else "total_max_particles"): _to_legacy_value(getattr(self, "total_max_particles", None), serialize),
471
+ ("totalPolygons" if serialize else "total_polygons"): _to_legacy_value(getattr(self, "total_polygons", None), serialize),
472
+ ("totalTextureUsage" if serialize else "total_texture_usage"): _to_legacy_value(getattr(self, "total_texture_usage", None), serialize),
473
+ ("totalVertices" if serialize else "total_vertices"): _to_legacy_value(getattr(self, "total_vertices", None), serialize),
474
+ ("trailRendererCount" if serialize else "trail_renderer_count"): _to_legacy_value(getattr(self, "trail_renderer_count", None), serialize),
475
+ ("writeDefaultsUsed" if serialize else "write_defaults_used"): _to_legacy_value(getattr(self, "write_defaults_used", None), serialize),
476
+ }
477
+
478
+ def __openapi_generator_modern_projection(self) -> Dict[str, Any]:
479
+ """Return the dictionary representation of the model using alias.
480
+
481
+ This has the following differences from calling pydantic's
482
+ `self.model_dump(by_alias=True)`:
483
+
484
+ * `None` is only added to the output dict for nullable fields that
485
+ were set at model initialization. Other fields with value `None`
486
+ are ignored.
487
+ """
488
+ excluded_fields: Set[str] = set([
489
+ ])
490
+
491
+ _dict = self.model_dump(
492
+ by_alias=True,
493
+ exclude=excluded_fields,
494
+ exclude_none=True,
495
+ )
496
+ return _dict
497
+
498
+ setattr(
499
+ to_dict,
500
+ _OPENAPI_GENERATOR_TO_DICT,
501
+ __openapi_generator_modern_projection,
502
+ )
503
+ setattr(
504
+ __openapi_generator_modern_projection,
505
+ _OPENAPI_GENERATOR_TO_DICT,
506
+ to_dict,
507
+ )
508
+ del __openapi_generator_modern_projection
509
+
510
+ @classmethod
511
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
512
+ """Create an instance of FileAnalysisAvatarStats from a dict"""
513
+ if obj is None:
514
+ return None
515
+
516
+ if not isinstance(obj, dict):
517
+ return cls.model_validate(obj)
518
+
519
+ obj = _cast(
520
+ Dict[str, Any],
521
+ cls.__preprocess_input_names(
522
+ obj,
523
+ remove_hidden_storage_names=True,
524
+ ),
525
+ )
526
+
527
+ _obj = cls.model_validate({
528
+ "animatorCount": obj.get("animatorCount"),
529
+ "audioSourceCount": obj.get("audioSourceCount"),
530
+ "blendShapeCount": obj.get("blendShapeCount"),
531
+ "boneCount": obj.get("boneCount"),
532
+ "bounds": obj.get("bounds"),
533
+ "cameraCount": obj.get("cameraCount"),
534
+ "clothCount": obj.get("clothCount"),
535
+ "constraintCount": obj.get("constraintCount"),
536
+ "constraintDepth": obj.get("constraintDepth"),
537
+ "contactCount": obj.get("contactCount"),
538
+ "customExpressions": obj.get("customExpressions"),
539
+ "customizeAnimationLayers": obj.get("customizeAnimationLayers"),
540
+ "enableEyeLook": obj.get("enableEyeLook"),
541
+ "lightCount": obj.get("lightCount"),
542
+ "lineRendererCount": obj.get("lineRendererCount"),
543
+ "lipSync": obj.get("lipSync"),
544
+ "materialCount": obj.get("materialCount"),
545
+ "materialSlotsUsed": obj.get("materialSlotsUsed"),
546
+ "meshCount": obj.get("meshCount"),
547
+ "meshIndices": obj.get("meshIndices"),
548
+ "meshParticleMaxPolygons": obj.get("meshParticleMaxPolygons"),
549
+ "meshPolygons": obj.get("meshPolygons"),
550
+ "meshVertices": obj.get("meshVertices"),
551
+ "particleCollisionEnabled": obj.get("particleCollisionEnabled"),
552
+ "particleSystemCount": obj.get("particleSystemCount"),
553
+ "particleTrailsEnabled": obj.get("particleTrailsEnabled"),
554
+ "physBoneColliderCount": obj.get("physBoneColliderCount"),
555
+ "physBoneCollisionCheckCount": obj.get("physBoneCollisionCheckCount"),
556
+ "physBoneComponentCount": obj.get("physBoneComponentCount"),
557
+ "physBoneTransformCount": obj.get("physBoneTransformCount"),
558
+ "physicsColliders": obj.get("physicsColliders"),
559
+ "physicsRigidbodies": obj.get("physicsRigidbodies"),
560
+ "skinnedMeshCount": obj.get("skinnedMeshCount"),
561
+ "skinnedMeshIndices": obj.get("skinnedMeshIndices"),
562
+ "skinnedMeshPolygons": obj.get("skinnedMeshPolygons"),
563
+ "skinnedMeshVertices": obj.get("skinnedMeshVertices"),
564
+ "totalClothVertices": obj.get("totalClothVertices"),
565
+ "totalIndices": obj.get("totalIndices"),
566
+ "totalMaxParticles": obj.get("totalMaxParticles"),
567
+ "totalPolygons": obj.get("totalPolygons"),
568
+ "totalTextureUsage": obj.get("totalTextureUsage"),
569
+ "totalVertices": obj.get("totalVertices"),
570
+ "trailRendererCount": obj.get("trailRendererCount"),
571
+ "writeDefaultsUsed": obj.get("writeDefaultsUsed")
572
+ })
573
+ return _obj
574
+
575
+