mixpeek 0.15.1__py3-none-any.whl → 0.16.0__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 (84) hide show
  1. mixpeek/_hooks/__init__.py +0 -1
  2. mixpeek/_hooks/sdkhooks.py +0 -2
  3. mixpeek/_version.py +1 -1
  4. mixpeek/assets.py +74 -56
  5. mixpeek/collections.py +46 -40
  6. mixpeek/{featureextractors.py → feature_extractors.py} +6 -6
  7. mixpeek/feature_search.py +330 -0
  8. mixpeek/features.py +44 -356
  9. mixpeek/health.py +3 -15
  10. mixpeek/{ingest.py → ingest_assets.py} +43 -25
  11. mixpeek/models/__init__.py +291 -160
  12. mixpeek/models/assignmentconfig.py +25 -0
  13. mixpeek/models/availablemodels.py +2 -1
  14. mixpeek/models/{availableindexesresponse.py → availablemodelsresponse.py} +8 -4
  15. mixpeek/models/classificationmatch.py +72 -0
  16. mixpeek/models/classificationwithfeature.py +73 -0
  17. mixpeek/models/classify_features_v1_entities_taxonomies_taxonomy_classify_postop.py +73 -0
  18. 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
  19. mixpeek/models/{create_collection_collections_postop.py → create_collection_v1_collections_postop.py} +2 -2
  20. mixpeek/models/create_taxonomy_v1_entities_taxonomies_postop.py +59 -0
  21. mixpeek/models/createnamespacerequest.py +2 -2
  22. 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
  23. mixpeek/models/{delete_asset_assets_asset_id_deleteop.py → delete_asset_v1_assets_asset_id_deleteop.py} +2 -2
  24. mixpeek/models/delete_classifications_v1_entities_taxonomies_taxonomy_classifications_classification_id_deleteop.py +70 -0
  25. mixpeek/models/{delete_collection_collections_collection_deleteop.py → delete_collection_v1_collections_collection_deleteop.py} +2 -2
  26. mixpeek/models/{delete_feature_features_feature_id_deleteop.py → delete_feature_v1_features_feature_id_deleteop.py} +2 -2
  27. mixpeek/models/{delete_namespace_namespaces_namespace_deleteop.py → delete_namespace_v1_namespaces_namespace_deleteop.py} +2 -2
  28. mixpeek/models/delete_taxonomy_v1_entities_taxonomies_taxonomy_deleteop.py +59 -0
  29. mixpeek/models/{delete_user_organizations_users_user_email_deleteop.py → delete_user_v1_organizations_users_user_email_deleteop.py} +2 -2
  30. mixpeek/models/discoverrequest.py +74 -0
  31. mixpeek/models/embeddingconfig.py +33 -0
  32. mixpeek/models/embeddingrequest.py +40 -7
  33. mixpeek/models/featureoptions.py +25 -0
  34. mixpeek/models/{full_asset_update_assets_asset_id_putop.py → full_asset_update_v1_assets_asset_id_putop.py} +2 -2
  35. mixpeek/models/{full_feature_update_features_feature_id_putop.py → full_feature_update_v1_features_feature_id_putop.py} +2 -2
  36. mixpeek/models/genericsuccessresponse.py +17 -0
  37. mixpeek/models/{get_asset_assets_asset_id_getop.py → get_asset_v1_assets_asset_id_getop.py} +2 -2
  38. 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
  39. mixpeek/models/{get_collection_collections_collection_getop.py → get_collection_v1_collections_collection_getop.py} +2 -2
  40. mixpeek/models/{get_feature_features_feature_id_getop.py → get_feature_v1_features_feature_id_getop.py} +2 -2
  41. mixpeek/models/{get_namespace_namespaces_namespace_getop.py → get_namespace_v1_namespaces_namespace_getop.py} +2 -2
  42. mixpeek/models/{get_task_tasks_task_id_getop.py → get_task_v1_tasks_task_id_getop.py} +2 -2
  43. mixpeek/models/get_taxonomy_node_v1_entities_taxonomies_nodes_node_getop.py +59 -0
  44. mixpeek/models/get_taxonomy_v1_entities_taxonomies_taxonomy_getop.py +59 -0
  45. mixpeek/models/{get_user_organizations_users_user_email_getop.py → get_user_v1_organizations_users_user_email_getop.py} +2 -2
  46. mixpeek/models/{ingest_image_url_ingest_images_url_postop.py → ingest_image_url_v1_ingest_images_url_postop.py} +2 -2
  47. mixpeek/models/{ingest_text_ingest_text_postop.py → ingest_text_v1_ingest_text_postop.py} +2 -2
  48. mixpeek/models/{ingest_video_url_ingest_videos_url_postop.py → ingest_video_url_v1_ingest_videos_url_postop.py} +2 -2
  49. mixpeek/models/{kill_task_tasks_task_id_deleteop.py → kill_task_v1_tasks_task_id_deleteop.py} +2 -2
  50. mixpeek/models/{list_assets_assets_postop.py → list_assets_v1_assets_postop.py} +2 -2
  51. mixpeek/models/list_classifications_v1_entities_taxonomies_taxonomy_classifications_postop.py +92 -0
  52. mixpeek/models/{list_collections_collections_getop.py → list_collections_v1_collections_getop.py} +2 -2
  53. mixpeek/models/{list_features_features_postop.py → list_features_v1_features_postop.py} +2 -2
  54. mixpeek/models/list_taxonomies_v1_entities_taxonomies_getop.py +67 -0
  55. mixpeek/models/listclassificationsrequest.py +69 -0
  56. mixpeek/models/listclassificationsresponse.py +31 -0
  57. mixpeek/models/listtaxonomiesresponse.py +24 -0
  58. mixpeek/models/modeldetails.py +9 -5
  59. mixpeek/models/nodeoptions.py +16 -0
  60. mixpeek/models/nodeupdate.py +51 -0
  61. mixpeek/models/{partial_asset_update_assets_asset_id_patchop.py → partial_asset_update_v1_assets_asset_id_patchop.py} +2 -2
  62. mixpeek/models/permission.py +12 -0
  63. mixpeek/models/{search_assets_assets_search_postop.py → search_assets_v1_assets_search_postop.py} +2 -2
  64. mixpeek/models/{search_features_features_search_postop.py → search_features_v1_features_search_postop.py} +4 -4
  65. mixpeek/models/taxonomycreate.py +20 -0
  66. mixpeek/models/taxonomymodel.py +27 -0
  67. mixpeek/models/taxonomynode.py +101 -0
  68. mixpeek/models/taxonomynodecreate.py +63 -0
  69. mixpeek/models/taxonomyupdate.py +55 -0
  70. 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
  71. mixpeek/models/{update_collection_collections_collection_putop.py → update_collection_v1_collections_collection_putop.py} +2 -2
  72. mixpeek/models/{update_namespace_namespaces_namespace_putop.py → update_namespace_v1_namespaces_namespace_putop.py} +2 -2
  73. mixpeek/models/update_node_v1_entities_taxonomies_nodes_node_patchop.py +71 -0
  74. mixpeek/models/update_taxonomy_v1_entities_taxonomies_taxonomy_patchop.py +71 -0
  75. mixpeek/models/vectormodel.py +1 -0
  76. mixpeek/namespaces.py +56 -56
  77. mixpeek/organizations.py +82 -58
  78. mixpeek/sdk.py +12 -6
  79. mixpeek/sdkconfiguration.py +4 -4
  80. mixpeek/tasks.py +22 -16
  81. mixpeek/taxonomy_entities.py +2214 -0
  82. {mixpeek-0.15.1.dist-info → mixpeek-0.16.0.dist-info}/METADATA +64 -49
  83. {mixpeek-0.15.1.dist-info → mixpeek-0.16.0.dist-info}/RECORD +84 -55
  84. {mixpeek-0.15.1.dist-info → mixpeek-0.16.0.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 UpdateAPIKeyOrganizationsUsersUserEmailAPIKeysKeyNamePatchRequestTypedDict(
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 UpdateAPIKeyOrganizationsUsersUserEmailAPIKeysKeyNamePatchRequest(BaseModel):
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 UpdateCollectionCollectionsCollectionPutRequestTypedDict(TypedDict):
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 UpdateCollectionCollectionsCollectionPutRequest(BaseModel):
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 UpdateNamespaceNamespacesNamespacePutRequestTypedDict(TypedDict):
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 UpdateNamespaceNamespacesNamespacePutRequest(BaseModel):
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
@@ -13,3 +13,4 @@ class VectorModel(str, Enum):
13
13
  BAAI_BGE_M3 = "baai-bge-m3"
14
14
  KEYWORD = "keyword"
15
15
  NAVER_SPLADE_V3 = "naver-splade-v3"
16
+ ANSWERAI_MODERN_BERT = "answerai-modern-bert"