shaped 2.0.1__py3-none-any.whl → 2.0.2__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 (323) hide show
  1. shaped/__init__.py +54 -4
  2. shaped/autogen/__init__.py +541 -66
  3. shaped/autogen/api/__init__.py +4 -3
  4. shaped/autogen/api/engine_api.py +1467 -0
  5. shaped/autogen/api/{dataset_api.py → query_api.py} +219 -194
  6. shaped/autogen/api/table_api.py +1494 -0
  7. shaped/autogen/api/{model_management_api.py → view_api.py} +179 -181
  8. shaped/autogen/api_client.py +15 -8
  9. shaped/autogen/configuration.py +20 -9
  10. shaped/autogen/exceptions.py +19 -2
  11. shaped/autogen/models/__init__.py +254 -52
  12. shaped/autogen/models/ai_enrichment_view_config.py +123 -0
  13. shaped/autogen/models/{path.py → algorithm.py} +19 -19
  14. shaped/autogen/models/amplitude_table_config.py +106 -0
  15. shaped/autogen/models/ascending.py +136 -0
  16. shaped/autogen/models/attn_dropout_prob.py +136 -0
  17. shaped/autogen/models/attribute_journey.py +124 -0
  18. shaped/autogen/models/attribute_value.py +178 -0
  19. shaped/autogen/models/autoscaling_config.py +95 -0
  20. shaped/autogen/models/aws_pinpoint_table_config.py +108 -0
  21. shaped/autogen/models/batch_size.py +136 -0
  22. shaped/autogen/models/batch_size1.py +136 -0
  23. shaped/autogen/models/batch_size2.py +136 -0
  24. shaped/autogen/models/big_query_table_config.py +147 -0
  25. shaped/autogen/models/bm25.py +136 -0
  26. shaped/autogen/models/boosted_reorder_step.py +125 -0
  27. shaped/autogen/models/canary_rollout.py +99 -0
  28. shaped/autogen/models/candidate_attributes_retrieve_step.py +126 -0
  29. shaped/autogen/models/candidate_ids_retrieve_step.py +113 -0
  30. shaped/autogen/models/candidate_retrieval_strategy.py +41 -0
  31. shaped/autogen/models/clickhouse_table_config.py +146 -0
  32. shaped/autogen/models/column_order_retrieve_step.py +123 -0
  33. shaped/autogen/models/column_ordering.py +91 -0
  34. shaped/autogen/models/create_table_response.py +87 -0
  35. shaped/autogen/models/create_view_response.py +87 -0
  36. shaped/autogen/models/custom_table_config.py +135 -0
  37. shaped/autogen/models/data_compute_config.py +89 -0
  38. shaped/autogen/models/data_config.py +145 -0
  39. shaped/autogen/models/data_config_interaction_table.py +146 -0
  40. shaped/autogen/models/data_split_config.py +88 -0
  41. shaped/autogen/models/data_split_strategy.py +37 -0
  42. shaped/autogen/models/data_tier.py +37 -0
  43. shaped/autogen/models/default.py +246 -0
  44. shaped/autogen/models/delete_engine_response.py +87 -0
  45. shaped/autogen/models/delete_table_response.py +87 -0
  46. shaped/autogen/models/delete_view_response.py +87 -0
  47. shaped/autogen/models/deployment_config.py +123 -0
  48. shaped/autogen/models/distance_function.py +38 -0
  49. shaped/autogen/models/diversity_reorder_step.py +137 -0
  50. shaped/autogen/models/dropout_rate.py +136 -0
  51. shaped/autogen/models/dynamo_db_table_config.py +160 -0
  52. shaped/autogen/models/dynamo_db_table_config_scan_kwargs_value.py +138 -0
  53. shaped/autogen/models/embedder_batch_size.py +136 -0
  54. shaped/autogen/models/embedding_config.py +93 -0
  55. shaped/autogen/models/embedding_dim.py +136 -0
  56. shaped/autogen/models/embedding_dims.py +136 -0
  57. shaped/autogen/models/embedding_size.py +136 -0
  58. shaped/autogen/models/encoder.py +140 -0
  59. shaped/autogen/models/encoding_pooling_strategy.py +38 -0
  60. shaped/autogen/models/engine.py +109 -0
  61. shaped/autogen/models/engine_config_v2.py +152 -0
  62. shaped/autogen/models/engine_details_response.py +120 -0
  63. shaped/autogen/models/engine_schema.py +113 -0
  64. shaped/autogen/models/engine_schema_user_inner.py +134 -0
  65. shaped/autogen/models/entity_config.py +109 -0
  66. shaped/autogen/models/entity_journey.py +152 -0
  67. shaped/autogen/models/entity_type.py +38 -0
  68. shaped/autogen/models/evaluation_config.py +92 -0
  69. shaped/autogen/models/exploration_reorder_step.py +125 -0
  70. shaped/autogen/models/expression_filter_step.py +106 -0
  71. shaped/autogen/models/factors.py +136 -0
  72. shaped/autogen/models/factors1.py +136 -0
  73. shaped/autogen/models/feature.py +90 -0
  74. shaped/autogen/models/feature_type.py +60 -0
  75. shaped/autogen/models/file_table_config.py +112 -0
  76. shaped/autogen/models/filter_config.py +99 -0
  77. shaped/autogen/models/filter_dataset.py +140 -0
  78. shaped/autogen/models/filter_index_type.py +36 -0
  79. shaped/autogen/models/filter_retrieve_step.py +113 -0
  80. shaped/autogen/models/global_filter.py +102 -0
  81. shaped/autogen/models/hidden_dropout_prob.py +136 -0
  82. shaped/autogen/models/hidden_size.py +136 -0
  83. shaped/autogen/models/hidden_size1.py +136 -0
  84. shaped/autogen/models/http_problem_response.py +115 -0
  85. shaped/autogen/models/http_validation_error.py +2 -2
  86. shaped/autogen/models/hugging_face_encoder.py +113 -0
  87. shaped/autogen/models/iceberg_table_config.py +154 -0
  88. shaped/autogen/models/index_config.py +101 -0
  89. shaped/autogen/models/inner_size.py +136 -0
  90. shaped/autogen/models/inner_size1.py +136 -0
  91. shaped/autogen/models/interaction_config.py +122 -0
  92. shaped/autogen/models/interaction_pooling_encoder.py +104 -0
  93. shaped/autogen/models/interaction_round_robin_encoder.py +104 -0
  94. shaped/autogen/models/item_attribute_pooling_encoder.py +124 -0
  95. shaped/autogen/models/journey.py +140 -0
  96. shaped/autogen/models/kafka_table_config.py +129 -0
  97. shaped/autogen/models/kinesis_table_config.py +140 -0
  98. shaped/autogen/models/kinesis_table_config_column_schema_value.py +136 -0
  99. shaped/autogen/models/label.py +90 -0
  100. shaped/autogen/models/label_type.py +37 -0
  101. shaped/autogen/models/laplace_smoothing.py +136 -0
  102. shaped/autogen/models/latency_scaling_policy.py +112 -0
  103. shaped/autogen/models/learning_rate.py +136 -0
  104. shaped/autogen/models/learning_rate1.py +136 -0
  105. shaped/autogen/models/learning_rate2.py +136 -0
  106. shaped/autogen/models/learning_rate3.py +136 -0
  107. shaped/autogen/models/lexical_search_mode.py +99 -0
  108. shaped/autogen/models/list_engines_response.py +95 -0
  109. shaped/autogen/models/list_tables_response.py +95 -0
  110. shaped/autogen/models/list_views_response.py +95 -0
  111. shaped/autogen/models/loss_types.py +37 -0
  112. shaped/autogen/models/lr.py +136 -0
  113. shaped/autogen/models/lr1.py +136 -0
  114. shaped/autogen/models/lr2.py +136 -0
  115. shaped/autogen/models/max_depth.py +136 -0
  116. shaped/autogen/models/max_leaves.py +136 -0
  117. shaped/autogen/models/max_seq_length.py +136 -0
  118. shaped/autogen/models/max_seq_length1.py +136 -0
  119. shaped/autogen/models/max_seq_length2.py +136 -0
  120. shaped/autogen/models/mode.py +134 -0
  121. shaped/autogen/models/mode1.py +134 -0
  122. shaped/autogen/models/mode2.py +136 -0
  123. shaped/autogen/models/mongo_db_table_config.py +147 -0
  124. shaped/autogen/models/mssql_table_config.py +155 -0
  125. shaped/autogen/models/{my_sql_dataset_config.py → my_sql_table_config.py} +45 -28
  126. shaped/autogen/models/n_epochs.py +136 -0
  127. shaped/autogen/models/n_epochs1.py +136 -0
  128. shaped/autogen/models/n_epochs2.py +136 -0
  129. shaped/autogen/models/n_estimators.py +136 -0
  130. shaped/autogen/models/n_heads.py +136 -0
  131. shaped/autogen/models/n_layers.py +136 -0
  132. shaped/autogen/models/neg_per_positive.py +136 -0
  133. shaped/autogen/models/negative_samples_count.py +136 -0
  134. shaped/autogen/models/ngram_tokenizer.py +103 -0
  135. shaped/autogen/models/no_op_config.py +117 -0
  136. shaped/autogen/models/num_blocks.py +136 -0
  137. shaped/autogen/models/num_heads.py +136 -0
  138. shaped/autogen/models/num_leaves.py +136 -0
  139. shaped/autogen/models/objective.py +40 -0
  140. shaped/autogen/models/objective1.py +134 -0
  141. shaped/autogen/models/online_store_config.py +89 -0
  142. shaped/autogen/models/pagination_config.py +87 -0
  143. shaped/autogen/models/parameter_definition.py +96 -0
  144. shaped/autogen/models/parameters_value.py +240 -0
  145. shaped/autogen/models/passthrough_score.py +104 -0
  146. shaped/autogen/models/personal_filter.py +104 -0
  147. shaped/autogen/models/pipeline_stage_explanation.py +118 -0
  148. shaped/autogen/models/policy.py +134 -0
  149. shaped/autogen/models/pool_fn.py +134 -0
  150. shaped/autogen/models/pooling_function.py +37 -0
  151. shaped/autogen/models/{postgres_dataset_config.py → postgres_table_config.py} +66 -28
  152. shaped/autogen/models/posthog_table_config.py +133 -0
  153. shaped/autogen/models/prebuilt_filter_step.py +113 -0
  154. shaped/autogen/models/precomputed_item_embedding.py +99 -0
  155. shaped/autogen/models/precomputed_user_embedding.py +99 -0
  156. shaped/autogen/models/query.py +136 -0
  157. shaped/autogen/models/query1.py +136 -0
  158. shaped/autogen/models/query_any_of.py +140 -0
  159. shaped/autogen/models/query_definition.py +106 -0
  160. shaped/autogen/models/query_encoder.py +194 -0
  161. shaped/autogen/models/query_explanation.py +197 -0
  162. shaped/autogen/models/query_request.py +121 -0
  163. shaped/autogen/models/query_result.py +113 -0
  164. shaped/autogen/models/query_table_config.py +99 -0
  165. shaped/autogen/models/rank_item_attribute_values_query_config.py +122 -0
  166. shaped/autogen/models/rank_query_config.py +167 -0
  167. shaped/autogen/models/rank_query_config_filter_inner.py +149 -0
  168. shaped/autogen/models/rank_query_config_reorder_inner.py +149 -0
  169. shaped/autogen/models/rank_query_config_retrieve_inner.py +196 -0
  170. shaped/autogen/models/recreate_rollout.py +97 -0
  171. shaped/autogen/models/{redshift_dataset_config.py → redshift_table_config.py} +48 -25
  172. shaped/autogen/models/reference_table_config.py +113 -0
  173. shaped/autogen/models/regularization.py +136 -0
  174. shaped/autogen/models/request.py +378 -0
  175. shaped/autogen/models/request1.py +140 -0
  176. shaped/autogen/models/requests_per_second_scaling_policy.py +112 -0
  177. shaped/autogen/models/response_get_view_details_views_view_name_get.py +134 -0
  178. shaped/autogen/models/result.py +145 -0
  179. shaped/autogen/models/result_embeddings_value.py +127 -0
  180. shaped/autogen/models/retriever.py +196 -0
  181. shaped/autogen/models/retriever1.py +196 -0
  182. shaped/autogen/models/rollout_config.py +91 -0
  183. shaped/autogen/models/rudderstack_table_config.py +106 -0
  184. shaped/autogen/models/sampling_strategy.py +36 -0
  185. shaped/autogen/models/saved_query_info_response.py +89 -0
  186. shaped/autogen/models/saved_query_list_response.py +87 -0
  187. shaped/autogen/models/saved_query_request.py +115 -0
  188. shaped/autogen/models/schema_config.py +117 -0
  189. shaped/autogen/models/score.py +134 -0
  190. shaped/autogen/models/score_ensemble.py +140 -0
  191. shaped/autogen/models/score_ensemble_policy_config.py +141 -0
  192. shaped/autogen/models/score_ensemble_policy_config_policies_inner.py +422 -0
  193. shaped/autogen/models/search_config.py +105 -0
  194. shaped/autogen/models/segment_table_config.py +106 -0
  195. shaped/autogen/models/sequence_length.py +136 -0
  196. shaped/autogen/models/server_config.py +87 -0
  197. shaped/autogen/models/setup_engine_response.py +87 -0
  198. shaped/autogen/models/shaped_internal_recsys_policies_als_model_policy_als_model_policy_config.py +148 -0
  199. shaped/autogen/models/shaped_internal_recsys_policies_beeformer_model_policy_beeformer_model_policy_beeformer_model_policy_config.py +154 -0
  200. shaped/autogen/models/shaped_internal_recsys_policies_bert_model_policy_bert_model_policy_bert_model_policy_config.py +209 -0
  201. shaped/autogen/models/shaped_internal_recsys_policies_chronological_model_policy_chronological_model_policy_config.py +137 -0
  202. shaped/autogen/models/shaped_internal_recsys_policies_elsa_model_policy_elsa_model_policy_elsa_model_policy_config.py +139 -0
  203. shaped/autogen/models/shaped_internal_recsys_policies_gsasrec_model_policy_gsasrec_model_policy_gsas_rec_model_policy_config.py +205 -0
  204. shaped/autogen/models/shaped_internal_recsys_policies_item2vec_model_policy_item2_vec_model_policy_config.py +140 -0
  205. shaped/autogen/models/shaped_internal_recsys_policies_item_content_similarity_model_policy_item_content_similarity_model_policy_config.py +152 -0
  206. shaped/autogen/models/shaped_internal_recsys_policies_lightgbm_model_policy_lightgbm_model_policy_light_gbm_model_policy_config.py +239 -0
  207. shaped/autogen/models/shaped_internal_recsys_policies_ngram_model_policy_ngram_model_policy_config.py +119 -0
  208. shaped/autogen/models/shaped_internal_recsys_policies_popular_model_policy_popular_model_policy_config.py +137 -0
  209. shaped/autogen/models/shaped_internal_recsys_policies_random_model_policy_random_model_policy_config.py +104 -0
  210. shaped/autogen/models/shaped_internal_recsys_policies_recently_popular_policy_recently_popular_policy_config.py +130 -0
  211. shaped/autogen/models/shaped_internal_recsys_policies_rising_popular_policy_rising_popular_policy_config.py +123 -0
  212. shaped/autogen/models/shaped_internal_recsys_policies_sasrec_model_policy_sasrec_model_policy_sas_rec_model_policy_config.py +224 -0
  213. shaped/autogen/models/shaped_internal_recsys_policies_svd_model_policy_svd_model_policy_config.py +119 -0
  214. shaped/autogen/models/shaped_internal_recsys_policies_two_tower_model_policy_two_tower_model_policy_two_tower_model_policy_config.py +159 -0
  215. shaped/autogen/models/shaped_internal_recsys_policies_user_item_content_similarity_model_policy_user_item_content_similarity_model_policy_config.py +131 -0
  216. shaped/autogen/models/shaped_internal_recsys_policies_widedeep_model_policy_wide_deep_model_policy_config.py +131 -0
  217. shaped/autogen/models/shaped_internal_recsys_policies_xgboost_model_policy_xg_boost_model_policy_config.py +149 -0
  218. shaped/autogen/models/shopify_table_config.py +156 -0
  219. shaped/autogen/models/similarity_retrieve_step.py +121 -0
  220. shaped/autogen/models/{snowflake_dataset_config.py → snowflake_table_config.py} +47 -18
  221. shaped/autogen/models/sql_transform_type.py +37 -0
  222. shaped/autogen/models/sql_view_config.py +111 -0
  223. shaped/autogen/models/stemmer_tokenizer.py +105 -0
  224. shaped/autogen/models/step_explanation.py +137 -0
  225. shaped/autogen/models/strategy.py +134 -0
  226. shaped/autogen/models/table.py +102 -0
  227. shaped/autogen/models/table_deployment_type.py +38 -0
  228. shaped/autogen/models/table_insert_arguments.py +87 -0
  229. shaped/autogen/models/table_insert_response.py +87 -0
  230. shaped/autogen/models/text_encoding.py +136 -0
  231. shaped/autogen/models/text_search_retrieve_step.py +121 -0
  232. shaped/autogen/models/time_frequency.py +136 -0
  233. shaped/autogen/models/time_window.py +136 -0
  234. shaped/autogen/models/time_window_in_days.py +142 -0
  235. shaped/autogen/models/tokenizer.py +149 -0
  236. shaped/autogen/models/trained_model_encoder.py +99 -0
  237. shaped/autogen/models/training_compute_config.py +99 -0
  238. shaped/autogen/models/training_config.py +121 -0
  239. shaped/autogen/models/training_config_models_inner.py +308 -0
  240. shaped/autogen/models/training_strategy.py +37 -0
  241. shaped/autogen/models/trending_mode.py +37 -0
  242. shaped/autogen/models/truncate_filter_step.py +106 -0
  243. shaped/autogen/models/tunable_bool.py +97 -0
  244. shaped/autogen/models/tunable_float.py +118 -0
  245. shaped/autogen/models/tunable_int.py +118 -0
  246. shaped/autogen/models/tunable_int_categorical.py +99 -0
  247. shaped/autogen/models/tunable_string.py +99 -0
  248. shaped/autogen/models/tuning_config.py +89 -0
  249. shaped/autogen/models/type.py +134 -0
  250. shaped/autogen/models/update_table_response.py +87 -0
  251. shaped/autogen/models/update_view_response.py +87 -0
  252. shaped/autogen/models/user_attribute_pooling_encoder.py +124 -0
  253. shaped/autogen/models/val_split.py +136 -0
  254. shaped/autogen/models/validation_error.py +13 -3
  255. shaped/autogen/models/validation_error_loc_inner.py +138 -0
  256. shaped/autogen/models/value_type.py +7 -5
  257. shaped/autogen/models/vector_search_mode.py +99 -0
  258. shaped/autogen/models/view.py +104 -0
  259. shaped/autogen/models/view_details_ai.py +140 -0
  260. shaped/autogen/models/view_details_ai_schema_value.py +153 -0
  261. shaped/autogen/models/view_details_sql.py +140 -0
  262. shaped/autogen/models/view_status.py +41 -0
  263. shaped/autogen/models/weight_decay.py +136 -0
  264. shaped/autogen/models/whitespace_tokenizer.py +97 -0
  265. shaped/autogen/models/window_size.py +136 -0
  266. shaped/autogen/rest.py +8 -2
  267. shaped/cli/shaped_cli.py +12 -7
  268. shaped/client.py +587 -174
  269. shaped/config_builders.py +695 -0
  270. shaped/query_builder.py +774 -0
  271. {shaped-2.0.1.dist-info → shaped-2.0.2.dist-info}/METADATA +140 -5
  272. shaped-2.0.2.dist-info/RECORD +278 -0
  273. shaped-2.0.2.dist-info/entry_points.txt +2 -0
  274. shaped/autogen/api/model_inference_api.py +0 -2825
  275. shaped/autogen/models/amplitude_dataset_config.py +0 -96
  276. shaped/autogen/models/aws_pinpoint_dataset_config.py +0 -96
  277. shaped/autogen/models/big_query_dataset_config.py +0 -114
  278. shaped/autogen/models/complement_items_request.py +0 -99
  279. shaped/autogen/models/complement_items_response.py +0 -89
  280. shaped/autogen/models/connectors_inner.py +0 -134
  281. shaped/autogen/models/create_dataset_arguments.py +0 -263
  282. shaped/autogen/models/create_embedding_response.py +0 -87
  283. shaped/autogen/models/create_item_embedding_request.py +0 -89
  284. shaped/autogen/models/create_model_arguments.py +0 -107
  285. shaped/autogen/models/create_model_response.py +0 -87
  286. shaped/autogen/models/create_user_embedding_request.py +0 -89
  287. shaped/autogen/models/custom_dataset_config.py +0 -115
  288. shaped/autogen/models/dataset_config.py +0 -101
  289. shaped/autogen/models/dataset_schema_type.py +0 -47
  290. shaped/autogen/models/datasets_inner.py +0 -91
  291. shaped/autogen/models/delete_model_response.py +0 -87
  292. shaped/autogen/models/fetch_config.py +0 -95
  293. shaped/autogen/models/file_config.py +0 -105
  294. shaped/autogen/models/file_source_config.py +0 -89
  295. shaped/autogen/models/inference_config.py +0 -101
  296. shaped/autogen/models/insert_model_response.py +0 -87
  297. shaped/autogen/models/interaction.py +0 -87
  298. shaped/autogen/models/list_datasets_response.py +0 -95
  299. shaped/autogen/models/list_models_response.py +0 -95
  300. shaped/autogen/models/model_config.py +0 -99
  301. shaped/autogen/models/model_response.py +0 -95
  302. shaped/autogen/models/mongo_db_dataset_config.py +0 -119
  303. shaped/autogen/models/post_rank_request.py +0 -117
  304. shaped/autogen/models/rank_attribute_response.py +0 -89
  305. shaped/autogen/models/rank_grid_attribute_request.py +0 -91
  306. shaped/autogen/models/rank_grid_attribute_request1.py +0 -93
  307. shaped/autogen/models/rank_grid_attribute_response.py +0 -91
  308. shaped/autogen/models/rank_response.py +0 -91
  309. shaped/autogen/models/retrieve_request.py +0 -101
  310. shaped/autogen/models/retrieve_response.py +0 -91
  311. shaped/autogen/models/retriever_top_k_override.py +0 -97
  312. shaped/autogen/models/rudder_stack_dataset_config.py +0 -96
  313. shaped/autogen/models/segment_dataset_config.py +0 -96
  314. shaped/autogen/models/similar_item_request.py +0 -101
  315. shaped/autogen/models/similar_response.py +0 -89
  316. shaped/autogen/models/similar_users_request.py +0 -99
  317. shaped/autogen/models/successful_response.py +0 -87
  318. shaped/autogen/models/view_model_response.py +0 -99
  319. shaped-2.0.1.dist-info/RECORD +0 -73
  320. shaped-2.0.1.dist-info/entry_points.txt +0 -2
  321. {shaped-2.0.1.dist-info → shaped-2.0.2.dist-info}/WHEEL +0 -0
  322. {shaped-2.0.1.dist-info → shaped-2.0.2.dist-info}/top_level.txt +0 -0
  323. {shaped-2.0.1.dist-info → shaped-2.0.2.dist-info}/zip-safe +0 -0
@@ -0,0 +1,99 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Shaped API
5
+
6
+ Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. The Shaped API has four main endpoints: **Tables** - Provision and manage batch and real-time data connectors. **Views** - Configure SQL transformations and AI enrichment on your input data. Use SQL to combine multiple data sources or use an LLM to add new categories, extract specific attributes from descriptions, etc. **Engines** - Deploy and manage your relevance engines. The Engine API exposes configuration for indexing logic, input datasets, externam embeddings, and more. **Query** - Execute queries against your engines, to return data based on an input query or rerank an existing list. The Query API exposes the retrieve, filter, score, and ranking steps of the 4-stage ranking architecture. The base URL for each endpoint is: `https://api.shaped.ai/v2`
7
+
8
+ The version of the OpenAPI document: 2.0.0
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 pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class CanaryRollout(BaseModel):
26
+ """
27
+ CanaryRollout
28
+ """ # noqa: E501
29
+ type: Optional[StrictStr] = Field(default='canary', description="Rollout type discriminator.")
30
+ evaluation_period_minutes: Optional[StrictInt] = Field(default=10, description="Time in minutes to evaluate canary before full rollout.")
31
+ __properties: ClassVar[List[str]] = ["type", "evaluation_period_minutes"]
32
+
33
+ @field_validator('type')
34
+ def type_validate_enum(cls, value):
35
+ """Validates the enum"""
36
+ if value is None:
37
+ return value
38
+
39
+ if value not in set(['canary']):
40
+ raise ValueError("must be one of enum values ('canary')")
41
+ return value
42
+
43
+ model_config = ConfigDict(
44
+ populate_by_name=True,
45
+ validate_assignment=True,
46
+ protected_namespaces=(),
47
+ )
48
+
49
+
50
+ def to_str(self) -> str:
51
+ """Returns the string representation of the model using alias"""
52
+ return pprint.pformat(self.model_dump(by_alias=True))
53
+
54
+ def to_json(self) -> str:
55
+ """Returns the JSON representation of the model using alias"""
56
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
57
+ return json.dumps(self.to_dict())
58
+
59
+ @classmethod
60
+ def from_json(cls, json_str: str) -> Optional[Self]:
61
+ """Create an instance of CanaryRollout from a JSON string"""
62
+ return cls.from_dict(json.loads(json_str))
63
+
64
+ def to_dict(self) -> Dict[str, Any]:
65
+ """Return the dictionary representation of the model using alias.
66
+
67
+ This has the following differences from calling pydantic's
68
+ `self.model_dump(by_alias=True)`:
69
+
70
+ * `None` is only added to the output dict for nullable fields that
71
+ were set at model initialization. Other fields with value `None`
72
+ are ignored.
73
+ """
74
+ excluded_fields: Set[str] = set([
75
+ ])
76
+
77
+ _dict = self.model_dump(
78
+ by_alias=True,
79
+ exclude=excluded_fields,
80
+ exclude_none=True,
81
+ )
82
+ return _dict
83
+
84
+ @classmethod
85
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
86
+ """Create an instance of CanaryRollout from a dict"""
87
+ if obj is None:
88
+ return None
89
+
90
+ if not isinstance(obj, dict):
91
+ return cls.model_validate(obj)
92
+
93
+ _obj = cls.model_validate({
94
+ "type": obj.get("type") if obj.get("type") is not None else 'canary',
95
+ "evaluation_period_minutes": obj.get("evaluation_period_minutes") if obj.get("evaluation_period_minutes") is not None else 10
96
+ })
97
+ return _obj
98
+
99
+
@@ -0,0 +1,126 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Shaped API
5
+
6
+ Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. The Shaped API has four main endpoints: **Tables** - Provision and manage batch and real-time data connectors. **Views** - Configure SQL transformations and AI enrichment on your input data. Use SQL to combine multiple data sources or use an LLM to add new categories, extract specific attributes from descriptions, etc. **Engines** - Deploy and manage your relevance engines. The Engine API exposes configuration for indexing logic, input datasets, externam embeddings, and more. **Query** - Execute queries against your engines, to return data based on an input query or rerank an existing list. The Query API exposes the retrieve, filter, score, and ranking steps of the 4-stage ranking architecture. The base URL for each endpoint is: `https://api.shaped.ai/v2`
7
+
8
+ The version of the OpenAPI document: 2.0.0
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 pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class CandidateAttributesRetrieveStep(BaseModel):
26
+ """
27
+ Retrieves items from provided item attributes (for items not in catalog). Useful for reranking scenarios where you want to score/reorder items that may not be in the catalog yet, using their attributes directly.
28
+ """ # noqa: E501
29
+ item_attributes: List[Dict[str, Any]] = Field(description="List of item attribute dictionaries to retrieve (e.g., [{'title': 'Item 1', 'category': 'electronics'}, ...]).")
30
+ limit: Optional[StrictInt] = None
31
+ name: Optional[StrictStr] = None
32
+ type: Optional[StrictStr] = Field(default='candidate_attributes', description="Retrieve step type discriminator.")
33
+ additional_properties: Dict[str, Any] = {}
34
+ __properties: ClassVar[List[str]] = ["item_attributes", "limit", "name", "type"]
35
+
36
+ @field_validator('type')
37
+ def type_validate_enum(cls, value):
38
+ """Validates the enum"""
39
+ if value is None:
40
+ return value
41
+
42
+ if value not in set(['candidate_attributes']):
43
+ raise ValueError("must be one of enum values ('candidate_attributes')")
44
+ return value
45
+
46
+ model_config = ConfigDict(
47
+ populate_by_name=True,
48
+ validate_assignment=True,
49
+ protected_namespaces=(),
50
+ )
51
+
52
+
53
+ def to_str(self) -> str:
54
+ """Returns the string representation of the model using alias"""
55
+ return pprint.pformat(self.model_dump(by_alias=True))
56
+
57
+ def to_json(self) -> str:
58
+ """Returns the JSON representation of the model using alias"""
59
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
60
+ return json.dumps(self.to_dict())
61
+
62
+ @classmethod
63
+ def from_json(cls, json_str: str) -> Optional[Self]:
64
+ """Create an instance of CandidateAttributesRetrieveStep from a JSON string"""
65
+ return cls.from_dict(json.loads(json_str))
66
+
67
+ def to_dict(self) -> Dict[str, Any]:
68
+ """Return the dictionary representation of the model using alias.
69
+
70
+ This has the following differences from calling pydantic's
71
+ `self.model_dump(by_alias=True)`:
72
+
73
+ * `None` is only added to the output dict for nullable fields that
74
+ were set at model initialization. Other fields with value `None`
75
+ are ignored.
76
+ * Fields in `self.additional_properties` are added to the output dict.
77
+ """
78
+ excluded_fields: Set[str] = set([
79
+ "additional_properties",
80
+ ])
81
+
82
+ _dict = self.model_dump(
83
+ by_alias=True,
84
+ exclude=excluded_fields,
85
+ exclude_none=True,
86
+ )
87
+ # puts key-value pairs in additional_properties in the top level
88
+ if self.additional_properties is not None:
89
+ for _key, _value in self.additional_properties.items():
90
+ _dict[_key] = _value
91
+
92
+ # set to None if limit (nullable) is None
93
+ # and model_fields_set contains the field
94
+ if self.limit is None and "limit" in self.model_fields_set:
95
+ _dict['limit'] = None
96
+
97
+ # set to None if name (nullable) is None
98
+ # and model_fields_set contains the field
99
+ if self.name is None and "name" in self.model_fields_set:
100
+ _dict['name'] = None
101
+
102
+ return _dict
103
+
104
+ @classmethod
105
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
106
+ """Create an instance of CandidateAttributesRetrieveStep from a dict"""
107
+ if obj is None:
108
+ return None
109
+
110
+ if not isinstance(obj, dict):
111
+ return cls.model_validate(obj)
112
+
113
+ _obj = cls.model_validate({
114
+ "item_attributes": obj.get("item_attributes"),
115
+ "limit": obj.get("limit"),
116
+ "name": obj.get("name"),
117
+ "type": obj.get("type") if obj.get("type") is not None else 'candidate_attributes'
118
+ })
119
+ # store additional fields in additional_properties
120
+ for _key in obj.keys():
121
+ if _key not in cls.__properties:
122
+ _obj.additional_properties[_key] = obj.get(_key)
123
+
124
+ return _obj
125
+
126
+
@@ -0,0 +1,113 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Shaped API
5
+
6
+ Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. The Shaped API has four main endpoints: **Tables** - Provision and manage batch and real-time data connectors. **Views** - Configure SQL transformations and AI enrichment on your input data. Use SQL to combine multiple data sources or use an LLM to add new categories, extract specific attributes from descriptions, etc. **Engines** - Deploy and manage your relevance engines. The Engine API exposes configuration for indexing logic, input datasets, externam embeddings, and more. **Query** - Execute queries against your engines, to return data based on an input query or rerank an existing list. The Query API exposes the retrieve, filter, score, and ranking steps of the 4-stage ranking architecture. The base URL for each endpoint is: `https://api.shaped.ai/v2`
7
+
8
+ The version of the OpenAPI document: 2.0.0
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 pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class CandidateIdsRetrieveStep(BaseModel):
26
+ """
27
+ Retrieves a specific list of entity IDs (candidate items for reranking). Useful for reranking scenarios where you want to score/reorder a specific set of items.
28
+ """ # noqa: E501
29
+ item_ids: List[Any] = Field(description="List of entity IDs to retrieve (e.g., ['item1', 'item2', 'item3']).")
30
+ limit: Optional[StrictInt] = None
31
+ name: Optional[StrictStr] = None
32
+ type: Optional[StrictStr] = Field(default='candidate_ids', description="Retrieve step type discriminator.")
33
+ __properties: ClassVar[List[str]] = ["item_ids", "limit", "name", "type"]
34
+
35
+ @field_validator('type')
36
+ def type_validate_enum(cls, value):
37
+ """Validates the enum"""
38
+ if value is None:
39
+ return value
40
+
41
+ if value not in set(['candidate_ids']):
42
+ raise ValueError("must be one of enum values ('candidate_ids')")
43
+ return value
44
+
45
+ model_config = ConfigDict(
46
+ populate_by_name=True,
47
+ validate_assignment=True,
48
+ protected_namespaces=(),
49
+ )
50
+
51
+
52
+ def to_str(self) -> str:
53
+ """Returns the string representation of the model using alias"""
54
+ return pprint.pformat(self.model_dump(by_alias=True))
55
+
56
+ def to_json(self) -> str:
57
+ """Returns the JSON representation of the model using alias"""
58
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
59
+ return json.dumps(self.to_dict())
60
+
61
+ @classmethod
62
+ def from_json(cls, json_str: str) -> Optional[Self]:
63
+ """Create an instance of CandidateIdsRetrieveStep from a JSON string"""
64
+ return cls.from_dict(json.loads(json_str))
65
+
66
+ def to_dict(self) -> Dict[str, Any]:
67
+ """Return the dictionary representation of the model using alias.
68
+
69
+ This has the following differences from calling pydantic's
70
+ `self.model_dump(by_alias=True)`:
71
+
72
+ * `None` is only added to the output dict for nullable fields that
73
+ were set at model initialization. Other fields with value `None`
74
+ are ignored.
75
+ """
76
+ excluded_fields: Set[str] = set([
77
+ ])
78
+
79
+ _dict = self.model_dump(
80
+ by_alias=True,
81
+ exclude=excluded_fields,
82
+ exclude_none=True,
83
+ )
84
+ # set to None if limit (nullable) is None
85
+ # and model_fields_set contains the field
86
+ if self.limit is None and "limit" in self.model_fields_set:
87
+ _dict['limit'] = None
88
+
89
+ # set to None if name (nullable) is None
90
+ # and model_fields_set contains the field
91
+ if self.name is None and "name" in self.model_fields_set:
92
+ _dict['name'] = None
93
+
94
+ return _dict
95
+
96
+ @classmethod
97
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
98
+ """Create an instance of CandidateIdsRetrieveStep from a dict"""
99
+ if obj is None:
100
+ return None
101
+
102
+ if not isinstance(obj, dict):
103
+ return cls.model_validate(obj)
104
+
105
+ _obj = cls.model_validate({
106
+ "item_ids": obj.get("item_ids"),
107
+ "limit": obj.get("limit"),
108
+ "name": obj.get("name"),
109
+ "type": obj.get("type") if obj.get("type") is not None else 'candidate_ids'
110
+ })
111
+ return _obj
112
+
113
+
@@ -0,0 +1,41 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Shaped API
5
+
6
+ Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. The Shaped API has four main endpoints: **Tables** - Provision and manage batch and real-time data connectors. **Views** - Configure SQL transformations and AI enrichment on your input data. Use SQL to combine multiple data sources or use an LLM to add new categories, extract specific attributes from descriptions, etc. **Engines** - Deploy and manage your relevance engines. The Engine API exposes configuration for indexing logic, input datasets, externam embeddings, and more. **Query** - Execute queries against your engines, to return data based on an input query or rerank an existing list. The Query API exposes the retrieve, filter, score, and ranking steps of the 4-stage ranking architecture. The base URL for each endpoint is: `https://api.shaped.ai/v2`
7
+
8
+ The version of the OpenAPI document: 2.0.0
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 json
17
+ from enum import Enum
18
+ from typing_extensions import Self
19
+
20
+
21
+ class CandidateRetrievalStrategy(str, Enum):
22
+ """
23
+ CandidateRetrievalStrategy
24
+ """
25
+
26
+ """
27
+ allowed enum values
28
+ """
29
+ BATCH_IIDS = 'batch_iids'
30
+ TRAIN_IIDS = 'train_iids'
31
+ TEST_IIDS = 'test_iids'
32
+ ALL_IIDS = 'all_iids'
33
+ NEGATIVE_SAMPLED_IIDS = 'negative_sampled_iids'
34
+ NONE = 'none'
35
+
36
+ @classmethod
37
+ def from_json(cls, json_str: str) -> Self:
38
+ """Create an instance of CandidateRetrievalStrategy from a JSON string"""
39
+ return cls(json.loads(json_str))
40
+
41
+
@@ -0,0 +1,146 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Shaped API
5
+
6
+ Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. The Shaped API has four main endpoints: **Tables** - Provision and manage batch and real-time data connectors. **Views** - Configure SQL transformations and AI enrichment on your input data. Use SQL to combine multiple data sources or use an LLM to add new categories, extract specific attributes from descriptions, etc. **Engines** - Deploy and manage your relevance engines. The Engine API exposes configuration for indexing logic, input datasets, externam embeddings, and more. **Query** - Execute queries against your engines, to return data based on an input query or rerank an existing list. The Query API exposes the retrieve, filter, score, and ranking steps of the 4-stage ranking architecture. The base URL for each endpoint is: `https://api.shaped.ai/v2`
7
+
8
+ The version of the OpenAPI document: 2.0.0
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 pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class ClickhouseTableConfig(BaseModel):
26
+ """
27
+ ClickhouseTableConfig
28
+ """ # noqa: E501
29
+ schema_type: Optional[StrictStr] = Field(default='CLICKHOUSE', description="Schema type discriminator for ClickHouse datasets.")
30
+ name: StrictStr = Field(description="Unique identifier for the ClickHouse dataset.")
31
+ description: Optional[StrictStr] = None
32
+ host: StrictStr = Field(description="ClickHouse server hostname or IP address.")
33
+ port: StrictInt = Field(description="ClickHouse server port number.")
34
+ user: StrictStr = Field(description="ClickHouse username.")
35
+ password: StrictStr = Field(description="ClickHouse password.")
36
+ table: StrictStr = Field(description="ClickHouse table name to sync.")
37
+ replication_key: StrictStr = Field(description="Column name used for incremental replication.")
38
+ database: Optional[StrictStr] = None
39
+ columns: Optional[List[StrictStr]] = None
40
+ unique_keys: Optional[List[StrictStr]] = None
41
+ schedule_interval: Optional[StrictStr] = None
42
+ __properties: ClassVar[List[str]] = ["schema_type", "name", "description", "host", "port", "user", "password", "table", "replication_key", "database", "columns", "unique_keys", "schedule_interval"]
43
+
44
+ @field_validator('schema_type')
45
+ def schema_type_validate_enum(cls, value):
46
+ """Validates the enum"""
47
+ if value is None:
48
+ return value
49
+
50
+ if value not in set(['CLICKHOUSE']):
51
+ raise ValueError("must be one of enum values ('CLICKHOUSE')")
52
+ return value
53
+
54
+ model_config = ConfigDict(
55
+ populate_by_name=True,
56
+ validate_assignment=True,
57
+ protected_namespaces=(),
58
+ )
59
+
60
+
61
+ def to_str(self) -> str:
62
+ """Returns the string representation of the model using alias"""
63
+ return pprint.pformat(self.model_dump(by_alias=True))
64
+
65
+ def to_json(self) -> str:
66
+ """Returns the JSON representation of the model using alias"""
67
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
68
+ return json.dumps(self.to_dict())
69
+
70
+ @classmethod
71
+ def from_json(cls, json_str: str) -> Optional[Self]:
72
+ """Create an instance of ClickhouseTableConfig from a JSON string"""
73
+ return cls.from_dict(json.loads(json_str))
74
+
75
+ def to_dict(self) -> Dict[str, Any]:
76
+ """Return the dictionary representation of the model using alias.
77
+
78
+ This has the following differences from calling pydantic's
79
+ `self.model_dump(by_alias=True)`:
80
+
81
+ * `None` is only added to the output dict for nullable fields that
82
+ were set at model initialization. Other fields with value `None`
83
+ are ignored.
84
+ """
85
+ excluded_fields: Set[str] = set([
86
+ ])
87
+
88
+ _dict = self.model_dump(
89
+ by_alias=True,
90
+ exclude=excluded_fields,
91
+ exclude_none=True,
92
+ )
93
+ # set to None if description (nullable) is None
94
+ # and model_fields_set contains the field
95
+ if self.description is None and "description" in self.model_fields_set:
96
+ _dict['description'] = None
97
+
98
+ # set to None if database (nullable) is None
99
+ # and model_fields_set contains the field
100
+ if self.database is None and "database" in self.model_fields_set:
101
+ _dict['database'] = None
102
+
103
+ # set to None if columns (nullable) is None
104
+ # and model_fields_set contains the field
105
+ if self.columns is None and "columns" in self.model_fields_set:
106
+ _dict['columns'] = None
107
+
108
+ # set to None if unique_keys (nullable) is None
109
+ # and model_fields_set contains the field
110
+ if self.unique_keys is None and "unique_keys" in self.model_fields_set:
111
+ _dict['unique_keys'] = None
112
+
113
+ # set to None if schedule_interval (nullable) is None
114
+ # and model_fields_set contains the field
115
+ if self.schedule_interval is None and "schedule_interval" in self.model_fields_set:
116
+ _dict['schedule_interval'] = None
117
+
118
+ return _dict
119
+
120
+ @classmethod
121
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
122
+ """Create an instance of ClickhouseTableConfig from a dict"""
123
+ if obj is None:
124
+ return None
125
+
126
+ if not isinstance(obj, dict):
127
+ return cls.model_validate(obj)
128
+
129
+ _obj = cls.model_validate({
130
+ "schema_type": obj.get("schema_type") if obj.get("schema_type") is not None else 'CLICKHOUSE',
131
+ "name": obj.get("name"),
132
+ "description": obj.get("description"),
133
+ "host": obj.get("host"),
134
+ "port": obj.get("port"),
135
+ "user": obj.get("user"),
136
+ "password": obj.get("password"),
137
+ "table": obj.get("table"),
138
+ "replication_key": obj.get("replication_key"),
139
+ "database": obj.get("database"),
140
+ "columns": obj.get("columns"),
141
+ "unique_keys": obj.get("unique_keys"),
142
+ "schedule_interval": obj.get("schedule_interval")
143
+ })
144
+ return _obj
145
+
146
+
@@ -0,0 +1,123 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Shaped API
5
+
6
+ Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. The Shaped API has four main endpoints: **Tables** - Provision and manage batch and real-time data connectors. **Views** - Configure SQL transformations and AI enrichment on your input data. Use SQL to combine multiple data sources or use an LLM to add new categories, extract specific attributes from descriptions, etc. **Engines** - Deploy and manage your relevance engines. The Engine API exposes configuration for indexing logic, input datasets, externam embeddings, and more. **Query** - Execute queries against your engines, to return data based on an input query or rerank an existing list. The Query API exposes the retrieve, filter, score, and ranking steps of the 4-stage ranking architecture. The base URL for each endpoint is: `https://api.shaped.ai/v2`
7
+
8
+ The version of the OpenAPI document: 2.0.0
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 pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from shaped.autogen.models.column_ordering import ColumnOrdering
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class ColumnOrderRetrieveStep(BaseModel):
27
+ """
28
+ Retrieves candidates by sorting on one or more columns.
29
+ """ # noqa: E501
30
+ columns: List[ColumnOrdering] = Field(description="List of column orderings to sort candidates by.")
31
+ where: Optional[StrictStr] = None
32
+ limit: Optional[StrictInt] = Field(default=100, description="Maximum number of candidates to retrieve.")
33
+ name: Optional[StrictStr] = None
34
+ type: Optional[StrictStr] = Field(default='column_order', description="Retrieve step type discriminator.")
35
+ __properties: ClassVar[List[str]] = ["columns", "where", "limit", "name", "type"]
36
+
37
+ @field_validator('type')
38
+ def type_validate_enum(cls, value):
39
+ """Validates the enum"""
40
+ if value is None:
41
+ return value
42
+
43
+ if value not in set(['column_order']):
44
+ raise ValueError("must be one of enum values ('column_order')")
45
+ return value
46
+
47
+ model_config = ConfigDict(
48
+ populate_by_name=True,
49
+ validate_assignment=True,
50
+ protected_namespaces=(),
51
+ )
52
+
53
+
54
+ def to_str(self) -> str:
55
+ """Returns the string representation of the model using alias"""
56
+ return pprint.pformat(self.model_dump(by_alias=True))
57
+
58
+ def to_json(self) -> str:
59
+ """Returns the JSON representation of the model using alias"""
60
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
61
+ return json.dumps(self.to_dict())
62
+
63
+ @classmethod
64
+ def from_json(cls, json_str: str) -> Optional[Self]:
65
+ """Create an instance of ColumnOrderRetrieveStep from a JSON string"""
66
+ return cls.from_dict(json.loads(json_str))
67
+
68
+ def to_dict(self) -> Dict[str, Any]:
69
+ """Return the dictionary representation of the model using alias.
70
+
71
+ This has the following differences from calling pydantic's
72
+ `self.model_dump(by_alias=True)`:
73
+
74
+ * `None` is only added to the output dict for nullable fields that
75
+ were set at model initialization. Other fields with value `None`
76
+ are ignored.
77
+ """
78
+ excluded_fields: Set[str] = set([
79
+ ])
80
+
81
+ _dict = self.model_dump(
82
+ by_alias=True,
83
+ exclude=excluded_fields,
84
+ exclude_none=True,
85
+ )
86
+ # override the default output from pydantic by calling `to_dict()` of each item in columns (list)
87
+ _items = []
88
+ if self.columns:
89
+ for _item_columns in self.columns:
90
+ if _item_columns:
91
+ _items.append(_item_columns.to_dict())
92
+ _dict['columns'] = _items
93
+ # set to None if where (nullable) is None
94
+ # and model_fields_set contains the field
95
+ if self.where is None and "where" in self.model_fields_set:
96
+ _dict['where'] = None
97
+
98
+ # set to None if name (nullable) is None
99
+ # and model_fields_set contains the field
100
+ if self.name is None and "name" in self.model_fields_set:
101
+ _dict['name'] = None
102
+
103
+ return _dict
104
+
105
+ @classmethod
106
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
107
+ """Create an instance of ColumnOrderRetrieveStep from a dict"""
108
+ if obj is None:
109
+ return None
110
+
111
+ if not isinstance(obj, dict):
112
+ return cls.model_validate(obj)
113
+
114
+ _obj = cls.model_validate({
115
+ "columns": [ColumnOrdering.from_dict(_item) for _item in obj["columns"]] if obj.get("columns") is not None else None,
116
+ "where": obj.get("where"),
117
+ "limit": obj.get("limit") if obj.get("limit") is not None else 100,
118
+ "name": obj.get("name"),
119
+ "type": obj.get("type") if obj.get("type") is not None else 'column_order'
120
+ })
121
+ return _obj
122
+
123
+