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.
- mixpeek/_version.py +3 -3
- mixpeek/{assets.py → bucket_objects.py} +309 -793
- mixpeek/buckets.py +1292 -0
- mixpeek/clusters.py +306 -0
- mixpeek/collection_cache.py +820 -0
- mixpeek/{taxonomyentities.py → collection_documents.py} +305 -559
- mixpeek/collections.py +122 -996
- mixpeek/features.py +45 -991
- mixpeek/models/__init__.py +625 -570
- mixpeek/models/aggregationtype.py +13 -0
- mixpeek/models/apikeyupdate.py +1 -1
- mixpeek/models/attributebasedconfig.py +21 -0
- mixpeek/models/automaticnaming.py +29 -0
- mixpeek/models/basicfeatureextractor.py +35 -0
- mixpeek/models/{classify_features_v1_entities_taxonomies_taxonomy_classify_postop.py → batch_delete_documents_v1_collections_collection_identifier_documents_batch_deleteop.py} +17 -15
- mixpeek/models/{update_collection_v1_collections_collection_putop.py → batch_update_documents_v1_collections_collection_identifier_documents_batch_putop.py} +29 -19
- mixpeek/models/blobdetails.py +72 -0
- mixpeek/models/blobmodel.py +107 -0
- mixpeek/models/bucketcreaterequest.py +75 -0
- mixpeek/models/bucketresponse.py +90 -0
- mixpeek/models/bucketschema_input.py +37 -0
- mixpeek/models/bucketschema_output.py +37 -0
- mixpeek/models/{featureresponse.py → bucketschemafield_input.py} +45 -18
- mixpeek/models/bucketschemafield_output.py +101 -0
- mixpeek/models/bucketschemafieldtype.py +29 -0
- mixpeek/models/bucketupdaterequest.py +68 -0
- mixpeek/models/cachestats.py +40 -0
- mixpeek/models/{list_collections_v1_collections_getop.py → cleanup_cache_v1_collections_cache_cleanup_postop.py} +23 -12
- mixpeek/models/{inputtype.py → clusteringmethod.py} +3 -5
- mixpeek/models/clustertype.py +9 -0
- mixpeek/models/collectioncacheconfig_input.py +92 -0
- mixpeek/models/collectioncacheconfig_output.py +92 -0
- mixpeek/models/collectionconfig.py +32 -0
- mixpeek/models/collectionmodel.py +79 -8
- mixpeek/models/{create_taxonomy_v1_entities_taxonomies_postop.py → create_bucket_v1_buckets_create_postop.py} +7 -7
- mixpeek/models/{search_assets_v1_assets_search_postop.py → create_cluster_v1_clusters_postop.py} +7 -7
- mixpeek/models/{create_collection_v1_collections_postop.py → create_collection_v1_collections_create_postop.py} +3 -3
- mixpeek/models/{ingest_video_url_v1_ingest_videos_url_postop.py → create_interaction_v1_retrievers_interactions_postop.py} +7 -7
- mixpeek/models/{partial_asset_update_v1_assets_asset_id_patchop.py → create_object_v1_buckets_bucket_identifier_objects_create_postop.py} +11 -9
- mixpeek/models/{ingest_text_v1_ingest_text_postop.py → create_retriever_v1_retrievers_retrievers_postop.py} +10 -7
- mixpeek/models/{ingest_image_url_v1_ingest_images_url_postop.py → create_taxonomy_v1_taxonomies_postop.py} +7 -7
- mixpeek/models/createblobrequest.py +80 -0
- mixpeek/models/createclusterrequest.py +74 -0
- mixpeek/models/createcollectionrequest.py +72 -3
- mixpeek/models/createnamespacerequest.py +14 -8
- mixpeek/models/createobjectrequest.py +75 -0
- mixpeek/models/createretrieverrequest.py +90 -0
- mixpeek/models/{taxonomyupdate.py → createtaxonomyrequest.py} +15 -13
- mixpeek/models/{delete_asset_v1_assets_asset_id_deleteop.py → delete_bucket_v1_buckets_bucket_identifier_deleteop.py} +5 -5
- 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
- mixpeek/models/{get_taxonomy_v1_entities_taxonomies_taxonomy_getop.py → delete_interaction_v1_retrievers_interactions_interaction_id_deleteop.py} +7 -7
- mixpeek/models/delete_object_v1_buckets_bucket_identifier_objects_object_identifier_deleteop.py +70 -0
- mixpeek/models/{featureextractionembeddingrequest.py → documenthandlingconfig.py} +12 -15
- mixpeek/models/documentinputhandling.py +11 -0
- mixpeek/models/{jsontextoutputsettings.py → documentlistresponse.py} +15 -14
- mixpeek/models/documentoutputhandling.py +10 -0
- mixpeek/models/documentoutputtype.py +11 -0
- mixpeek/models/documentresponse.py +87 -0
- mixpeek/models/{nodeupdate.py → documentupdate.py} +22 -13
- mixpeek/models/enrichmentfield.py +25 -0
- mixpeek/models/errordetail.py +1 -1
- mixpeek/models/{update_node_v1_entities_taxonomies_nodes_node_patchop.py → execute_retriever_v1_retrievers_retrievers_retriever_id_execute_postop.py} +11 -11
- mixpeek/models/featureextractorconfig.py +116 -0
- mixpeek/models/featureextractordefinition.py +192 -0
- mixpeek/models/filtercondition.py +25 -25
- mixpeek/models/filteroperator.py +24 -0
- mixpeek/models/generativemodels.py +10 -0
- mixpeek/models/{delete_feature_v1_features_feature_id_deleteop.py → get_bucket_v1_buckets_bucket_identifier_getop.py} +5 -5
- mixpeek/models/{list_taxonomies_v1_entities_taxonomies_getop.py → get_cache_stats_v1_collections_cache_stats_getop.py} +16 -14
- mixpeek/models/get_collection_v1_collections_collection_id_getop.py +59 -0
- mixpeek/models/get_document_v1_collections_collection_identifier_documents_document_id_getop.py +70 -0
- mixpeek/models/get_feature_extractor_v1_features_extractors_feature_id_getop.py +16 -0
- mixpeek/models/get_interaction_v1_retrievers_interactions_interaction_id_getop.py +57 -0
- mixpeek/models/{delete_collection_v1_collections_collection_deleteop.py → get_object_v1_buckets_bucket_identifier_objects_object_identifier_getop.py} +16 -7
- mixpeek/models/get_research_v1_research_getop.py +52 -0
- mixpeek/models/get_retriever_stages_v1_retrievers_stages_getop.py +52 -0
- mixpeek/models/{delete_taxonomy_v1_entities_taxonomies_taxonomy_deleteop.py → get_retriever_v1_retrievers_retrievers_retriever_id_getop.py} +5 -7
- mixpeek/models/get_task_v1_tasks_task_id_getop.py +1 -1
- mixpeek/models/getusagerequestmodel.py +91 -0
- mixpeek/models/hdbscanparameters.py +26 -0
- mixpeek/models/interactionresponse.py +86 -0
- mixpeek/models/interactiontype.py +22 -0
- mixpeek/models/{search_features_v1_features_search_postop.py → invalidate_cache_v1_collections_cache_invalidate_postop.py} +60 -34
- mixpeek/models/invalidationevent.py +67 -0
- mixpeek/models/invalidationstrategy.py +12 -0
- mixpeek/models/kill_task_v1_tasks_task_id_deleteop.py +1 -1
- mixpeek/models/list_active_tasks_v1_tasks_getop.py +1 -1
- mixpeek/models/{list_assets_v1_assets_postop.py → list_buckets_v1_buckets_postop.py} +18 -18
- mixpeek/models/{list_features_v1_features_postop.py → list_documents_v1_collections_collection_identifier_documents_getop.py} +54 -19
- mixpeek/models/list_interactions_v1_retrievers_interactions_getop.py +96 -0
- mixpeek/models/{list_classifications_v1_entities_taxonomies_taxonomy_classifications_postop.py → list_objects_v1_buckets_bucket_identifier_objects_postop.py} +22 -29
- mixpeek/models/{groupbyoptionsasset.py → listbucketsrequest.py} +19 -28
- mixpeek/models/listbucketsresponse.py +23 -0
- mixpeek/models/{groupbyoptions.py → listobjectsrequest.py} +19 -28
- mixpeek/models/listobjectsresponse.py +25 -0
- mixpeek/models/listtasksresponse.py +3 -6
- mixpeek/models/{logicaloperator.py → logicaloperator_input.py} +42 -24
- mixpeek/models/logicaloperator_output.py +121 -0
- mixpeek/models/multivectorindex.py +25 -0
- mixpeek/models/namespaceresponse.py +1 -1
- mixpeek/models/namespaceusage.py +45 -0
- mixpeek/models/namingmethod.py +8 -0
- mixpeek/models/objectresponse.py +124 -0
- mixpeek/models/{db_model_paginationresponse.py → paginationresponse.py} +3 -3
- mixpeek/models/payloadindexconfig.py +1 -1
- mixpeek/models/plan.py +82 -0
- mixpeek/models/recomputestrategy.py +12 -0
- mixpeek/models/resourcetotals.py +39 -0
- mixpeek/models/{jsonvideooutputsettings.py → retrieverbinding.py} +19 -11
- mixpeek/models/{logodetectsettings.py → retrievercacheconfig.py} +20 -11
- mixpeek/models/retrievermodel.py +95 -0
- mixpeek/models/retrieverqueryrequest.py +114 -0
- mixpeek/models/retrieverresponse.py +24 -0
- mixpeek/models/searchinteraction.py +81 -0
- mixpeek/models/singlelineageentry.py +99 -0
- mixpeek/models/sortdirection.py +11 -0
- mixpeek/models/sortoption.py +20 -12
- mixpeek/models/sourceconfig_input.py +72 -0
- mixpeek/models/sourceconfig_output.py +75 -0
- mixpeek/models/sourcetype.py +11 -0
- mixpeek/models/stageconfig_input.py +111 -0
- mixpeek/models/stageconfig_output.py +114 -0
- mixpeek/models/stagedefinition.py +110 -0
- mixpeek/models/{jsonimageoutputsettings.py → stageresponse.py} +21 -11
- mixpeek/models/taskresponse.py +1 -1
- mixpeek/models/taskstatus.py +1 -0
- mixpeek/models/{assetfeatures.py → taxonomyapplicationconfig.py} +23 -15
- mixpeek/models/taxonomyconfig.py +19 -0
- mixpeek/models/timeseriesdatapoint.py +25 -0
- mixpeek/models/timeseriesusage.py +36 -0
- mixpeek/models/{full_asset_update_v1_assets_asset_id_putop.py → update_bucket_v1_buckets_bucket_identifier_putop.py} +9 -9
- mixpeek/models/{update_taxonomy_v1_entities_taxonomies_taxonomy_patchop.py → update_document_v1_collections_collection_identifier_documents_document_id_putop.py} +25 -13
- mixpeek/models/{full_feature_update_v1_features_feature_id_putop.py → update_object_v1_buckets_bucket_identifier_objects_object_identifier_putop.py} +20 -9
- mixpeek/models/updatenamespacerequest.py +1 -1
- mixpeek/models/updateobjectrequest.py +75 -0
- mixpeek/models/usageresponse.py +86 -0
- mixpeek/models/usagesummary.py +39 -0
- mixpeek/models/usagetimerange.py +16 -0
- mixpeek/models/usermodel_input.py +3 -0
- mixpeek/models/usermodel_output.py +3 -0
- mixpeek/models/vectorbasedconfig.py +60 -0
- mixpeek/models/{collectionresult.py → vectorindex.py} +20 -15
- mixpeek/models/vectorindexdefinition.py +43 -0
- mixpeek/models/vectortype.py +4 -1
- mixpeek/namespaces.py +26 -480
- mixpeek/organization_notifications.py +214 -0
- mixpeek/organizations.py +6 -210
- mixpeek/{featureextractors.py → organizations_usage.py} +31 -39
- mixpeek/research.py +228 -0
- mixpeek/retriever_interactions.py +1036 -0
- mixpeek/retriever_stages.py +232 -0
- mixpeek/{ingestassets.py → retrievers.py} +209 -271
- mixpeek/sdk.py +40 -23
- mixpeek/taxonomies.py +43 -513
- mixpeek/types/basemodel.py +3 -3
- mixpeek/utils/enums.py +67 -27
- {mixpeek-0.20.19.dist-info → mixpeek-0.21.1.dist-info}/METADATA +68 -50
- mixpeek-0.21.1.dist-info/RECORD +216 -0
- {mixpeek-0.20.19.dist-info → mixpeek-0.21.1.dist-info}/WHEEL +1 -1
- mixpeek/models/actionusage.py +0 -16
- mixpeek/models/assetresponse.py +0 -166
- mixpeek/models/assets_model_searchquery.py +0 -21
- mixpeek/models/assetupdate.py +0 -28
- mixpeek/models/assignmentconfig.py +0 -67
- mixpeek/models/assignmentmode.py +0 -11
- mixpeek/models/availablemodels.py +0 -16
- mixpeek/models/availablemodelsresponse.py +0 -27
- mixpeek/models/classificationmatch.py +0 -77
- mixpeek/models/classificationwithfeature.py +0 -73
- mixpeek/models/collectiondetailsresponse.py +0 -83
- mixpeek/models/dateusage.py +0 -22
- mixpeek/models/denseembedding.py +0 -16
- mixpeek/models/discoverrequest.py +0 -64
- mixpeek/models/embeddingconfig.py +0 -33
- mixpeek/models/embeddingrequest.py +0 -92
- mixpeek/models/embeddingresponse.py +0 -64
- mixpeek/models/entitysettings.py +0 -50
- mixpeek/models/featureoptions.py +0 -25
- mixpeek/models/features_model_paginationresponse.py +0 -59
- mixpeek/models/featureupdaterequest.py +0 -21
- mixpeek/models/get_asset_v1_assets_asset_id_getop.py +0 -73
- mixpeek/models/get_asset_with_features_v1_assets_asset_id_features_getop.py +0 -73
- mixpeek/models/get_collection_details_v1_collections_collection_details_getop.py +0 -59
- mixpeek/models/get_collection_details_v1_collections_collection_getop.py +0 -59
- mixpeek/models/get_feature_v1_features_feature_id_getop.py +0 -70
- mixpeek/models/get_taxonomy_node_v1_entities_taxonomies_nodes_node_getop.py +0 -59
- mixpeek/models/groupedassetdata.py +0 -18
- mixpeek/models/imagedescribesettings.py +0 -82
- mixpeek/models/imagedetectsettings.py +0 -47
- mixpeek/models/imagereadsettings.py +0 -71
- mixpeek/models/imagesettings.py +0 -92
- mixpeek/models/listassetsrequest.py +0 -75
- mixpeek/models/listassetsresponse.py +0 -22
- mixpeek/models/listclassificationsrequest.py +0 -69
- mixpeek/models/listclassificationsresponse.py +0 -31
- mixpeek/models/listcollectionsresponse.py +0 -22
- mixpeek/models/listfeaturesrequest.py +0 -77
- mixpeek/models/listfeaturesresponse.py +0 -22
- mixpeek/models/listtaxonomiesresponse.py +0 -24
- mixpeek/models/modality.py +0 -13
- mixpeek/models/modeldetails.py +0 -61
- mixpeek/models/nodeoptions.py +0 -16
- mixpeek/models/patch_namespace_v1_namespaces_namespace_patchop.py +0 -28
- mixpeek/models/payloadindextype.py +0 -17
- mixpeek/models/processimageurlinput.py +0 -87
- mixpeek/models/processtextinput.py +0 -82
- mixpeek/models/processvideourlinput.py +0 -87
- mixpeek/models/querysettings.py +0 -56
- mixpeek/models/rerankingoptions.py +0 -47
- mixpeek/models/search_model_searchquery.py +0 -76
- mixpeek/models/searchassetsrequest.py +0 -78
- mixpeek/models/searchrequestfeatures.py +0 -153
- mixpeek/models/sparseembedding.py +0 -21
- mixpeek/models/taxonomycreate.py +0 -20
- mixpeek/models/taxonomyextractionconfig.py +0 -26
- mixpeek/models/taxonomymodel.py +0 -27
- mixpeek/models/taxonomynode.py +0 -101
- mixpeek/models/taxonomynodecreate.py +0 -63
- mixpeek/models/textsettings.py +0 -67
- mixpeek/models/updateassetrequest.py +0 -60
- mixpeek/models/usage.py +0 -18
- mixpeek/models/vectormodel.py +0 -15
- mixpeek/models/videodescribesettings.py +0 -82
- mixpeek/models/videodetectsettings.py +0 -47
- mixpeek/models/videoreadsettings.py +0 -71
- mixpeek/models/videosettings.py +0 -115
- mixpeek/models/videotranscriptionsettings.py +0 -69
- mixpeek-0.20.19.dist-info/RECORD +0 -201
mixpeek/models/assetresponse.py
DELETED
@@ -1,166 +0,0 @@
|
|
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 Any
|
8
|
-
from typing_extensions import NotRequired, TypedDict
|
9
|
-
|
10
|
-
|
11
|
-
class FileDataTypedDict(TypedDict):
|
12
|
-
pass
|
13
|
-
|
14
|
-
|
15
|
-
class FileData(BaseModel):
|
16
|
-
pass
|
17
|
-
|
18
|
-
|
19
|
-
class MetadataTypedDict(TypedDict):
|
20
|
-
pass
|
21
|
-
|
22
|
-
|
23
|
-
class Metadata(BaseModel):
|
24
|
-
pass
|
25
|
-
|
26
|
-
|
27
|
-
class AssetResponseTypedDict(TypedDict):
|
28
|
-
asset_id: NotRequired[Nullable[str]]
|
29
|
-
r"""The unique identifier for the asset"""
|
30
|
-
collection_id: NotRequired[Nullable[str]]
|
31
|
-
r"""The ID of the collection the asset belongs to"""
|
32
|
-
status: NotRequired[Nullable[str]]
|
33
|
-
r"""The current status of the asset processing"""
|
34
|
-
file_data: NotRequired[Nullable[FileDataTypedDict]]
|
35
|
-
r"""File data associated with the asset"""
|
36
|
-
metadata: NotRequired[Nullable[MetadataTypedDict]]
|
37
|
-
r"""Additional metadata associated with the asset"""
|
38
|
-
error: NotRequired[Nullable[Any]]
|
39
|
-
r"""The error message if the asset processing failed"""
|
40
|
-
modality: NotRequired[Nullable[str]]
|
41
|
-
r"""The type of media"""
|
42
|
-
task_id: NotRequired[Nullable[str]]
|
43
|
-
r"""The task ID"""
|
44
|
-
file_hash: NotRequired[Nullable[str]]
|
45
|
-
r"""The unique hash of the"""
|
46
|
-
updated_at: NotRequired[Nullable[datetime]]
|
47
|
-
r"""The timestamp when the asset was last updated"""
|
48
|
-
created_at: NotRequired[Nullable[datetime]]
|
49
|
-
r"""The timestamp when the asset was created"""
|
50
|
-
score: NotRequired[Nullable[float]]
|
51
|
-
r"""The relevance score of the asset"""
|
52
|
-
url: NotRequired[Nullable[str]]
|
53
|
-
r"""The presigned URL for accessing the asset"""
|
54
|
-
preview_url: NotRequired[Nullable[str]]
|
55
|
-
r"""The presigned URL for accessing the asset preview"""
|
56
|
-
duplicate_of: NotRequired[Nullable[str]]
|
57
|
-
r"""The asset_id of the asset that this asset is a duplicate of"""
|
58
|
-
|
59
|
-
|
60
|
-
class AssetResponse(BaseModel):
|
61
|
-
asset_id: OptionalNullable[str] = UNSET
|
62
|
-
r"""The unique identifier for the asset"""
|
63
|
-
|
64
|
-
collection_id: OptionalNullable[str] = UNSET
|
65
|
-
r"""The ID of the collection the asset belongs to"""
|
66
|
-
|
67
|
-
status: OptionalNullable[str] = UNSET
|
68
|
-
r"""The current status of the asset processing"""
|
69
|
-
|
70
|
-
file_data: OptionalNullable[FileData] = UNSET
|
71
|
-
r"""File data associated with the asset"""
|
72
|
-
|
73
|
-
metadata: OptionalNullable[Metadata] = UNSET
|
74
|
-
r"""Additional metadata associated with the asset"""
|
75
|
-
|
76
|
-
error: OptionalNullable[Any] = UNSET
|
77
|
-
r"""The error message if the asset processing failed"""
|
78
|
-
|
79
|
-
modality: OptionalNullable[str] = UNSET
|
80
|
-
r"""The type of media"""
|
81
|
-
|
82
|
-
task_id: OptionalNullable[str] = UNSET
|
83
|
-
r"""The task ID"""
|
84
|
-
|
85
|
-
file_hash: OptionalNullable[str] = UNSET
|
86
|
-
r"""The unique hash of the"""
|
87
|
-
|
88
|
-
updated_at: OptionalNullable[datetime] = UNSET
|
89
|
-
r"""The timestamp when the asset was last updated"""
|
90
|
-
|
91
|
-
created_at: OptionalNullable[datetime] = UNSET
|
92
|
-
r"""The timestamp when the asset was created"""
|
93
|
-
|
94
|
-
score: OptionalNullable[float] = UNSET
|
95
|
-
r"""The relevance score of the asset"""
|
96
|
-
|
97
|
-
url: OptionalNullable[str] = UNSET
|
98
|
-
r"""The presigned URL for accessing the asset"""
|
99
|
-
|
100
|
-
preview_url: OptionalNullable[str] = UNSET
|
101
|
-
r"""The presigned URL for accessing the asset preview"""
|
102
|
-
|
103
|
-
duplicate_of: OptionalNullable[str] = UNSET
|
104
|
-
r"""The asset_id of the asset that this asset is a duplicate of"""
|
105
|
-
|
106
|
-
@model_serializer(mode="wrap")
|
107
|
-
def serialize_model(self, handler):
|
108
|
-
optional_fields = [
|
109
|
-
"asset_id",
|
110
|
-
"collection_id",
|
111
|
-
"status",
|
112
|
-
"file_data",
|
113
|
-
"metadata",
|
114
|
-
"error",
|
115
|
-
"modality",
|
116
|
-
"task_id",
|
117
|
-
"file_hash",
|
118
|
-
"updated_at",
|
119
|
-
"created_at",
|
120
|
-
"score",
|
121
|
-
"url",
|
122
|
-
"preview_url",
|
123
|
-
"duplicate_of",
|
124
|
-
]
|
125
|
-
nullable_fields = [
|
126
|
-
"asset_id",
|
127
|
-
"collection_id",
|
128
|
-
"status",
|
129
|
-
"file_data",
|
130
|
-
"metadata",
|
131
|
-
"error",
|
132
|
-
"modality",
|
133
|
-
"task_id",
|
134
|
-
"file_hash",
|
135
|
-
"updated_at",
|
136
|
-
"created_at",
|
137
|
-
"score",
|
138
|
-
"url",
|
139
|
-
"preview_url",
|
140
|
-
"duplicate_of",
|
141
|
-
]
|
142
|
-
null_default_fields = []
|
143
|
-
|
144
|
-
serialized = handler(self)
|
145
|
-
|
146
|
-
m = {}
|
147
|
-
|
148
|
-
for n, f in self.model_fields.items():
|
149
|
-
k = f.alias or n
|
150
|
-
val = serialized.get(k)
|
151
|
-
serialized.pop(k, None)
|
152
|
-
|
153
|
-
optional_nullable = k in optional_fields and k in nullable_fields
|
154
|
-
is_set = (
|
155
|
-
self.__pydantic_fields_set__.intersection({n})
|
156
|
-
or k in null_default_fields
|
157
|
-
) # pylint: disable=no-member
|
158
|
-
|
159
|
-
if val is not None and val != UNSET_SENTINEL:
|
160
|
-
m[k] = val
|
161
|
-
elif val != UNSET_SENTINEL and (
|
162
|
-
not k in optional_fields or (optional_nullable and is_set)
|
163
|
-
):
|
164
|
-
m[k] = val
|
165
|
-
|
166
|
-
return m
|
@@ -1,21 +0,0 @@
|
|
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 List
|
6
|
-
from typing_extensions import TypedDict
|
7
|
-
|
8
|
-
|
9
|
-
class AssetsModelSearchQueryTypedDict(TypedDict):
|
10
|
-
key: List[str]
|
11
|
-
r"""Fields to search in. Can be a list of field names or '*' for all fields"""
|
12
|
-
value: str
|
13
|
-
r"""The search term to look for in the specified fields"""
|
14
|
-
|
15
|
-
|
16
|
-
class AssetsModelSearchQuery(BaseModel):
|
17
|
-
key: List[str]
|
18
|
-
r"""Fields to search in. Can be a list of field names or '*' for all fields"""
|
19
|
-
|
20
|
-
value: str
|
21
|
-
r"""The search term to look for in the specified fields"""
|
mixpeek/models/assetupdate.py
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from enum import Enum
|
5
|
-
from mixpeek.types import BaseModel
|
6
|
-
from typing_extensions import TypedDict
|
7
|
-
|
8
|
-
|
9
|
-
class Mode(str, Enum):
|
10
|
-
r"""Update mode: 'replace' or 'append'"""
|
11
|
-
|
12
|
-
REPLACE = "replace"
|
13
|
-
APPEND = "append"
|
14
|
-
|
15
|
-
|
16
|
-
class AssetUpdateTypedDict(TypedDict):
|
17
|
-
asset_id: str
|
18
|
-
r"""Unique identifier for the asset to be updated"""
|
19
|
-
mode: Mode
|
20
|
-
r"""Update mode: 'replace' or 'append'"""
|
21
|
-
|
22
|
-
|
23
|
-
class AssetUpdate(BaseModel):
|
24
|
-
asset_id: str
|
25
|
-
r"""Unique identifier for the asset to be updated"""
|
26
|
-
|
27
|
-
mode: Mode
|
28
|
-
r"""Update mode: 'replace' or 'append'"""
|
@@ -1,67 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from .assignmentmode import AssignmentMode
|
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 AssignmentConfigTypedDict(TypedDict):
|
12
|
-
r"""Configuration for how classifications should be assigned to features"""
|
13
|
-
|
14
|
-
enabled: NotRequired[bool]
|
15
|
-
r"""Whether to assign the taxonomy to the feature"""
|
16
|
-
mode: NotRequired[AssignmentMode]
|
17
|
-
r"""Mode for how classifications should be assigned"""
|
18
|
-
append: NotRequired[bool]
|
19
|
-
r"""Whether to append the classification to the feature, if false, replaces any existing classification"""
|
20
|
-
confidence_threshold: NotRequired[Nullable[float]]
|
21
|
-
r"""Minimum confidence score required for classification (only used in threshold mode)"""
|
22
|
-
|
23
|
-
|
24
|
-
class AssignmentConfig(BaseModel):
|
25
|
-
r"""Configuration for how classifications should be assigned to features"""
|
26
|
-
|
27
|
-
enabled: Optional[bool] = False
|
28
|
-
r"""Whether to assign the taxonomy to the feature"""
|
29
|
-
|
30
|
-
mode: Optional[AssignmentMode] = None
|
31
|
-
r"""Mode for how classifications should be assigned"""
|
32
|
-
|
33
|
-
append: Optional[bool] = False
|
34
|
-
r"""Whether to append the classification to the feature, if false, replaces any existing classification"""
|
35
|
-
|
36
|
-
confidence_threshold: OptionalNullable[float] = UNSET
|
37
|
-
r"""Minimum confidence score required for classification (only used in threshold mode)"""
|
38
|
-
|
39
|
-
@model_serializer(mode="wrap")
|
40
|
-
def serialize_model(self, handler):
|
41
|
-
optional_fields = ["enabled", "mode", "append", "confidence_threshold"]
|
42
|
-
nullable_fields = ["confidence_threshold"]
|
43
|
-
null_default_fields = []
|
44
|
-
|
45
|
-
serialized = handler(self)
|
46
|
-
|
47
|
-
m = {}
|
48
|
-
|
49
|
-
for n, f in self.model_fields.items():
|
50
|
-
k = f.alias or n
|
51
|
-
val = serialized.get(k)
|
52
|
-
serialized.pop(k, None)
|
53
|
-
|
54
|
-
optional_nullable = k in optional_fields and k in nullable_fields
|
55
|
-
is_set = (
|
56
|
-
self.__pydantic_fields_set__.intersection({n})
|
57
|
-
or k in null_default_fields
|
58
|
-
) # pylint: disable=no-member
|
59
|
-
|
60
|
-
if val is not None and val != UNSET_SENTINEL:
|
61
|
-
m[k] = val
|
62
|
-
elif val != UNSET_SENTINEL and (
|
63
|
-
not k in optional_fields or (optional_nullable and is_set)
|
64
|
-
):
|
65
|
-
m[k] = val
|
66
|
-
|
67
|
-
return m
|
mixpeek/models/assignmentmode.py
DELETED
@@ -1,11 +0,0 @@
|
|
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 AssignmentMode(str, Enum):
|
8
|
-
r"""Mode for how classifications should be assigned"""
|
9
|
-
|
10
|
-
THRESHOLD = "threshold"
|
11
|
-
NEAREST = "nearest"
|
@@ -1,16 +0,0 @@
|
|
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 AvailableModels(str, Enum):
|
8
|
-
IMAGE = "image"
|
9
|
-
MULTIMODAL = "multimodal"
|
10
|
-
TEXT = "text"
|
11
|
-
VIDEO = "video"
|
12
|
-
KEYWORD = "keyword"
|
13
|
-
NAVER_SPLADE_V3 = "naver-splade-v3"
|
14
|
-
VERTEX_MULTIMODAL = "vertex-multimodal"
|
15
|
-
OPENAI_CLIP_VIT_BASE_PATCH32 = "openai-clip-vit-base-patch32"
|
16
|
-
BAAI_BGE_M3 = "baai-bge-m3"
|
@@ -1,27 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from .modeldetails import ModelDetails, ModelDetailsTypedDict
|
5
|
-
from .payloadindextype import PayloadIndexType, PayloadIndexTypeTypedDict
|
6
|
-
from mixpeek.types import BaseModel
|
7
|
-
from typing import Dict, List
|
8
|
-
from typing_extensions import TypedDict
|
9
|
-
|
10
|
-
|
11
|
-
class AvailableModelsResponseTypedDict(TypedDict):
|
12
|
-
r"""Response schema for available models endpoint"""
|
13
|
-
|
14
|
-
embedding_models: Dict[str, ModelDetailsTypedDict]
|
15
|
-
r"""Dictionary mapping model names to their detailed specifications"""
|
16
|
-
payload_indexes: List[PayloadIndexTypeTypedDict]
|
17
|
-
r"""List of available payload index types that can be used for filtering"""
|
18
|
-
|
19
|
-
|
20
|
-
class AvailableModelsResponse(BaseModel):
|
21
|
-
r"""Response schema for available models endpoint"""
|
22
|
-
|
23
|
-
embedding_models: Dict[str, ModelDetails]
|
24
|
-
r"""Dictionary mapping model names to their detailed specifications"""
|
25
|
-
|
26
|
-
payload_indexes: List[PayloadIndexType]
|
27
|
-
r"""List of available payload index types that can be used for filtering"""
|
@@ -1,77 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from .taxonomynode import TaxonomyNode, TaxonomyNodeTypedDict
|
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 ClassificationMatchTypedDict(TypedDict):
|
12
|
-
r"""Individual node match with score"""
|
13
|
-
|
14
|
-
taxonomy_id: str
|
15
|
-
r"""ID of the matched taxonomy"""
|
16
|
-
node_id: str
|
17
|
-
r"""ID of the matched taxonomy node"""
|
18
|
-
score: float
|
19
|
-
r"""Confidence score of the match"""
|
20
|
-
depth: int
|
21
|
-
r"""Depth of the node in the taxonomy"""
|
22
|
-
order: List[int]
|
23
|
-
r"""Order of the node in the taxonomy"""
|
24
|
-
node: NotRequired[Nullable[TaxonomyNodeTypedDict]]
|
25
|
-
r"""Full node object if requested"""
|
26
|
-
|
27
|
-
|
28
|
-
class ClassificationMatch(BaseModel):
|
29
|
-
r"""Individual node match with score"""
|
30
|
-
|
31
|
-
taxonomy_id: str
|
32
|
-
r"""ID of the matched taxonomy"""
|
33
|
-
|
34
|
-
node_id: str
|
35
|
-
r"""ID of the matched taxonomy node"""
|
36
|
-
|
37
|
-
score: float
|
38
|
-
r"""Confidence score of the match"""
|
39
|
-
|
40
|
-
depth: int
|
41
|
-
r"""Depth of the node in the taxonomy"""
|
42
|
-
|
43
|
-
order: List[int]
|
44
|
-
r"""Order of the node in the taxonomy"""
|
45
|
-
|
46
|
-
node: OptionalNullable[TaxonomyNode] = UNSET
|
47
|
-
r"""Full node object if requested"""
|
48
|
-
|
49
|
-
@model_serializer(mode="wrap")
|
50
|
-
def serialize_model(self, handler):
|
51
|
-
optional_fields = ["node"]
|
52
|
-
nullable_fields = ["node"]
|
53
|
-
null_default_fields = []
|
54
|
-
|
55
|
-
serialized = handler(self)
|
56
|
-
|
57
|
-
m = {}
|
58
|
-
|
59
|
-
for n, f in self.model_fields.items():
|
60
|
-
k = f.alias or n
|
61
|
-
val = serialized.get(k)
|
62
|
-
serialized.pop(k, None)
|
63
|
-
|
64
|
-
optional_nullable = k in optional_fields and k in nullable_fields
|
65
|
-
is_set = (
|
66
|
-
self.__pydantic_fields_set__.intersection({n})
|
67
|
-
or k in null_default_fields
|
68
|
-
) # pylint: disable=no-member
|
69
|
-
|
70
|
-
if val is not None and val != UNSET_SENTINEL:
|
71
|
-
m[k] = val
|
72
|
-
elif val != UNSET_SENTINEL and (
|
73
|
-
not k in optional_fields or (optional_nullable and is_set)
|
74
|
-
):
|
75
|
-
m[k] = val
|
76
|
-
|
77
|
-
return m
|
@@ -1,73 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from .classificationmatch import ClassificationMatch, ClassificationMatchTypedDict
|
5
|
-
from .featureresponse import FeatureResponse, FeatureResponseTypedDict
|
6
|
-
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
7
|
-
from pydantic import model_serializer
|
8
|
-
from typing import List
|
9
|
-
from typing_extensions import NotRequired, TypedDict
|
10
|
-
|
11
|
-
|
12
|
-
class ClassificationWithFeatureTypedDict(TypedDict):
|
13
|
-
r"""Classification entry with optional full feature and node data"""
|
14
|
-
|
15
|
-
feature_id: str
|
16
|
-
r"""ID of the classified feature"""
|
17
|
-
classification_id: str
|
18
|
-
r"""ID of the classification run"""
|
19
|
-
taxonomy_id: str
|
20
|
-
r"""ID of the taxonomy used"""
|
21
|
-
matches: List[ClassificationMatchTypedDict]
|
22
|
-
r"""List of node matches with scores"""
|
23
|
-
feature: NotRequired[Nullable[FeatureResponseTypedDict]]
|
24
|
-
r"""Full feature object if requested"""
|
25
|
-
|
26
|
-
|
27
|
-
class ClassificationWithFeature(BaseModel):
|
28
|
-
r"""Classification entry with optional full feature and node data"""
|
29
|
-
|
30
|
-
feature_id: str
|
31
|
-
r"""ID of the classified feature"""
|
32
|
-
|
33
|
-
classification_id: str
|
34
|
-
r"""ID of the classification run"""
|
35
|
-
|
36
|
-
taxonomy_id: str
|
37
|
-
r"""ID of the taxonomy used"""
|
38
|
-
|
39
|
-
matches: List[ClassificationMatch]
|
40
|
-
r"""List of node matches with scores"""
|
41
|
-
|
42
|
-
feature: OptionalNullable[FeatureResponse] = UNSET
|
43
|
-
r"""Full feature object if requested"""
|
44
|
-
|
45
|
-
@model_serializer(mode="wrap")
|
46
|
-
def serialize_model(self, handler):
|
47
|
-
optional_fields = ["feature"]
|
48
|
-
nullable_fields = ["feature"]
|
49
|
-
null_default_fields = []
|
50
|
-
|
51
|
-
serialized = handler(self)
|
52
|
-
|
53
|
-
m = {}
|
54
|
-
|
55
|
-
for n, f in self.model_fields.items():
|
56
|
-
k = f.alias or n
|
57
|
-
val = serialized.get(k)
|
58
|
-
serialized.pop(k, None)
|
59
|
-
|
60
|
-
optional_nullable = k in optional_fields and k in nullable_fields
|
61
|
-
is_set = (
|
62
|
-
self.__pydantic_fields_set__.intersection({n})
|
63
|
-
or k in null_default_fields
|
64
|
-
) # pylint: disable=no-member
|
65
|
-
|
66
|
-
if val is not None and val != UNSET_SENTINEL:
|
67
|
-
m[k] = val
|
68
|
-
elif val != UNSET_SENTINEL and (
|
69
|
-
not k in optional_fields or (optional_nullable and is_set)
|
70
|
-
):
|
71
|
-
m[k] = val
|
72
|
-
|
73
|
-
return m
|
@@ -1,83 +0,0 @@
|
|
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_extensions import NotRequired, TypedDict
|
8
|
-
|
9
|
-
|
10
|
-
class CollectionDetailsResponseMetadataTypedDict(TypedDict):
|
11
|
-
pass
|
12
|
-
|
13
|
-
|
14
|
-
class CollectionDetailsResponseMetadata(BaseModel):
|
15
|
-
pass
|
16
|
-
|
17
|
-
|
18
|
-
class CollectionDetailsResponseTypedDict(TypedDict):
|
19
|
-
collection_id: str
|
20
|
-
collection_name: str
|
21
|
-
count: NotRequired[Nullable[int]]
|
22
|
-
last_updated: NotRequired[Nullable[datetime]]
|
23
|
-
preview_url: NotRequired[Nullable[str]]
|
24
|
-
metadata: NotRequired[Nullable[CollectionDetailsResponseMetadataTypedDict]]
|
25
|
-
unique_hashes: NotRequired[Nullable[int]]
|
26
|
-
|
27
|
-
|
28
|
-
class CollectionDetailsResponse(BaseModel):
|
29
|
-
collection_id: str
|
30
|
-
|
31
|
-
collection_name: str
|
32
|
-
|
33
|
-
count: OptionalNullable[int] = UNSET
|
34
|
-
|
35
|
-
last_updated: OptionalNullable[datetime] = UNSET
|
36
|
-
|
37
|
-
preview_url: OptionalNullable[str] = UNSET
|
38
|
-
|
39
|
-
metadata: OptionalNullable[CollectionDetailsResponseMetadata] = UNSET
|
40
|
-
|
41
|
-
unique_hashes: OptionalNullable[int] = UNSET
|
42
|
-
|
43
|
-
@model_serializer(mode="wrap")
|
44
|
-
def serialize_model(self, handler):
|
45
|
-
optional_fields = [
|
46
|
-
"count",
|
47
|
-
"last_updated",
|
48
|
-
"preview_url",
|
49
|
-
"metadata",
|
50
|
-
"unique_hashes",
|
51
|
-
]
|
52
|
-
nullable_fields = [
|
53
|
-
"count",
|
54
|
-
"last_updated",
|
55
|
-
"preview_url",
|
56
|
-
"metadata",
|
57
|
-
"unique_hashes",
|
58
|
-
]
|
59
|
-
null_default_fields = []
|
60
|
-
|
61
|
-
serialized = handler(self)
|
62
|
-
|
63
|
-
m = {}
|
64
|
-
|
65
|
-
for n, f in self.model_fields.items():
|
66
|
-
k = f.alias or n
|
67
|
-
val = serialized.get(k)
|
68
|
-
serialized.pop(k, None)
|
69
|
-
|
70
|
-
optional_nullable = k in optional_fields and k in nullable_fields
|
71
|
-
is_set = (
|
72
|
-
self.__pydantic_fields_set__.intersection({n})
|
73
|
-
or k in null_default_fields
|
74
|
-
) # pylint: disable=no-member
|
75
|
-
|
76
|
-
if val is not None and val != UNSET_SENTINEL:
|
77
|
-
m[k] = val
|
78
|
-
elif val != UNSET_SENTINEL and (
|
79
|
-
not k in optional_fields or (optional_nullable and is_set)
|
80
|
-
):
|
81
|
-
m[k] = val
|
82
|
-
|
83
|
-
return m
|
mixpeek/models/dateusage.py
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from .actionusage import ActionUsage, ActionUsageTypedDict
|
5
|
-
from mixpeek.types import BaseModel
|
6
|
-
import pydantic
|
7
|
-
from typing import List
|
8
|
-
from typing_extensions import Annotated, TypedDict
|
9
|
-
|
10
|
-
|
11
|
-
class DateUsageTypedDict(TypedDict):
|
12
|
-
date_: str
|
13
|
-
credits: int
|
14
|
-
actions: List[ActionUsageTypedDict]
|
15
|
-
|
16
|
-
|
17
|
-
class DateUsage(BaseModel):
|
18
|
-
date_: Annotated[str, pydantic.Field(alias="date")]
|
19
|
-
|
20
|
-
credits: int
|
21
|
-
|
22
|
-
actions: List[ActionUsage]
|
mixpeek/models/denseembedding.py
DELETED
@@ -1,16 +0,0 @@
|
|
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 List
|
6
|
-
from typing_extensions import TypedDict
|
7
|
-
|
8
|
-
|
9
|
-
class DenseEmbeddingTypedDict(TypedDict):
|
10
|
-
vector: List[float]
|
11
|
-
r"""Dense vector representation"""
|
12
|
-
|
13
|
-
|
14
|
-
class DenseEmbedding(BaseModel):
|
15
|
-
vector: List[float]
|
16
|
-
r"""Dense vector representation"""
|
@@ -1,64 +0,0 @@
|
|
1
|
-
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
from .assignmentconfig import AssignmentConfig, AssignmentConfigTypedDict
|
5
|
-
from .logicaloperator import LogicalOperator, LogicalOperatorTypedDict
|
6
|
-
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
7
|
-
from pydantic import model_serializer
|
8
|
-
from typing import List, Optional
|
9
|
-
from typing_extensions import NotRequired, TypedDict
|
10
|
-
|
11
|
-
|
12
|
-
class DiscoverRequestTypedDict(TypedDict):
|
13
|
-
collections: List[str]
|
14
|
-
r"""List of collection names or ids to search for features"""
|
15
|
-
filters: NotRequired[Nullable[LogicalOperatorTypedDict]]
|
16
|
-
r"""Filters to apply to the discovery task"""
|
17
|
-
assignment: NotRequired[AssignmentConfigTypedDict]
|
18
|
-
r"""Configuration for how classifications should be assigned to features"""
|
19
|
-
limit: NotRequired[Nullable[int]]
|
20
|
-
r"""Number of feature samples to process, if None, all features that match the filters are processed"""
|
21
|
-
|
22
|
-
|
23
|
-
class DiscoverRequest(BaseModel):
|
24
|
-
collections: List[str]
|
25
|
-
r"""List of collection names or ids to search for features"""
|
26
|
-
|
27
|
-
filters: OptionalNullable[LogicalOperator] = UNSET
|
28
|
-
r"""Filters to apply to the discovery task"""
|
29
|
-
|
30
|
-
assignment: Optional[AssignmentConfig] = None
|
31
|
-
r"""Configuration for how classifications should be assigned to features"""
|
32
|
-
|
33
|
-
limit: OptionalNullable[int] = UNSET
|
34
|
-
r"""Number of feature samples to process, if None, all features that match the filters are processed"""
|
35
|
-
|
36
|
-
@model_serializer(mode="wrap")
|
37
|
-
def serialize_model(self, handler):
|
38
|
-
optional_fields = ["filters", "assignment", "limit"]
|
39
|
-
nullable_fields = ["filters", "limit"]
|
40
|
-
null_default_fields = []
|
41
|
-
|
42
|
-
serialized = handler(self)
|
43
|
-
|
44
|
-
m = {}
|
45
|
-
|
46
|
-
for n, f in self.model_fields.items():
|
47
|
-
k = f.alias or n
|
48
|
-
val = serialized.get(k)
|
49
|
-
serialized.pop(k, None)
|
50
|
-
|
51
|
-
optional_nullable = k in optional_fields and k in nullable_fields
|
52
|
-
is_set = (
|
53
|
-
self.__pydantic_fields_set__.intersection({n})
|
54
|
-
or k in null_default_fields
|
55
|
-
) # pylint: disable=no-member
|
56
|
-
|
57
|
-
if val is not None and val != UNSET_SENTINEL:
|
58
|
-
m[k] = val
|
59
|
-
elif val != UNSET_SENTINEL and (
|
60
|
-
not k in optional_fields or (optional_nullable and is_set)
|
61
|
-
):
|
62
|
-
m[k] = val
|
63
|
-
|
64
|
-
return m
|