mixpeek 0.15.2__py3-none-any.whl → 0.16.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/_hooks/__init__.py +0 -1
- mixpeek/_hooks/sdkhooks.py +0 -2
- mixpeek/_version.py +1 -1
- mixpeek/assets.py +74 -56
- mixpeek/collections.py +46 -40
- mixpeek/{featureextractors.py → feature_extractors.py} +6 -6
- mixpeek/feature_search.py +334 -0
- mixpeek/features.py +44 -356
- mixpeek/health.py +3 -15
- mixpeek/{ingest.py → ingest_assets.py} +43 -25
- mixpeek/models/__init__.py +291 -160
- mixpeek/models/assignmentconfig.py +25 -0
- mixpeek/models/availablemodels.py +2 -1
- mixpeek/models/{availableindexesresponse.py → availablemodelsresponse.py} +8 -4
- mixpeek/models/classificationmatch.py +72 -0
- mixpeek/models/classificationwithfeature.py +73 -0
- mixpeek/models/classify_features_v1_entities_taxonomies_taxonomy_classify_postop.py +73 -0
- mixpeek/models/{create_api_key_organizations_users_user_email_api_keys_postop.py → create_api_key_v1_organizations_users_user_email_api_keys_postop.py} +2 -2
- mixpeek/models/{create_collection_collections_postop.py → create_collection_v1_collections_postop.py} +2 -2
- mixpeek/models/create_taxonomy_v1_entities_taxonomies_postop.py +59 -0
- mixpeek/models/createnamespacerequest.py +2 -2
- mixpeek/models/{delete_api_key_organizations_users_user_email_api_keys_key_name_deleteop.py → delete_api_key_v1_organizations_users_user_email_api_keys_key_name_deleteop.py} +2 -2
- mixpeek/models/{delete_asset_assets_asset_id_deleteop.py → delete_asset_v1_assets_asset_id_deleteop.py} +2 -2
- mixpeek/models/delete_classifications_v1_entities_taxonomies_taxonomy_classifications_classification_id_deleteop.py +70 -0
- mixpeek/models/{delete_collection_collections_collection_deleteop.py → delete_collection_v1_collections_collection_deleteop.py} +2 -2
- mixpeek/models/{delete_feature_features_feature_id_deleteop.py → delete_feature_v1_features_feature_id_deleteop.py} +2 -2
- mixpeek/models/{delete_namespace_namespaces_namespace_deleteop.py → delete_namespace_v1_namespaces_namespace_deleteop.py} +2 -2
- mixpeek/models/delete_taxonomy_v1_entities_taxonomies_taxonomy_deleteop.py +59 -0
- mixpeek/models/{delete_user_organizations_users_user_email_deleteop.py → delete_user_v1_organizations_users_user_email_deleteop.py} +2 -2
- mixpeek/models/discoverrequest.py +74 -0
- mixpeek/models/embeddingconfig.py +33 -0
- mixpeek/models/embeddingrequest.py +40 -7
- mixpeek/models/featureoptions.py +25 -0
- mixpeek/models/{full_asset_update_assets_asset_id_putop.py → full_asset_update_v1_assets_asset_id_putop.py} +2 -2
- mixpeek/models/{full_feature_update_features_feature_id_putop.py → full_feature_update_v1_features_feature_id_putop.py} +2 -2
- mixpeek/models/genericsuccessresponse.py +17 -0
- mixpeek/models/{get_asset_assets_asset_id_getop.py → get_asset_v1_assets_asset_id_getop.py} +2 -2
- mixpeek/models/{get_asset_with_features_assets_asset_id_features_getop.py → get_asset_with_features_v1_assets_asset_id_features_getop.py} +2 -2
- mixpeek/models/{get_collection_collections_collection_getop.py → get_collection_v1_collections_collection_getop.py} +2 -2
- mixpeek/models/{get_feature_features_feature_id_getop.py → get_feature_v1_features_feature_id_getop.py} +2 -2
- mixpeek/models/{get_namespace_namespaces_namespace_getop.py → get_namespace_v1_namespaces_namespace_getop.py} +2 -2
- mixpeek/models/{get_task_tasks_task_id_getop.py → get_task_v1_tasks_task_id_getop.py} +2 -2
- mixpeek/models/get_taxonomy_node_v1_entities_taxonomies_nodes_node_getop.py +59 -0
- mixpeek/models/get_taxonomy_v1_entities_taxonomies_taxonomy_getop.py +59 -0
- mixpeek/models/{get_user_organizations_users_user_email_getop.py → get_user_v1_organizations_users_user_email_getop.py} +2 -2
- mixpeek/models/{ingest_image_url_ingest_images_url_postop.py → ingest_image_url_v1_ingest_images_url_postop.py} +2 -2
- mixpeek/models/{ingest_text_ingest_text_postop.py → ingest_text_v1_ingest_text_postop.py} +2 -2
- mixpeek/models/{ingest_video_url_ingest_videos_url_postop.py → ingest_video_url_v1_ingest_videos_url_postop.py} +2 -2
- mixpeek/models/{kill_task_tasks_task_id_deleteop.py → kill_task_v1_tasks_task_id_deleteop.py} +2 -2
- mixpeek/models/{list_assets_assets_postop.py → list_assets_v1_assets_postop.py} +2 -2
- mixpeek/models/list_classifications_v1_entities_taxonomies_taxonomy_classifications_postop.py +92 -0
- mixpeek/models/{list_collections_collections_getop.py → list_collections_v1_collections_getop.py} +2 -2
- mixpeek/models/{list_features_features_postop.py → list_features_v1_features_postop.py} +2 -2
- mixpeek/models/list_taxonomies_v1_entities_taxonomies_getop.py +67 -0
- mixpeek/models/listclassificationsrequest.py +69 -0
- mixpeek/models/listclassificationsresponse.py +31 -0
- mixpeek/models/listtaxonomiesresponse.py +24 -0
- mixpeek/models/modeldetails.py +9 -5
- mixpeek/models/nodeoptions.py +16 -0
- mixpeek/models/nodeupdate.py +51 -0
- mixpeek/models/{partial_asset_update_assets_asset_id_patchop.py → partial_asset_update_v1_assets_asset_id_patchop.py} +2 -2
- mixpeek/models/permission.py +12 -0
- mixpeek/models/{search_assets_assets_search_postop.py → search_assets_v1_assets_search_postop.py} +2 -2
- mixpeek/models/{search_features_features_search_postop.py → search_features_v1_features_search_postop.py} +4 -4
- mixpeek/models/searchrequestfeatures.py +9 -7
- mixpeek/models/taxonomycreate.py +20 -0
- mixpeek/models/taxonomymodel.py +27 -0
- mixpeek/models/taxonomynode.py +101 -0
- mixpeek/models/taxonomynodecreate.py +63 -0
- mixpeek/models/taxonomyupdate.py +55 -0
- mixpeek/models/{update_api_key_organizations_users_user_email_api_keys_key_name_patchop.py → update_api_key_v1_organizations_users_user_email_api_keys_key_name_patchop.py} +2 -2
- mixpeek/models/{update_collection_collections_collection_putop.py → update_collection_v1_collections_collection_putop.py} +2 -2
- mixpeek/models/{update_namespace_namespaces_namespace_putop.py → update_namespace_v1_namespaces_namespace_putop.py} +2 -2
- mixpeek/models/update_node_v1_entities_taxonomies_nodes_node_patchop.py +71 -0
- mixpeek/models/update_taxonomy_v1_entities_taxonomies_taxonomy_patchop.py +71 -0
- mixpeek/models/vectormodel.py +1 -0
- mixpeek/namespaces.py +52 -52
- mixpeek/organizations.py +82 -58
- mixpeek/sdk.py +12 -6
- mixpeek/sdkconfiguration.py +4 -4
- mixpeek/tasks.py +22 -16
- mixpeek/taxonomy_entities.py +2214 -0
- {mixpeek-0.15.2.dist-info → mixpeek-0.16.1.dist-info}/METADATA +64 -49
- {mixpeek-0.15.2.dist-info → mixpeek-0.16.1.dist-info}/RECORD +85 -56
- {mixpeek-0.15.2.dist-info → mixpeek-0.16.1.dist-info}/WHEEL +1 -1
@@ -0,0 +1,101 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .embeddingconfig import EmbeddingConfig, EmbeddingConfigTypedDict
|
5
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
6
|
+
from pydantic import model_serializer
|
7
|
+
from typing import List, Optional
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
9
|
+
|
10
|
+
|
11
|
+
class TaxonomyNodeTypedDict(TypedDict):
|
12
|
+
taxonomy_id: str
|
13
|
+
r"""ID of the taxonomy this node belongs to"""
|
14
|
+
node_name: str
|
15
|
+
r"""Name of the taxonomy node (must be lowercase without spaces)"""
|
16
|
+
embedding_configs: List[EmbeddingConfigTypedDict]
|
17
|
+
r"""List of embedding configurations defining how this node should be vectorized"""
|
18
|
+
node_id: NotRequired[str]
|
19
|
+
r"""Unique identifier for the taxonomy node"""
|
20
|
+
parent_node_id: NotRequired[Nullable[str]]
|
21
|
+
r"""ID of the parent node (None if root node)"""
|
22
|
+
node_description: NotRequired[Nullable[str]]
|
23
|
+
r"""Optional description of what this node represents"""
|
24
|
+
children: NotRequired[Nullable[List[TaxonomyNodeTypedDict]]]
|
25
|
+
r"""List of child nodes under this node"""
|
26
|
+
path_tokens: NotRequired[List[str]]
|
27
|
+
r"""List of node names representing the path from root to this node"""
|
28
|
+
order: NotRequired[List[int]]
|
29
|
+
r"""Order of the node in the taxonomy"""
|
30
|
+
depth: NotRequired[int]
|
31
|
+
r"""Depth of the node in the taxonomy"""
|
32
|
+
|
33
|
+
|
34
|
+
class TaxonomyNode(BaseModel):
|
35
|
+
taxonomy_id: str
|
36
|
+
r"""ID of the taxonomy this node belongs to"""
|
37
|
+
|
38
|
+
node_name: str
|
39
|
+
r"""Name of the taxonomy node (must be lowercase without spaces)"""
|
40
|
+
|
41
|
+
embedding_configs: List[EmbeddingConfig]
|
42
|
+
r"""List of embedding configurations defining how this node should be vectorized"""
|
43
|
+
|
44
|
+
node_id: Optional[str] = None
|
45
|
+
r"""Unique identifier for the taxonomy node"""
|
46
|
+
|
47
|
+
parent_node_id: OptionalNullable[str] = UNSET
|
48
|
+
r"""ID of the parent node (None if root node)"""
|
49
|
+
|
50
|
+
node_description: OptionalNullable[str] = UNSET
|
51
|
+
r"""Optional description of what this node represents"""
|
52
|
+
|
53
|
+
children: OptionalNullable[List[TaxonomyNode]] = UNSET
|
54
|
+
r"""List of child nodes under this node"""
|
55
|
+
|
56
|
+
path_tokens: Optional[List[str]] = None
|
57
|
+
r"""List of node names representing the path from root to this node"""
|
58
|
+
|
59
|
+
order: Optional[List[int]] = None
|
60
|
+
r"""Order of the node in the taxonomy"""
|
61
|
+
|
62
|
+
depth: Optional[int] = 0
|
63
|
+
r"""Depth of the node in the taxonomy"""
|
64
|
+
|
65
|
+
@model_serializer(mode="wrap")
|
66
|
+
def serialize_model(self, handler):
|
67
|
+
optional_fields = [
|
68
|
+
"node_id",
|
69
|
+
"parent_node_id",
|
70
|
+
"node_description",
|
71
|
+
"children",
|
72
|
+
"path_tokens",
|
73
|
+
"order",
|
74
|
+
"depth",
|
75
|
+
]
|
76
|
+
nullable_fields = ["parent_node_id", "node_description", "children"]
|
77
|
+
null_default_fields = []
|
78
|
+
|
79
|
+
serialized = handler(self)
|
80
|
+
|
81
|
+
m = {}
|
82
|
+
|
83
|
+
for n, f in self.model_fields.items():
|
84
|
+
k = f.alias or n
|
85
|
+
val = serialized.get(k)
|
86
|
+
serialized.pop(k, None)
|
87
|
+
|
88
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
89
|
+
is_set = (
|
90
|
+
self.__pydantic_fields_set__.intersection({n})
|
91
|
+
or k in null_default_fields
|
92
|
+
) # pylint: disable=no-member
|
93
|
+
|
94
|
+
if val is not None and val != UNSET_SENTINEL:
|
95
|
+
m[k] = val
|
96
|
+
elif val != UNSET_SENTINEL and (
|
97
|
+
not k in optional_fields or (optional_nullable and is_set)
|
98
|
+
):
|
99
|
+
m[k] = val
|
100
|
+
|
101
|
+
return m
|
@@ -0,0 +1,63 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .embeddingconfig import EmbeddingConfig, EmbeddingConfigTypedDict
|
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 TaxonomyNodeCreateTypedDict(TypedDict):
|
12
|
+
node_name: str
|
13
|
+
r"""Name of the taxonomy node (must be lowercase without spaces)"""
|
14
|
+
embedding_configs: List[EmbeddingConfigTypedDict]
|
15
|
+
r"""List of embedding configurations defining how this node should be vectorized"""
|
16
|
+
node_description: NotRequired[Nullable[str]]
|
17
|
+
r"""Optional description of what this node represents"""
|
18
|
+
children: NotRequired[Nullable[List[TaxonomyNodeCreateTypedDict]]]
|
19
|
+
r"""List of child nodes under this node"""
|
20
|
+
|
21
|
+
|
22
|
+
class TaxonomyNodeCreate(BaseModel):
|
23
|
+
node_name: str
|
24
|
+
r"""Name of the taxonomy node (must be lowercase without spaces)"""
|
25
|
+
|
26
|
+
embedding_configs: List[EmbeddingConfig]
|
27
|
+
r"""List of embedding configurations defining how this node should be vectorized"""
|
28
|
+
|
29
|
+
node_description: OptionalNullable[str] = UNSET
|
30
|
+
r"""Optional description of what this node represents"""
|
31
|
+
|
32
|
+
children: OptionalNullable[List[TaxonomyNodeCreate]] = UNSET
|
33
|
+
r"""List of child nodes under this node"""
|
34
|
+
|
35
|
+
@model_serializer(mode="wrap")
|
36
|
+
def serialize_model(self, handler):
|
37
|
+
optional_fields = ["node_description", "children"]
|
38
|
+
nullable_fields = ["node_description", "children"]
|
39
|
+
null_default_fields = []
|
40
|
+
|
41
|
+
serialized = handler(self)
|
42
|
+
|
43
|
+
m = {}
|
44
|
+
|
45
|
+
for n, f in self.model_fields.items():
|
46
|
+
k = f.alias or n
|
47
|
+
val = serialized.get(k)
|
48
|
+
serialized.pop(k, None)
|
49
|
+
|
50
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
51
|
+
is_set = (
|
52
|
+
self.__pydantic_fields_set__.intersection({n})
|
53
|
+
or k in null_default_fields
|
54
|
+
) # pylint: disable=no-member
|
55
|
+
|
56
|
+
if val is not None and val != UNSET_SENTINEL:
|
57
|
+
m[k] = val
|
58
|
+
elif val != UNSET_SENTINEL and (
|
59
|
+
not k in optional_fields or (optional_nullable and is_set)
|
60
|
+
):
|
61
|
+
m[k] = val
|
62
|
+
|
63
|
+
return m
|
@@ -0,0 +1,55 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
5
|
+
from pydantic import model_serializer
|
6
|
+
from typing_extensions import NotRequired, TypedDict
|
7
|
+
|
8
|
+
|
9
|
+
class TaxonomyUpdateTypedDict(TypedDict):
|
10
|
+
r"""Model for updating specific taxonomy fields"""
|
11
|
+
|
12
|
+
taxonomy_name: NotRequired[Nullable[str]]
|
13
|
+
r"""Updated taxonomy name (must not contain spaces or special characters)"""
|
14
|
+
description: NotRequired[Nullable[str]]
|
15
|
+
r"""Updated taxonomy description"""
|
16
|
+
|
17
|
+
|
18
|
+
class TaxonomyUpdate(BaseModel):
|
19
|
+
r"""Model for updating specific taxonomy fields"""
|
20
|
+
|
21
|
+
taxonomy_name: OptionalNullable[str] = UNSET
|
22
|
+
r"""Updated taxonomy name (must not contain spaces or special characters)"""
|
23
|
+
|
24
|
+
description: OptionalNullable[str] = UNSET
|
25
|
+
r"""Updated taxonomy description"""
|
26
|
+
|
27
|
+
@model_serializer(mode="wrap")
|
28
|
+
def serialize_model(self, handler):
|
29
|
+
optional_fields = ["taxonomy_name", "description"]
|
30
|
+
nullable_fields = ["taxonomy_name", "description"]
|
31
|
+
null_default_fields = []
|
32
|
+
|
33
|
+
serialized = handler(self)
|
34
|
+
|
35
|
+
m = {}
|
36
|
+
|
37
|
+
for n, f in self.model_fields.items():
|
38
|
+
k = f.alias or n
|
39
|
+
val = serialized.get(k)
|
40
|
+
serialized.pop(k, None)
|
41
|
+
|
42
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
43
|
+
is_set = (
|
44
|
+
self.__pydantic_fields_set__.intersection({n})
|
45
|
+
or k in null_default_fields
|
46
|
+
) # pylint: disable=no-member
|
47
|
+
|
48
|
+
if val is not None and val != UNSET_SENTINEL:
|
49
|
+
m[k] = val
|
50
|
+
elif val != UNSET_SENTINEL and (
|
51
|
+
not k in optional_fields or (optional_nullable and is_set)
|
52
|
+
):
|
53
|
+
m[k] = val
|
54
|
+
|
55
|
+
return m
|
@@ -7,7 +7,7 @@ from mixpeek.utils import FieldMetadata, PathParamMetadata, RequestMetadata
|
|
7
7
|
from typing_extensions import Annotated, TypedDict
|
8
8
|
|
9
9
|
|
10
|
-
class
|
10
|
+
class UpdateAPIKeyV1OrganizationsUsersUserEmailAPIKeysKeyNamePatchRequestTypedDict(
|
11
11
|
TypedDict
|
12
12
|
):
|
13
13
|
user_email: str
|
@@ -15,7 +15,7 @@ class UpdateAPIKeyOrganizationsUsersUserEmailAPIKeysKeyNamePatchRequestTypedDict
|
|
15
15
|
api_key_update: APIKeyUpdateTypedDict
|
16
16
|
|
17
17
|
|
18
|
-
class
|
18
|
+
class UpdateAPIKeyV1OrganizationsUsersUserEmailAPIKeysKeyNamePatchRequest(BaseModel):
|
19
19
|
user_email: Annotated[
|
20
20
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
21
21
|
]
|
@@ -17,7 +17,7 @@ from pydantic import model_serializer
|
|
17
17
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
18
18
|
|
19
19
|
|
20
|
-
class
|
20
|
+
class UpdateCollectionV1CollectionsCollectionPutRequestTypedDict(TypedDict):
|
21
21
|
collection: str
|
22
22
|
r"""Either the collection name or collection ID"""
|
23
23
|
create_collection_request: CreateCollectionRequestTypedDict
|
@@ -25,7 +25,7 @@ class UpdateCollectionCollectionsCollectionPutRequestTypedDict(TypedDict):
|
|
25
25
|
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."""
|
26
26
|
|
27
27
|
|
28
|
-
class
|
28
|
+
class UpdateCollectionV1CollectionsCollectionPutRequest(BaseModel):
|
29
29
|
collection: Annotated[
|
30
30
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
31
31
|
]
|
@@ -10,13 +10,13 @@ from mixpeek.utils import FieldMetadata, PathParamMetadata, RequestMetadata
|
|
10
10
|
from typing_extensions import Annotated, TypedDict
|
11
11
|
|
12
12
|
|
13
|
-
class
|
13
|
+
class UpdateNamespaceV1NamespacesNamespacePutRequestTypedDict(TypedDict):
|
14
14
|
namespace: str
|
15
15
|
r"""Either the namespace name or namespace ID"""
|
16
16
|
update_namespace_request: UpdateNamespaceRequestTypedDict
|
17
17
|
|
18
18
|
|
19
|
-
class
|
19
|
+
class UpdateNamespaceV1NamespacesNamespacePutRequest(BaseModel):
|
20
20
|
namespace: Annotated[
|
21
21
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
22
22
|
]
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .nodeupdate import NodeUpdate, NodeUpdateTypedDict
|
5
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
6
|
+
from mixpeek.utils import (
|
7
|
+
FieldMetadata,
|
8
|
+
HeaderMetadata,
|
9
|
+
PathParamMetadata,
|
10
|
+
RequestMetadata,
|
11
|
+
)
|
12
|
+
import pydantic
|
13
|
+
from pydantic import model_serializer
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
15
|
+
|
16
|
+
|
17
|
+
class UpdateNodeV1EntitiesTaxonomiesNodesNodePatchRequestTypedDict(TypedDict):
|
18
|
+
node: str
|
19
|
+
r"""The ID or name of the node to update"""
|
20
|
+
node_update: NodeUpdateTypedDict
|
21
|
+
x_namespace: NotRequired[Nullable[str]]
|
22
|
+
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
|
+
|
25
|
+
class UpdateNodeV1EntitiesTaxonomiesNodesNodePatchRequest(BaseModel):
|
26
|
+
node: Annotated[
|
27
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
28
|
+
]
|
29
|
+
r"""The ID or name of the node to update"""
|
30
|
+
|
31
|
+
node_update: Annotated[
|
32
|
+
NodeUpdate,
|
33
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
34
|
+
]
|
35
|
+
|
36
|
+
x_namespace: Annotated[
|
37
|
+
OptionalNullable[str],
|
38
|
+
pydantic.Field(alias="X-Namespace"),
|
39
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
40
|
+
] = UNSET
|
41
|
+
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."""
|
42
|
+
|
43
|
+
@model_serializer(mode="wrap")
|
44
|
+
def serialize_model(self, handler):
|
45
|
+
optional_fields = ["X-Namespace"]
|
46
|
+
nullable_fields = ["X-Namespace"]
|
47
|
+
null_default_fields = []
|
48
|
+
|
49
|
+
serialized = handler(self)
|
50
|
+
|
51
|
+
m = {}
|
52
|
+
|
53
|
+
for n, f in self.model_fields.items():
|
54
|
+
k = f.alias or n
|
55
|
+
val = serialized.get(k)
|
56
|
+
serialized.pop(k, None)
|
57
|
+
|
58
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
59
|
+
is_set = (
|
60
|
+
self.__pydantic_fields_set__.intersection({n})
|
61
|
+
or k in null_default_fields
|
62
|
+
) # pylint: disable=no-member
|
63
|
+
|
64
|
+
if val is not None and val != UNSET_SENTINEL:
|
65
|
+
m[k] = val
|
66
|
+
elif val != UNSET_SENTINEL and (
|
67
|
+
not k in optional_fields or (optional_nullable and is_set)
|
68
|
+
):
|
69
|
+
m[k] = val
|
70
|
+
|
71
|
+
return m
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .taxonomyupdate import TaxonomyUpdate, TaxonomyUpdateTypedDict
|
5
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
6
|
+
from mixpeek.utils import (
|
7
|
+
FieldMetadata,
|
8
|
+
HeaderMetadata,
|
9
|
+
PathParamMetadata,
|
10
|
+
RequestMetadata,
|
11
|
+
)
|
12
|
+
import pydantic
|
13
|
+
from pydantic import model_serializer
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
15
|
+
|
16
|
+
|
17
|
+
class UpdateTaxonomyV1EntitiesTaxonomiesTaxonomyPatchRequestTypedDict(TypedDict):
|
18
|
+
taxonomy: str
|
19
|
+
r"""The ID or name of the taxonomy to update"""
|
20
|
+
taxonomy_update: TaxonomyUpdateTypedDict
|
21
|
+
x_namespace: NotRequired[Nullable[str]]
|
22
|
+
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
|
+
|
25
|
+
class UpdateTaxonomyV1EntitiesTaxonomiesTaxonomyPatchRequest(BaseModel):
|
26
|
+
taxonomy: Annotated[
|
27
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
28
|
+
]
|
29
|
+
r"""The ID or name of the taxonomy to update"""
|
30
|
+
|
31
|
+
taxonomy_update: Annotated[
|
32
|
+
TaxonomyUpdate,
|
33
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
34
|
+
]
|
35
|
+
|
36
|
+
x_namespace: Annotated[
|
37
|
+
OptionalNullable[str],
|
38
|
+
pydantic.Field(alias="X-Namespace"),
|
39
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
40
|
+
] = UNSET
|
41
|
+
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."""
|
42
|
+
|
43
|
+
@model_serializer(mode="wrap")
|
44
|
+
def serialize_model(self, handler):
|
45
|
+
optional_fields = ["X-Namespace"]
|
46
|
+
nullable_fields = ["X-Namespace"]
|
47
|
+
null_default_fields = []
|
48
|
+
|
49
|
+
serialized = handler(self)
|
50
|
+
|
51
|
+
m = {}
|
52
|
+
|
53
|
+
for n, f in self.model_fields.items():
|
54
|
+
k = f.alias or n
|
55
|
+
val = serialized.get(k)
|
56
|
+
serialized.pop(k, None)
|
57
|
+
|
58
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
59
|
+
is_set = (
|
60
|
+
self.__pydantic_fields_set__.intersection({n})
|
61
|
+
or k in null_default_fields
|
62
|
+
) # pylint: disable=no-member
|
63
|
+
|
64
|
+
if val is not None and val != UNSET_SENTINEL:
|
65
|
+
m[k] = val
|
66
|
+
elif val != UNSET_SENTINEL and (
|
67
|
+
not k in optional_fields or (optional_nullable and is_set)
|
68
|
+
):
|
69
|
+
m[k] = val
|
70
|
+
|
71
|
+
return m
|
mixpeek/models/vectormodel.py
CHANGED