mixpeek 0.20.20__py3-none-any.whl → 0.21.6__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 → bucketobjects.py} +309 -793
  3. mixpeek/buckets.py +1292 -0
  4. mixpeek/clusters.py +306 -0
  5. mixpeek/collectioncache.py +820 -0
  6. mixpeek/{taxonomyentities.py → collectiondocuments.py} +305 -559
  7. mixpeek/collections.py +120 -994
  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/organizationnotifications.py +214 -0
  147. mixpeek/organizations.py +6 -210
  148. mixpeek/{featureextractors.py → organizationsusage.py} +31 -39
  149. mixpeek/research.py +228 -0
  150. mixpeek/retrieverinteractions.py +1036 -0
  151. mixpeek/{ingestassets.py → retrievers.py} +209 -271
  152. mixpeek/retrieverstages.py +232 -0
  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.20.dist-info → mixpeek-0.21.6.dist-info}/METADATA +68 -50
  158. mixpeek-0.21.6.dist-info/RECORD +216 -0
  159. {mixpeek-0.20.20.dist-info → mixpeek-0.21.6.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.20.dist-info/RECORD +0 -201
@@ -0,0 +1,81 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .interactiontype import InteractionType
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import List
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class SearchInteractionMetadataTypedDict(TypedDict):
12
+ pass
13
+
14
+
15
+ class SearchInteractionMetadata(BaseModel):
16
+ pass
17
+
18
+
19
+ class SearchInteractionTypedDict(TypedDict):
20
+ feature_id: str
21
+ r"""ID of the item that was interacted with"""
22
+ interaction_type: List[InteractionType]
23
+ r"""Type of interaction or feedback"""
24
+ position: NotRequired[Nullable[int]]
25
+ r"""Position in search results where interaction occurred"""
26
+ metadata: NotRequired[Nullable[SearchInteractionMetadataTypedDict]]
27
+ r"""Additional context about the interaction"""
28
+ user_id: NotRequired[Nullable[str]]
29
+ r"""Customer's authenticated user identifier - persists across sessions"""
30
+ session_id: NotRequired[Nullable[str]]
31
+ r"""Temporary identifier for a single search journey/session (typically 30min-1hr) - tracks anonymous and authenticated users"""
32
+
33
+
34
+ class SearchInteraction(BaseModel):
35
+ feature_id: str
36
+ r"""ID of the item that was interacted with"""
37
+
38
+ interaction_type: List[InteractionType]
39
+ r"""Type of interaction or feedback"""
40
+
41
+ position: OptionalNullable[int] = UNSET
42
+ r"""Position in search results where interaction occurred"""
43
+
44
+ metadata: OptionalNullable[SearchInteractionMetadata] = UNSET
45
+ r"""Additional context about the interaction"""
46
+
47
+ user_id: OptionalNullable[str] = UNSET
48
+ r"""Customer's authenticated user identifier - persists across sessions"""
49
+
50
+ session_id: OptionalNullable[str] = UNSET
51
+ r"""Temporary identifier for a single search journey/session (typically 30min-1hr) - tracks anonymous and authenticated users"""
52
+
53
+ @model_serializer(mode="wrap")
54
+ def serialize_model(self, handler):
55
+ optional_fields = ["position", "metadata", "user_id", "session_id"]
56
+ nullable_fields = ["position", "metadata", "user_id", "session_id"]
57
+ null_default_fields = []
58
+
59
+ serialized = handler(self)
60
+
61
+ m = {}
62
+
63
+ for n, f in type(self).model_fields.items():
64
+ k = f.alias or n
65
+ val = serialized.get(k)
66
+ serialized.pop(k, None)
67
+
68
+ optional_nullable = k in optional_fields and k in nullable_fields
69
+ is_set = (
70
+ self.__pydantic_fields_set__.intersection({n})
71
+ or k in null_default_fields
72
+ ) # pylint: disable=no-member
73
+
74
+ if val is not None and val != UNSET_SENTINEL:
75
+ m[k] = val
76
+ elif val != UNSET_SENTINEL and (
77
+ not k in optional_fields or (optional_nullable and is_set)
78
+ ):
79
+ m[k] = val
80
+
81
+ return m
@@ -0,0 +1,99 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .bucketschema_output import BucketSchemaOutput, BucketSchemaOutputTypedDict
5
+ from .featureextractorconfig import (
6
+ FeatureExtractorConfig,
7
+ FeatureExtractorConfigTypedDict,
8
+ )
9
+ from .sourceconfig_output import SourceConfigOutput, SourceConfigOutputTypedDict
10
+ from .sourcetype import SourceType
11
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
12
+ from pydantic import model_serializer
13
+ from typing import List, Optional
14
+ from typing_extensions import NotRequired, TypedDict
15
+
16
+
17
+ class SingleLineageEntryTypedDict(TypedDict):
18
+ r"""A single entry in the collection lineage path"""
19
+
20
+ source_type: SourceType
21
+ r"""Types of entries in a collection lineage"""
22
+ output_schema: BucketSchemaOutputTypedDict
23
+ r"""Schema definition for bucket objects"""
24
+ collection_id: NotRequired[Nullable[str]]
25
+ r"""ID of this entry (collection_id)"""
26
+ bucket_id: NotRequired[Nullable[str]]
27
+ r"""ID of this entry (bucket_id)"""
28
+ bucket_config: NotRequired[Nullable[SourceConfigOutputTypedDict]]
29
+ r"""Bucket details if this is a bucket or using a bucket source"""
30
+ collection_config: NotRequired[Nullable[SourceConfigOutputTypedDict]]
31
+ r"""Collection details if this is a collection or using a collection source"""
32
+ feature_extractors: NotRequired[List[FeatureExtractorConfigTypedDict]]
33
+ r"""Feature extractors applied"""
34
+
35
+
36
+ class SingleLineageEntry(BaseModel):
37
+ r"""A single entry in the collection lineage path"""
38
+
39
+ source_type: SourceType
40
+ r"""Types of entries in a collection lineage"""
41
+
42
+ output_schema: BucketSchemaOutput
43
+ r"""Schema definition for bucket objects"""
44
+
45
+ collection_id: OptionalNullable[str] = UNSET
46
+ r"""ID of this entry (collection_id)"""
47
+
48
+ bucket_id: OptionalNullable[str] = UNSET
49
+ r"""ID of this entry (bucket_id)"""
50
+
51
+ bucket_config: OptionalNullable[SourceConfigOutput] = UNSET
52
+ r"""Bucket details if this is a bucket or using a bucket source"""
53
+
54
+ collection_config: OptionalNullable[SourceConfigOutput] = UNSET
55
+ r"""Collection details if this is a collection or using a collection source"""
56
+
57
+ feature_extractors: Optional[List[FeatureExtractorConfig]] = None
58
+ r"""Feature extractors applied"""
59
+
60
+ @model_serializer(mode="wrap")
61
+ def serialize_model(self, handler):
62
+ optional_fields = [
63
+ "collection_id",
64
+ "bucket_id",
65
+ "bucket_config",
66
+ "collection_config",
67
+ "feature_extractors",
68
+ ]
69
+ nullable_fields = [
70
+ "collection_id",
71
+ "bucket_id",
72
+ "bucket_config",
73
+ "collection_config",
74
+ ]
75
+ null_default_fields = []
76
+
77
+ serialized = handler(self)
78
+
79
+ m = {}
80
+
81
+ for n, f in type(self).model_fields.items():
82
+ k = f.alias or n
83
+ val = serialized.get(k)
84
+ serialized.pop(k, None)
85
+
86
+ optional_nullable = k in optional_fields and k in nullable_fields
87
+ is_set = (
88
+ self.__pydantic_fields_set__.intersection({n})
89
+ or k in null_default_fields
90
+ ) # pylint: disable=no-member
91
+
92
+ if val is not None and val != UNSET_SENTINEL:
93
+ m[k] = val
94
+ elif val != UNSET_SENTINEL and (
95
+ not k in optional_fields or (optional_nullable and is_set)
96
+ ):
97
+ m[k] = val
98
+
99
+ return m
@@ -0,0 +1,11 @@
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 SortDirection(str, Enum):
8
+ r"""Sort direction options."""
9
+
10
+ ASC = "asc"
11
+ DESC = "desc"
@@ -1,28 +1,36 @@
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 .sortdirection import SortDirection
5
5
  from mixpeek.types import BaseModel
6
- from typing_extensions import TypedDict
6
+ from typing import Optional
7
+ from typing_extensions import NotRequired, TypedDict
7
8
 
8
9
 
9
- class Direction(str, Enum):
10
- r"""Sort direction"""
11
-
12
- ASC = "asc"
13
- DESC = "desc"
10
+ class SortOptionTypedDict(TypedDict):
11
+ r"""Specifies how to sort query results.
14
12
 
13
+ Attributes:
14
+ field: Field to sort by
15
+ direction: Sort direction (ascending or descending)
16
+ """
15
17
 
16
- class SortOptionTypedDict(TypedDict):
17
18
  field: str
18
19
  r"""Field to sort by, supports dot notation for nested fields"""
19
- direction: Direction
20
- r"""Sort direction"""
20
+ direction: NotRequired[SortDirection]
21
+ r"""Sort direction options."""
21
22
 
22
23
 
23
24
  class SortOption(BaseModel):
25
+ r"""Specifies how to sort query results.
26
+
27
+ Attributes:
28
+ field: Field to sort by
29
+ direction: Sort direction (ascending or descending)
30
+ """
31
+
24
32
  field: str
25
33
  r"""Field to sort by, supports dot notation for nested fields"""
26
34
 
27
- direction: Direction
28
- r"""Sort direction"""
35
+ direction: Optional[SortDirection] = None
36
+ r"""Sort direction options."""
@@ -0,0 +1,72 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .logicaloperator_input import LogicalOperatorInput, LogicalOperatorInputTypedDict
5
+ from .sourcetype import SourceType
6
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
7
+ from pydantic import model_serializer
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class SourceConfigInputTypedDict(TypedDict):
12
+ r"""Configuration for a collection source"""
13
+
14
+ type: SourceType
15
+ r"""Types of entries in a collection lineage"""
16
+ bucket_id: NotRequired[Nullable[str]]
17
+ r"""ID of the source bucket"""
18
+ prefix_key: NotRequired[Nullable[str]]
19
+ r"""Optional prefix to filter bucket objects"""
20
+ collection_id: NotRequired[Nullable[str]]
21
+ r"""ID of the source collection"""
22
+ filters: NotRequired[Nullable[LogicalOperatorInputTypedDict]]
23
+ r"""Optional filters to apply to the source collection"""
24
+
25
+
26
+ class SourceConfigInput(BaseModel):
27
+ r"""Configuration for a collection source"""
28
+
29
+ type: SourceType
30
+ r"""Types of entries in a collection lineage"""
31
+
32
+ bucket_id: OptionalNullable[str] = UNSET
33
+ r"""ID of the source bucket"""
34
+
35
+ prefix_key: OptionalNullable[str] = UNSET
36
+ r"""Optional prefix to filter bucket objects"""
37
+
38
+ collection_id: OptionalNullable[str] = UNSET
39
+ r"""ID of the source collection"""
40
+
41
+ filters: OptionalNullable[LogicalOperatorInput] = UNSET
42
+ r"""Optional filters to apply to the source collection"""
43
+
44
+ @model_serializer(mode="wrap")
45
+ def serialize_model(self, handler):
46
+ optional_fields = ["bucket_id", "prefix_key", "collection_id", "filters"]
47
+ nullable_fields = ["bucket_id", "prefix_key", "collection_id", "filters"]
48
+ null_default_fields = []
49
+
50
+ serialized = handler(self)
51
+
52
+ m = {}
53
+
54
+ for n, f in type(self).model_fields.items():
55
+ k = f.alias or n
56
+ val = serialized.get(k)
57
+ serialized.pop(k, None)
58
+
59
+ optional_nullable = k in optional_fields and k in nullable_fields
60
+ is_set = (
61
+ self.__pydantic_fields_set__.intersection({n})
62
+ or k in null_default_fields
63
+ ) # pylint: disable=no-member
64
+
65
+ if val is not None and val != UNSET_SENTINEL:
66
+ m[k] = val
67
+ elif val != UNSET_SENTINEL and (
68
+ not k in optional_fields or (optional_nullable and is_set)
69
+ ):
70
+ m[k] = val
71
+
72
+ return m
@@ -0,0 +1,75 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .logicaloperator_output import (
5
+ LogicalOperatorOutput,
6
+ LogicalOperatorOutputTypedDict,
7
+ )
8
+ from .sourcetype import SourceType
9
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
10
+ from pydantic import model_serializer
11
+ from typing_extensions import NotRequired, TypedDict
12
+
13
+
14
+ class SourceConfigOutputTypedDict(TypedDict):
15
+ r"""Configuration for a collection source"""
16
+
17
+ type: SourceType
18
+ r"""Types of entries in a collection lineage"""
19
+ bucket_id: NotRequired[Nullable[str]]
20
+ r"""ID of the source bucket"""
21
+ prefix_key: NotRequired[Nullable[str]]
22
+ r"""Optional prefix to filter bucket objects"""
23
+ collection_id: NotRequired[Nullable[str]]
24
+ r"""ID of the source collection"""
25
+ filters: NotRequired[Nullable[LogicalOperatorOutputTypedDict]]
26
+ r"""Optional filters to apply to the source collection"""
27
+
28
+
29
+ class SourceConfigOutput(BaseModel):
30
+ r"""Configuration for a collection source"""
31
+
32
+ type: SourceType
33
+ r"""Types of entries in a collection lineage"""
34
+
35
+ bucket_id: OptionalNullable[str] = UNSET
36
+ r"""ID of the source bucket"""
37
+
38
+ prefix_key: OptionalNullable[str] = UNSET
39
+ r"""Optional prefix to filter bucket objects"""
40
+
41
+ collection_id: OptionalNullable[str] = UNSET
42
+ r"""ID of the source collection"""
43
+
44
+ filters: OptionalNullable[LogicalOperatorOutput] = UNSET
45
+ r"""Optional filters to apply to the source collection"""
46
+
47
+ @model_serializer(mode="wrap")
48
+ def serialize_model(self, handler):
49
+ optional_fields = ["bucket_id", "prefix_key", "collection_id", "filters"]
50
+ nullable_fields = ["bucket_id", "prefix_key", "collection_id", "filters"]
51
+ null_default_fields = []
52
+
53
+ serialized = handler(self)
54
+
55
+ m = {}
56
+
57
+ for n, f in type(self).model_fields.items():
58
+ k = f.alias or n
59
+ val = serialized.get(k)
60
+ serialized.pop(k, None)
61
+
62
+ optional_nullable = k in optional_fields and k in nullable_fields
63
+ is_set = (
64
+ self.__pydantic_fields_set__.intersection({n})
65
+ or k in null_default_fields
66
+ ) # pylint: disable=no-member
67
+
68
+ if val is not None and val != UNSET_SENTINEL:
69
+ m[k] = val
70
+ elif val != UNSET_SENTINEL and (
71
+ not k in optional_fields or (optional_nullable and is_set)
72
+ ):
73
+ m[k] = val
74
+
75
+ return m
@@ -0,0 +1,11 @@
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 SourceType(str, Enum):
8
+ r"""Types of entries in a collection lineage"""
9
+
10
+ BUCKET = "bucket"
11
+ COLLECTION = "collection"
@@ -0,0 +1,111 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .logicaloperator_input import LogicalOperatorInput, LogicalOperatorInputTypedDict
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import Optional
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class StageConfigInputParametersTypedDict(TypedDict):
12
+ r"""Parameters for the stage"""
13
+
14
+
15
+ class StageConfigInputParameters(BaseModel):
16
+ r"""Parameters for the stage"""
17
+
18
+
19
+ class StageConfigInputTypedDict(TypedDict):
20
+ r"""Configuration for how a retriever stage processes queries and handles results.
21
+
22
+ This model consolidates stage-specific settings that control behavior
23
+ during retrieval operations, making it easier to configure stages
24
+ with consistent options.
25
+ """
26
+
27
+ stage_name: str
28
+ r"""Name of the stage"""
29
+ version: str
30
+ r"""Version of the stage"""
31
+ module_path: str
32
+ r"""Python module path for the stage"""
33
+ parameters: NotRequired[StageConfigInputParametersTypedDict]
34
+ r"""Parameters for the stage"""
35
+ pre_filters: NotRequired[Nullable[LogicalOperatorInputTypedDict]]
36
+ r"""Filters to apply before the main search is executed"""
37
+ post_filters: NotRequired[Nullable[LogicalOperatorInputTypedDict]]
38
+ r"""Filters to apply to search results after retrieval"""
39
+ timeout_seconds: NotRequired[Nullable[float]]
40
+ r"""Maximum execution time for this stage in seconds"""
41
+ exclude_from_final: NotRequired[bool]
42
+ r"""If True, results from this stage are used for subsequent stages but excluded from final output"""
43
+
44
+
45
+ class StageConfigInput(BaseModel):
46
+ r"""Configuration for how a retriever stage processes queries and handles results.
47
+
48
+ This model consolidates stage-specific settings that control behavior
49
+ during retrieval operations, making it easier to configure stages
50
+ with consistent options.
51
+ """
52
+
53
+ stage_name: str
54
+ r"""Name of the stage"""
55
+
56
+ version: str
57
+ r"""Version of the stage"""
58
+
59
+ module_path: str
60
+ r"""Python module path for the stage"""
61
+
62
+ parameters: Optional[StageConfigInputParameters] = None
63
+ r"""Parameters for the stage"""
64
+
65
+ pre_filters: OptionalNullable[LogicalOperatorInput] = UNSET
66
+ r"""Filters to apply before the main search is executed"""
67
+
68
+ post_filters: OptionalNullable[LogicalOperatorInput] = UNSET
69
+ r"""Filters to apply to search results after retrieval"""
70
+
71
+ timeout_seconds: OptionalNullable[float] = UNSET
72
+ r"""Maximum execution time for this stage in seconds"""
73
+
74
+ exclude_from_final: Optional[bool] = False
75
+ r"""If True, results from this stage are used for subsequent stages but excluded from final output"""
76
+
77
+ @model_serializer(mode="wrap")
78
+ def serialize_model(self, handler):
79
+ optional_fields = [
80
+ "parameters",
81
+ "pre_filters",
82
+ "post_filters",
83
+ "timeout_seconds",
84
+ "exclude_from_final",
85
+ ]
86
+ nullable_fields = ["pre_filters", "post_filters", "timeout_seconds"]
87
+ null_default_fields = []
88
+
89
+ serialized = handler(self)
90
+
91
+ m = {}
92
+
93
+ for n, f in type(self).model_fields.items():
94
+ k = f.alias or n
95
+ val = serialized.get(k)
96
+ serialized.pop(k, None)
97
+
98
+ optional_nullable = k in optional_fields and k in nullable_fields
99
+ is_set = (
100
+ self.__pydantic_fields_set__.intersection({n})
101
+ or k in null_default_fields
102
+ ) # pylint: disable=no-member
103
+
104
+ if val is not None and val != UNSET_SENTINEL:
105
+ m[k] = val
106
+ elif val != UNSET_SENTINEL and (
107
+ not k in optional_fields or (optional_nullable and is_set)
108
+ ):
109
+ m[k] = val
110
+
111
+ return m
@@ -0,0 +1,114 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .logicaloperator_output import (
5
+ LogicalOperatorOutput,
6
+ LogicalOperatorOutputTypedDict,
7
+ )
8
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
9
+ from pydantic import model_serializer
10
+ from typing import Optional
11
+ from typing_extensions import NotRequired, TypedDict
12
+
13
+
14
+ class StageConfigOutputParametersTypedDict(TypedDict):
15
+ r"""Parameters for the stage"""
16
+
17
+
18
+ class StageConfigOutputParameters(BaseModel):
19
+ r"""Parameters for the stage"""
20
+
21
+
22
+ class StageConfigOutputTypedDict(TypedDict):
23
+ r"""Configuration for how a retriever stage processes queries and handles results.
24
+
25
+ This model consolidates stage-specific settings that control behavior
26
+ during retrieval operations, making it easier to configure stages
27
+ with consistent options.
28
+ """
29
+
30
+ stage_name: str
31
+ r"""Name of the stage"""
32
+ version: str
33
+ r"""Version of the stage"""
34
+ module_path: str
35
+ r"""Python module path for the stage"""
36
+ parameters: NotRequired[StageConfigOutputParametersTypedDict]
37
+ r"""Parameters for the stage"""
38
+ pre_filters: NotRequired[Nullable[LogicalOperatorOutputTypedDict]]
39
+ r"""Filters to apply before the main search is executed"""
40
+ post_filters: NotRequired[Nullable[LogicalOperatorOutputTypedDict]]
41
+ r"""Filters to apply to search results after retrieval"""
42
+ timeout_seconds: NotRequired[Nullable[float]]
43
+ r"""Maximum execution time for this stage in seconds"""
44
+ exclude_from_final: NotRequired[bool]
45
+ r"""If True, results from this stage are used for subsequent stages but excluded from final output"""
46
+
47
+
48
+ class StageConfigOutput(BaseModel):
49
+ r"""Configuration for how a retriever stage processes queries and handles results.
50
+
51
+ This model consolidates stage-specific settings that control behavior
52
+ during retrieval operations, making it easier to configure stages
53
+ with consistent options.
54
+ """
55
+
56
+ stage_name: str
57
+ r"""Name of the stage"""
58
+
59
+ version: str
60
+ r"""Version of the stage"""
61
+
62
+ module_path: str
63
+ r"""Python module path for the stage"""
64
+
65
+ parameters: Optional[StageConfigOutputParameters] = None
66
+ r"""Parameters for the stage"""
67
+
68
+ pre_filters: OptionalNullable[LogicalOperatorOutput] = UNSET
69
+ r"""Filters to apply before the main search is executed"""
70
+
71
+ post_filters: OptionalNullable[LogicalOperatorOutput] = UNSET
72
+ r"""Filters to apply to search results after retrieval"""
73
+
74
+ timeout_seconds: OptionalNullable[float] = UNSET
75
+ r"""Maximum execution time for this stage in seconds"""
76
+
77
+ exclude_from_final: Optional[bool] = False
78
+ r"""If True, results from this stage are used for subsequent stages but excluded from final output"""
79
+
80
+ @model_serializer(mode="wrap")
81
+ def serialize_model(self, handler):
82
+ optional_fields = [
83
+ "parameters",
84
+ "pre_filters",
85
+ "post_filters",
86
+ "timeout_seconds",
87
+ "exclude_from_final",
88
+ ]
89
+ nullable_fields = ["pre_filters", "post_filters", "timeout_seconds"]
90
+ null_default_fields = []
91
+
92
+ serialized = handler(self)
93
+
94
+ m = {}
95
+
96
+ for n, f in type(self).model_fields.items():
97
+ k = f.alias or n
98
+ val = serialized.get(k)
99
+ serialized.pop(k, None)
100
+
101
+ optional_nullable = k in optional_fields and k in nullable_fields
102
+ is_set = (
103
+ self.__pydantic_fields_set__.intersection({n})
104
+ or k in null_default_fields
105
+ ) # pylint: disable=no-member
106
+
107
+ if val is not None and val != UNSET_SENTINEL:
108
+ m[k] = val
109
+ elif val != UNSET_SENTINEL and (
110
+ not k in optional_fields or (optional_nullable and is_set)
111
+ ):
112
+ m[k] = val
113
+
114
+ return m