holder-python 0.2.5__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 (391) hide show
  1. holder/__init__.py +21 -0
  2. holder/client.py +182 -0
  3. holder/collections.py +70 -0
  4. holder/events.py +238 -0
  5. holder/exceptions.py +35 -0
  6. holder/generated/__init__.py +8 -0
  7. holder/generated/api/__init__.py +1 -0
  8. holder/generated/api/default/__init__.py +1 -0
  9. holder/generated/api/default/delete_ai_messages_message_id.py +166 -0
  10. holder/generated/api/default/delete_ai_messages_message_id_links.py +205 -0
  11. holder/generated/api/default/delete_ai_providers_credentials_provider.py +168 -0
  12. holder/generated/api/default/delete_ai_threads_thread_id.py +166 -0
  13. holder/generated/api/default/delete_cards_card_id.py +225 -0
  14. holder/generated/api/default/delete_cards_card_id_links.py +205 -0
  15. holder/generated/api/default/delete_cards_card_id_milestones_milestone_id.py +175 -0
  16. holder/generated/api/default/delete_cards_card_id_resources.py +197 -0
  17. holder/generated/api/default/delete_cards_card_id_tags.py +197 -0
  18. holder/generated/api/default/delete_locations_location_id.py +105 -0
  19. holder/generated/api/default/delete_locations_location_id_binding.py +102 -0
  20. holder/generated/api/default/delete_projects_project_id.py +187 -0
  21. holder/generated/api/default/delete_resources_resource_id.py +161 -0
  22. holder/generated/api/default/delete_trash.py +181 -0
  23. holder/generated/api/default/delete_trash_type_id.py +175 -0
  24. holder/generated/api/default/get_ai_capabilities.py +166 -0
  25. holder/generated/api/default/get_ai_catalog_json.py +134 -0
  26. holder/generated/api/default/get_ai_catalog_yaml.py +132 -0
  27. holder/generated/api/default/get_ai_local_models_config.py +134 -0
  28. holder/generated/api/default/get_ai_messages.py +186 -0
  29. holder/generated/api/default/get_ai_messages_message_id.py +166 -0
  30. holder/generated/api/default/get_ai_messages_message_id_backlinks.py +194 -0
  31. holder/generated/api/default/get_ai_messages_message_id_links.py +194 -0
  32. holder/generated/api/default/get_ai_providers_catalog.py +139 -0
  33. holder/generated/api/default/get_ai_providers_credentials.py +136 -0
  34. holder/generated/api/default/get_ai_runner_pull_job_id.py +171 -0
  35. holder/generated/api/default/get_ai_runner_pull_job_id_events.py +218 -0
  36. holder/generated/api/default/get_ai_runs.py +186 -0
  37. holder/generated/api/default/get_ai_runs_run_id.py +166 -0
  38. holder/generated/api/default/get_ai_runs_run_id_events.py +213 -0
  39. holder/generated/api/default/get_ai_status.py +134 -0
  40. holder/generated/api/default/get_ai_threads.py +171 -0
  41. holder/generated/api/default/get_ai_threads_thread_id.py +166 -0
  42. holder/generated/api/default/get_calendar.py +221 -0
  43. holder/generated/api/default/get_cards.py +286 -0
  44. holder/generated/api/default/get_cards_card_id.py +166 -0
  45. holder/generated/api/default/get_cards_card_id_backlinks.py +194 -0
  46. holder/generated/api/default/get_cards_card_id_links.py +194 -0
  47. holder/generated/api/default/get_cards_card_id_milestones.py +173 -0
  48. holder/generated/api/default/get_cards_context.py +226 -0
  49. holder/generated/api/default/get_event_cursor.py +198 -0
  50. holder/generated/api/default/get_git_providers_json.py +134 -0
  51. holder/generated/api/default/get_git_providers_yaml.py +132 -0
  52. holder/generated/api/default/get_health.py +134 -0
  53. holder/generated/api/default/get_imports_job_id.py +159 -0
  54. holder/generated/api/default/get_locations.py +160 -0
  55. holder/generated/api/default/get_locations_location_id.py +157 -0
  56. holder/generated/api/default/get_openapi_yaml.py +132 -0
  57. holder/generated/api/default/get_ping.py +128 -0
  58. holder/generated/api/default/get_projects.py +261 -0
  59. holder/generated/api/default/get_projects_project_id.py +166 -0
  60. holder/generated/api/default/get_projects_project_id_cards.py +321 -0
  61. holder/generated/api/default/get_projects_project_id_encryption_check.py +166 -0
  62. holder/generated/api/default/get_projects_project_id_git_sync_status.py +171 -0
  63. holder/generated/api/default/get_projects_project_id_history.py +246 -0
  64. holder/generated/api/default/get_projects_project_id_history_cards_card_id.py +243 -0
  65. holder/generated/api/default/get_projects_project_id_history_cards_card_id_compare.py +286 -0
  66. holder/generated/api/default/get_projects_project_id_history_cards_card_id_snapshot.py +225 -0
  67. holder/generated/api/default/get_projects_project_id_tags.py +171 -0
  68. holder/generated/api/default/get_resources.py +242 -0
  69. holder/generated/api/default/get_resources_resource_id.py +161 -0
  70. holder/generated/api/default/get_resources_resource_id_assets_asset_id_content.py +247 -0
  71. holder/generated/api/default/get_search_ai.py +216 -0
  72. holder/generated/api/default/get_search_cards.py +216 -0
  73. holder/generated/api/default/get_trash.py +181 -0
  74. holder/generated/api/default/patch_ai_messages_message_id.py +192 -0
  75. holder/generated/api/default/patch_ai_threads_thread_id.py +192 -0
  76. holder/generated/api/default/patch_cards_card_id.py +192 -0
  77. holder/generated/api/default/patch_cards_card_id_milestones_milestone_id.py +214 -0
  78. holder/generated/api/default/patch_locations_location_id.py +117 -0
  79. holder/generated/api/default/patch_projects_project_id.py +192 -0
  80. holder/generated/api/default/patch_resources_resource_id.py +192 -0
  81. holder/generated/api/default/post_ai_messages.py +176 -0
  82. holder/generated/api/default/post_ai_messages_capture.py +181 -0
  83. holder/generated/api/default/post_ai_messages_message_id_links.py +192 -0
  84. holder/generated/api/default/post_ai_messages_message_id_restore.py +166 -0
  85. holder/generated/api/default/post_ai_runner_pull.py +181 -0
  86. holder/generated/api/default/post_ai_runner_retry.py +139 -0
  87. holder/generated/api/default/post_ai_runs.py +194 -0
  88. holder/generated/api/default/post_ai_threads.py +176 -0
  89. holder/generated/api/default/post_bye.py +166 -0
  90. holder/generated/api/default/post_card_references_resolve.py +181 -0
  91. holder/generated/api/default/post_cards.py +176 -0
  92. holder/generated/api/default/post_cards_card_id_links.py +192 -0
  93. holder/generated/api/default/post_cards_card_id_milestones.py +199 -0
  94. holder/generated/api/default/post_cards_card_id_move.py +222 -0
  95. holder/generated/api/default/post_cards_card_id_resources.py +197 -0
  96. holder/generated/api/default/post_cards_card_id_restore.py +186 -0
  97. holder/generated/api/default/post_cards_card_id_tags.py +197 -0
  98. holder/generated/api/default/post_imports.py +160 -0
  99. holder/generated/api/default/post_locations.py +160 -0
  100. holder/generated/api/default/post_locations_location_id_test.py +105 -0
  101. holder/generated/api/default/post_projects.py +171 -0
  102. holder/generated/api/default/post_projects_project_id_git_pull.py +211 -0
  103. holder/generated/api/default/post_projects_project_id_git_push.py +193 -0
  104. holder/generated/api/default/post_projects_project_id_git_sync.py +207 -0
  105. holder/generated/api/default/post_projects_project_id_git_test_remote.py +205 -0
  106. holder/generated/api/default/post_projects_project_id_history_cards_card_id_restore.py +240 -0
  107. holder/generated/api/default/post_projects_project_id_recovery_token_export.py +196 -0
  108. holder/generated/api/default/post_projects_project_id_recovery_token_import.py +196 -0
  109. holder/generated/api/default/post_projects_project_id_repair_hierarchy.py +240 -0
  110. holder/generated/api/default/post_rebuild.py +176 -0
  111. holder/generated/api/default/post_recovery_token_import.py +185 -0
  112. holder/generated/api/default/post_reindex.py +139 -0
  113. holder/generated/api/default/post_resources.py +176 -0
  114. holder/generated/api/default/put_ai_local_models_config.py +173 -0
  115. holder/generated/api/default/put_ai_providers_credentials.py +175 -0
  116. holder/generated/api/default/put_locations_location_id_binding.py +117 -0
  117. holder/generated/api/default/put_locations_preferred.py +107 -0
  118. holder/generated/api/default/stream_changes.py +256 -0
  119. holder/generated/client.py +280 -0
  120. holder/generated/errors.py +16 -0
  121. holder/generated/models/__init__.py +569 -0
  122. holder/generated/models/ai_local_model_config_data.py +111 -0
  123. holder/generated/models/ai_local_model_config_response.py +78 -0
  124. holder/generated/models/ai_local_model_config_update_request.py +134 -0
  125. holder/generated/models/ai_message.py +204 -0
  126. holder/generated/models/ai_message_capture_request.py +246 -0
  127. holder/generated/models/ai_message_capture_request_context_type_0.py +46 -0
  128. holder/generated/models/ai_message_capture_response.py +78 -0
  129. holder/generated/models/ai_message_capture_response_data.py +78 -0
  130. holder/generated/models/ai_message_create_request.py +186 -0
  131. holder/generated/models/ai_message_create_response.py +78 -0
  132. holder/generated/models/ai_message_create_response_data.py +62 -0
  133. holder/generated/models/ai_message_get_response.py +76 -0
  134. holder/generated/models/ai_message_list_response.py +84 -0
  135. holder/generated/models/ai_message_update_request.py +203 -0
  136. holder/generated/models/ai_message_update_response.py +78 -0
  137. holder/generated/models/ai_message_update_response_data.py +62 -0
  138. holder/generated/models/ai_provider_catalog_provider.py +265 -0
  139. holder/generated/models/ai_provider_catalog_provider_api_type_0.py +46 -0
  140. holder/generated/models/ai_provider_catalog_provider_auth_type_0.py +46 -0
  141. holder/generated/models/ai_provider_catalog_provider_models_item.py +46 -0
  142. holder/generated/models/ai_provider_catalog_response.py +78 -0
  143. holder/generated/models/ai_provider_catalog_response_data.py +100 -0
  144. holder/generated/models/ai_provider_credential.py +94 -0
  145. holder/generated/models/ai_provider_credential_delete_response.py +80 -0
  146. holder/generated/models/ai_provider_credential_delete_response_data.py +62 -0
  147. holder/generated/models/ai_provider_credential_upsert_request.py +92 -0
  148. holder/generated/models/ai_provider_credential_upsert_response.py +78 -0
  149. holder/generated/models/ai_provider_credentials_list_response.py +80 -0
  150. holder/generated/models/ai_provider_credentials_list_response_data.py +78 -0
  151. holder/generated/models/ai_run_create_request.py +133 -0
  152. holder/generated/models/ai_run_create_request_context.py +46 -0
  153. holder/generated/models/ai_run_event_data.py +146 -0
  154. holder/generated/models/ai_run_get_response.py +76 -0
  155. holder/generated/models/ai_run_item.py +328 -0
  156. holder/generated/models/ai_run_item_policy_trace_type_0.py +46 -0
  157. holder/generated/models/ai_run_list_response.py +84 -0
  158. holder/generated/models/ai_status_data.py +186 -0
  159. holder/generated/models/ai_status_pull_job.py +130 -0
  160. holder/generated/models/ai_status_response.py +76 -0
  161. holder/generated/models/ai_thread.py +116 -0
  162. holder/generated/models/ai_thread_create_request.py +119 -0
  163. holder/generated/models/ai_thread_create_response.py +78 -0
  164. holder/generated/models/ai_thread_create_response_data.py +62 -0
  165. holder/generated/models/ai_thread_get_response.py +76 -0
  166. holder/generated/models/ai_thread_list_response.py +84 -0
  167. holder/generated/models/ai_thread_patch_response.py +78 -0
  168. holder/generated/models/ai_thread_patch_response_data.py +62 -0
  169. holder/generated/models/ai_thread_update_request.py +104 -0
  170. holder/generated/models/asset_import_job.py +141 -0
  171. holder/generated/models/asset_import_job_response.py +76 -0
  172. holder/generated/models/asset_import_job_status.py +13 -0
  173. holder/generated/models/asset_import_request.py +86 -0
  174. holder/generated/models/asset_placement.py +96 -0
  175. holder/generated/models/asset_placement_encoding.py +9 -0
  176. holder/generated/models/bye_response.py +62 -0
  177. holder/generated/models/calendar_card_activity.py +86 -0
  178. holder/generated/models/card_context_breadcrumb.py +113 -0
  179. holder/generated/models/card_context_breadcrumb_type.py +9 -0
  180. holder/generated/models/card_context_card.py +161 -0
  181. holder/generated/models/card_context_data.py +124 -0
  182. holder/generated/models/card_context_data_project.py +70 -0
  183. holder/generated/models/card_context_response.py +76 -0
  184. holder/generated/models/card_create_request.py +147 -0
  185. holder/generated/models/card_create_response.py +78 -0
  186. holder/generated/models/card_create_response_data.py +70 -0
  187. holder/generated/models/card_data.py +160 -0
  188. holder/generated/models/card_get_response.py +76 -0
  189. holder/generated/models/card_history_author.py +70 -0
  190. holder/generated/models/card_history_comparison_data.py +110 -0
  191. holder/generated/models/card_history_comparison_response.py +78 -0
  192. holder/generated/models/card_history_diff_line.py +100 -0
  193. holder/generated/models/card_history_diff_line_origin.py +10 -0
  194. holder/generated/models/card_history_entry.py +172 -0
  195. holder/generated/models/card_history_entry_kind.py +16 -0
  196. holder/generated/models/card_history_entry_saves_item.py +94 -0
  197. holder/generated/models/card_history_page_data.py +114 -0
  198. holder/generated/models/card_history_page_response.py +76 -0
  199. holder/generated/models/card_history_restore_response.py +80 -0
  200. holder/generated/models/card_history_restore_response_data.py +108 -0
  201. holder/generated/models/card_history_snapshot_response.py +80 -0
  202. holder/generated/models/card_history_snapshot_response_data.py +76 -0
  203. holder/generated/models/card_history_version.py +86 -0
  204. holder/generated/models/card_link.py +116 -0
  205. holder/generated/models/card_link_create_request.py +111 -0
  206. holder/generated/models/card_link_create_response.py +76 -0
  207. holder/generated/models/card_link_delete_request.py +80 -0
  208. holder/generated/models/card_link_list_response.py +84 -0
  209. holder/generated/models/card_list_item.py +161 -0
  210. holder/generated/models/card_list_response.py +84 -0
  211. holder/generated/models/card_move_intent.py +15 -0
  212. holder/generated/models/card_move_request.py +134 -0
  213. holder/generated/models/card_move_response.py +76 -0
  214. holder/generated/models/card_move_result.py +114 -0
  215. holder/generated/models/card_page.py +90 -0
  216. holder/generated/models/card_page_item.py +170 -0
  217. holder/generated/models/card_page_response.py +76 -0
  218. holder/generated/models/card_patch_response.py +78 -0
  219. holder/generated/models/card_patch_response_data.py +62 -0
  220. holder/generated/models/card_reference_candidate.py +84 -0
  221. holder/generated/models/card_reference_resolve_data.py +129 -0
  222. holder/generated/models/card_reference_resolve_data_match_kind.py +10 -0
  223. holder/generated/models/card_reference_resolve_data_status.py +10 -0
  224. holder/generated/models/card_reference_resolve_request.py +82 -0
  225. holder/generated/models/card_reference_resolve_request_scope.py +10 -0
  226. holder/generated/models/card_reference_resolve_response.py +78 -0
  227. holder/generated/models/card_tag_mutation_request.py +70 -0
  228. holder/generated/models/card_tag_mutation_response.py +78 -0
  229. holder/generated/models/card_tag_mutation_result.py +88 -0
  230. holder/generated/models/card_tag_mutation_result_outcome.py +12 -0
  231. holder/generated/models/card_update_request.py +122 -0
  232. holder/generated/models/caste_info.py +85 -0
  233. holder/generated/models/caste_info_name.py +12 -0
  234. holder/generated/models/caste_recommended_model.py +143 -0
  235. holder/generated/models/caste_recommended_model_required_caste.py +12 -0
  236. holder/generated/models/change_event_data.py +109 -0
  237. holder/generated/models/change_event_data_entity.py +14 -0
  238. holder/generated/models/delete_cards_card_id_children.py +9 -0
  239. holder/generated/models/delete_cards_card_id_resources_body.py +70 -0
  240. holder/generated/models/error.py +70 -0
  241. holder/generated/models/error_response.py +76 -0
  242. holder/generated/models/event_checkpoint.py +92 -0
  243. holder/generated/models/event_checkpoint_git_revisions.py +66 -0
  244. holder/generated/models/event_checkpoint_history_urls.py +48 -0
  245. holder/generated/models/event_checkpoint_response.py +76 -0
  246. holder/generated/models/event_resync_data.py +116 -0
  247. holder/generated/models/event_resync_data_reason.py +9 -0
  248. holder/generated/models/get_ai_catalog_json_response_200.py +46 -0
  249. holder/generated/models/get_ai_messages_message_id_backlinks_include_deleted.py +9 -0
  250. holder/generated/models/get_ai_messages_message_id_links_include_deleted.py +9 -0
  251. holder/generated/models/get_cards_card_id_backlinks_include_deleted.py +9 -0
  252. holder/generated/models/get_cards_card_id_links_include_deleted.py +9 -0
  253. holder/generated/models/get_cards_context_order.py +10 -0
  254. holder/generated/models/get_cards_order.py +10 -0
  255. holder/generated/models/get_cards_view.py +9 -0
  256. holder/generated/models/get_git_providers_json_response_200.py +46 -0
  257. holder/generated/models/get_locations_location_id_response_200.py +46 -0
  258. holder/generated/models/get_ping_response_200.py +8 -0
  259. holder/generated/models/get_projects_order.py +13 -0
  260. holder/generated/models/get_projects_project_id_cards_order.py +9 -0
  261. holder/generated/models/get_projects_project_id_cards_parent_type_0.py +8 -0
  262. holder/generated/models/get_projects_project_id_history_cards_card_id_compare_mode.py +9 -0
  263. holder/generated/models/get_projects_project_id_history_kind.py +13 -0
  264. holder/generated/models/health_data.py +110 -0
  265. holder/generated/models/health_data_crypt_filter.py +78 -0
  266. holder/generated/models/health_response.py +76 -0
  267. holder/generated/models/hierarchy_repair.py +100 -0
  268. holder/generated/models/hierarchy_repair_move.py +76 -0
  269. holder/generated/models/hierarchy_repair_request.py +62 -0
  270. holder/generated/models/hierarchy_repair_response.py +76 -0
  271. holder/generated/models/local_model.py +91 -0
  272. holder/generated/models/location_binding_request.py +81 -0
  273. holder/generated/models/location_binding_request_values.py +46 -0
  274. holder/generated/models/milestone.py +177 -0
  275. holder/generated/models/milestone_create_request.py +135 -0
  276. holder/generated/models/milestone_list_response.py +84 -0
  277. holder/generated/models/milestone_remove_response.py +78 -0
  278. holder/generated/models/milestone_remove_result.py +79 -0
  279. holder/generated/models/milestone_response.py +76 -0
  280. holder/generated/models/milestone_update_request.py +116 -0
  281. holder/generated/models/patch_locations_location_id_body.py +90 -0
  282. holder/generated/models/patch_locations_location_id_body_configuration.py +46 -0
  283. holder/generated/models/post_ai_runner_pull_body.py +62 -0
  284. holder/generated/models/post_cards_card_id_resources_body.py +70 -0
  285. holder/generated/models/post_locations_response_201.py +46 -0
  286. holder/generated/models/project.py +197 -0
  287. holder/generated/models/project_calendar_response.py +78 -0
  288. holder/generated/models/project_calendar_response_data.py +136 -0
  289. holder/generated/models/project_create_request.py +177 -0
  290. holder/generated/models/project_create_request_privacy_mode.py +9 -0
  291. holder/generated/models/project_create_response.py +78 -0
  292. holder/generated/models/project_create_response_data.py +62 -0
  293. holder/generated/models/project_delete_response.py +78 -0
  294. holder/generated/models/project_delete_response_data.py +62 -0
  295. holder/generated/models/project_encryption_check.py +94 -0
  296. holder/generated/models/project_encryption_check_response.py +80 -0
  297. holder/generated/models/project_encryption_check_response_data.py +92 -0
  298. holder/generated/models/project_encryption_check_response_data_privacy_mode.py +9 -0
  299. holder/generated/models/project_get_response.py +76 -0
  300. holder/generated/models/project_git_push_request.py +95 -0
  301. holder/generated/models/project_git_push_response.py +78 -0
  302. holder/generated/models/project_git_push_response_data.py +199 -0
  303. holder/generated/models/project_git_push_response_data_status.py +15 -0
  304. holder/generated/models/project_git_sync_operation_response.py +80 -0
  305. holder/generated/models/project_git_sync_operation_response_data.py +163 -0
  306. holder/generated/models/project_git_sync_operation_response_data_pull.py +96 -0
  307. holder/generated/models/project_git_sync_operation_response_data_pull_status.py +11 -0
  308. holder/generated/models/project_git_sync_operation_response_data_push.py +118 -0
  309. holder/generated/models/project_git_sync_operation_response_data_push_status.py +15 -0
  310. holder/generated/models/project_git_sync_operation_response_data_status.py +9 -0
  311. holder/generated/models/project_git_sync_request.py +94 -0
  312. holder/generated/models/project_git_sync_status_response.py +80 -0
  313. holder/generated/models/project_git_sync_status_response_data.py +76 -0
  314. holder/generated/models/project_git_test_remote_request.py +96 -0
  315. holder/generated/models/project_git_test_remote_response.py +80 -0
  316. holder/generated/models/project_git_test_remote_response_data.py +151 -0
  317. holder/generated/models/project_git_test_remote_response_data_status.py +14 -0
  318. holder/generated/models/project_history_activity.py +138 -0
  319. holder/generated/models/project_history_affected_object.py +74 -0
  320. holder/generated/models/project_history_affected_object_kind.py +13 -0
  321. holder/generated/models/project_history_page_data.py +115 -0
  322. holder/generated/models/project_history_page_response.py +78 -0
  323. holder/generated/models/project_list_response.py +84 -0
  324. holder/generated/models/project_privacy_mode.py +9 -0
  325. holder/generated/models/project_recovery_token_export_request.py +62 -0
  326. holder/generated/models/project_recovery_token_export_response.py +80 -0
  327. holder/generated/models/project_recovery_token_export_response_data.py +78 -0
  328. holder/generated/models/project_recovery_token_import_request.py +70 -0
  329. holder/generated/models/project_recovery_token_import_response.py +80 -0
  330. holder/generated/models/project_recovery_token_import_response_data.py +62 -0
  331. holder/generated/models/project_sync.py +227 -0
  332. holder/generated/models/project_tag.py +70 -0
  333. holder/generated/models/project_tag_list_response.py +84 -0
  334. holder/generated/models/project_update_request.py +181 -0
  335. holder/generated/models/project_update_request_privacy_mode.py +9 -0
  336. holder/generated/models/project_update_response.py +78 -0
  337. holder/generated/models/project_update_response_data.py +75 -0
  338. holder/generated/models/put_locations_preferred_body.py +70 -0
  339. holder/generated/models/rebuild_data.py +94 -0
  340. holder/generated/models/rebuild_request.py +62 -0
  341. holder/generated/models/rebuild_response.py +76 -0
  342. holder/generated/models/recovery_token_import_auto_response.py +80 -0
  343. holder/generated/models/recovery_token_import_auto_response_data.py +141 -0
  344. holder/generated/models/recovery_token_import_auto_response_data_pull_status.py +10 -0
  345. holder/generated/models/reindex_data.py +62 -0
  346. holder/generated/models/reindex_response.py +76 -0
  347. holder/generated/models/resource.py +134 -0
  348. holder/generated/models/resource_asset.py +140 -0
  349. holder/generated/models/resource_attachment_response.py +80 -0
  350. holder/generated/models/resource_attachment_response_data.py +90 -0
  351. holder/generated/models/resource_attachment_response_data_outcome.py +11 -0
  352. holder/generated/models/resource_create_request.py +129 -0
  353. holder/generated/models/resource_delete_response.py +78 -0
  354. holder/generated/models/resource_delete_response_data.py +62 -0
  355. holder/generated/models/resource_list_response.py +134 -0
  356. holder/generated/models/resource_metadata.py +55 -0
  357. holder/generated/models/resource_response.py +76 -0
  358. holder/generated/models/resource_update_request.py +102 -0
  359. holder/generated/models/runner_capabilities_data.py +220 -0
  360. holder/generated/models/runner_capabilities_response.py +78 -0
  361. holder/generated/models/runner_pull_job.py +122 -0
  362. holder/generated/models/runner_pull_progress.py +86 -0
  363. holder/generated/models/runner_pull_start_response.py +78 -0
  364. holder/generated/models/runner_pull_start_response_data.py +78 -0
  365. holder/generated/models/runner_pull_status_response.py +76 -0
  366. holder/generated/models/search_card_item.py +102 -0
  367. holder/generated/models/search_cards_response.py +84 -0
  368. holder/generated/models/search_message_item.py +86 -0
  369. holder/generated/models/search_messages_response.py +84 -0
  370. holder/generated/models/storage_location.py +149 -0
  371. holder/generated/models/storage_location_configuration.py +48 -0
  372. holder/generated/models/storage_location_list_response.py +100 -0
  373. holder/generated/models/storage_location_provider.py +9 -0
  374. holder/generated/models/storage_location_request.py +118 -0
  375. holder/generated/models/storage_location_request_configuration.py +46 -0
  376. holder/generated/models/storage_location_request_provider.py +9 -0
  377. holder/generated/models/trash_delete_response.py +78 -0
  378. holder/generated/models/trash_delete_response_data.py +46 -0
  379. holder/generated/models/trash_item.py +211 -0
  380. holder/generated/models/trash_list_response.py +84 -0
  381. holder/generated/types.py +54 -0
  382. holder/library.py +15 -0
  383. holder/models/__init__.py +15 -0
  384. holder/models/card.py +272 -0
  385. holder/models/project.py +207 -0
  386. holder/models/search.py +66 -0
  387. holder/models/tag.py +117 -0
  388. holder/py.typed +0 -0
  389. holder_python-0.2.5.dist-info/METADATA +120 -0
  390. holder_python-0.2.5.dist-info/RECORD +391 -0
  391. holder_python-0.2.5.dist-info/WHEEL +4 -0
@@ -0,0 +1,203 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="AiMessageUpdateRequest")
13
+
14
+
15
+ @_attrs_define
16
+ class AiMessageUpdateRequest:
17
+ """
18
+ Attributes:
19
+ role (None | str | Unset):
20
+ source (None | str | Unset):
21
+ provider (None | str | Unset):
22
+ model (None | str | Unset):
23
+ content (None | str | Unset):
24
+ created_at (int | Unset):
25
+ prompt_hash (None | str | Unset):
26
+ meta_json (None | str | Unset):
27
+ """
28
+
29
+ role: None | str | Unset = UNSET
30
+ source: None | str | Unset = UNSET
31
+ provider: None | str | Unset = UNSET
32
+ model: None | str | Unset = UNSET
33
+ content: None | str | Unset = UNSET
34
+ created_at: int | Unset = UNSET
35
+ prompt_hash: None | str | Unset = UNSET
36
+ meta_json: None | str | Unset = UNSET
37
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
38
+
39
+ def to_dict(self) -> dict[str, Any]:
40
+ role: None | str | Unset
41
+ if isinstance(self.role, Unset):
42
+ role = UNSET
43
+ else:
44
+ role = self.role
45
+
46
+ source: None | str | Unset
47
+ if isinstance(self.source, Unset):
48
+ source = UNSET
49
+ else:
50
+ source = self.source
51
+
52
+ provider: None | str | Unset
53
+ if isinstance(self.provider, Unset):
54
+ provider = UNSET
55
+ else:
56
+ provider = self.provider
57
+
58
+ model: None | str | Unset
59
+ if isinstance(self.model, Unset):
60
+ model = UNSET
61
+ else:
62
+ model = self.model
63
+
64
+ content: None | str | Unset
65
+ if isinstance(self.content, Unset):
66
+ content = UNSET
67
+ else:
68
+ content = self.content
69
+
70
+ created_at = self.created_at
71
+
72
+ prompt_hash: None | str | Unset
73
+ if isinstance(self.prompt_hash, Unset):
74
+ prompt_hash = UNSET
75
+ else:
76
+ prompt_hash = self.prompt_hash
77
+
78
+ meta_json: None | str | Unset
79
+ if isinstance(self.meta_json, Unset):
80
+ meta_json = UNSET
81
+ else:
82
+ meta_json = self.meta_json
83
+
84
+ field_dict: dict[str, Any] = {}
85
+ field_dict.update(self.additional_properties)
86
+ field_dict.update({})
87
+ if role is not UNSET:
88
+ field_dict["role"] = role
89
+ if source is not UNSET:
90
+ field_dict["source"] = source
91
+ if provider is not UNSET:
92
+ field_dict["provider"] = provider
93
+ if model is not UNSET:
94
+ field_dict["model"] = model
95
+ if content is not UNSET:
96
+ field_dict["content"] = content
97
+ if created_at is not UNSET:
98
+ field_dict["created_at"] = created_at
99
+ if prompt_hash is not UNSET:
100
+ field_dict["prompt_hash"] = prompt_hash
101
+ if meta_json is not UNSET:
102
+ field_dict["meta_json"] = meta_json
103
+
104
+ return field_dict
105
+
106
+ @classmethod
107
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
108
+ d = dict(src_dict)
109
+
110
+ def _parse_role(data: object) -> None | str | Unset:
111
+ if data is None:
112
+ return data
113
+ if isinstance(data, Unset):
114
+ return data
115
+ return cast(None | str | Unset, data)
116
+
117
+ role = _parse_role(d.pop("role", UNSET))
118
+
119
+ def _parse_source(data: object) -> None | str | Unset:
120
+ if data is None:
121
+ return data
122
+ if isinstance(data, Unset):
123
+ return data
124
+ return cast(None | str | Unset, data)
125
+
126
+ source = _parse_source(d.pop("source", UNSET))
127
+
128
+ def _parse_provider(data: object) -> None | str | Unset:
129
+ if data is None:
130
+ return data
131
+ if isinstance(data, Unset):
132
+ return data
133
+ return cast(None | str | Unset, data)
134
+
135
+ provider = _parse_provider(d.pop("provider", UNSET))
136
+
137
+ def _parse_model(data: object) -> None | str | Unset:
138
+ if data is None:
139
+ return data
140
+ if isinstance(data, Unset):
141
+ return data
142
+ return cast(None | str | Unset, data)
143
+
144
+ model = _parse_model(d.pop("model", UNSET))
145
+
146
+ def _parse_content(data: object) -> None | str | Unset:
147
+ if data is None:
148
+ return data
149
+ if isinstance(data, Unset):
150
+ return data
151
+ return cast(None | str | Unset, data)
152
+
153
+ content = _parse_content(d.pop("content", UNSET))
154
+
155
+ created_at = d.pop("created_at", UNSET)
156
+
157
+ def _parse_prompt_hash(data: object) -> None | str | Unset:
158
+ if data is None:
159
+ return data
160
+ if isinstance(data, Unset):
161
+ return data
162
+ return cast(None | str | Unset, data)
163
+
164
+ prompt_hash = _parse_prompt_hash(d.pop("prompt_hash", UNSET))
165
+
166
+ def _parse_meta_json(data: object) -> None | str | Unset:
167
+ if data is None:
168
+ return data
169
+ if isinstance(data, Unset):
170
+ return data
171
+ return cast(None | str | Unset, data)
172
+
173
+ meta_json = _parse_meta_json(d.pop("meta_json", UNSET))
174
+
175
+ ai_message_update_request = cls(
176
+ role=role,
177
+ source=source,
178
+ provider=provider,
179
+ model=model,
180
+ content=content,
181
+ created_at=created_at,
182
+ prompt_hash=prompt_hash,
183
+ meta_json=meta_json,
184
+ )
185
+
186
+ ai_message_update_request.additional_properties = d
187
+ return ai_message_update_request
188
+
189
+ @property
190
+ def additional_keys(self) -> list[str]:
191
+ return list(self.additional_properties.keys())
192
+
193
+ def __getitem__(self, key: str) -> Any:
194
+ return self.additional_properties[key]
195
+
196
+ def __setitem__(self, key: str, value: Any) -> None:
197
+ self.additional_properties[key] = value
198
+
199
+ def __delitem__(self, key: str) -> None:
200
+ del self.additional_properties[key]
201
+
202
+ def __contains__(self, key: str) -> bool:
203
+ return key in self.additional_properties
@@ -0,0 +1,78 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.ai_message_update_response_data import AiMessageUpdateResponseData
12
+
13
+
14
+ T = TypeVar("T", bound="AiMessageUpdateResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class AiMessageUpdateResponse:
19
+ """
20
+ Attributes:
21
+ ok (bool):
22
+ data (AiMessageUpdateResponseData):
23
+ """
24
+
25
+ ok: bool
26
+ data: AiMessageUpdateResponseData
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ ok = self.ok
31
+
32
+ data = self.data.to_dict()
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update(
37
+ {
38
+ "ok": ok,
39
+ "data": data,
40
+ }
41
+ )
42
+
43
+ return field_dict
44
+
45
+ @classmethod
46
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
47
+ from ..models.ai_message_update_response_data import (
48
+ AiMessageUpdateResponseData,
49
+ )
50
+
51
+ d = dict(src_dict)
52
+ ok = d.pop("ok")
53
+
54
+ data = AiMessageUpdateResponseData.from_dict(d.pop("data"))
55
+
56
+ ai_message_update_response = cls(
57
+ ok=ok,
58
+ data=data,
59
+ )
60
+
61
+ ai_message_update_response.additional_properties = d
62
+ return ai_message_update_response
63
+
64
+ @property
65
+ def additional_keys(self) -> list[str]:
66
+ return list(self.additional_properties.keys())
67
+
68
+ def __getitem__(self, key: str) -> Any:
69
+ return self.additional_properties[key]
70
+
71
+ def __setitem__(self, key: str, value: Any) -> None:
72
+ self.additional_properties[key] = value
73
+
74
+ def __delitem__(self, key: str) -> None:
75
+ del self.additional_properties[key]
76
+
77
+ def __contains__(self, key: str) -> bool:
78
+ return key in self.additional_properties
@@ -0,0 +1,62 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ T = TypeVar("T", bound="AiMessageUpdateResponseData")
11
+
12
+
13
+ @_attrs_define
14
+ class AiMessageUpdateResponseData:
15
+ """
16
+ Attributes:
17
+ message_id (str):
18
+ """
19
+
20
+ message_id: str
21
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> dict[str, Any]:
24
+ message_id = self.message_id
25
+
26
+ field_dict: dict[str, Any] = {}
27
+ field_dict.update(self.additional_properties)
28
+ field_dict.update(
29
+ {
30
+ "message_id": message_id,
31
+ }
32
+ )
33
+
34
+ return field_dict
35
+
36
+ @classmethod
37
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
38
+ d = dict(src_dict)
39
+ message_id = d.pop("message_id")
40
+
41
+ ai_message_update_response_data = cls(
42
+ message_id=message_id,
43
+ )
44
+
45
+ ai_message_update_response_data.additional_properties = d
46
+ return ai_message_update_response_data
47
+
48
+ @property
49
+ def additional_keys(self) -> list[str]:
50
+ return list(self.additional_properties.keys())
51
+
52
+ def __getitem__(self, key: str) -> Any:
53
+ return self.additional_properties[key]
54
+
55
+ def __setitem__(self, key: str, value: Any) -> None:
56
+ self.additional_properties[key] = value
57
+
58
+ def __delitem__(self, key: str) -> None:
59
+ del self.additional_properties[key]
60
+
61
+ def __contains__(self, key: str) -> bool:
62
+ return key in self.additional_properties
@@ -0,0 +1,265 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ if TYPE_CHECKING:
13
+ from ..models.ai_provider_catalog_provider_api_type_0 import (
14
+ AiProviderCatalogProviderApiType0,
15
+ )
16
+ from ..models.ai_provider_catalog_provider_auth_type_0 import (
17
+ AiProviderCatalogProviderAuthType0,
18
+ )
19
+ from ..models.ai_provider_catalog_provider_models_item import (
20
+ AiProviderCatalogProviderModelsItem,
21
+ )
22
+
23
+
24
+ T = TypeVar("T", bound="AiProviderCatalogProvider")
25
+
26
+
27
+ @_attrs_define
28
+ class AiProviderCatalogProvider:
29
+ """
30
+ Attributes:
31
+ id (str):
32
+ display_name (str):
33
+ enabled (bool):
34
+ configured (bool):
35
+ api (AiProviderCatalogProviderApiType0 | None):
36
+ auth (AiProviderCatalogProviderAuthType0 | None):
37
+ models (list[AiProviderCatalogProviderModelsItem]):
38
+ setup_url (None | str | Unset):
39
+ docs_url (None | str | Unset):
40
+ api_key_label (None | str | Unset):
41
+ api_key_hint (None | str | Unset):
42
+ """
43
+
44
+ id: str
45
+ display_name: str
46
+ enabled: bool
47
+ configured: bool
48
+ api: AiProviderCatalogProviderApiType0 | None
49
+ auth: AiProviderCatalogProviderAuthType0 | None
50
+ models: list[AiProviderCatalogProviderModelsItem]
51
+ setup_url: None | str | Unset = UNSET
52
+ docs_url: None | str | Unset = UNSET
53
+ api_key_label: None | str | Unset = UNSET
54
+ api_key_hint: None | str | Unset = UNSET
55
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
56
+
57
+ def to_dict(self) -> dict[str, Any]:
58
+ from ..models.ai_provider_catalog_provider_api_type_0 import (
59
+ AiProviderCatalogProviderApiType0,
60
+ )
61
+ from ..models.ai_provider_catalog_provider_auth_type_0 import (
62
+ AiProviderCatalogProviderAuthType0,
63
+ )
64
+
65
+ id = self.id
66
+
67
+ display_name = self.display_name
68
+
69
+ enabled = self.enabled
70
+
71
+ configured = self.configured
72
+
73
+ api: dict[str, Any] | None
74
+ if isinstance(self.api, AiProviderCatalogProviderApiType0):
75
+ api = self.api.to_dict()
76
+ else:
77
+ api = self.api
78
+
79
+ auth: dict[str, Any] | None
80
+ if isinstance(self.auth, AiProviderCatalogProviderAuthType0):
81
+ auth = self.auth.to_dict()
82
+ else:
83
+ auth = self.auth
84
+
85
+ models = []
86
+ for models_item_data in self.models:
87
+ models_item = models_item_data.to_dict()
88
+ models.append(models_item)
89
+
90
+ setup_url: None | str | Unset
91
+ if isinstance(self.setup_url, Unset):
92
+ setup_url = UNSET
93
+ else:
94
+ setup_url = self.setup_url
95
+
96
+ docs_url: None | str | Unset
97
+ if isinstance(self.docs_url, Unset):
98
+ docs_url = UNSET
99
+ else:
100
+ docs_url = self.docs_url
101
+
102
+ api_key_label: None | str | Unset
103
+ if isinstance(self.api_key_label, Unset):
104
+ api_key_label = UNSET
105
+ else:
106
+ api_key_label = self.api_key_label
107
+
108
+ api_key_hint: None | str | Unset
109
+ if isinstance(self.api_key_hint, Unset):
110
+ api_key_hint = UNSET
111
+ else:
112
+ api_key_hint = self.api_key_hint
113
+
114
+ field_dict: dict[str, Any] = {}
115
+ field_dict.update(self.additional_properties)
116
+ field_dict.update(
117
+ {
118
+ "id": id,
119
+ "display_name": display_name,
120
+ "enabled": enabled,
121
+ "configured": configured,
122
+ "api": api,
123
+ "auth": auth,
124
+ "models": models,
125
+ }
126
+ )
127
+ if setup_url is not UNSET:
128
+ field_dict["setup_url"] = setup_url
129
+ if docs_url is not UNSET:
130
+ field_dict["docs_url"] = docs_url
131
+ if api_key_label is not UNSET:
132
+ field_dict["api_key_label"] = api_key_label
133
+ if api_key_hint is not UNSET:
134
+ field_dict["api_key_hint"] = api_key_hint
135
+
136
+ return field_dict
137
+
138
+ @classmethod
139
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
140
+ from ..models.ai_provider_catalog_provider_api_type_0 import (
141
+ AiProviderCatalogProviderApiType0,
142
+ )
143
+ from ..models.ai_provider_catalog_provider_auth_type_0 import (
144
+ AiProviderCatalogProviderAuthType0,
145
+ )
146
+ from ..models.ai_provider_catalog_provider_models_item import (
147
+ AiProviderCatalogProviderModelsItem,
148
+ )
149
+
150
+ d = dict(src_dict)
151
+ id = d.pop("id")
152
+
153
+ display_name = d.pop("display_name")
154
+
155
+ enabled = d.pop("enabled")
156
+
157
+ configured = d.pop("configured")
158
+
159
+ def _parse_api(data: object) -> AiProviderCatalogProviderApiType0 | None:
160
+ if data is None:
161
+ return data
162
+ try:
163
+ if not isinstance(data, dict):
164
+ raise TypeError()
165
+ api_type_0 = AiProviderCatalogProviderApiType0.from_dict(data)
166
+
167
+ return api_type_0
168
+ except (TypeError, ValueError, AttributeError, KeyError):
169
+ pass
170
+ return cast(AiProviderCatalogProviderApiType0 | None, data)
171
+
172
+ api = _parse_api(d.pop("api"))
173
+
174
+ def _parse_auth(data: object) -> AiProviderCatalogProviderAuthType0 | None:
175
+ if data is None:
176
+ return data
177
+ try:
178
+ if not isinstance(data, dict):
179
+ raise TypeError()
180
+ auth_type_0 = AiProviderCatalogProviderAuthType0.from_dict(data)
181
+
182
+ return auth_type_0
183
+ except (TypeError, ValueError, AttributeError, KeyError):
184
+ pass
185
+ return cast(AiProviderCatalogProviderAuthType0 | None, data)
186
+
187
+ auth = _parse_auth(d.pop("auth"))
188
+
189
+ models = []
190
+ _models = d.pop("models")
191
+ for models_item_data in _models:
192
+ models_item = AiProviderCatalogProviderModelsItem.from_dict(
193
+ models_item_data
194
+ )
195
+
196
+ models.append(models_item)
197
+
198
+ def _parse_setup_url(data: object) -> None | str | Unset:
199
+ if data is None:
200
+ return data
201
+ if isinstance(data, Unset):
202
+ return data
203
+ return cast(None | str | Unset, data)
204
+
205
+ setup_url = _parse_setup_url(d.pop("setup_url", UNSET))
206
+
207
+ def _parse_docs_url(data: object) -> None | str | Unset:
208
+ if data is None:
209
+ return data
210
+ if isinstance(data, Unset):
211
+ return data
212
+ return cast(None | str | Unset, data)
213
+
214
+ docs_url = _parse_docs_url(d.pop("docs_url", UNSET))
215
+
216
+ def _parse_api_key_label(data: object) -> None | str | Unset:
217
+ if data is None:
218
+ return data
219
+ if isinstance(data, Unset):
220
+ return data
221
+ return cast(None | str | Unset, data)
222
+
223
+ api_key_label = _parse_api_key_label(d.pop("api_key_label", UNSET))
224
+
225
+ def _parse_api_key_hint(data: object) -> None | str | Unset:
226
+ if data is None:
227
+ return data
228
+ if isinstance(data, Unset):
229
+ return data
230
+ return cast(None | str | Unset, data)
231
+
232
+ api_key_hint = _parse_api_key_hint(d.pop("api_key_hint", UNSET))
233
+
234
+ ai_provider_catalog_provider = cls(
235
+ id=id,
236
+ display_name=display_name,
237
+ enabled=enabled,
238
+ configured=configured,
239
+ api=api,
240
+ auth=auth,
241
+ models=models,
242
+ setup_url=setup_url,
243
+ docs_url=docs_url,
244
+ api_key_label=api_key_label,
245
+ api_key_hint=api_key_hint,
246
+ )
247
+
248
+ ai_provider_catalog_provider.additional_properties = d
249
+ return ai_provider_catalog_provider
250
+
251
+ @property
252
+ def additional_keys(self) -> list[str]:
253
+ return list(self.additional_properties.keys())
254
+
255
+ def __getitem__(self, key: str) -> Any:
256
+ return self.additional_properties[key]
257
+
258
+ def __setitem__(self, key: str, value: Any) -> None:
259
+ self.additional_properties[key] = value
260
+
261
+ def __delitem__(self, key: str) -> None:
262
+ del self.additional_properties[key]
263
+
264
+ def __contains__(self, key: str) -> bool:
265
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ T = TypeVar("T", bound="AiProviderCatalogProviderApiType0")
11
+
12
+
13
+ @_attrs_define
14
+ class AiProviderCatalogProviderApiType0:
15
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
16
+
17
+ def to_dict(self) -> dict[str, Any]:
18
+
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
26
+ d = dict(src_dict)
27
+ ai_provider_catalog_provider_api_type_0 = cls()
28
+
29
+ ai_provider_catalog_provider_api_type_0.additional_properties = d
30
+ return ai_provider_catalog_provider_api_type_0
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from typing_extensions import Self
9
+
10
+ T = TypeVar("T", bound="AiProviderCatalogProviderAuthType0")
11
+
12
+
13
+ @_attrs_define
14
+ class AiProviderCatalogProviderAuthType0:
15
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
16
+
17
+ def to_dict(self) -> dict[str, Any]:
18
+
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
26
+ d = dict(src_dict)
27
+ ai_provider_catalog_provider_auth_type_0 = cls()
28
+
29
+ ai_provider_catalog_provider_auth_type_0.additional_properties = d
30
+ return ai_provider_catalog_provider_auth_type_0
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties