frogml 1.2.40__py3-none-any.whl → 1.2.42__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 (39) hide show
  1. frogml/__init__.py +1 -1
  2. frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2.py +43 -0
  3. frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2.pyi +218 -0
  4. frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2_grpc.py +4 -0
  5. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2.py +53 -0
  6. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2.pyi +258 -0
  7. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2_grpc.py +4 -0
  8. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2.py +58 -0
  9. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2.pyi +224 -0
  10. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2_grpc.py +206 -0
  11. frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2.py +33 -0
  12. frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2.pyi +99 -0
  13. frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2_grpc.py +4 -0
  14. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2.py +31 -0
  15. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2.pyi +99 -0
  16. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2_grpc.py +4 -0
  17. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2.py +30 -0
  18. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2.pyi +55 -0
  19. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2_grpc.py +4 -0
  20. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2.py +42 -0
  21. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2.pyi +204 -0
  22. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2_grpc.py +4 -0
  23. frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2.py +29 -0
  24. frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2.pyi +60 -0
  25. frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2_grpc.py +4 -0
  26. frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2.py +28 -0
  27. frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2.pyi +47 -0
  28. frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2_grpc.py +4 -0
  29. frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2.py +27 -0
  30. frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2.pyi +29 -0
  31. frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2_grpc.py +4 -0
  32. frogml/core/clients/model_deployment_manager/__init__.py +1 -0
  33. frogml/core/clients/model_deployment_manager/client.py +103 -0
  34. {frogml-1.2.40.dist-info → frogml-1.2.42.dist-info}/METADATA +1 -1
  35. {frogml-1.2.40.dist-info → frogml-1.2.42.dist-info}/RECORD +39 -6
  36. frogml_services_mock/mocks/frogml_mocks.py +11 -3
  37. frogml_services_mock/mocks/model_deployment_manager_service_mock.py +255 -0
  38. frogml_services_mock/services_mock.py +18 -2
  39. {frogml-1.2.40.dist-info → frogml-1.2.42.dist-info}/WHEEL +0 -0
@@ -0,0 +1,99 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import typing
10
+
11
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
12
+
13
+ @typing.final
14
+ class ModelArtifactIdentifier(google.protobuf.message.Message):
15
+ """Identifier for the Model Group, Model and image to deploy."""
16
+
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ MODEL_BASED_ARTIFACT_ID_FIELD_NUMBER: builtins.int
20
+ CUSTOM_MODEL_ARTIFACT_ID_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def model_based_artifact_id(self) -> global___ModelBasedArtifactIdentifier:
23
+ """A Model based identifier, which contains the Model Group ID, Model ID and image path."""
24
+
25
+ @property
26
+ def custom_model_artifact_id(self) -> global___CustomModelArtifactIdentifier:
27
+ """A Custom Model based identifier, which contains the Model Group ID, Model ID and Build ID."""
28
+
29
+ def __init__(
30
+ self,
31
+ *,
32
+ model_based_artifact_id: global___ModelBasedArtifactIdentifier | None = ...,
33
+ custom_model_artifact_id: global___CustomModelArtifactIdentifier | None = ...,
34
+ ) -> None: ...
35
+ def HasField(self, field_name: typing.Literal["custom_model_artifact_id", b"custom_model_artifact_id", "identifier_type", b"identifier_type", "model_based_artifact_id", b"model_based_artifact_id"]) -> builtins.bool: ...
36
+ def ClearField(self, field_name: typing.Literal["custom_model_artifact_id", b"custom_model_artifact_id", "identifier_type", b"identifier_type", "model_based_artifact_id", b"model_based_artifact_id"]) -> None: ...
37
+ def WhichOneof(self, oneof_group: typing.Literal["identifier_type", b"identifier_type"]) -> typing.Literal["model_based_artifact_id", "custom_model_artifact_id"] | None: ...
38
+
39
+ global___ModelArtifactIdentifier = ModelArtifactIdentifier
40
+
41
+ @typing.final
42
+ class ModelBasedArtifactIdentifier(google.protobuf.message.Message):
43
+ """An identifier based on Large Language Models"""
44
+
45
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
46
+
47
+ MODEL_GROUP_ID_FIELD_NUMBER: builtins.int
48
+ MODEL_ID_FIELD_NUMBER: builtins.int
49
+ IMAGE_PATH_FIELD_NUMBER: builtins.int
50
+ JFROG_PROJECT_KEY_FIELD_NUMBER: builtins.int
51
+ model_group_id: builtins.str
52
+ """The model group ID, used for permission checking and for organisation e.g. "my-model-group" """
53
+ model_id: builtins.str
54
+ """The model ID, which will be used as a routing key for the model e.g. "credit_risk" """
55
+ image_path: builtins.str
56
+ """The image path to deploy, without the registry, model group and model prefixes."""
57
+ jfrog_project_key: builtins.str
58
+ """The JFrog Project Key where the model image is stored e.g. "my-jfrog-project" """
59
+ def __init__(
60
+ self,
61
+ *,
62
+ model_group_id: builtins.str = ...,
63
+ model_id: builtins.str = ...,
64
+ image_path: builtins.str = ...,
65
+ jfrog_project_key: builtins.str = ...,
66
+ ) -> None: ...
67
+ def ClearField(self, field_name: typing.Literal["image_path", b"image_path", "jfrog_project_key", b"jfrog_project_key", "model_group_id", b"model_group_id", "model_id", b"model_id"]) -> None: ...
68
+
69
+ global___ModelBasedArtifactIdentifier = ModelBasedArtifactIdentifier
70
+
71
+ @typing.final
72
+ class CustomModelArtifactIdentifier(google.protobuf.message.Message):
73
+ """An identifier based on Custom Models"""
74
+
75
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
76
+
77
+ MODEL_GROUP_ID_FIELD_NUMBER: builtins.int
78
+ MODEL_ID_FIELD_NUMBER: builtins.int
79
+ BUILD_ID_FIELD_NUMBER: builtins.int
80
+ JFROG_PROJECT_KEY_FIELD_NUMBER: builtins.int
81
+ model_group_id: builtins.str
82
+ """The model group ID, used for permission checking and for organisation e.g. "my-model-group" """
83
+ model_id: builtins.str
84
+ """The model ID, which will be used as a routing key for the model e.g. "credit_risk" """
85
+ build_id: builtins.str
86
+ """The build ID to deploy."""
87
+ jfrog_project_key: builtins.str
88
+ """The JFrog Project Key where the model image is stored e.g. "my-jfrog-project" """
89
+ def __init__(
90
+ self,
91
+ *,
92
+ model_group_id: builtins.str = ...,
93
+ model_id: builtins.str = ...,
94
+ build_id: builtins.str = ...,
95
+ jfrog_project_key: builtins.str = ...,
96
+ ) -> None: ...
97
+ def ClearField(self, field_name: typing.Literal["build_id", b"build_id", "jfrog_project_key", b"jfrog_project_key", "model_group_id", b"model_group_id", "model_id", b"model_id"]) -> None: ...
98
+
99
+ global___CustomModelArtifactIdentifier = CustomModelArtifactIdentifier
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: com/jfrog/ml/model/deployment/v1/model_deployment_brief.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
16
+ from frogml._proto.com.jfrog.ml.model.deployment.v1 import deployment_pb2 as com_dot_jfrog_dot_ml_dot_model_dot_deployment_dot_v1_dot_deployment__pb2
17
+ from frogml._proto.com.jfrog.ml.model.deployment.v1 import model_artifact_identifier_pb2 as com_dot_jfrog_dot_ml_dot_model_dot_deployment_dot_v1_dot_model__artifact__identifier__pb2
18
+
19
+
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n=com/jfrog/ml/model/deployment/v1/model_deployment_brief.proto\x12 com.jfrog.ml.model.deployment.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x31\x63om/jfrog/ml/model/deployment/v1/deployment.proto\x1a@com/jfrog/ml/model/deployment/v1/model_artifact_identifier.proto\"\x99\x02\n\x14ModelDeploymentBrief\x12G\n\x06status\x18\x01 \x01(\x0b\x32\x37.com.jfrog.ml.model.deployment.v1.ModelDeploymentStatus\x12\x13\n\x0b\x65nvironment\x18\x02 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rdeployment_id\x18\x04 \x01(\t\x12\\\n\x19model_artifact_identifier\x18\x05 \x01(\x0b\x32\x39.com.jfrog.ml.model.deployment.v1.ModelArtifactIdentifierB(\n$com.jfrog.ml.model.deployment.v1.apiP\x01\x62\x06proto3')
21
+
22
+ _globals = globals()
23
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'com.jfrog.ml.model.deployment.v1.model_deployment_brief_pb2', _globals)
25
+ if _descriptor._USE_C_DESCRIPTORS == False:
26
+ _globals['DESCRIPTOR']._options = None
27
+ _globals['DESCRIPTOR']._serialized_options = b'\n$com.jfrog.ml.model.deployment.v1.apiP\001'
28
+ _globals['_MODELDEPLOYMENTBRIEF']._serialized_start=250
29
+ _globals['_MODELDEPLOYMENTBRIEF']._serialized_end=531
30
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,55 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_pb2
8
+ import frogml._proto.com.jfrog.ml.model.deployment.v1.model_artifact_identifier_pb2
9
+ import google.protobuf.descriptor
10
+ import google.protobuf.message
11
+ import google.protobuf.timestamp_pb2
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class ModelDeploymentBrief(google.protobuf.message.Message):
18
+ """Represents a **brief** overview of a model deployment containing only essential information at a glance."""
19
+
20
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
21
+
22
+ STATUS_FIELD_NUMBER: builtins.int
23
+ ENVIRONMENT_FIELD_NUMBER: builtins.int
24
+ CREATED_AT_FIELD_NUMBER: builtins.int
25
+ DEPLOYMENT_ID_FIELD_NUMBER: builtins.int
26
+ MODEL_ARTIFACT_IDENTIFIER_FIELD_NUMBER: builtins.int
27
+ environment: builtins.str
28
+ """The environment where the deployment is located."""
29
+ deployment_id: builtins.str
30
+ """The unique UUID of the deployment."""
31
+ @property
32
+ def status(self) -> frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_pb2.ModelDeploymentStatus:
33
+ """The status of the deployment."""
34
+
35
+ @property
36
+ def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
37
+ """The timestamp of the deployment."""
38
+
39
+ @property
40
+ def model_artifact_identifier(self) -> frogml._proto.com.jfrog.ml.model.deployment.v1.model_artifact_identifier_pb2.ModelArtifactIdentifier:
41
+ """The model artifact identifier associated with this deployment, containing the model group ID, model ID, and either image path or build ID."""
42
+
43
+ def __init__(
44
+ self,
45
+ *,
46
+ status: frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_pb2.ModelDeploymentStatus | None = ...,
47
+ environment: builtins.str = ...,
48
+ created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
49
+ deployment_id: builtins.str = ...,
50
+ model_artifact_identifier: frogml._proto.com.jfrog.ml.model.deployment.v1.model_artifact_identifier_pb2.ModelArtifactIdentifier | None = ...,
51
+ ) -> None: ...
52
+ def HasField(self, field_name: typing.Literal["created_at", b"created_at", "model_artifact_identifier", b"model_artifact_identifier", "status", b"status"]) -> builtins.bool: ...
53
+ def ClearField(self, field_name: typing.Literal["created_at", b"created_at", "deployment_id", b"deployment_id", "environment", b"environment", "model_artifact_identifier", b"model_artifact_identifier", "status", b"status"]) -> None: ...
54
+
55
+ global___ModelDeploymentBrief = ModelDeploymentBrief
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: com/jfrog/ml/model/deployment/v1/model_deployment_filter.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from frogml._proto.com.jfrog.ml.model.deployment.v1 import deployment_pb2 as com_dot_jfrog_dot_ml_dot_model_dot_deployment_dot_v1_dot_deployment__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n>com/jfrog/ml/model/deployment/v1/model_deployment_filter.proto\x12 com.jfrog.ml.model.deployment.v1\x1a\x31\x63om/jfrog/ml/model/deployment/v1/deployment.proto\"\x9b\x01\n\x15ModelDeploymentFilter\x12g\n\x1esimple_model_deployment_filter\x18\x01 \x01(\x0b\x32=.com.jfrog.ml.model.deployment.v1.SimpleModelDeploymentFilterH\x00\x42\x19\n\x17model_deployment_filter\"\xb8\x04\n\x1bSimpleModelDeploymentFilter\x12Z\n\x17model_identifier_filter\x18\x01 \x01(\x0b\x32\x37.com.jfrog.ml.model.deployment.v1.ModelIdentifierFilterH\x00\x12J\n\x0fmodel_group_ids\x18\x02 \x01(\x0b\x32/.com.jfrog.ml.model.deployment.v1.ModelGroupIdsH\x01\x12?\n\tmodel_ids\x18\x03 \x01(\x0b\x32*.com.jfrog.ml.model.deployment.v1.ModelIdsH\x02\x12^\n\x19model_deployment_statuses\x18\x04 \x01(\x0b\x32\x39.com.jfrog.ml.model.deployment.v1.ModelDeploymentStatusesH\x03\x12K\n\x0f\x65nvironment_ids\x18\x05 \x01(\x0b\x32\x30.com.jfrog.ml.model.deployment.v1.EnvironmentIdsH\x04\x42\x1d\n\x1bmodel_identifier_filter_optB\x1b\n\x19model_group_id_filter_optB\x15\n\x13model_id_filter_optB\x13\n\x11status_filter_optB\x1b\n\x19\x65nvironment_id_filter_opt\"w\n\x1bModelDeploymentStatusFilter\x12X\n\x17model_deployment_status\x18\x01 \x03(\x0b\x32\x37.com.jfrog.ml.model.deployment.v1.ModelDeploymentStatus\"A\n\x15ModelIdentifierFilter\x12\x16\n\x0emodel_group_id\x18\x01 \x01(\t\x12\x10\n\x08model_id\x18\x02 \x01(\t\"\'\n\rModelGroupIds\x12\x16\n\x0emodel_group_id\x18\x01 \x03(\t\"\x1c\n\x08ModelIds\x12\x10\n\x08model_id\x18\x01 \x03(\t\"s\n\x17ModelDeploymentStatuses\x12X\n\x17model_deployment_status\x18\x01 \x03(\x0b\x32\x37.com.jfrog.ml.model.deployment.v1.ModelDeploymentStatus\"(\n\x0e\x45nvironmentIds\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x03(\tB(\n$com.jfrog.ml.model.deployment.v1.apiP\x01\x62\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'com.jfrog.ml.model.deployment.v1.model_deployment_filter_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ _globals['DESCRIPTOR']._options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'\n$com.jfrog.ml.model.deployment.v1.apiP\001'
26
+ _globals['_MODELDEPLOYMENTFILTER']._serialized_start=152
27
+ _globals['_MODELDEPLOYMENTFILTER']._serialized_end=307
28
+ _globals['_SIMPLEMODELDEPLOYMENTFILTER']._serialized_start=310
29
+ _globals['_SIMPLEMODELDEPLOYMENTFILTER']._serialized_end=878
30
+ _globals['_MODELDEPLOYMENTSTATUSFILTER']._serialized_start=880
31
+ _globals['_MODELDEPLOYMENTSTATUSFILTER']._serialized_end=999
32
+ _globals['_MODELIDENTIFIERFILTER']._serialized_start=1001
33
+ _globals['_MODELIDENTIFIERFILTER']._serialized_end=1066
34
+ _globals['_MODELGROUPIDS']._serialized_start=1068
35
+ _globals['_MODELGROUPIDS']._serialized_end=1107
36
+ _globals['_MODELIDS']._serialized_start=1109
37
+ _globals['_MODELIDS']._serialized_end=1137
38
+ _globals['_MODELDEPLOYMENTSTATUSES']._serialized_start=1139
39
+ _globals['_MODELDEPLOYMENTSTATUSES']._serialized_end=1254
40
+ _globals['_ENVIRONMENTIDS']._serialized_start=1256
41
+ _globals['_ENVIRONMENTIDS']._serialized_end=1296
42
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,204 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_pb2
9
+ import google.protobuf.descriptor
10
+ import google.protobuf.internal.containers
11
+ import google.protobuf.message
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class ModelDeploymentFilter(google.protobuf.message.Message):
18
+ """A filter to apply on Model Deployment lists. Currently only a simple filter is supported that doesnt allow for
19
+ complex filter expressions. Such a filter may be added here in the future.
20
+ """
21
+
22
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
23
+
24
+ SIMPLE_MODEL_DEPLOYMENT_FILTER_FIELD_NUMBER: builtins.int
25
+ @property
26
+ def simple_model_deployment_filter(self) -> global___SimpleModelDeploymentFilter:
27
+ """A simple filter to apply on Model Deployment lists."""
28
+
29
+ def __init__(
30
+ self,
31
+ *,
32
+ simple_model_deployment_filter: global___SimpleModelDeploymentFilter | None = ...,
33
+ ) -> None: ...
34
+ def HasField(self, field_name: typing.Literal["model_deployment_filter", b"model_deployment_filter", "simple_model_deployment_filter", b"simple_model_deployment_filter"]) -> builtins.bool: ...
35
+ def ClearField(self, field_name: typing.Literal["model_deployment_filter", b"model_deployment_filter", "simple_model_deployment_filter", b"simple_model_deployment_filter"]) -> None: ...
36
+ def WhichOneof(self, oneof_group: typing.Literal["model_deployment_filter", b"model_deployment_filter"]) -> typing.Literal["simple_model_deployment_filter"] | None: ...
37
+
38
+ global___ModelDeploymentFilter = ModelDeploymentFilter
39
+
40
+ @typing.final
41
+ class SimpleModelDeploymentFilter(google.protobuf.message.Message):
42
+ """A filter to apply on Model Deployment lists.
43
+ The relationship between each filter element is an "AND". i.e. all filters must match for a given Deployment to be
44
+ included by the filter.
45
+ """
46
+
47
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
48
+
49
+ MODEL_IDENTIFIER_FILTER_FIELD_NUMBER: builtins.int
50
+ MODEL_GROUP_IDS_FIELD_NUMBER: builtins.int
51
+ MODEL_IDS_FIELD_NUMBER: builtins.int
52
+ MODEL_DEPLOYMENT_STATUSES_FIELD_NUMBER: builtins.int
53
+ ENVIRONMENT_IDS_FIELD_NUMBER: builtins.int
54
+ @property
55
+ def model_identifier_filter(self) -> global___ModelIdentifierFilter: ...
56
+ @property
57
+ def model_group_ids(self) -> global___ModelGroupIds: ...
58
+ @property
59
+ def model_ids(self) -> global___ModelIds: ...
60
+ @property
61
+ def model_deployment_statuses(self) -> global___ModelDeploymentStatuses: ...
62
+ @property
63
+ def environment_ids(self) -> global___EnvironmentIds: ...
64
+ def __init__(
65
+ self,
66
+ *,
67
+ model_identifier_filter: global___ModelIdentifierFilter | None = ...,
68
+ model_group_ids: global___ModelGroupIds | None = ...,
69
+ model_ids: global___ModelIds | None = ...,
70
+ model_deployment_statuses: global___ModelDeploymentStatuses | None = ...,
71
+ environment_ids: global___EnvironmentIds | None = ...,
72
+ ) -> None: ...
73
+ def HasField(self, field_name: typing.Literal["environment_id_filter_opt", b"environment_id_filter_opt", "environment_ids", b"environment_ids", "model_deployment_statuses", b"model_deployment_statuses", "model_group_id_filter_opt", b"model_group_id_filter_opt", "model_group_ids", b"model_group_ids", "model_id_filter_opt", b"model_id_filter_opt", "model_identifier_filter", b"model_identifier_filter", "model_identifier_filter_opt", b"model_identifier_filter_opt", "model_ids", b"model_ids", "status_filter_opt", b"status_filter_opt"]) -> builtins.bool: ...
74
+ def ClearField(self, field_name: typing.Literal["environment_id_filter_opt", b"environment_id_filter_opt", "environment_ids", b"environment_ids", "model_deployment_statuses", b"model_deployment_statuses", "model_group_id_filter_opt", b"model_group_id_filter_opt", "model_group_ids", b"model_group_ids", "model_id_filter_opt", b"model_id_filter_opt", "model_identifier_filter", b"model_identifier_filter", "model_identifier_filter_opt", b"model_identifier_filter_opt", "model_ids", b"model_ids", "status_filter_opt", b"status_filter_opt"]) -> None: ...
75
+ @typing.overload
76
+ def WhichOneof(self, oneof_group: typing.Literal["environment_id_filter_opt", b"environment_id_filter_opt"]) -> typing.Literal["environment_ids"] | None: ...
77
+ @typing.overload
78
+ def WhichOneof(self, oneof_group: typing.Literal["model_group_id_filter_opt", b"model_group_id_filter_opt"]) -> typing.Literal["model_group_ids"] | None: ...
79
+ @typing.overload
80
+ def WhichOneof(self, oneof_group: typing.Literal["model_id_filter_opt", b"model_id_filter_opt"]) -> typing.Literal["model_ids"] | None: ...
81
+ @typing.overload
82
+ def WhichOneof(self, oneof_group: typing.Literal["model_identifier_filter_opt", b"model_identifier_filter_opt"]) -> typing.Literal["model_identifier_filter"] | None: ...
83
+ @typing.overload
84
+ def WhichOneof(self, oneof_group: typing.Literal["status_filter_opt", b"status_filter_opt"]) -> typing.Literal["model_deployment_statuses"] | None: ...
85
+
86
+ global___SimpleModelDeploymentFilter = SimpleModelDeploymentFilter
87
+
88
+ @typing.final
89
+ class ModelDeploymentStatusFilter(google.protobuf.message.Message):
90
+ """A filter that can match a specific Model Deployment status.
91
+ Any deployment whose status matches one of the given statuses will be included (logical OR between statuses).
92
+ """
93
+
94
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
95
+
96
+ MODEL_DEPLOYMENT_STATUS_FIELD_NUMBER: builtins.int
97
+ @property
98
+ def model_deployment_status(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[com.jfrog.ml.model.deployment.v1.deployment_pb2.ModelDeploymentStatus]:
99
+ """The Model Deployment statuses to include in the filter.
100
+ Only Deployments with any of the given statuses will be included.
101
+ """
102
+
103
+ def __init__(
104
+ self,
105
+ *,
106
+ model_deployment_status: collections.abc.Iterable[com.jfrog.ml.model.deployment.v1.deployment_pb2.ModelDeploymentStatus] | None = ...,
107
+ ) -> None: ...
108
+ def ClearField(self, field_name: typing.Literal["model_deployment_status", b"model_deployment_status"]) -> None: ...
109
+
110
+ global___ModelDeploymentStatusFilter = ModelDeploymentStatusFilter
111
+
112
+ @typing.final
113
+ class ModelIdentifierFilter(google.protobuf.message.Message):
114
+ """A filter that can match a specific Model group and Model ID."""
115
+
116
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
117
+
118
+ MODEL_GROUP_ID_FIELD_NUMBER: builtins.int
119
+ MODEL_ID_FIELD_NUMBER: builtins.int
120
+ model_group_id: builtins.str
121
+ """The Model group ID to include in the filter e.g. "my-Model-group" """
122
+ model_id: builtins.str
123
+ """The Model ID to include in the filter by e.g. "credit_risk" """
124
+ def __init__(
125
+ self,
126
+ *,
127
+ model_group_id: builtins.str = ...,
128
+ model_id: builtins.str = ...,
129
+ ) -> None: ...
130
+ def ClearField(self, field_name: typing.Literal["model_group_id", b"model_group_id", "model_id", b"model_id"]) -> None: ...
131
+
132
+ global___ModelIdentifierFilter = ModelIdentifierFilter
133
+
134
+ @typing.final
135
+ class ModelGroupIds(google.protobuf.message.Message):
136
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
137
+
138
+ MODEL_GROUP_ID_FIELD_NUMBER: builtins.int
139
+ @property
140
+ def model_group_id(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
141
+ """List of model group IDs to filter by."""
142
+
143
+ def __init__(
144
+ self,
145
+ *,
146
+ model_group_id: collections.abc.Iterable[builtins.str] | None = ...,
147
+ ) -> None: ...
148
+ def ClearField(self, field_name: typing.Literal["model_group_id", b"model_group_id"]) -> None: ...
149
+
150
+ global___ModelGroupIds = ModelGroupIds
151
+
152
+ @typing.final
153
+ class ModelIds(google.protobuf.message.Message):
154
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
155
+
156
+ MODEL_ID_FIELD_NUMBER: builtins.int
157
+ @property
158
+ def model_id(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
159
+ """List of model IDs to filter by."""
160
+
161
+ def __init__(
162
+ self,
163
+ *,
164
+ model_id: collections.abc.Iterable[builtins.str] | None = ...,
165
+ ) -> None: ...
166
+ def ClearField(self, field_name: typing.Literal["model_id", b"model_id"]) -> None: ...
167
+
168
+ global___ModelIds = ModelIds
169
+
170
+ @typing.final
171
+ class ModelDeploymentStatuses(google.protobuf.message.Message):
172
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
173
+
174
+ MODEL_DEPLOYMENT_STATUS_FIELD_NUMBER: builtins.int
175
+ @property
176
+ def model_deployment_status(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[com.jfrog.ml.model.deployment.v1.deployment_pb2.ModelDeploymentStatus]:
177
+ """List of deployment statuses to filter by."""
178
+
179
+ def __init__(
180
+ self,
181
+ *,
182
+ model_deployment_status: collections.abc.Iterable[com.jfrog.ml.model.deployment.v1.deployment_pb2.ModelDeploymentStatus] | None = ...,
183
+ ) -> None: ...
184
+ def ClearField(self, field_name: typing.Literal["model_deployment_status", b"model_deployment_status"]) -> None: ...
185
+
186
+ global___ModelDeploymentStatuses = ModelDeploymentStatuses
187
+
188
+ @typing.final
189
+ class EnvironmentIds(google.protobuf.message.Message):
190
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
191
+
192
+ ENVIRONMENT_ID_FIELD_NUMBER: builtins.int
193
+ @property
194
+ def environment_id(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
195
+ """List of environment IDs to filter by."""
196
+
197
+ def __init__(
198
+ self,
199
+ *,
200
+ environment_id: collections.abc.Iterable[builtins.str] | None = ...,
201
+ ) -> None: ...
202
+ def ClearField(self, field_name: typing.Literal["environment_id", b"environment_id"]) -> None: ...
203
+
204
+ global___EnvironmentIds = EnvironmentIds
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: com/jfrog/ml/model/deployment/v1/probes_configuration.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n;com/jfrog/ml/model/deployment/v1/probes_configuration.proto\x12 com.jfrog.ml.model.deployment.v1\"\xdf\x01\n\x13ProbesConfiguration\x12M\n\rstartup_probe\x18\x01 \x01(\x0b\x32\x34.com.jfrog.ml.model.deployment.v1.ProbeConfigurationH\x00\x12N\n\x0eliveness_probe\x18\x02 \x01(\x0b\x32\x34.com.jfrog.ml.model.deployment.v1.ProbeConfigurationH\x01\x42\x13\n\x11startup_probe_optB\x14\n\x12liveness_probe_opt\"A\n\x12ProbeConfiguration\x12\x17\n\x0ftimeout_seconds\x18\x01 \x01(\x05\x12\x12\n\nprobe_path\x18\x02 \x01(\tB(\n$com.jfrog.ml.model.deployment.v1.apiP\x01\x62\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'com.jfrog.ml.model.deployment.v1.probes_configuration_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ _globals['DESCRIPTOR']._options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'\n$com.jfrog.ml.model.deployment.v1.apiP\001'
25
+ _globals['_PROBESCONFIGURATION']._serialized_start=98
26
+ _globals['_PROBESCONFIGURATION']._serialized_end=321
27
+ _globals['_PROBECONFIGURATION']._serialized_start=323
28
+ _globals['_PROBECONFIGURATION']._serialized_end=388
29
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,60 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import typing
10
+
11
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
12
+
13
+ @typing.final
14
+ class ProbesConfiguration(google.protobuf.message.Message):
15
+ """Configuration of probes for monitoring and (for attempting) to restore health of containers"""
16
+
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ STARTUP_PROBE_FIELD_NUMBER: builtins.int
20
+ LIVENESS_PROBE_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def startup_probe(self) -> global___ProbeConfiguration: ...
23
+ @property
24
+ def liveness_probe(self) -> global___ProbeConfiguration: ...
25
+ def __init__(
26
+ self,
27
+ *,
28
+ startup_probe: global___ProbeConfiguration | None = ...,
29
+ liveness_probe: global___ProbeConfiguration | None = ...,
30
+ ) -> None: ...
31
+ def HasField(self, field_name: typing.Literal["liveness_probe", b"liveness_probe", "liveness_probe_opt", b"liveness_probe_opt", "startup_probe", b"startup_probe", "startup_probe_opt", b"startup_probe_opt"]) -> builtins.bool: ...
32
+ def ClearField(self, field_name: typing.Literal["liveness_probe", b"liveness_probe", "liveness_probe_opt", b"liveness_probe_opt", "startup_probe", b"startup_probe", "startup_probe_opt", b"startup_probe_opt"]) -> None: ...
33
+ @typing.overload
34
+ def WhichOneof(self, oneof_group: typing.Literal["liveness_probe_opt", b"liveness_probe_opt"]) -> typing.Literal["liveness_probe"] | None: ...
35
+ @typing.overload
36
+ def WhichOneof(self, oneof_group: typing.Literal["startup_probe_opt", b"startup_probe_opt"]) -> typing.Literal["startup_probe"] | None: ...
37
+
38
+ global___ProbesConfiguration = ProbesConfiguration
39
+
40
+ @typing.final
41
+ class ProbeConfiguration(google.protobuf.message.Message):
42
+ """Configuration of a specific probe."""
43
+
44
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
45
+
46
+ TIMEOUT_SECONDS_FIELD_NUMBER: builtins.int
47
+ PROBE_PATH_FIELD_NUMBER: builtins.int
48
+ timeout_seconds: builtins.int
49
+ """Timeout in seconds after which a failing probe should trigger a failure."""
50
+ probe_path: builtins.str
51
+ """The probe path, such as /health, to be used as an http endpoint in the container."""
52
+ def __init__(
53
+ self,
54
+ *,
55
+ timeout_seconds: builtins.int = ...,
56
+ probe_path: builtins.str = ...,
57
+ ) -> None: ...
58
+ def ClearField(self, field_name: typing.Literal["probe_path", b"probe_path", "timeout_seconds", b"timeout_seconds"]) -> None: ...
59
+
60
+ global___ProbeConfiguration = ProbeConfiguration
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: com/jfrog/ml/model/deployment/v1/realtime_deployment.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from frogml._proto.com.jfrog.ml.model.deployment.v1 import auto_scaling_pb2 as com_dot_jfrog_dot_ml_dot_model_dot_deployment_dot_v1_dot_auto__scaling__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n:com/jfrog/ml/model/deployment/v1/realtime_deployment.proto\x12 com.jfrog.ml.model.deployment.v1\x1a\x33\x63om/jfrog/ml/model/deployment/v1/auto_scaling.proto\"\xb6\x01\n\x12RealtimeDeployment\x12\x18\n\x10\x65xposed_api_path\x18\x01 \x01(\t\x12\x17\n\rreplica_count\x18\x02 \x01(\x05H\x00\x12R\n\x13\x61uto_scaling_config\x18\x03 \x01(\x0b\x32\x33.com.jfrog.ml.model.deployment.v1.AutoScalingConfigH\x00\x42\x19\n\x17horizontal_scaling_typeB(\n$com.jfrog.ml.model.deployment.v1.apiP\x01\x62\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'com.jfrog.ml.model.deployment.v1.realtime_deployment_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ _globals['DESCRIPTOR']._options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'\n$com.jfrog.ml.model.deployment.v1.apiP\001'
26
+ _globals['_REALTIMEDEPLOYMENT']._serialized_start=150
27
+ _globals['_REALTIMEDEPLOYMENT']._serialized_end=332
28
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,47 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import frogml._proto.com.jfrog.ml.model.deployment.v1.auto_scaling_pb2
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.message
10
+ import typing
11
+
12
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
+
14
+ @typing.final
15
+ class RealtimeDeployment(google.protobuf.message.Message):
16
+ """A Realtime Deployment is exposing the model as a real-time service, which can be used to serve predictions using
17
+ REST requests.
18
+ """
19
+
20
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
21
+
22
+ EXPOSED_API_PATH_FIELD_NUMBER: builtins.int
23
+ REPLICA_COUNT_FIELD_NUMBER: builtins.int
24
+ AUTO_SCALING_CONFIG_FIELD_NUMBER: builtins.int
25
+ exposed_api_path: builtins.str
26
+ """A single specific API endpoint e.g. `/predict` for Custom Models, and `/v1/chat/completions` for vLLM.
27
+ This API endpoint is the only one that will be exposed.
28
+ This May be deprecated when AI Gateway is developed.
29
+ """
30
+ replica_count: builtins.int
31
+ """Fixed number of replicas"""
32
+ @property
33
+ def auto_scaling_config(self) -> frogml._proto.com.jfrog.ml.model.deployment.v1.auto_scaling_pb2.AutoScalingConfig:
34
+ """Automatic horizontal scaling based on the auto scaling configuration."""
35
+
36
+ def __init__(
37
+ self,
38
+ *,
39
+ exposed_api_path: builtins.str = ...,
40
+ replica_count: builtins.int = ...,
41
+ auto_scaling_config: frogml._proto.com.jfrog.ml.model.deployment.v1.auto_scaling_pb2.AutoScalingConfig | None = ...,
42
+ ) -> None: ...
43
+ def HasField(self, field_name: typing.Literal["auto_scaling_config", b"auto_scaling_config", "horizontal_scaling_type", b"horizontal_scaling_type", "replica_count", b"replica_count"]) -> builtins.bool: ...
44
+ def ClearField(self, field_name: typing.Literal["auto_scaling_config", b"auto_scaling_config", "exposed_api_path", b"exposed_api_path", "horizontal_scaling_type", b"horizontal_scaling_type", "replica_count", b"replica_count"]) -> None: ...
45
+ def WhichOneof(self, oneof_group: typing.Literal["horizontal_scaling_type", b"horizontal_scaling_type"]) -> typing.Literal["replica_count", "auto_scaling_config"] | None: ...
46
+
47
+ global___RealtimeDeployment = RealtimeDeployment
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+