shaped 2.0.0__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.0.dist-info → shaped-2.0.2.dist-info}/METADATA +119 -56
  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.0.dist-info/RECORD +0 -73
  320. shaped-2.0.0.dist-info/entry_points.txt +0 -2
  321. {shaped-2.0.0.dist-info → shaped-2.0.2.dist-info}/WHEEL +0 -0
  322. {shaped-2.0.0.dist-info → shaped-2.0.2.dist-info}/top_level.txt +0 -0
  323. {shaped-2.0.0.dist-info → shaped-2.0.2.dist-info}/zip-safe +0 -0
@@ -0,0 +1,118 @@
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, StrictFloat, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional, Union
22
+ from shaped.autogen.models.step_explanation import StepExplanation
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class PipelineStageExplanation(BaseModel):
27
+ """
28
+ Explanation for an entire pipeline stage (e.g., all retrieval steps).
29
+ """ # noqa: E501
30
+ stage_name: StrictStr = Field(description="Name of the pipeline stage. One of 'retrieve', 'filter', 'score', or 'reorder'.")
31
+ total_execution_time_ms: Optional[Union[StrictFloat, StrictInt]] = None
32
+ input_count: Optional[StrictInt] = None
33
+ output_count: Optional[StrictInt] = None
34
+ steps: Optional[List[StepExplanation]] = Field(default=None, description="List of step explanations for each step executed in this stage. Steps are ordered by execution order.")
35
+ __properties: ClassVar[List[str]] = ["stage_name", "total_execution_time_ms", "input_count", "output_count", "steps"]
36
+
37
+ model_config = ConfigDict(
38
+ populate_by_name=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
51
+ return json.dumps(self.to_dict())
52
+
53
+ @classmethod
54
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
+ """Create an instance of PipelineStageExplanation from a JSON string"""
56
+ return cls.from_dict(json.loads(json_str))
57
+
58
+ def to_dict(self) -> Dict[str, Any]:
59
+ """Return the dictionary representation of the model using alias.
60
+
61
+ This has the following differences from calling pydantic's
62
+ `self.model_dump(by_alias=True)`:
63
+
64
+ * `None` is only added to the output dict for nullable fields that
65
+ were set at model initialization. Other fields with value `None`
66
+ are ignored.
67
+ """
68
+ excluded_fields: Set[str] = set([
69
+ ])
70
+
71
+ _dict = self.model_dump(
72
+ by_alias=True,
73
+ exclude=excluded_fields,
74
+ exclude_none=True,
75
+ )
76
+ # override the default output from pydantic by calling `to_dict()` of each item in steps (list)
77
+ _items = []
78
+ if self.steps:
79
+ for _item_steps in self.steps:
80
+ if _item_steps:
81
+ _items.append(_item_steps.to_dict())
82
+ _dict['steps'] = _items
83
+ # set to None if total_execution_time_ms (nullable) is None
84
+ # and model_fields_set contains the field
85
+ if self.total_execution_time_ms is None and "total_execution_time_ms" in self.model_fields_set:
86
+ _dict['total_execution_time_ms'] = None
87
+
88
+ # set to None if input_count (nullable) is None
89
+ # and model_fields_set contains the field
90
+ if self.input_count is None and "input_count" in self.model_fields_set:
91
+ _dict['input_count'] = None
92
+
93
+ # set to None if output_count (nullable) is None
94
+ # and model_fields_set contains the field
95
+ if self.output_count is None and "output_count" in self.model_fields_set:
96
+ _dict['output_count'] = None
97
+
98
+ return _dict
99
+
100
+ @classmethod
101
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
102
+ """Create an instance of PipelineStageExplanation from a dict"""
103
+ if obj is None:
104
+ return None
105
+
106
+ if not isinstance(obj, dict):
107
+ return cls.model_validate(obj)
108
+
109
+ _obj = cls.model_validate({
110
+ "stage_name": obj.get("stage_name"),
111
+ "total_execution_time_ms": obj.get("total_execution_time_ms"),
112
+ "input_count": obj.get("input_count"),
113
+ "output_count": obj.get("output_count"),
114
+ "steps": [StepExplanation.from_dict(_item) for _item in obj["steps"]] if obj.get("steps") is not None else None
115
+ })
116
+ return _obj
117
+
118
+
@@ -0,0 +1,134 @@
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
+ from inspect import getfullargspec
17
+ import json
18
+ import pprint
19
+ import re # noqa: F401
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
21
+ from typing import Optional
22
+ from shaped.autogen.models.latency_scaling_policy import LatencyScalingPolicy
23
+ from shaped.autogen.models.requests_per_second_scaling_policy import RequestsPerSecondScalingPolicy
24
+ from typing import Union, Any, List, Set, TYPE_CHECKING, Optional, Dict
25
+ from typing_extensions import Literal, Self
26
+ from pydantic import Field
27
+
28
+ POLICY_ANY_OF_SCHEMAS = ["LatencyScalingPolicy", "RequestsPerSecondScalingPolicy"]
29
+
30
+ class Policy(BaseModel):
31
+ """
32
+ Autoscaling policy configuration.
33
+ """
34
+
35
+ # data type: RequestsPerSecondScalingPolicy
36
+ anyof_schema_1_validator: Optional[RequestsPerSecondScalingPolicy] = None
37
+ # data type: LatencyScalingPolicy
38
+ anyof_schema_2_validator: Optional[LatencyScalingPolicy] = None
39
+ if TYPE_CHECKING:
40
+ actual_instance: Optional[Union[LatencyScalingPolicy, RequestsPerSecondScalingPolicy]] = None
41
+ else:
42
+ actual_instance: Any = None
43
+ any_of_schemas: Set[str] = { "LatencyScalingPolicy", "RequestsPerSecondScalingPolicy" }
44
+
45
+ model_config = {
46
+ "validate_assignment": True,
47
+ "protected_namespaces": (),
48
+ }
49
+
50
+ def __init__(self, *args, **kwargs) -> None:
51
+ if args:
52
+ if len(args) > 1:
53
+ raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`")
54
+ if kwargs:
55
+ raise ValueError("If a position argument is used, keyword arguments cannot be used.")
56
+ super().__init__(actual_instance=args[0])
57
+ else:
58
+ super().__init__(**kwargs)
59
+
60
+ @field_validator('actual_instance')
61
+ def actual_instance_must_validate_anyof(cls, v):
62
+ instance = Policy.model_construct()
63
+ error_messages = []
64
+ # validate data type: RequestsPerSecondScalingPolicy
65
+ if not isinstance(v, RequestsPerSecondScalingPolicy):
66
+ error_messages.append(f"Error! Input type `{type(v)}` is not `RequestsPerSecondScalingPolicy`")
67
+ else:
68
+ return v
69
+
70
+ # validate data type: LatencyScalingPolicy
71
+ if not isinstance(v, LatencyScalingPolicy):
72
+ error_messages.append(f"Error! Input type `{type(v)}` is not `LatencyScalingPolicy`")
73
+ else:
74
+ return v
75
+
76
+ if error_messages:
77
+ # no match
78
+ raise ValueError("No match found when setting the actual_instance in Policy with anyOf schemas: LatencyScalingPolicy, RequestsPerSecondScalingPolicy. Details: " + ", ".join(error_messages))
79
+ else:
80
+ return v
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Dict[str, Any]) -> Self:
84
+ return cls.from_json(json.dumps(obj))
85
+
86
+ @classmethod
87
+ def from_json(cls, json_str: str) -> Self:
88
+ """Returns the object represented by the json string"""
89
+ instance = cls.model_construct()
90
+ error_messages = []
91
+ # anyof_schema_1_validator: Optional[RequestsPerSecondScalingPolicy] = None
92
+ try:
93
+ instance.actual_instance = RequestsPerSecondScalingPolicy.from_json(json_str)
94
+ return instance
95
+ except (ValidationError, ValueError) as e:
96
+ error_messages.append(str(e))
97
+ # anyof_schema_2_validator: Optional[LatencyScalingPolicy] = None
98
+ try:
99
+ instance.actual_instance = LatencyScalingPolicy.from_json(json_str)
100
+ return instance
101
+ except (ValidationError, ValueError) as e:
102
+ error_messages.append(str(e))
103
+
104
+ if error_messages:
105
+ # no match
106
+ raise ValueError("No match found when deserializing the JSON string into Policy with anyOf schemas: LatencyScalingPolicy, RequestsPerSecondScalingPolicy. Details: " + ", ".join(error_messages))
107
+ else:
108
+ return instance
109
+
110
+ def to_json(self) -> str:
111
+ """Returns the JSON representation of the actual instance"""
112
+ if self.actual_instance is None:
113
+ return "null"
114
+
115
+ if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
116
+ return self.actual_instance.to_json()
117
+ else:
118
+ return json.dumps(self.actual_instance)
119
+
120
+ def to_dict(self) -> Optional[Union[Dict[str, Any], LatencyScalingPolicy, RequestsPerSecondScalingPolicy]]:
121
+ """Returns the dict representation of the actual instance"""
122
+ if self.actual_instance is None:
123
+ return None
124
+
125
+ if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
126
+ return self.actual_instance.to_dict()
127
+ else:
128
+ return self.actual_instance
129
+
130
+ def to_str(self) -> str:
131
+ """Returns the string representation of the actual instance"""
132
+ return pprint.pformat(self.model_dump())
133
+
134
+
@@ -0,0 +1,134 @@
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
+ from inspect import getfullargspec
17
+ import json
18
+ import pprint
19
+ import re # noqa: F401
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
21
+ from typing import Optional
22
+ from shaped.autogen.models.encoding_pooling_strategy import EncodingPoolingStrategy
23
+ from shaped.autogen.models.tunable_string import TunableString
24
+ from typing import Union, Any, List, Set, TYPE_CHECKING, Optional, Dict
25
+ from typing_extensions import Literal, Self
26
+ from pydantic import Field
27
+
28
+ POOLFN_ANY_OF_SCHEMAS = ["EncodingPoolingStrategy", "TunableString"]
29
+
30
+ class PoolFn(BaseModel):
31
+ """
32
+ PoolFn
33
+ """
34
+
35
+ # data type: EncodingPoolingStrategy
36
+ anyof_schema_1_validator: Optional[EncodingPoolingStrategy] = None
37
+ # data type: TunableString
38
+ anyof_schema_2_validator: Optional[TunableString] = None
39
+ if TYPE_CHECKING:
40
+ actual_instance: Optional[Union[EncodingPoolingStrategy, TunableString]] = None
41
+ else:
42
+ actual_instance: Any = None
43
+ any_of_schemas: Set[str] = { "EncodingPoolingStrategy", "TunableString" }
44
+
45
+ model_config = {
46
+ "validate_assignment": True,
47
+ "protected_namespaces": (),
48
+ }
49
+
50
+ def __init__(self, *args, **kwargs) -> None:
51
+ if args:
52
+ if len(args) > 1:
53
+ raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`")
54
+ if kwargs:
55
+ raise ValueError("If a position argument is used, keyword arguments cannot be used.")
56
+ super().__init__(actual_instance=args[0])
57
+ else:
58
+ super().__init__(**kwargs)
59
+
60
+ @field_validator('actual_instance')
61
+ def actual_instance_must_validate_anyof(cls, v):
62
+ instance = PoolFn.model_construct()
63
+ error_messages = []
64
+ # validate data type: EncodingPoolingStrategy
65
+ if not isinstance(v, EncodingPoolingStrategy):
66
+ error_messages.append(f"Error! Input type `{type(v)}` is not `EncodingPoolingStrategy`")
67
+ else:
68
+ return v
69
+
70
+ # validate data type: TunableString
71
+ if not isinstance(v, TunableString):
72
+ error_messages.append(f"Error! Input type `{type(v)}` is not `TunableString`")
73
+ else:
74
+ return v
75
+
76
+ if error_messages:
77
+ # no match
78
+ raise ValueError("No match found when setting the actual_instance in PoolFn with anyOf schemas: EncodingPoolingStrategy, TunableString. Details: " + ", ".join(error_messages))
79
+ else:
80
+ return v
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Dict[str, Any]) -> Self:
84
+ return cls.from_json(json.dumps(obj))
85
+
86
+ @classmethod
87
+ def from_json(cls, json_str: str) -> Self:
88
+ """Returns the object represented by the json string"""
89
+ instance = cls.model_construct()
90
+ error_messages = []
91
+ # anyof_schema_1_validator: Optional[EncodingPoolingStrategy] = None
92
+ try:
93
+ instance.actual_instance = EncodingPoolingStrategy.from_json(json_str)
94
+ return instance
95
+ except (ValidationError, ValueError) as e:
96
+ error_messages.append(str(e))
97
+ # anyof_schema_2_validator: Optional[TunableString] = None
98
+ try:
99
+ instance.actual_instance = TunableString.from_json(json_str)
100
+ return instance
101
+ except (ValidationError, ValueError) as e:
102
+ error_messages.append(str(e))
103
+
104
+ if error_messages:
105
+ # no match
106
+ raise ValueError("No match found when deserializing the JSON string into PoolFn with anyOf schemas: EncodingPoolingStrategy, TunableString. Details: " + ", ".join(error_messages))
107
+ else:
108
+ return instance
109
+
110
+ def to_json(self) -> str:
111
+ """Returns the JSON representation of the actual instance"""
112
+ if self.actual_instance is None:
113
+ return "null"
114
+
115
+ if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
116
+ return self.actual_instance.to_json()
117
+ else:
118
+ return json.dumps(self.actual_instance)
119
+
120
+ def to_dict(self) -> Optional[Union[Dict[str, Any], EncodingPoolingStrategy, TunableString]]:
121
+ """Returns the dict representation of the actual instance"""
122
+ if self.actual_instance is None:
123
+ return None
124
+
125
+ if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
126
+ return self.actual_instance.to_dict()
127
+ else:
128
+ return self.actual_instance
129
+
130
+ def to_str(self) -> str:
131
+ """Returns the string representation of the actual instance"""
132
+ return pprint.pformat(self.model_dump())
133
+
134
+
@@ -0,0 +1,37 @@
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 PoolingFunction(str, Enum):
22
+ """
23
+ The function to use when pooling multiple embeddings into one.
24
+ """
25
+
26
+ """
27
+ allowed enum values
28
+ """
29
+ MAX = 'max'
30
+ MEAN = 'mean'
31
+
32
+ @classmethod
33
+ def from_json(cls, json_str: str) -> Self:
34
+ """Create an instance of PoolingFunction from a JSON string"""
35
+ return cls(json.loads(json_str))
36
+
37
+
@@ -3,9 +3,9 @@
3
3
  """
4
4
  Shaped API
5
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. Shaped's API is composed of 3 components: 1. **Dataset** - used to provision and manage 'Shaped Datasets', which are persisted data views of external data. Shaped Datasets can be created from any of our 'Shaped connectors' (e.g. S3, Segment, Snowflake, etc.) and support both batch ingestion (up to a 15min delay) and stream ingestion (up to a 30 second delay) depending on the specific connector used. Shaped datasets can also be created from local files, which is particularly useful for getting started with a snapshot of data. 2. **Model Management** - used to provision and manage 'Shaped Models', which represent a system of data pipelines, training and serving infrastructure for your ranking use-case. 3. **Model Inference** - a high performance API that's used to make user-understanding requests or ranking inferences to your 'Shaped Models'. For example, the 'rank' endpoint can be used to determine for a given user id query, what is the content that is most engaging to that user. The recommended workflow to interact with the Shaped API is as follows: 1. First create 'Shaped Datasets' to sync over data that your Shaped understanding models will need. The models at the minimum need interaction data to understand behavior of your users, so start with that and add your item and user catalog data later. 2. Then create 'Shaped Models' that use your created 'Shaped Datasets' as input. Your Shaped Model will will start streaming, processing and training from your connected data immediately. After a few hours your model will have tuned all parameters based on your data and will deploy an active model. 3. You can now use the 'Model Inference' endpoints to make real-time inferences to your model based on your use-case.
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
7
 
8
- The version of the OpenAPI document: 1.0.1
8
+ The version of the OpenAPI document: 2.0.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -17,23 +17,26 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr, field_validator
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
22
  from typing import Optional, Set
23
23
  from typing_extensions import Self
24
24
 
25
- class PostgresDatasetConfig(BaseModel):
25
+ class PostgresTableConfig(BaseModel):
26
26
  """
27
- PostgresDatasetConfig
27
+ PostgresTableConfig
28
28
  """ # noqa: E501
29
- name: StrictStr
30
- host: StrictStr
31
- port: StrictInt
32
- user: StrictStr
33
- password: StrictStr
34
- table: StrictStr
35
- database: StrictStr
36
- replication_key: StrictStr
29
+ schema_type: Optional[StrictStr] = Field(default='POSTGRES', description="Schema type discriminator for Postgres datasets.")
30
+ name: StrictStr = Field(description="Unique identifier for the Postgres dataset.")
31
+ description: Optional[StrictStr] = None
32
+ host: StrictStr = Field(description="PostgreSQL server hostname or IP address.")
33
+ port: StrictInt = Field(description="PostgreSQL server port number.")
34
+ user: StrictStr = Field(description="PostgreSQL username.")
35
+ password: StrictStr = Field(description="PostgreSQL password.")
36
+ table: StrictStr = Field(description="PostgreSQL table name to sync.")
37
+ database: StrictStr = Field(description="PostgreSQL database name.")
38
+ replication_key: StrictStr = Field(description="Column name used for incremental replication.")
39
+ schedule_interval: Optional[StrictStr] = None
37
40
  columns: Optional[List[StrictStr]] = None
38
41
  database_schema: Optional[StrictStr] = None
39
42
  ssh_tunnel_host: Optional[StrictStr] = None
@@ -41,14 +44,19 @@ class PostgresDatasetConfig(BaseModel):
41
44
  ssh_tunnel_private_key: Optional[StrictStr] = None
42
45
  ssh_tunnel_private_key_password: Optional[StrictStr] = None
43
46
  ssh_tunnel_user: Optional[StrictStr] = None
44
- ssh_tunnel_password: Optional[StrictStr] = None
45
- schedule_interval: Optional[StrictStr] = None
46
- schema_type: StrictStr
47
- __properties: ClassVar[List[str]] = ["name", "host", "port", "user", "password", "table", "database", "replication_key", "columns", "database_schema", "ssh_tunnel_host", "ssh_tunnel_port", "ssh_tunnel_private_key", "ssh_tunnel_private_key_password", "ssh_tunnel_user", "ssh_tunnel_password", "schedule_interval", "schema_type"]
47
+ ssl_certificate_authority: Optional[StrictStr] = None
48
+ ssl_client_certificate: Optional[StrictStr] = None
49
+ ssl_client_private_key: Optional[StrictStr] = None
50
+ batch_size: Optional[StrictInt] = None
51
+ unique_keys: Optional[List[StrictStr]] = None
52
+ __properties: ClassVar[List[str]] = ["schema_type", "name", "description", "host", "port", "user", "password", "table", "database", "replication_key", "schedule_interval", "columns", "database_schema", "ssh_tunnel_host", "ssh_tunnel_port", "ssh_tunnel_private_key", "ssh_tunnel_private_key_password", "ssh_tunnel_user", "ssl_certificate_authority", "ssl_client_certificate", "ssl_client_private_key", "batch_size", "unique_keys"]
48
53
 
49
54
  @field_validator('schema_type')
50
55
  def schema_type_validate_enum(cls, value):
51
56
  """Validates the enum"""
57
+ if value is None:
58
+ return value
59
+
52
60
  if value not in set(['POSTGRES']):
53
61
  raise ValueError("must be one of enum values ('POSTGRES')")
54
62
  return value
@@ -71,7 +79,7 @@ class PostgresDatasetConfig(BaseModel):
71
79
 
72
80
  @classmethod
73
81
  def from_json(cls, json_str: str) -> Optional[Self]:
74
- """Create an instance of PostgresDatasetConfig from a JSON string"""
82
+ """Create an instance of PostgresTableConfig from a JSON string"""
75
83
  return cls.from_dict(json.loads(json_str))
76
84
 
77
85
  def to_dict(self) -> Dict[str, Any]:
@@ -92,6 +100,16 @@ class PostgresDatasetConfig(BaseModel):
92
100
  exclude=excluded_fields,
93
101
  exclude_none=True,
94
102
  )
103
+ # set to None if description (nullable) is None
104
+ # and model_fields_set contains the field
105
+ if self.description is None and "description" in self.model_fields_set:
106
+ _dict['description'] = None
107
+
108
+ # set to None if schedule_interval (nullable) is None
109
+ # and model_fields_set contains the field
110
+ if self.schedule_interval is None and "schedule_interval" in self.model_fields_set:
111
+ _dict['schedule_interval'] = None
112
+
95
113
  # set to None if columns (nullable) is None
96
114
  # and model_fields_set contains the field
97
115
  if self.columns is None and "columns" in self.model_fields_set:
@@ -127,21 +145,36 @@ class PostgresDatasetConfig(BaseModel):
127
145
  if self.ssh_tunnel_user is None and "ssh_tunnel_user" in self.model_fields_set:
128
146
  _dict['ssh_tunnel_user'] = None
129
147
 
130
- # set to None if ssh_tunnel_password (nullable) is None
148
+ # set to None if ssl_certificate_authority (nullable) is None
131
149
  # and model_fields_set contains the field
132
- if self.ssh_tunnel_password is None and "ssh_tunnel_password" in self.model_fields_set:
133
- _dict['ssh_tunnel_password'] = None
150
+ if self.ssl_certificate_authority is None and "ssl_certificate_authority" in self.model_fields_set:
151
+ _dict['ssl_certificate_authority'] = None
134
152
 
135
- # set to None if schedule_interval (nullable) is None
153
+ # set to None if ssl_client_certificate (nullable) is None
136
154
  # and model_fields_set contains the field
137
- if self.schedule_interval is None and "schedule_interval" in self.model_fields_set:
138
- _dict['schedule_interval'] = None
155
+ if self.ssl_client_certificate is None and "ssl_client_certificate" in self.model_fields_set:
156
+ _dict['ssl_client_certificate'] = None
157
+
158
+ # set to None if ssl_client_private_key (nullable) is None
159
+ # and model_fields_set contains the field
160
+ if self.ssl_client_private_key is None and "ssl_client_private_key" in self.model_fields_set:
161
+ _dict['ssl_client_private_key'] = None
162
+
163
+ # set to None if batch_size (nullable) is None
164
+ # and model_fields_set contains the field
165
+ if self.batch_size is None and "batch_size" in self.model_fields_set:
166
+ _dict['batch_size'] = None
167
+
168
+ # set to None if unique_keys (nullable) is None
169
+ # and model_fields_set contains the field
170
+ if self.unique_keys is None and "unique_keys" in self.model_fields_set:
171
+ _dict['unique_keys'] = None
139
172
 
140
173
  return _dict
141
174
 
142
175
  @classmethod
143
176
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
144
- """Create an instance of PostgresDatasetConfig from a dict"""
177
+ """Create an instance of PostgresTableConfig from a dict"""
145
178
  if obj is None:
146
179
  return None
147
180
 
@@ -149,7 +182,9 @@ class PostgresDatasetConfig(BaseModel):
149
182
  return cls.model_validate(obj)
150
183
 
151
184
  _obj = cls.model_validate({
185
+ "schema_type": obj.get("schema_type") if obj.get("schema_type") is not None else 'POSTGRES',
152
186
  "name": obj.get("name"),
187
+ "description": obj.get("description"),
153
188
  "host": obj.get("host"),
154
189
  "port": obj.get("port"),
155
190
  "user": obj.get("user"),
@@ -157,6 +192,7 @@ class PostgresDatasetConfig(BaseModel):
157
192
  "table": obj.get("table"),
158
193
  "database": obj.get("database"),
159
194
  "replication_key": obj.get("replication_key"),
195
+ "schedule_interval": obj.get("schedule_interval"),
160
196
  "columns": obj.get("columns"),
161
197
  "database_schema": obj.get("database_schema"),
162
198
  "ssh_tunnel_host": obj.get("ssh_tunnel_host"),
@@ -164,9 +200,11 @@ class PostgresDatasetConfig(BaseModel):
164
200
  "ssh_tunnel_private_key": obj.get("ssh_tunnel_private_key"),
165
201
  "ssh_tunnel_private_key_password": obj.get("ssh_tunnel_private_key_password"),
166
202
  "ssh_tunnel_user": obj.get("ssh_tunnel_user"),
167
- "ssh_tunnel_password": obj.get("ssh_tunnel_password"),
168
- "schedule_interval": obj.get("schedule_interval"),
169
- "schema_type": obj.get("schema_type")
203
+ "ssl_certificate_authority": obj.get("ssl_certificate_authority"),
204
+ "ssl_client_certificate": obj.get("ssl_client_certificate"),
205
+ "ssl_client_private_key": obj.get("ssl_client_private_key"),
206
+ "batch_size": obj.get("batch_size"),
207
+ "unique_keys": obj.get("unique_keys")
170
208
  })
171
209
  return _obj
172
210