mixpeek 0.20.19__py3-none-any.whl → 0.21.1__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 (228) hide show
  1. mixpeek/_version.py +3 -3
  2. mixpeek/{assets.py → bucket_objects.py} +309 -793
  3. mixpeek/buckets.py +1292 -0
  4. mixpeek/clusters.py +306 -0
  5. mixpeek/collection_cache.py +820 -0
  6. mixpeek/{taxonomyentities.py → collection_documents.py} +305 -559
  7. mixpeek/collections.py +122 -996
  8. mixpeek/features.py +45 -991
  9. mixpeek/models/__init__.py +625 -570
  10. mixpeek/models/aggregationtype.py +13 -0
  11. mixpeek/models/apikeyupdate.py +1 -1
  12. mixpeek/models/attributebasedconfig.py +21 -0
  13. mixpeek/models/automaticnaming.py +29 -0
  14. mixpeek/models/basicfeatureextractor.py +35 -0
  15. mixpeek/models/{classify_features_v1_entities_taxonomies_taxonomy_classify_postop.py → batch_delete_documents_v1_collections_collection_identifier_documents_batch_deleteop.py} +17 -15
  16. mixpeek/models/{update_collection_v1_collections_collection_putop.py → batch_update_documents_v1_collections_collection_identifier_documents_batch_putop.py} +29 -19
  17. mixpeek/models/blobdetails.py +72 -0
  18. mixpeek/models/blobmodel.py +107 -0
  19. mixpeek/models/bucketcreaterequest.py +75 -0
  20. mixpeek/models/bucketresponse.py +90 -0
  21. mixpeek/models/bucketschema_input.py +37 -0
  22. mixpeek/models/bucketschema_output.py +37 -0
  23. mixpeek/models/{featureresponse.py → bucketschemafield_input.py} +45 -18
  24. mixpeek/models/bucketschemafield_output.py +101 -0
  25. mixpeek/models/bucketschemafieldtype.py +29 -0
  26. mixpeek/models/bucketupdaterequest.py +68 -0
  27. mixpeek/models/cachestats.py +40 -0
  28. mixpeek/models/{list_collections_v1_collections_getop.py → cleanup_cache_v1_collections_cache_cleanup_postop.py} +23 -12
  29. mixpeek/models/{inputtype.py → clusteringmethod.py} +3 -5
  30. mixpeek/models/clustertype.py +9 -0
  31. mixpeek/models/collectioncacheconfig_input.py +92 -0
  32. mixpeek/models/collectioncacheconfig_output.py +92 -0
  33. mixpeek/models/collectionconfig.py +32 -0
  34. mixpeek/models/collectionmodel.py +79 -8
  35. mixpeek/models/{create_taxonomy_v1_entities_taxonomies_postop.py → create_bucket_v1_buckets_create_postop.py} +7 -7
  36. mixpeek/models/{search_assets_v1_assets_search_postop.py → create_cluster_v1_clusters_postop.py} +7 -7
  37. mixpeek/models/{create_collection_v1_collections_postop.py → create_collection_v1_collections_create_postop.py} +3 -3
  38. mixpeek/models/{ingest_video_url_v1_ingest_videos_url_postop.py → create_interaction_v1_retrievers_interactions_postop.py} +7 -7
  39. mixpeek/models/{partial_asset_update_v1_assets_asset_id_patchop.py → create_object_v1_buckets_bucket_identifier_objects_create_postop.py} +11 -9
  40. mixpeek/models/{ingest_text_v1_ingest_text_postop.py → create_retriever_v1_retrievers_retrievers_postop.py} +10 -7
  41. mixpeek/models/{ingest_image_url_v1_ingest_images_url_postop.py → create_taxonomy_v1_taxonomies_postop.py} +7 -7
  42. mixpeek/models/createblobrequest.py +80 -0
  43. mixpeek/models/createclusterrequest.py +74 -0
  44. mixpeek/models/createcollectionrequest.py +72 -3
  45. mixpeek/models/createnamespacerequest.py +14 -8
  46. mixpeek/models/createobjectrequest.py +75 -0
  47. mixpeek/models/createretrieverrequest.py +90 -0
  48. mixpeek/models/{taxonomyupdate.py → createtaxonomyrequest.py} +15 -13
  49. mixpeek/models/{delete_asset_v1_assets_asset_id_deleteop.py → delete_bucket_v1_buckets_bucket_identifier_deleteop.py} +5 -5
  50. mixpeek/models/{delete_classifications_v1_entities_taxonomies_taxonomy_classifications_classification_id_deleteop.py → delete_document_v1_collections_collection_identifier_documents_document_id_deleteop.py} +11 -11
  51. mixpeek/models/{get_taxonomy_v1_entities_taxonomies_taxonomy_getop.py → delete_interaction_v1_retrievers_interactions_interaction_id_deleteop.py} +7 -7
  52. mixpeek/models/delete_object_v1_buckets_bucket_identifier_objects_object_identifier_deleteop.py +70 -0
  53. mixpeek/models/{featureextractionembeddingrequest.py → documenthandlingconfig.py} +12 -15
  54. mixpeek/models/documentinputhandling.py +11 -0
  55. mixpeek/models/{jsontextoutputsettings.py → documentlistresponse.py} +15 -14
  56. mixpeek/models/documentoutputhandling.py +10 -0
  57. mixpeek/models/documentoutputtype.py +11 -0
  58. mixpeek/models/documentresponse.py +87 -0
  59. mixpeek/models/{nodeupdate.py → documentupdate.py} +22 -13
  60. mixpeek/models/enrichmentfield.py +25 -0
  61. mixpeek/models/errordetail.py +1 -1
  62. mixpeek/models/{update_node_v1_entities_taxonomies_nodes_node_patchop.py → execute_retriever_v1_retrievers_retrievers_retriever_id_execute_postop.py} +11 -11
  63. mixpeek/models/featureextractorconfig.py +116 -0
  64. mixpeek/models/featureextractordefinition.py +192 -0
  65. mixpeek/models/filtercondition.py +25 -25
  66. mixpeek/models/filteroperator.py +24 -0
  67. mixpeek/models/generativemodels.py +10 -0
  68. mixpeek/models/{delete_feature_v1_features_feature_id_deleteop.py → get_bucket_v1_buckets_bucket_identifier_getop.py} +5 -5
  69. mixpeek/models/{list_taxonomies_v1_entities_taxonomies_getop.py → get_cache_stats_v1_collections_cache_stats_getop.py} +16 -14
  70. mixpeek/models/get_collection_v1_collections_collection_id_getop.py +59 -0
  71. mixpeek/models/get_document_v1_collections_collection_identifier_documents_document_id_getop.py +70 -0
  72. mixpeek/models/get_feature_extractor_v1_features_extractors_feature_id_getop.py +16 -0
  73. mixpeek/models/get_interaction_v1_retrievers_interactions_interaction_id_getop.py +57 -0
  74. mixpeek/models/{delete_collection_v1_collections_collection_deleteop.py → get_object_v1_buckets_bucket_identifier_objects_object_identifier_getop.py} +16 -7
  75. mixpeek/models/get_research_v1_research_getop.py +52 -0
  76. mixpeek/models/get_retriever_stages_v1_retrievers_stages_getop.py +52 -0
  77. mixpeek/models/{delete_taxonomy_v1_entities_taxonomies_taxonomy_deleteop.py → get_retriever_v1_retrievers_retrievers_retriever_id_getop.py} +5 -7
  78. mixpeek/models/get_task_v1_tasks_task_id_getop.py +1 -1
  79. mixpeek/models/getusagerequestmodel.py +91 -0
  80. mixpeek/models/hdbscanparameters.py +26 -0
  81. mixpeek/models/interactionresponse.py +86 -0
  82. mixpeek/models/interactiontype.py +22 -0
  83. mixpeek/models/{search_features_v1_features_search_postop.py → invalidate_cache_v1_collections_cache_invalidate_postop.py} +60 -34
  84. mixpeek/models/invalidationevent.py +67 -0
  85. mixpeek/models/invalidationstrategy.py +12 -0
  86. mixpeek/models/kill_task_v1_tasks_task_id_deleteop.py +1 -1
  87. mixpeek/models/list_active_tasks_v1_tasks_getop.py +1 -1
  88. mixpeek/models/{list_assets_v1_assets_postop.py → list_buckets_v1_buckets_postop.py} +18 -18
  89. mixpeek/models/{list_features_v1_features_postop.py → list_documents_v1_collections_collection_identifier_documents_getop.py} +54 -19
  90. mixpeek/models/list_interactions_v1_retrievers_interactions_getop.py +96 -0
  91. mixpeek/models/{list_classifications_v1_entities_taxonomies_taxonomy_classifications_postop.py → list_objects_v1_buckets_bucket_identifier_objects_postop.py} +22 -29
  92. mixpeek/models/{groupbyoptionsasset.py → listbucketsrequest.py} +19 -28
  93. mixpeek/models/listbucketsresponse.py +23 -0
  94. mixpeek/models/{groupbyoptions.py → listobjectsrequest.py} +19 -28
  95. mixpeek/models/listobjectsresponse.py +25 -0
  96. mixpeek/models/listtasksresponse.py +3 -6
  97. mixpeek/models/{logicaloperator.py → logicaloperator_input.py} +42 -24
  98. mixpeek/models/logicaloperator_output.py +121 -0
  99. mixpeek/models/multivectorindex.py +25 -0
  100. mixpeek/models/namespaceresponse.py +1 -1
  101. mixpeek/models/namespaceusage.py +45 -0
  102. mixpeek/models/namingmethod.py +8 -0
  103. mixpeek/models/objectresponse.py +124 -0
  104. mixpeek/models/{db_model_paginationresponse.py → paginationresponse.py} +3 -3
  105. mixpeek/models/payloadindexconfig.py +1 -1
  106. mixpeek/models/plan.py +82 -0
  107. mixpeek/models/recomputestrategy.py +12 -0
  108. mixpeek/models/resourcetotals.py +39 -0
  109. mixpeek/models/{jsonvideooutputsettings.py → retrieverbinding.py} +19 -11
  110. mixpeek/models/{logodetectsettings.py → retrievercacheconfig.py} +20 -11
  111. mixpeek/models/retrievermodel.py +95 -0
  112. mixpeek/models/retrieverqueryrequest.py +114 -0
  113. mixpeek/models/retrieverresponse.py +24 -0
  114. mixpeek/models/searchinteraction.py +81 -0
  115. mixpeek/models/singlelineageentry.py +99 -0
  116. mixpeek/models/sortdirection.py +11 -0
  117. mixpeek/models/sortoption.py +20 -12
  118. mixpeek/models/sourceconfig_input.py +72 -0
  119. mixpeek/models/sourceconfig_output.py +75 -0
  120. mixpeek/models/sourcetype.py +11 -0
  121. mixpeek/models/stageconfig_input.py +111 -0
  122. mixpeek/models/stageconfig_output.py +114 -0
  123. mixpeek/models/stagedefinition.py +110 -0
  124. mixpeek/models/{jsonimageoutputsettings.py → stageresponse.py} +21 -11
  125. mixpeek/models/taskresponse.py +1 -1
  126. mixpeek/models/taskstatus.py +1 -0
  127. mixpeek/models/{assetfeatures.py → taxonomyapplicationconfig.py} +23 -15
  128. mixpeek/models/taxonomyconfig.py +19 -0
  129. mixpeek/models/timeseriesdatapoint.py +25 -0
  130. mixpeek/models/timeseriesusage.py +36 -0
  131. mixpeek/models/{full_asset_update_v1_assets_asset_id_putop.py → update_bucket_v1_buckets_bucket_identifier_putop.py} +9 -9
  132. mixpeek/models/{update_taxonomy_v1_entities_taxonomies_taxonomy_patchop.py → update_document_v1_collections_collection_identifier_documents_document_id_putop.py} +25 -13
  133. mixpeek/models/{full_feature_update_v1_features_feature_id_putop.py → update_object_v1_buckets_bucket_identifier_objects_object_identifier_putop.py} +20 -9
  134. mixpeek/models/updatenamespacerequest.py +1 -1
  135. mixpeek/models/updateobjectrequest.py +75 -0
  136. mixpeek/models/usageresponse.py +86 -0
  137. mixpeek/models/usagesummary.py +39 -0
  138. mixpeek/models/usagetimerange.py +16 -0
  139. mixpeek/models/usermodel_input.py +3 -0
  140. mixpeek/models/usermodel_output.py +3 -0
  141. mixpeek/models/vectorbasedconfig.py +60 -0
  142. mixpeek/models/{collectionresult.py → vectorindex.py} +20 -15
  143. mixpeek/models/vectorindexdefinition.py +43 -0
  144. mixpeek/models/vectortype.py +4 -1
  145. mixpeek/namespaces.py +26 -480
  146. mixpeek/organization_notifications.py +214 -0
  147. mixpeek/organizations.py +6 -210
  148. mixpeek/{featureextractors.py → organizations_usage.py} +31 -39
  149. mixpeek/research.py +228 -0
  150. mixpeek/retriever_interactions.py +1036 -0
  151. mixpeek/retriever_stages.py +232 -0
  152. mixpeek/{ingestassets.py → retrievers.py} +209 -271
  153. mixpeek/sdk.py +40 -23
  154. mixpeek/taxonomies.py +43 -513
  155. mixpeek/types/basemodel.py +3 -3
  156. mixpeek/utils/enums.py +67 -27
  157. {mixpeek-0.20.19.dist-info → mixpeek-0.21.1.dist-info}/METADATA +68 -50
  158. mixpeek-0.21.1.dist-info/RECORD +216 -0
  159. {mixpeek-0.20.19.dist-info → mixpeek-0.21.1.dist-info}/WHEEL +1 -1
  160. mixpeek/models/actionusage.py +0 -16
  161. mixpeek/models/assetresponse.py +0 -166
  162. mixpeek/models/assets_model_searchquery.py +0 -21
  163. mixpeek/models/assetupdate.py +0 -28
  164. mixpeek/models/assignmentconfig.py +0 -67
  165. mixpeek/models/assignmentmode.py +0 -11
  166. mixpeek/models/availablemodels.py +0 -16
  167. mixpeek/models/availablemodelsresponse.py +0 -27
  168. mixpeek/models/classificationmatch.py +0 -77
  169. mixpeek/models/classificationwithfeature.py +0 -73
  170. mixpeek/models/collectiondetailsresponse.py +0 -83
  171. mixpeek/models/dateusage.py +0 -22
  172. mixpeek/models/denseembedding.py +0 -16
  173. mixpeek/models/discoverrequest.py +0 -64
  174. mixpeek/models/embeddingconfig.py +0 -33
  175. mixpeek/models/embeddingrequest.py +0 -92
  176. mixpeek/models/embeddingresponse.py +0 -64
  177. mixpeek/models/entitysettings.py +0 -50
  178. mixpeek/models/featureoptions.py +0 -25
  179. mixpeek/models/features_model_paginationresponse.py +0 -59
  180. mixpeek/models/featureupdaterequest.py +0 -21
  181. mixpeek/models/get_asset_v1_assets_asset_id_getop.py +0 -73
  182. mixpeek/models/get_asset_with_features_v1_assets_asset_id_features_getop.py +0 -73
  183. mixpeek/models/get_collection_details_v1_collections_collection_details_getop.py +0 -59
  184. mixpeek/models/get_collection_details_v1_collections_collection_getop.py +0 -59
  185. mixpeek/models/get_feature_v1_features_feature_id_getop.py +0 -70
  186. mixpeek/models/get_taxonomy_node_v1_entities_taxonomies_nodes_node_getop.py +0 -59
  187. mixpeek/models/groupedassetdata.py +0 -18
  188. mixpeek/models/imagedescribesettings.py +0 -82
  189. mixpeek/models/imagedetectsettings.py +0 -47
  190. mixpeek/models/imagereadsettings.py +0 -71
  191. mixpeek/models/imagesettings.py +0 -92
  192. mixpeek/models/listassetsrequest.py +0 -75
  193. mixpeek/models/listassetsresponse.py +0 -22
  194. mixpeek/models/listclassificationsrequest.py +0 -69
  195. mixpeek/models/listclassificationsresponse.py +0 -31
  196. mixpeek/models/listcollectionsresponse.py +0 -22
  197. mixpeek/models/listfeaturesrequest.py +0 -77
  198. mixpeek/models/listfeaturesresponse.py +0 -22
  199. mixpeek/models/listtaxonomiesresponse.py +0 -24
  200. mixpeek/models/modality.py +0 -13
  201. mixpeek/models/modeldetails.py +0 -61
  202. mixpeek/models/nodeoptions.py +0 -16
  203. mixpeek/models/patch_namespace_v1_namespaces_namespace_patchop.py +0 -28
  204. mixpeek/models/payloadindextype.py +0 -17
  205. mixpeek/models/processimageurlinput.py +0 -87
  206. mixpeek/models/processtextinput.py +0 -82
  207. mixpeek/models/processvideourlinput.py +0 -87
  208. mixpeek/models/querysettings.py +0 -56
  209. mixpeek/models/rerankingoptions.py +0 -47
  210. mixpeek/models/search_model_searchquery.py +0 -76
  211. mixpeek/models/searchassetsrequest.py +0 -78
  212. mixpeek/models/searchrequestfeatures.py +0 -153
  213. mixpeek/models/sparseembedding.py +0 -21
  214. mixpeek/models/taxonomycreate.py +0 -20
  215. mixpeek/models/taxonomyextractionconfig.py +0 -26
  216. mixpeek/models/taxonomymodel.py +0 -27
  217. mixpeek/models/taxonomynode.py +0 -101
  218. mixpeek/models/taxonomynodecreate.py +0 -63
  219. mixpeek/models/textsettings.py +0 -67
  220. mixpeek/models/updateassetrequest.py +0 -60
  221. mixpeek/models/usage.py +0 -18
  222. mixpeek/models/vectormodel.py +0 -15
  223. mixpeek/models/videodescribesettings.py +0 -82
  224. mixpeek/models/videodetectsettings.py +0 -47
  225. mixpeek/models/videoreadsettings.py +0 -71
  226. mixpeek/models/videosettings.py +0 -115
  227. mixpeek/models/videotranscriptionsettings.py +0 -69
  228. mixpeek-0.20.19.dist-info/RECORD +0 -201
@@ -0,0 +1,87 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from datetime import datetime
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import Dict, List, Optional
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class DocumentResponseMetadataTypedDict(TypedDict):
12
+ pass
13
+
14
+
15
+ class DocumentResponseMetadata(BaseModel):
16
+ pass
17
+
18
+
19
+ class DocumentResponseTypedDict(TypedDict):
20
+ r"""Model for document response"""
21
+
22
+ document_id: str
23
+ r"""Unique identifier for the document"""
24
+ collection_id: str
25
+ r"""ID of the collection this document belongs to"""
26
+ internal_id: str
27
+ r"""Internal organization ID"""
28
+ namespace_id: str
29
+ r"""Namespace ID"""
30
+ created_at: NotRequired[datetime]
31
+ updated_at: NotRequired[Nullable[datetime]]
32
+ metadata: NotRequired[DocumentResponseMetadataTypedDict]
33
+ vectors: NotRequired[Dict[str, List[float]]]
34
+
35
+
36
+ class DocumentResponse(BaseModel):
37
+ r"""Model for document response"""
38
+
39
+ document_id: str
40
+ r"""Unique identifier for the document"""
41
+
42
+ collection_id: str
43
+ r"""ID of the collection this document belongs to"""
44
+
45
+ internal_id: str
46
+ r"""Internal organization ID"""
47
+
48
+ namespace_id: str
49
+ r"""Namespace ID"""
50
+
51
+ created_at: Optional[datetime] = None
52
+
53
+ updated_at: OptionalNullable[datetime] = UNSET
54
+
55
+ metadata: Optional[DocumentResponseMetadata] = None
56
+
57
+ vectors: Optional[Dict[str, List[float]]] = None
58
+
59
+ @model_serializer(mode="wrap")
60
+ def serialize_model(self, handler):
61
+ optional_fields = ["created_at", "updated_at", "metadata", "vectors"]
62
+ nullable_fields = ["updated_at"]
63
+ null_default_fields = []
64
+
65
+ serialized = handler(self)
66
+
67
+ m = {}
68
+
69
+ for n, f in type(self).model_fields.items():
70
+ k = f.alias or n
71
+ val = serialized.get(k)
72
+ serialized.pop(k, None)
73
+
74
+ optional_nullable = k in optional_fields and k in nullable_fields
75
+ is_set = (
76
+ self.__pydantic_fields_set__.intersection({n})
77
+ or k in null_default_fields
78
+ ) # pylint: disable=no-member
79
+
80
+ if val is not None and val != UNSET_SENTINEL:
81
+ m[k] = val
82
+ elif val != UNSET_SENTINEL and (
83
+ not k in optional_fields or (optional_nullable and is_set)
84
+ ):
85
+ m[k] = val
86
+
87
+ return m
@@ -3,34 +3,43 @@
3
3
  from __future__ import annotations
4
4
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
5
5
  from pydantic import model_serializer
6
+ from typing import Dict, List
6
7
  from typing_extensions import NotRequired, TypedDict
7
8
 
8
9
 
9
- class NodeUpdateTypedDict(TypedDict):
10
- node_name: str
11
- r"""Name of the taxonomy node (must be lowercase without spaces)"""
12
- node_description: NotRequired[Nullable[str]]
13
- r"""Optional description of what this node represents"""
10
+ class DocumentUpdateMetadataTypedDict(TypedDict):
11
+ pass
14
12
 
15
13
 
16
- class NodeUpdate(BaseModel):
17
- node_name: str
18
- r"""Name of the taxonomy node (must be lowercase without spaces)"""
14
+ class DocumentUpdateMetadata(BaseModel):
15
+ pass
19
16
 
20
- node_description: OptionalNullable[str] = UNSET
21
- r"""Optional description of what this node represents"""
17
+
18
+ class DocumentUpdateTypedDict(TypedDict):
19
+ r"""Model for updating an existing document"""
20
+
21
+ metadata: NotRequired[Nullable[DocumentUpdateMetadataTypedDict]]
22
+ vectors: NotRequired[Nullable[Dict[str, List[float]]]]
23
+
24
+
25
+ class DocumentUpdate(BaseModel):
26
+ r"""Model for updating an existing document"""
27
+
28
+ metadata: OptionalNullable[DocumentUpdateMetadata] = UNSET
29
+
30
+ vectors: OptionalNullable[Dict[str, List[float]]] = UNSET
22
31
 
23
32
  @model_serializer(mode="wrap")
24
33
  def serialize_model(self, handler):
25
- optional_fields = ["node_description"]
26
- nullable_fields = ["node_description"]
34
+ optional_fields = ["metadata", "vectors"]
35
+ nullable_fields = ["metadata", "vectors"]
27
36
  null_default_fields = []
28
37
 
29
38
  serialized = handler(self)
30
39
 
31
40
  m = {}
32
41
 
33
- for n, f in self.model_fields.items():
42
+ for n, f in type(self).model_fields.items():
34
43
  k = f.alias or n
35
44
  val = serialized.get(k)
36
45
  serialized.pop(k, None)
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from mixpeek.types import BaseModel
5
+ from typing import Optional
6
+ from typing_extensions import NotRequired, TypedDict
7
+
8
+
9
+ class EnrichmentFieldTypedDict(TypedDict):
10
+ r"""Configuration for how a field should be enriched"""
11
+
12
+ field_name: str
13
+ r"""Name of the field to enrich"""
14
+ append: NotRequired[bool]
15
+ r"""Whether to append to existing values or replace them"""
16
+
17
+
18
+ class EnrichmentField(BaseModel):
19
+ r"""Configuration for how a field should be enriched"""
20
+
21
+ field_name: str
22
+ r"""Name of the field to enrich"""
23
+
24
+ append: Optional[bool] = False
25
+ r"""Whether to append to existing values or replace them"""
@@ -37,7 +37,7 @@ class ErrorDetail(BaseModel):
37
37
 
38
38
  m = {}
39
39
 
40
- for n, f in self.model_fields.items():
40
+ for n, f in type(self).model_fields.items():
41
41
  k = f.alias or n
42
42
  val = serialized.get(k)
43
43
  serialized.pop(k, None)
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .nodeupdate import NodeUpdate, NodeUpdateTypedDict
4
+ from .retrieverqueryrequest import RetrieverQueryRequest, RetrieverQueryRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import (
7
7
  FieldMetadata,
@@ -14,22 +14,22 @@ from pydantic import model_serializer
14
14
  from typing_extensions import Annotated, NotRequired, TypedDict
15
15
 
16
16
 
17
- class UpdateNodeV1EntitiesTaxonomiesNodesNodePatchRequestTypedDict(TypedDict):
18
- node: str
19
- r"""The ID or name of the node to update"""
20
- node_update: NodeUpdateTypedDict
17
+ class ExecuteRetrieverV1RetrieversRetrieversRetrieverIDExecutePostRequestTypedDict(
18
+ TypedDict
19
+ ):
20
+ retriever_id: str
21
+ retriever_query_request: RetrieverQueryRequestTypedDict
21
22
  x_namespace: NotRequired[Nullable[str]]
22
23
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
23
24
 
24
25
 
25
- class UpdateNodeV1EntitiesTaxonomiesNodesNodePatchRequest(BaseModel):
26
- node: Annotated[
26
+ class ExecuteRetrieverV1RetrieversRetrieversRetrieverIDExecutePostRequest(BaseModel):
27
+ retriever_id: Annotated[
27
28
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
28
29
  ]
29
- r"""The ID or name of the node to update"""
30
30
 
31
- node_update: Annotated[
32
- NodeUpdate,
31
+ retriever_query_request: Annotated[
32
+ RetrieverQueryRequest,
33
33
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
34
34
  ]
35
35
 
@@ -50,7 +50,7 @@ class UpdateNodeV1EntitiesTaxonomiesNodesNodePatchRequest(BaseModel):
50
50
 
51
51
  m = {}
52
52
 
53
- for n, f in self.model_fields.items():
53
+ for n, f in type(self).model_fields.items():
54
54
  k = f.alias or n
55
55
  val = serialized.get(k)
56
56
  serialized.pop(k, None)
@@ -0,0 +1,116 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .documentinputhandling import DocumentInputHandling
5
+ from .documentoutputhandling import DocumentOutputHandling
6
+ from .documentoutputtype import DocumentOutputType
7
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
8
+ from pydantic import model_serializer
9
+ from typing import Dict, Optional
10
+ from typing_extensions import NotRequired, TypedDict
11
+
12
+
13
+ class ParametersTypedDict(TypedDict):
14
+ r"""Custom parameters for the extractor"""
15
+
16
+
17
+ class Parameters(BaseModel):
18
+ r"""Custom parameters for the extractor"""
19
+
20
+
21
+ class FeatureExtractorConfigTypedDict(TypedDict):
22
+ r"""Configuration for a feature extractor that is selected for use within a collection.
23
+ This model represents a selected feature extractor along with its specific configuration
24
+ for a particular collection.
25
+ This gets stored in the collection settings.
26
+ """
27
+
28
+ feature_extractor_name: str
29
+ r"""Name of the feature extractor"""
30
+ version: str
31
+ r"""Version of the feature extractor"""
32
+ parameters: NotRequired[ParametersTypedDict]
33
+ r"""Custom parameters for the extractor"""
34
+ input_mapping: NotRequired[Dict[str, str]]
35
+ r"""Maps pipeline inputs to extractor inputs (source -> target)"""
36
+ output_mapping: NotRequired[Dict[str, str]]
37
+ r"""Maps extractor outputs to pipeline outputs (source -> target)"""
38
+ document_output_type: NotRequired[Nullable[DocumentOutputType]]
39
+ r"""Type of document output produced by the extractor"""
40
+ document_input_handling: NotRequired[Nullable[DocumentInputHandling]]
41
+ r"""How documents are provided to the extractor"""
42
+ document_output_handling: NotRequired[Nullable[DocumentOutputHandling]]
43
+ r"""How extractor output is handled for documents"""
44
+
45
+
46
+ class FeatureExtractorConfig(BaseModel):
47
+ r"""Configuration for a feature extractor that is selected for use within a collection.
48
+ This model represents a selected feature extractor along with its specific configuration
49
+ for a particular collection.
50
+ This gets stored in the collection settings.
51
+ """
52
+
53
+ feature_extractor_name: str
54
+ r"""Name of the feature extractor"""
55
+
56
+ version: str
57
+ r"""Version of the feature extractor"""
58
+
59
+ parameters: Optional[Parameters] = None
60
+ r"""Custom parameters for the extractor"""
61
+
62
+ input_mapping: Optional[Dict[str, str]] = None
63
+ r"""Maps pipeline inputs to extractor inputs (source -> target)"""
64
+
65
+ output_mapping: Optional[Dict[str, str]] = None
66
+ r"""Maps extractor outputs to pipeline outputs (source -> target)"""
67
+
68
+ document_output_type: OptionalNullable[DocumentOutputType] = UNSET
69
+ r"""Type of document output produced by the extractor"""
70
+
71
+ document_input_handling: OptionalNullable[DocumentInputHandling] = UNSET
72
+ r"""How documents are provided to the extractor"""
73
+
74
+ document_output_handling: OptionalNullable[DocumentOutputHandling] = UNSET
75
+ r"""How extractor output is handled for documents"""
76
+
77
+ @model_serializer(mode="wrap")
78
+ def serialize_model(self, handler):
79
+ optional_fields = [
80
+ "parameters",
81
+ "input_mapping",
82
+ "output_mapping",
83
+ "document_output_type",
84
+ "document_input_handling",
85
+ "document_output_handling",
86
+ ]
87
+ nullable_fields = [
88
+ "document_output_type",
89
+ "document_input_handling",
90
+ "document_output_handling",
91
+ ]
92
+ null_default_fields = []
93
+
94
+ serialized = handler(self)
95
+
96
+ m = {}
97
+
98
+ for n, f in type(self).model_fields.items():
99
+ k = f.alias or n
100
+ val = serialized.get(k)
101
+ serialized.pop(k, None)
102
+
103
+ optional_nullable = k in optional_fields and k in nullable_fields
104
+ is_set = (
105
+ self.__pydantic_fields_set__.intersection({n})
106
+ or k in null_default_fields
107
+ ) # pylint: disable=no-member
108
+
109
+ if val is not None and val != UNSET_SENTINEL:
110
+ m[k] = val
111
+ elif val != UNSET_SENTINEL and (
112
+ not k in optional_fields or (optional_nullable and is_set)
113
+ ):
114
+ m[k] = val
115
+
116
+ return m
@@ -0,0 +1,192 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .documentinputhandling import DocumentInputHandling
5
+ from .documentoutputhandling import DocumentOutputHandling
6
+ from .documentoutputtype import DocumentOutputType
7
+ from .vectorindexdefinition import VectorIndexDefinition, VectorIndexDefinitionTypedDict
8
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
9
+ import pydantic
10
+ from pydantic import ConfigDict, model_serializer
11
+ from typing import Any, Dict, List, Optional
12
+ from typing_extensions import NotRequired, TypedDict
13
+
14
+
15
+ class InputSchemaTypedDict(TypedDict):
16
+ r"""Schema for input data"""
17
+
18
+
19
+ class InputSchema(BaseModel):
20
+ r"""Schema for input data"""
21
+
22
+
23
+ class OutputSchemaTypedDict(TypedDict):
24
+ r"""Schema for output data"""
25
+
26
+
27
+ class OutputSchema(BaseModel):
28
+ r"""Schema for output data"""
29
+
30
+
31
+ class ParameterSchemaTypedDict(TypedDict):
32
+ r"""Schema for parameters"""
33
+
34
+
35
+ class ParameterSchema(BaseModel):
36
+ r"""Schema for parameters"""
37
+
38
+
39
+ class DefaultParametersTypedDict(TypedDict):
40
+ r"""Default parameters"""
41
+
42
+
43
+ class DefaultParameters(BaseModel):
44
+ r"""Default parameters"""
45
+
46
+
47
+ class FeatureExtractorDefinitionTypedDict(TypedDict):
48
+ r"""Definition of a feature extractor."""
49
+
50
+ feature_extractor_name: str
51
+ r"""Name of the feature extractor"""
52
+ description: str
53
+ r"""Description of the feature extractor"""
54
+ version: str
55
+ r"""Version of the feature extractor"""
56
+ module_path: str
57
+ r"""Python module path for the feature extractor"""
58
+ feature_id: NotRequired[str]
59
+ r"""Unique identifier for the feature extractor"""
60
+ input_schema: NotRequired[InputSchemaTypedDict]
61
+ r"""Schema for input data"""
62
+ output_schema: NotRequired[OutputSchemaTypedDict]
63
+ r"""Schema for output data"""
64
+ parameter_schema: NotRequired[ParameterSchemaTypedDict]
65
+ r"""Schema for parameters"""
66
+ supported_input_types: NotRequired[List[str]]
67
+ r"""Supported input types"""
68
+ max_inputs: NotRequired[Dict[str, int]]
69
+ r"""Maximum number of inputs of each type"""
70
+ default_parameters: NotRequired[DefaultParametersTypedDict]
71
+ r"""Default parameters"""
72
+ document_output_type: NotRequired[DocumentOutputType]
73
+ r"""Enum for document output types"""
74
+ document_input_handling: NotRequired[DocumentInputHandling]
75
+ r"""How documents are provided to the feature extractor"""
76
+ document_output_handling: NotRequired[DocumentOutputHandling]
77
+ r"""Enum for document output handling types"""
78
+ required_vector_indexes: NotRequired[Nullable[List[VectorIndexDefinitionTypedDict]]]
79
+ r"""Vector indexes required by the extractor"""
80
+ required_payload_indexes: NotRequired[Nullable[List[Any]]]
81
+ r"""Payload indexes required by the extractor"""
82
+
83
+
84
+ class FeatureExtractorDefinition(BaseModel):
85
+ r"""Definition of a feature extractor."""
86
+
87
+ model_config = ConfigDict(
88
+ populate_by_name=True, arbitrary_types_allowed=True, extra="allow"
89
+ )
90
+ __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False)
91
+
92
+ feature_extractor_name: str
93
+ r"""Name of the feature extractor"""
94
+
95
+ description: str
96
+ r"""Description of the feature extractor"""
97
+
98
+ version: str
99
+ r"""Version of the feature extractor"""
100
+
101
+ module_path: str
102
+ r"""Python module path for the feature extractor"""
103
+
104
+ feature_id: Optional[str] = ""
105
+ r"""Unique identifier for the feature extractor"""
106
+
107
+ input_schema: Optional[InputSchema] = None
108
+ r"""Schema for input data"""
109
+
110
+ output_schema: Optional[OutputSchema] = None
111
+ r"""Schema for output data"""
112
+
113
+ parameter_schema: Optional[ParameterSchema] = None
114
+ r"""Schema for parameters"""
115
+
116
+ supported_input_types: Optional[List[str]] = None
117
+ r"""Supported input types"""
118
+
119
+ max_inputs: Optional[Dict[str, int]] = None
120
+ r"""Maximum number of inputs of each type"""
121
+
122
+ default_parameters: Optional[DefaultParameters] = None
123
+ r"""Default parameters"""
124
+
125
+ document_output_type: Optional[DocumentOutputType] = None
126
+ r"""Enum for document output types"""
127
+
128
+ document_input_handling: Optional[DocumentInputHandling] = None
129
+ r"""How documents are provided to the feature extractor"""
130
+
131
+ document_output_handling: Optional[DocumentOutputHandling] = None
132
+ r"""Enum for document output handling types"""
133
+
134
+ required_vector_indexes: OptionalNullable[List[VectorIndexDefinition]] = UNSET
135
+ r"""Vector indexes required by the extractor"""
136
+
137
+ required_payload_indexes: OptionalNullable[List[Any]] = UNSET
138
+ r"""Payload indexes required by the extractor"""
139
+
140
+ @property
141
+ def additional_properties(self):
142
+ return self.__pydantic_extra__
143
+
144
+ @additional_properties.setter
145
+ def additional_properties(self, value):
146
+ self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride]
147
+
148
+ @model_serializer(mode="wrap")
149
+ def serialize_model(self, handler):
150
+ optional_fields = [
151
+ "feature_id",
152
+ "input_schema",
153
+ "output_schema",
154
+ "parameter_schema",
155
+ "supported_input_types",
156
+ "max_inputs",
157
+ "default_parameters",
158
+ "document_output_type",
159
+ "document_input_handling",
160
+ "document_output_handling",
161
+ "required_vector_indexes",
162
+ "required_payload_indexes",
163
+ ]
164
+ nullable_fields = ["required_vector_indexes", "required_payload_indexes"]
165
+ null_default_fields = []
166
+
167
+ serialized = handler(self)
168
+
169
+ m = {}
170
+
171
+ for n, f in type(self).model_fields.items():
172
+ k = f.alias or n
173
+ val = serialized.get(k)
174
+ serialized.pop(k, None)
175
+
176
+ optional_nullable = k in optional_fields and k in nullable_fields
177
+ is_set = (
178
+ self.__pydantic_fields_set__.intersection({n})
179
+ or k in null_default_fields
180
+ ) # pylint: disable=no-member
181
+
182
+ if val is not None and val != UNSET_SENTINEL:
183
+ m[k] = val
184
+ elif val != UNSET_SENTINEL and (
185
+ not k in optional_fields or (optional_nullable and is_set)
186
+ ):
187
+ m[k] = val
188
+
189
+ for k, v in serialized.items():
190
+ m[k] = v
191
+
192
+ return m
@@ -1,51 +1,51 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from enum import Enum
4
+ from .filteroperator import FilterOperator
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from pydantic import model_serializer
7
7
  from typing import Any, Optional
8
8
  from typing_extensions import NotRequired, TypedDict
9
9
 
10
10
 
11
- class Operator(str, Enum):
12
- r"""Comparison operator"""
13
-
14
- EQ = "eq"
15
- NE = "ne"
16
- GT = "gt"
17
- LT = "lt"
18
- GTE = "gte"
19
- LTE = "lte"
20
- IN = "in"
21
- NIN = "nin"
22
- IS_NULL = "is_null"
23
- TEXT = "text"
24
- EXISTS = "exists"
11
+ class FilterConditionTypedDict(TypedDict):
12
+ r"""Represents a single filter condition.
25
13
 
14
+ Attributes:
15
+ field: The field to filter on
16
+ operator: The comparison operator
17
+ value: The value to compare against
18
+ """
26
19
 
27
- class FilterConditionTypedDict(TypedDict):
28
- key: str
20
+ field: str
29
21
  r"""Field name to filter on"""
22
+ operator: NotRequired[FilterOperator]
23
+ r"""Supported filter operators across database implementations."""
30
24
  value: NotRequired[Nullable[Any]]
31
25
  r"""Value to compare against"""
32
- operator: NotRequired[Operator]
33
- r"""Comparison operator"""
34
26
 
35
27
 
36
28
  class FilterCondition(BaseModel):
37
- key: str
29
+ r"""Represents a single filter condition.
30
+
31
+ Attributes:
32
+ field: The field to filter on
33
+ operator: The comparison operator
34
+ value: The value to compare against
35
+ """
36
+
37
+ field: str
38
38
  r"""Field name to filter on"""
39
39
 
40
+ operator: Optional[FilterOperator] = None
41
+ r"""Supported filter operators across database implementations."""
42
+
40
43
  value: OptionalNullable[Any] = UNSET
41
44
  r"""Value to compare against"""
42
45
 
43
- operator: Optional[Operator] = Operator.EQ
44
- r"""Comparison operator"""
45
-
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["value", "operator"]
48
+ optional_fields = ["operator", "value"]
49
49
  nullable_fields = ["value"]
50
50
  null_default_fields = []
51
51
 
@@ -53,7 +53,7 @@ class FilterCondition(BaseModel):
53
53
 
54
54
  m = {}
55
55
 
56
- for n, f in self.model_fields.items():
56
+ for n, f in type(self).model_fields.items():
57
57
  k = f.alias or n
58
58
  val = serialized.get(k)
59
59
  serialized.pop(k, None)
@@ -0,0 +1,24 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from enum import Enum
5
+
6
+
7
+ class FilterOperator(str, Enum):
8
+ r"""Supported filter operators across database implementations."""
9
+
10
+ EQ = "eq"
11
+ NE = "ne"
12
+ GT = "gt"
13
+ LT = "lt"
14
+ GTE = "gte"
15
+ LTE = "lte"
16
+ IN = "in"
17
+ NIN = "nin"
18
+ CONTAINS = "contains"
19
+ STARTS_WITH = "starts_with"
20
+ ENDS_WITH = "ends_with"
21
+ REGEX = "regex"
22
+ EXISTS = "exists"
23
+ IS_NULL = "is_null"
24
+ TEXT = "text"
@@ -0,0 +1,10 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from enum import Enum
5
+
6
+
7
+ class GenerativeModels(str, Enum):
8
+ GPT_4 = "gpt-4"
9
+ CLAUDE_3_5_SONNET = "claude-3-5-sonnet"
10
+ GEMINI_1_5_FLASH = "gemini-1.5-flash"