diff --git a/docs/api_reference/api_inventory.txt b/docs/api_reference/api_inventory.txt
index 0899539839a54..2941aeb608212 100644
--- a/docs/api_reference/api_inventory.txt
+++ b/docs/api_reference/api_inventory.txt
@@ -40,6 +40,7 @@ mlflow.client.MlflowClient.create_prompt_version
mlflow.client.MlflowClient.create_registered_model
mlflow.client.MlflowClient.create_run
mlflow.client.MlflowClient.create_webhook
+mlflow.client.MlflowClient.create_workspace
mlflow.client.MlflowClient.delete_dataset
mlflow.client.MlflowClient.delete_dataset_tag
mlflow.client.MlflowClient.delete_experiment
@@ -61,6 +62,7 @@ mlflow.client.MlflowClient.delete_tag
mlflow.client.MlflowClient.delete_trace_tag
mlflow.client.MlflowClient.delete_traces
mlflow.client.MlflowClient.delete_webhook
+mlflow.client.MlflowClient.delete_workspace
mlflow.client.MlflowClient.detach_prompt_from_run
mlflow.client.MlflowClient.download_artifacts
mlflow.client.MlflowClient.end_span
@@ -84,6 +86,8 @@ mlflow.client.MlflowClient.get_registered_model
mlflow.client.MlflowClient.get_run
mlflow.client.MlflowClient.get_trace
mlflow.client.MlflowClient.get_webhook
+mlflow.client.MlflowClient.get_workspace
+mlflow.client.MlflowClient.get_workspace_store_uri
mlflow.client.MlflowClient.link_prompt_version_to_model
mlflow.client.MlflowClient.link_prompt_version_to_run
mlflow.client.MlflowClient.link_prompt_versions_to_trace
@@ -92,6 +96,7 @@ mlflow.client.MlflowClient.list_artifacts
mlflow.client.MlflowClient.list_logged_model_artifacts
mlflow.client.MlflowClient.list_logged_prompts
mlflow.client.MlflowClient.list_webhooks
+mlflow.client.MlflowClient.list_workspaces
mlflow.client.MlflowClient.load_prompt
mlflow.client.MlflowClient.load_table
mlflow.client.MlflowClient.log_artifact
@@ -146,6 +151,7 @@ mlflow.client.MlflowClient.update_model_version
mlflow.client.MlflowClient.update_registered_model
mlflow.client.MlflowClient.update_run
mlflow.client.MlflowClient.update_webhook
+mlflow.client.MlflowClient.update_workspace
mlflow.config.disable_system_metrics_logging
mlflow.config.enable_async_logging
mlflow.config.enable_system_metrics_logging
@@ -529,6 +535,10 @@ mlflow.entities.WebhookTestResult
mlflow.entities.WebhookTestResult.from_proto
mlflow.entities.WebhookTestResult.to_proto
mlflow.entities.Workspace
+mlflow.entities.Workspace.from_dict
+mlflow.entities.Workspace.from_proto
+mlflow.entities.Workspace.to_dict
+mlflow.entities.Workspace.to_proto
mlflow.entities.assessment.Assessment
mlflow.entities.assessment.Expectation
mlflow.entities.assessment.Feedback
diff --git a/mlflow/cli/__init__.py b/mlflow/cli/__init__.py
index 500c52f6f2f28..5158bf743aa73 100644
--- a/mlflow/cli/__init__.py
+++ b/mlflow/cli/__init__.py
@@ -20,7 +20,12 @@
from mlflow import ai_commands, projects, version
from mlflow.entities import ViewType
from mlflow.entities.lifecycle_stage import LifecycleStage
-from mlflow.environment_variables import MLFLOW_EXPERIMENT_ID, MLFLOW_EXPERIMENT_NAME
+from mlflow.environment_variables import (
+ MLFLOW_ENABLE_WORKSPACES,
+ MLFLOW_EXPERIMENT_ID,
+ MLFLOW_EXPERIMENT_NAME,
+ MLFLOW_WORKSPACE_STORE_URI,
+)
from mlflow.exceptions import InvalidUrlException, MlflowException
from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
from mlflow.store.artifact.artifact_repository_registry import get_artifact_repository
@@ -458,6 +463,26 @@ def _validate_static_prefix(ctx, param, value):
"Unsupported on Windows."
),
)
+@click.option(
+ "--workspace-store-uri",
+ envvar=MLFLOW_WORKSPACE_STORE_URI.name,
+ metavar="URI",
+ default=None,
+ help=(
+ "Workspace provider backend URI used for workspace CRUD APIs and request routing. "
+ "When unspecified, defaults to the backend store URI. This only needs to be specified "
+ "when using a workspace store plugin leveraging externally managed workspaces (e.g. "
+ + "Kubernetes namespaces)."
+ ),
+)
+@click.option(
+ "--enable-workspaces",
+ envvar=MLFLOW_ENABLE_WORKSPACES.name,
+ is_flag=True,
+ default=False,
+ show_default=True,
+ help="Enable backwards compatible workspace-aware multi-tenancy mode.",
+)
def server(
ctx,
backend_store_uri,
@@ -480,6 +505,8 @@ def server(
app_name,
dev,
uvicorn_opts,
+ workspace_store_uri,
+ enable_workspaces,
):
"""
Run the MLflow tracking server with built-in security middleware.
@@ -525,6 +552,17 @@ def server(
disable_security_middleware=disable_security_middleware,
)
+ if enable_workspaces:
+ os.environ[MLFLOW_ENABLE_WORKSPACES.name] = "true"
+ if workspace_store_uri:
+ os.environ[MLFLOW_WORKSPACE_STORE_URI.name] = workspace_store_uri
+ elif workspace_store_uri:
+ click.echo(
+ "Ignoring --workspace-store-uri because workspaces are not enabled. "
+ "Use --enable-workspaces to activate workspace mode.",
+ err=True,
+ )
+
if disable_security_middleware:
os.environ["MLFLOW_SERVER_DISABLE_SECURITY_MIDDLEWARE"] = "true"
else:
diff --git a/mlflow/entities/workspace.py b/mlflow/entities/workspace.py
index cfd74daf09eaf..9a79a2cb7c21e 100644
--- a/mlflow/entities/workspace.py
+++ b/mlflow/entities/workspace.py
@@ -3,6 +3,9 @@
from __future__ import annotations
from dataclasses import dataclass
+from typing import Any
+
+from mlflow.protos.service_pb2 import Workspace as ProtoWorkspace
@dataclass(frozen=True, slots=True)
@@ -11,3 +14,22 @@ class Workspace:
name: str
description: str | None = None
+
+ def to_dict(self) -> dict[str, str | None]:
+ return {"name": self.name, "description": self.description}
+
+ @classmethod
+ def from_dict(cls, payload: dict[str, Any]) -> "Workspace":
+ return cls(name=payload["name"], description=payload.get("description"))
+
+ def to_proto(self) -> ProtoWorkspace:
+ workspace = ProtoWorkspace()
+ workspace.name = self.name
+ if self.description is not None:
+ workspace.description = self.description
+ return workspace
+
+ @classmethod
+ def from_proto(cls, proto: ProtoWorkspace) -> "Workspace":
+ description = proto.description if proto.HasField("description") else None
+ return cls(name=proto.name, description=description)
diff --git a/mlflow/environment_variables.py b/mlflow/environment_variables.py
index 130de645a07f9..81a9f874fd1c1 100644
--- a/mlflow/environment_variables.py
+++ b/mlflow/environment_variables.py
@@ -106,6 +106,10 @@ def get(self):
#: (default: ``None``)
MLFLOW_REGISTRY_URI = _EnvironmentVariable("MLFLOW_REGISTRY_URI", str, None)
+#: Specifies the workspace provider backend URI.
+#: Defaults to the tracking URI when unset.
+MLFLOW_WORKSPACE_STORE_URI = _EnvironmentVariable("MLFLOW_WORKSPACE_STORE_URI", str, None)
+
#: Specifies the ``dfs_tmpdir`` parameter to use for ``mlflow.spark.save_model``,
#: ``mlflow.spark.log_model`` and ``mlflow.spark.load_model``. See
#: https://www.mlflow.org/docs/latest/python_api/mlflow.spark.html#mlflow.spark.save_model
@@ -435,6 +439,10 @@ def get(self):
"MLFLOW_ENABLE_DBFS_FUSE_ARTIFACT_REPO", True
)
+#: Enables workspace-aware multi-tenancy features on the MLflow server.
+#: (default: ``False``)
+MLFLOW_ENABLE_WORKSPACES = _BooleanEnvironmentVariable("MLFLOW_ENABLE_WORKSPACES", False)
+
#: Specifies whether or not to use UC Volume FUSE mount to store artifacts on Databricks
#: (default: ``True``)
MLFLOW_ENABLE_UC_VOLUME_FUSE_ARTIFACT_REPO = _BooleanEnvironmentVariable(
diff --git a/mlflow/java/client/src/main/java/org/mlflow/api/proto/Service.java b/mlflow/java/client/src/main/java/org/mlflow/api/proto/Service.java
index 0d80b783625d3..c8e292f75f758 100644
--- a/mlflow/java/client/src/main/java/org/mlflow/api/proto/Service.java
+++ b/mlflow/java/client/src/main/java/org/mlflow/api/proto/Service.java
@@ -186784,6 +186784,7831 @@ public org.mlflow.api.proto.Service.Scorer getDefaultInstanceForType() {
}
+ public interface WorkspaceOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.Workspace)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the name field is set.
+ */
+ boolean hasName();
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The name.
+ */
+ java.lang.String getName();
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for name.
+ */
+ com.google.protobuf.ByteString
+ getNameBytes();
+
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ boolean hasDescription();
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ java.lang.String getDescription();
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ com.google.protobuf.ByteString
+ getDescriptionBytes();
+ }
+ /**
+ *
+ * Workspace metadata returned by workspace APIs.
+ *
+ *
+ * Protobuf type {@code mlflow.Workspace}
+ */
+ public static final class Workspace extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.Workspace)
+ WorkspaceOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Workspace.newBuilder() to construct.
+ private Workspace(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private Workspace() {
+ name_ = "";
+ description_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Workspace();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Workspace(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000001;
+ name_ = bs;
+ break;
+ }
+ case 18: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000002;
+ description_ = bs;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_Workspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_Workspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.Workspace.class, org.mlflow.api.proto.Service.Workspace.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object name_;
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the name field is set.
+ */
+ @java.lang.Override
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The name.
+ */
+ @java.lang.Override
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ name_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for name.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int DESCRIPTION_FIELD_NUMBER = 2;
+ private volatile java.lang.Object description_;
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ @java.lang.Override
+ public boolean hasDescription() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ @java.lang.Override
+ public java.lang.String getDescription() {
+ java.lang.Object ref = description_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ description_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getDescriptionBytes() {
+ java.lang.Object ref = description_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ description_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.Workspace)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.Workspace other = (org.mlflow.api.proto.Service.Workspace) obj;
+
+ if (hasName() != other.hasName()) return false;
+ if (hasName()) {
+ if (!getName()
+ .equals(other.getName())) return false;
+ }
+ if (hasDescription() != other.hasDescription()) return false;
+ if (hasDescription()) {
+ if (!getDescription()
+ .equals(other.getDescription())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasName()) {
+ hash = (37 * hash) + NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getName().hashCode();
+ }
+ if (hasDescription()) {
+ hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
+ hash = (53 * hash) + getDescription().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.Workspace parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.Workspace prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ *
+ * Workspace metadata returned by workspace APIs.
+ *
+ *
+ * Protobuf type {@code mlflow.Workspace}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.Workspace)
+ org.mlflow.api.proto.Service.WorkspaceOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_Workspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_Workspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.Workspace.class, org.mlflow.api.proto.Service.Workspace.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.Workspace.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ name_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ description_ = "";
+ bitField0_ = (bitField0_ & ~0x00000002);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_Workspace_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.Workspace.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace build() {
+ org.mlflow.api.proto.Service.Workspace result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace buildPartial() {
+ org.mlflow.api.proto.Service.Workspace result = new org.mlflow.api.proto.Service.Workspace(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.name_ = name_;
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.description_ = description_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.Workspace) {
+ return mergeFrom((org.mlflow.api.proto.Service.Workspace)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.Workspace other) {
+ if (other == org.mlflow.api.proto.Service.Workspace.getDefaultInstance()) return this;
+ if (other.hasName()) {
+ bitField0_ |= 0x00000001;
+ name_ = other.name_;
+ onChanged();
+ }
+ if (other.hasDescription()) {
+ bitField0_ |= 0x00000002;
+ description_ = other.description_;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.Workspace parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.Workspace) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.lang.Object name_ = "";
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the name field is set.
+ */
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The name.
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ name_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for name.
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @param value The name to set.
+ * @return This builder for chaining.
+ */
+ public Builder setName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ name_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return This builder for chaining.
+ */
+ public Builder clearName() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ name_ = getDefaultInstance().getName();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * The unique workspace name.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @param value The bytes for name to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ name_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object description_ = "";
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ public boolean hasDescription() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ public java.lang.String getDescription() {
+ java.lang.Object ref = description_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ description_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ public com.google.protobuf.ByteString
+ getDescriptionBytes() {
+ java.lang.Object ref = description_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ description_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @param value The description to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDescription(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ description_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return This builder for chaining.
+ */
+ public Builder clearDescription() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ description_ = getDefaultInstance().getDescription();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @param value The bytes for description to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDescriptionBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ description_ = value;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.Workspace)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.Workspace)
+ private static final org.mlflow.api.proto.Service.Workspace DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.Workspace();
+ }
+
+ public static org.mlflow.api.proto.Service.Workspace getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public Workspace parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Workspace(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ public interface ListWorkspacesOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.ListWorkspaces)
+ com.google.protobuf.MessageOrBuilder {
+ }
+ /**
+ *
+ * List workspaces available to the current principal.
+ *
+ *
+ * Protobuf type {@code mlflow.ListWorkspaces}
+ */
+ public static final class ListWorkspaces extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.ListWorkspaces)
+ ListWorkspacesOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use ListWorkspaces.newBuilder() to construct.
+ private ListWorkspaces(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private ListWorkspaces() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new ListWorkspaces();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private ListWorkspaces(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.ListWorkspaces.class, org.mlflow.api.proto.Service.ListWorkspaces.Builder.class);
+ }
+
+ public interface ResponseOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.ListWorkspaces.Response)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ java.util.List
+ getWorkspacesList();
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ org.mlflow.api.proto.Service.Workspace getWorkspaces(int index);
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ int getWorkspacesCount();
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ java.util.List extends org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspacesOrBuilderList();
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspacesOrBuilder(
+ int index);
+ }
+ /**
+ * Protobuf type {@code mlflow.ListWorkspaces.Response}
+ */
+ public static final class Response extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.ListWorkspaces.Response)
+ ResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Response.newBuilder() to construct.
+ private Response(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private Response() {
+ workspaces_ = java.util.Collections.emptyList();
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Response();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Response(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+ workspaces_ = new java.util.ArrayList();
+ mutable_bitField0_ |= 0x00000001;
+ }
+ workspaces_.add(
+ input.readMessage(org.mlflow.api.proto.Service.Workspace.PARSER, extensionRegistry));
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ if (((mutable_bitField0_ & 0x00000001) != 0)) {
+ workspaces_ = java.util.Collections.unmodifiableList(workspaces_);
+ }
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.ListWorkspaces.Response.class, org.mlflow.api.proto.Service.ListWorkspaces.Response.Builder.class);
+ }
+
+ public static final int WORKSPACES_FIELD_NUMBER = 1;
+ private java.util.List workspaces_;
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ @java.lang.Override
+ public java.util.List getWorkspacesList() {
+ return workspaces_;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ @java.lang.Override
+ public java.util.List extends org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspacesOrBuilderList() {
+ return workspaces_;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ @java.lang.Override
+ public int getWorkspacesCount() {
+ return workspaces_.size();
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace getWorkspaces(int index) {
+ return workspaces_.get(index);
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspacesOrBuilder(
+ int index) {
+ return workspaces_.get(index);
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ for (int i = 0; i < workspaces_.size(); i++) {
+ output.writeMessage(1, workspaces_.get(i));
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ for (int i = 0; i < workspaces_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, workspaces_.get(i));
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.ListWorkspaces.Response)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.ListWorkspaces.Response other = (org.mlflow.api.proto.Service.ListWorkspaces.Response) obj;
+
+ if (!getWorkspacesList()
+ .equals(other.getWorkspacesList())) return false;
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (getWorkspacesCount() > 0) {
+ hash = (37 * hash) + WORKSPACES_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspacesList().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.ListWorkspaces.Response prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code mlflow.ListWorkspaces.Response}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.ListWorkspaces.Response)
+ org.mlflow.api.proto.Service.ListWorkspaces.ResponseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.ListWorkspaces.Response.class, org.mlflow.api.proto.Service.ListWorkspaces.Response.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.ListWorkspaces.Response.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ getWorkspacesFieldBuilder();
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ if (workspacesBuilder_ == null) {
+ workspaces_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ workspacesBuilder_.clear();
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_Response_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces.Response getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.ListWorkspaces.Response.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces.Response build() {
+ org.mlflow.api.proto.Service.ListWorkspaces.Response result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces.Response buildPartial() {
+ org.mlflow.api.proto.Service.ListWorkspaces.Response result = new org.mlflow.api.proto.Service.ListWorkspaces.Response(this);
+ int from_bitField0_ = bitField0_;
+ if (workspacesBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ workspaces_ = java.util.Collections.unmodifiableList(workspaces_);
+ bitField0_ = (bitField0_ & ~0x00000001);
+ }
+ result.workspaces_ = workspaces_;
+ } else {
+ result.workspaces_ = workspacesBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.ListWorkspaces.Response) {
+ return mergeFrom((org.mlflow.api.proto.Service.ListWorkspaces.Response)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.ListWorkspaces.Response other) {
+ if (other == org.mlflow.api.proto.Service.ListWorkspaces.Response.getDefaultInstance()) return this;
+ if (workspacesBuilder_ == null) {
+ if (!other.workspaces_.isEmpty()) {
+ if (workspaces_.isEmpty()) {
+ workspaces_ = other.workspaces_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ ensureWorkspacesIsMutable();
+ workspaces_.addAll(other.workspaces_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.workspaces_.isEmpty()) {
+ if (workspacesBuilder_.isEmpty()) {
+ workspacesBuilder_.dispose();
+ workspacesBuilder_ = null;
+ workspaces_ = other.workspaces_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ workspacesBuilder_ =
+ com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+ getWorkspacesFieldBuilder() : null;
+ } else {
+ workspacesBuilder_.addAllMessages(other.workspaces_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.ListWorkspaces.Response parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.ListWorkspaces.Response) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.util.List workspaces_ =
+ java.util.Collections.emptyList();
+ private void ensureWorkspacesIsMutable() {
+ if (!((bitField0_ & 0x00000001) != 0)) {
+ workspaces_ = new java.util.ArrayList(workspaces_);
+ bitField0_ |= 0x00000001;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder> workspacesBuilder_;
+
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public java.util.List getWorkspacesList() {
+ if (workspacesBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(workspaces_);
+ } else {
+ return workspacesBuilder_.getMessageList();
+ }
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public int getWorkspacesCount() {
+ if (workspacesBuilder_ == null) {
+ return workspaces_.size();
+ } else {
+ return workspacesBuilder_.getCount();
+ }
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace getWorkspaces(int index) {
+ if (workspacesBuilder_ == null) {
+ return workspaces_.get(index);
+ } else {
+ return workspacesBuilder_.getMessage(index);
+ }
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder setWorkspaces(
+ int index, org.mlflow.api.proto.Service.Workspace value) {
+ if (workspacesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureWorkspacesIsMutable();
+ workspaces_.set(index, value);
+ onChanged();
+ } else {
+ workspacesBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder setWorkspaces(
+ int index, org.mlflow.api.proto.Service.Workspace.Builder builderForValue) {
+ if (workspacesBuilder_ == null) {
+ ensureWorkspacesIsMutable();
+ workspaces_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ workspacesBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder addWorkspaces(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspacesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureWorkspacesIsMutable();
+ workspaces_.add(value);
+ onChanged();
+ } else {
+ workspacesBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder addWorkspaces(
+ int index, org.mlflow.api.proto.Service.Workspace value) {
+ if (workspacesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureWorkspacesIsMutable();
+ workspaces_.add(index, value);
+ onChanged();
+ } else {
+ workspacesBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder addWorkspaces(
+ org.mlflow.api.proto.Service.Workspace.Builder builderForValue) {
+ if (workspacesBuilder_ == null) {
+ ensureWorkspacesIsMutable();
+ workspaces_.add(builderForValue.build());
+ onChanged();
+ } else {
+ workspacesBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder addWorkspaces(
+ int index, org.mlflow.api.proto.Service.Workspace.Builder builderForValue) {
+ if (workspacesBuilder_ == null) {
+ ensureWorkspacesIsMutable();
+ workspaces_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ workspacesBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder addAllWorkspaces(
+ java.lang.Iterable extends org.mlflow.api.proto.Service.Workspace> values) {
+ if (workspacesBuilder_ == null) {
+ ensureWorkspacesIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, workspaces_);
+ onChanged();
+ } else {
+ workspacesBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder clearWorkspaces() {
+ if (workspacesBuilder_ == null) {
+ workspaces_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ } else {
+ workspacesBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public Builder removeWorkspaces(int index) {
+ if (workspacesBuilder_ == null) {
+ ensureWorkspacesIsMutable();
+ workspaces_.remove(index);
+ onChanged();
+ } else {
+ workspacesBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace.Builder getWorkspacesBuilder(
+ int index) {
+ return getWorkspacesFieldBuilder().getBuilder(index);
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspacesOrBuilder(
+ int index) {
+ if (workspacesBuilder_ == null) {
+ return workspaces_.get(index); } else {
+ return workspacesBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public java.util.List extends org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspacesOrBuilderList() {
+ if (workspacesBuilder_ != null) {
+ return workspacesBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(workspaces_);
+ }
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace.Builder addWorkspacesBuilder() {
+ return getWorkspacesFieldBuilder().addBuilder(
+ org.mlflow.api.proto.Service.Workspace.getDefaultInstance());
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace.Builder addWorkspacesBuilder(
+ int index) {
+ return getWorkspacesFieldBuilder().addBuilder(
+ index, org.mlflow.api.proto.Service.Workspace.getDefaultInstance());
+ }
+ /**
+ *
+ * Collection of workspace records.
+ *
+ *
+ * repeated .mlflow.Workspace workspaces = 1;
+ */
+ public java.util.List
+ getWorkspacesBuilderList() {
+ return getWorkspacesFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspacesFieldBuilder() {
+ if (workspacesBuilder_ == null) {
+ workspacesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>(
+ workspaces_,
+ ((bitField0_ & 0x00000001) != 0),
+ getParentForChildren(),
+ isClean());
+ workspaces_ = null;
+ }
+ return workspacesBuilder_;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.ListWorkspaces.Response)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.ListWorkspaces.Response)
+ private static final org.mlflow.api.proto.Service.ListWorkspaces.Response DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.ListWorkspaces.Response();
+ }
+
+ public static org.mlflow.api.proto.Service.ListWorkspaces.Response getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public Response parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Response(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces.Response getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.ListWorkspaces)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.ListWorkspaces other = (org.mlflow.api.proto.Service.ListWorkspaces) obj;
+
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.ListWorkspaces parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.ListWorkspaces prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ *
+ * List workspaces available to the current principal.
+ *
+ *
+ * Protobuf type {@code mlflow.ListWorkspaces}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.ListWorkspaces)
+ org.mlflow.api.proto.Service.ListWorkspacesOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.ListWorkspaces.class, org.mlflow.api.proto.Service.ListWorkspaces.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.ListWorkspaces.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_ListWorkspaces_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.ListWorkspaces.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces build() {
+ org.mlflow.api.proto.Service.ListWorkspaces result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces buildPartial() {
+ org.mlflow.api.proto.Service.ListWorkspaces result = new org.mlflow.api.proto.Service.ListWorkspaces(this);
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.ListWorkspaces) {
+ return mergeFrom((org.mlflow.api.proto.Service.ListWorkspaces)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.ListWorkspaces other) {
+ if (other == org.mlflow.api.proto.Service.ListWorkspaces.getDefaultInstance()) return this;
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.ListWorkspaces parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.ListWorkspaces) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.ListWorkspaces)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.ListWorkspaces)
+ private static final org.mlflow.api.proto.Service.ListWorkspaces DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.ListWorkspaces();
+ }
+
+ public static org.mlflow.api.proto.Service.ListWorkspaces getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public ListWorkspaces parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new ListWorkspaces(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.ListWorkspaces getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ public interface CreateWorkspaceOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.CreateWorkspace)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the name field is set.
+ */
+ boolean hasName();
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The name.
+ */
+ java.lang.String getName();
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for name.
+ */
+ com.google.protobuf.ByteString
+ getNameBytes();
+
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ boolean hasDescription();
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ java.lang.String getDescription();
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ com.google.protobuf.ByteString
+ getDescriptionBytes();
+ }
+ /**
+ *
+ * Create a new workspace.
+ *
+ *
+ * Protobuf type {@code mlflow.CreateWorkspace}
+ */
+ public static final class CreateWorkspace extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.CreateWorkspace)
+ CreateWorkspaceOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use CreateWorkspace.newBuilder() to construct.
+ private CreateWorkspace(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private CreateWorkspace() {
+ name_ = "";
+ description_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new CreateWorkspace();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private CreateWorkspace(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000001;
+ name_ = bs;
+ break;
+ }
+ case 18: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000002;
+ description_ = bs;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.CreateWorkspace.class, org.mlflow.api.proto.Service.CreateWorkspace.Builder.class);
+ }
+
+ public interface ResponseOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.CreateWorkspace.Response)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ boolean hasWorkspace();
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ org.mlflow.api.proto.Service.Workspace getWorkspace();
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder();
+ }
+ /**
+ * Protobuf type {@code mlflow.CreateWorkspace.Response}
+ */
+ public static final class Response extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.CreateWorkspace.Response)
+ ResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Response.newBuilder() to construct.
+ private Response(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private Response() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Response();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Response(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ org.mlflow.api.proto.Service.Workspace.Builder subBuilder = null;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ subBuilder = workspace_.toBuilder();
+ }
+ workspace_ = input.readMessage(org.mlflow.api.proto.Service.Workspace.PARSER, extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(workspace_);
+ workspace_ = subBuilder.buildPartial();
+ }
+ bitField0_ |= 0x00000001;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.CreateWorkspace.Response.class, org.mlflow.api.proto.Service.CreateWorkspace.Response.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int WORKSPACE_FIELD_NUMBER = 1;
+ private org.mlflow.api.proto.Service.Workspace workspace_;
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ @java.lang.Override
+ public boolean hasWorkspace() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace getWorkspace() {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder() {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(1, getWorkspace());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getWorkspace());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.CreateWorkspace.Response)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.CreateWorkspace.Response other = (org.mlflow.api.proto.Service.CreateWorkspace.Response) obj;
+
+ if (hasWorkspace() != other.hasWorkspace()) return false;
+ if (hasWorkspace()) {
+ if (!getWorkspace()
+ .equals(other.getWorkspace())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasWorkspace()) {
+ hash = (37 * hash) + WORKSPACE_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspace().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.CreateWorkspace.Response prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code mlflow.CreateWorkspace.Response}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.CreateWorkspace.Response)
+ org.mlflow.api.proto.Service.CreateWorkspace.ResponseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.CreateWorkspace.Response.class, org.mlflow.api.proto.Service.CreateWorkspace.Response.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.CreateWorkspace.Response.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ getWorkspaceFieldBuilder();
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ if (workspaceBuilder_ == null) {
+ workspace_ = null;
+ } else {
+ workspaceBuilder_.clear();
+ }
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace.Response getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.CreateWorkspace.Response.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace.Response build() {
+ org.mlflow.api.proto.Service.CreateWorkspace.Response result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace.Response buildPartial() {
+ org.mlflow.api.proto.Service.CreateWorkspace.Response result = new org.mlflow.api.proto.Service.CreateWorkspace.Response(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ if (workspaceBuilder_ == null) {
+ result.workspace_ = workspace_;
+ } else {
+ result.workspace_ = workspaceBuilder_.build();
+ }
+ to_bitField0_ |= 0x00000001;
+ }
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.CreateWorkspace.Response) {
+ return mergeFrom((org.mlflow.api.proto.Service.CreateWorkspace.Response)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.CreateWorkspace.Response other) {
+ if (other == org.mlflow.api.proto.Service.CreateWorkspace.Response.getDefaultInstance()) return this;
+ if (other.hasWorkspace()) {
+ mergeWorkspace(other.getWorkspace());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.CreateWorkspace.Response parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.CreateWorkspace.Response) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private org.mlflow.api.proto.Service.Workspace workspace_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder> workspaceBuilder_;
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ public boolean hasWorkspace() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ public org.mlflow.api.proto.Service.Workspace getWorkspace() {
+ if (workspaceBuilder_ == null) {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ } else {
+ return workspaceBuilder_.getMessage();
+ }
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder setWorkspace(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspaceBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ workspace_ = value;
+ onChanged();
+ } else {
+ workspaceBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder setWorkspace(
+ org.mlflow.api.proto.Service.Workspace.Builder builderForValue) {
+ if (workspaceBuilder_ == null) {
+ workspace_ = builderForValue.build();
+ onChanged();
+ } else {
+ workspaceBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder mergeWorkspace(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspaceBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) != 0) &&
+ workspace_ != null &&
+ workspace_ != org.mlflow.api.proto.Service.Workspace.getDefaultInstance()) {
+ workspace_ =
+ org.mlflow.api.proto.Service.Workspace.newBuilder(workspace_).mergeFrom(value).buildPartial();
+ } else {
+ workspace_ = value;
+ }
+ onChanged();
+ } else {
+ workspaceBuilder_.mergeFrom(value);
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder clearWorkspace() {
+ if (workspaceBuilder_ == null) {
+ workspace_ = null;
+ onChanged();
+ } else {
+ workspaceBuilder_.clear();
+ }
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace.Builder getWorkspaceBuilder() {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return getWorkspaceFieldBuilder().getBuilder();
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder() {
+ if (workspaceBuilder_ != null) {
+ return workspaceBuilder_.getMessageOrBuilder();
+ } else {
+ return workspace_ == null ?
+ org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+ }
+ /**
+ *
+ * Metadata describing the created workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspaceFieldBuilder() {
+ if (workspaceBuilder_ == null) {
+ workspaceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>(
+ getWorkspace(),
+ getParentForChildren(),
+ isClean());
+ workspace_ = null;
+ }
+ return workspaceBuilder_;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.CreateWorkspace.Response)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.CreateWorkspace.Response)
+ private static final org.mlflow.api.proto.Service.CreateWorkspace.Response DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.CreateWorkspace.Response();
+ }
+
+ public static org.mlflow.api.proto.Service.CreateWorkspace.Response getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public Response parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Response(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace.Response getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private int bitField0_;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object name_;
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the name field is set.
+ */
+ @java.lang.Override
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The name.
+ */
+ @java.lang.Override
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ name_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for name.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int DESCRIPTION_FIELD_NUMBER = 2;
+ private volatile java.lang.Object description_;
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ @java.lang.Override
+ public boolean hasDescription() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ @java.lang.Override
+ public java.lang.String getDescription() {
+ java.lang.Object ref = description_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ description_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getDescriptionBytes() {
+ java.lang.Object ref = description_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ description_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.CreateWorkspace)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.CreateWorkspace other = (org.mlflow.api.proto.Service.CreateWorkspace) obj;
+
+ if (hasName() != other.hasName()) return false;
+ if (hasName()) {
+ if (!getName()
+ .equals(other.getName())) return false;
+ }
+ if (hasDescription() != other.hasDescription()) return false;
+ if (hasDescription()) {
+ if (!getDescription()
+ .equals(other.getDescription())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasName()) {
+ hash = (37 * hash) + NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getName().hashCode();
+ }
+ if (hasDescription()) {
+ hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
+ hash = (53 * hash) + getDescription().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.CreateWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.CreateWorkspace prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ *
+ * Create a new workspace.
+ *
+ *
+ * Protobuf type {@code mlflow.CreateWorkspace}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.CreateWorkspace)
+ org.mlflow.api.proto.Service.CreateWorkspaceOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.CreateWorkspace.class, org.mlflow.api.proto.Service.CreateWorkspace.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.CreateWorkspace.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ name_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ description_ = "";
+ bitField0_ = (bitField0_ & ~0x00000002);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_CreateWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.CreateWorkspace.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace build() {
+ org.mlflow.api.proto.Service.CreateWorkspace result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace buildPartial() {
+ org.mlflow.api.proto.Service.CreateWorkspace result = new org.mlflow.api.proto.Service.CreateWorkspace(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.name_ = name_;
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.description_ = description_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.CreateWorkspace) {
+ return mergeFrom((org.mlflow.api.proto.Service.CreateWorkspace)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.CreateWorkspace other) {
+ if (other == org.mlflow.api.proto.Service.CreateWorkspace.getDefaultInstance()) return this;
+ if (other.hasName()) {
+ bitField0_ |= 0x00000001;
+ name_ = other.name_;
+ onChanged();
+ }
+ if (other.hasDescription()) {
+ bitField0_ |= 0x00000002;
+ description_ = other.description_;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.CreateWorkspace parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.CreateWorkspace) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.lang.Object name_ = "";
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the name field is set.
+ */
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The name.
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ name_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for name.
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @param value The name to set.
+ * @return This builder for chaining.
+ */
+ public Builder setName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ name_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @return This builder for chaining.
+ */
+ public Builder clearName() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ name_ = getDefaultInstance().getName();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Workspace name to create.
+ *
+ *
+ * optional string name = 1 [(.mlflow.validate_required) = true];
+ * @param value The bytes for name to set.
+ * @return This builder for chaining.
+ */
+ public Builder setNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ name_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object description_ = "";
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ public boolean hasDescription() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ public java.lang.String getDescription() {
+ java.lang.Object ref = description_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ description_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ public com.google.protobuf.ByteString
+ getDescriptionBytes() {
+ java.lang.Object ref = description_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ description_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @param value The description to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDescription(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ description_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @return This builder for chaining.
+ */
+ public Builder clearDescription() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ description_ = getDefaultInstance().getDescription();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Optional workspace description.
+ *
+ *
+ * optional string description = 2;
+ * @param value The bytes for description to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDescriptionBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ description_ = value;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.CreateWorkspace)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.CreateWorkspace)
+ private static final org.mlflow.api.proto.Service.CreateWorkspace DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.CreateWorkspace();
+ }
+
+ public static org.mlflow.api.proto.Service.CreateWorkspace getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public CreateWorkspace parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new CreateWorkspace(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.CreateWorkspace getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ public interface GetWorkspaceOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.GetWorkspace)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ boolean hasWorkspaceName();
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ java.lang.String getWorkspaceName();
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ com.google.protobuf.ByteString
+ getWorkspaceNameBytes();
+ }
+ /**
+ *
+ * Retrieve workspace metadata.
+ *
+ *
+ * Protobuf type {@code mlflow.GetWorkspace}
+ */
+ public static final class GetWorkspace extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.GetWorkspace)
+ GetWorkspaceOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use GetWorkspace.newBuilder() to construct.
+ private GetWorkspace(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private GetWorkspace() {
+ workspaceName_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new GetWorkspace();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetWorkspace(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000001;
+ workspaceName_ = bs;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.GetWorkspace.class, org.mlflow.api.proto.Service.GetWorkspace.Builder.class);
+ }
+
+ public interface ResponseOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.GetWorkspace.Response)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ boolean hasWorkspace();
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ org.mlflow.api.proto.Service.Workspace getWorkspace();
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder();
+ }
+ /**
+ * Protobuf type {@code mlflow.GetWorkspace.Response}
+ */
+ public static final class Response extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.GetWorkspace.Response)
+ ResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Response.newBuilder() to construct.
+ private Response(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private Response() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Response();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Response(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ org.mlflow.api.proto.Service.Workspace.Builder subBuilder = null;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ subBuilder = workspace_.toBuilder();
+ }
+ workspace_ = input.readMessage(org.mlflow.api.proto.Service.Workspace.PARSER, extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(workspace_);
+ workspace_ = subBuilder.buildPartial();
+ }
+ bitField0_ |= 0x00000001;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.GetWorkspace.Response.class, org.mlflow.api.proto.Service.GetWorkspace.Response.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int WORKSPACE_FIELD_NUMBER = 1;
+ private org.mlflow.api.proto.Service.Workspace workspace_;
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ @java.lang.Override
+ public boolean hasWorkspace() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace getWorkspace() {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder() {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(1, getWorkspace());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getWorkspace());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.GetWorkspace.Response)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.GetWorkspace.Response other = (org.mlflow.api.proto.Service.GetWorkspace.Response) obj;
+
+ if (hasWorkspace() != other.hasWorkspace()) return false;
+ if (hasWorkspace()) {
+ if (!getWorkspace()
+ .equals(other.getWorkspace())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasWorkspace()) {
+ hash = (37 * hash) + WORKSPACE_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspace().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.GetWorkspace.Response prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code mlflow.GetWorkspace.Response}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.GetWorkspace.Response)
+ org.mlflow.api.proto.Service.GetWorkspace.ResponseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.GetWorkspace.Response.class, org.mlflow.api.proto.Service.GetWorkspace.Response.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.GetWorkspace.Response.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ getWorkspaceFieldBuilder();
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ if (workspaceBuilder_ == null) {
+ workspace_ = null;
+ } else {
+ workspaceBuilder_.clear();
+ }
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace.Response getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.GetWorkspace.Response.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace.Response build() {
+ org.mlflow.api.proto.Service.GetWorkspace.Response result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace.Response buildPartial() {
+ org.mlflow.api.proto.Service.GetWorkspace.Response result = new org.mlflow.api.proto.Service.GetWorkspace.Response(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ if (workspaceBuilder_ == null) {
+ result.workspace_ = workspace_;
+ } else {
+ result.workspace_ = workspaceBuilder_.build();
+ }
+ to_bitField0_ |= 0x00000001;
+ }
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.GetWorkspace.Response) {
+ return mergeFrom((org.mlflow.api.proto.Service.GetWorkspace.Response)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.GetWorkspace.Response other) {
+ if (other == org.mlflow.api.proto.Service.GetWorkspace.Response.getDefaultInstance()) return this;
+ if (other.hasWorkspace()) {
+ mergeWorkspace(other.getWorkspace());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.GetWorkspace.Response parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.GetWorkspace.Response) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private org.mlflow.api.proto.Service.Workspace workspace_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder> workspaceBuilder_;
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ public boolean hasWorkspace() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ public org.mlflow.api.proto.Service.Workspace getWorkspace() {
+ if (workspaceBuilder_ == null) {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ } else {
+ return workspaceBuilder_.getMessage();
+ }
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder setWorkspace(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspaceBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ workspace_ = value;
+ onChanged();
+ } else {
+ workspaceBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder setWorkspace(
+ org.mlflow.api.proto.Service.Workspace.Builder builderForValue) {
+ if (workspaceBuilder_ == null) {
+ workspace_ = builderForValue.build();
+ onChanged();
+ } else {
+ workspaceBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder mergeWorkspace(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspaceBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) != 0) &&
+ workspace_ != null &&
+ workspace_ != org.mlflow.api.proto.Service.Workspace.getDefaultInstance()) {
+ workspace_ =
+ org.mlflow.api.proto.Service.Workspace.newBuilder(workspace_).mergeFrom(value).buildPartial();
+ } else {
+ workspace_ = value;
+ }
+ onChanged();
+ } else {
+ workspaceBuilder_.mergeFrom(value);
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder clearWorkspace() {
+ if (workspaceBuilder_ == null) {
+ workspace_ = null;
+ onChanged();
+ } else {
+ workspaceBuilder_.clear();
+ }
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace.Builder getWorkspaceBuilder() {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return getWorkspaceFieldBuilder().getBuilder();
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder() {
+ if (workspaceBuilder_ != null) {
+ return workspaceBuilder_.getMessageOrBuilder();
+ } else {
+ return workspace_ == null ?
+ org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+ }
+ /**
+ *
+ * Metadata describing the requested workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspaceFieldBuilder() {
+ if (workspaceBuilder_ == null) {
+ workspaceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>(
+ getWorkspace(),
+ getParentForChildren(),
+ isClean());
+ workspace_ = null;
+ }
+ return workspaceBuilder_;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.GetWorkspace.Response)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.GetWorkspace.Response)
+ private static final org.mlflow.api.proto.Service.GetWorkspace.Response DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.GetWorkspace.Response();
+ }
+
+ public static org.mlflow.api.proto.Service.GetWorkspace.Response getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public Response parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Response(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace.Response getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private int bitField0_;
+ public static final int WORKSPACE_NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object workspaceName_;
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ @java.lang.Override
+ public boolean hasWorkspaceName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ @java.lang.Override
+ public java.lang.String getWorkspaceName() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ workspaceName_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getWorkspaceNameBytes() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ workspaceName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, workspaceName_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, workspaceName_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.GetWorkspace)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.GetWorkspace other = (org.mlflow.api.proto.Service.GetWorkspace) obj;
+
+ if (hasWorkspaceName() != other.hasWorkspaceName()) return false;
+ if (hasWorkspaceName()) {
+ if (!getWorkspaceName()
+ .equals(other.getWorkspaceName())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasWorkspaceName()) {
+ hash = (37 * hash) + WORKSPACE_NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspaceName().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.GetWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.GetWorkspace prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ *
+ * Retrieve workspace metadata.
+ *
+ *
+ * Protobuf type {@code mlflow.GetWorkspace}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.GetWorkspace)
+ org.mlflow.api.proto.Service.GetWorkspaceOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.GetWorkspace.class, org.mlflow.api.proto.Service.GetWorkspace.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.GetWorkspace.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ workspaceName_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_GetWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.GetWorkspace.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace build() {
+ org.mlflow.api.proto.Service.GetWorkspace result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace buildPartial() {
+ org.mlflow.api.proto.Service.GetWorkspace result = new org.mlflow.api.proto.Service.GetWorkspace(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.workspaceName_ = workspaceName_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.GetWorkspace) {
+ return mergeFrom((org.mlflow.api.proto.Service.GetWorkspace)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.GetWorkspace other) {
+ if (other == org.mlflow.api.proto.Service.GetWorkspace.getDefaultInstance()) return this;
+ if (other.hasWorkspaceName()) {
+ bitField0_ |= 0x00000001;
+ workspaceName_ = other.workspaceName_;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.GetWorkspace parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.GetWorkspace) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.lang.Object workspaceName_ = "";
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ public boolean hasWorkspaceName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ public java.lang.String getWorkspaceName() {
+ java.lang.Object ref = workspaceName_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ workspaceName_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ public com.google.protobuf.ByteString
+ getWorkspaceNameBytes() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ workspaceName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @param value The workspaceName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setWorkspaceName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ workspaceName_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return This builder for chaining.
+ */
+ public Builder clearWorkspaceName() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ workspaceName_ = getDefaultInstance().getWorkspaceName();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Name of the workspace to fetch.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @param value The bytes for workspaceName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setWorkspaceNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ workspaceName_ = value;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.GetWorkspace)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.GetWorkspace)
+ private static final org.mlflow.api.proto.Service.GetWorkspace DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.GetWorkspace();
+ }
+
+ public static org.mlflow.api.proto.Service.GetWorkspace getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public GetWorkspace parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetWorkspace(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.GetWorkspace getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ public interface UpdateWorkspaceOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.UpdateWorkspace)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ boolean hasWorkspaceName();
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ java.lang.String getWorkspaceName();
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ com.google.protobuf.ByteString
+ getWorkspaceNameBytes();
+
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ boolean hasDescription();
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ java.lang.String getDescription();
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ com.google.protobuf.ByteString
+ getDescriptionBytes();
+ }
+ /**
+ *
+ * Update workspace metadata.
+ *
+ *
+ * Protobuf type {@code mlflow.UpdateWorkspace}
+ */
+ public static final class UpdateWorkspace extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.UpdateWorkspace)
+ UpdateWorkspaceOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use UpdateWorkspace.newBuilder() to construct.
+ private UpdateWorkspace(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private UpdateWorkspace() {
+ workspaceName_ = "";
+ description_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new UpdateWorkspace();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private UpdateWorkspace(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000001;
+ workspaceName_ = bs;
+ break;
+ }
+ case 18: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000002;
+ description_ = bs;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.UpdateWorkspace.class, org.mlflow.api.proto.Service.UpdateWorkspace.Builder.class);
+ }
+
+ public interface ResponseOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.UpdateWorkspace.Response)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ boolean hasWorkspace();
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ org.mlflow.api.proto.Service.Workspace getWorkspace();
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder();
+ }
+ /**
+ * Protobuf type {@code mlflow.UpdateWorkspace.Response}
+ */
+ public static final class Response extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.UpdateWorkspace.Response)
+ ResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Response.newBuilder() to construct.
+ private Response(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private Response() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Response();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Response(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ org.mlflow.api.proto.Service.Workspace.Builder subBuilder = null;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ subBuilder = workspace_.toBuilder();
+ }
+ workspace_ = input.readMessage(org.mlflow.api.proto.Service.Workspace.PARSER, extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(workspace_);
+ workspace_ = subBuilder.buildPartial();
+ }
+ bitField0_ |= 0x00000001;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.UpdateWorkspace.Response.class, org.mlflow.api.proto.Service.UpdateWorkspace.Response.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int WORKSPACE_FIELD_NUMBER = 1;
+ private org.mlflow.api.proto.Service.Workspace workspace_;
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ @java.lang.Override
+ public boolean hasWorkspace() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.Workspace getWorkspace() {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder() {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(1, getWorkspace());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getWorkspace());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.UpdateWorkspace.Response)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.UpdateWorkspace.Response other = (org.mlflow.api.proto.Service.UpdateWorkspace.Response) obj;
+
+ if (hasWorkspace() != other.hasWorkspace()) return false;
+ if (hasWorkspace()) {
+ if (!getWorkspace()
+ .equals(other.getWorkspace())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasWorkspace()) {
+ hash = (37 * hash) + WORKSPACE_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspace().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.UpdateWorkspace.Response prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code mlflow.UpdateWorkspace.Response}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.UpdateWorkspace.Response)
+ org.mlflow.api.proto.Service.UpdateWorkspace.ResponseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.UpdateWorkspace.Response.class, org.mlflow.api.proto.Service.UpdateWorkspace.Response.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.UpdateWorkspace.Response.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ getWorkspaceFieldBuilder();
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ if (workspaceBuilder_ == null) {
+ workspace_ = null;
+ } else {
+ workspaceBuilder_.clear();
+ }
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace.Response getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.UpdateWorkspace.Response.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace.Response build() {
+ org.mlflow.api.proto.Service.UpdateWorkspace.Response result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace.Response buildPartial() {
+ org.mlflow.api.proto.Service.UpdateWorkspace.Response result = new org.mlflow.api.proto.Service.UpdateWorkspace.Response(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ if (workspaceBuilder_ == null) {
+ result.workspace_ = workspace_;
+ } else {
+ result.workspace_ = workspaceBuilder_.build();
+ }
+ to_bitField0_ |= 0x00000001;
+ }
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.UpdateWorkspace.Response) {
+ return mergeFrom((org.mlflow.api.proto.Service.UpdateWorkspace.Response)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.UpdateWorkspace.Response other) {
+ if (other == org.mlflow.api.proto.Service.UpdateWorkspace.Response.getDefaultInstance()) return this;
+ if (other.hasWorkspace()) {
+ mergeWorkspace(other.getWorkspace());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.UpdateWorkspace.Response parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.UpdateWorkspace.Response) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private org.mlflow.api.proto.Service.Workspace workspace_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder> workspaceBuilder_;
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return Whether the workspace field is set.
+ */
+ public boolean hasWorkspace() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ * @return The workspace.
+ */
+ public org.mlflow.api.proto.Service.Workspace getWorkspace() {
+ if (workspaceBuilder_ == null) {
+ return workspace_ == null ? org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ } else {
+ return workspaceBuilder_.getMessage();
+ }
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder setWorkspace(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspaceBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ workspace_ = value;
+ onChanged();
+ } else {
+ workspaceBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder setWorkspace(
+ org.mlflow.api.proto.Service.Workspace.Builder builderForValue) {
+ if (workspaceBuilder_ == null) {
+ workspace_ = builderForValue.build();
+ onChanged();
+ } else {
+ workspaceBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder mergeWorkspace(org.mlflow.api.proto.Service.Workspace value) {
+ if (workspaceBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) != 0) &&
+ workspace_ != null &&
+ workspace_ != org.mlflow.api.proto.Service.Workspace.getDefaultInstance()) {
+ workspace_ =
+ org.mlflow.api.proto.Service.Workspace.newBuilder(workspace_).mergeFrom(value).buildPartial();
+ } else {
+ workspace_ = value;
+ }
+ onChanged();
+ } else {
+ workspaceBuilder_.mergeFrom(value);
+ }
+ bitField0_ |= 0x00000001;
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public Builder clearWorkspace() {
+ if (workspaceBuilder_ == null) {
+ workspace_ = null;
+ onChanged();
+ } else {
+ workspaceBuilder_.clear();
+ }
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public org.mlflow.api.proto.Service.Workspace.Builder getWorkspaceBuilder() {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return getWorkspaceFieldBuilder().getBuilder();
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ public org.mlflow.api.proto.Service.WorkspaceOrBuilder getWorkspaceOrBuilder() {
+ if (workspaceBuilder_ != null) {
+ return workspaceBuilder_.getMessageOrBuilder();
+ } else {
+ return workspace_ == null ?
+ org.mlflow.api.proto.Service.Workspace.getDefaultInstance() : workspace_;
+ }
+ }
+ /**
+ *
+ * Metadata describing the updated workspace.
+ *
+ *
+ * optional .mlflow.Workspace workspace = 1;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>
+ getWorkspaceFieldBuilder() {
+ if (workspaceBuilder_ == null) {
+ workspaceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ org.mlflow.api.proto.Service.Workspace, org.mlflow.api.proto.Service.Workspace.Builder, org.mlflow.api.proto.Service.WorkspaceOrBuilder>(
+ getWorkspace(),
+ getParentForChildren(),
+ isClean());
+ workspace_ = null;
+ }
+ return workspaceBuilder_;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.UpdateWorkspace.Response)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.UpdateWorkspace.Response)
+ private static final org.mlflow.api.proto.Service.UpdateWorkspace.Response DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.UpdateWorkspace.Response();
+ }
+
+ public static org.mlflow.api.proto.Service.UpdateWorkspace.Response getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public Response parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Response(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace.Response getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private int bitField0_;
+ public static final int WORKSPACE_NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object workspaceName_;
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ @java.lang.Override
+ public boolean hasWorkspaceName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ @java.lang.Override
+ public java.lang.String getWorkspaceName() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ workspaceName_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getWorkspaceNameBytes() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ workspaceName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int DESCRIPTION_FIELD_NUMBER = 2;
+ private volatile java.lang.Object description_;
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ @java.lang.Override
+ public boolean hasDescription() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ @java.lang.Override
+ public java.lang.String getDescription() {
+ java.lang.Object ref = description_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ description_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getDescriptionBytes() {
+ java.lang.Object ref = description_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ description_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, workspaceName_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, workspaceName_);
+ }
+ if (((bitField0_ & 0x00000002) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.UpdateWorkspace)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.UpdateWorkspace other = (org.mlflow.api.proto.Service.UpdateWorkspace) obj;
+
+ if (hasWorkspaceName() != other.hasWorkspaceName()) return false;
+ if (hasWorkspaceName()) {
+ if (!getWorkspaceName()
+ .equals(other.getWorkspaceName())) return false;
+ }
+ if (hasDescription() != other.hasDescription()) return false;
+ if (hasDescription()) {
+ if (!getDescription()
+ .equals(other.getDescription())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasWorkspaceName()) {
+ hash = (37 * hash) + WORKSPACE_NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspaceName().hashCode();
+ }
+ if (hasDescription()) {
+ hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
+ hash = (53 * hash) + getDescription().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.UpdateWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.UpdateWorkspace prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ *
+ * Update workspace metadata.
+ *
+ *
+ * Protobuf type {@code mlflow.UpdateWorkspace}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.UpdateWorkspace)
+ org.mlflow.api.proto.Service.UpdateWorkspaceOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.UpdateWorkspace.class, org.mlflow.api.proto.Service.UpdateWorkspace.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.UpdateWorkspace.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ workspaceName_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ description_ = "";
+ bitField0_ = (bitField0_ & ~0x00000002);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_UpdateWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.UpdateWorkspace.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace build() {
+ org.mlflow.api.proto.Service.UpdateWorkspace result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace buildPartial() {
+ org.mlflow.api.proto.Service.UpdateWorkspace result = new org.mlflow.api.proto.Service.UpdateWorkspace(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.workspaceName_ = workspaceName_;
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.description_ = description_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.UpdateWorkspace) {
+ return mergeFrom((org.mlflow.api.proto.Service.UpdateWorkspace)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.UpdateWorkspace other) {
+ if (other == org.mlflow.api.proto.Service.UpdateWorkspace.getDefaultInstance()) return this;
+ if (other.hasWorkspaceName()) {
+ bitField0_ |= 0x00000001;
+ workspaceName_ = other.workspaceName_;
+ onChanged();
+ }
+ if (other.hasDescription()) {
+ bitField0_ |= 0x00000002;
+ description_ = other.description_;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.UpdateWorkspace parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.UpdateWorkspace) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.lang.Object workspaceName_ = "";
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ public boolean hasWorkspaceName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ public java.lang.String getWorkspaceName() {
+ java.lang.Object ref = workspaceName_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ workspaceName_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ public com.google.protobuf.ByteString
+ getWorkspaceNameBytes() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ workspaceName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @param value The workspaceName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setWorkspaceName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ workspaceName_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return This builder for chaining.
+ */
+ public Builder clearWorkspaceName() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ workspaceName_ = getDefaultInstance().getWorkspaceName();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Name of the workspace to update.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @param value The bytes for workspaceName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setWorkspaceNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ workspaceName_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object description_ = "";
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return Whether the description field is set.
+ */
+ public boolean hasDescription() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return The description.
+ */
+ public java.lang.String getDescription() {
+ java.lang.Object ref = description_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ description_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return The bytes for description.
+ */
+ public com.google.protobuf.ByteString
+ getDescriptionBytes() {
+ java.lang.Object ref = description_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ description_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @param value The description to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDescription(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ description_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @return This builder for chaining.
+ */
+ public Builder clearDescription() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ description_ = getDefaultInstance().getDescription();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Optional description update.
+ *
+ *
+ * optional string description = 2;
+ * @param value The bytes for description to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDescriptionBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ description_ = value;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.UpdateWorkspace)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.UpdateWorkspace)
+ private static final org.mlflow.api.proto.Service.UpdateWorkspace DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.UpdateWorkspace();
+ }
+
+ public static org.mlflow.api.proto.Service.UpdateWorkspace getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public UpdateWorkspace parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new UpdateWorkspace(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.UpdateWorkspace getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ public interface DeleteWorkspaceOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.DeleteWorkspace)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ boolean hasWorkspaceName();
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ java.lang.String getWorkspaceName();
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ com.google.protobuf.ByteString
+ getWorkspaceNameBytes();
+ }
+ /**
+ *
+ * Delete a workspace.
+ *
+ *
+ * Protobuf type {@code mlflow.DeleteWorkspace}
+ */
+ public static final class DeleteWorkspace extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.DeleteWorkspace)
+ DeleteWorkspaceOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use DeleteWorkspace.newBuilder() to construct.
+ private DeleteWorkspace(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private DeleteWorkspace() {
+ workspaceName_ = "";
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new DeleteWorkspace();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private DeleteWorkspace(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10: {
+ com.google.protobuf.ByteString bs = input.readBytes();
+ bitField0_ |= 0x00000001;
+ workspaceName_ = bs;
+ break;
+ }
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.DeleteWorkspace.class, org.mlflow.api.proto.Service.DeleteWorkspace.Builder.class);
+ }
+
+ public interface ResponseOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:mlflow.DeleteWorkspace.Response)
+ com.google.protobuf.MessageOrBuilder {
+ }
+ /**
+ * Protobuf type {@code mlflow.DeleteWorkspace.Response}
+ */
+ public static final class Response extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:mlflow.DeleteWorkspace.Response)
+ ResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Response.newBuilder() to construct.
+ private Response(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
+ super(builder);
+ }
+ private Response() {
+ }
+
+ @java.lang.Override
+ @SuppressWarnings({"unused"})
+ protected java.lang.Object newInstance(
+ UnusedPrivateParameter unused) {
+ return new Response();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Response(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.DeleteWorkspace.Response.class, org.mlflow.api.proto.Service.DeleteWorkspace.Response.Builder.class);
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.DeleteWorkspace.Response)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.DeleteWorkspace.Response other = (org.mlflow.api.proto.Service.DeleteWorkspace.Response) obj;
+
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.DeleteWorkspace.Response prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code mlflow.DeleteWorkspace.Response}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.DeleteWorkspace.Response)
+ org.mlflow.api.proto.Service.DeleteWorkspace.ResponseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_Response_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.DeleteWorkspace.Response.class, org.mlflow.api.proto.Service.DeleteWorkspace.Response.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.DeleteWorkspace.Response.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_Response_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace.Response getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.DeleteWorkspace.Response.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace.Response build() {
+ org.mlflow.api.proto.Service.DeleteWorkspace.Response result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace.Response buildPartial() {
+ org.mlflow.api.proto.Service.DeleteWorkspace.Response result = new org.mlflow.api.proto.Service.DeleteWorkspace.Response(this);
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.DeleteWorkspace.Response) {
+ return mergeFrom((org.mlflow.api.proto.Service.DeleteWorkspace.Response)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.DeleteWorkspace.Response other) {
+ if (other == org.mlflow.api.proto.Service.DeleteWorkspace.Response.getDefaultInstance()) return this;
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.DeleteWorkspace.Response parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.DeleteWorkspace.Response) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.DeleteWorkspace.Response)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.DeleteWorkspace.Response)
+ private static final org.mlflow.api.proto.Service.DeleteWorkspace.Response DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.DeleteWorkspace.Response();
+ }
+
+ public static org.mlflow.api.proto.Service.DeleteWorkspace.Response getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public Response parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Response(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace.Response getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private int bitField0_;
+ public static final int WORKSPACE_NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object workspaceName_;
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ @java.lang.Override
+ public boolean hasWorkspaceName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ @java.lang.Override
+ public java.lang.String getWorkspaceName() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ workspaceName_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString
+ getWorkspaceNameBytes() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ workspaceName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, workspaceName_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, workspaceName_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.mlflow.api.proto.Service.DeleteWorkspace)) {
+ return super.equals(obj);
+ }
+ org.mlflow.api.proto.Service.DeleteWorkspace other = (org.mlflow.api.proto.Service.DeleteWorkspace) obj;
+
+ if (hasWorkspaceName() != other.hasWorkspaceName()) return false;
+ if (hasWorkspaceName()) {
+ if (!getWorkspaceName()
+ .equals(other.getWorkspaceName())) return false;
+ }
+ if (!unknownFields.equals(other.unknownFields)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasWorkspaceName()) {
+ hash = (37 * hash) + WORKSPACE_NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getWorkspaceName().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static org.mlflow.api.proto.Service.DeleteWorkspace parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(org.mlflow.api.proto.Service.DeleteWorkspace prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ *
+ * Delete a workspace.
+ *
+ *
+ * Protobuf type {@code mlflow.DeleteWorkspace}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder implements
+ // @@protoc_insertion_point(builder_implements:mlflow.DeleteWorkspace)
+ org.mlflow.api.proto.Service.DeleteWorkspaceOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.mlflow.api.proto.Service.DeleteWorkspace.class, org.mlflow.api.proto.Service.DeleteWorkspace.Builder.class);
+ }
+
+ // Construct using org.mlflow.api.proto.Service.DeleteWorkspace.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ workspaceName_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.mlflow.api.proto.Service.internal_static_mlflow_DeleteWorkspace_descriptor;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace getDefaultInstanceForType() {
+ return org.mlflow.api.proto.Service.DeleteWorkspace.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace build() {
+ org.mlflow.api.proto.Service.DeleteWorkspace result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace buildPartial() {
+ org.mlflow.api.proto.Service.DeleteWorkspace result = new org.mlflow.api.proto.Service.DeleteWorkspace(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.workspaceName_ = workspaceName_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ @java.lang.Override
+ public Builder clone() {
+ return super.clone();
+ }
+ @java.lang.Override
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.setField(field, value);
+ }
+ @java.lang.Override
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return super.clearField(field);
+ }
+ @java.lang.Override
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return super.clearOneof(oneof);
+ }
+ @java.lang.Override
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return super.setRepeatedField(field, index, value);
+ }
+ @java.lang.Override
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return super.addRepeatedField(field, value);
+ }
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.mlflow.api.proto.Service.DeleteWorkspace) {
+ return mergeFrom((org.mlflow.api.proto.Service.DeleteWorkspace)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.mlflow.api.proto.Service.DeleteWorkspace other) {
+ if (other == org.mlflow.api.proto.Service.DeleteWorkspace.getDefaultInstance()) return this;
+ if (other.hasWorkspaceName()) {
+ bitField0_ |= 0x00000001;
+ workspaceName_ = other.workspaceName_;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.mlflow.api.proto.Service.DeleteWorkspace parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.mlflow.api.proto.Service.DeleteWorkspace) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.lang.Object workspaceName_ = "";
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return Whether the workspaceName field is set.
+ */
+ public boolean hasWorkspaceName() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The workspaceName.
+ */
+ public java.lang.String getWorkspaceName() {
+ java.lang.Object ref = workspaceName_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ workspaceName_ = s;
+ }
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return The bytes for workspaceName.
+ */
+ public com.google.protobuf.ByteString
+ getWorkspaceNameBytes() {
+ java.lang.Object ref = workspaceName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ workspaceName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @param value The workspaceName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setWorkspaceName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ workspaceName_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @return This builder for chaining.
+ */
+ public Builder clearWorkspaceName() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ workspaceName_ = getDefaultInstance().getWorkspaceName();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * Name of the workspace to delete.
+ *
+ *
+ * optional string workspace_name = 1 [(.mlflow.validate_required) = true];
+ * @param value The bytes for workspaceName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setWorkspaceNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ workspaceName_ = value;
+ onChanged();
+ return this;
+ }
+ @java.lang.Override
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFields(unknownFields);
+ }
+
+ @java.lang.Override
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:mlflow.DeleteWorkspace)
+ }
+
+ // @@protoc_insertion_point(class_scope:mlflow.DeleteWorkspace)
+ private static final org.mlflow.api.proto.Service.DeleteWorkspace DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new org.mlflow.api.proto.Service.DeleteWorkspace();
+ }
+
+ public static org.mlflow.api.proto.Service.DeleteWorkspace getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ @java.lang.Deprecated public static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public DeleteWorkspace parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new DeleteWorkspace(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public org.mlflow.api.proto.Service.DeleteWorkspace getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
private static final com.google.protobuf.Descriptors.Descriptor
internal_static_mlflow_Metric_descriptor;
private static final
@@ -187719,6 +195544,61 @@ public org.mlflow.api.proto.Service.Scorer getDefaultInstanceForType() {
private static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_mlflow_Scorer_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_Workspace_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_Workspace_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_ListWorkspaces_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_ListWorkspaces_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_ListWorkspaces_Response_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_ListWorkspaces_Response_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_CreateWorkspace_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_CreateWorkspace_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_CreateWorkspace_Response_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_CreateWorkspace_Response_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_GetWorkspace_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_GetWorkspace_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_GetWorkspace_Response_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_GetWorkspace_Response_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_UpdateWorkspace_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_UpdateWorkspace_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_UpdateWorkspace_Response_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_UpdateWorkspace_Response_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_DeleteWorkspace_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_DeleteWorkspace_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_mlflow_DeleteWorkspace_Response_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_mlflow_DeleteWorkspace_Response_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
@@ -188174,307 +196054,344 @@ public org.mlflow.api.proto.Service.Scorer getDefaultInstanceForType() {
"id\030\001 \001(\005\022\023\n\013scorer_name\030\002 \001(\t\022\026\n\016scorer_" +
"version\030\003 \001(\005\022\031\n\021serialized_scorer\030\004 \001(\t" +
"\022\025\n\rcreation_time\030\005 \001(\003\022\021\n\tscorer_id\030\006 \001" +
- "(\t*6\n\010ViewType\022\017\n\013ACTIVE_ONLY\020\001\022\020\n\014DELET" +
- "ED_ONLY\020\002\022\007\n\003ALL\020\003*I\n\nSourceType\022\014\n\010NOTE" +
- "BOOK\020\001\022\007\n\003JOB\020\002\022\013\n\007PROJECT\020\003\022\t\n\005LOCAL\020\004\022" +
- "\014\n\007UNKNOWN\020\350\007*M\n\tRunStatus\022\013\n\007RUNNING\020\001\022" +
- "\r\n\tSCHEDULED\020\002\022\014\n\010FINISHED\020\003\022\n\n\006FAILED\020\004" +
- "\022\n\n\006KILLED\020\005*O\n\013TraceStatus\022\034\n\030TRACE_STA" +
- "TUS_UNSPECIFIED\020\000\022\006\n\002OK\020\001\022\t\n\005ERROR\020\002\022\017\n\013" +
- "IN_PROGRESS\020\003*\212\001\n\021LoggedModelStatus\022#\n\037L" +
- "OGGED_MODEL_STATUS_UNSPECIFIED\020\000\022\030\n\024LOGG" +
- "ED_MODEL_PENDING\020\001\022\026\n\022LOGGED_MODEL_READY" +
- "\020\002\022\036\n\032LOGGED_MODEL_UPLOAD_FAILED\020\0032\252Z\n\rM" +
- "lflowService\022\246\001\n\023getExperimentByName\022\033.m" +
- "lflow.GetExperimentByName\032$.mlflow.GetEx" +
- "perimentByName.Response\"L\362\206\031H\n,\n\003GET\022\037/m" +
- "lflow/experiments/get-by-name\032\004\010\002\020\000\020\001*\026G" +
- "et Experiment By Name\022\224\001\n\020createExperime" +
- "nt\022\030.mlflow.CreateExperiment\032!.mlflow.Cr" +
- "eateExperiment.Response\"C\362\206\031?\n(\n\004POST\022\032/" +
- "mlflow/experiments/create\032\004\010\002\020\000\020\001*\021Creat" +
- "e Experiment\022\301\001\n\021searchExperiments\022\031.mlf" +
- "low.SearchExperiments\032\".mlflow.SearchExp" +
- "eriments.Response\"m\362\206\031i\n(\n\004POST\022\032/mlflow" +
- "/experiments/search\032\004\010\002\020\000\n\'\n\003GET\022\032/mlflo" +
- "w/experiments/search\032\004\010\002\020\000\020\001*\022Search Exp" +
- "eriments\022\210\001\n\rgetExperiment\022\025.mlflow.GetE" +
- "xperiment\032\036.mlflow.GetExperiment.Respons" +
- "e\"@\362\206\0318\n$\n\003GET\022\027/mlflow/experiments/get\032" +
- "\004\010\002\020\000\020\001*\016Get Experiment\272\214\031\000\022\224\001\n\020deleteEx" +
- "periment\022\030.mlflow.DeleteExperiment\032!.mlf" +
- "low.DeleteExperiment.Response\"C\362\206\031?\n(\n\004P" +
- "OST\022\032/mlflow/experiments/delete\032\004\010\002\020\000\020\001*" +
- "\021Delete Experiment\022\231\001\n\021restoreExperiment" +
- "\022\031.mlflow.RestoreExperiment\032\".mlflow.Res" +
- "toreExperiment.Response\"E\362\206\031A\n)\n\004POST\022\033/" +
- "mlflow/experiments/restore\032\004\010\002\020\000\020\001*\022Rest" +
- "ore Experiment\022\224\001\n\020updateExperiment\022\030.ml" +
- "flow.UpdateExperiment\032!.mlflow.UpdateExp" +
- "eriment.Response\"C\362\206\031?\n(\n\004POST\022\032/mlflow/" +
- "experiments/update\032\004\010\002\020\000\020\001*\021Update Exper" +
- "iment\022q\n\tcreateRun\022\021.mlflow.CreateRun\032\032." +
- "mlflow.CreateRun.Response\"5\362\206\0311\n!\n\004POST\022" +
- "\023/mlflow/runs/create\032\004\010\002\020\000\020\001*\nCreate Run" +
- "\022q\n\tupdateRun\022\021.mlflow.UpdateRun\032\032.mlflo" +
- "w.UpdateRun.Response\"5\362\206\0311\n!\n\004POST\022\023/mlf" +
- "low/runs/update\032\004\010\002\020\000\020\001*\nUpdate Run\022q\n\td" +
- "eleteRun\022\021.mlflow.DeleteRun\032\032.mlflow.Del" +
- "eteRun.Response\"5\362\206\0311\n!\n\004POST\022\023/mlflow/r" +
- "uns/delete\032\004\010\002\020\000\020\001*\nDelete Run\022v\n\nrestor" +
- "eRun\022\022.mlflow.RestoreRun\032\033.mlflow.Restor" +
- "eRun.Response\"7\362\206\0313\n\"\n\004POST\022\024/mlflow/run" +
- "s/restore\032\004\010\002\020\000\020\001*\013Restore Run\022u\n\tlogMet" +
- "ric\022\021.mlflow.LogMetric\032\032.mlflow.LogMetri" +
- "c.Response\"9\362\206\0315\n%\n\004POST\022\027/mlflow/runs/l" +
- "og-metric\032\004\010\002\020\000\020\001*\nLog Metric\022t\n\010logPara" +
- "m\022\020.mlflow.LogParam\032\031.mlflow.LogParam.Re" +
- "sponse\";\362\206\0317\n(\n\004POST\022\032/mlflow/runs/log-p" +
- "arameter\032\004\010\002\020\000\020\001*\tLog Param\022\241\001\n\020setExper" +
- "imentTag\022\030.mlflow.SetExperimentTag\032!.mlf" +
- "low.SetExperimentTag.Response\"P\362\206\031L\n4\n\004P" +
- "OST\022&/mlflow/experiments/set-experiment-" +
- "tag\032\004\010\002\020\000\020\001*\022Set Experiment Tag\022\260\001\n\023dele" +
- "teExperimentTag\022\033.mlflow.DeleteExperimen" +
- "tTag\032$.mlflow.DeleteExperimentTag.Respon" +
- "se\"V\362\206\031R\n7\n\004POST\022)/mlflow/experiments/de" +
- "lete-experiment-tag\032\004\010\002\020\000\020\001*\025Delete Expe" +
- "riment Tag\022f\n\006setTag\022\016.mlflow.SetTag\032\027.m" +
- "lflow.SetTag.Response\"3\362\206\031/\n\"\n\004POST\022\024/ml" +
- "flow/runs/set-tag\032\004\010\002\020\000\020\001*\007Set Tag\022\210\001\n\013s" +
- "etTraceTag\022\023.mlflow.SetTraceTag\032\034.mlflow" +
- ".SetTraceTag.Response\"F\362\206\031B\n/\n\005PATCH\022 /m" +
- "lflow/traces/{request_id}/tags\032\004\010\002\020\000\020\003*\r" +
- "Set Trace Tag\022\217\001\n\rsetTraceTagV3\022\025.mlflow" +
- ".SetTraceTagV3\032\036.mlflow.SetTraceTagV3.Re" +
- "sponse\"G\362\206\031C\n-\n\005PATCH\022\036/mlflow/traces/{t" +
- "race_id}/tags\032\004\010\003\020\000\020\003*\020Set Trace Tag V3\022" +
- "\225\001\n\016deleteTraceTag\022\026.mlflow.DeleteTraceT" +
- "ag\032\037.mlflow.DeleteTraceTag.Response\"J\362\206\031" +
- "F\n0\n\006DELETE\022 /mlflow/traces/{request_id}" +
- "/tags\032\004\010\002\020\000\020\003*\020Delete Trace Tag\022\234\001\n\020dele" +
- "teTraceTagV3\022\030.mlflow.DeleteTraceTagV3\032!" +
- ".mlflow.DeleteTraceTagV3.Response\"K\362\206\031G\n" +
- ".\n\006DELETE\022\036/mlflow/traces/{trace_id}/tag" +
- "s\032\004\010\003\020\000\020\003*\023Delete Trace Tag V3\022u\n\tdelete" +
- "Tag\022\021.mlflow.DeleteTag\032\032.mlflow.DeleteTa" +
- "g.Response\"9\362\206\0315\n%\n\004POST\022\027/mlflow/runs/d" +
- "elete-tag\032\004\010\002\020\000\020\001*\nDelete Tag\022e\n\006getRun\022" +
- "\016.mlflow.GetRun\032\027.mlflow.GetRun.Response" +
- "\"2\362\206\031*\n\035\n\003GET\022\020/mlflow/runs/get\032\004\010\002\020\000\020\001*" +
- "\007Get Run\272\214\031\000\022y\n\nsearchRuns\022\022.mlflow.Sear" +
- "chRuns\032\033.mlflow.SearchRuns.Response\":\362\206\031" +
- "2\n!\n\004POST\022\023/mlflow/runs/search\032\004\010\002\020\000\020\001*\013" +
- "Search Runs\272\214\031\000\022\207\001\n\rlistArtifacts\022\025.mlfl" +
- "ow.ListArtifacts\032\036.mlflow.ListArtifacts." +
- "Response\"?\362\206\0317\n#\n\003GET\022\026/mlflow/artifacts" +
- "/list\032\004\010\002\020\000\020\001*\016List Artifacts\272\214\031\000\022\225\001\n\020ge" +
- "tMetricHistory\022\030.mlflow.GetMetricHistory" +
- "\032!.mlflow.GetMetricHistory.Response\"D\362\206\031" +
- "@\n(\n\003GET\022\033/mlflow/metrics/get-history\032\004\010" +
- "\002\020\000\020\001*\022Get Metric History\022\267\001\n\034getMetricH" +
- "istoryBulkInterval\022$.mlflow.GetMetricHis" +
- "toryBulkInterval\032-.mlflow.GetMetricHisto" +
- "ryBulkInterval.Response\"B\362\206\031:\n6\n\003GET\022)/m" +
- "lflow/metrics/get-history-bulk-interval\032" +
- "\004\010\002\020\013\020\003\272\214\031\000\022p\n\010logBatch\022\020.mlflow.LogBatc" +
- "h\032\031.mlflow.LogBatch.Response\"7\362\206\0313\n$\n\004PO" +
- "ST\022\026/mlflow/runs/log-batch\032\004\010\002\020\000\020\001*\tLog " +
- "Batch\022p\n\010logModel\022\020.mlflow.LogModel\032\031.ml" +
- "flow.LogModel.Response\"7\362\206\0313\n$\n\004POST\022\026/m" +
- "lflow/runs/log-model\032\004\010\002\020\000\020\001*\tLog Model\022" +
- "u\n\tlogInputs\022\021.mlflow.LogInputs\032\032.mlflow" +
- ".LogInputs.Response\"9\362\206\0315\n%\n\004POST\022\027/mlfl" +
- "ow/runs/log-inputs\032\004\010\002\020\000\020\001*\nLog Inputs\022v" +
- "\n\nlogOutputs\022\022.mlflow.LogOutputs\032\033.mlflo" +
- "w.LogOutputs.Response\"7\362\206\0313\n\"\n\004POST\022\024/ml" +
- "flow/runs/outputs\032\004\010\002\020\000\020\003*\013Log Outputs\022\207" +
- "\001\n\016searchDatasets\022\026.mlflow.SearchDataset" +
- "s\032\037.mlflow.SearchDatasets.Response\"<\362\206\0314" +
- "\n0\n\004POST\022\"mlflow/experiments/search-data" +
- "sets\032\004\010\002\020\000\020\003\272\214\031\000\022p\n\nstartTrace\022\022.mlflow." +
- "StartTrace\032\033.mlflow.StartTrace.Response\"" +
- "1\362\206\031-\n\034\n\004POST\022\016/mlflow/traces\032\004\010\002\020\000\020\003*\013S" +
- "tart Trace\022v\n\010endTrace\022\020.mlflow.EndTrace" +
- "\032\031.mlflow.EndTrace.Response\"=\362\206\0319\n*\n\005PAT" +
- "CH\022\033/mlflow/traces/{request_id}\032\004\010\002\020\000\020\003*" +
- "\tEnd Trace\022\211\001\n\014getTraceInfo\022\024.mlflow.Get" +
- "TraceInfo\032\035.mlflow.GetTraceInfo.Response" +
- "\"D\362\206\031@\n-\n\003GET\022 /mlflow/traces/{request_i" +
- "d}/info\032\004\010\002\020\000\020\003*\rGet TraceInfo\022\213\001\n\016getTr" +
- "aceInfoV3\022\026.mlflow.GetTraceInfoV3\032\037.mlfl" +
- "ow.GetTraceInfoV3.Response\"@\362\206\031<\n&\n\003GET\022" +
- "\031/mlflow/traces/{trace_id}\032\004\010\003\020\000\020\003*\020Get " +
- "TraceInfo v3\022n\n\010getTrace\022\020.mlflow.GetTra" +
- "ce\032\031.mlflow.GetTrace.Response\"5\362\206\0311\n\037\n\003G" +
- "ET\022\022/mlflow/traces/get\032\004\010\003\020\000\020\003*\014Get Trac" +
- "e v3\022\203\001\n\016batchGetTraces\022\026.mlflow.BatchGe" +
- "tTraces\032\037.mlflow.BatchGetTraces.Response" +
- "\"8\362\206\0314\n$\n\003GET\022\027/mlflow/traces/batchGet\032\004" +
- "\010\003\020\000\020\003*\nGet Traces\022w\n\014searchTraces\022\024.mlf" +
- "low.SearchTraces\032\035.mlflow.SearchTraces.R" +
- "esponse\"2\362\206\031.\n\033\n\003GET\022\016/mlflow/traces\032\004\010\002" +
- "\020\000\020\003*\rSearch Traces\022\210\001\n\016searchTracesV3\022\026" +
- ".mlflow.SearchTracesV3\032\037.mlflow.SearchTr" +
- "acesV3.Response\"=\362\206\0319\n#\n\004POST\022\025/mlflow/t" +
- "races/search\032\004\010\003\020\000\020\003*\020Search Traces V3\022i" +
- "\n\014startTraceV3\022\024.mlflow.StartTraceV3\032\035.m" +
- "lflow.StartTraceV3.Response\"$\362\206\031 \n\034\n\004POS" +
- "T\022\016/mlflow/traces\032\004\010\003\020\000\020\003\022\222\001\n\017linkTraces" +
- "ToRun\022\027.mlflow.LinkTracesToRun\032 .mlflow." +
- "LinkTracesToRun.Response\"D\362\206\031@\n(\n\004POST\022\032" +
- "/mlflow/traces/link-to-run\032\004\010\002\020\000\020\003*\022Link" +
- " Traces to Run\022\242\001\n\031searchUnifiedTraceHan" +
- "dler\022\033.mlflow.SearchUnifiedTraces\032$.mlfl" +
- "ow.SearchUnifiedTraces.Response\"B\362\206\031>\n#\n" +
- "\003GET\022\026/mlflow/unified-traces\032\004\010\002\020\000\020\003*\025Se" +
- "arch Unified Traces\022\257\001\n\025getOnlineTraceDe" +
- "tails\022\035.mlflow.GetOnlineTraceDetails\032&.m" +
- "lflow.GetOnlineTraceDetails.Response\"O\362\206" +
- "\031K\n-\n\003GET\022 /mlflow/get-online-trace-deta" +
- "ils\032\004\010\002\020\000\020\003*\030Get Online Trace Details\022\206\001" +
- "\n\014deleteTraces\022\024.mlflow.DeleteTraces\032\035.m" +
- "lflow.DeleteTraces.Response\"A\362\206\031=\n*\n\004POS" +
- "T\022\034/mlflow/traces/delete-traces\032\004\010\002\020\000\020\003*" +
- "\rDelete Traces\022\217\001\n\016deleteTracesV3\022\026.mlfl" +
- "ow.DeleteTracesV3\032\037.mlflow.DeleteTracesV" +
- "3.Response\"D\362\206\031@\n*\n\004POST\022\034/mlflow/traces" +
- "/delete-traces\032\004\010\003\020\000\020\003*\020Delete Traces V3" +
- "\022\343\001\n\037calculateTraceFilterCorrelation\022\'.m" +
- "lflow.CalculateTraceFilterCorrelation\0320." +
- "mlflow.CalculateTraceFilterCorrelation.R" +
- "esponse\"e\362\206\031a\n9\n\004POST\022+/mlflow/traces/ca" +
- "lculate-filter-correlation\032\004\010\003\020\000\020\003*\"Calc" +
- "ulate Trace Filter Correlation\022\224\001\n\021creat" +
- "eLoggedModel\022\031.mlflow.CreateLoggedModel\032" +
- "\".mlflow.CreateLoggedModel.Response\"@\362\206\031" +
- "<\n#\n\004POST\022\025/mlflow/logged-models\032\004\010\002\020\000\020\003" +
- "*\023Create Logged Model\022\250\001\n\023finalizeLogged" +
- "Model\022\033.mlflow.FinalizeLoggedModel\032$.mlf" +
- "low.FinalizeLoggedModel.Response\"N\362\206\031J\n/" +
- "\n\005PATCH\022 /mlflow/logged-models/{model_id" +
- "}\032\004\010\002\020\000\020\003*\025Finalize Logged Model\022\222\001\n\016get" +
- "LoggedModel\022\026.mlflow.GetLoggedModel\032\037.ml" +
- "flow.GetLoggedModel.Response\"G\362\206\031C\n-\n\003GE" +
- "T\022 /mlflow/logged-models/{model_id}\032\004\010\002\020" +
- "\000\020\003*\020Get Logged Model\022\243\001\n\021deleteLoggedMo" +
- "del\022\031.mlflow.DeleteLoggedModel\032\".mlflow." +
- "DeleteLoggedModel.Response\"O\362\206\031K\n0\n\006DELE" +
- "TE\022 /mlflow/logged-models/{model_id}\032\004\010\002" +
- "\020\000\020\003*\025Delete a Logged Model\022\236\001\n\022searchLo" +
- "ggedModels\022\032.mlflow.SearchLoggedModels\032#" +
- ".mlflow.SearchLoggedModels.Response\"G\362\206\031" +
- "C\n*\n\004POST\022\034/mlflow/logged-models/search\032" +
- "\004\010\002\020\000\020\003*\023Search LoggedModels\022\251\001\n\022setLogg" +
- "edModelTags\022\032.mlflow.SetLoggedModelTags\032" +
- "#.mlflow.SetLoggedModelTags.Response\"R\362\206" +
- "\031N\n4\n\005PATCH\022%/mlflow/logged-models/{mode" +
- "l_id}/tags\032\004\010\002\020\000\020\003*\024Set Logged Model Tag" +
- "\022\275\001\n\024deleteLoggedModelTag\022\034.mlflow.Delet" +
- "eLoggedModelTag\032%.mlflow.DeleteLoggedMod" +
- "elTag.Response\"`\362\206\031\\\n?\n\006DELETE\022//mlflow/" +
- "logged-models/{model_id}/tags/{tag_key}\032" +
- "\004\010\002\020\000\020\003*\027Delete Logged Model Tag\022\326\001\n\030lis" +
- "tLoggedModelArtifacts\022 .mlflow.ListLogge" +
- "dModelArtifacts\032).mlflow.ListLoggedModel" +
- "Artifacts.Response\"m\362\206\031i\nC\n\003GET\0226/mlflow" +
- "/logged-models/{model_id}/artifacts/dire" +
- "ctories\032\004\010\002\020\000\020\003* List Artifacts for Logg" +
- "ed Models\022\301\001\n\024LogLoggedModelParams\022#.mlf" +
- "low.LogLoggedModelParamsRequest\032,.mlflow" +
- ".LogLoggedModelParamsRequest.Response\"V\362" +
- "\206\031R\n5\n\004POST\022\'/mlflow/logged-models/{mode" +
- "l_id}/params\032\004\010\002\020\000\020\003*\027Log Logged Model P" +
- "arams\022\260\001\n\rGetAssessment\022\034.mlflow.GetAsse" +
- "ssmentRequest\032%.mlflow.GetAssessmentRequ" +
- "est.Response\"Z\362\206\031V\nB\n\003GET\0225/mlflow/trace" +
- "s/{trace_id}/assessments/{assessment_id}" +
- "\032\004\010\003\020\000\020\003*\016Get Assessment\022\337\001\n\020createAsses" +
- "sment\022\030.mlflow.CreateAssessment\032!.mlflow" +
- ".CreateAssessment.Response\"\215\001\362\206\031\210\001\n>\n\004PO" +
- "ST\0220/mlflow/traces/{assessment.trace_id}" +
- "/assessments\032\004\010\003\020\000\020\003\030\350\007\030\356\007\030\014\030\001*:Create a" +
- "n assessment of a trace or a span within" +
- " the trace\022\320\001\n\020updateAssessment\022\030.mlflow" +
- ".UpdateAssessment\032!.mlflow.UpdateAssessm" +
- "ent.Response\"\177\362\206\031{\nD\n\005PATCH\0225/mlflow/tra" +
- "ces/{trace_id}/assessments/{assessment_i" +
- "d}\032\004\010\003\020\000\020\003\030\350\007\030\356\007\030\001*)Update an existing a" +
- "ssessment on a trace.\022\261\001\n\020deleteAssessme" +
- "nt\022\030.mlflow.DeleteAssessment\032!.mlflow.De" +
- "leteAssessment.Response\"`\362\206\031\\\nE\n\006DELETE\022" +
- "5/mlflow/traces/{trace_id}/assessments/{" +
- "assessment_id}\032\004\010\003\020\000\020\003*\021Delete Assessmen" +
- "t\022\232\001\n\rcreateDataset\022\025.mlflow.CreateDatas" +
- "et\032\036.mlflow.CreateDataset.Response\"R\362\206\031N" +
- "\n%\n\004POST\022\027/mlflow/datasets/create\032\004\010\003\020\000\020" +
- "\003\030\350\007\030\356\007\030\014\030\001*\031Create Evaluation Dataset\022\221" +
- "\001\n\ngetDataset\022\022.mlflow.GetDataset\032\033.mlfl" +
- "ow.GetDataset.Response\"R\362\206\031N\n*\n\003GET\022\035/ml" +
- "flow/datasets/{dataset_id}\032\004\010\003\020\000\020\003\030\350\007\030\272\027" +
- "\030\001*\026Get Evaluation Dataset\022\240\001\n\rdeleteDat" +
- "aset\022\025.mlflow.DeleteDataset\032\036.mlflow.Del" +
- "eteDataset.Response\"X\362\206\031T\n-\n\006DELETE\022\035/ml" +
- "flow/datasets/{dataset_id}\032\004\010\003\020\000\020\003\030\350\007\030\272\027" +
- "\030\001*\031Delete Evaluation Dataset\022\335\001\n\030search" +
- "EvaluationDatasets\022 .mlflow.SearchEvalua" +
- "tionDatasets\032).mlflow.SearchEvaluationDa" +
- "tasets.Response\"t\362\206\031p\n%\n\004POST\022\027/mlflow/d" +
- "atasets/search\032\004\010\003\020\000\n$\n\003GET\022\027/mlflow/dat" +
- "asets/search\032\004\010\003\020\000\020\003\030\350\007\030\001*\032Search Evalua" +
- "tion Datasets\022\251\001\n\016setDatasetTags\022\026.mlflo" +
- "w.SetDatasetTags\032\037.mlflow.SetDatasetTags" +
- ".Response\"^\362\206\031Z\n1\n\005PATCH\022\"/mlflow/datase" +
- "ts/{dataset_id}/tags\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\033Se" +
- "t Evaluation Dataset Tags\022\270\001\n\020deleteData" +
- "setTag\022\030.mlflow.DeleteDatasetTag\032!.mlflo" +
- "w.DeleteDatasetTag.Response\"g\362\206\031c\n8\n\006DEL" +
- "ETE\022(/mlflow/datasets/{dataset_id}/tags/" +
- "{key}\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\035Delete Evaluation" +
- " Dataset Tag\022\303\001\n\024upsertDatasetRecords\022\034." +
- "mlflow.UpsertDatasetRecords\032%.mlflow.Ups" +
- "ertDatasetRecords.Response\"f\362\206\031b\n3\n\004POST" +
- "\022%/mlflow/datasets/{dataset_id}/records\032" +
- "\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*!Upsert Evaluation Datas" +
- "et Records\022\326\001\n\027getDatasetExperimentIds\022\037" +
- ".mlflow.GetDatasetExperimentIds\032(.mlflow" +
- ".GetDatasetExperimentIds.Response\"p\362\206\031l\n" +
- "9\n\003GET\022,/mlflow/datasets/{dataset_id}/ex" +
- "periment-ids\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*%Get Evalua" +
- "tion Dataset Experiment IDs\022\212\001\n\016register" +
- "Scorer\022\026.mlflow.RegisterScorer\032\037.mlflow." +
- "RegisterScorer.Response\"?\362\206\031;\n&\n\004POST\022\030/" +
- "mlflow/scorers/register\032\004\010\003\020\000\020\001*\017Registe" +
- "r Scorer\022y\n\013listScorers\022\023.mlflow.ListSco" +
- "rers\032\034.mlflow.ListScorers.Response\"7\362\206\0313" +
- "\n!\n\003GET\022\024/mlflow/scorers/list\032\004\010\003\020\000\020\001*\014L" +
- "ist Scorers\022\232\001\n\022listScorerVersions\022\032.mlf" +
- "low.ListScorerVersions\032#.mlflow.ListScor" +
- "erVersions.Response\"C\362\206\031?\n%\n\003GET\022\030/mlflo" +
- "w/scorers/versions\032\004\010\003\020\000\020\001*\024List Scorer " +
- "Versions\022p\n\tgetScorer\022\021.mlflow.GetScorer" +
- "\032\032.mlflow.GetScorer.Response\"4\362\206\0310\n \n\003GE" +
- "T\022\023/mlflow/scorers/get\032\004\010\003\020\000\020\001*\nGet Scor" +
- "er\022\202\001\n\014deleteScorer\022\024.mlflow.DeleteScore" +
- "r\032\035.mlflow.DeleteScorer.Response\"=\362\206\0319\n&" +
- "\n\006DELETE\022\026/mlflow/scorers/delete\032\004\010\003\020\000\020\001" +
- "*\rDelete Scorer\022\266\001\n\021getDatasetRecords\022\031." +
- "mlflow.GetDatasetRecords\032\".mlflow.GetDat" +
- "asetRecords.Response\"b\362\206\031^\n2\n\003GET\022%/mlfl" +
- "ow/datasets/{dataset_id}/records\032\004\010\003\020\000\020\003" +
- "\030\350\007\030\272\027\030\001*\036Get Evaluation Dataset Records" +
- "\022\315\001\n\027addDatasetToExperiments\022\037.mlflow.Ad" +
- "dDatasetToExperiments\032(.mlflow.AddDatase" +
- "tToExperiments.Response\"g\362\206\031c\n;\n\004POST\022-/" +
- "mlflow/datasets/{dataset_id}/add-experim" +
- "ents\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\032Add Dataset to Exp" +
- "eriments\022\344\001\n\034removeDatasetFromExperiment" +
- "s\022$.mlflow.RemoveDatasetFromExperiments\032" +
- "-.mlflow.RemoveDatasetFromExperiments.Re" +
- "sponse\"o\362\206\031k\n>\n\004POST\0220/mlflow/datasets/{" +
- "dataset_id}/remove-experiments\032\004\010\003\020\000\020\003\030\350" +
- "\007\030\272\027\030\001*\037Remove Dataset from ExperimentsB" +
- "\036\n\024org.mlflow.api.proto\220\001\001\342?\002\020\001"
+ "(\t\"4\n\tWorkspace\022\022\n\004name\030\001 \001(\tB\004\370\206\031\001\022\023\n\013d" +
+ "escription\030\002 \001(\t\"p\n\016ListWorkspaces\0321\n\010Re" +
+ "sponse\022%\n\nworkspaces\030\001 \003(\0132\021.mlflow.Work" +
+ "space:+\342?(\n&com.databricks.rpc.RPC[$this" +
+ ".Response]\"\231\001\n\017CreateWorkspace\022\022\n\004name\030\001" +
+ " \001(\tB\004\370\206\031\001\022\023\n\013description\030\002 \001(\t\0320\n\010Respo" +
+ "nse\022$\n\tworkspace\030\001 \001(\0132\021.mlflow.Workspac" +
+ "e:+\342?(\n&com.databricks.rpc.RPC[$this.Res" +
+ "ponse]\"\213\001\n\014GetWorkspace\022\034\n\016workspace_nam" +
+ "e\030\001 \001(\tB\004\370\206\031\001\0320\n\010Response\022$\n\tworkspace\030\001" +
+ " \001(\0132\021.mlflow.Workspace:+\342?(\n&com.databr" +
+ "icks.rpc.RPC[$this.Response]\"\243\001\n\017UpdateW" +
+ "orkspace\022\034\n\016workspace_name\030\001 \001(\tB\004\370\206\031\001\022\023" +
+ "\n\013description\030\002 \001(\t\0320\n\010Response\022$\n\tworks" +
+ "pace\030\001 \001(\0132\021.mlflow.Workspace:+\342?(\n&com." +
+ "databricks.rpc.RPC[$this.Response]\"h\n\017De" +
+ "leteWorkspace\022\034\n\016workspace_name\030\001 \001(\tB\004\370" +
+ "\206\031\001\032\n\n\010Response:+\342?(\n&com.databricks.rpc" +
+ ".RPC[$this.Response]*6\n\010ViewType\022\017\n\013ACTI" +
+ "VE_ONLY\020\001\022\020\n\014DELETED_ONLY\020\002\022\007\n\003ALL\020\003*I\n\n" +
+ "SourceType\022\014\n\010NOTEBOOK\020\001\022\007\n\003JOB\020\002\022\013\n\007PRO" +
+ "JECT\020\003\022\t\n\005LOCAL\020\004\022\014\n\007UNKNOWN\020\350\007*M\n\tRunSt" +
+ "atus\022\013\n\007RUNNING\020\001\022\r\n\tSCHEDULED\020\002\022\014\n\010FINI" +
+ "SHED\020\003\022\n\n\006FAILED\020\004\022\n\n\006KILLED\020\005*O\n\013TraceS" +
+ "tatus\022\034\n\030TRACE_STATUS_UNSPECIFIED\020\000\022\006\n\002O" +
+ "K\020\001\022\t\n\005ERROR\020\002\022\017\n\013IN_PROGRESS\020\003*\212\001\n\021Logg" +
+ "edModelStatus\022#\n\037LOGGED_MODEL_STATUS_UNS" +
+ "PECIFIED\020\000\022\030\n\024LOGGED_MODEL_PENDING\020\001\022\026\n\022" +
+ "LOGGED_MODEL_READY\020\002\022\036\n\032LOGGED_MODEL_UPL" +
+ "OAD_FAILED\020\0032\205`\n\rMlflowService\022\246\001\n\023getEx" +
+ "perimentByName\022\033.mlflow.GetExperimentByN" +
+ "ame\032$.mlflow.GetExperimentByName.Respons" +
+ "e\"L\362\206\031H\n,\n\003GET\022\037/mlflow/experiments/get-" +
+ "by-name\032\004\010\002\020\000\020\001*\026Get Experiment By Name\022" +
+ "\224\001\n\020createExperiment\022\030.mlflow.CreateExpe" +
+ "riment\032!.mlflow.CreateExperiment.Respons" +
+ "e\"C\362\206\031?\n(\n\004POST\022\032/mlflow/experiments/cre" +
+ "ate\032\004\010\002\020\000\020\001*\021Create Experiment\022\301\001\n\021searc" +
+ "hExperiments\022\031.mlflow.SearchExperiments\032" +
+ "\".mlflow.SearchExperiments.Response\"m\362\206\031" +
+ "i\n(\n\004POST\022\032/mlflow/experiments/search\032\004\010" +
+ "\002\020\000\n\'\n\003GET\022\032/mlflow/experiments/search\032\004" +
+ "\010\002\020\000\020\001*\022Search Experiments\022\210\001\n\rgetExperi" +
+ "ment\022\025.mlflow.GetExperiment\032\036.mlflow.Get" +
+ "Experiment.Response\"@\362\206\0318\n$\n\003GET\022\027/mlflo" +
+ "w/experiments/get\032\004\010\002\020\000\020\001*\016Get Experimen" +
+ "t\272\214\031\000\022\224\001\n\020deleteExperiment\022\030.mlflow.Dele" +
+ "teExperiment\032!.mlflow.DeleteExperiment.R" +
+ "esponse\"C\362\206\031?\n(\n\004POST\022\032/mlflow/experimen" +
+ "ts/delete\032\004\010\002\020\000\020\001*\021Delete Experiment\022\231\001\n" +
+ "\021restoreExperiment\022\031.mlflow.RestoreExper" +
+ "iment\032\".mlflow.RestoreExperiment.Respons" +
+ "e\"E\362\206\031A\n)\n\004POST\022\033/mlflow/experiments/res" +
+ "tore\032\004\010\002\020\000\020\001*\022Restore Experiment\022\224\001\n\020upd" +
+ "ateExperiment\022\030.mlflow.UpdateExperiment\032" +
+ "!.mlflow.UpdateExperiment.Response\"C\362\206\031?" +
+ "\n(\n\004POST\022\032/mlflow/experiments/update\032\004\010\002" +
+ "\020\000\020\001*\021Update Experiment\022q\n\tcreateRun\022\021.m" +
+ "lflow.CreateRun\032\032.mlflow.CreateRun.Respo" +
+ "nse\"5\362\206\0311\n!\n\004POST\022\023/mlflow/runs/create\032\004" +
+ "\010\002\020\000\020\001*\nCreate Run\022q\n\tupdateRun\022\021.mlflow" +
+ ".UpdateRun\032\032.mlflow.UpdateRun.Response\"5" +
+ "\362\206\0311\n!\n\004POST\022\023/mlflow/runs/update\032\004\010\002\020\000\020" +
+ "\001*\nUpdate Run\022q\n\tdeleteRun\022\021.mlflow.Dele" +
+ "teRun\032\032.mlflow.DeleteRun.Response\"5\362\206\0311\n" +
+ "!\n\004POST\022\023/mlflow/runs/delete\032\004\010\002\020\000\020\001*\nDe" +
+ "lete Run\022v\n\nrestoreRun\022\022.mlflow.RestoreR" +
+ "un\032\033.mlflow.RestoreRun.Response\"7\362\206\0313\n\"\n" +
+ "\004POST\022\024/mlflow/runs/restore\032\004\010\002\020\000\020\001*\013Res" +
+ "tore Run\022u\n\tlogMetric\022\021.mlflow.LogMetric" +
+ "\032\032.mlflow.LogMetric.Response\"9\362\206\0315\n%\n\004PO" +
+ "ST\022\027/mlflow/runs/log-metric\032\004\010\002\020\000\020\001*\nLog" +
+ " Metric\022t\n\010logParam\022\020.mlflow.LogParam\032\031." +
+ "mlflow.LogParam.Response\";\362\206\0317\n(\n\004POST\022\032" +
+ "/mlflow/runs/log-parameter\032\004\010\002\020\000\020\001*\tLog " +
+ "Param\022\241\001\n\020setExperimentTag\022\030.mlflow.SetE" +
+ "xperimentTag\032!.mlflow.SetExperimentTag.R" +
+ "esponse\"P\362\206\031L\n4\n\004POST\022&/mlflow/experimen" +
+ "ts/set-experiment-tag\032\004\010\002\020\000\020\001*\022Set Exper" +
+ "iment Tag\022\260\001\n\023deleteExperimentTag\022\033.mlfl" +
+ "ow.DeleteExperimentTag\032$.mlflow.DeleteEx" +
+ "perimentTag.Response\"V\362\206\031R\n7\n\004POST\022)/mlf" +
+ "low/experiments/delete-experiment-tag\032\004\010" +
+ "\002\020\000\020\001*\025Delete Experiment Tag\022f\n\006setTag\022\016" +
+ ".mlflow.SetTag\032\027.mlflow.SetTag.Response\"" +
+ "3\362\206\031/\n\"\n\004POST\022\024/mlflow/runs/set-tag\032\004\010\002\020" +
+ "\000\020\001*\007Set Tag\022\210\001\n\013setTraceTag\022\023.mlflow.Se" +
+ "tTraceTag\032\034.mlflow.SetTraceTag.Response\"" +
+ "F\362\206\031B\n/\n\005PATCH\022 /mlflow/traces/{request_" +
+ "id}/tags\032\004\010\002\020\000\020\003*\rSet Trace Tag\022\217\001\n\rsetT" +
+ "raceTagV3\022\025.mlflow.SetTraceTagV3\032\036.mlflo" +
+ "w.SetTraceTagV3.Response\"G\362\206\031C\n-\n\005PATCH\022" +
+ "\036/mlflow/traces/{trace_id}/tags\032\004\010\003\020\000\020\003*" +
+ "\020Set Trace Tag V3\022\225\001\n\016deleteTraceTag\022\026.m" +
+ "lflow.DeleteTraceTag\032\037.mlflow.DeleteTrac" +
+ "eTag.Response\"J\362\206\031F\n0\n\006DELETE\022 /mlflow/t" +
+ "races/{request_id}/tags\032\004\010\002\020\000\020\003*\020Delete " +
+ "Trace Tag\022\234\001\n\020deleteTraceTagV3\022\030.mlflow." +
+ "DeleteTraceTagV3\032!.mlflow.DeleteTraceTag" +
+ "V3.Response\"K\362\206\031G\n.\n\006DELETE\022\036/mlflow/tra" +
+ "ces/{trace_id}/tags\032\004\010\003\020\000\020\003*\023Delete Trac" +
+ "e Tag V3\022u\n\tdeleteTag\022\021.mlflow.DeleteTag" +
+ "\032\032.mlflow.DeleteTag.Response\"9\362\206\0315\n%\n\004PO" +
+ "ST\022\027/mlflow/runs/delete-tag\032\004\010\002\020\000\020\001*\nDel" +
+ "ete Tag\022e\n\006getRun\022\016.mlflow.GetRun\032\027.mlfl" +
+ "ow.GetRun.Response\"2\362\206\031*\n\035\n\003GET\022\020/mlflow" +
+ "/runs/get\032\004\010\002\020\000\020\001*\007Get Run\272\214\031\000\022y\n\nsearch" +
+ "Runs\022\022.mlflow.SearchRuns\032\033.mlflow.Search" +
+ "Runs.Response\":\362\206\0312\n!\n\004POST\022\023/mlflow/run" +
+ "s/search\032\004\010\002\020\000\020\001*\013Search Runs\272\214\031\000\022\207\001\n\rli" +
+ "stArtifacts\022\025.mlflow.ListArtifacts\032\036.mlf" +
+ "low.ListArtifacts.Response\"?\362\206\0317\n#\n\003GET\022" +
+ "\026/mlflow/artifacts/list\032\004\010\002\020\000\020\001*\016List Ar" +
+ "tifacts\272\214\031\000\022\225\001\n\020getMetricHistory\022\030.mlflo" +
+ "w.GetMetricHistory\032!.mlflow.GetMetricHis" +
+ "tory.Response\"D\362\206\031@\n(\n\003GET\022\033/mlflow/metr" +
+ "ics/get-history\032\004\010\002\020\000\020\001*\022Get Metric Hist" +
+ "ory\022\267\001\n\034getMetricHistoryBulkInterval\022$.m" +
+ "lflow.GetMetricHistoryBulkInterval\032-.mlf" +
+ "low.GetMetricHistoryBulkInterval.Respons" +
+ "e\"B\362\206\031:\n6\n\003GET\022)/mlflow/metrics/get-hist" +
+ "ory-bulk-interval\032\004\010\002\020\013\020\003\272\214\031\000\022p\n\010logBatc" +
+ "h\022\020.mlflow.LogBatch\032\031.mlflow.LogBatch.Re" +
+ "sponse\"7\362\206\0313\n$\n\004POST\022\026/mlflow/runs/log-b" +
+ "atch\032\004\010\002\020\000\020\001*\tLog Batch\022p\n\010logModel\022\020.ml" +
+ "flow.LogModel\032\031.mlflow.LogModel.Response" +
+ "\"7\362\206\0313\n$\n\004POST\022\026/mlflow/runs/log-model\032\004" +
+ "\010\002\020\000\020\001*\tLog Model\022u\n\tlogInputs\022\021.mlflow." +
+ "LogInputs\032\032.mlflow.LogInputs.Response\"9\362" +
+ "\206\0315\n%\n\004POST\022\027/mlflow/runs/log-inputs\032\004\010\002" +
+ "\020\000\020\001*\nLog Inputs\022v\n\nlogOutputs\022\022.mlflow." +
+ "LogOutputs\032\033.mlflow.LogOutputs.Response\"" +
+ "7\362\206\0313\n\"\n\004POST\022\024/mlflow/runs/outputs\032\004\010\002\020" +
+ "\000\020\003*\013Log Outputs\022\207\001\n\016searchDatasets\022\026.ml" +
+ "flow.SearchDatasets\032\037.mlflow.SearchDatas" +
+ "ets.Response\"<\362\206\0314\n0\n\004POST\022\"mlflow/exper" +
+ "iments/search-datasets\032\004\010\002\020\000\020\003\272\214\031\000\022p\n\nst" +
+ "artTrace\022\022.mlflow.StartTrace\032\033.mlflow.St" +
+ "artTrace.Response\"1\362\206\031-\n\034\n\004POST\022\016/mlflow" +
+ "/traces\032\004\010\002\020\000\020\003*\013Start Trace\022v\n\010endTrace" +
+ "\022\020.mlflow.EndTrace\032\031.mlflow.EndTrace.Res" +
+ "ponse\"=\362\206\0319\n*\n\005PATCH\022\033/mlflow/traces/{re" +
+ "quest_id}\032\004\010\002\020\000\020\003*\tEnd Trace\022\211\001\n\014getTrac" +
+ "eInfo\022\024.mlflow.GetTraceInfo\032\035.mlflow.Get" +
+ "TraceInfo.Response\"D\362\206\031@\n-\n\003GET\022 /mlflow" +
+ "/traces/{request_id}/info\032\004\010\002\020\000\020\003*\rGet T" +
+ "raceInfo\022\213\001\n\016getTraceInfoV3\022\026.mlflow.Get" +
+ "TraceInfoV3\032\037.mlflow.GetTraceInfoV3.Resp" +
+ "onse\"@\362\206\031<\n&\n\003GET\022\031/mlflow/traces/{trace" +
+ "_id}\032\004\010\003\020\000\020\003*\020Get TraceInfo v3\022n\n\010getTra" +
+ "ce\022\020.mlflow.GetTrace\032\031.mlflow.GetTrace.R" +
+ "esponse\"5\362\206\0311\n\037\n\003GET\022\022/mlflow/traces/get" +
+ "\032\004\010\003\020\000\020\003*\014Get Trace v3\022\203\001\n\016batchGetTrace" +
+ "s\022\026.mlflow.BatchGetTraces\032\037.mlflow.Batch" +
+ "GetTraces.Response\"8\362\206\0314\n$\n\003GET\022\027/mlflow" +
+ "/traces/batchGet\032\004\010\003\020\000\020\003*\nGet Traces\022w\n\014" +
+ "searchTraces\022\024.mlflow.SearchTraces\032\035.mlf" +
+ "low.SearchTraces.Response\"2\362\206\031.\n\033\n\003GET\022\016" +
+ "/mlflow/traces\032\004\010\002\020\000\020\003*\rSearch Traces\022\210\001" +
+ "\n\016searchTracesV3\022\026.mlflow.SearchTracesV3" +
+ "\032\037.mlflow.SearchTracesV3.Response\"=\362\206\0319\n" +
+ "#\n\004POST\022\025/mlflow/traces/search\032\004\010\003\020\000\020\003*\020" +
+ "Search Traces V3\022i\n\014startTraceV3\022\024.mlflo" +
+ "w.StartTraceV3\032\035.mlflow.StartTraceV3.Res" +
+ "ponse\"$\362\206\031 \n\034\n\004POST\022\016/mlflow/traces\032\004\010\003\020" +
+ "\000\020\003\022\222\001\n\017linkTracesToRun\022\027.mlflow.LinkTra" +
+ "cesToRun\032 .mlflow.LinkTracesToRun.Respon" +
+ "se\"D\362\206\031@\n(\n\004POST\022\032/mlflow/traces/link-to" +
+ "-run\032\004\010\002\020\000\020\003*\022Link Traces to Run\022\242\001\n\031sea" +
+ "rchUnifiedTraceHandler\022\033.mlflow.SearchUn" +
+ "ifiedTraces\032$.mlflow.SearchUnifiedTraces" +
+ ".Response\"B\362\206\031>\n#\n\003GET\022\026/mlflow/unified-" +
+ "traces\032\004\010\002\020\000\020\003*\025Search Unified Traces\022\257\001" +
+ "\n\025getOnlineTraceDetails\022\035.mlflow.GetOnli" +
+ "neTraceDetails\032&.mlflow.GetOnlineTraceDe" +
+ "tails.Response\"O\362\206\031K\n-\n\003GET\022 /mlflow/get" +
+ "-online-trace-details\032\004\010\002\020\000\020\003*\030Get Onlin" +
+ "e Trace Details\022\206\001\n\014deleteTraces\022\024.mlflo" +
+ "w.DeleteTraces\032\035.mlflow.DeleteTraces.Res" +
+ "ponse\"A\362\206\031=\n*\n\004POST\022\034/mlflow/traces/dele" +
+ "te-traces\032\004\010\002\020\000\020\003*\rDelete Traces\022\217\001\n\016del" +
+ "eteTracesV3\022\026.mlflow.DeleteTracesV3\032\037.ml" +
+ "flow.DeleteTracesV3.Response\"D\362\206\031@\n*\n\004PO" +
+ "ST\022\034/mlflow/traces/delete-traces\032\004\010\003\020\000\020\003" +
+ "*\020Delete Traces V3\022\343\001\n\037calculateTraceFil" +
+ "terCorrelation\022\'.mlflow.CalculateTraceFi" +
+ "lterCorrelation\0320.mlflow.CalculateTraceF" +
+ "ilterCorrelation.Response\"e\362\206\031a\n9\n\004POST\022" +
+ "+/mlflow/traces/calculate-filter-correla" +
+ "tion\032\004\010\003\020\000\020\003*\"Calculate Trace Filter Cor" +
+ "relation\022\203\001\n\016listWorkspaces\022\026.mlflow.Lis" +
+ "tWorkspaces\032\037.mlflow.ListWorkspaces.Resp" +
+ "onse\"8\362\206\0314\n\037\n\003GET\022\022/mlflow/workspaces\032\004\010" +
+ "\002\020\000\020\003*\017List Workspaces\022\210\001\n\017createWorkspa" +
+ "ce\022\027.mlflow.CreateWorkspace\032 .mlflow.Cre" +
+ "ateWorkspace.Response\":\362\206\0316\n \n\004POST\022\022/ml" +
+ "flow/workspaces\032\004\010\002\020\000\020\003*\020Create Workspac" +
+ "e\022\214\001\n\014getWorkspace\022\024.mlflow.GetWorkspace" +
+ "\032\035.mlflow.GetWorkspace.Response\"G\362\206\031C\n0\n" +
+ "\003GET\022#/mlflow/workspaces/{workspace_name" +
+ "}\032\004\010\002\020\000\020\003*\rGet Workspace\022\232\001\n\017updateWorks" +
+ "pace\022\027.mlflow.UpdateWorkspace\032 .mlflow.U" +
+ "pdateWorkspace.Response\"L\362\206\031H\n2\n\005PATCH\022#" +
+ "/mlflow/workspaces/{workspace_name}\032\004\010\002\020" +
+ "\000\020\003*\020Update Workspace\022\233\001\n\017deleteWorkspac" +
+ "e\022\027.mlflow.DeleteWorkspace\032 .mlflow.Dele" +
+ "teWorkspace.Response\"M\362\206\031I\n3\n\006DELETE\022#/m" +
+ "lflow/workspaces/{workspace_name}\032\004\010\002\020\000\020" +
+ "\003*\020Delete Workspace\022\224\001\n\021createLoggedMode" +
+ "l\022\031.mlflow.CreateLoggedModel\032\".mlflow.Cr" +
+ "eateLoggedModel.Response\"@\362\206\031<\n#\n\004POST\022\025" +
+ "/mlflow/logged-models\032\004\010\002\020\000\020\003*\023Create Lo" +
+ "gged Model\022\250\001\n\023finalizeLoggedModel\022\033.mlf" +
+ "low.FinalizeLoggedModel\032$.mlflow.Finaliz" +
+ "eLoggedModel.Response\"N\362\206\031J\n/\n\005PATCH\022 /m" +
+ "lflow/logged-models/{model_id}\032\004\010\002\020\000\020\003*\025" +
+ "Finalize Logged Model\022\222\001\n\016getLoggedModel" +
+ "\022\026.mlflow.GetLoggedModel\032\037.mlflow.GetLog" +
+ "gedModel.Response\"G\362\206\031C\n-\n\003GET\022 /mlflow/" +
+ "logged-models/{model_id}\032\004\010\002\020\000\020\003*\020Get Lo" +
+ "gged Model\022\243\001\n\021deleteLoggedModel\022\031.mlflo" +
+ "w.DeleteLoggedModel\032\".mlflow.DeleteLogge" +
+ "dModel.Response\"O\362\206\031K\n0\n\006DELETE\022 /mlflow" +
+ "/logged-models/{model_id}\032\004\010\002\020\000\020\003*\025Delet" +
+ "e a Logged Model\022\236\001\n\022searchLoggedModels\022" +
+ "\032.mlflow.SearchLoggedModels\032#.mlflow.Sea" +
+ "rchLoggedModels.Response\"G\362\206\031C\n*\n\004POST\022\034" +
+ "/mlflow/logged-models/search\032\004\010\002\020\000\020\003*\023Se" +
+ "arch LoggedModels\022\251\001\n\022setLoggedModelTags" +
+ "\022\032.mlflow.SetLoggedModelTags\032#.mlflow.Se" +
+ "tLoggedModelTags.Response\"R\362\206\031N\n4\n\005PATCH" +
+ "\022%/mlflow/logged-models/{model_id}/tags\032" +
+ "\004\010\002\020\000\020\003*\024Set Logged Model Tag\022\275\001\n\024delete" +
+ "LoggedModelTag\022\034.mlflow.DeleteLoggedMode" +
+ "lTag\032%.mlflow.DeleteLoggedModelTag.Respo" +
+ "nse\"`\362\206\031\\\n?\n\006DELETE\022//mlflow/logged-mode" +
+ "ls/{model_id}/tags/{tag_key}\032\004\010\002\020\000\020\003*\027De" +
+ "lete Logged Model Tag\022\326\001\n\030listLoggedMode" +
+ "lArtifacts\022 .mlflow.ListLoggedModelArtif" +
+ "acts\032).mlflow.ListLoggedModelArtifacts.R" +
+ "esponse\"m\362\206\031i\nC\n\003GET\0226/mlflow/logged-mod" +
+ "els/{model_id}/artifacts/directories\032\004\010\002" +
+ "\020\000\020\003* List Artifacts for Logged Models\022\301" +
+ "\001\n\024LogLoggedModelParams\022#.mlflow.LogLogg" +
+ "edModelParamsRequest\032,.mlflow.LogLoggedM" +
+ "odelParamsRequest.Response\"V\362\206\031R\n5\n\004POST" +
+ "\022\'/mlflow/logged-models/{model_id}/param" +
+ "s\032\004\010\002\020\000\020\003*\027Log Logged Model Params\022\260\001\n\rG" +
+ "etAssessment\022\034.mlflow.GetAssessmentReque" +
+ "st\032%.mlflow.GetAssessmentRequest.Respons" +
+ "e\"Z\362\206\031V\nB\n\003GET\0225/mlflow/traces/{trace_id" +
+ "}/assessments/{assessment_id}\032\004\010\003\020\000\020\003*\016G" +
+ "et Assessment\022\337\001\n\020createAssessment\022\030.mlf" +
+ "low.CreateAssessment\032!.mlflow.CreateAsse" +
+ "ssment.Response\"\215\001\362\206\031\210\001\n>\n\004POST\0220/mlflow" +
+ "/traces/{assessment.trace_id}/assessment" +
+ "s\032\004\010\003\020\000\020\003\030\350\007\030\356\007\030\014\030\001*:Create an assessmen" +
+ "t of a trace or a span within the trace\022" +
+ "\320\001\n\020updateAssessment\022\030.mlflow.UpdateAsse" +
+ "ssment\032!.mlflow.UpdateAssessment.Respons" +
+ "e\"\177\362\206\031{\nD\n\005PATCH\0225/mlflow/traces/{trace_" +
+ "id}/assessments/{assessment_id}\032\004\010\003\020\000\020\003\030" +
+ "\350\007\030\356\007\030\001*)Update an existing assessment o" +
+ "n a trace.\022\261\001\n\020deleteAssessment\022\030.mlflow" +
+ ".DeleteAssessment\032!.mlflow.DeleteAssessm" +
+ "ent.Response\"`\362\206\031\\\nE\n\006DELETE\0225/mlflow/tr" +
+ "aces/{trace_id}/assessments/{assessment_" +
+ "id}\032\004\010\003\020\000\020\003*\021Delete Assessment\022\232\001\n\rcreat" +
+ "eDataset\022\025.mlflow.CreateDataset\032\036.mlflow" +
+ ".CreateDataset.Response\"R\362\206\031N\n%\n\004POST\022\027/" +
+ "mlflow/datasets/create\032\004\010\003\020\000\020\003\030\350\007\030\356\007\030\014\030\001" +
+ "*\031Create Evaluation Dataset\022\221\001\n\ngetDatas" +
+ "et\022\022.mlflow.GetDataset\032\033.mlflow.GetDatas" +
+ "et.Response\"R\362\206\031N\n*\n\003GET\022\035/mlflow/datase" +
+ "ts/{dataset_id}\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\026Get Eva" +
+ "luation Dataset\022\240\001\n\rdeleteDataset\022\025.mlfl" +
+ "ow.DeleteDataset\032\036.mlflow.DeleteDataset." +
+ "Response\"X\362\206\031T\n-\n\006DELETE\022\035/mlflow/datase" +
+ "ts/{dataset_id}\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\031Delete " +
+ "Evaluation Dataset\022\335\001\n\030searchEvaluationD" +
+ "atasets\022 .mlflow.SearchEvaluationDataset" +
+ "s\032).mlflow.SearchEvaluationDatasets.Resp" +
+ "onse\"t\362\206\031p\n%\n\004POST\022\027/mlflow/datasets/sea" +
+ "rch\032\004\010\003\020\000\n$\n\003GET\022\027/mlflow/datasets/searc" +
+ "h\032\004\010\003\020\000\020\003\030\350\007\030\001*\032Search Evaluation Datase" +
+ "ts\022\251\001\n\016setDatasetTags\022\026.mlflow.SetDatase" +
+ "tTags\032\037.mlflow.SetDatasetTags.Response\"^" +
+ "\362\206\031Z\n1\n\005PATCH\022\"/mlflow/datasets/{dataset" +
+ "_id}/tags\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\033Set Evaluatio" +
+ "n Dataset Tags\022\270\001\n\020deleteDatasetTag\022\030.ml" +
+ "flow.DeleteDatasetTag\032!.mlflow.DeleteDat" +
+ "asetTag.Response\"g\362\206\031c\n8\n\006DELETE\022(/mlflo" +
+ "w/datasets/{dataset_id}/tags/{key}\032\004\010\003\020\000" +
+ "\020\003\030\350\007\030\272\027\030\001*\035Delete Evaluation Dataset Ta" +
+ "g\022\303\001\n\024upsertDatasetRecords\022\034.mlflow.Upse" +
+ "rtDatasetRecords\032%.mlflow.UpsertDatasetR" +
+ "ecords.Response\"f\362\206\031b\n3\n\004POST\022%/mlflow/d" +
+ "atasets/{dataset_id}/records\032\004\010\003\020\000\020\003\030\350\007\030" +
+ "\272\027\030\001*!Upsert Evaluation Dataset Records\022" +
+ "\326\001\n\027getDatasetExperimentIds\022\037.mlflow.Get" +
+ "DatasetExperimentIds\032(.mlflow.GetDataset" +
+ "ExperimentIds.Response\"p\362\206\031l\n9\n\003GET\022,/ml" +
+ "flow/datasets/{dataset_id}/experiment-id" +
+ "s\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*%Get Evaluation Datase" +
+ "t Experiment IDs\022\212\001\n\016registerScorer\022\026.ml" +
+ "flow.RegisterScorer\032\037.mlflow.RegisterSco" +
+ "rer.Response\"?\362\206\031;\n&\n\004POST\022\030/mlflow/scor" +
+ "ers/register\032\004\010\003\020\000\020\001*\017Register Scorer\022y\n" +
+ "\013listScorers\022\023.mlflow.ListScorers\032\034.mlfl" +
+ "ow.ListScorers.Response\"7\362\206\0313\n!\n\003GET\022\024/m" +
+ "lflow/scorers/list\032\004\010\003\020\000\020\001*\014List Scorers" +
+ "\022\232\001\n\022listScorerVersions\022\032.mlflow.ListSco" +
+ "rerVersions\032#.mlflow.ListScorerVersions." +
+ "Response\"C\362\206\031?\n%\n\003GET\022\030/mlflow/scorers/v" +
+ "ersions\032\004\010\003\020\000\020\001*\024List Scorer Versions\022p\n" +
+ "\tgetScorer\022\021.mlflow.GetScorer\032\032.mlflow.G" +
+ "etScorer.Response\"4\362\206\0310\n \n\003GET\022\023/mlflow/" +
+ "scorers/get\032\004\010\003\020\000\020\001*\nGet Scorer\022\202\001\n\014dele" +
+ "teScorer\022\024.mlflow.DeleteScorer\032\035.mlflow." +
+ "DeleteScorer.Response\"=\362\206\0319\n&\n\006DELETE\022\026/" +
+ "mlflow/scorers/delete\032\004\010\003\020\000\020\001*\rDelete Sc" +
+ "orer\022\266\001\n\021getDatasetRecords\022\031.mlflow.GetD" +
+ "atasetRecords\032\".mlflow.GetDatasetRecords" +
+ ".Response\"b\362\206\031^\n2\n\003GET\022%/mlflow/datasets" +
+ "/{dataset_id}/records\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\036G" +
+ "et Evaluation Dataset Records\022\315\001\n\027addDat" +
+ "asetToExperiments\022\037.mlflow.AddDatasetToE" +
+ "xperiments\032(.mlflow.AddDatasetToExperime" +
+ "nts.Response\"g\362\206\031c\n;\n\004POST\022-/mlflow/data" +
+ "sets/{dataset_id}/add-experiments\032\004\010\003\020\000\020" +
+ "\003\030\350\007\030\272\027\030\001*\032Add Dataset to Experiments\022\344\001" +
+ "\n\034removeDatasetFromExperiments\022$.mlflow." +
+ "RemoveDatasetFromExperiments\032-.mlflow.Re" +
+ "moveDatasetFromExperiments.Response\"o\362\206\031" +
+ "k\n>\n\004POST\0220/mlflow/datasets/{dataset_id}" +
+ "/remove-experiments\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\037Rem" +
+ "ove Dataset from ExperimentsB\036\n\024org.mlfl" +
+ "ow.api.proto\220\001\001\342?\002\020\001"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
@@ -189610,6 +197527,72 @@ public org.mlflow.api.proto.Service.Scorer getDefaultInstanceForType() {
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_mlflow_Scorer_descriptor,
new java.lang.String[] { "ExperimentId", "ScorerName", "ScorerVersion", "SerializedScorer", "CreationTime", "ScorerId", });
+ internal_static_mlflow_Workspace_descriptor =
+ getDescriptor().getMessageTypes().get(106);
+ internal_static_mlflow_Workspace_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_Workspace_descriptor,
+ new java.lang.String[] { "Name", "Description", });
+ internal_static_mlflow_ListWorkspaces_descriptor =
+ getDescriptor().getMessageTypes().get(107);
+ internal_static_mlflow_ListWorkspaces_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_ListWorkspaces_descriptor,
+ new java.lang.String[] { });
+ internal_static_mlflow_ListWorkspaces_Response_descriptor =
+ internal_static_mlflow_ListWorkspaces_descriptor.getNestedTypes().get(0);
+ internal_static_mlflow_ListWorkspaces_Response_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_ListWorkspaces_Response_descriptor,
+ new java.lang.String[] { "Workspaces", });
+ internal_static_mlflow_CreateWorkspace_descriptor =
+ getDescriptor().getMessageTypes().get(108);
+ internal_static_mlflow_CreateWorkspace_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_CreateWorkspace_descriptor,
+ new java.lang.String[] { "Name", "Description", });
+ internal_static_mlflow_CreateWorkspace_Response_descriptor =
+ internal_static_mlflow_CreateWorkspace_descriptor.getNestedTypes().get(0);
+ internal_static_mlflow_CreateWorkspace_Response_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_CreateWorkspace_Response_descriptor,
+ new java.lang.String[] { "Workspace", });
+ internal_static_mlflow_GetWorkspace_descriptor =
+ getDescriptor().getMessageTypes().get(109);
+ internal_static_mlflow_GetWorkspace_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_GetWorkspace_descriptor,
+ new java.lang.String[] { "WorkspaceName", });
+ internal_static_mlflow_GetWorkspace_Response_descriptor =
+ internal_static_mlflow_GetWorkspace_descriptor.getNestedTypes().get(0);
+ internal_static_mlflow_GetWorkspace_Response_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_GetWorkspace_Response_descriptor,
+ new java.lang.String[] { "Workspace", });
+ internal_static_mlflow_UpdateWorkspace_descriptor =
+ getDescriptor().getMessageTypes().get(110);
+ internal_static_mlflow_UpdateWorkspace_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_UpdateWorkspace_descriptor,
+ new java.lang.String[] { "WorkspaceName", "Description", });
+ internal_static_mlflow_UpdateWorkspace_Response_descriptor =
+ internal_static_mlflow_UpdateWorkspace_descriptor.getNestedTypes().get(0);
+ internal_static_mlflow_UpdateWorkspace_Response_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_UpdateWorkspace_Response_descriptor,
+ new java.lang.String[] { "Workspace", });
+ internal_static_mlflow_DeleteWorkspace_descriptor =
+ getDescriptor().getMessageTypes().get(111);
+ internal_static_mlflow_DeleteWorkspace_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_DeleteWorkspace_descriptor,
+ new java.lang.String[] { "WorkspaceName", });
+ internal_static_mlflow_DeleteWorkspace_Response_descriptor =
+ internal_static_mlflow_DeleteWorkspace_descriptor.getNestedTypes().get(0);
+ internal_static_mlflow_DeleteWorkspace_Response_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_mlflow_DeleteWorkspace_Response_descriptor,
+ new java.lang.String[] { });
com.google.protobuf.ExtensionRegistry registry =
com.google.protobuf.ExtensionRegistry.newInstance();
registry.add(com.databricks.api.proto.databricks.Databricks.graphql);
diff --git a/mlflow/protos/service.proto b/mlflow/protos/service.proto
index 3b6b6349692d9..47225135b33ba 100644
--- a/mlflow/protos/service.proto
+++ b/mlflow/protos/service.proto
@@ -964,6 +964,92 @@ service MlflowService {
};
}
+ // Workspace APIs
+ rpc listWorkspaces(ListWorkspaces) returns (ListWorkspaces.Response) {
+ option (rpc) = {
+ endpoints: [
+ {
+ method: "GET"
+ path: "/mlflow/workspaces"
+ since: {
+ major: 2
+ minor: 0
+ }
+ }
+ ]
+ visibility: PUBLIC_UNDOCUMENTED
+ rpc_doc_title: "List Workspaces"
+ };
+ }
+
+ rpc createWorkspace(CreateWorkspace) returns (CreateWorkspace.Response) {
+ option (rpc) = {
+ endpoints: [
+ {
+ method: "POST"
+ path: "/mlflow/workspaces"
+ since: {
+ major: 2
+ minor: 0
+ }
+ }
+ ]
+ visibility: PUBLIC_UNDOCUMENTED
+ rpc_doc_title: "Create Workspace"
+ };
+ }
+
+ rpc getWorkspace(GetWorkspace) returns (GetWorkspace.Response) {
+ option (rpc) = {
+ endpoints: [
+ {
+ method: "GET"
+ path: "/mlflow/workspaces/{workspace_name}"
+ since: {
+ major: 2
+ minor: 0
+ }
+ }
+ ]
+ visibility: PUBLIC_UNDOCUMENTED
+ rpc_doc_title: "Get Workspace"
+ };
+ }
+
+ rpc updateWorkspace(UpdateWorkspace) returns (UpdateWorkspace.Response) {
+ option (rpc) = {
+ endpoints: [
+ {
+ method: "PATCH"
+ path: "/mlflow/workspaces/{workspace_name}"
+ since: {
+ major: 2
+ minor: 0
+ }
+ }
+ ]
+ visibility: PUBLIC_UNDOCUMENTED
+ rpc_doc_title: "Update Workspace"
+ };
+ }
+
+ rpc deleteWorkspace(DeleteWorkspace) returns (DeleteWorkspace.Response) {
+ option (rpc) = {
+ endpoints: [
+ {
+ method: "DELETE"
+ path: "/mlflow/workspaces/{workspace_name}"
+ since: {
+ major: 2
+ minor: 0
+ }
+ }
+ ]
+ visibility: PUBLIC_UNDOCUMENTED
+ rpc_doc_title: "Delete Workspace"
+ };
+ }
+
rpc createLoggedModel(CreateLoggedModel) returns (CreateLoggedModel.Response) {
option (rpc) = {
endpoints: [
@@ -3572,3 +3658,77 @@ message Scorer {
// The unique identifier for the scorer.
optional string scorer_id = 6;
}
+
+// Workspace metadata returned by workspace APIs.
+message Workspace {
+ // The unique workspace name.
+ optional string name = 1 [(validate_required) = true];
+
+ // Optional workspace description.
+ optional string description = 2;
+}
+
+// List workspaces available to the current principal.
+message ListWorkspaces {
+ option (scalapb.message).extends = "com.databricks.rpc.RPC[$this.Response]";
+
+ message Response {
+ // Collection of workspace records.
+ repeated Workspace workspaces = 1;
+ }
+}
+
+// Create a new workspace.
+message CreateWorkspace {
+ option (scalapb.message).extends = "com.databricks.rpc.RPC[$this.Response]";
+
+ // Workspace name to create.
+ optional string name = 1 [(validate_required) = true];
+
+ // Optional workspace description.
+ optional string description = 2;
+
+ message Response {
+ // Metadata describing the created workspace.
+ optional Workspace workspace = 1;
+ }
+}
+
+// Retrieve workspace metadata.
+message GetWorkspace {
+ option (scalapb.message).extends = "com.databricks.rpc.RPC[$this.Response]";
+
+ // Name of the workspace to fetch.
+ optional string workspace_name = 1 [(validate_required) = true];
+
+ message Response {
+ // Metadata describing the requested workspace.
+ optional Workspace workspace = 1;
+ }
+}
+
+// Update workspace metadata.
+message UpdateWorkspace {
+ option (scalapb.message).extends = "com.databricks.rpc.RPC[$this.Response]";
+
+ // Name of the workspace to update.
+ optional string workspace_name = 1 [(validate_required) = true];
+
+ // Optional description update.
+ optional string description = 2;
+
+ message Response {
+ // Metadata describing the updated workspace.
+ optional Workspace workspace = 1;
+ }
+}
+
+// Delete a workspace.
+message DeleteWorkspace {
+ option (scalapb.message).extends = "com.databricks.rpc.RPC[$this.Response]";
+
+ // Name of the workspace to delete.
+ optional string workspace_name = 1 [(validate_required) = true];
+
+ message Response {}
+}
diff --git a/mlflow/protos/service_pb2.py b/mlflow/protos/service_pb2.py
index 9f9b4f1b04adf..aac26d5947d51 100644
--- a/mlflow/protos/service_pb2.py
+++ b/mlflow/protos/service_pb2.py
@@ -26,7 +26,7 @@
from .scalapb import scalapb_pb2 as scalapb_dot_scalapb__pb2
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06mlflow\x1a\x11\x61ssessments.proto\x1a\x10\x64\x61tabricks.proto\x1a\x0e\x64\x61tasets.proto\x1a\x1egoogle/protobuf/duration.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(opentelemetry/proto/trace/v1/trace.proto\x1a\x15scalapb/scalapb.proto\"\xb0\x01\n\x06Metric\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x1a\n\x0c\x64\x61taset_name\x18\x05 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\x06 \x01(\tB\x04\xf0\x86\x19\x03\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x14\n\x06run_id\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\"#\n\x05Param\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8b\x01\n\x03Run\x12\x1d\n\x04info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo\x12\x1d\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x0f.mlflow.RunData\x12!\n\x06inputs\x18\x03 \x01(\x0b\x32\x11.mlflow.RunInputs\x12#\n\x07outputs\x18\x04 \x01(\x0b\x32\x12.mlflow.RunOutputs\"g\n\x07RunData\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x02 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x03 \x03(\x0b\x32\x0e.mlflow.RunTag\"c\n\tRunInputs\x12,\n\x0e\x64\x61taset_inputs\x18\x01 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x0cmodel_inputs\x18\x02 \x03(\x0b\x32\x12.mlflow.ModelInput\"8\n\nRunOutputs\x12*\n\rmodel_outputs\x18\x01 \x03(\x0b\x32\x13.mlflow.ModelOutput\"$\n\x06RunTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"+\n\rExperimentTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdd\x01\n\x07RunInfo\x12\x0e\n\x06run_id\x18\x0f \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x06 \x01(\t\x12!\n\x06status\x18\x07 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x12\n\nstart_time\x18\x08 \x01(\x03\x12\x10\n\x08\x65nd_time\x18\t \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\r \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x0e \x01(\t\"\xbb\x01\n\nExperiment\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11\x61rtifact_location\x18\x03 \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x04 \x01(\t\x12\x18\n\x10last_update_time\x18\x05 \x01(\x03\x12\x15\n\rcreation_time\x18\x06 \x01(\x03\x12#\n\x04tags\x18\x07 \x03(\x0b\x32\x15.mlflow.ExperimentTag\"V\n\x0c\x44\x61tasetInput\x12\x1e\n\x04tags\x18\x01 \x03(\x0b\x32\x10.mlflow.InputTag\x12&\n\x07\x64\x61taset\x18\x02 \x01(\x0b\x32\x0f.mlflow.DatasetB\x04\xf8\x86\x19\x01\"$\n\nModelInput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\"2\n\x08InputTag\x12\x11\n\x03key\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\"\x85\x01\n\x07\x44\x61taset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bsource_type\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06source\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\"9\n\x0bModelOutput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04step\x18\x02 \x01(\x03\x42\x04\xf8\x86\x19\x01\"\xb6\x01\n\x10\x43reateExperiment\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x11\x61rtifact_location\x18\x02 \x01(\t\x12#\n\x04tags\x18\x03 \x03(\x0b\x32\x15.mlflow.ExperimentTag\x1a!\n\x08Response\x12\x15\n\rexperiment_id\x18\x01 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xfe\x01\n\x11SearchExperiments\x12\x13\n\x0bmax_results\x18\x01 \x01(\x03\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12#\n\tview_type\x18\x05 \x01(\x0e\x32\x10.mlflow.ViewType\x1aL\n\x08Response\x12\'\n\x0b\x65xperiments\x18\x01 \x03(\x0b\x32\x12.mlflow.Experiment\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\rGetExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"h\n\x10\x44\x65leteExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"i\n\x11RestoreExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"z\n\x10UpdateExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x10\n\x08new_name\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xca\x01\n\tCreateRun\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x12\n\nstart_time\x18\x07 \x01(\x03\x12\x1c\n\x04tags\x18\t \x03(\x0b\x32\x0e.mlflow.RunTag\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd0\x01\n\tUpdateRun\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12!\n\x06status\x18\x02 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x10\n\x08\x65nd_time\x18\x03 \x01(\x03\x12\x10\n\x08run_name\x18\x05 \x01(\t\x1a-\n\x08Response\x12!\n\x08run_info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"Z\n\tDeleteRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\nRestoreRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8a\x02\n\tLogMetric\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\x01\x42\x04\xf8\x86\x19\x01\x12\x17\n\ttimestamp\x18\x04 \x01(\x03\x42\x04\xf8\x86\x19\x01\x12\x0f\n\x04step\x18\x05 \x01(\x03:\x01\x30\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1a\n\x0c\x64\x61taset_name\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\t \x01(\tB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\x08LogParam\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x90\x01\n\x10SetExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x13\x44\x65leteExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8b\x01\n\x06SetTag\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"m\n\tDeleteTag\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x06GetRun\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x98\x02\n\nSearchRuns\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x34\n\rrun_view_type\x18\x03 \x01(\x0e\x32\x10.mlflow.ViewType:\x0b\x41\x43TIVE_ONLY\x12\x19\n\x0bmax_results\x18\x05 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a>\n\x08Response\x12\x19\n\x04runs\x18\x01 \x03(\x0b\x32\x0b.mlflow.Run\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd8\x01\n\rListArtifacts\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x04 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\";\n\x08\x46ileInfo\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06is_dir\x18\x02 \x01(\x08\x12\x11\n\tfile_size\x18\x03 \x01(\x03\"\xea\x01\n\x10GetMetricHistory\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x04 \x01(\t\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x44\n\x08Response\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"a\n\x0fMetricWithRunId\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x0e\n\x06run_id\x18\x05 \x01(\t\"\xe7\x01\n\x1cGetMetricHistoryBulkInterval\x12\x0f\n\x07run_ids\x18\x01 \x03(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nstart_step\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_step\x18\x04 \x01(\x05\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x34\n\x08Response\x12(\n\x07metrics\x18\x01 \x03(\x0b\x32\x17.mlflow.MetricWithRunId:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb1\x01\n\x08LogBatch\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x03 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x04 \x03(\x0b\x32\x0e.mlflow.RunTag\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"g\n\x08LogModel\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x12\n\nmodel_json\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xac\x01\n\tLogInputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12&\n\x08\x64\x61tasets\x18\x02 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x06models\x18\x03 \x03(\x0b\x32\x12.mlflow.ModelInputB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\nLogOutputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12#\n\x06models\x18\x02 \x03(\x0b\x32\x13.mlflow.ModelOutput\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x95\x01\n\x13GetExperimentByName\x12\x1d\n\x0f\x65xperiment_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb9\x01\n\x10\x43reateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf0\x01\n\x10UpdateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\x10\x44\x65leteAssessment\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x01\n\x14GetAssessmentRequest\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xe4\x01\n\tTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x03 \x01(\x03\x12\x19\n\x11\x65xecution_time_ms\x18\x04 \x01(\x03\x12#\n\x06status\x18\x05 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x06 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x07 \x03(\x0b\x32\x10.mlflow.TraceTag\"2\n\x14TraceRequestMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"&\n\x08TraceTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xf1\x01\n\nStartTrace\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12\x36\n\x10request_metadata\x18\x03 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x04 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x02\n\x08\x45ndTrace\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12#\n\x06status\x18\x03 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x04 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x05 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x82\x01\n\x0cGetTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"y\n\x0eGetTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"{\n\x0e\x42\x61tchGetTraces\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x1a)\n\x08Response\x12\x1d\n\x06traces\x18\x01 \x03(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x97\x01\n\x08GetTrace\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\rallow_partial\x18\x02 \x01(\x08:\x05\x66\x61lse\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xeb\x01\n\x0cSearchTraces\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaa\x02\n\x13SearchUnifiedTraces\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x03 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x18\n\x0bmax_results\x18\x05 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc1\x01\n\x15GetOnlineTraceDetails\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x16source_inference_table\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12*\n\x1csource_databricks_request_id\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x1e\n\x08Response\x12\x12\n\ntrace_data\x18\x01 \x01(\t\"\xc3\x01\n\x0c\x44\x65leteTraces\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc5\x01\n\x0e\x44\x65leteTracesV3\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb5\x02\n\x1f\x43\x61lculateTraceFilterCorrelation\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x16\n\x0e\x66ilter_string1\x18\x02 \x01(\t\x12\x16\n\x0e\x66ilter_string2\x18\x03 \x01(\t\x12\x13\n\x0b\x62\x61se_filter\x18\x04 \x01(\t\x1a\x87\x01\n\x08Response\x12\x0c\n\x04npmi\x18\x01 \x01(\x01\x12\x15\n\rnpmi_smoothed\x18\x02 \x01(\x01\x12\x15\n\rfilter1_count\x18\x03 \x01(\x05\x12\x15\n\rfilter2_count\x18\x04 \x01(\x05\x12\x13\n\x0bjoint_count\x18\x05 \x01(\x05\x12\x13\n\x0btotal_count\x18\x06 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"v\n\x0bSetTraceTag\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x01\n\rSetTraceTagV3\x12\x10\n\x08trace_id\x18\x04 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"z\n\x0e\x44\x65leteTraceTag\x12\x10\n\x08trace_id\x18\x03 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"l\n\x10\x44\x65leteTraceTagV3\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"c\n\x05Trace\x12\'\n\ntrace_info\x18\x01 \x01(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x31\n\x05spans\x18\x02 \x03(\x0b\x32\".opentelemetry.proto.trace.v1.Span\"\xb6\x03\n\rTraceLocation\x12\x35\n\x04type\x18\x01 \x01(\x0e\x32\'.mlflow.TraceLocation.TraceLocationType\x12K\n\x11mlflow_experiment\x18\x02 \x01(\x0b\x32..mlflow.TraceLocation.MlflowExperimentLocationH\x00\x12G\n\x0finference_table\x18\x03 \x01(\x0b\x32,.mlflow.TraceLocation.InferenceTableLocationH\x00\x1a\x31\n\x18MlflowExperimentLocation\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a\x31\n\x16InferenceTableLocation\x12\x17\n\x0f\x66ull_table_name\x18\x01 \x01(\t\"d\n\x11TraceLocationType\x12#\n\x1fTRACE_LOCATION_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MLFLOW_EXPERIMENT\x10\x01\x12\x13\n\x0fINFERENCE_TABLE\x10\x02\x42\x0c\n\nidentifier\"\x9b\x05\n\x0bTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x12\x19\n\x11\x63lient_request_id\x18\x02 \x01(\t\x12-\n\x0etrace_location\x18\x03 \x01(\x0b\x32\x15.mlflow.TraceLocation\x12\x0f\n\x07request\x18\x04 \x01(\t\x12\x10\n\x08response\x18\x05 \x01(\t\x12\x17\n\x0frequest_preview\x18\x0c \x01(\t\x12\x18\n\x10response_preview\x18\r \x01(\t\x12\x30\n\x0crequest_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12\x65xecution_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n\x05state\x18\x08 \x01(\x0e\x32\x19.mlflow.TraceInfoV3.State\x12>\n\x0etrace_metadata\x18\t \x03(\x0b\x32&.mlflow.TraceInfoV3.TraceMetadataEntry\x12\x33\n\x0b\x61ssessments\x18\n \x03(\x0b\x32\x1e.mlflow.assessments.Assessment\x12+\n\x04tags\x18\x0b \x03(\x0b\x32\x1d.mlflow.TraceInfoV3.TagsEntry\x1a\x34\n\x12TraceMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"B\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03\"\\\n\x0cStartTraceV3\x12\"\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.TraceB\x04\xf8\x86\x19\x01\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace\"F\n\x0fLinkTracesToRun\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x12\x14\n\x06run_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response\"h\n\x0e\x44\x61tasetSummary\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04name\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0f\n\x07\x63ontext\x18\x04 \x01(\t\"\x94\x01\n\x0eSearchDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x1a=\n\x08Response\x12\x31\n\x11\x64\x61taset_summaries\x18\x01 \x03(\x0b\x32\x16.mlflow.DatasetSummary:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x02\n\x11\x43reateLoggedModel\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nmodel_type\x18\x03 \x01(\t\x12\x15\n\rsource_run_id\x18\x04 \x01(\t\x12,\n\x06params\x18\x05 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12$\n\x04tags\x18\x06 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbb\x01\n\x13\x46inalizeLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12/\n\x06status\x18\x02 \x01(\x0e\x32\x19.mlflow.LoggedModelStatusB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x01\n\x0eGetLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"d\n\x11\x44\x65leteLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf7\x03\n\x12SearchLoggedModels\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x34\n\x08\x64\x61tasets\x18\x06 \x03(\x0b\x32\".mlflow.SearchLoggedModels.Dataset\x12\x17\n\x0bmax_results\x18\x03 \x01(\x05:\x02\x35\x30\x12\x34\n\x08order_by\x18\x04 \x03(\x0b\x32\".mlflow.SearchLoggedModels.OrderBy\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a=\n\x07\x44\x61taset\x12\x1a\n\x0c\x64\x61taset_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x64\x61taset_digest\x18\x02 \x01(\t\x1aj\n\x07OrderBy\x12\x18\n\nfield_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x17\n\tascending\x18\x02 \x01(\x08:\x04true\x12\x14\n\x0c\x64\x61taset_name\x18\x03 \x01(\t\x12\x16\n\x0e\x64\x61taset_digest\x18\x04 \x01(\t\x1aH\n\x08Response\x12#\n\x06models\x18\x01 \x03(\x0b\x32\x13.mlflow.LoggedModel\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x12SetLoggedModelTags\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x04tags\x18\x02 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x14\x44\x65leteLoggedModelTag\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07tag_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xec\x01\n\x18ListLoggedModelArtifacts\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1f\n\x17\x61rtifact_directory_path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x03 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9c\x01\n\x1bLogLoggedModelParamsRequest\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\x0bLoggedModel\x12%\n\x04info\x18\x01 \x01(\x0b\x32\x17.mlflow.LoggedModelInfo\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.mlflow.LoggedModelData\"\x84\x03\n\x0fLoggedModelInfo\x12\x10\n\x08model_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1d\n\x15\x63reation_timestamp_ms\x18\x04 \x01(\x03\x12!\n\x19last_updated_timestamp_ms\x18\x05 \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\x06 \x01(\t\x12)\n\x06status\x18\x07 \x01(\x0e\x32\x19.mlflow.LoggedModelStatus\x12\x12\n\ncreator_id\x18\x08 \x01(\x03\x12\x12\n\nmodel_type\x18\t \x01(\t\x12\x15\n\rsource_run_id\x18\n \x01(\t\x12\x16\n\x0estatus_message\x18\x0b \x01(\t\x12$\n\x04tags\x18\x0c \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x12:\n\rregistrations\x18\r \x03(\x0b\x32#.mlflow.LoggedModelRegistrationInfo\",\n\x0eLoggedModelTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"<\n\x1bLoggedModelRegistrationInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"`\n\x0fLoggedModelData\x12,\n\x06params\x18\x01 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\"2\n\x14LoggedModelParameter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x81\x02\n\x0eSearchTracesV3\x12(\n\tlocations\x18\x01 \x03(\x0b\x32\x15.mlflow.TraceLocation\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aH\n\x08Response\x12#\n\x06traces\x18\x01 \x03(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x02\n\rCreateDataset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x12\x44\n\x0bsource_type\x18\x03 \x01(\x0e\x32/.mlflow.datasets.DatasetRecordSource.SourceType\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12\x0c\n\x04tags\x18\x08 \x01(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb7\x01\n\nGetDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x02 \x01(\t\x1aN\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"b\n\rDeleteDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x02\n\x18SearchEvaluationDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x15\n\rfilter_string\x18\x02 \x01(\t\x12\x19\n\x0bmax_results\x18\x03 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aO\n\x08Response\x12*\n\x08\x64\x61tasets\x18\x01 \x03(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xa2\x01\n\x0eSetDatasetTags\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04tags\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"x\n\x10\x44\x65leteDatasetTag\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc3\x01\n\x14UpsertDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07records\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nupdated_by\x18\x03 \x01(\t\x1a\x39\n\x08Response\x12\x16\n\x0einserted_count\x18\x01 \x01(\x05\x12\x15\n\rupdated_count\x18\x02 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x84\x01\n\x17GetDatasetExperimentIds\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\"\n\x08Response\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbf\x01\n\x11GetDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bmax_results\x18\x02 \x01(\x05:\x04\x31\x30\x30\x30\x12\x12\n\npage_token\x18\x03 \x01(\t\x1a\x34\n\x08Response\x12\x0f\n\x07records\x18\x01 \x01(\t\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x17\x41\x64\x64\x44\x61tasetToExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb4\x01\n\x1cRemoveDatasetFromExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x02\n\x0eRegisterScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x03 \x01(\t\x1a\x85\x01\n\x08Response\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x11\n\tscorer_id\x18\x02 \x01(\t\x12\x15\n\rexperiment_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x05 \x01(\t\x12\x15\n\rcreation_time\x18\x06 \x01(\x03:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x0bListScorers\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x93\x01\n\x12ListScorerVersions\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x01\n\tGetScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a*\n\x08Response\x12\x1e\n\x06scorer\x18\x01 \x01(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x0c\x44\x65leteScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x01\n\x06Scorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\x05\x12\x13\n\x0bscorer_name\x18\x02 \x01(\t\x12\x16\n\x0escorer_version\x18\x03 \x01(\x05\x12\x19\n\x11serialized_scorer\x18\x04 \x01(\t\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x11\n\tscorer_id\x18\x06 \x01(\t*6\n\x08ViewType\x12\x0f\n\x0b\x41\x43TIVE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45LETED_ONLY\x10\x02\x12\x07\n\x03\x41LL\x10\x03*I\n\nSourceType\x12\x0c\n\x08NOTEBOOK\x10\x01\x12\x07\n\x03JOB\x10\x02\x12\x0b\n\x07PROJECT\x10\x03\x12\t\n\x05LOCAL\x10\x04\x12\x0c\n\x07UNKNOWN\x10\xe8\x07*M\n\tRunStatus\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tSCHEDULED\x10\x02\x12\x0c\n\x08\x46INISHED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\n\n\x06KILLED\x10\x05*O\n\x0bTraceStatus\x12\x1c\n\x18TRACE_STATUS_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03*\x8a\x01\n\x11LoggedModelStatus\x12#\n\x1fLOGGED_MODEL_STATUS_UNSPECIFIED\x10\x00\x12\x18\n\x14LOGGED_MODEL_PENDING\x10\x01\x12\x16\n\x12LOGGED_MODEL_READY\x10\x02\x12\x1e\n\x1aLOGGED_MODEL_UPLOAD_FAILED\x10\x03\x32\xaaZ\n\rMlflowService\x12\xa6\x01\n\x13getExperimentByName\x12\x1b.mlflow.GetExperimentByName\x1a$.mlflow.GetExperimentByName.Response\"L\xf2\x86\x19H\n,\n\x03GET\x12\x1f/mlflow/experiments/get-by-name\x1a\x04\x08\x02\x10\x00\x10\x01*\x16Get Experiment By Name\x12\x94\x01\n\x10\x63reateExperiment\x12\x18.mlflow.CreateExperiment\x1a!.mlflow.CreateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/create\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x43reate Experiment\x12\xc1\x01\n\x11searchExperiments\x12\x19.mlflow.SearchExperiments\x1a\".mlflow.SearchExperiments.Response\"m\xf2\x86\x19i\n(\n\x04POST\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\n\'\n\x03GET\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Search Experiments\x12\x88\x01\n\rgetExperiment\x12\x15.mlflow.GetExperiment\x1a\x1e.mlflow.GetExperiment.Response\"@\xf2\x86\x19\x38\n$\n\x03GET\x12\x17/mlflow/experiments/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eGet Experiment\xba\x8c\x19\x00\x12\x94\x01\n\x10\x64\x65leteExperiment\x12\x18.mlflow.DeleteExperiment\x1a!.mlflow.DeleteExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x44\x65lete Experiment\x12\x99\x01\n\x11restoreExperiment\x12\x19.mlflow.RestoreExperiment\x1a\".mlflow.RestoreExperiment.Response\"E\xf2\x86\x19\x41\n)\n\x04POST\x12\x1b/mlflow/experiments/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Restore Experiment\x12\x94\x01\n\x10updateExperiment\x12\x18.mlflow.UpdateExperiment\x1a!.mlflow.UpdateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/update\x1a\x04\x08\x02\x10\x00\x10\x01*\x11Update Experiment\x12q\n\tcreateRun\x12\x11.mlflow.CreateRun\x1a\x1a.mlflow.CreateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/create\x1a\x04\x08\x02\x10\x00\x10\x01*\nCreate Run\x12q\n\tupdateRun\x12\x11.mlflow.UpdateRun\x1a\x1a.mlflow.UpdateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/update\x1a\x04\x08\x02\x10\x00\x10\x01*\nUpdate Run\x12q\n\tdeleteRun\x12\x11.mlflow.DeleteRun\x1a\x1a.mlflow.DeleteRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Run\x12v\n\nrestoreRun\x12\x12.mlflow.RestoreRun\x1a\x1b.mlflow.RestoreRun.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bRestore Run\x12u\n\tlogMetric\x12\x11.mlflow.LogMetric\x1a\x1a.mlflow.LogMetric.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-metric\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Metric\x12t\n\x08logParam\x12\x10.mlflow.LogParam\x1a\x19.mlflow.LogParam.Response\";\xf2\x86\x19\x37\n(\n\x04POST\x12\x1a/mlflow/runs/log-parameter\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Param\x12\xa1\x01\n\x10setExperimentTag\x12\x18.mlflow.SetExperimentTag\x1a!.mlflow.SetExperimentTag.Response\"P\xf2\x86\x19L\n4\n\x04POST\x12&/mlflow/experiments/set-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Set Experiment Tag\x12\xb0\x01\n\x13\x64\x65leteExperimentTag\x12\x1b.mlflow.DeleteExperimentTag\x1a$.mlflow.DeleteExperimentTag.Response\"V\xf2\x86\x19R\n7\n\x04POST\x12)/mlflow/experiments/delete-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x15\x44\x65lete Experiment Tag\x12\x66\n\x06setTag\x12\x0e.mlflow.SetTag\x1a\x17.mlflow.SetTag.Response\"3\xf2\x86\x19/\n\"\n\x04POST\x12\x14/mlflow/runs/set-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Set Tag\x12\x88\x01\n\x0bsetTraceTag\x12\x13.mlflow.SetTraceTag\x1a\x1c.mlflow.SetTraceTag.Response\"F\xf2\x86\x19\x42\n/\n\x05PATCH\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\rSet Trace Tag\x12\x8f\x01\n\rsetTraceTagV3\x12\x15.mlflow.SetTraceTagV3\x1a\x1e.mlflow.SetTraceTagV3.Response\"G\xf2\x86\x19\x43\n-\n\x05PATCH\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Set Trace Tag V3\x12\x95\x01\n\x0e\x64\x65leteTraceTag\x12\x16.mlflow.DeleteTraceTag\x1a\x1f.mlflow.DeleteTraceTag.Response\"J\xf2\x86\x19\x46\n0\n\x06\x44\x45LETE\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x44\x65lete Trace Tag\x12\x9c\x01\n\x10\x64\x65leteTraceTagV3\x12\x18.mlflow.DeleteTraceTagV3\x1a!.mlflow.DeleteTraceTagV3.Response\"K\xf2\x86\x19G\n.\n\x06\x44\x45LETE\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x13\x44\x65lete Trace Tag V3\x12u\n\tdeleteTag\x12\x11.mlflow.DeleteTag\x1a\x1a.mlflow.DeleteTag.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/delete-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Tag\x12\x65\n\x06getRun\x12\x0e.mlflow.GetRun\x1a\x17.mlflow.GetRun.Response\"2\xf2\x86\x19*\n\x1d\n\x03GET\x12\x10/mlflow/runs/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Get Run\xba\x8c\x19\x00\x12y\n\nsearchRuns\x12\x12.mlflow.SearchRuns\x1a\x1b.mlflow.SearchRuns.Response\":\xf2\x86\x19\x32\n!\n\x04POST\x12\x13/mlflow/runs/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bSearch Runs\xba\x8c\x19\x00\x12\x87\x01\n\rlistArtifacts\x12\x15.mlflow.ListArtifacts\x1a\x1e.mlflow.ListArtifacts.Response\"?\xf2\x86\x19\x37\n#\n\x03GET\x12\x16/mlflow/artifacts/list\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eList Artifacts\xba\x8c\x19\x00\x12\x95\x01\n\x10getMetricHistory\x12\x18.mlflow.GetMetricHistory\x1a!.mlflow.GetMetricHistory.Response\"D\xf2\x86\x19@\n(\n\x03GET\x12\x1b/mlflow/metrics/get-history\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Get Metric History\x12\xb7\x01\n\x1cgetMetricHistoryBulkInterval\x12$.mlflow.GetMetricHistoryBulkInterval\x1a-.mlflow.GetMetricHistoryBulkInterval.Response\"B\xf2\x86\x19:\n6\n\x03GET\x12)/mlflow/metrics/get-history-bulk-interval\x1a\x04\x08\x02\x10\x0b\x10\x03\xba\x8c\x19\x00\x12p\n\x08logBatch\x12\x10.mlflow.LogBatch\x1a\x19.mlflow.LogBatch.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-batch\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Batch\x12p\n\x08logModel\x12\x10.mlflow.LogModel\x1a\x19.mlflow.LogModel.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-model\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Model\x12u\n\tlogInputs\x12\x11.mlflow.LogInputs\x1a\x1a.mlflow.LogInputs.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-inputs\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Inputs\x12v\n\nlogOutputs\x12\x12.mlflow.LogOutputs\x1a\x1b.mlflow.LogOutputs.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/outputs\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bLog Outputs\x12\x87\x01\n\x0esearchDatasets\x12\x16.mlflow.SearchDatasets\x1a\x1f.mlflow.SearchDatasets.Response\"<\xf2\x86\x19\x34\n0\n\x04POST\x12\"mlflow/experiments/search-datasets\x1a\x04\x08\x02\x10\x00\x10\x03\xba\x8c\x19\x00\x12p\n\nstartTrace\x12\x12.mlflow.StartTrace\x1a\x1b.mlflow.StartTrace.Response\"1\xf2\x86\x19-\n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bStart Trace\x12v\n\x08\x65ndTrace\x12\x10.mlflow.EndTrace\x1a\x19.mlflow.EndTrace.Response\"=\xf2\x86\x19\x39\n*\n\x05PATCH\x12\x1b/mlflow/traces/{request_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\tEnd Trace\x12\x89\x01\n\x0cgetTraceInfo\x12\x14.mlflow.GetTraceInfo\x1a\x1d.mlflow.GetTraceInfo.Response\"D\xf2\x86\x19@\n-\n\x03GET\x12 /mlflow/traces/{request_id}/info\x1a\x04\x08\x02\x10\x00\x10\x03*\rGet TraceInfo\x12\x8b\x01\n\x0egetTraceInfoV3\x12\x16.mlflow.GetTraceInfoV3\x1a\x1f.mlflow.GetTraceInfoV3.Response\"@\xf2\x86\x19<\n&\n\x03GET\x12\x19/mlflow/traces/{trace_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Get TraceInfo v3\x12n\n\x08getTrace\x12\x10.mlflow.GetTrace\x1a\x19.mlflow.GetTrace.Response\"5\xf2\x86\x19\x31\n\x1f\n\x03GET\x12\x12/mlflow/traces/get\x1a\x04\x08\x03\x10\x00\x10\x03*\x0cGet Trace v3\x12\x83\x01\n\x0e\x62\x61tchGetTraces\x12\x16.mlflow.BatchGetTraces\x1a\x1f.mlflow.BatchGetTraces.Response\"8\xf2\x86\x19\x34\n$\n\x03GET\x12\x17/mlflow/traces/batchGet\x1a\x04\x08\x03\x10\x00\x10\x03*\nGet Traces\x12w\n\x0csearchTraces\x12\x14.mlflow.SearchTraces\x1a\x1d.mlflow.SearchTraces.Response\"2\xf2\x86\x19.\n\x1b\n\x03GET\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rSearch Traces\x12\x88\x01\n\x0esearchTracesV3\x12\x16.mlflow.SearchTracesV3\x1a\x1f.mlflow.SearchTracesV3.Response\"=\xf2\x86\x19\x39\n#\n\x04POST\x12\x15/mlflow/traces/search\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Search Traces V3\x12i\n\x0cstartTraceV3\x12\x14.mlflow.StartTraceV3\x1a\x1d.mlflow.StartTraceV3.Response\"$\xf2\x86\x19 \n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x03\x10\x00\x10\x03\x12\x92\x01\n\x0flinkTracesToRun\x12\x17.mlflow.LinkTracesToRun\x1a .mlflow.LinkTracesToRun.Response\"D\xf2\x86\x19@\n(\n\x04POST\x12\x1a/mlflow/traces/link-to-run\x1a\x04\x08\x02\x10\x00\x10\x03*\x12Link Traces to Run\x12\xa2\x01\n\x19searchUnifiedTraceHandler\x12\x1b.mlflow.SearchUnifiedTraces\x1a$.mlflow.SearchUnifiedTraces.Response\"B\xf2\x86\x19>\n#\n\x03GET\x12\x16/mlflow/unified-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x15Search Unified Traces\x12\xaf\x01\n\x15getOnlineTraceDetails\x12\x1d.mlflow.GetOnlineTraceDetails\x1a&.mlflow.GetOnlineTraceDetails.Response\"O\xf2\x86\x19K\n-\n\x03GET\x12 /mlflow/get-online-trace-details\x1a\x04\x08\x02\x10\x00\x10\x03*\x18Get Online Trace Details\x12\x86\x01\n\x0c\x64\x65leteTraces\x12\x14.mlflow.DeleteTraces\x1a\x1d.mlflow.DeleteTraces.Response\"A\xf2\x86\x19=\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rDelete Traces\x12\x8f\x01\n\x0e\x64\x65leteTracesV3\x12\x16.mlflow.DeleteTracesV3\x1a\x1f.mlflow.DeleteTracesV3.Response\"D\xf2\x86\x19@\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x03\x10\x00\x10\x03*\x10\x44\x65lete Traces V3\x12\xe3\x01\n\x1f\x63\x61lculateTraceFilterCorrelation\x12\'.mlflow.CalculateTraceFilterCorrelation\x1a\x30.mlflow.CalculateTraceFilterCorrelation.Response\"e\xf2\x86\x19\x61\n9\n\x04POST\x12+/mlflow/traces/calculate-filter-correlation\x1a\x04\x08\x03\x10\x00\x10\x03*\"Calculate Trace Filter Correlation\x12\x94\x01\n\x11\x63reateLoggedModel\x12\x19.mlflow.CreateLoggedModel\x1a\".mlflow.CreateLoggedModel.Response\"@\xf2\x86\x19<\n#\n\x04POST\x12\x15/mlflow/logged-models\x1a\x04\x08\x02\x10\x00\x10\x03*\x13\x43reate Logged Model\x12\xa8\x01\n\x13\x66inalizeLoggedModel\x12\x1b.mlflow.FinalizeLoggedModel\x1a$.mlflow.FinalizeLoggedModel.Response\"N\xf2\x86\x19J\n/\n\x05PATCH\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x46inalize Logged Model\x12\x92\x01\n\x0egetLoggedModel\x12\x16.mlflow.GetLoggedModel\x1a\x1f.mlflow.GetLoggedModel.Response\"G\xf2\x86\x19\x43\n-\n\x03GET\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10Get Logged Model\x12\xa3\x01\n\x11\x64\x65leteLoggedModel\x12\x19.mlflow.DeleteLoggedModel\x1a\".mlflow.DeleteLoggedModel.Response\"O\xf2\x86\x19K\n0\n\x06\x44\x45LETE\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x44\x65lete a Logged Model\x12\x9e\x01\n\x12searchLoggedModels\x12\x1a.mlflow.SearchLoggedModels\x1a#.mlflow.SearchLoggedModels.Response\"G\xf2\x86\x19\x43\n*\n\x04POST\x12\x1c/mlflow/logged-models/search\x1a\x04\x08\x02\x10\x00\x10\x03*\x13Search LoggedModels\x12\xa9\x01\n\x12setLoggedModelTags\x12\x1a.mlflow.SetLoggedModelTags\x1a#.mlflow.SetLoggedModelTags.Response\"R\xf2\x86\x19N\n4\n\x05PATCH\x12%/mlflow/logged-models/{model_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x14Set Logged Model Tag\x12\xbd\x01\n\x14\x64\x65leteLoggedModelTag\x12\x1c.mlflow.DeleteLoggedModelTag\x1a%.mlflow.DeleteLoggedModelTag.Response\"`\xf2\x86\x19\\\n?\n\x06\x44\x45LETE\x12//mlflow/logged-models/{model_id}/tags/{tag_key}\x1a\x04\x08\x02\x10\x00\x10\x03*\x17\x44\x65lete Logged Model Tag\x12\xd6\x01\n\x18listLoggedModelArtifacts\x12 .mlflow.ListLoggedModelArtifacts\x1a).mlflow.ListLoggedModelArtifacts.Response\"m\xf2\x86\x19i\nC\n\x03GET\x12\x36/mlflow/logged-models/{model_id}/artifacts/directories\x1a\x04\x08\x02\x10\x00\x10\x03* List Artifacts for Logged Models\x12\xc1\x01\n\x14LogLoggedModelParams\x12#.mlflow.LogLoggedModelParamsRequest\x1a,.mlflow.LogLoggedModelParamsRequest.Response\"V\xf2\x86\x19R\n5\n\x04POST\x12\'/mlflow/logged-models/{model_id}/params\x1a\x04\x08\x02\x10\x00\x10\x03*\x17Log Logged Model Params\x12\xb0\x01\n\rGetAssessment\x12\x1c.mlflow.GetAssessmentRequest\x1a%.mlflow.GetAssessmentRequest.Response\"Z\xf2\x86\x19V\nB\n\x03GET\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x0eGet Assessment\x12\xdf\x01\n\x10\x63reateAssessment\x12\x18.mlflow.CreateAssessment\x1a!.mlflow.CreateAssessment.Response\"\x8d\x01\xf2\x86\x19\x88\x01\n>\n\x04POST\x12\x30/mlflow/traces/{assessment.trace_id}/assessments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*:Create an assessment of a trace or a span within the trace\x12\xd0\x01\n\x10updateAssessment\x12\x18.mlflow.UpdateAssessment\x1a!.mlflow.UpdateAssessment.Response\"\x7f\xf2\x86\x19{\nD\n\x05PATCH\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x01*)Update an existing assessment on a trace.\x12\xb1\x01\n\x10\x64\x65leteAssessment\x12\x18.mlflow.DeleteAssessment\x1a!.mlflow.DeleteAssessment.Response\"`\xf2\x86\x19\\\nE\n\x06\x44\x45LETE\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x11\x44\x65lete Assessment\x12\x9a\x01\n\rcreateDataset\x12\x15.mlflow.CreateDataset\x1a\x1e.mlflow.CreateDataset.Response\"R\xf2\x86\x19N\n%\n\x04POST\x12\x17/mlflow/datasets/create\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*\x19\x43reate Evaluation Dataset\x12\x91\x01\n\ngetDataset\x12\x12.mlflow.GetDataset\x1a\x1b.mlflow.GetDataset.Response\"R\xf2\x86\x19N\n*\n\x03GET\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x16Get Evaluation Dataset\x12\xa0\x01\n\rdeleteDataset\x12\x15.mlflow.DeleteDataset\x1a\x1e.mlflow.DeleteDataset.Response\"X\xf2\x86\x19T\n-\n\x06\x44\x45LETE\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x19\x44\x65lete Evaluation Dataset\x12\xdd\x01\n\x18searchEvaluationDatasets\x12 .mlflow.SearchEvaluationDatasets\x1a).mlflow.SearchEvaluationDatasets.Response\"t\xf2\x86\x19p\n%\n\x04POST\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\n$\n\x03GET\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\x01*\x1aSearch Evaluation Datasets\x12\xa9\x01\n\x0esetDatasetTags\x12\x16.mlflow.SetDatasetTags\x1a\x1f.mlflow.SetDatasetTags.Response\"^\xf2\x86\x19Z\n1\n\x05PATCH\x12\"/mlflow/datasets/{dataset_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1bSet Evaluation Dataset Tags\x12\xb8\x01\n\x10\x64\x65leteDatasetTag\x12\x18.mlflow.DeleteDatasetTag\x1a!.mlflow.DeleteDatasetTag.Response\"g\xf2\x86\x19\x63\n8\n\x06\x44\x45LETE\x12(/mlflow/datasets/{dataset_id}/tags/{key}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1d\x44\x65lete Evaluation Dataset Tag\x12\xc3\x01\n\x14upsertDatasetRecords\x12\x1c.mlflow.UpsertDatasetRecords\x1a%.mlflow.UpsertDatasetRecords.Response\"f\xf2\x86\x19\x62\n3\n\x04POST\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*!Upsert Evaluation Dataset Records\x12\xd6\x01\n\x17getDatasetExperimentIds\x12\x1f.mlflow.GetDatasetExperimentIds\x1a(.mlflow.GetDatasetExperimentIds.Response\"p\xf2\x86\x19l\n9\n\x03GET\x12,/mlflow/datasets/{dataset_id}/experiment-ids\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*%Get Evaluation Dataset Experiment IDs\x12\x8a\x01\n\x0eregisterScorer\x12\x16.mlflow.RegisterScorer\x1a\x1f.mlflow.RegisterScorer.Response\"?\xf2\x86\x19;\n&\n\x04POST\x12\x18/mlflow/scorers/register\x1a\x04\x08\x03\x10\x00\x10\x01*\x0fRegister Scorer\x12y\n\x0blistScorers\x12\x13.mlflow.ListScorers\x1a\x1c.mlflow.ListScorers.Response\"7\xf2\x86\x19\x33\n!\n\x03GET\x12\x14/mlflow/scorers/list\x1a\x04\x08\x03\x10\x00\x10\x01*\x0cList Scorers\x12\x9a\x01\n\x12listScorerVersions\x12\x1a.mlflow.ListScorerVersions\x1a#.mlflow.ListScorerVersions.Response\"C\xf2\x86\x19?\n%\n\x03GET\x12\x18/mlflow/scorers/versions\x1a\x04\x08\x03\x10\x00\x10\x01*\x14List Scorer Versions\x12p\n\tgetScorer\x12\x11.mlflow.GetScorer\x1a\x1a.mlflow.GetScorer.Response\"4\xf2\x86\x19\x30\n \n\x03GET\x12\x13/mlflow/scorers/get\x1a\x04\x08\x03\x10\x00\x10\x01*\nGet Scorer\x12\x82\x01\n\x0c\x64\x65leteScorer\x12\x14.mlflow.DeleteScorer\x1a\x1d.mlflow.DeleteScorer.Response\"=\xf2\x86\x19\x39\n&\n\x06\x44\x45LETE\x12\x16/mlflow/scorers/delete\x1a\x04\x08\x03\x10\x00\x10\x01*\rDelete Scorer\x12\xb6\x01\n\x11getDatasetRecords\x12\x19.mlflow.GetDatasetRecords\x1a\".mlflow.GetDatasetRecords.Response\"b\xf2\x86\x19^\n2\n\x03GET\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1eGet Evaluation Dataset Records\x12\xcd\x01\n\x17\x61\x64\x64\x44\x61tasetToExperiments\x12\x1f.mlflow.AddDatasetToExperiments\x1a(.mlflow.AddDatasetToExperiments.Response\"g\xf2\x86\x19\x63\n;\n\x04POST\x12-/mlflow/datasets/{dataset_id}/add-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1a\x41\x64\x64 Dataset to Experiments\x12\xe4\x01\n\x1cremoveDatasetFromExperiments\x12$.mlflow.RemoveDatasetFromExperiments\x1a-.mlflow.RemoveDatasetFromExperiments.Response\"o\xf2\x86\x19k\n>\n\x04POST\x12\x30/mlflow/datasets/{dataset_id}/remove-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1fRemove Dataset from ExperimentsB\x1e\n\x14org.mlflow.api.proto\x90\x01\x01\xe2?\x02\x10\x01')
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06mlflow\x1a\x11\x61ssessments.proto\x1a\x10\x64\x61tabricks.proto\x1a\x0e\x64\x61tasets.proto\x1a\x1egoogle/protobuf/duration.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(opentelemetry/proto/trace/v1/trace.proto\x1a\x15scalapb/scalapb.proto\"\xb0\x01\n\x06Metric\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x1a\n\x0c\x64\x61taset_name\x18\x05 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\x06 \x01(\tB\x04\xf0\x86\x19\x03\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x14\n\x06run_id\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\"#\n\x05Param\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8b\x01\n\x03Run\x12\x1d\n\x04info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo\x12\x1d\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x0f.mlflow.RunData\x12!\n\x06inputs\x18\x03 \x01(\x0b\x32\x11.mlflow.RunInputs\x12#\n\x07outputs\x18\x04 \x01(\x0b\x32\x12.mlflow.RunOutputs\"g\n\x07RunData\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x02 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x03 \x03(\x0b\x32\x0e.mlflow.RunTag\"c\n\tRunInputs\x12,\n\x0e\x64\x61taset_inputs\x18\x01 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x0cmodel_inputs\x18\x02 \x03(\x0b\x32\x12.mlflow.ModelInput\"8\n\nRunOutputs\x12*\n\rmodel_outputs\x18\x01 \x03(\x0b\x32\x13.mlflow.ModelOutput\"$\n\x06RunTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"+\n\rExperimentTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdd\x01\n\x07RunInfo\x12\x0e\n\x06run_id\x18\x0f \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x06 \x01(\t\x12!\n\x06status\x18\x07 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x12\n\nstart_time\x18\x08 \x01(\x03\x12\x10\n\x08\x65nd_time\x18\t \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\r \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x0e \x01(\t\"\xbb\x01\n\nExperiment\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11\x61rtifact_location\x18\x03 \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x04 \x01(\t\x12\x18\n\x10last_update_time\x18\x05 \x01(\x03\x12\x15\n\rcreation_time\x18\x06 \x01(\x03\x12#\n\x04tags\x18\x07 \x03(\x0b\x32\x15.mlflow.ExperimentTag\"V\n\x0c\x44\x61tasetInput\x12\x1e\n\x04tags\x18\x01 \x03(\x0b\x32\x10.mlflow.InputTag\x12&\n\x07\x64\x61taset\x18\x02 \x01(\x0b\x32\x0f.mlflow.DatasetB\x04\xf8\x86\x19\x01\"$\n\nModelInput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\"2\n\x08InputTag\x12\x11\n\x03key\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\"\x85\x01\n\x07\x44\x61taset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bsource_type\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06source\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\"9\n\x0bModelOutput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04step\x18\x02 \x01(\x03\x42\x04\xf8\x86\x19\x01\"\xb6\x01\n\x10\x43reateExperiment\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x11\x61rtifact_location\x18\x02 \x01(\t\x12#\n\x04tags\x18\x03 \x03(\x0b\x32\x15.mlflow.ExperimentTag\x1a!\n\x08Response\x12\x15\n\rexperiment_id\x18\x01 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xfe\x01\n\x11SearchExperiments\x12\x13\n\x0bmax_results\x18\x01 \x01(\x03\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12#\n\tview_type\x18\x05 \x01(\x0e\x32\x10.mlflow.ViewType\x1aL\n\x08Response\x12\'\n\x0b\x65xperiments\x18\x01 \x03(\x0b\x32\x12.mlflow.Experiment\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\rGetExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"h\n\x10\x44\x65leteExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"i\n\x11RestoreExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"z\n\x10UpdateExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x10\n\x08new_name\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xca\x01\n\tCreateRun\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x12\n\nstart_time\x18\x07 \x01(\x03\x12\x1c\n\x04tags\x18\t \x03(\x0b\x32\x0e.mlflow.RunTag\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd0\x01\n\tUpdateRun\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12!\n\x06status\x18\x02 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x10\n\x08\x65nd_time\x18\x03 \x01(\x03\x12\x10\n\x08run_name\x18\x05 \x01(\t\x1a-\n\x08Response\x12!\n\x08run_info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"Z\n\tDeleteRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\nRestoreRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8a\x02\n\tLogMetric\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\x01\x42\x04\xf8\x86\x19\x01\x12\x17\n\ttimestamp\x18\x04 \x01(\x03\x42\x04\xf8\x86\x19\x01\x12\x0f\n\x04step\x18\x05 \x01(\x03:\x01\x30\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1a\n\x0c\x64\x61taset_name\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\t \x01(\tB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\x08LogParam\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x90\x01\n\x10SetExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x13\x44\x65leteExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8b\x01\n\x06SetTag\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"m\n\tDeleteTag\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x06GetRun\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x98\x02\n\nSearchRuns\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x34\n\rrun_view_type\x18\x03 \x01(\x0e\x32\x10.mlflow.ViewType:\x0b\x41\x43TIVE_ONLY\x12\x19\n\x0bmax_results\x18\x05 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a>\n\x08Response\x12\x19\n\x04runs\x18\x01 \x03(\x0b\x32\x0b.mlflow.Run\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd8\x01\n\rListArtifacts\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x04 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\";\n\x08\x46ileInfo\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06is_dir\x18\x02 \x01(\x08\x12\x11\n\tfile_size\x18\x03 \x01(\x03\"\xea\x01\n\x10GetMetricHistory\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x04 \x01(\t\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x44\n\x08Response\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"a\n\x0fMetricWithRunId\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x0e\n\x06run_id\x18\x05 \x01(\t\"\xe7\x01\n\x1cGetMetricHistoryBulkInterval\x12\x0f\n\x07run_ids\x18\x01 \x03(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nstart_step\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_step\x18\x04 \x01(\x05\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x34\n\x08Response\x12(\n\x07metrics\x18\x01 \x03(\x0b\x32\x17.mlflow.MetricWithRunId:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb1\x01\n\x08LogBatch\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x03 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x04 \x03(\x0b\x32\x0e.mlflow.RunTag\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"g\n\x08LogModel\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x12\n\nmodel_json\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xac\x01\n\tLogInputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12&\n\x08\x64\x61tasets\x18\x02 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x06models\x18\x03 \x03(\x0b\x32\x12.mlflow.ModelInputB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\nLogOutputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12#\n\x06models\x18\x02 \x03(\x0b\x32\x13.mlflow.ModelOutput\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x95\x01\n\x13GetExperimentByName\x12\x1d\n\x0f\x65xperiment_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb9\x01\n\x10\x43reateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf0\x01\n\x10UpdateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\x10\x44\x65leteAssessment\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x01\n\x14GetAssessmentRequest\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xe4\x01\n\tTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x03 \x01(\x03\x12\x19\n\x11\x65xecution_time_ms\x18\x04 \x01(\x03\x12#\n\x06status\x18\x05 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x06 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x07 \x03(\x0b\x32\x10.mlflow.TraceTag\"2\n\x14TraceRequestMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"&\n\x08TraceTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xf1\x01\n\nStartTrace\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12\x36\n\x10request_metadata\x18\x03 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x04 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x02\n\x08\x45ndTrace\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12#\n\x06status\x18\x03 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x04 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x05 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x82\x01\n\x0cGetTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"y\n\x0eGetTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"{\n\x0e\x42\x61tchGetTraces\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x1a)\n\x08Response\x12\x1d\n\x06traces\x18\x01 \x03(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x97\x01\n\x08GetTrace\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\rallow_partial\x18\x02 \x01(\x08:\x05\x66\x61lse\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xeb\x01\n\x0cSearchTraces\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaa\x02\n\x13SearchUnifiedTraces\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x03 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x18\n\x0bmax_results\x18\x05 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc1\x01\n\x15GetOnlineTraceDetails\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x16source_inference_table\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12*\n\x1csource_databricks_request_id\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x1e\n\x08Response\x12\x12\n\ntrace_data\x18\x01 \x01(\t\"\xc3\x01\n\x0c\x44\x65leteTraces\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc5\x01\n\x0e\x44\x65leteTracesV3\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb5\x02\n\x1f\x43\x61lculateTraceFilterCorrelation\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x16\n\x0e\x66ilter_string1\x18\x02 \x01(\t\x12\x16\n\x0e\x66ilter_string2\x18\x03 \x01(\t\x12\x13\n\x0b\x62\x61se_filter\x18\x04 \x01(\t\x1a\x87\x01\n\x08Response\x12\x0c\n\x04npmi\x18\x01 \x01(\x01\x12\x15\n\rnpmi_smoothed\x18\x02 \x01(\x01\x12\x15\n\rfilter1_count\x18\x03 \x01(\x05\x12\x15\n\rfilter2_count\x18\x04 \x01(\x05\x12\x13\n\x0bjoint_count\x18\x05 \x01(\x05\x12\x13\n\x0btotal_count\x18\x06 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"v\n\x0bSetTraceTag\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x01\n\rSetTraceTagV3\x12\x10\n\x08trace_id\x18\x04 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"z\n\x0e\x44\x65leteTraceTag\x12\x10\n\x08trace_id\x18\x03 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"l\n\x10\x44\x65leteTraceTagV3\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"c\n\x05Trace\x12\'\n\ntrace_info\x18\x01 \x01(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x31\n\x05spans\x18\x02 \x03(\x0b\x32\".opentelemetry.proto.trace.v1.Span\"\xb6\x03\n\rTraceLocation\x12\x35\n\x04type\x18\x01 \x01(\x0e\x32\'.mlflow.TraceLocation.TraceLocationType\x12K\n\x11mlflow_experiment\x18\x02 \x01(\x0b\x32..mlflow.TraceLocation.MlflowExperimentLocationH\x00\x12G\n\x0finference_table\x18\x03 \x01(\x0b\x32,.mlflow.TraceLocation.InferenceTableLocationH\x00\x1a\x31\n\x18MlflowExperimentLocation\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a\x31\n\x16InferenceTableLocation\x12\x17\n\x0f\x66ull_table_name\x18\x01 \x01(\t\"d\n\x11TraceLocationType\x12#\n\x1fTRACE_LOCATION_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MLFLOW_EXPERIMENT\x10\x01\x12\x13\n\x0fINFERENCE_TABLE\x10\x02\x42\x0c\n\nidentifier\"\x9b\x05\n\x0bTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x12\x19\n\x11\x63lient_request_id\x18\x02 \x01(\t\x12-\n\x0etrace_location\x18\x03 \x01(\x0b\x32\x15.mlflow.TraceLocation\x12\x0f\n\x07request\x18\x04 \x01(\t\x12\x10\n\x08response\x18\x05 \x01(\t\x12\x17\n\x0frequest_preview\x18\x0c \x01(\t\x12\x18\n\x10response_preview\x18\r \x01(\t\x12\x30\n\x0crequest_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12\x65xecution_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n\x05state\x18\x08 \x01(\x0e\x32\x19.mlflow.TraceInfoV3.State\x12>\n\x0etrace_metadata\x18\t \x03(\x0b\x32&.mlflow.TraceInfoV3.TraceMetadataEntry\x12\x33\n\x0b\x61ssessments\x18\n \x03(\x0b\x32\x1e.mlflow.assessments.Assessment\x12+\n\x04tags\x18\x0b \x03(\x0b\x32\x1d.mlflow.TraceInfoV3.TagsEntry\x1a\x34\n\x12TraceMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"B\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03\"\\\n\x0cStartTraceV3\x12\"\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.TraceB\x04\xf8\x86\x19\x01\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace\"F\n\x0fLinkTracesToRun\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x12\x14\n\x06run_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response\"h\n\x0e\x44\x61tasetSummary\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04name\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0f\n\x07\x63ontext\x18\x04 \x01(\t\"\x94\x01\n\x0eSearchDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x1a=\n\x08Response\x12\x31\n\x11\x64\x61taset_summaries\x18\x01 \x03(\x0b\x32\x16.mlflow.DatasetSummary:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x02\n\x11\x43reateLoggedModel\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nmodel_type\x18\x03 \x01(\t\x12\x15\n\rsource_run_id\x18\x04 \x01(\t\x12,\n\x06params\x18\x05 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12$\n\x04tags\x18\x06 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbb\x01\n\x13\x46inalizeLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12/\n\x06status\x18\x02 \x01(\x0e\x32\x19.mlflow.LoggedModelStatusB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x01\n\x0eGetLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"d\n\x11\x44\x65leteLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf7\x03\n\x12SearchLoggedModels\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x34\n\x08\x64\x61tasets\x18\x06 \x03(\x0b\x32\".mlflow.SearchLoggedModels.Dataset\x12\x17\n\x0bmax_results\x18\x03 \x01(\x05:\x02\x35\x30\x12\x34\n\x08order_by\x18\x04 \x03(\x0b\x32\".mlflow.SearchLoggedModels.OrderBy\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a=\n\x07\x44\x61taset\x12\x1a\n\x0c\x64\x61taset_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x64\x61taset_digest\x18\x02 \x01(\t\x1aj\n\x07OrderBy\x12\x18\n\nfield_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x17\n\tascending\x18\x02 \x01(\x08:\x04true\x12\x14\n\x0c\x64\x61taset_name\x18\x03 \x01(\t\x12\x16\n\x0e\x64\x61taset_digest\x18\x04 \x01(\t\x1aH\n\x08Response\x12#\n\x06models\x18\x01 \x03(\x0b\x32\x13.mlflow.LoggedModel\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x12SetLoggedModelTags\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x04tags\x18\x02 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x14\x44\x65leteLoggedModelTag\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07tag_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xec\x01\n\x18ListLoggedModelArtifacts\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1f\n\x17\x61rtifact_directory_path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x03 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9c\x01\n\x1bLogLoggedModelParamsRequest\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\x0bLoggedModel\x12%\n\x04info\x18\x01 \x01(\x0b\x32\x17.mlflow.LoggedModelInfo\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.mlflow.LoggedModelData\"\x84\x03\n\x0fLoggedModelInfo\x12\x10\n\x08model_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1d\n\x15\x63reation_timestamp_ms\x18\x04 \x01(\x03\x12!\n\x19last_updated_timestamp_ms\x18\x05 \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\x06 \x01(\t\x12)\n\x06status\x18\x07 \x01(\x0e\x32\x19.mlflow.LoggedModelStatus\x12\x12\n\ncreator_id\x18\x08 \x01(\x03\x12\x12\n\nmodel_type\x18\t \x01(\t\x12\x15\n\rsource_run_id\x18\n \x01(\t\x12\x16\n\x0estatus_message\x18\x0b \x01(\t\x12$\n\x04tags\x18\x0c \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x12:\n\rregistrations\x18\r \x03(\x0b\x32#.mlflow.LoggedModelRegistrationInfo\",\n\x0eLoggedModelTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"<\n\x1bLoggedModelRegistrationInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"`\n\x0fLoggedModelData\x12,\n\x06params\x18\x01 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\"2\n\x14LoggedModelParameter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x81\x02\n\x0eSearchTracesV3\x12(\n\tlocations\x18\x01 \x03(\x0b\x32\x15.mlflow.TraceLocation\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aH\n\x08Response\x12#\n\x06traces\x18\x01 \x03(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x02\n\rCreateDataset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x12\x44\n\x0bsource_type\x18\x03 \x01(\x0e\x32/.mlflow.datasets.DatasetRecordSource.SourceType\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12\x0c\n\x04tags\x18\x08 \x01(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb7\x01\n\nGetDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x02 \x01(\t\x1aN\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"b\n\rDeleteDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x02\n\x18SearchEvaluationDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x15\n\rfilter_string\x18\x02 \x01(\t\x12\x19\n\x0bmax_results\x18\x03 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aO\n\x08Response\x12*\n\x08\x64\x61tasets\x18\x01 \x03(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xa2\x01\n\x0eSetDatasetTags\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04tags\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"x\n\x10\x44\x65leteDatasetTag\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc3\x01\n\x14UpsertDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07records\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nupdated_by\x18\x03 \x01(\t\x1a\x39\n\x08Response\x12\x16\n\x0einserted_count\x18\x01 \x01(\x05\x12\x15\n\rupdated_count\x18\x02 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x84\x01\n\x17GetDatasetExperimentIds\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\"\n\x08Response\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbf\x01\n\x11GetDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bmax_results\x18\x02 \x01(\x05:\x04\x31\x30\x30\x30\x12\x12\n\npage_token\x18\x03 \x01(\t\x1a\x34\n\x08Response\x12\x0f\n\x07records\x18\x01 \x01(\t\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x17\x41\x64\x64\x44\x61tasetToExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb4\x01\n\x1cRemoveDatasetFromExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x02\n\x0eRegisterScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x03 \x01(\t\x1a\x85\x01\n\x08Response\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x11\n\tscorer_id\x18\x02 \x01(\t\x12\x15\n\rexperiment_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x05 \x01(\t\x12\x15\n\rcreation_time\x18\x06 \x01(\x03:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x0bListScorers\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x93\x01\n\x12ListScorerVersions\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x01\n\tGetScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a*\n\x08Response\x12\x1e\n\x06scorer\x18\x01 \x01(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x0c\x44\x65leteScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x01\n\x06Scorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\x05\x12\x13\n\x0bscorer_name\x18\x02 \x01(\t\x12\x16\n\x0escorer_version\x18\x03 \x01(\x05\x12\x19\n\x11serialized_scorer\x18\x04 \x01(\t\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x11\n\tscorer_id\x18\x06 \x01(\t\"4\n\tWorkspace\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"p\n\x0eListWorkspaces\x1a\x31\n\x08Response\x12%\n\nworkspaces\x18\x01 \x03(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x99\x01\n\x0f\x43reateWorkspace\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x1a\x30\n\x08Response\x12$\n\tworkspace\x18\x01 \x01(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8b\x01\n\x0cGetWorkspace\x12\x1c\n\x0eworkspace_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x30\n\x08Response\x12$\n\tworkspace\x18\x01 \x01(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xa3\x01\n\x0fUpdateWorkspace\x12\x1c\n\x0eworkspace_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x1a\x30\n\x08Response\x12$\n\tworkspace\x18\x01 \x01(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"h\n\x0f\x44\x65leteWorkspace\x12\x1c\n\x0eworkspace_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]*6\n\x08ViewType\x12\x0f\n\x0b\x41\x43TIVE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45LETED_ONLY\x10\x02\x12\x07\n\x03\x41LL\x10\x03*I\n\nSourceType\x12\x0c\n\x08NOTEBOOK\x10\x01\x12\x07\n\x03JOB\x10\x02\x12\x0b\n\x07PROJECT\x10\x03\x12\t\n\x05LOCAL\x10\x04\x12\x0c\n\x07UNKNOWN\x10\xe8\x07*M\n\tRunStatus\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tSCHEDULED\x10\x02\x12\x0c\n\x08\x46INISHED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\n\n\x06KILLED\x10\x05*O\n\x0bTraceStatus\x12\x1c\n\x18TRACE_STATUS_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03*\x8a\x01\n\x11LoggedModelStatus\x12#\n\x1fLOGGED_MODEL_STATUS_UNSPECIFIED\x10\x00\x12\x18\n\x14LOGGED_MODEL_PENDING\x10\x01\x12\x16\n\x12LOGGED_MODEL_READY\x10\x02\x12\x1e\n\x1aLOGGED_MODEL_UPLOAD_FAILED\x10\x03\x32\x85`\n\rMlflowService\x12\xa6\x01\n\x13getExperimentByName\x12\x1b.mlflow.GetExperimentByName\x1a$.mlflow.GetExperimentByName.Response\"L\xf2\x86\x19H\n,\n\x03GET\x12\x1f/mlflow/experiments/get-by-name\x1a\x04\x08\x02\x10\x00\x10\x01*\x16Get Experiment By Name\x12\x94\x01\n\x10\x63reateExperiment\x12\x18.mlflow.CreateExperiment\x1a!.mlflow.CreateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/create\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x43reate Experiment\x12\xc1\x01\n\x11searchExperiments\x12\x19.mlflow.SearchExperiments\x1a\".mlflow.SearchExperiments.Response\"m\xf2\x86\x19i\n(\n\x04POST\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\n\'\n\x03GET\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Search Experiments\x12\x88\x01\n\rgetExperiment\x12\x15.mlflow.GetExperiment\x1a\x1e.mlflow.GetExperiment.Response\"@\xf2\x86\x19\x38\n$\n\x03GET\x12\x17/mlflow/experiments/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eGet Experiment\xba\x8c\x19\x00\x12\x94\x01\n\x10\x64\x65leteExperiment\x12\x18.mlflow.DeleteExperiment\x1a!.mlflow.DeleteExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x44\x65lete Experiment\x12\x99\x01\n\x11restoreExperiment\x12\x19.mlflow.RestoreExperiment\x1a\".mlflow.RestoreExperiment.Response\"E\xf2\x86\x19\x41\n)\n\x04POST\x12\x1b/mlflow/experiments/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Restore Experiment\x12\x94\x01\n\x10updateExperiment\x12\x18.mlflow.UpdateExperiment\x1a!.mlflow.UpdateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/update\x1a\x04\x08\x02\x10\x00\x10\x01*\x11Update Experiment\x12q\n\tcreateRun\x12\x11.mlflow.CreateRun\x1a\x1a.mlflow.CreateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/create\x1a\x04\x08\x02\x10\x00\x10\x01*\nCreate Run\x12q\n\tupdateRun\x12\x11.mlflow.UpdateRun\x1a\x1a.mlflow.UpdateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/update\x1a\x04\x08\x02\x10\x00\x10\x01*\nUpdate Run\x12q\n\tdeleteRun\x12\x11.mlflow.DeleteRun\x1a\x1a.mlflow.DeleteRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Run\x12v\n\nrestoreRun\x12\x12.mlflow.RestoreRun\x1a\x1b.mlflow.RestoreRun.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bRestore Run\x12u\n\tlogMetric\x12\x11.mlflow.LogMetric\x1a\x1a.mlflow.LogMetric.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-metric\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Metric\x12t\n\x08logParam\x12\x10.mlflow.LogParam\x1a\x19.mlflow.LogParam.Response\";\xf2\x86\x19\x37\n(\n\x04POST\x12\x1a/mlflow/runs/log-parameter\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Param\x12\xa1\x01\n\x10setExperimentTag\x12\x18.mlflow.SetExperimentTag\x1a!.mlflow.SetExperimentTag.Response\"P\xf2\x86\x19L\n4\n\x04POST\x12&/mlflow/experiments/set-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Set Experiment Tag\x12\xb0\x01\n\x13\x64\x65leteExperimentTag\x12\x1b.mlflow.DeleteExperimentTag\x1a$.mlflow.DeleteExperimentTag.Response\"V\xf2\x86\x19R\n7\n\x04POST\x12)/mlflow/experiments/delete-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x15\x44\x65lete Experiment Tag\x12\x66\n\x06setTag\x12\x0e.mlflow.SetTag\x1a\x17.mlflow.SetTag.Response\"3\xf2\x86\x19/\n\"\n\x04POST\x12\x14/mlflow/runs/set-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Set Tag\x12\x88\x01\n\x0bsetTraceTag\x12\x13.mlflow.SetTraceTag\x1a\x1c.mlflow.SetTraceTag.Response\"F\xf2\x86\x19\x42\n/\n\x05PATCH\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\rSet Trace Tag\x12\x8f\x01\n\rsetTraceTagV3\x12\x15.mlflow.SetTraceTagV3\x1a\x1e.mlflow.SetTraceTagV3.Response\"G\xf2\x86\x19\x43\n-\n\x05PATCH\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Set Trace Tag V3\x12\x95\x01\n\x0e\x64\x65leteTraceTag\x12\x16.mlflow.DeleteTraceTag\x1a\x1f.mlflow.DeleteTraceTag.Response\"J\xf2\x86\x19\x46\n0\n\x06\x44\x45LETE\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x44\x65lete Trace Tag\x12\x9c\x01\n\x10\x64\x65leteTraceTagV3\x12\x18.mlflow.DeleteTraceTagV3\x1a!.mlflow.DeleteTraceTagV3.Response\"K\xf2\x86\x19G\n.\n\x06\x44\x45LETE\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x13\x44\x65lete Trace Tag V3\x12u\n\tdeleteTag\x12\x11.mlflow.DeleteTag\x1a\x1a.mlflow.DeleteTag.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/delete-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Tag\x12\x65\n\x06getRun\x12\x0e.mlflow.GetRun\x1a\x17.mlflow.GetRun.Response\"2\xf2\x86\x19*\n\x1d\n\x03GET\x12\x10/mlflow/runs/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Get Run\xba\x8c\x19\x00\x12y\n\nsearchRuns\x12\x12.mlflow.SearchRuns\x1a\x1b.mlflow.SearchRuns.Response\":\xf2\x86\x19\x32\n!\n\x04POST\x12\x13/mlflow/runs/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bSearch Runs\xba\x8c\x19\x00\x12\x87\x01\n\rlistArtifacts\x12\x15.mlflow.ListArtifacts\x1a\x1e.mlflow.ListArtifacts.Response\"?\xf2\x86\x19\x37\n#\n\x03GET\x12\x16/mlflow/artifacts/list\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eList Artifacts\xba\x8c\x19\x00\x12\x95\x01\n\x10getMetricHistory\x12\x18.mlflow.GetMetricHistory\x1a!.mlflow.GetMetricHistory.Response\"D\xf2\x86\x19@\n(\n\x03GET\x12\x1b/mlflow/metrics/get-history\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Get Metric History\x12\xb7\x01\n\x1cgetMetricHistoryBulkInterval\x12$.mlflow.GetMetricHistoryBulkInterval\x1a-.mlflow.GetMetricHistoryBulkInterval.Response\"B\xf2\x86\x19:\n6\n\x03GET\x12)/mlflow/metrics/get-history-bulk-interval\x1a\x04\x08\x02\x10\x0b\x10\x03\xba\x8c\x19\x00\x12p\n\x08logBatch\x12\x10.mlflow.LogBatch\x1a\x19.mlflow.LogBatch.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-batch\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Batch\x12p\n\x08logModel\x12\x10.mlflow.LogModel\x1a\x19.mlflow.LogModel.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-model\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Model\x12u\n\tlogInputs\x12\x11.mlflow.LogInputs\x1a\x1a.mlflow.LogInputs.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-inputs\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Inputs\x12v\n\nlogOutputs\x12\x12.mlflow.LogOutputs\x1a\x1b.mlflow.LogOutputs.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/outputs\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bLog Outputs\x12\x87\x01\n\x0esearchDatasets\x12\x16.mlflow.SearchDatasets\x1a\x1f.mlflow.SearchDatasets.Response\"<\xf2\x86\x19\x34\n0\n\x04POST\x12\"mlflow/experiments/search-datasets\x1a\x04\x08\x02\x10\x00\x10\x03\xba\x8c\x19\x00\x12p\n\nstartTrace\x12\x12.mlflow.StartTrace\x1a\x1b.mlflow.StartTrace.Response\"1\xf2\x86\x19-\n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bStart Trace\x12v\n\x08\x65ndTrace\x12\x10.mlflow.EndTrace\x1a\x19.mlflow.EndTrace.Response\"=\xf2\x86\x19\x39\n*\n\x05PATCH\x12\x1b/mlflow/traces/{request_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\tEnd Trace\x12\x89\x01\n\x0cgetTraceInfo\x12\x14.mlflow.GetTraceInfo\x1a\x1d.mlflow.GetTraceInfo.Response\"D\xf2\x86\x19@\n-\n\x03GET\x12 /mlflow/traces/{request_id}/info\x1a\x04\x08\x02\x10\x00\x10\x03*\rGet TraceInfo\x12\x8b\x01\n\x0egetTraceInfoV3\x12\x16.mlflow.GetTraceInfoV3\x1a\x1f.mlflow.GetTraceInfoV3.Response\"@\xf2\x86\x19<\n&\n\x03GET\x12\x19/mlflow/traces/{trace_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Get TraceInfo v3\x12n\n\x08getTrace\x12\x10.mlflow.GetTrace\x1a\x19.mlflow.GetTrace.Response\"5\xf2\x86\x19\x31\n\x1f\n\x03GET\x12\x12/mlflow/traces/get\x1a\x04\x08\x03\x10\x00\x10\x03*\x0cGet Trace v3\x12\x83\x01\n\x0e\x62\x61tchGetTraces\x12\x16.mlflow.BatchGetTraces\x1a\x1f.mlflow.BatchGetTraces.Response\"8\xf2\x86\x19\x34\n$\n\x03GET\x12\x17/mlflow/traces/batchGet\x1a\x04\x08\x03\x10\x00\x10\x03*\nGet Traces\x12w\n\x0csearchTraces\x12\x14.mlflow.SearchTraces\x1a\x1d.mlflow.SearchTraces.Response\"2\xf2\x86\x19.\n\x1b\n\x03GET\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rSearch Traces\x12\x88\x01\n\x0esearchTracesV3\x12\x16.mlflow.SearchTracesV3\x1a\x1f.mlflow.SearchTracesV3.Response\"=\xf2\x86\x19\x39\n#\n\x04POST\x12\x15/mlflow/traces/search\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Search Traces V3\x12i\n\x0cstartTraceV3\x12\x14.mlflow.StartTraceV3\x1a\x1d.mlflow.StartTraceV3.Response\"$\xf2\x86\x19 \n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x03\x10\x00\x10\x03\x12\x92\x01\n\x0flinkTracesToRun\x12\x17.mlflow.LinkTracesToRun\x1a .mlflow.LinkTracesToRun.Response\"D\xf2\x86\x19@\n(\n\x04POST\x12\x1a/mlflow/traces/link-to-run\x1a\x04\x08\x02\x10\x00\x10\x03*\x12Link Traces to Run\x12\xa2\x01\n\x19searchUnifiedTraceHandler\x12\x1b.mlflow.SearchUnifiedTraces\x1a$.mlflow.SearchUnifiedTraces.Response\"B\xf2\x86\x19>\n#\n\x03GET\x12\x16/mlflow/unified-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x15Search Unified Traces\x12\xaf\x01\n\x15getOnlineTraceDetails\x12\x1d.mlflow.GetOnlineTraceDetails\x1a&.mlflow.GetOnlineTraceDetails.Response\"O\xf2\x86\x19K\n-\n\x03GET\x12 /mlflow/get-online-trace-details\x1a\x04\x08\x02\x10\x00\x10\x03*\x18Get Online Trace Details\x12\x86\x01\n\x0c\x64\x65leteTraces\x12\x14.mlflow.DeleteTraces\x1a\x1d.mlflow.DeleteTraces.Response\"A\xf2\x86\x19=\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rDelete Traces\x12\x8f\x01\n\x0e\x64\x65leteTracesV3\x12\x16.mlflow.DeleteTracesV3\x1a\x1f.mlflow.DeleteTracesV3.Response\"D\xf2\x86\x19@\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x03\x10\x00\x10\x03*\x10\x44\x65lete Traces V3\x12\xe3\x01\n\x1f\x63\x61lculateTraceFilterCorrelation\x12\'.mlflow.CalculateTraceFilterCorrelation\x1a\x30.mlflow.CalculateTraceFilterCorrelation.Response\"e\xf2\x86\x19\x61\n9\n\x04POST\x12+/mlflow/traces/calculate-filter-correlation\x1a\x04\x08\x03\x10\x00\x10\x03*\"Calculate Trace Filter Correlation\x12\x83\x01\n\x0elistWorkspaces\x12\x16.mlflow.ListWorkspaces\x1a\x1f.mlflow.ListWorkspaces.Response\"8\xf2\x86\x19\x34\n\x1f\n\x03GET\x12\x12/mlflow/workspaces\x1a\x04\x08\x02\x10\x00\x10\x03*\x0fList Workspaces\x12\x88\x01\n\x0f\x63reateWorkspace\x12\x17.mlflow.CreateWorkspace\x1a .mlflow.CreateWorkspace.Response\":\xf2\x86\x19\x36\n \n\x04POST\x12\x12/mlflow/workspaces\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x43reate Workspace\x12\x8c\x01\n\x0cgetWorkspace\x12\x14.mlflow.GetWorkspace\x1a\x1d.mlflow.GetWorkspace.Response\"G\xf2\x86\x19\x43\n0\n\x03GET\x12#/mlflow/workspaces/{workspace_name}\x1a\x04\x08\x02\x10\x00\x10\x03*\rGet Workspace\x12\x9a\x01\n\x0fupdateWorkspace\x12\x17.mlflow.UpdateWorkspace\x1a .mlflow.UpdateWorkspace.Response\"L\xf2\x86\x19H\n2\n\x05PATCH\x12#/mlflow/workspaces/{workspace_name}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10Update Workspace\x12\x9b\x01\n\x0f\x64\x65leteWorkspace\x12\x17.mlflow.DeleteWorkspace\x1a .mlflow.DeleteWorkspace.Response\"M\xf2\x86\x19I\n3\n\x06\x44\x45LETE\x12#/mlflow/workspaces/{workspace_name}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x44\x65lete Workspace\x12\x94\x01\n\x11\x63reateLoggedModel\x12\x19.mlflow.CreateLoggedModel\x1a\".mlflow.CreateLoggedModel.Response\"@\xf2\x86\x19<\n#\n\x04POST\x12\x15/mlflow/logged-models\x1a\x04\x08\x02\x10\x00\x10\x03*\x13\x43reate Logged Model\x12\xa8\x01\n\x13\x66inalizeLoggedModel\x12\x1b.mlflow.FinalizeLoggedModel\x1a$.mlflow.FinalizeLoggedModel.Response\"N\xf2\x86\x19J\n/\n\x05PATCH\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x46inalize Logged Model\x12\x92\x01\n\x0egetLoggedModel\x12\x16.mlflow.GetLoggedModel\x1a\x1f.mlflow.GetLoggedModel.Response\"G\xf2\x86\x19\x43\n-\n\x03GET\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10Get Logged Model\x12\xa3\x01\n\x11\x64\x65leteLoggedModel\x12\x19.mlflow.DeleteLoggedModel\x1a\".mlflow.DeleteLoggedModel.Response\"O\xf2\x86\x19K\n0\n\x06\x44\x45LETE\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x44\x65lete a Logged Model\x12\x9e\x01\n\x12searchLoggedModels\x12\x1a.mlflow.SearchLoggedModels\x1a#.mlflow.SearchLoggedModels.Response\"G\xf2\x86\x19\x43\n*\n\x04POST\x12\x1c/mlflow/logged-models/search\x1a\x04\x08\x02\x10\x00\x10\x03*\x13Search LoggedModels\x12\xa9\x01\n\x12setLoggedModelTags\x12\x1a.mlflow.SetLoggedModelTags\x1a#.mlflow.SetLoggedModelTags.Response\"R\xf2\x86\x19N\n4\n\x05PATCH\x12%/mlflow/logged-models/{model_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x14Set Logged Model Tag\x12\xbd\x01\n\x14\x64\x65leteLoggedModelTag\x12\x1c.mlflow.DeleteLoggedModelTag\x1a%.mlflow.DeleteLoggedModelTag.Response\"`\xf2\x86\x19\\\n?\n\x06\x44\x45LETE\x12//mlflow/logged-models/{model_id}/tags/{tag_key}\x1a\x04\x08\x02\x10\x00\x10\x03*\x17\x44\x65lete Logged Model Tag\x12\xd6\x01\n\x18listLoggedModelArtifacts\x12 .mlflow.ListLoggedModelArtifacts\x1a).mlflow.ListLoggedModelArtifacts.Response\"m\xf2\x86\x19i\nC\n\x03GET\x12\x36/mlflow/logged-models/{model_id}/artifacts/directories\x1a\x04\x08\x02\x10\x00\x10\x03* List Artifacts for Logged Models\x12\xc1\x01\n\x14LogLoggedModelParams\x12#.mlflow.LogLoggedModelParamsRequest\x1a,.mlflow.LogLoggedModelParamsRequest.Response\"V\xf2\x86\x19R\n5\n\x04POST\x12\'/mlflow/logged-models/{model_id}/params\x1a\x04\x08\x02\x10\x00\x10\x03*\x17Log Logged Model Params\x12\xb0\x01\n\rGetAssessment\x12\x1c.mlflow.GetAssessmentRequest\x1a%.mlflow.GetAssessmentRequest.Response\"Z\xf2\x86\x19V\nB\n\x03GET\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x0eGet Assessment\x12\xdf\x01\n\x10\x63reateAssessment\x12\x18.mlflow.CreateAssessment\x1a!.mlflow.CreateAssessment.Response\"\x8d\x01\xf2\x86\x19\x88\x01\n>\n\x04POST\x12\x30/mlflow/traces/{assessment.trace_id}/assessments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*:Create an assessment of a trace or a span within the trace\x12\xd0\x01\n\x10updateAssessment\x12\x18.mlflow.UpdateAssessment\x1a!.mlflow.UpdateAssessment.Response\"\x7f\xf2\x86\x19{\nD\n\x05PATCH\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x01*)Update an existing assessment on a trace.\x12\xb1\x01\n\x10\x64\x65leteAssessment\x12\x18.mlflow.DeleteAssessment\x1a!.mlflow.DeleteAssessment.Response\"`\xf2\x86\x19\\\nE\n\x06\x44\x45LETE\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x11\x44\x65lete Assessment\x12\x9a\x01\n\rcreateDataset\x12\x15.mlflow.CreateDataset\x1a\x1e.mlflow.CreateDataset.Response\"R\xf2\x86\x19N\n%\n\x04POST\x12\x17/mlflow/datasets/create\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*\x19\x43reate Evaluation Dataset\x12\x91\x01\n\ngetDataset\x12\x12.mlflow.GetDataset\x1a\x1b.mlflow.GetDataset.Response\"R\xf2\x86\x19N\n*\n\x03GET\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x16Get Evaluation Dataset\x12\xa0\x01\n\rdeleteDataset\x12\x15.mlflow.DeleteDataset\x1a\x1e.mlflow.DeleteDataset.Response\"X\xf2\x86\x19T\n-\n\x06\x44\x45LETE\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x19\x44\x65lete Evaluation Dataset\x12\xdd\x01\n\x18searchEvaluationDatasets\x12 .mlflow.SearchEvaluationDatasets\x1a).mlflow.SearchEvaluationDatasets.Response\"t\xf2\x86\x19p\n%\n\x04POST\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\n$\n\x03GET\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\x01*\x1aSearch Evaluation Datasets\x12\xa9\x01\n\x0esetDatasetTags\x12\x16.mlflow.SetDatasetTags\x1a\x1f.mlflow.SetDatasetTags.Response\"^\xf2\x86\x19Z\n1\n\x05PATCH\x12\"/mlflow/datasets/{dataset_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1bSet Evaluation Dataset Tags\x12\xb8\x01\n\x10\x64\x65leteDatasetTag\x12\x18.mlflow.DeleteDatasetTag\x1a!.mlflow.DeleteDatasetTag.Response\"g\xf2\x86\x19\x63\n8\n\x06\x44\x45LETE\x12(/mlflow/datasets/{dataset_id}/tags/{key}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1d\x44\x65lete Evaluation Dataset Tag\x12\xc3\x01\n\x14upsertDatasetRecords\x12\x1c.mlflow.UpsertDatasetRecords\x1a%.mlflow.UpsertDatasetRecords.Response\"f\xf2\x86\x19\x62\n3\n\x04POST\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*!Upsert Evaluation Dataset Records\x12\xd6\x01\n\x17getDatasetExperimentIds\x12\x1f.mlflow.GetDatasetExperimentIds\x1a(.mlflow.GetDatasetExperimentIds.Response\"p\xf2\x86\x19l\n9\n\x03GET\x12,/mlflow/datasets/{dataset_id}/experiment-ids\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*%Get Evaluation Dataset Experiment IDs\x12\x8a\x01\n\x0eregisterScorer\x12\x16.mlflow.RegisterScorer\x1a\x1f.mlflow.RegisterScorer.Response\"?\xf2\x86\x19;\n&\n\x04POST\x12\x18/mlflow/scorers/register\x1a\x04\x08\x03\x10\x00\x10\x01*\x0fRegister Scorer\x12y\n\x0blistScorers\x12\x13.mlflow.ListScorers\x1a\x1c.mlflow.ListScorers.Response\"7\xf2\x86\x19\x33\n!\n\x03GET\x12\x14/mlflow/scorers/list\x1a\x04\x08\x03\x10\x00\x10\x01*\x0cList Scorers\x12\x9a\x01\n\x12listScorerVersions\x12\x1a.mlflow.ListScorerVersions\x1a#.mlflow.ListScorerVersions.Response\"C\xf2\x86\x19?\n%\n\x03GET\x12\x18/mlflow/scorers/versions\x1a\x04\x08\x03\x10\x00\x10\x01*\x14List Scorer Versions\x12p\n\tgetScorer\x12\x11.mlflow.GetScorer\x1a\x1a.mlflow.GetScorer.Response\"4\xf2\x86\x19\x30\n \n\x03GET\x12\x13/mlflow/scorers/get\x1a\x04\x08\x03\x10\x00\x10\x01*\nGet Scorer\x12\x82\x01\n\x0c\x64\x65leteScorer\x12\x14.mlflow.DeleteScorer\x1a\x1d.mlflow.DeleteScorer.Response\"=\xf2\x86\x19\x39\n&\n\x06\x44\x45LETE\x12\x16/mlflow/scorers/delete\x1a\x04\x08\x03\x10\x00\x10\x01*\rDelete Scorer\x12\xb6\x01\n\x11getDatasetRecords\x12\x19.mlflow.GetDatasetRecords\x1a\".mlflow.GetDatasetRecords.Response\"b\xf2\x86\x19^\n2\n\x03GET\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1eGet Evaluation Dataset Records\x12\xcd\x01\n\x17\x61\x64\x64\x44\x61tasetToExperiments\x12\x1f.mlflow.AddDatasetToExperiments\x1a(.mlflow.AddDatasetToExperiments.Response\"g\xf2\x86\x19\x63\n;\n\x04POST\x12-/mlflow/datasets/{dataset_id}/add-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1a\x41\x64\x64 Dataset to Experiments\x12\xe4\x01\n\x1cremoveDatasetFromExperiments\x12$.mlflow.RemoveDatasetFromExperiments\x1a-.mlflow.RemoveDatasetFromExperiments.Response\"o\xf2\x86\x19k\n>\n\x04POST\x12\x30/mlflow/datasets/{dataset_id}/remove-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1fRemove Dataset from ExperimentsB\x1e\n\x14org.mlflow.api.proto\x90\x01\x01\xe2?\x02\x10\x01')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -362,6 +362,26 @@
_globals['_GETSCORER']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
_globals['_DELETESCORER']._loaded_options = None
_globals['_DELETESCORER']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _globals['_WORKSPACE'].fields_by_name['name']._loaded_options = None
+ _globals['_WORKSPACE'].fields_by_name['name']._serialized_options = b'\370\206\031\001'
+ _globals['_LISTWORKSPACES']._loaded_options = None
+ _globals['_LISTWORKSPACES']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _globals['_CREATEWORKSPACE'].fields_by_name['name']._loaded_options = None
+ _globals['_CREATEWORKSPACE'].fields_by_name['name']._serialized_options = b'\370\206\031\001'
+ _globals['_CREATEWORKSPACE']._loaded_options = None
+ _globals['_CREATEWORKSPACE']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _globals['_GETWORKSPACE'].fields_by_name['workspace_name']._loaded_options = None
+ _globals['_GETWORKSPACE'].fields_by_name['workspace_name']._serialized_options = b'\370\206\031\001'
+ _globals['_GETWORKSPACE']._loaded_options = None
+ _globals['_GETWORKSPACE']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _globals['_UPDATEWORKSPACE'].fields_by_name['workspace_name']._loaded_options = None
+ _globals['_UPDATEWORKSPACE'].fields_by_name['workspace_name']._serialized_options = b'\370\206\031\001'
+ _globals['_UPDATEWORKSPACE']._loaded_options = None
+ _globals['_UPDATEWORKSPACE']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _globals['_DELETEWORKSPACE'].fields_by_name['workspace_name']._loaded_options = None
+ _globals['_DELETEWORKSPACE'].fields_by_name['workspace_name']._serialized_options = b'\370\206\031\001'
+ _globals['_DELETEWORKSPACE']._loaded_options = None
+ _globals['_DELETEWORKSPACE']._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
_globals['_MLFLOWSERVICE'].methods_by_name['getExperimentByName']._loaded_options = None
_globals['_MLFLOWSERVICE'].methods_by_name['getExperimentByName']._serialized_options = b'\362\206\031H\n,\n\003GET\022\037/mlflow/experiments/get-by-name\032\004\010\002\020\000\020\001*\026Get Experiment By Name'
_globals['_MLFLOWSERVICE'].methods_by_name['createExperiment']._loaded_options = None
@@ -454,6 +474,16 @@
_globals['_MLFLOWSERVICE'].methods_by_name['deleteTracesV3']._serialized_options = b'\362\206\031@\n*\n\004POST\022\034/mlflow/traces/delete-traces\032\004\010\003\020\000\020\003*\020Delete Traces V3'
_globals['_MLFLOWSERVICE'].methods_by_name['calculateTraceFilterCorrelation']._loaded_options = None
_globals['_MLFLOWSERVICE'].methods_by_name['calculateTraceFilterCorrelation']._serialized_options = b'\362\206\031a\n9\n\004POST\022+/mlflow/traces/calculate-filter-correlation\032\004\010\003\020\000\020\003*\"Calculate Trace Filter Correlation'
+ _globals['_MLFLOWSERVICE'].methods_by_name['listWorkspaces']._loaded_options = None
+ _globals['_MLFLOWSERVICE'].methods_by_name['listWorkspaces']._serialized_options = b'\362\206\0314\n\037\n\003GET\022\022/mlflow/workspaces\032\004\010\002\020\000\020\003*\017List Workspaces'
+ _globals['_MLFLOWSERVICE'].methods_by_name['createWorkspace']._loaded_options = None
+ _globals['_MLFLOWSERVICE'].methods_by_name['createWorkspace']._serialized_options = b'\362\206\0316\n \n\004POST\022\022/mlflow/workspaces\032\004\010\002\020\000\020\003*\020Create Workspace'
+ _globals['_MLFLOWSERVICE'].methods_by_name['getWorkspace']._loaded_options = None
+ _globals['_MLFLOWSERVICE'].methods_by_name['getWorkspace']._serialized_options = b'\362\206\031C\n0\n\003GET\022#/mlflow/workspaces/{workspace_name}\032\004\010\002\020\000\020\003*\rGet Workspace'
+ _globals['_MLFLOWSERVICE'].methods_by_name['updateWorkspace']._loaded_options = None
+ _globals['_MLFLOWSERVICE'].methods_by_name['updateWorkspace']._serialized_options = b'\362\206\031H\n2\n\005PATCH\022#/mlflow/workspaces/{workspace_name}\032\004\010\002\020\000\020\003*\020Update Workspace'
+ _globals['_MLFLOWSERVICE'].methods_by_name['deleteWorkspace']._loaded_options = None
+ _globals['_MLFLOWSERVICE'].methods_by_name['deleteWorkspace']._serialized_options = b'\362\206\031I\n3\n\006DELETE\022#/mlflow/workspaces/{workspace_name}\032\004\010\002\020\000\020\003*\020Delete Workspace'
_globals['_MLFLOWSERVICE'].methods_by_name['createLoggedModel']._loaded_options = None
_globals['_MLFLOWSERVICE'].methods_by_name['createLoggedModel']._serialized_options = b'\362\206\031<\n#\n\004POST\022\025/mlflow/logged-models\032\004\010\002\020\000\020\003*\023Create Logged Model'
_globals['_MLFLOWSERVICE'].methods_by_name['finalizeLoggedModel']._loaded_options = None
@@ -512,16 +542,16 @@
_globals['_MLFLOWSERVICE'].methods_by_name['addDatasetToExperiments']._serialized_options = b'\362\206\031c\n;\n\004POST\022-/mlflow/datasets/{dataset_id}/add-experiments\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\032Add Dataset to Experiments'
_globals['_MLFLOWSERVICE'].methods_by_name['removeDatasetFromExperiments']._loaded_options = None
_globals['_MLFLOWSERVICE'].methods_by_name['removeDatasetFromExperiments']._serialized_options = b'\362\206\031k\n>\n\004POST\0220/mlflow/datasets/{dataset_id}/remove-experiments\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\037Remove Dataset from Experiments'
- _globals['_VIEWTYPE']._serialized_start=17844
- _globals['_VIEWTYPE']._serialized_end=17898
- _globals['_SOURCETYPE']._serialized_start=17900
- _globals['_SOURCETYPE']._serialized_end=17973
- _globals['_RUNSTATUS']._serialized_start=17975
- _globals['_RUNSTATUS']._serialized_end=18052
- _globals['_TRACESTATUS']._serialized_start=18054
- _globals['_TRACESTATUS']._serialized_end=18133
- _globals['_LOGGEDMODELSTATUS']._serialized_start=18136
- _globals['_LOGGEDMODELSTATUS']._serialized_end=18274
+ _globals['_VIEWTYPE']._serialized_start=18582
+ _globals['_VIEWTYPE']._serialized_end=18636
+ _globals['_SOURCETYPE']._serialized_start=18638
+ _globals['_SOURCETYPE']._serialized_end=18711
+ _globals['_RUNSTATUS']._serialized_start=18713
+ _globals['_RUNSTATUS']._serialized_end=18790
+ _globals['_TRACESTATUS']._serialized_start=18792
+ _globals['_TRACESTATUS']._serialized_end=18871
+ _globals['_LOGGEDMODELSTATUS']._serialized_start=18874
+ _globals['_LOGGEDMODELSTATUS']._serialized_end=19012
_globals['_METRIC']._serialized_start=243
_globals['_METRIC']._serialized_end=419
_globals['_PARAM']._serialized_start=421
@@ -900,8 +930,30 @@
_globals['_DELETESCORER_RESPONSE']._serialized_end=1849
_globals['_SCORER']._serialized_start=17697
_globals['_SCORER']._serialized_end=17842
- _globals['_MLFLOWSERVICE']._serialized_start=18277
- _globals['_MLFLOWSERVICE']._serialized_end=29839
+ _globals['_WORKSPACE']._serialized_start=17844
+ _globals['_WORKSPACE']._serialized_end=17896
+ _globals['_LISTWORKSPACES']._serialized_start=17898
+ _globals['_LISTWORKSPACES']._serialized_end=18010
+ _globals['_LISTWORKSPACES_RESPONSE']._serialized_start=17916
+ _globals['_LISTWORKSPACES_RESPONSE']._serialized_end=17965
+ _globals['_CREATEWORKSPACE']._serialized_start=18013
+ _globals['_CREATEWORKSPACE']._serialized_end=18166
+ _globals['_CREATEWORKSPACE_RESPONSE']._serialized_start=18073
+ _globals['_CREATEWORKSPACE_RESPONSE']._serialized_end=18121
+ _globals['_GETWORKSPACE']._serialized_start=18169
+ _globals['_GETWORKSPACE']._serialized_end=18308
+ _globals['_GETWORKSPACE_RESPONSE']._serialized_start=18073
+ _globals['_GETWORKSPACE_RESPONSE']._serialized_end=18121
+ _globals['_UPDATEWORKSPACE']._serialized_start=18311
+ _globals['_UPDATEWORKSPACE']._serialized_end=18474
+ _globals['_UPDATEWORKSPACE_RESPONSE']._serialized_start=18073
+ _globals['_UPDATEWORKSPACE_RESPONSE']._serialized_end=18121
+ _globals['_DELETEWORKSPACE']._serialized_start=18476
+ _globals['_DELETEWORKSPACE']._serialized_end=18580
+ _globals['_DELETEWORKSPACE_RESPONSE']._serialized_start=1839
+ _globals['_DELETEWORKSPACE_RESPONSE']._serialized_end=1849
+ _globals['_MLFLOWSERVICE']._serialized_start=19015
+ _globals['_MLFLOWSERVICE']._serialized_end=31308
_builder.BuildServices(DESCRIPTOR, 'service_pb2', _globals)
# @@protoc_insertion_point(module_scope)
@@ -933,7 +985,7 @@
from .scalapb import scalapb_pb2 as scalapb_dot_scalapb__pb2
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06mlflow\x1a\x11\x61ssessments.proto\x1a\x10\x64\x61tabricks.proto\x1a\x0e\x64\x61tasets.proto\x1a\x1egoogle/protobuf/duration.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(opentelemetry/proto/trace/v1/trace.proto\x1a\x15scalapb/scalapb.proto\"\xb0\x01\n\x06Metric\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x1a\n\x0c\x64\x61taset_name\x18\x05 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\x06 \x01(\tB\x04\xf0\x86\x19\x03\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x14\n\x06run_id\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\"#\n\x05Param\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8b\x01\n\x03Run\x12\x1d\n\x04info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo\x12\x1d\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x0f.mlflow.RunData\x12!\n\x06inputs\x18\x03 \x01(\x0b\x32\x11.mlflow.RunInputs\x12#\n\x07outputs\x18\x04 \x01(\x0b\x32\x12.mlflow.RunOutputs\"g\n\x07RunData\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x02 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x03 \x03(\x0b\x32\x0e.mlflow.RunTag\"c\n\tRunInputs\x12,\n\x0e\x64\x61taset_inputs\x18\x01 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x0cmodel_inputs\x18\x02 \x03(\x0b\x32\x12.mlflow.ModelInput\"8\n\nRunOutputs\x12*\n\rmodel_outputs\x18\x01 \x03(\x0b\x32\x13.mlflow.ModelOutput\"$\n\x06RunTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"+\n\rExperimentTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdd\x01\n\x07RunInfo\x12\x0e\n\x06run_id\x18\x0f \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x06 \x01(\t\x12!\n\x06status\x18\x07 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x12\n\nstart_time\x18\x08 \x01(\x03\x12\x10\n\x08\x65nd_time\x18\t \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\r \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x0e \x01(\t\"\xbb\x01\n\nExperiment\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11\x61rtifact_location\x18\x03 \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x04 \x01(\t\x12\x18\n\x10last_update_time\x18\x05 \x01(\x03\x12\x15\n\rcreation_time\x18\x06 \x01(\x03\x12#\n\x04tags\x18\x07 \x03(\x0b\x32\x15.mlflow.ExperimentTag\"V\n\x0c\x44\x61tasetInput\x12\x1e\n\x04tags\x18\x01 \x03(\x0b\x32\x10.mlflow.InputTag\x12&\n\x07\x64\x61taset\x18\x02 \x01(\x0b\x32\x0f.mlflow.DatasetB\x04\xf8\x86\x19\x01\"$\n\nModelInput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\"2\n\x08InputTag\x12\x11\n\x03key\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\"\x85\x01\n\x07\x44\x61taset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bsource_type\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06source\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\"9\n\x0bModelOutput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04step\x18\x02 \x01(\x03\x42\x04\xf8\x86\x19\x01\"\xb6\x01\n\x10\x43reateExperiment\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x11\x61rtifact_location\x18\x02 \x01(\t\x12#\n\x04tags\x18\x03 \x03(\x0b\x32\x15.mlflow.ExperimentTag\x1a!\n\x08Response\x12\x15\n\rexperiment_id\x18\x01 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xfe\x01\n\x11SearchExperiments\x12\x13\n\x0bmax_results\x18\x01 \x01(\x03\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12#\n\tview_type\x18\x05 \x01(\x0e\x32\x10.mlflow.ViewType\x1aL\n\x08Response\x12\'\n\x0b\x65xperiments\x18\x01 \x03(\x0b\x32\x12.mlflow.Experiment\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\rGetExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"h\n\x10\x44\x65leteExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"i\n\x11RestoreExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"z\n\x10UpdateExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x10\n\x08new_name\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xca\x01\n\tCreateRun\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x12\n\nstart_time\x18\x07 \x01(\x03\x12\x1c\n\x04tags\x18\t \x03(\x0b\x32\x0e.mlflow.RunTag\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd0\x01\n\tUpdateRun\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12!\n\x06status\x18\x02 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x10\n\x08\x65nd_time\x18\x03 \x01(\x03\x12\x10\n\x08run_name\x18\x05 \x01(\t\x1a-\n\x08Response\x12!\n\x08run_info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"Z\n\tDeleteRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\nRestoreRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8a\x02\n\tLogMetric\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\x01\x42\x04\xf8\x86\x19\x01\x12\x17\n\ttimestamp\x18\x04 \x01(\x03\x42\x04\xf8\x86\x19\x01\x12\x0f\n\x04step\x18\x05 \x01(\x03:\x01\x30\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1a\n\x0c\x64\x61taset_name\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\t \x01(\tB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\x08LogParam\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x90\x01\n\x10SetExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x13\x44\x65leteExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8b\x01\n\x06SetTag\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"m\n\tDeleteTag\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x06GetRun\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x98\x02\n\nSearchRuns\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x34\n\rrun_view_type\x18\x03 \x01(\x0e\x32\x10.mlflow.ViewType:\x0b\x41\x43TIVE_ONLY\x12\x19\n\x0bmax_results\x18\x05 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a>\n\x08Response\x12\x19\n\x04runs\x18\x01 \x03(\x0b\x32\x0b.mlflow.Run\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd8\x01\n\rListArtifacts\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x04 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\";\n\x08\x46ileInfo\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06is_dir\x18\x02 \x01(\x08\x12\x11\n\tfile_size\x18\x03 \x01(\x03\"\xea\x01\n\x10GetMetricHistory\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x04 \x01(\t\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x44\n\x08Response\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"a\n\x0fMetricWithRunId\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x0e\n\x06run_id\x18\x05 \x01(\t\"\xe7\x01\n\x1cGetMetricHistoryBulkInterval\x12\x0f\n\x07run_ids\x18\x01 \x03(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nstart_step\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_step\x18\x04 \x01(\x05\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x34\n\x08Response\x12(\n\x07metrics\x18\x01 \x03(\x0b\x32\x17.mlflow.MetricWithRunId:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb1\x01\n\x08LogBatch\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x03 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x04 \x03(\x0b\x32\x0e.mlflow.RunTag\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"g\n\x08LogModel\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x12\n\nmodel_json\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xac\x01\n\tLogInputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12&\n\x08\x64\x61tasets\x18\x02 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x06models\x18\x03 \x03(\x0b\x32\x12.mlflow.ModelInputB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\nLogOutputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12#\n\x06models\x18\x02 \x03(\x0b\x32\x13.mlflow.ModelOutput\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x95\x01\n\x13GetExperimentByName\x12\x1d\n\x0f\x65xperiment_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb9\x01\n\x10\x43reateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf0\x01\n\x10UpdateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\x10\x44\x65leteAssessment\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x01\n\x14GetAssessmentRequest\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xe4\x01\n\tTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x03 \x01(\x03\x12\x19\n\x11\x65xecution_time_ms\x18\x04 \x01(\x03\x12#\n\x06status\x18\x05 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x06 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x07 \x03(\x0b\x32\x10.mlflow.TraceTag\"2\n\x14TraceRequestMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"&\n\x08TraceTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xf1\x01\n\nStartTrace\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12\x36\n\x10request_metadata\x18\x03 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x04 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x02\n\x08\x45ndTrace\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12#\n\x06status\x18\x03 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x04 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x05 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x82\x01\n\x0cGetTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"y\n\x0eGetTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"{\n\x0e\x42\x61tchGetTraces\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x1a)\n\x08Response\x12\x1d\n\x06traces\x18\x01 \x03(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x97\x01\n\x08GetTrace\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\rallow_partial\x18\x02 \x01(\x08:\x05\x66\x61lse\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xeb\x01\n\x0cSearchTraces\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaa\x02\n\x13SearchUnifiedTraces\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x03 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x18\n\x0bmax_results\x18\x05 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc1\x01\n\x15GetOnlineTraceDetails\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x16source_inference_table\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12*\n\x1csource_databricks_request_id\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x1e\n\x08Response\x12\x12\n\ntrace_data\x18\x01 \x01(\t\"\xc3\x01\n\x0c\x44\x65leteTraces\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc5\x01\n\x0e\x44\x65leteTracesV3\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb5\x02\n\x1f\x43\x61lculateTraceFilterCorrelation\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x16\n\x0e\x66ilter_string1\x18\x02 \x01(\t\x12\x16\n\x0e\x66ilter_string2\x18\x03 \x01(\t\x12\x13\n\x0b\x62\x61se_filter\x18\x04 \x01(\t\x1a\x87\x01\n\x08Response\x12\x0c\n\x04npmi\x18\x01 \x01(\x01\x12\x15\n\rnpmi_smoothed\x18\x02 \x01(\x01\x12\x15\n\rfilter1_count\x18\x03 \x01(\x05\x12\x15\n\rfilter2_count\x18\x04 \x01(\x05\x12\x13\n\x0bjoint_count\x18\x05 \x01(\x05\x12\x13\n\x0btotal_count\x18\x06 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"v\n\x0bSetTraceTag\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x01\n\rSetTraceTagV3\x12\x10\n\x08trace_id\x18\x04 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"z\n\x0e\x44\x65leteTraceTag\x12\x10\n\x08trace_id\x18\x03 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"l\n\x10\x44\x65leteTraceTagV3\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"c\n\x05Trace\x12\'\n\ntrace_info\x18\x01 \x01(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x31\n\x05spans\x18\x02 \x03(\x0b\x32\".opentelemetry.proto.trace.v1.Span\"\xb6\x03\n\rTraceLocation\x12\x35\n\x04type\x18\x01 \x01(\x0e\x32\'.mlflow.TraceLocation.TraceLocationType\x12K\n\x11mlflow_experiment\x18\x02 \x01(\x0b\x32..mlflow.TraceLocation.MlflowExperimentLocationH\x00\x12G\n\x0finference_table\x18\x03 \x01(\x0b\x32,.mlflow.TraceLocation.InferenceTableLocationH\x00\x1a\x31\n\x18MlflowExperimentLocation\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a\x31\n\x16InferenceTableLocation\x12\x17\n\x0f\x66ull_table_name\x18\x01 \x01(\t\"d\n\x11TraceLocationType\x12#\n\x1fTRACE_LOCATION_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MLFLOW_EXPERIMENT\x10\x01\x12\x13\n\x0fINFERENCE_TABLE\x10\x02\x42\x0c\n\nidentifier\"\x9b\x05\n\x0bTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x12\x19\n\x11\x63lient_request_id\x18\x02 \x01(\t\x12-\n\x0etrace_location\x18\x03 \x01(\x0b\x32\x15.mlflow.TraceLocation\x12\x0f\n\x07request\x18\x04 \x01(\t\x12\x10\n\x08response\x18\x05 \x01(\t\x12\x17\n\x0frequest_preview\x18\x0c \x01(\t\x12\x18\n\x10response_preview\x18\r \x01(\t\x12\x30\n\x0crequest_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12\x65xecution_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n\x05state\x18\x08 \x01(\x0e\x32\x19.mlflow.TraceInfoV3.State\x12>\n\x0etrace_metadata\x18\t \x03(\x0b\x32&.mlflow.TraceInfoV3.TraceMetadataEntry\x12\x33\n\x0b\x61ssessments\x18\n \x03(\x0b\x32\x1e.mlflow.assessments.Assessment\x12+\n\x04tags\x18\x0b \x03(\x0b\x32\x1d.mlflow.TraceInfoV3.TagsEntry\x1a\x34\n\x12TraceMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"B\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03\"\\\n\x0cStartTraceV3\x12\"\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.TraceB\x04\xf8\x86\x19\x01\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace\"F\n\x0fLinkTracesToRun\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x12\x14\n\x06run_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response\"h\n\x0e\x44\x61tasetSummary\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04name\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0f\n\x07\x63ontext\x18\x04 \x01(\t\"\x94\x01\n\x0eSearchDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x1a=\n\x08Response\x12\x31\n\x11\x64\x61taset_summaries\x18\x01 \x03(\x0b\x32\x16.mlflow.DatasetSummary:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x02\n\x11\x43reateLoggedModel\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nmodel_type\x18\x03 \x01(\t\x12\x15\n\rsource_run_id\x18\x04 \x01(\t\x12,\n\x06params\x18\x05 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12$\n\x04tags\x18\x06 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbb\x01\n\x13\x46inalizeLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12/\n\x06status\x18\x02 \x01(\x0e\x32\x19.mlflow.LoggedModelStatusB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x01\n\x0eGetLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"d\n\x11\x44\x65leteLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf7\x03\n\x12SearchLoggedModels\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x34\n\x08\x64\x61tasets\x18\x06 \x03(\x0b\x32\".mlflow.SearchLoggedModels.Dataset\x12\x17\n\x0bmax_results\x18\x03 \x01(\x05:\x02\x35\x30\x12\x34\n\x08order_by\x18\x04 \x03(\x0b\x32\".mlflow.SearchLoggedModels.OrderBy\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a=\n\x07\x44\x61taset\x12\x1a\n\x0c\x64\x61taset_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x64\x61taset_digest\x18\x02 \x01(\t\x1aj\n\x07OrderBy\x12\x18\n\nfield_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x17\n\tascending\x18\x02 \x01(\x08:\x04true\x12\x14\n\x0c\x64\x61taset_name\x18\x03 \x01(\t\x12\x16\n\x0e\x64\x61taset_digest\x18\x04 \x01(\t\x1aH\n\x08Response\x12#\n\x06models\x18\x01 \x03(\x0b\x32\x13.mlflow.LoggedModel\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x12SetLoggedModelTags\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x04tags\x18\x02 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x14\x44\x65leteLoggedModelTag\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07tag_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xec\x01\n\x18ListLoggedModelArtifacts\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1f\n\x17\x61rtifact_directory_path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x03 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9c\x01\n\x1bLogLoggedModelParamsRequest\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\x0bLoggedModel\x12%\n\x04info\x18\x01 \x01(\x0b\x32\x17.mlflow.LoggedModelInfo\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.mlflow.LoggedModelData\"\x84\x03\n\x0fLoggedModelInfo\x12\x10\n\x08model_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1d\n\x15\x63reation_timestamp_ms\x18\x04 \x01(\x03\x12!\n\x19last_updated_timestamp_ms\x18\x05 \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\x06 \x01(\t\x12)\n\x06status\x18\x07 \x01(\x0e\x32\x19.mlflow.LoggedModelStatus\x12\x12\n\ncreator_id\x18\x08 \x01(\x03\x12\x12\n\nmodel_type\x18\t \x01(\t\x12\x15\n\rsource_run_id\x18\n \x01(\t\x12\x16\n\x0estatus_message\x18\x0b \x01(\t\x12$\n\x04tags\x18\x0c \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x12:\n\rregistrations\x18\r \x03(\x0b\x32#.mlflow.LoggedModelRegistrationInfo\",\n\x0eLoggedModelTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"<\n\x1bLoggedModelRegistrationInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"`\n\x0fLoggedModelData\x12,\n\x06params\x18\x01 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\"2\n\x14LoggedModelParameter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x81\x02\n\x0eSearchTracesV3\x12(\n\tlocations\x18\x01 \x03(\x0b\x32\x15.mlflow.TraceLocation\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aH\n\x08Response\x12#\n\x06traces\x18\x01 \x03(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x02\n\rCreateDataset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x12\x44\n\x0bsource_type\x18\x03 \x01(\x0e\x32/.mlflow.datasets.DatasetRecordSource.SourceType\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12\x0c\n\x04tags\x18\x08 \x01(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb7\x01\n\nGetDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x02 \x01(\t\x1aN\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"b\n\rDeleteDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x02\n\x18SearchEvaluationDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x15\n\rfilter_string\x18\x02 \x01(\t\x12\x19\n\x0bmax_results\x18\x03 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aO\n\x08Response\x12*\n\x08\x64\x61tasets\x18\x01 \x03(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xa2\x01\n\x0eSetDatasetTags\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04tags\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"x\n\x10\x44\x65leteDatasetTag\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc3\x01\n\x14UpsertDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07records\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nupdated_by\x18\x03 \x01(\t\x1a\x39\n\x08Response\x12\x16\n\x0einserted_count\x18\x01 \x01(\x05\x12\x15\n\rupdated_count\x18\x02 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x84\x01\n\x17GetDatasetExperimentIds\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\"\n\x08Response\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbf\x01\n\x11GetDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bmax_results\x18\x02 \x01(\x05:\x04\x31\x30\x30\x30\x12\x12\n\npage_token\x18\x03 \x01(\t\x1a\x34\n\x08Response\x12\x0f\n\x07records\x18\x01 \x01(\t\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x17\x41\x64\x64\x44\x61tasetToExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb4\x01\n\x1cRemoveDatasetFromExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x02\n\x0eRegisterScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x03 \x01(\t\x1a\x85\x01\n\x08Response\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x11\n\tscorer_id\x18\x02 \x01(\t\x12\x15\n\rexperiment_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x05 \x01(\t\x12\x15\n\rcreation_time\x18\x06 \x01(\x03:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x0bListScorers\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x93\x01\n\x12ListScorerVersions\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x01\n\tGetScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a*\n\x08Response\x12\x1e\n\x06scorer\x18\x01 \x01(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x0c\x44\x65leteScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x01\n\x06Scorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\x05\x12\x13\n\x0bscorer_name\x18\x02 \x01(\t\x12\x16\n\x0escorer_version\x18\x03 \x01(\x05\x12\x19\n\x11serialized_scorer\x18\x04 \x01(\t\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x11\n\tscorer_id\x18\x06 \x01(\t*6\n\x08ViewType\x12\x0f\n\x0b\x41\x43TIVE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45LETED_ONLY\x10\x02\x12\x07\n\x03\x41LL\x10\x03*I\n\nSourceType\x12\x0c\n\x08NOTEBOOK\x10\x01\x12\x07\n\x03JOB\x10\x02\x12\x0b\n\x07PROJECT\x10\x03\x12\t\n\x05LOCAL\x10\x04\x12\x0c\n\x07UNKNOWN\x10\xe8\x07*M\n\tRunStatus\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tSCHEDULED\x10\x02\x12\x0c\n\x08\x46INISHED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\n\n\x06KILLED\x10\x05*O\n\x0bTraceStatus\x12\x1c\n\x18TRACE_STATUS_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03*\x8a\x01\n\x11LoggedModelStatus\x12#\n\x1fLOGGED_MODEL_STATUS_UNSPECIFIED\x10\x00\x12\x18\n\x14LOGGED_MODEL_PENDING\x10\x01\x12\x16\n\x12LOGGED_MODEL_READY\x10\x02\x12\x1e\n\x1aLOGGED_MODEL_UPLOAD_FAILED\x10\x03\x32\xaaZ\n\rMlflowService\x12\xa6\x01\n\x13getExperimentByName\x12\x1b.mlflow.GetExperimentByName\x1a$.mlflow.GetExperimentByName.Response\"L\xf2\x86\x19H\n,\n\x03GET\x12\x1f/mlflow/experiments/get-by-name\x1a\x04\x08\x02\x10\x00\x10\x01*\x16Get Experiment By Name\x12\x94\x01\n\x10\x63reateExperiment\x12\x18.mlflow.CreateExperiment\x1a!.mlflow.CreateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/create\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x43reate Experiment\x12\xc1\x01\n\x11searchExperiments\x12\x19.mlflow.SearchExperiments\x1a\".mlflow.SearchExperiments.Response\"m\xf2\x86\x19i\n(\n\x04POST\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\n\'\n\x03GET\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Search Experiments\x12\x88\x01\n\rgetExperiment\x12\x15.mlflow.GetExperiment\x1a\x1e.mlflow.GetExperiment.Response\"@\xf2\x86\x19\x38\n$\n\x03GET\x12\x17/mlflow/experiments/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eGet Experiment\xba\x8c\x19\x00\x12\x94\x01\n\x10\x64\x65leteExperiment\x12\x18.mlflow.DeleteExperiment\x1a!.mlflow.DeleteExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x44\x65lete Experiment\x12\x99\x01\n\x11restoreExperiment\x12\x19.mlflow.RestoreExperiment\x1a\".mlflow.RestoreExperiment.Response\"E\xf2\x86\x19\x41\n)\n\x04POST\x12\x1b/mlflow/experiments/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Restore Experiment\x12\x94\x01\n\x10updateExperiment\x12\x18.mlflow.UpdateExperiment\x1a!.mlflow.UpdateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/update\x1a\x04\x08\x02\x10\x00\x10\x01*\x11Update Experiment\x12q\n\tcreateRun\x12\x11.mlflow.CreateRun\x1a\x1a.mlflow.CreateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/create\x1a\x04\x08\x02\x10\x00\x10\x01*\nCreate Run\x12q\n\tupdateRun\x12\x11.mlflow.UpdateRun\x1a\x1a.mlflow.UpdateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/update\x1a\x04\x08\x02\x10\x00\x10\x01*\nUpdate Run\x12q\n\tdeleteRun\x12\x11.mlflow.DeleteRun\x1a\x1a.mlflow.DeleteRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Run\x12v\n\nrestoreRun\x12\x12.mlflow.RestoreRun\x1a\x1b.mlflow.RestoreRun.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bRestore Run\x12u\n\tlogMetric\x12\x11.mlflow.LogMetric\x1a\x1a.mlflow.LogMetric.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-metric\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Metric\x12t\n\x08logParam\x12\x10.mlflow.LogParam\x1a\x19.mlflow.LogParam.Response\";\xf2\x86\x19\x37\n(\n\x04POST\x12\x1a/mlflow/runs/log-parameter\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Param\x12\xa1\x01\n\x10setExperimentTag\x12\x18.mlflow.SetExperimentTag\x1a!.mlflow.SetExperimentTag.Response\"P\xf2\x86\x19L\n4\n\x04POST\x12&/mlflow/experiments/set-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Set Experiment Tag\x12\xb0\x01\n\x13\x64\x65leteExperimentTag\x12\x1b.mlflow.DeleteExperimentTag\x1a$.mlflow.DeleteExperimentTag.Response\"V\xf2\x86\x19R\n7\n\x04POST\x12)/mlflow/experiments/delete-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x15\x44\x65lete Experiment Tag\x12\x66\n\x06setTag\x12\x0e.mlflow.SetTag\x1a\x17.mlflow.SetTag.Response\"3\xf2\x86\x19/\n\"\n\x04POST\x12\x14/mlflow/runs/set-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Set Tag\x12\x88\x01\n\x0bsetTraceTag\x12\x13.mlflow.SetTraceTag\x1a\x1c.mlflow.SetTraceTag.Response\"F\xf2\x86\x19\x42\n/\n\x05PATCH\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\rSet Trace Tag\x12\x8f\x01\n\rsetTraceTagV3\x12\x15.mlflow.SetTraceTagV3\x1a\x1e.mlflow.SetTraceTagV3.Response\"G\xf2\x86\x19\x43\n-\n\x05PATCH\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Set Trace Tag V3\x12\x95\x01\n\x0e\x64\x65leteTraceTag\x12\x16.mlflow.DeleteTraceTag\x1a\x1f.mlflow.DeleteTraceTag.Response\"J\xf2\x86\x19\x46\n0\n\x06\x44\x45LETE\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x44\x65lete Trace Tag\x12\x9c\x01\n\x10\x64\x65leteTraceTagV3\x12\x18.mlflow.DeleteTraceTagV3\x1a!.mlflow.DeleteTraceTagV3.Response\"K\xf2\x86\x19G\n.\n\x06\x44\x45LETE\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x13\x44\x65lete Trace Tag V3\x12u\n\tdeleteTag\x12\x11.mlflow.DeleteTag\x1a\x1a.mlflow.DeleteTag.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/delete-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Tag\x12\x65\n\x06getRun\x12\x0e.mlflow.GetRun\x1a\x17.mlflow.GetRun.Response\"2\xf2\x86\x19*\n\x1d\n\x03GET\x12\x10/mlflow/runs/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Get Run\xba\x8c\x19\x00\x12y\n\nsearchRuns\x12\x12.mlflow.SearchRuns\x1a\x1b.mlflow.SearchRuns.Response\":\xf2\x86\x19\x32\n!\n\x04POST\x12\x13/mlflow/runs/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bSearch Runs\xba\x8c\x19\x00\x12\x87\x01\n\rlistArtifacts\x12\x15.mlflow.ListArtifacts\x1a\x1e.mlflow.ListArtifacts.Response\"?\xf2\x86\x19\x37\n#\n\x03GET\x12\x16/mlflow/artifacts/list\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eList Artifacts\xba\x8c\x19\x00\x12\x95\x01\n\x10getMetricHistory\x12\x18.mlflow.GetMetricHistory\x1a!.mlflow.GetMetricHistory.Response\"D\xf2\x86\x19@\n(\n\x03GET\x12\x1b/mlflow/metrics/get-history\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Get Metric History\x12\xb7\x01\n\x1cgetMetricHistoryBulkInterval\x12$.mlflow.GetMetricHistoryBulkInterval\x1a-.mlflow.GetMetricHistoryBulkInterval.Response\"B\xf2\x86\x19:\n6\n\x03GET\x12)/mlflow/metrics/get-history-bulk-interval\x1a\x04\x08\x02\x10\x0b\x10\x03\xba\x8c\x19\x00\x12p\n\x08logBatch\x12\x10.mlflow.LogBatch\x1a\x19.mlflow.LogBatch.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-batch\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Batch\x12p\n\x08logModel\x12\x10.mlflow.LogModel\x1a\x19.mlflow.LogModel.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-model\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Model\x12u\n\tlogInputs\x12\x11.mlflow.LogInputs\x1a\x1a.mlflow.LogInputs.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-inputs\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Inputs\x12v\n\nlogOutputs\x12\x12.mlflow.LogOutputs\x1a\x1b.mlflow.LogOutputs.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/outputs\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bLog Outputs\x12\x87\x01\n\x0esearchDatasets\x12\x16.mlflow.SearchDatasets\x1a\x1f.mlflow.SearchDatasets.Response\"<\xf2\x86\x19\x34\n0\n\x04POST\x12\"mlflow/experiments/search-datasets\x1a\x04\x08\x02\x10\x00\x10\x03\xba\x8c\x19\x00\x12p\n\nstartTrace\x12\x12.mlflow.StartTrace\x1a\x1b.mlflow.StartTrace.Response\"1\xf2\x86\x19-\n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bStart Trace\x12v\n\x08\x65ndTrace\x12\x10.mlflow.EndTrace\x1a\x19.mlflow.EndTrace.Response\"=\xf2\x86\x19\x39\n*\n\x05PATCH\x12\x1b/mlflow/traces/{request_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\tEnd Trace\x12\x89\x01\n\x0cgetTraceInfo\x12\x14.mlflow.GetTraceInfo\x1a\x1d.mlflow.GetTraceInfo.Response\"D\xf2\x86\x19@\n-\n\x03GET\x12 /mlflow/traces/{request_id}/info\x1a\x04\x08\x02\x10\x00\x10\x03*\rGet TraceInfo\x12\x8b\x01\n\x0egetTraceInfoV3\x12\x16.mlflow.GetTraceInfoV3\x1a\x1f.mlflow.GetTraceInfoV3.Response\"@\xf2\x86\x19<\n&\n\x03GET\x12\x19/mlflow/traces/{trace_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Get TraceInfo v3\x12n\n\x08getTrace\x12\x10.mlflow.GetTrace\x1a\x19.mlflow.GetTrace.Response\"5\xf2\x86\x19\x31\n\x1f\n\x03GET\x12\x12/mlflow/traces/get\x1a\x04\x08\x03\x10\x00\x10\x03*\x0cGet Trace v3\x12\x83\x01\n\x0e\x62\x61tchGetTraces\x12\x16.mlflow.BatchGetTraces\x1a\x1f.mlflow.BatchGetTraces.Response\"8\xf2\x86\x19\x34\n$\n\x03GET\x12\x17/mlflow/traces/batchGet\x1a\x04\x08\x03\x10\x00\x10\x03*\nGet Traces\x12w\n\x0csearchTraces\x12\x14.mlflow.SearchTraces\x1a\x1d.mlflow.SearchTraces.Response\"2\xf2\x86\x19.\n\x1b\n\x03GET\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rSearch Traces\x12\x88\x01\n\x0esearchTracesV3\x12\x16.mlflow.SearchTracesV3\x1a\x1f.mlflow.SearchTracesV3.Response\"=\xf2\x86\x19\x39\n#\n\x04POST\x12\x15/mlflow/traces/search\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Search Traces V3\x12i\n\x0cstartTraceV3\x12\x14.mlflow.StartTraceV3\x1a\x1d.mlflow.StartTraceV3.Response\"$\xf2\x86\x19 \n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x03\x10\x00\x10\x03\x12\x92\x01\n\x0flinkTracesToRun\x12\x17.mlflow.LinkTracesToRun\x1a .mlflow.LinkTracesToRun.Response\"D\xf2\x86\x19@\n(\n\x04POST\x12\x1a/mlflow/traces/link-to-run\x1a\x04\x08\x02\x10\x00\x10\x03*\x12Link Traces to Run\x12\xa2\x01\n\x19searchUnifiedTraceHandler\x12\x1b.mlflow.SearchUnifiedTraces\x1a$.mlflow.SearchUnifiedTraces.Response\"B\xf2\x86\x19>\n#\n\x03GET\x12\x16/mlflow/unified-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x15Search Unified Traces\x12\xaf\x01\n\x15getOnlineTraceDetails\x12\x1d.mlflow.GetOnlineTraceDetails\x1a&.mlflow.GetOnlineTraceDetails.Response\"O\xf2\x86\x19K\n-\n\x03GET\x12 /mlflow/get-online-trace-details\x1a\x04\x08\x02\x10\x00\x10\x03*\x18Get Online Trace Details\x12\x86\x01\n\x0c\x64\x65leteTraces\x12\x14.mlflow.DeleteTraces\x1a\x1d.mlflow.DeleteTraces.Response\"A\xf2\x86\x19=\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rDelete Traces\x12\x8f\x01\n\x0e\x64\x65leteTracesV3\x12\x16.mlflow.DeleteTracesV3\x1a\x1f.mlflow.DeleteTracesV3.Response\"D\xf2\x86\x19@\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x03\x10\x00\x10\x03*\x10\x44\x65lete Traces V3\x12\xe3\x01\n\x1f\x63\x61lculateTraceFilterCorrelation\x12\'.mlflow.CalculateTraceFilterCorrelation\x1a\x30.mlflow.CalculateTraceFilterCorrelation.Response\"e\xf2\x86\x19\x61\n9\n\x04POST\x12+/mlflow/traces/calculate-filter-correlation\x1a\x04\x08\x03\x10\x00\x10\x03*\"Calculate Trace Filter Correlation\x12\x94\x01\n\x11\x63reateLoggedModel\x12\x19.mlflow.CreateLoggedModel\x1a\".mlflow.CreateLoggedModel.Response\"@\xf2\x86\x19<\n#\n\x04POST\x12\x15/mlflow/logged-models\x1a\x04\x08\x02\x10\x00\x10\x03*\x13\x43reate Logged Model\x12\xa8\x01\n\x13\x66inalizeLoggedModel\x12\x1b.mlflow.FinalizeLoggedModel\x1a$.mlflow.FinalizeLoggedModel.Response\"N\xf2\x86\x19J\n/\n\x05PATCH\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x46inalize Logged Model\x12\x92\x01\n\x0egetLoggedModel\x12\x16.mlflow.GetLoggedModel\x1a\x1f.mlflow.GetLoggedModel.Response\"G\xf2\x86\x19\x43\n-\n\x03GET\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10Get Logged Model\x12\xa3\x01\n\x11\x64\x65leteLoggedModel\x12\x19.mlflow.DeleteLoggedModel\x1a\".mlflow.DeleteLoggedModel.Response\"O\xf2\x86\x19K\n0\n\x06\x44\x45LETE\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x44\x65lete a Logged Model\x12\x9e\x01\n\x12searchLoggedModels\x12\x1a.mlflow.SearchLoggedModels\x1a#.mlflow.SearchLoggedModels.Response\"G\xf2\x86\x19\x43\n*\n\x04POST\x12\x1c/mlflow/logged-models/search\x1a\x04\x08\x02\x10\x00\x10\x03*\x13Search LoggedModels\x12\xa9\x01\n\x12setLoggedModelTags\x12\x1a.mlflow.SetLoggedModelTags\x1a#.mlflow.SetLoggedModelTags.Response\"R\xf2\x86\x19N\n4\n\x05PATCH\x12%/mlflow/logged-models/{model_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x14Set Logged Model Tag\x12\xbd\x01\n\x14\x64\x65leteLoggedModelTag\x12\x1c.mlflow.DeleteLoggedModelTag\x1a%.mlflow.DeleteLoggedModelTag.Response\"`\xf2\x86\x19\\\n?\n\x06\x44\x45LETE\x12//mlflow/logged-models/{model_id}/tags/{tag_key}\x1a\x04\x08\x02\x10\x00\x10\x03*\x17\x44\x65lete Logged Model Tag\x12\xd6\x01\n\x18listLoggedModelArtifacts\x12 .mlflow.ListLoggedModelArtifacts\x1a).mlflow.ListLoggedModelArtifacts.Response\"m\xf2\x86\x19i\nC\n\x03GET\x12\x36/mlflow/logged-models/{model_id}/artifacts/directories\x1a\x04\x08\x02\x10\x00\x10\x03* List Artifacts for Logged Models\x12\xc1\x01\n\x14LogLoggedModelParams\x12#.mlflow.LogLoggedModelParamsRequest\x1a,.mlflow.LogLoggedModelParamsRequest.Response\"V\xf2\x86\x19R\n5\n\x04POST\x12\'/mlflow/logged-models/{model_id}/params\x1a\x04\x08\x02\x10\x00\x10\x03*\x17Log Logged Model Params\x12\xb0\x01\n\rGetAssessment\x12\x1c.mlflow.GetAssessmentRequest\x1a%.mlflow.GetAssessmentRequest.Response\"Z\xf2\x86\x19V\nB\n\x03GET\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x0eGet Assessment\x12\xdf\x01\n\x10\x63reateAssessment\x12\x18.mlflow.CreateAssessment\x1a!.mlflow.CreateAssessment.Response\"\x8d\x01\xf2\x86\x19\x88\x01\n>\n\x04POST\x12\x30/mlflow/traces/{assessment.trace_id}/assessments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*:Create an assessment of a trace or a span within the trace\x12\xd0\x01\n\x10updateAssessment\x12\x18.mlflow.UpdateAssessment\x1a!.mlflow.UpdateAssessment.Response\"\x7f\xf2\x86\x19{\nD\n\x05PATCH\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x01*)Update an existing assessment on a trace.\x12\xb1\x01\n\x10\x64\x65leteAssessment\x12\x18.mlflow.DeleteAssessment\x1a!.mlflow.DeleteAssessment.Response\"`\xf2\x86\x19\\\nE\n\x06\x44\x45LETE\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x11\x44\x65lete Assessment\x12\x9a\x01\n\rcreateDataset\x12\x15.mlflow.CreateDataset\x1a\x1e.mlflow.CreateDataset.Response\"R\xf2\x86\x19N\n%\n\x04POST\x12\x17/mlflow/datasets/create\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*\x19\x43reate Evaluation Dataset\x12\x91\x01\n\ngetDataset\x12\x12.mlflow.GetDataset\x1a\x1b.mlflow.GetDataset.Response\"R\xf2\x86\x19N\n*\n\x03GET\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x16Get Evaluation Dataset\x12\xa0\x01\n\rdeleteDataset\x12\x15.mlflow.DeleteDataset\x1a\x1e.mlflow.DeleteDataset.Response\"X\xf2\x86\x19T\n-\n\x06\x44\x45LETE\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x19\x44\x65lete Evaluation Dataset\x12\xdd\x01\n\x18searchEvaluationDatasets\x12 .mlflow.SearchEvaluationDatasets\x1a).mlflow.SearchEvaluationDatasets.Response\"t\xf2\x86\x19p\n%\n\x04POST\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\n$\n\x03GET\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\x01*\x1aSearch Evaluation Datasets\x12\xa9\x01\n\x0esetDatasetTags\x12\x16.mlflow.SetDatasetTags\x1a\x1f.mlflow.SetDatasetTags.Response\"^\xf2\x86\x19Z\n1\n\x05PATCH\x12\"/mlflow/datasets/{dataset_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1bSet Evaluation Dataset Tags\x12\xb8\x01\n\x10\x64\x65leteDatasetTag\x12\x18.mlflow.DeleteDatasetTag\x1a!.mlflow.DeleteDatasetTag.Response\"g\xf2\x86\x19\x63\n8\n\x06\x44\x45LETE\x12(/mlflow/datasets/{dataset_id}/tags/{key}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1d\x44\x65lete Evaluation Dataset Tag\x12\xc3\x01\n\x14upsertDatasetRecords\x12\x1c.mlflow.UpsertDatasetRecords\x1a%.mlflow.UpsertDatasetRecords.Response\"f\xf2\x86\x19\x62\n3\n\x04POST\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*!Upsert Evaluation Dataset Records\x12\xd6\x01\n\x17getDatasetExperimentIds\x12\x1f.mlflow.GetDatasetExperimentIds\x1a(.mlflow.GetDatasetExperimentIds.Response\"p\xf2\x86\x19l\n9\n\x03GET\x12,/mlflow/datasets/{dataset_id}/experiment-ids\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*%Get Evaluation Dataset Experiment IDs\x12\x8a\x01\n\x0eregisterScorer\x12\x16.mlflow.RegisterScorer\x1a\x1f.mlflow.RegisterScorer.Response\"?\xf2\x86\x19;\n&\n\x04POST\x12\x18/mlflow/scorers/register\x1a\x04\x08\x03\x10\x00\x10\x01*\x0fRegister Scorer\x12y\n\x0blistScorers\x12\x13.mlflow.ListScorers\x1a\x1c.mlflow.ListScorers.Response\"7\xf2\x86\x19\x33\n!\n\x03GET\x12\x14/mlflow/scorers/list\x1a\x04\x08\x03\x10\x00\x10\x01*\x0cList Scorers\x12\x9a\x01\n\x12listScorerVersions\x12\x1a.mlflow.ListScorerVersions\x1a#.mlflow.ListScorerVersions.Response\"C\xf2\x86\x19?\n%\n\x03GET\x12\x18/mlflow/scorers/versions\x1a\x04\x08\x03\x10\x00\x10\x01*\x14List Scorer Versions\x12p\n\tgetScorer\x12\x11.mlflow.GetScorer\x1a\x1a.mlflow.GetScorer.Response\"4\xf2\x86\x19\x30\n \n\x03GET\x12\x13/mlflow/scorers/get\x1a\x04\x08\x03\x10\x00\x10\x01*\nGet Scorer\x12\x82\x01\n\x0c\x64\x65leteScorer\x12\x14.mlflow.DeleteScorer\x1a\x1d.mlflow.DeleteScorer.Response\"=\xf2\x86\x19\x39\n&\n\x06\x44\x45LETE\x12\x16/mlflow/scorers/delete\x1a\x04\x08\x03\x10\x00\x10\x01*\rDelete Scorer\x12\xb6\x01\n\x11getDatasetRecords\x12\x19.mlflow.GetDatasetRecords\x1a\".mlflow.GetDatasetRecords.Response\"b\xf2\x86\x19^\n2\n\x03GET\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1eGet Evaluation Dataset Records\x12\xcd\x01\n\x17\x61\x64\x64\x44\x61tasetToExperiments\x12\x1f.mlflow.AddDatasetToExperiments\x1a(.mlflow.AddDatasetToExperiments.Response\"g\xf2\x86\x19\x63\n;\n\x04POST\x12-/mlflow/datasets/{dataset_id}/add-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1a\x41\x64\x64 Dataset to Experiments\x12\xe4\x01\n\x1cremoveDatasetFromExperiments\x12$.mlflow.RemoveDatasetFromExperiments\x1a-.mlflow.RemoveDatasetFromExperiments.Response\"o\xf2\x86\x19k\n>\n\x04POST\x12\x30/mlflow/datasets/{dataset_id}/remove-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1fRemove Dataset from ExperimentsB\x1e\n\x14org.mlflow.api.proto\x90\x01\x01\xe2?\x02\x10\x01')
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06mlflow\x1a\x11\x61ssessments.proto\x1a\x10\x64\x61tabricks.proto\x1a\x0e\x64\x61tasets.proto\x1a\x1egoogle/protobuf/duration.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(opentelemetry/proto/trace/v1/trace.proto\x1a\x15scalapb/scalapb.proto\"\xb0\x01\n\x06Metric\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x1a\n\x0c\x64\x61taset_name\x18\x05 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\x06 \x01(\tB\x04\xf0\x86\x19\x03\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x14\n\x06run_id\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\"#\n\x05Param\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8b\x01\n\x03Run\x12\x1d\n\x04info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo\x12\x1d\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x0f.mlflow.RunData\x12!\n\x06inputs\x18\x03 \x01(\x0b\x32\x11.mlflow.RunInputs\x12#\n\x07outputs\x18\x04 \x01(\x0b\x32\x12.mlflow.RunOutputs\"g\n\x07RunData\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x02 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x03 \x03(\x0b\x32\x0e.mlflow.RunTag\"c\n\tRunInputs\x12,\n\x0e\x64\x61taset_inputs\x18\x01 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x0cmodel_inputs\x18\x02 \x03(\x0b\x32\x12.mlflow.ModelInput\"8\n\nRunOutputs\x12*\n\rmodel_outputs\x18\x01 \x03(\x0b\x32\x13.mlflow.ModelOutput\"$\n\x06RunTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"+\n\rExperimentTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xdd\x01\n\x07RunInfo\x12\x0e\n\x06run_id\x18\x0f \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x06 \x01(\t\x12!\n\x06status\x18\x07 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x12\n\nstart_time\x18\x08 \x01(\x03\x12\x10\n\x08\x65nd_time\x18\t \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\r \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x0e \x01(\t\"\xbb\x01\n\nExperiment\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11\x61rtifact_location\x18\x03 \x01(\t\x12\x17\n\x0flifecycle_stage\x18\x04 \x01(\t\x12\x18\n\x10last_update_time\x18\x05 \x01(\x03\x12\x15\n\rcreation_time\x18\x06 \x01(\x03\x12#\n\x04tags\x18\x07 \x03(\x0b\x32\x15.mlflow.ExperimentTag\"V\n\x0c\x44\x61tasetInput\x12\x1e\n\x04tags\x18\x01 \x03(\x0b\x32\x10.mlflow.InputTag\x12&\n\x07\x64\x61taset\x18\x02 \x01(\x0b\x32\x0f.mlflow.DatasetB\x04\xf8\x86\x19\x01\"$\n\nModelInput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\"2\n\x08InputTag\x12\x11\n\x03key\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\"\x85\x01\n\x07\x44\x61taset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bsource_type\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06source\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\"9\n\x0bModelOutput\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04step\x18\x02 \x01(\x03\x42\x04\xf8\x86\x19\x01\"\xb6\x01\n\x10\x43reateExperiment\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x11\x61rtifact_location\x18\x02 \x01(\t\x12#\n\x04tags\x18\x03 \x03(\x0b\x32\x15.mlflow.ExperimentTag\x1a!\n\x08Response\x12\x15\n\rexperiment_id\x18\x01 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xfe\x01\n\x11SearchExperiments\x12\x13\n\x0bmax_results\x18\x01 \x01(\x03\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12#\n\tview_type\x18\x05 \x01(\x0e\x32\x10.mlflow.ViewType\x1aL\n\x08Response\x12\'\n\x0b\x65xperiments\x18\x01 \x03(\x0b\x32\x12.mlflow.Experiment\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\rGetExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"h\n\x10\x44\x65leteExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"i\n\x11RestoreExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"z\n\x10UpdateExperiment\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x10\n\x08new_name\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xca\x01\n\tCreateRun\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08run_name\x18\x03 \x01(\t\x12\x12\n\nstart_time\x18\x07 \x01(\x03\x12\x1c\n\x04tags\x18\t \x03(\x0b\x32\x0e.mlflow.RunTag\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd0\x01\n\tUpdateRun\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12!\n\x06status\x18\x02 \x01(\x0e\x32\x11.mlflow.RunStatus\x12\x10\n\x08\x65nd_time\x18\x03 \x01(\x03\x12\x10\n\x08run_name\x18\x05 \x01(\t\x1a-\n\x08Response\x12!\n\x08run_info\x18\x01 \x01(\x0b\x32\x0f.mlflow.RunInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"Z\n\tDeleteRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\nRestoreRun\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8a\x02\n\tLogMetric\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\x01\x42\x04\xf8\x86\x19\x01\x12\x17\n\ttimestamp\x18\x04 \x01(\x03\x42\x04\xf8\x86\x19\x01\x12\x0f\n\x04step\x18\x05 \x01(\x03:\x01\x30\x12\x16\n\x08model_id\x18\x07 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1a\n\x0c\x64\x61taset_name\x18\x08 \x01(\tB\x04\xf0\x86\x19\x03\x12\x1c\n\x0e\x64\x61taset_digest\x18\t \x01(\tB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8d\x01\n\x08LogParam\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x90\x01\n\x10SetExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x13\x44\x65leteExperimentTag\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8b\x01\n\x06SetTag\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x05value\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"m\n\tDeleteTag\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x06GetRun\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x1a$\n\x08Response\x12\x18\n\x03run\x18\x01 \x01(\x0b\x32\x0b.mlflow.Run:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x98\x02\n\nSearchRuns\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x34\n\rrun_view_type\x18\x03 \x01(\x0e\x32\x10.mlflow.ViewType:\x0b\x41\x43TIVE_ONLY\x12\x19\n\x0bmax_results\x18\x05 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a>\n\x08Response\x12\x19\n\x04runs\x18\x01 \x03(\x0b\x32\x0b.mlflow.Run\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xd8\x01\n\rListArtifacts\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x04 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\";\n\x08\x46ileInfo\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06is_dir\x18\x02 \x01(\x08\x12\x11\n\tfile_size\x18\x03 \x01(\x03\"\xea\x01\n\x10GetMetricHistory\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x10\n\x08run_uuid\x18\x01 \x01(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x04 \x01(\t\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x44\n\x08Response\x12\x1f\n\x07metrics\x18\x01 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"a\n\x0fMetricWithRunId\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x11\n\ttimestamp\x18\x03 \x01(\x03\x12\x0f\n\x04step\x18\x04 \x01(\x03:\x01\x30\x12\x0e\n\x06run_id\x18\x05 \x01(\t\"\xe7\x01\n\x1cGetMetricHistoryBulkInterval\x12\x0f\n\x07run_ids\x18\x01 \x03(\t\x12\x18\n\nmetric_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nstart_step\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_step\x18\x04 \x01(\x05\x12\x13\n\x0bmax_results\x18\x05 \x01(\x05\x1a\x34\n\x08Response\x12(\n\x07metrics\x18\x01 \x03(\x0b\x32\x17.mlflow.MetricWithRunId:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb1\x01\n\x08LogBatch\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\x12\x1d\n\x06params\x18\x03 \x03(\x0b\x32\r.mlflow.Param\x12\x1c\n\x04tags\x18\x04 \x03(\x0b\x32\x0e.mlflow.RunTag\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"g\n\x08LogModel\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12\x12\n\nmodel_json\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xac\x01\n\tLogInputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12&\n\x08\x64\x61tasets\x18\x02 \x03(\x0b\x32\x14.mlflow.DatasetInput\x12(\n\x06models\x18\x03 \x03(\x0b\x32\x12.mlflow.ModelInputB\x04\xf0\x86\x19\x03\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\nLogOutputs\x12\x14\n\x06run_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12#\n\x06models\x18\x02 \x03(\x0b\x32\x13.mlflow.ModelOutput\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x95\x01\n\x13GetExperimentByName\x12\x1d\n\x0f\x65xperiment_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x32\n\x08Response\x12&\n\nexperiment\x18\x01 \x01(\x0b\x32\x12.mlflow.Experiment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb9\x01\n\x10\x43reateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf0\x01\n\x10UpdateAssessment\x12\x38\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.AssessmentB\x04\xf8\x86\x19\x01\x12\x35\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x80\x01\n\x10\x44\x65leteAssessment\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x01\n\x14GetAssessmentRequest\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1b\n\rassessment_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a>\n\x08Response\x12\x32\n\nassessment\x18\x01 \x01(\x0b\x32\x1e.mlflow.assessments.Assessment:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xe4\x01\n\tTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x03 \x01(\x03\x12\x19\n\x11\x65xecution_time_ms\x18\x04 \x01(\x03\x12#\n\x06status\x18\x05 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x06 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x07 \x03(\x0b\x32\x10.mlflow.TraceTag\"2\n\x14TraceRequestMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"&\n\x08TraceTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xf1\x01\n\nStartTrace\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12\x36\n\x10request_metadata\x18\x03 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x04 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x02\n\x08\x45ndTrace\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x14\n\x0ctimestamp_ms\x18\x02 \x01(\x03\x12#\n\x06status\x18\x03 \x01(\x0e\x32\x13.mlflow.TraceStatus\x12\x36\n\x10request_metadata\x18\x04 \x03(\x0b\x32\x1c.mlflow.TraceRequestMetadata\x12\x1e\n\x04tags\x18\x05 \x03(\x0b\x32\x10.mlflow.TraceTag\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x82\x01\n\x0cGetTraceInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x1a\x31\n\x08Response\x12%\n\ntrace_info\x18\x01 \x01(\x0b\x32\x11.mlflow.TraceInfo:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"y\n\x0eGetTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"{\n\x0e\x42\x61tchGetTraces\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x1a)\n\x08Response\x12\x1d\n\x06traces\x18\x01 \x03(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x97\x01\n\x08GetTrace\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\rallow_partial\x18\x02 \x01(\x08:\x05\x66\x61lse\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xeb\x01\n\x0cSearchTraces\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaa\x02\n\x13SearchUnifiedTraces\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x03 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x12\x18\n\x0bmax_results\x18\x05 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x06 \x03(\t\x12\x12\n\npage_token\x18\x07 \x01(\t\x1a\x46\n\x08Response\x12!\n\x06traces\x18\x01 \x03(\x0b\x32\x11.mlflow.TraceInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc1\x01\n\x15GetOnlineTraceDetails\x12\x16\n\x08trace_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1e\n\x10sql_warehouse_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x16source_inference_table\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12*\n\x1csource_databricks_request_id\x18\x04 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x1e\n\x08Response\x12\x12\n\ntrace_data\x18\x01 \x01(\t\"\xc3\x01\n\x0c\x44\x65leteTraces\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc5\x01\n\x0e\x44\x65leteTracesV3\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1c\n\x14max_timestamp_millis\x18\x02 \x01(\x03\x12\x12\n\nmax_traces\x18\x03 \x01(\x05\x12\x13\n\x0brequest_ids\x18\x04 \x03(\t\x1a\"\n\x08Response\x12\x16\n\x0etraces_deleted\x18\x01 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb5\x02\n\x1f\x43\x61lculateTraceFilterCorrelation\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x16\n\x0e\x66ilter_string1\x18\x02 \x01(\t\x12\x16\n\x0e\x66ilter_string2\x18\x03 \x01(\t\x12\x13\n\x0b\x62\x61se_filter\x18\x04 \x01(\t\x1a\x87\x01\n\x08Response\x12\x0c\n\x04npmi\x18\x01 \x01(\x01\x12\x15\n\rnpmi_smoothed\x18\x02 \x01(\x01\x12\x15\n\rfilter1_count\x18\x03 \x01(\x05\x12\x15\n\rfilter2_count\x18\x04 \x01(\x05\x12\x13\n\x0bjoint_count\x18\x05 \x01(\x05\x12\x13\n\x0btotal_count\x18\x06 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"v\n\x0bSetTraceTag\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x01\n\rSetTraceTagV3\x12\x10\n\x08trace_id\x18\x04 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"z\n\x0e\x44\x65leteTraceTag\x12\x10\n\x08trace_id\x18\x03 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]J\x04\x08\x01\x10\x02R\nrequest_id\"l\n\x10\x44\x65leteTraceTagV3\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"c\n\x05Trace\x12\'\n\ntrace_info\x18\x01 \x01(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x31\n\x05spans\x18\x02 \x03(\x0b\x32\".opentelemetry.proto.trace.v1.Span\"\xb6\x03\n\rTraceLocation\x12\x35\n\x04type\x18\x01 \x01(\x0e\x32\'.mlflow.TraceLocation.TraceLocationType\x12K\n\x11mlflow_experiment\x18\x02 \x01(\x0b\x32..mlflow.TraceLocation.MlflowExperimentLocationH\x00\x12G\n\x0finference_table\x18\x03 \x01(\x0b\x32,.mlflow.TraceLocation.InferenceTableLocationH\x00\x1a\x31\n\x18MlflowExperimentLocation\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a\x31\n\x16InferenceTableLocation\x12\x17\n\x0f\x66ull_table_name\x18\x01 \x01(\t\"d\n\x11TraceLocationType\x12#\n\x1fTRACE_LOCATION_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MLFLOW_EXPERIMENT\x10\x01\x12\x13\n\x0fINFERENCE_TABLE\x10\x02\x42\x0c\n\nidentifier\"\x9b\x05\n\x0bTraceInfoV3\x12\x10\n\x08trace_id\x18\x01 \x01(\t\x12\x19\n\x11\x63lient_request_id\x18\x02 \x01(\t\x12-\n\x0etrace_location\x18\x03 \x01(\x0b\x32\x15.mlflow.TraceLocation\x12\x0f\n\x07request\x18\x04 \x01(\t\x12\x10\n\x08response\x18\x05 \x01(\t\x12\x17\n\x0frequest_preview\x18\x0c \x01(\t\x12\x18\n\x10response_preview\x18\r \x01(\t\x12\x30\n\x0crequest_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12\x65xecution_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n\x05state\x18\x08 \x01(\x0e\x32\x19.mlflow.TraceInfoV3.State\x12>\n\x0etrace_metadata\x18\t \x03(\x0b\x32&.mlflow.TraceInfoV3.TraceMetadataEntry\x12\x33\n\x0b\x61ssessments\x18\n \x03(\x0b\x32\x1e.mlflow.assessments.Assessment\x12+\n\x04tags\x18\x0b \x03(\x0b\x32\x1d.mlflow.TraceInfoV3.TagsEntry\x1a\x34\n\x12TraceMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"B\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03\"\\\n\x0cStartTraceV3\x12\"\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.TraceB\x04\xf8\x86\x19\x01\x1a(\n\x08Response\x12\x1c\n\x05trace\x18\x01 \x01(\x0b\x32\r.mlflow.Trace\"F\n\x0fLinkTracesToRun\x12\x11\n\ttrace_ids\x18\x01 \x03(\t\x12\x14\n\x06run_id\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response\"h\n\x0e\x44\x61tasetSummary\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04name\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x14\n\x06\x64igest\x18\x03 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0f\n\x07\x63ontext\x18\x04 \x01(\t\"\x94\x01\n\x0eSearchDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x1a=\n\x08Response\x12\x31\n\x11\x64\x61taset_summaries\x18\x01 \x03(\x0b\x32\x16.mlflow.DatasetSummary:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x02\n\x11\x43reateLoggedModel\x12\x1b\n\rexperiment_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nmodel_type\x18\x03 \x01(\t\x12\x15\n\rsource_run_id\x18\x04 \x01(\t\x12,\n\x06params\x18\x05 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12$\n\x04tags\x18\x06 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbb\x01\n\x13\x46inalizeLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12/\n\x06status\x18\x02 \x01(\x0e\x32\x19.mlflow.LoggedModelStatusB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x01\n\x0eGetLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"d\n\x11\x44\x65leteLoggedModel\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xf7\x03\n\x12SearchLoggedModels\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x34\n\x08\x64\x61tasets\x18\x06 \x03(\x0b\x32\".mlflow.SearchLoggedModels.Dataset\x12\x17\n\x0bmax_results\x18\x03 \x01(\x05:\x02\x35\x30\x12\x34\n\x08order_by\x18\x04 \x03(\x0b\x32\".mlflow.SearchLoggedModels.OrderBy\x12\x12\n\npage_token\x18\x05 \x01(\t\x1a=\n\x07\x44\x61taset\x12\x1a\n\x0c\x64\x61taset_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x64\x61taset_digest\x18\x02 \x01(\t\x1aj\n\x07OrderBy\x12\x18\n\nfield_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x17\n\tascending\x18\x02 \x01(\x08:\x04true\x12\x14\n\x0c\x64\x61taset_name\x18\x03 \x01(\t\x12\x16\n\x0e\x64\x61taset_digest\x18\x04 \x01(\t\x1aH\n\x08Response\x12#\n\x06models\x18\x01 \x03(\x0b\x32\x13.mlflow.LoggedModel\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x12SetLoggedModelTags\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12$\n\x04tags\x18\x02 \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x1a.\n\x08Response\x12\"\n\x05model\x18\x01 \x01(\x0b\x32\x13.mlflow.LoggedModel:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x14\x44\x65leteLoggedModelTag\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07tag_key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xec\x01\n\x18ListLoggedModelArtifacts\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x1f\n\x17\x61rtifact_directory_path\x18\x02 \x01(\t\x12\x12\n\npage_token\x18\x03 \x01(\t\x1aV\n\x08Response\x12\x10\n\x08root_uri\x18\x01 \x01(\t\x12\x1f\n\x05\x66iles\x18\x02 \x03(\x0b\x32\x10.mlflow.FileInfo\x12\x17\n\x0fnext_page_token\x18\x03 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9c\x01\n\x1bLogLoggedModelParamsRequest\x12\x16\n\x08model_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"[\n\x0bLoggedModel\x12%\n\x04info\x18\x01 \x01(\x0b\x32\x17.mlflow.LoggedModelInfo\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.mlflow.LoggedModelData\"\x84\x03\n\x0fLoggedModelInfo\x12\x10\n\x08model_id\x18\x01 \x01(\t\x12\x15\n\rexperiment_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1d\n\x15\x63reation_timestamp_ms\x18\x04 \x01(\x03\x12!\n\x19last_updated_timestamp_ms\x18\x05 \x01(\x03\x12\x14\n\x0c\x61rtifact_uri\x18\x06 \x01(\t\x12)\n\x06status\x18\x07 \x01(\x0e\x32\x19.mlflow.LoggedModelStatus\x12\x12\n\ncreator_id\x18\x08 \x01(\x03\x12\x12\n\nmodel_type\x18\t \x01(\t\x12\x15\n\rsource_run_id\x18\n \x01(\t\x12\x16\n\x0estatus_message\x18\x0b \x01(\t\x12$\n\x04tags\x18\x0c \x03(\x0b\x32\x16.mlflow.LoggedModelTag\x12:\n\rregistrations\x18\r \x03(\x0b\x32#.mlflow.LoggedModelRegistrationInfo\",\n\x0eLoggedModelTag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"<\n\x1bLoggedModelRegistrationInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"`\n\x0fLoggedModelData\x12,\n\x06params\x18\x01 \x03(\x0b\x32\x1c.mlflow.LoggedModelParameter\x12\x1f\n\x07metrics\x18\x02 \x03(\x0b\x32\x0e.mlflow.Metric\"2\n\x14LoggedModelParameter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x81\x02\n\x0eSearchTracesV3\x12(\n\tlocations\x18\x01 \x03(\x0b\x32\x15.mlflow.TraceLocation\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x18\n\x0bmax_results\x18\x03 \x01(\x05:\x03\x31\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aH\n\x08Response\x12#\n\x06traces\x18\x01 \x03(\x0b\x32\x13.mlflow.TraceInfoV3\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb8\x02\n\rCreateDataset\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x12\x44\n\x0bsource_type\x18\x03 \x01(\x0e\x32/.mlflow.datasets.DatasetRecordSource.SourceType\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12\x0f\n\x07profile\x18\x06 \x01(\t\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12\x0c\n\x04tags\x18\x08 \x01(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb7\x01\n\nGetDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\npage_token\x18\x02 \x01(\t\x1aN\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"b\n\rDeleteDataset\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x88\x02\n\x18SearchEvaluationDatasets\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t\x12\x15\n\rfilter_string\x18\x02 \x01(\t\x12\x19\n\x0bmax_results\x18\x03 \x01(\x05:\x04\x31\x30\x30\x30\x12\x10\n\x08order_by\x18\x04 \x03(\t\x12\x12\n\npage_token\x18\x05 \x01(\t\x1aO\n\x08Response\x12*\n\x08\x64\x61tasets\x18\x01 \x03(\x0b\x32\x18.mlflow.datasets.Dataset\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xa2\x01\n\x0eSetDatasetTags\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\x04tags\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"x\n\x10\x44\x65leteDatasetTag\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x11\n\x03key\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xc3\x01\n\x14UpsertDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x15\n\x07records\x18\x02 \x01(\tB\x04\xf8\x86\x19\x01\x12\x12\n\nupdated_by\x18\x03 \x01(\t\x1a\x39\n\x08Response\x12\x16\n\x0einserted_count\x18\x01 \x01(\x05\x12\x15\n\rupdated_count\x18\x02 \x01(\x05:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x84\x01\n\x17GetDatasetExperimentIds\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\"\n\x08Response\x12\x16\n\x0e\x65xperiment_ids\x18\x01 \x03(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xbf\x01\n\x11GetDatasetRecords\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x19\n\x0bmax_results\x18\x02 \x01(\x05:\x04\x31\x30\x30\x30\x12\x12\n\npage_token\x18\x03 \x01(\t\x1a\x34\n\x08Response\x12\x0f\n\x07records\x18\x01 \x01(\t\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xaf\x01\n\x17\x41\x64\x64\x44\x61tasetToExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xb4\x01\n\x1cRemoveDatasetFromExperiments\x12\x18\n\ndataset_id\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x16\n\x0e\x65xperiment_ids\x18\x02 \x03(\t\x1a\x35\n\x08Response\x12)\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x18.mlflow.datasets.Dataset:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x85\x02\n\x0eRegisterScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x03 \x01(\t\x1a\x85\x01\n\x08Response\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x11\n\tscorer_id\x18\x02 \x01(\t\x12\x15\n\rexperiment_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11serialized_scorer\x18\x05 \x01(\t\x12\x15\n\rcreation_time\x18\x06 \x01(\x03:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"~\n\x0bListScorers\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x93\x01\n\x12ListScorerVersions\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a+\n\x08Response\x12\x1f\n\x07scorers\x18\x01 \x03(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x9a\x01\n\tGetScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a*\n\x08Response\x12\x1e\n\x06scorer\x18\x01 \x01(\x0b\x32\x0e.mlflow.Scorer:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"}\n\x0c\x44\x65leteScorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x91\x01\n\x06Scorer\x12\x15\n\rexperiment_id\x18\x01 \x01(\x05\x12\x13\n\x0bscorer_name\x18\x02 \x01(\t\x12\x16\n\x0escorer_version\x18\x03 \x01(\x05\x12\x19\n\x11serialized_scorer\x18\x04 \x01(\t\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x11\n\tscorer_id\x18\x06 \x01(\t\"4\n\tWorkspace\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"p\n\x0eListWorkspaces\x1a\x31\n\x08Response\x12%\n\nworkspaces\x18\x01 \x03(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x99\x01\n\x0f\x43reateWorkspace\x12\x12\n\x04name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x1a\x30\n\x08Response\x12$\n\tworkspace\x18\x01 \x01(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\x8b\x01\n\x0cGetWorkspace\x12\x1c\n\x0eworkspace_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\x30\n\x08Response\x12$\n\tworkspace\x18\x01 \x01(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"\xa3\x01\n\x0fUpdateWorkspace\x12\x1c\n\x0eworkspace_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x1a\x30\n\x08Response\x12$\n\tworkspace\x18\x01 \x01(\x0b\x32\x11.mlflow.Workspace:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]\"h\n\x0f\x44\x65leteWorkspace\x12\x1c\n\x0eworkspace_name\x18\x01 \x01(\tB\x04\xf8\x86\x19\x01\x1a\n\n\x08Response:+\xe2?(\n&com.databricks.rpc.RPC[$this.Response]*6\n\x08ViewType\x12\x0f\n\x0b\x41\x43TIVE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45LETED_ONLY\x10\x02\x12\x07\n\x03\x41LL\x10\x03*I\n\nSourceType\x12\x0c\n\x08NOTEBOOK\x10\x01\x12\x07\n\x03JOB\x10\x02\x12\x0b\n\x07PROJECT\x10\x03\x12\t\n\x05LOCAL\x10\x04\x12\x0c\n\x07UNKNOWN\x10\xe8\x07*M\n\tRunStatus\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tSCHEDULED\x10\x02\x12\x0c\n\x08\x46INISHED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\n\n\x06KILLED\x10\x05*O\n\x0bTraceStatus\x12\x1c\n\x18TRACE_STATUS_UNSPECIFIED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03*\x8a\x01\n\x11LoggedModelStatus\x12#\n\x1fLOGGED_MODEL_STATUS_UNSPECIFIED\x10\x00\x12\x18\n\x14LOGGED_MODEL_PENDING\x10\x01\x12\x16\n\x12LOGGED_MODEL_READY\x10\x02\x12\x1e\n\x1aLOGGED_MODEL_UPLOAD_FAILED\x10\x03\x32\x85`\n\rMlflowService\x12\xa6\x01\n\x13getExperimentByName\x12\x1b.mlflow.GetExperimentByName\x1a$.mlflow.GetExperimentByName.Response\"L\xf2\x86\x19H\n,\n\x03GET\x12\x1f/mlflow/experiments/get-by-name\x1a\x04\x08\x02\x10\x00\x10\x01*\x16Get Experiment By Name\x12\x94\x01\n\x10\x63reateExperiment\x12\x18.mlflow.CreateExperiment\x1a!.mlflow.CreateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/create\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x43reate Experiment\x12\xc1\x01\n\x11searchExperiments\x12\x19.mlflow.SearchExperiments\x1a\".mlflow.SearchExperiments.Response\"m\xf2\x86\x19i\n(\n\x04POST\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\n\'\n\x03GET\x12\x1a/mlflow/experiments/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Search Experiments\x12\x88\x01\n\rgetExperiment\x12\x15.mlflow.GetExperiment\x1a\x1e.mlflow.GetExperiment.Response\"@\xf2\x86\x19\x38\n$\n\x03GET\x12\x17/mlflow/experiments/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eGet Experiment\xba\x8c\x19\x00\x12\x94\x01\n\x10\x64\x65leteExperiment\x12\x18.mlflow.DeleteExperiment\x1a!.mlflow.DeleteExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\x11\x44\x65lete Experiment\x12\x99\x01\n\x11restoreExperiment\x12\x19.mlflow.RestoreExperiment\x1a\".mlflow.RestoreExperiment.Response\"E\xf2\x86\x19\x41\n)\n\x04POST\x12\x1b/mlflow/experiments/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Restore Experiment\x12\x94\x01\n\x10updateExperiment\x12\x18.mlflow.UpdateExperiment\x1a!.mlflow.UpdateExperiment.Response\"C\xf2\x86\x19?\n(\n\x04POST\x12\x1a/mlflow/experiments/update\x1a\x04\x08\x02\x10\x00\x10\x01*\x11Update Experiment\x12q\n\tcreateRun\x12\x11.mlflow.CreateRun\x1a\x1a.mlflow.CreateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/create\x1a\x04\x08\x02\x10\x00\x10\x01*\nCreate Run\x12q\n\tupdateRun\x12\x11.mlflow.UpdateRun\x1a\x1a.mlflow.UpdateRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/update\x1a\x04\x08\x02\x10\x00\x10\x01*\nUpdate Run\x12q\n\tdeleteRun\x12\x11.mlflow.DeleteRun\x1a\x1a.mlflow.DeleteRun.Response\"5\xf2\x86\x19\x31\n!\n\x04POST\x12\x13/mlflow/runs/delete\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Run\x12v\n\nrestoreRun\x12\x12.mlflow.RestoreRun\x1a\x1b.mlflow.RestoreRun.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/restore\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bRestore Run\x12u\n\tlogMetric\x12\x11.mlflow.LogMetric\x1a\x1a.mlflow.LogMetric.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-metric\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Metric\x12t\n\x08logParam\x12\x10.mlflow.LogParam\x1a\x19.mlflow.LogParam.Response\";\xf2\x86\x19\x37\n(\n\x04POST\x12\x1a/mlflow/runs/log-parameter\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Param\x12\xa1\x01\n\x10setExperimentTag\x12\x18.mlflow.SetExperimentTag\x1a!.mlflow.SetExperimentTag.Response\"P\xf2\x86\x19L\n4\n\x04POST\x12&/mlflow/experiments/set-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Set Experiment Tag\x12\xb0\x01\n\x13\x64\x65leteExperimentTag\x12\x1b.mlflow.DeleteExperimentTag\x1a$.mlflow.DeleteExperimentTag.Response\"V\xf2\x86\x19R\n7\n\x04POST\x12)/mlflow/experiments/delete-experiment-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x15\x44\x65lete Experiment Tag\x12\x66\n\x06setTag\x12\x0e.mlflow.SetTag\x1a\x17.mlflow.SetTag.Response\"3\xf2\x86\x19/\n\"\n\x04POST\x12\x14/mlflow/runs/set-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Set Tag\x12\x88\x01\n\x0bsetTraceTag\x12\x13.mlflow.SetTraceTag\x1a\x1c.mlflow.SetTraceTag.Response\"F\xf2\x86\x19\x42\n/\n\x05PATCH\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\rSet Trace Tag\x12\x8f\x01\n\rsetTraceTagV3\x12\x15.mlflow.SetTraceTagV3\x1a\x1e.mlflow.SetTraceTagV3.Response\"G\xf2\x86\x19\x43\n-\n\x05PATCH\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Set Trace Tag V3\x12\x95\x01\n\x0e\x64\x65leteTraceTag\x12\x16.mlflow.DeleteTraceTag\x1a\x1f.mlflow.DeleteTraceTag.Response\"J\xf2\x86\x19\x46\n0\n\x06\x44\x45LETE\x12 /mlflow/traces/{request_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x44\x65lete Trace Tag\x12\x9c\x01\n\x10\x64\x65leteTraceTagV3\x12\x18.mlflow.DeleteTraceTagV3\x1a!.mlflow.DeleteTraceTagV3.Response\"K\xf2\x86\x19G\n.\n\x06\x44\x45LETE\x12\x1e/mlflow/traces/{trace_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03*\x13\x44\x65lete Trace Tag V3\x12u\n\tdeleteTag\x12\x11.mlflow.DeleteTag\x1a\x1a.mlflow.DeleteTag.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/delete-tag\x1a\x04\x08\x02\x10\x00\x10\x01*\nDelete Tag\x12\x65\n\x06getRun\x12\x0e.mlflow.GetRun\x1a\x17.mlflow.GetRun.Response\"2\xf2\x86\x19*\n\x1d\n\x03GET\x12\x10/mlflow/runs/get\x1a\x04\x08\x02\x10\x00\x10\x01*\x07Get Run\xba\x8c\x19\x00\x12y\n\nsearchRuns\x12\x12.mlflow.SearchRuns\x1a\x1b.mlflow.SearchRuns.Response\":\xf2\x86\x19\x32\n!\n\x04POST\x12\x13/mlflow/runs/search\x1a\x04\x08\x02\x10\x00\x10\x01*\x0bSearch Runs\xba\x8c\x19\x00\x12\x87\x01\n\rlistArtifacts\x12\x15.mlflow.ListArtifacts\x1a\x1e.mlflow.ListArtifacts.Response\"?\xf2\x86\x19\x37\n#\n\x03GET\x12\x16/mlflow/artifacts/list\x1a\x04\x08\x02\x10\x00\x10\x01*\x0eList Artifacts\xba\x8c\x19\x00\x12\x95\x01\n\x10getMetricHistory\x12\x18.mlflow.GetMetricHistory\x1a!.mlflow.GetMetricHistory.Response\"D\xf2\x86\x19@\n(\n\x03GET\x12\x1b/mlflow/metrics/get-history\x1a\x04\x08\x02\x10\x00\x10\x01*\x12Get Metric History\x12\xb7\x01\n\x1cgetMetricHistoryBulkInterval\x12$.mlflow.GetMetricHistoryBulkInterval\x1a-.mlflow.GetMetricHistoryBulkInterval.Response\"B\xf2\x86\x19:\n6\n\x03GET\x12)/mlflow/metrics/get-history-bulk-interval\x1a\x04\x08\x02\x10\x0b\x10\x03\xba\x8c\x19\x00\x12p\n\x08logBatch\x12\x10.mlflow.LogBatch\x1a\x19.mlflow.LogBatch.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-batch\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Batch\x12p\n\x08logModel\x12\x10.mlflow.LogModel\x1a\x19.mlflow.LogModel.Response\"7\xf2\x86\x19\x33\n$\n\x04POST\x12\x16/mlflow/runs/log-model\x1a\x04\x08\x02\x10\x00\x10\x01*\tLog Model\x12u\n\tlogInputs\x12\x11.mlflow.LogInputs\x1a\x1a.mlflow.LogInputs.Response\"9\xf2\x86\x19\x35\n%\n\x04POST\x12\x17/mlflow/runs/log-inputs\x1a\x04\x08\x02\x10\x00\x10\x01*\nLog Inputs\x12v\n\nlogOutputs\x12\x12.mlflow.LogOutputs\x1a\x1b.mlflow.LogOutputs.Response\"7\xf2\x86\x19\x33\n\"\n\x04POST\x12\x14/mlflow/runs/outputs\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bLog Outputs\x12\x87\x01\n\x0esearchDatasets\x12\x16.mlflow.SearchDatasets\x1a\x1f.mlflow.SearchDatasets.Response\"<\xf2\x86\x19\x34\n0\n\x04POST\x12\"mlflow/experiments/search-datasets\x1a\x04\x08\x02\x10\x00\x10\x03\xba\x8c\x19\x00\x12p\n\nstartTrace\x12\x12.mlflow.StartTrace\x1a\x1b.mlflow.StartTrace.Response\"1\xf2\x86\x19-\n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x0bStart Trace\x12v\n\x08\x65ndTrace\x12\x10.mlflow.EndTrace\x1a\x19.mlflow.EndTrace.Response\"=\xf2\x86\x19\x39\n*\n\x05PATCH\x12\x1b/mlflow/traces/{request_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\tEnd Trace\x12\x89\x01\n\x0cgetTraceInfo\x12\x14.mlflow.GetTraceInfo\x1a\x1d.mlflow.GetTraceInfo.Response\"D\xf2\x86\x19@\n-\n\x03GET\x12 /mlflow/traces/{request_id}/info\x1a\x04\x08\x02\x10\x00\x10\x03*\rGet TraceInfo\x12\x8b\x01\n\x0egetTraceInfoV3\x12\x16.mlflow.GetTraceInfoV3\x1a\x1f.mlflow.GetTraceInfoV3.Response\"@\xf2\x86\x19<\n&\n\x03GET\x12\x19/mlflow/traces/{trace_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Get TraceInfo v3\x12n\n\x08getTrace\x12\x10.mlflow.GetTrace\x1a\x19.mlflow.GetTrace.Response\"5\xf2\x86\x19\x31\n\x1f\n\x03GET\x12\x12/mlflow/traces/get\x1a\x04\x08\x03\x10\x00\x10\x03*\x0cGet Trace v3\x12\x83\x01\n\x0e\x62\x61tchGetTraces\x12\x16.mlflow.BatchGetTraces\x1a\x1f.mlflow.BatchGetTraces.Response\"8\xf2\x86\x19\x34\n$\n\x03GET\x12\x17/mlflow/traces/batchGet\x1a\x04\x08\x03\x10\x00\x10\x03*\nGet Traces\x12w\n\x0csearchTraces\x12\x14.mlflow.SearchTraces\x1a\x1d.mlflow.SearchTraces.Response\"2\xf2\x86\x19.\n\x1b\n\x03GET\x12\x0e/mlflow/traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rSearch Traces\x12\x88\x01\n\x0esearchTracesV3\x12\x16.mlflow.SearchTracesV3\x1a\x1f.mlflow.SearchTracesV3.Response\"=\xf2\x86\x19\x39\n#\n\x04POST\x12\x15/mlflow/traces/search\x1a\x04\x08\x03\x10\x00\x10\x03*\x10Search Traces V3\x12i\n\x0cstartTraceV3\x12\x14.mlflow.StartTraceV3\x1a\x1d.mlflow.StartTraceV3.Response\"$\xf2\x86\x19 \n\x1c\n\x04POST\x12\x0e/mlflow/traces\x1a\x04\x08\x03\x10\x00\x10\x03\x12\x92\x01\n\x0flinkTracesToRun\x12\x17.mlflow.LinkTracesToRun\x1a .mlflow.LinkTracesToRun.Response\"D\xf2\x86\x19@\n(\n\x04POST\x12\x1a/mlflow/traces/link-to-run\x1a\x04\x08\x02\x10\x00\x10\x03*\x12Link Traces to Run\x12\xa2\x01\n\x19searchUnifiedTraceHandler\x12\x1b.mlflow.SearchUnifiedTraces\x1a$.mlflow.SearchUnifiedTraces.Response\"B\xf2\x86\x19>\n#\n\x03GET\x12\x16/mlflow/unified-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\x15Search Unified Traces\x12\xaf\x01\n\x15getOnlineTraceDetails\x12\x1d.mlflow.GetOnlineTraceDetails\x1a&.mlflow.GetOnlineTraceDetails.Response\"O\xf2\x86\x19K\n-\n\x03GET\x12 /mlflow/get-online-trace-details\x1a\x04\x08\x02\x10\x00\x10\x03*\x18Get Online Trace Details\x12\x86\x01\n\x0c\x64\x65leteTraces\x12\x14.mlflow.DeleteTraces\x1a\x1d.mlflow.DeleteTraces.Response\"A\xf2\x86\x19=\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x02\x10\x00\x10\x03*\rDelete Traces\x12\x8f\x01\n\x0e\x64\x65leteTracesV3\x12\x16.mlflow.DeleteTracesV3\x1a\x1f.mlflow.DeleteTracesV3.Response\"D\xf2\x86\x19@\n*\n\x04POST\x12\x1c/mlflow/traces/delete-traces\x1a\x04\x08\x03\x10\x00\x10\x03*\x10\x44\x65lete Traces V3\x12\xe3\x01\n\x1f\x63\x61lculateTraceFilterCorrelation\x12\'.mlflow.CalculateTraceFilterCorrelation\x1a\x30.mlflow.CalculateTraceFilterCorrelation.Response\"e\xf2\x86\x19\x61\n9\n\x04POST\x12+/mlflow/traces/calculate-filter-correlation\x1a\x04\x08\x03\x10\x00\x10\x03*\"Calculate Trace Filter Correlation\x12\x83\x01\n\x0elistWorkspaces\x12\x16.mlflow.ListWorkspaces\x1a\x1f.mlflow.ListWorkspaces.Response\"8\xf2\x86\x19\x34\n\x1f\n\x03GET\x12\x12/mlflow/workspaces\x1a\x04\x08\x02\x10\x00\x10\x03*\x0fList Workspaces\x12\x88\x01\n\x0f\x63reateWorkspace\x12\x17.mlflow.CreateWorkspace\x1a .mlflow.CreateWorkspace.Response\":\xf2\x86\x19\x36\n \n\x04POST\x12\x12/mlflow/workspaces\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x43reate Workspace\x12\x8c\x01\n\x0cgetWorkspace\x12\x14.mlflow.GetWorkspace\x1a\x1d.mlflow.GetWorkspace.Response\"G\xf2\x86\x19\x43\n0\n\x03GET\x12#/mlflow/workspaces/{workspace_name}\x1a\x04\x08\x02\x10\x00\x10\x03*\rGet Workspace\x12\x9a\x01\n\x0fupdateWorkspace\x12\x17.mlflow.UpdateWorkspace\x1a .mlflow.UpdateWorkspace.Response\"L\xf2\x86\x19H\n2\n\x05PATCH\x12#/mlflow/workspaces/{workspace_name}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10Update Workspace\x12\x9b\x01\n\x0f\x64\x65leteWorkspace\x12\x17.mlflow.DeleteWorkspace\x1a .mlflow.DeleteWorkspace.Response\"M\xf2\x86\x19I\n3\n\x06\x44\x45LETE\x12#/mlflow/workspaces/{workspace_name}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10\x44\x65lete Workspace\x12\x94\x01\n\x11\x63reateLoggedModel\x12\x19.mlflow.CreateLoggedModel\x1a\".mlflow.CreateLoggedModel.Response\"@\xf2\x86\x19<\n#\n\x04POST\x12\x15/mlflow/logged-models\x1a\x04\x08\x02\x10\x00\x10\x03*\x13\x43reate Logged Model\x12\xa8\x01\n\x13\x66inalizeLoggedModel\x12\x1b.mlflow.FinalizeLoggedModel\x1a$.mlflow.FinalizeLoggedModel.Response\"N\xf2\x86\x19J\n/\n\x05PATCH\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x46inalize Logged Model\x12\x92\x01\n\x0egetLoggedModel\x12\x16.mlflow.GetLoggedModel\x1a\x1f.mlflow.GetLoggedModel.Response\"G\xf2\x86\x19\x43\n-\n\x03GET\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x10Get Logged Model\x12\xa3\x01\n\x11\x64\x65leteLoggedModel\x12\x19.mlflow.DeleteLoggedModel\x1a\".mlflow.DeleteLoggedModel.Response\"O\xf2\x86\x19K\n0\n\x06\x44\x45LETE\x12 /mlflow/logged-models/{model_id}\x1a\x04\x08\x02\x10\x00\x10\x03*\x15\x44\x65lete a Logged Model\x12\x9e\x01\n\x12searchLoggedModels\x12\x1a.mlflow.SearchLoggedModels\x1a#.mlflow.SearchLoggedModels.Response\"G\xf2\x86\x19\x43\n*\n\x04POST\x12\x1c/mlflow/logged-models/search\x1a\x04\x08\x02\x10\x00\x10\x03*\x13Search LoggedModels\x12\xa9\x01\n\x12setLoggedModelTags\x12\x1a.mlflow.SetLoggedModelTags\x1a#.mlflow.SetLoggedModelTags.Response\"R\xf2\x86\x19N\n4\n\x05PATCH\x12%/mlflow/logged-models/{model_id}/tags\x1a\x04\x08\x02\x10\x00\x10\x03*\x14Set Logged Model Tag\x12\xbd\x01\n\x14\x64\x65leteLoggedModelTag\x12\x1c.mlflow.DeleteLoggedModelTag\x1a%.mlflow.DeleteLoggedModelTag.Response\"`\xf2\x86\x19\\\n?\n\x06\x44\x45LETE\x12//mlflow/logged-models/{model_id}/tags/{tag_key}\x1a\x04\x08\x02\x10\x00\x10\x03*\x17\x44\x65lete Logged Model Tag\x12\xd6\x01\n\x18listLoggedModelArtifacts\x12 .mlflow.ListLoggedModelArtifacts\x1a).mlflow.ListLoggedModelArtifacts.Response\"m\xf2\x86\x19i\nC\n\x03GET\x12\x36/mlflow/logged-models/{model_id}/artifacts/directories\x1a\x04\x08\x02\x10\x00\x10\x03* List Artifacts for Logged Models\x12\xc1\x01\n\x14LogLoggedModelParams\x12#.mlflow.LogLoggedModelParamsRequest\x1a,.mlflow.LogLoggedModelParamsRequest.Response\"V\xf2\x86\x19R\n5\n\x04POST\x12\'/mlflow/logged-models/{model_id}/params\x1a\x04\x08\x02\x10\x00\x10\x03*\x17Log Logged Model Params\x12\xb0\x01\n\rGetAssessment\x12\x1c.mlflow.GetAssessmentRequest\x1a%.mlflow.GetAssessmentRequest.Response\"Z\xf2\x86\x19V\nB\n\x03GET\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x0eGet Assessment\x12\xdf\x01\n\x10\x63reateAssessment\x12\x18.mlflow.CreateAssessment\x1a!.mlflow.CreateAssessment.Response\"\x8d\x01\xf2\x86\x19\x88\x01\n>\n\x04POST\x12\x30/mlflow/traces/{assessment.trace_id}/assessments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*:Create an assessment of a trace or a span within the trace\x12\xd0\x01\n\x10updateAssessment\x12\x18.mlflow.UpdateAssessment\x1a!.mlflow.UpdateAssessment.Response\"\x7f\xf2\x86\x19{\nD\n\x05PATCH\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x01*)Update an existing assessment on a trace.\x12\xb1\x01\n\x10\x64\x65leteAssessment\x12\x18.mlflow.DeleteAssessment\x1a!.mlflow.DeleteAssessment.Response\"`\xf2\x86\x19\\\nE\n\x06\x44\x45LETE\x12\x35/mlflow/traces/{trace_id}/assessments/{assessment_id}\x1a\x04\x08\x03\x10\x00\x10\x03*\x11\x44\x65lete Assessment\x12\x9a\x01\n\rcreateDataset\x12\x15.mlflow.CreateDataset\x1a\x1e.mlflow.CreateDataset.Response\"R\xf2\x86\x19N\n%\n\x04POST\x12\x17/mlflow/datasets/create\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xee\x07\x18\x0c\x18\x01*\x19\x43reate Evaluation Dataset\x12\x91\x01\n\ngetDataset\x12\x12.mlflow.GetDataset\x1a\x1b.mlflow.GetDataset.Response\"R\xf2\x86\x19N\n*\n\x03GET\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x16Get Evaluation Dataset\x12\xa0\x01\n\rdeleteDataset\x12\x15.mlflow.DeleteDataset\x1a\x1e.mlflow.DeleteDataset.Response\"X\xf2\x86\x19T\n-\n\x06\x44\x45LETE\x12\x1d/mlflow/datasets/{dataset_id}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x19\x44\x65lete Evaluation Dataset\x12\xdd\x01\n\x18searchEvaluationDatasets\x12 .mlflow.SearchEvaluationDatasets\x1a).mlflow.SearchEvaluationDatasets.Response\"t\xf2\x86\x19p\n%\n\x04POST\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\n$\n\x03GET\x12\x17/mlflow/datasets/search\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\x01*\x1aSearch Evaluation Datasets\x12\xa9\x01\n\x0esetDatasetTags\x12\x16.mlflow.SetDatasetTags\x1a\x1f.mlflow.SetDatasetTags.Response\"^\xf2\x86\x19Z\n1\n\x05PATCH\x12\"/mlflow/datasets/{dataset_id}/tags\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1bSet Evaluation Dataset Tags\x12\xb8\x01\n\x10\x64\x65leteDatasetTag\x12\x18.mlflow.DeleteDatasetTag\x1a!.mlflow.DeleteDatasetTag.Response\"g\xf2\x86\x19\x63\n8\n\x06\x44\x45LETE\x12(/mlflow/datasets/{dataset_id}/tags/{key}\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1d\x44\x65lete Evaluation Dataset Tag\x12\xc3\x01\n\x14upsertDatasetRecords\x12\x1c.mlflow.UpsertDatasetRecords\x1a%.mlflow.UpsertDatasetRecords.Response\"f\xf2\x86\x19\x62\n3\n\x04POST\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*!Upsert Evaluation Dataset Records\x12\xd6\x01\n\x17getDatasetExperimentIds\x12\x1f.mlflow.GetDatasetExperimentIds\x1a(.mlflow.GetDatasetExperimentIds.Response\"p\xf2\x86\x19l\n9\n\x03GET\x12,/mlflow/datasets/{dataset_id}/experiment-ids\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*%Get Evaluation Dataset Experiment IDs\x12\x8a\x01\n\x0eregisterScorer\x12\x16.mlflow.RegisterScorer\x1a\x1f.mlflow.RegisterScorer.Response\"?\xf2\x86\x19;\n&\n\x04POST\x12\x18/mlflow/scorers/register\x1a\x04\x08\x03\x10\x00\x10\x01*\x0fRegister Scorer\x12y\n\x0blistScorers\x12\x13.mlflow.ListScorers\x1a\x1c.mlflow.ListScorers.Response\"7\xf2\x86\x19\x33\n!\n\x03GET\x12\x14/mlflow/scorers/list\x1a\x04\x08\x03\x10\x00\x10\x01*\x0cList Scorers\x12\x9a\x01\n\x12listScorerVersions\x12\x1a.mlflow.ListScorerVersions\x1a#.mlflow.ListScorerVersions.Response\"C\xf2\x86\x19?\n%\n\x03GET\x12\x18/mlflow/scorers/versions\x1a\x04\x08\x03\x10\x00\x10\x01*\x14List Scorer Versions\x12p\n\tgetScorer\x12\x11.mlflow.GetScorer\x1a\x1a.mlflow.GetScorer.Response\"4\xf2\x86\x19\x30\n \n\x03GET\x12\x13/mlflow/scorers/get\x1a\x04\x08\x03\x10\x00\x10\x01*\nGet Scorer\x12\x82\x01\n\x0c\x64\x65leteScorer\x12\x14.mlflow.DeleteScorer\x1a\x1d.mlflow.DeleteScorer.Response\"=\xf2\x86\x19\x39\n&\n\x06\x44\x45LETE\x12\x16/mlflow/scorers/delete\x1a\x04\x08\x03\x10\x00\x10\x01*\rDelete Scorer\x12\xb6\x01\n\x11getDatasetRecords\x12\x19.mlflow.GetDatasetRecords\x1a\".mlflow.GetDatasetRecords.Response\"b\xf2\x86\x19^\n2\n\x03GET\x12%/mlflow/datasets/{dataset_id}/records\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1eGet Evaluation Dataset Records\x12\xcd\x01\n\x17\x61\x64\x64\x44\x61tasetToExperiments\x12\x1f.mlflow.AddDatasetToExperiments\x1a(.mlflow.AddDatasetToExperiments.Response\"g\xf2\x86\x19\x63\n;\n\x04POST\x12-/mlflow/datasets/{dataset_id}/add-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1a\x41\x64\x64 Dataset to Experiments\x12\xe4\x01\n\x1cremoveDatasetFromExperiments\x12$.mlflow.RemoveDatasetFromExperiments\x1a-.mlflow.RemoveDatasetFromExperiments.Response\"o\xf2\x86\x19k\n>\n\x04POST\x12\x30/mlflow/datasets/{dataset_id}/remove-experiments\x1a\x04\x08\x03\x10\x00\x10\x03\x18\xe8\x07\x18\xba\x17\x18\x01*\x1fRemove Dataset from ExperimentsB\x1e\n\x14org.mlflow.api.proto\x90\x01\x01\xe2?\x02\x10\x01')
_VIEWTYPE = DESCRIPTOR.enum_types_by_name['ViewType']
ViewType = enum_type_wrapper.EnumTypeWrapper(_VIEWTYPE)
@@ -1155,6 +1207,17 @@
_DELETESCORER = DESCRIPTOR.message_types_by_name['DeleteScorer']
_DELETESCORER_RESPONSE = _DELETESCORER.nested_types_by_name['Response']
_SCORER = DESCRIPTOR.message_types_by_name['Scorer']
+ _WORKSPACE = DESCRIPTOR.message_types_by_name['Workspace']
+ _LISTWORKSPACES = DESCRIPTOR.message_types_by_name['ListWorkspaces']
+ _LISTWORKSPACES_RESPONSE = _LISTWORKSPACES.nested_types_by_name['Response']
+ _CREATEWORKSPACE = DESCRIPTOR.message_types_by_name['CreateWorkspace']
+ _CREATEWORKSPACE_RESPONSE = _CREATEWORKSPACE.nested_types_by_name['Response']
+ _GETWORKSPACE = DESCRIPTOR.message_types_by_name['GetWorkspace']
+ _GETWORKSPACE_RESPONSE = _GETWORKSPACE.nested_types_by_name['Response']
+ _UPDATEWORKSPACE = DESCRIPTOR.message_types_by_name['UpdateWorkspace']
+ _UPDATEWORKSPACE_RESPONSE = _UPDATEWORKSPACE.nested_types_by_name['Response']
+ _DELETEWORKSPACE = DESCRIPTOR.message_types_by_name['DeleteWorkspace']
+ _DELETEWORKSPACE_RESPONSE = _DELETEWORKSPACE.nested_types_by_name['Response']
_TRACELOCATION_TRACELOCATIONTYPE = _TRACELOCATION.enum_types_by_name['TraceLocationType']
_TRACEINFOV3_STATE = _TRACEINFOV3.enum_types_by_name['State']
Metric = _reflection.GeneratedProtocolMessageType('Metric', (_message.Message,), {
@@ -2547,6 +2610,88 @@
})
_sym_db.RegisterMessage(Scorer)
+ Workspace = _reflection.GeneratedProtocolMessageType('Workspace', (_message.Message,), {
+ 'DESCRIPTOR' : _WORKSPACE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.Workspace)
+ })
+ _sym_db.RegisterMessage(Workspace)
+
+ ListWorkspaces = _reflection.GeneratedProtocolMessageType('ListWorkspaces', (_message.Message,), {
+
+ 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTWORKSPACES_RESPONSE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.ListWorkspaces.Response)
+ })
+ ,
+ 'DESCRIPTOR' : _LISTWORKSPACES,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.ListWorkspaces)
+ })
+ _sym_db.RegisterMessage(ListWorkspaces)
+ _sym_db.RegisterMessage(ListWorkspaces.Response)
+
+ CreateWorkspace = _reflection.GeneratedProtocolMessageType('CreateWorkspace', (_message.Message,), {
+
+ 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
+ 'DESCRIPTOR' : _CREATEWORKSPACE_RESPONSE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.CreateWorkspace.Response)
+ })
+ ,
+ 'DESCRIPTOR' : _CREATEWORKSPACE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.CreateWorkspace)
+ })
+ _sym_db.RegisterMessage(CreateWorkspace)
+ _sym_db.RegisterMessage(CreateWorkspace.Response)
+
+ GetWorkspace = _reflection.GeneratedProtocolMessageType('GetWorkspace', (_message.Message,), {
+
+ 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
+ 'DESCRIPTOR' : _GETWORKSPACE_RESPONSE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.GetWorkspace.Response)
+ })
+ ,
+ 'DESCRIPTOR' : _GETWORKSPACE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.GetWorkspace)
+ })
+ _sym_db.RegisterMessage(GetWorkspace)
+ _sym_db.RegisterMessage(GetWorkspace.Response)
+
+ UpdateWorkspace = _reflection.GeneratedProtocolMessageType('UpdateWorkspace', (_message.Message,), {
+
+ 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
+ 'DESCRIPTOR' : _UPDATEWORKSPACE_RESPONSE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.UpdateWorkspace.Response)
+ })
+ ,
+ 'DESCRIPTOR' : _UPDATEWORKSPACE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.UpdateWorkspace)
+ })
+ _sym_db.RegisterMessage(UpdateWorkspace)
+ _sym_db.RegisterMessage(UpdateWorkspace.Response)
+
+ DeleteWorkspace = _reflection.GeneratedProtocolMessageType('DeleteWorkspace', (_message.Message,), {
+
+ 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEWORKSPACE_RESPONSE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.DeleteWorkspace.Response)
+ })
+ ,
+ 'DESCRIPTOR' : _DELETEWORKSPACE,
+ '__module__' : 'service_pb2'
+ # @@protoc_insertion_point(class_scope:mlflow.DeleteWorkspace)
+ })
+ _sym_db.RegisterMessage(DeleteWorkspace)
+ _sym_db.RegisterMessage(DeleteWorkspace.Response)
+
_MLFLOWSERVICE = DESCRIPTOR.services_by_name['MlflowService']
if _descriptor._USE_C_DESCRIPTORS == False:
@@ -2880,6 +3025,26 @@
_GETSCORER._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
_DELETESCORER._options = None
_DELETESCORER._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _WORKSPACE.fields_by_name['name']._options = None
+ _WORKSPACE.fields_by_name['name']._serialized_options = b'\370\206\031\001'
+ _LISTWORKSPACES._options = None
+ _LISTWORKSPACES._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _CREATEWORKSPACE.fields_by_name['name']._options = None
+ _CREATEWORKSPACE.fields_by_name['name']._serialized_options = b'\370\206\031\001'
+ _CREATEWORKSPACE._options = None
+ _CREATEWORKSPACE._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _GETWORKSPACE.fields_by_name['workspace_name']._options = None
+ _GETWORKSPACE.fields_by_name['workspace_name']._serialized_options = b'\370\206\031\001'
+ _GETWORKSPACE._options = None
+ _GETWORKSPACE._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _UPDATEWORKSPACE.fields_by_name['workspace_name']._options = None
+ _UPDATEWORKSPACE.fields_by_name['workspace_name']._serialized_options = b'\370\206\031\001'
+ _UPDATEWORKSPACE._options = None
+ _UPDATEWORKSPACE._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
+ _DELETEWORKSPACE.fields_by_name['workspace_name']._options = None
+ _DELETEWORKSPACE.fields_by_name['workspace_name']._serialized_options = b'\370\206\031\001'
+ _DELETEWORKSPACE._options = None
+ _DELETEWORKSPACE._serialized_options = b'\342?(\n&com.databricks.rpc.RPC[$this.Response]'
_MLFLOWSERVICE.methods_by_name['getExperimentByName']._options = None
_MLFLOWSERVICE.methods_by_name['getExperimentByName']._serialized_options = b'\362\206\031H\n,\n\003GET\022\037/mlflow/experiments/get-by-name\032\004\010\002\020\000\020\001*\026Get Experiment By Name'
_MLFLOWSERVICE.methods_by_name['createExperiment']._options = None
@@ -2972,6 +3137,16 @@
_MLFLOWSERVICE.methods_by_name['deleteTracesV3']._serialized_options = b'\362\206\031@\n*\n\004POST\022\034/mlflow/traces/delete-traces\032\004\010\003\020\000\020\003*\020Delete Traces V3'
_MLFLOWSERVICE.methods_by_name['calculateTraceFilterCorrelation']._options = None
_MLFLOWSERVICE.methods_by_name['calculateTraceFilterCorrelation']._serialized_options = b'\362\206\031a\n9\n\004POST\022+/mlflow/traces/calculate-filter-correlation\032\004\010\003\020\000\020\003*\"Calculate Trace Filter Correlation'
+ _MLFLOWSERVICE.methods_by_name['listWorkspaces']._options = None
+ _MLFLOWSERVICE.methods_by_name['listWorkspaces']._serialized_options = b'\362\206\0314\n\037\n\003GET\022\022/mlflow/workspaces\032\004\010\002\020\000\020\003*\017List Workspaces'
+ _MLFLOWSERVICE.methods_by_name['createWorkspace']._options = None
+ _MLFLOWSERVICE.methods_by_name['createWorkspace']._serialized_options = b'\362\206\0316\n \n\004POST\022\022/mlflow/workspaces\032\004\010\002\020\000\020\003*\020Create Workspace'
+ _MLFLOWSERVICE.methods_by_name['getWorkspace']._options = None
+ _MLFLOWSERVICE.methods_by_name['getWorkspace']._serialized_options = b'\362\206\031C\n0\n\003GET\022#/mlflow/workspaces/{workspace_name}\032\004\010\002\020\000\020\003*\rGet Workspace'
+ _MLFLOWSERVICE.methods_by_name['updateWorkspace']._options = None
+ _MLFLOWSERVICE.methods_by_name['updateWorkspace']._serialized_options = b'\362\206\031H\n2\n\005PATCH\022#/mlflow/workspaces/{workspace_name}\032\004\010\002\020\000\020\003*\020Update Workspace'
+ _MLFLOWSERVICE.methods_by_name['deleteWorkspace']._options = None
+ _MLFLOWSERVICE.methods_by_name['deleteWorkspace']._serialized_options = b'\362\206\031I\n3\n\006DELETE\022#/mlflow/workspaces/{workspace_name}\032\004\010\002\020\000\020\003*\020Delete Workspace'
_MLFLOWSERVICE.methods_by_name['createLoggedModel']._options = None
_MLFLOWSERVICE.methods_by_name['createLoggedModel']._serialized_options = b'\362\206\031<\n#\n\004POST\022\025/mlflow/logged-models\032\004\010\002\020\000\020\003*\023Create Logged Model'
_MLFLOWSERVICE.methods_by_name['finalizeLoggedModel']._options = None
@@ -3030,16 +3205,16 @@
_MLFLOWSERVICE.methods_by_name['addDatasetToExperiments']._serialized_options = b'\362\206\031c\n;\n\004POST\022-/mlflow/datasets/{dataset_id}/add-experiments\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\032Add Dataset to Experiments'
_MLFLOWSERVICE.methods_by_name['removeDatasetFromExperiments']._options = None
_MLFLOWSERVICE.methods_by_name['removeDatasetFromExperiments']._serialized_options = b'\362\206\031k\n>\n\004POST\0220/mlflow/datasets/{dataset_id}/remove-experiments\032\004\010\003\020\000\020\003\030\350\007\030\272\027\030\001*\037Remove Dataset from Experiments'
- _VIEWTYPE._serialized_start=17844
- _VIEWTYPE._serialized_end=17898
- _SOURCETYPE._serialized_start=17900
- _SOURCETYPE._serialized_end=17973
- _RUNSTATUS._serialized_start=17975
- _RUNSTATUS._serialized_end=18052
- _TRACESTATUS._serialized_start=18054
- _TRACESTATUS._serialized_end=18133
- _LOGGEDMODELSTATUS._serialized_start=18136
- _LOGGEDMODELSTATUS._serialized_end=18274
+ _VIEWTYPE._serialized_start=18582
+ _VIEWTYPE._serialized_end=18636
+ _SOURCETYPE._serialized_start=18638
+ _SOURCETYPE._serialized_end=18711
+ _RUNSTATUS._serialized_start=18713
+ _RUNSTATUS._serialized_end=18790
+ _TRACESTATUS._serialized_start=18792
+ _TRACESTATUS._serialized_end=18871
+ _LOGGEDMODELSTATUS._serialized_start=18874
+ _LOGGEDMODELSTATUS._serialized_end=19012
_METRIC._serialized_start=243
_METRIC._serialized_end=419
_PARAM._serialized_start=421
@@ -3418,8 +3593,30 @@
_DELETESCORER_RESPONSE._serialized_end=1849
_SCORER._serialized_start=17697
_SCORER._serialized_end=17842
- _MLFLOWSERVICE._serialized_start=18277
- _MLFLOWSERVICE._serialized_end=29839
+ _WORKSPACE._serialized_start=17844
+ _WORKSPACE._serialized_end=17896
+ _LISTWORKSPACES._serialized_start=17898
+ _LISTWORKSPACES._serialized_end=18010
+ _LISTWORKSPACES_RESPONSE._serialized_start=17916
+ _LISTWORKSPACES_RESPONSE._serialized_end=17965
+ _CREATEWORKSPACE._serialized_start=18013
+ _CREATEWORKSPACE._serialized_end=18166
+ _CREATEWORKSPACE_RESPONSE._serialized_start=18073
+ _CREATEWORKSPACE_RESPONSE._serialized_end=18121
+ _GETWORKSPACE._serialized_start=18169
+ _GETWORKSPACE._serialized_end=18308
+ _GETWORKSPACE_RESPONSE._serialized_start=18073
+ _GETWORKSPACE_RESPONSE._serialized_end=18121
+ _UPDATEWORKSPACE._serialized_start=18311
+ _UPDATEWORKSPACE._serialized_end=18474
+ _UPDATEWORKSPACE_RESPONSE._serialized_start=18073
+ _UPDATEWORKSPACE_RESPONSE._serialized_end=18121
+ _DELETEWORKSPACE._serialized_start=18476
+ _DELETEWORKSPACE._serialized_end=18580
+ _DELETEWORKSPACE_RESPONSE._serialized_start=1839
+ _DELETEWORKSPACE_RESPONSE._serialized_end=1849
+ _MLFLOWSERVICE._serialized_start=19015
+ _MLFLOWSERVICE._serialized_end=31308
MlflowService = service_reflection.GeneratedServiceType('MlflowService', (_service.Service,), dict(
DESCRIPTOR = _MLFLOWSERVICE,
__module__ = 'service_pb2'
diff --git a/mlflow/protos/service_pb2.pyi b/mlflow/protos/service_pb2.pyi
index 5125655c034dc..cf52422ac8fdc 100644
--- a/mlflow/protos/service_pb2.pyi
+++ b/mlflow/protos/service_pb2.pyi
@@ -1613,6 +1613,69 @@ class Scorer(_message.Message):
scorer_id: str
def __init__(self, experiment_id: _Optional[int] = ..., scorer_name: _Optional[str] = ..., scorer_version: _Optional[int] = ..., serialized_scorer: _Optional[str] = ..., creation_time: _Optional[int] = ..., scorer_id: _Optional[str] = ...) -> None: ...
+class Workspace(_message.Message):
+ __slots__ = ("name", "description")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ description: str
+ def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
+
+class ListWorkspaces(_message.Message):
+ __slots__ = ()
+ class Response(_message.Message):
+ __slots__ = ("workspaces",)
+ WORKSPACES_FIELD_NUMBER: _ClassVar[int]
+ workspaces: _containers.RepeatedCompositeFieldContainer[Workspace]
+ def __init__(self, workspaces: _Optional[_Iterable[_Union[Workspace, _Mapping]]] = ...) -> None: ...
+ def __init__(self) -> None: ...
+
+class CreateWorkspace(_message.Message):
+ __slots__ = ("name", "description")
+ class Response(_message.Message):
+ __slots__ = ("workspace",)
+ WORKSPACE_FIELD_NUMBER: _ClassVar[int]
+ workspace: Workspace
+ def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ description: str
+ def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
+
+class GetWorkspace(_message.Message):
+ __slots__ = ("workspace_name",)
+ class Response(_message.Message):
+ __slots__ = ("workspace",)
+ WORKSPACE_FIELD_NUMBER: _ClassVar[int]
+ workspace: Workspace
+ def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...
+ WORKSPACE_NAME_FIELD_NUMBER: _ClassVar[int]
+ workspace_name: str
+ def __init__(self, workspace_name: _Optional[str] = ...) -> None: ...
+
+class UpdateWorkspace(_message.Message):
+ __slots__ = ("workspace_name", "description")
+ class Response(_message.Message):
+ __slots__ = ("workspace",)
+ WORKSPACE_FIELD_NUMBER: _ClassVar[int]
+ workspace: Workspace
+ def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...
+ WORKSPACE_NAME_FIELD_NUMBER: _ClassVar[int]
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
+ workspace_name: str
+ description: str
+ def __init__(self, workspace_name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
+
+class DeleteWorkspace(_message.Message):
+ __slots__ = ("workspace_name",)
+ class Response(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ WORKSPACE_NAME_FIELD_NUMBER: _ClassVar[int]
+ workspace_name: str
+ def __init__(self, workspace_name: _Optional[str] = ...) -> None: ...
+
class MlflowService(_service.service): ...
class MlflowService_Stub(MlflowService): ...
diff --git a/mlflow/server/handlers.py b/mlflow/server/handlers.py
index e10184a49c510..b68f053fb117d 100644
--- a/mlflow/server/handlers.py
+++ b/mlflow/server/handlers.py
@@ -28,6 +28,7 @@
Param,
RunTag,
ViewType,
+ Workspace,
)
from mlflow.entities.logged_model import LoggedModel
from mlflow.entities.logged_model_input import LoggedModelInput
@@ -45,6 +46,7 @@
from mlflow.environment_variables import (
MLFLOW_CREATE_MODEL_VERSION_SOURCE_VALIDATION_REGEX,
MLFLOW_DEPLOYMENTS_TARGET,
+ MLFLOW_ENABLE_WORKSPACES,
)
from mlflow.exceptions import (
MlflowException,
@@ -57,6 +59,7 @@
from mlflow.protos import databricks_pb2
from mlflow.protos.databricks_pb2 import (
BAD_REQUEST,
+ FEATURE_DISABLED,
INVALID_PARAMETER_VALUE,
RESOURCE_DOES_NOT_EXIST,
)
@@ -105,6 +108,7 @@
CreateExperiment,
CreateLoggedModel,
CreateRun,
+ CreateWorkspace,
DeleteAssessment,
DeleteDataset,
DeleteDatasetTag,
@@ -119,6 +123,7 @@
DeleteTracesV3,
DeleteTraceTag,
DeleteTraceTagV3,
+ DeleteWorkspace,
EndTrace,
FinalizeLoggedModel,
GetAssessmentRequest,
@@ -135,11 +140,13 @@
GetTrace,
GetTraceInfo,
GetTraceInfoV3,
+ GetWorkspace,
LinkTracesToRun,
ListArtifacts,
ListLoggedModelArtifacts,
ListScorers,
ListScorerVersions,
+ ListWorkspaces,
LogBatch,
LogInputs,
LogLoggedModelParamsRequest,
@@ -170,6 +177,7 @@
UpdateAssessment,
UpdateExperiment,
UpdateRun,
+ UpdateWorkspace,
UpsertDatasetRecords,
)
from mlflow.protos.service_pb2 import Trace as ProtoTrace
@@ -183,6 +191,7 @@
WebhookService,
)
from mlflow.server.validation import _validate_content_type
+from mlflow.server.workspace_helpers import _get_workspace_store
from mlflow.store.artifact.artifact_repo import MultipartUploadMixin
from mlflow.store.artifact.artifact_repository_registry import get_artifact_repository
from mlflow.store.db.db_types import DATABASE_ENGINES
@@ -191,6 +200,7 @@
from mlflow.store.model_registry.rest_store import RestStore as ModelRegistryRestStore
from mlflow.store.tracking.abstract_store import AbstractStore as AbstractTrackingStore
from mlflow.store.tracking.databricks_rest_store import DatabricksTracingRestStore
+from mlflow.store.workspace.abstract_store import WorkspaceNameValidator
from mlflow.tracing.utils.artifact_utils import (
TRACE_DATA_FILE_NAME,
get_artifact_uri_for_trace,
@@ -779,6 +789,112 @@ def wrapper(*args, **kwargs):
return wrapper
+def _disable_if_workspaces_disabled(func):
+ @wraps(func)
+ def wrapper(*args, **kwargs):
+ if not MLFLOW_ENABLE_WORKSPACES.get():
+ return Response(
+ (
+ f"Endpoint: {request.url_rule} disabled because the server is running "
+ "without multi-tenancy support. To enable workspace functionality, run "
+ "`mlflow server` with `--enable-workspaces`"
+ ),
+ 503,
+ )
+ return func(*args, **kwargs)
+
+ return wrapper
+
+
+def _workspace_not_supported(message: str) -> MlflowException:
+ return MlflowException(message, FEATURE_DISABLED)
+
+
+@catch_mlflow_exception
+@_disable_if_workspaces_disabled
+def _list_workspaces_handler():
+ _get_request_message(ListWorkspaces())
+ workspaces = _get_workspace_store().list_workspaces()
+ response_message = ListWorkspaces.Response()
+ response_message.workspaces.extend([ws.to_proto() for ws in workspaces])
+ return _wrap_response(response_message)
+
+
+@catch_mlflow_exception
+@_disable_if_workspaces_disabled
+def _create_workspace_handler():
+ request_message = _get_request_message(
+ CreateWorkspace(),
+ schema={
+ "name": [_assert_required, _assert_string],
+ "description": [_assert_string],
+ },
+ )
+
+ WorkspaceNameValidator.validate(request_message.name)
+ description = request_message.description if request_message.HasField("description") else None
+ store = _get_workspace_store()
+ try:
+ workspace = store.create_workspace(
+ Workspace(name=request_message.name, description=description)
+ )
+ except NotImplementedError:
+ raise _workspace_not_supported("Workspace creation is not supported by this provider")
+
+ response_message = CreateWorkspace.Response()
+ response_message.workspace.MergeFrom(workspace.to_proto())
+ response = _wrap_response(response_message)
+ response.status_code = 201
+ return response
+
+
+@catch_mlflow_exception
+@_disable_if_workspaces_disabled
+def _get_workspace_handler(workspace_name: str):
+ WorkspaceNameValidator.validate(workspace_name)
+ workspace = _get_workspace_store().get_workspace(workspace_name)
+ response_message = GetWorkspace.Response()
+ response_message.workspace.MergeFrom(workspace.to_proto())
+ return _wrap_response(response_message)
+
+
+@catch_mlflow_exception
+@_disable_if_workspaces_disabled
+def _update_workspace_handler(workspace_name: str):
+ WorkspaceNameValidator.validate(workspace_name)
+ request_message = _get_request_message(
+ UpdateWorkspace(),
+ schema={"description": [_assert_string]},
+ )
+
+ if not request_message.HasField("description"):
+ raise MlflowException.invalid_parameter_value("Workspace update must have at least one key")
+
+ store = _get_workspace_store()
+ try:
+ workspace = store.update_workspace(
+ Workspace(name=workspace_name, description=request_message.description)
+ )
+ except NotImplementedError:
+ raise _workspace_not_supported("Workspace updates are not supported by this provider")
+
+ response_message = UpdateWorkspace.Response()
+ response_message.workspace.MergeFrom(workspace.to_proto())
+ return _wrap_response(response_message)
+
+
+@catch_mlflow_exception
+@_disable_if_workspaces_disabled
+def _delete_workspace_handler(workspace_name: str):
+ WorkspaceNameValidator.validate(workspace_name)
+ store = _get_workspace_store()
+ try:
+ store.delete_workspace(workspace_name)
+ except NotImplementedError:
+ raise _workspace_not_supported("Workspace deletion is not supported by this provider")
+ return Response(status=204)
+
+
@catch_mlflow_exception
def get_artifact_handler():
run_id = request.args.get("run_id") or request.args.get("run_uuid")
@@ -4170,4 +4286,10 @@ def _get_dataset_records_handler(dataset_id):
ListScorerVersions: _list_scorer_versions,
GetScorer: _get_scorer,
DeleteScorer: _delete_scorer,
+ # Workspace APIs
+ ListWorkspaces: _list_workspaces_handler,
+ CreateWorkspace: _create_workspace_handler,
+ GetWorkspace: _get_workspace_handler,
+ UpdateWorkspace: _update_workspace_handler,
+ DeleteWorkspace: _delete_workspace_handler,
}
diff --git a/mlflow/server/workspace_helpers.py b/mlflow/server/workspace_helpers.py
new file mode 100644
index 0000000000000..afc106640783a
--- /dev/null
+++ b/mlflow/server/workspace_helpers.py
@@ -0,0 +1,51 @@
+from __future__ import annotations
+
+import logging
+import os
+
+from mlflow.environment_variables import MLFLOW_ENABLE_WORKSPACES, MLFLOW_WORKSPACE_STORE_URI
+from mlflow.exceptions import MlflowException
+from mlflow.protos import databricks_pb2
+from mlflow.tracking._workspace import utils as workspace_utils
+from mlflow.tracking._workspace.registry import get_workspace_store
+
+_logger = logging.getLogger(__name__)
+
+_workspace_store = None
+
+
+def _get_workspace_store(workspace_uri: str | None = None, tracking_uri: str | None = None):
+ """
+ Resolve and cache the workspace store configured for this server process.
+
+ The store is constructed on first invocation using the provided arguments (or their
+ environment-derived defaults) and memoized for all subsequent calls, regardless of any new
+ ``workspace_uri`` / ``tracking_uri`` values supplied later.
+ """
+ if not MLFLOW_ENABLE_WORKSPACES.get():
+ raise MlflowException(
+ "Workspace APIs are not available: multi-tenancy is not enabled on this server",
+ databricks_pb2.FEATURE_DISABLED,
+ )
+
+ global _workspace_store
+ if _workspace_store is not None:
+ return _workspace_store
+
+ from mlflow.server import BACKEND_STORE_URI_ENV_VAR
+
+ resolved_tracking_uri = tracking_uri or os.environ.get(BACKEND_STORE_URI_ENV_VAR)
+ resolved_workspace_uri = workspace_utils.resolve_workspace_store_uri(
+ workspace_uri, tracking_uri=resolved_tracking_uri
+ )
+ if resolved_workspace_uri is None:
+ raise MlflowException.invalid_parameter_value(
+ "Workspace URI could not be resolved. Provide --workspace-store-uri or set "
+ f"{MLFLOW_WORKSPACE_STORE_URI.name}."
+ )
+
+ _workspace_store = get_workspace_store(workspace_uri=resolved_workspace_uri)
+ return _workspace_store
+
+
+__all__ = ["_get_workspace_store"]
diff --git a/mlflow/store/db/utils.py b/mlflow/store/db/utils.py
index 03c3eb7a75f62..653a728c00c36 100644
--- a/mlflow/store/db/utils.py
+++ b/mlflow/store/db/utils.py
@@ -65,6 +65,7 @@
SqlTraceMetadata,
SqlTraceTag,
)
+from mlflow.store.workspace.dbmodels.models import SqlWorkspace
_logger = logging.getLogger(__name__)
@@ -105,6 +106,7 @@ def _all_tables_exist(engine):
SqlScorer.__tablename__,
SqlScorerVersion.__tablename__,
SqlJob.__tablename__,
+ SqlWorkspace.__tablename__,
}
diff --git a/mlflow/store/workspace/__init__.py b/mlflow/store/workspace/__init__.py
index e69de29bb2d1d..bdd4a6a3a01eb 100644
--- a/mlflow/store/workspace/__init__.py
+++ b/mlflow/store/workspace/__init__.py
@@ -0,0 +1,11 @@
+"""Public workspace store facade and re-exports."""
+
+from mlflow.entities.workspace import Workspace
+from mlflow.store.workspace.abstract_store import AbstractStore
+from mlflow.store.workspace.rest_store import RestWorkspaceStore
+
+__all__ = [
+ "Workspace",
+ "AbstractStore",
+ "RestWorkspaceStore",
+]
diff --git a/mlflow/store/workspace/abstract_store.py b/mlflow/store/workspace/abstract_store.py
new file mode 100644
index 0000000000000..a67da6564295c
--- /dev/null
+++ b/mlflow/store/workspace/abstract_store.py
@@ -0,0 +1,117 @@
+from __future__ import annotations
+
+import re
+from abc import ABC, abstractmethod
+from typing import Iterable
+
+from mlflow.entities import Workspace
+from mlflow.exceptions import MlflowException
+from mlflow.utils.workspace_utils import DEFAULT_WORKSPACE_NAME
+
+
+# The workspace store can be backed by something other than the tracking store. For example,
+# Kubeflow integrations map MLflow workspaces onto Kubernetes namespaces and rely on a
+# workspace store plugin, so we keep this as a separate store rather than extending the
+# tracking store.
+class AbstractStore(ABC):
+ """Interface for resolving and managing workspaces in the tracking server."""
+
+ @abstractmethod
+ def list_workspaces(self) -> Iterable[Workspace]:
+ """
+ Return the workspaces visible to the current request context.
+
+ Implementations may inspect the request (e.g., for authN/Z context) to
+ determine which workspaces to expose.
+ """
+
+ @abstractmethod
+ def get_workspace(self, workspace_name: str) -> Workspace:
+ """
+ Gets a workspace by name and return its metadata.
+
+ Implementations should raise ``MlflowException`` with
+ ``RESOURCE_DOES_NOT_EXIST`` if the workspace cannot be found.
+ """
+
+ def create_workspace(self, workspace: Workspace) -> Workspace:
+ """Provision a new workspace.
+
+ Raises ``NotImplementedError`` when the active provider is read-only.
+ Implementations should raise ``MlflowException`` with
+ ``RESOURCE_ALREADY_EXISTS`` when the workspace already exists or
+ ``INVALID_PARAMETER_VALUE`` when validation fails.
+ """
+
+ raise NotImplementedError
+
+ def update_workspace(self, workspace: Workspace) -> Workspace:
+ """Update metadata for an existing workspace."""
+
+ raise NotImplementedError
+
+ def delete_workspace(self, workspace_name: str) -> None:
+ """Delete an existing workspace."""
+
+ raise NotImplementedError
+
+ def get_default_workspace(self) -> Workspace:
+ """
+ Return the workspace to select when none is explicitly supplied.
+
+ Implementations that require an explicit workspace should raise an
+ ``MlflowException`` with ``INVALID_PARAMETER_VALUE``.
+ """
+
+ raise NotImplementedError
+
+ def resolve_artifact_root(
+ self, default_artifact_root: str, workspace_name: str | None = None
+ ) -> tuple[str, bool]:
+ """
+ Allow a provider to customize artifact storage roots per workspace.
+
+ Returns:
+ A tuple ``(root, append_workspace_prefix)`` where ``root`` is the base artifact
+ location to use for the workspace, and ``append_workspace_prefix`` controls whether
+ MLflow should append the ``/workspaces/`` suffix automatically.
+ """
+
+ return default_artifact_root, True
+
+
+class WorkspaceNameValidator:
+ """Validator for workspace names based on Kubernetes naming conventions."""
+
+ _PATTERN = r"^[a-z0-9][-a-z0-9]*[a-z0-9]$"
+ _MIN_LENGTH = 2
+ _MAX_LENGTH = 63
+ _RESERVED = {DEFAULT_WORKSPACE_NAME, "workspaces", "api", "ajax-api", "static-files"}
+
+ @classmethod
+ def pattern(cls) -> str:
+ return cls._PATTERN
+
+ @classmethod
+ def validate(cls, name: str) -> None:
+ if not isinstance(name, str):
+ raise MlflowException.invalid_parameter_value(
+ f"Workspace name must be a string, got {type(name).__name__!s}."
+ )
+
+ if not (cls._MIN_LENGTH <= len(name) <= cls._MAX_LENGTH):
+ raise MlflowException.invalid_parameter_value(
+ f"Workspace name '{name}' must be between {cls._MIN_LENGTH} and "
+ f"{cls._MAX_LENGTH} characters."
+ )
+
+ if not re.match(cls._PATTERN, name):
+ raise MlflowException.invalid_parameter_value(
+ f"Workspace name '{name}' must match the pattern {cls.pattern()} "
+ "(lowercase alphanumeric with optional internal hyphens)."
+ )
+
+ if name in cls._RESERVED:
+ raise MlflowException.invalid_parameter_value(
+ f"Workspace name '{name}' is reserved and cannot be used."
+ )
diff --git a/mlflow/store/workspace/rest_store.py b/mlflow/store/workspace/rest_store.py
new file mode 100644
index 0000000000000..35f6b7beea0b8
--- /dev/null
+++ b/mlflow/store/workspace/rest_store.py
@@ -0,0 +1,111 @@
+from __future__ import annotations
+
+from urllib.parse import quote
+
+from mlflow.entities import Workspace
+from mlflow.exceptions import MlflowException, RestException
+from mlflow.protos.databricks_pb2 import INVALID_STATE, RESOURCE_ALREADY_EXISTS
+from mlflow.protos.service_pb2 import (
+ CreateWorkspace,
+ DeleteWorkspace,
+ GetWorkspace,
+ ListWorkspaces,
+ UpdateWorkspace,
+)
+from mlflow.store.workspace.abstract_store import AbstractStore, WorkspaceNameValidator
+from mlflow.utils.proto_json_utils import message_to_json
+from mlflow.utils.rest_utils import call_endpoint
+
+WORKSPACES_ENDPOINT = "/api/2.0/mlflow/workspaces"
+
+
+def _quote_workspace(workspace_name: str) -> str:
+ WorkspaceNameValidator.validate(workspace_name)
+ return quote(workspace_name, safe="")
+
+
+class RestWorkspaceStore(AbstractStore):
+ """REST-backed workspace store implementation."""
+
+ def __init__(self, get_host_creds):
+ self.get_host_creds = get_host_creds
+
+ def _workspace_from_proto(self, proto) -> Workspace:
+ if not proto.HasField("workspace"):
+ raise MlflowException(
+ "Workspace response payload was missing the 'workspace' field",
+ INVALID_STATE,
+ )
+ return Workspace.from_proto(proto.workspace)
+
+ def list_workspaces(self) -> list[Workspace]:
+ proto = call_endpoint(
+ host_creds=self.get_host_creds(),
+ endpoint=WORKSPACES_ENDPOINT,
+ method="GET",
+ json_body=None,
+ response_proto=ListWorkspaces.Response(),
+ )
+ return [Workspace.from_proto(ws) for ws in proto.workspaces]
+
+ def get_workspace(self, workspace_name: str) -> Workspace:
+ proto = call_endpoint(
+ host_creds=self.get_host_creds(),
+ endpoint=f"{WORKSPACES_ENDPOINT}/{_quote_workspace(workspace_name)}",
+ method="GET",
+ json_body=None,
+ response_proto=GetWorkspace.Response(),
+ )
+ return self._workspace_from_proto(proto)
+
+ def create_workspace(self, workspace: Workspace) -> Workspace:
+ WorkspaceNameValidator.validate(workspace.name)
+ request_message = CreateWorkspace(name=workspace.name)
+ if workspace.description is not None:
+ request_message.description = workspace.description
+ try:
+ proto = call_endpoint(
+ host_creds=self.get_host_creds(),
+ endpoint=WORKSPACES_ENDPOINT,
+ method="POST",
+ json_body=message_to_json(request_message),
+ response_proto=CreateWorkspace.Response(),
+ expected_status=201,
+ )
+ except RestException as exc:
+ if exc.error_code == "RESOURCE_ALREADY_EXISTS":
+ message = exc.message or f"Workspace '{workspace.name}' already exists."
+ raise MlflowException(message, RESOURCE_ALREADY_EXISTS) from exc
+ raise
+
+ return self._workspace_from_proto(proto)
+
+ def update_workspace(self, workspace: Workspace) -> Workspace:
+ request_message = UpdateWorkspace()
+ if workspace.description is not None:
+ request_message.description = workspace.description
+ proto = call_endpoint(
+ host_creds=self.get_host_creds(),
+ endpoint=f"{WORKSPACES_ENDPOINT}/{_quote_workspace(workspace.name)}",
+ method="PATCH",
+ json_body=message_to_json(request_message),
+ response_proto=UpdateWorkspace.Response(),
+ )
+ return self._workspace_from_proto(proto)
+
+ def delete_workspace(self, workspace_name: str) -> None:
+ call_endpoint(
+ host_creds=self.get_host_creds(),
+ endpoint=f"{WORKSPACES_ENDPOINT}/{_quote_workspace(workspace_name)}",
+ method="DELETE",
+ json_body=None,
+ response_proto=DeleteWorkspace.Response(),
+ expected_status=204,
+ )
+
+ def get_default_workspace(self) -> Workspace:
+ raise MlflowException.invalid_parameter_value(
+ "REST workspace provider does not expose a default workspace; "
+ "please specify a workspace explicitly or omit a workspace to leverage the server's "
+ "configured default."
+ )
diff --git a/mlflow/store/workspace/sqlalchemy_store.py b/mlflow/store/workspace/sqlalchemy_store.py
new file mode 100644
index 0000000000000..767ebc3665fee
--- /dev/null
+++ b/mlflow/store/workspace/sqlalchemy_store.py
@@ -0,0 +1,102 @@
+from __future__ import annotations
+
+import logging
+from typing import Iterable
+
+from sqlalchemy.exc import IntegrityError
+from sqlalchemy.orm import sessionmaker
+
+from mlflow.entities.workspace import Workspace
+from mlflow.exceptions import MlflowException
+from mlflow.protos.databricks_pb2 import (
+ INVALID_STATE,
+ RESOURCE_ALREADY_EXISTS,
+ RESOURCE_DOES_NOT_EXIST,
+)
+from mlflow.store.workspace.abstract_store import AbstractStore, WorkspaceNameValidator
+from mlflow.store.workspace.dbmodels import SqlWorkspace
+from mlflow.utils.uri import extract_db_type_from_uri
+from mlflow.utils.workspace_utils import DEFAULT_WORKSPACE_NAME
+
+_logger = logging.getLogger(__name__)
+
+
+class SqlAlchemyStore(AbstractStore):
+ """SQL-backed workspace store implementation."""
+
+ def __init__(self, db_uri: str):
+ from mlflow.store.db import utils as db_utils
+
+ self._workspace_uri = db_uri
+ self._db_type = extract_db_type_from_uri(db_uri)
+ self._engine = db_utils.create_sqlalchemy_engine_with_retry(db_uri)
+ db_utils._safe_initialize_tables(self._engine)
+ session_factory = sessionmaker(bind=self._engine)
+ self.ManagedSessionMaker = db_utils._get_managed_session_maker(
+ session_factory, self._db_type
+ )
+
+ def list_workspaces(self) -> Iterable[Workspace]:
+ with self.ManagedSessionMaker() as session:
+ rows = session.query(SqlWorkspace).order_by(SqlWorkspace.name.asc()).all()
+ return [row.to_mlflow_entity() for row in rows]
+
+ def get_workspace(self, workspace_name: str) -> Workspace:
+ with self.ManagedSessionMaker() as session:
+ workspace = self._get_workspace(session, workspace_name)
+ return workspace.to_mlflow_entity()
+
+ def create_workspace(self, workspace: Workspace) -> Workspace:
+ WorkspaceNameValidator.validate(workspace.name)
+ with self.ManagedSessionMaker() as session:
+ try:
+ entity = SqlWorkspace(name=workspace.name, description=workspace.description)
+ session.add(entity)
+ session.flush()
+ workspace_entity = entity.to_mlflow_entity()
+ except IntegrityError as exc:
+ raise MlflowException(
+ f"Workspace '{workspace.name}' already exists. Error: {exc}",
+ RESOURCE_ALREADY_EXISTS,
+ ) from exc
+
+ _logger.info("Created workspace '%s'", workspace.name)
+ return workspace_entity
+
+ def update_workspace(self, workspace: Workspace) -> Workspace:
+ with self.ManagedSessionMaker() as session:
+ entity = self._get_workspace(session, workspace.name)
+ entity.description = workspace.description
+ session.flush()
+
+ _logger.info("Updated workspace '%s'", workspace.name)
+ return entity.to_mlflow_entity()
+
+ def delete_workspace(self, workspace_name: str) -> None:
+ if workspace_name == DEFAULT_WORKSPACE_NAME:
+ raise MlflowException(
+ f"Cannot delete the reserved '{DEFAULT_WORKSPACE_NAME}' workspace",
+ INVALID_STATE,
+ )
+
+ with self.ManagedSessionMaker() as session:
+ entity = self._get_workspace(session, workspace_name)
+ session.delete(entity)
+ _logger.info("Deleted workspace '%s'", workspace_name)
+
+ def get_default_workspace(self) -> Workspace:
+ return self.get_workspace(DEFAULT_WORKSPACE_NAME)
+
+ def resolve_artifact_root(
+ self, default_artifact_root: str, workspace_name: str | None = None
+ ) -> tuple[str, bool]:
+ return default_artifact_root, True
+
+ def _get_workspace(self, session, workspace_name: str) -> SqlWorkspace:
+ workspace = session.get(SqlWorkspace, workspace_name)
+ if workspace is None:
+ raise MlflowException(
+ f"Workspace '{workspace_name}' not found",
+ RESOURCE_DOES_NOT_EXIST,
+ )
+ return workspace
diff --git a/mlflow/tracking/_workspace/__init__.py b/mlflow/tracking/_workspace/__init__.py
new file mode 100644
index 0000000000000..a61f03194c6bb
--- /dev/null
+++ b/mlflow/tracking/_workspace/__init__.py
@@ -0,0 +1,19 @@
+from mlflow.tracking._workspace.client import WorkspaceProviderClient
+from mlflow.tracking._workspace.registry import (
+ WorkspaceStoreRegistry,
+ get_workspace_store,
+)
+from mlflow.tracking._workspace.utils import (
+ get_workspace_store_uri,
+ resolve_workspace_store_uri,
+ set_workspace_store_uri,
+)
+
+__all__ = [
+ "WorkspaceProviderClient",
+ "WorkspaceStoreRegistry",
+ "get_workspace_store",
+ "set_workspace_store_uri",
+ "get_workspace_store_uri",
+ "resolve_workspace_store_uri",
+]
diff --git a/mlflow/tracking/_workspace/client.py b/mlflow/tracking/_workspace/client.py
new file mode 100644
index 0000000000000..4595aece2293f
--- /dev/null
+++ b/mlflow/tracking/_workspace/client.py
@@ -0,0 +1,41 @@
+from __future__ import annotations
+
+from mlflow.entities.workspace import Workspace
+from mlflow.tracking._workspace.registry import get_workspace_store
+
+
+class WorkspaceProviderClient:
+ """
+ Client that exposes workspace CRUD operations via the configured provider.
+
+ The provider is resolved based on the workspace URI scheme
+ (for example ``sqlite`` or ``mysql``).
+ This mirrors the scheme-based resolution used by tracking and model registry stores.
+ """
+
+ def __init__(self, workspace_uri: str):
+ self._workspace_uri = workspace_uri
+ self._store = None
+ # Eagerly validate configuration to surface errors early.
+ self.store
+
+ @property
+ def store(self):
+ if self._store is None:
+ self._store = get_workspace_store(workspace_uri=self._workspace_uri)
+ return self._store
+
+ def list_workspaces(self) -> list[Workspace]:
+ return list(self.store.list_workspaces())
+
+ def create_workspace(self, name: str, description: str | None = None) -> Workspace:
+ return self.store.create_workspace(Workspace(name=name, description=description))
+
+ def get_workspace(self, name: str) -> Workspace:
+ return self.store.get_workspace(name)
+
+ def update_workspace(self, name: str, description: str | None = None) -> Workspace:
+ return self.store.update_workspace(Workspace(name=name, description=description))
+
+ def delete_workspace(self, name: str) -> None:
+ self.store.delete_workspace(name)
diff --git a/mlflow/tracking/_workspace/registry.py b/mlflow/tracking/_workspace/registry.py
new file mode 100644
index 0000000000000..272a77b609e20
--- /dev/null
+++ b/mlflow/tracking/_workspace/registry.py
@@ -0,0 +1,112 @@
+from __future__ import annotations
+
+import threading
+import warnings
+from functools import lru_cache, partial
+
+from mlflow.exceptions import MlflowException
+from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
+from mlflow.store.db.db_types import DATABASE_ENGINES
+from mlflow.tracking.registry import StoreRegistry
+from mlflow.utils.credentials import get_default_host_creds
+from mlflow.utils.plugins import get_entry_points
+
+_WORKSPACE_PROVIDER_ENTRYPOINT_GROUP = "mlflow.workspace_provider"
+_building_workspace_store_lock = threading.RLock()
+
+
+class UnsupportedWorkspaceStoreURIException(MlflowException):
+ """Exception thrown when building a workspace store with an unsupported URI."""
+
+ def __init__(self, unsupported_uri, supported_uri_schemes):
+ message = (
+ "Workspace functionality is unavailable; got unsupported URI "
+ f"'{unsupported_uri}' for the workspace backend. Supported URI schemes are: "
+ f"{supported_uri_schemes}. See the workspace configuration guide for instructions."
+ )
+ super().__init__(message, error_code=INVALID_PARAMETER_VALUE)
+ self.supported_uri_schemes = supported_uri_schemes
+
+
+class WorkspaceStoreRegistry(StoreRegistry):
+ """Scheme-based registry for workspace store implementations."""
+
+ def __init__(self):
+ super().__init__(_WORKSPACE_PROVIDER_ENTRYPOINT_GROUP)
+
+ def register_entrypoints(self):
+ """Register workspace stores provided by other packages."""
+ for entrypoint in get_entry_points(self.group_name):
+ try:
+ self.register(entrypoint.name, entrypoint.load())
+ except (AttributeError, ImportError) as exc:
+ warnings.warn(
+ f"Failure attempting to register workspace provider '{entrypoint.name}': {exc}",
+ stacklevel=2,
+ )
+
+ def get_store(self, workspace_uri: str):
+ """Return a workspace store instance for the provided URI."""
+
+ return self._get_store_with_resolved_uri(workspace_uri)
+
+ @lru_cache(maxsize=100)
+ def _get_store_with_resolved_uri(self, workspace_uri: str):
+ with _building_workspace_store_lock:
+ try:
+ builder = self.get_store_builder(workspace_uri)
+ except MlflowException as exc:
+ raise UnsupportedWorkspaceStoreURIException(
+ unsupported_uri=workspace_uri,
+ supported_uri_schemes=list(self._registry.keys()),
+ ) from exc
+ return builder(workspace_uri=workspace_uri)
+
+
+_workspace_store_registry: WorkspaceStoreRegistry | None = None
+
+
+def _get_workspace_store_registry() -> WorkspaceStoreRegistry:
+ global _workspace_store_registry
+ if _workspace_store_registry is None:
+ with _building_workspace_store_lock:
+ # Double-check to avoid redundant initialization when multiple threads race.
+ if _workspace_store_registry is None:
+ registry = WorkspaceStoreRegistry()
+ _register_default_workspace_stores(registry)
+ registry.register_entrypoints()
+ _workspace_store_registry = registry
+ return _workspace_store_registry
+
+
+def _get_sqlalchemy_workspace_store(workspace_uri: str):
+ from mlflow.store.workspace.sqlalchemy_store import SqlAlchemyStore
+
+ return SqlAlchemyStore(workspace_uri)
+
+
+def _get_rest_workspace_store(workspace_uri: str):
+ from mlflow.store.workspace.rest_store import RestWorkspaceStore
+
+ return RestWorkspaceStore(partial(get_default_host_creds, workspace_uri))
+
+
+def _register_default_workspace_stores(registry: WorkspaceStoreRegistry) -> None:
+ # Register SQLAlchemy builder for common database schemes.
+ for scheme in DATABASE_ENGINES:
+ registry.register(scheme, _get_sqlalchemy_workspace_store)
+
+ # Register REST-based workspace stores.
+ for scheme in ["http", "https"]:
+ registry.register(scheme, _get_rest_workspace_store)
+
+
+def get_workspace_store(workspace_uri: str):
+ """
+ Return a workspace store for the specified workspace URI.
+
+ Args:
+ workspace_uri: Workspace backend URI.
+ """
+
+ return _get_workspace_store_registry().get_store(workspace_uri=workspace_uri)
diff --git a/mlflow/tracking/_workspace/utils.py b/mlflow/tracking/_workspace/utils.py
new file mode 100644
index 0000000000000..63a790cb64af0
--- /dev/null
+++ b/mlflow/tracking/_workspace/utils.py
@@ -0,0 +1,45 @@
+from __future__ import annotations
+
+from mlflow.environment_variables import MLFLOW_WORKSPACE_STORE_URI
+
+_workspace_store_uri: str | None = None
+
+
+def set_workspace_store_uri(uri: str | None) -> None:
+ """Set the global workspace provider URI override."""
+
+ global _workspace_store_uri
+ _workspace_store_uri = uri
+ if uri is None:
+ MLFLOW_WORKSPACE_STORE_URI.unset()
+ else:
+ MLFLOW_WORKSPACE_STORE_URI.set(uri)
+
+
+def get_workspace_store_uri() -> str | None:
+ """Get the current workspace provider URI, if any has been set."""
+ return _workspace_store_uri or MLFLOW_WORKSPACE_STORE_URI.get()
+
+
+def resolve_workspace_store_uri(
+ workspace_store_uri: str | None = None, tracking_uri: str | None = None
+) -> str | None:
+ """
+ Resolve the workspace provider URI with precedence:
+
+ 1. Explicit ``workspace_store_uri`` argument.
+ 2. Value configured via :func:`set_workspace_store_uri` or ``MLFLOW_WORKSPACE_STORE_URI``.
+ 3. The resolved tracking URI.
+ """
+
+ if workspace_store_uri is not None:
+ return workspace_store_uri
+
+ configured_uri = get_workspace_store_uri()
+ if configured_uri is not None:
+ return configured_uri
+
+ # Lazy import to avoid circular dependency during module import.
+ from mlflow.tracking._tracking_service import utils as tracking_utils
+
+ return tracking_utils._resolve_tracking_uri(tracking_uri)
diff --git a/mlflow/tracking/client.py b/mlflow/tracking/client.py
index 8a34c23cd7a9f..291ba46c71f75 100644
--- a/mlflow/tracking/client.py
+++ b/mlflow/tracking/client.py
@@ -42,6 +42,7 @@
SpanType,
Trace,
ViewType,
+ Workspace,
)
from mlflow.entities.model_registry import ModelVersion, Prompt, PromptVersion, RegisteredModel
from mlflow.entities.model_registry.model_version_stages import ALL_STAGES
@@ -106,6 +107,9 @@
from mlflow.tracking._model_registry.client import ModelRegistryClient
from mlflow.tracking._tracking_service import utils
from mlflow.tracking._tracking_service.client import TrackingServiceClient
+from mlflow.tracking._workspace import utils as workspace_utils
+from mlflow.tracking._workspace.client import WorkspaceProviderClient
+from mlflow.tracking._workspace.registry import UnsupportedWorkspaceStoreURIException
from mlflow.tracking.artifact_utils import _upload_artifacts_to_databricks
from mlflow.tracking.multimedia import Image, compress_image_size, convert_to_pil_image
from mlflow.tracking.registry import UnsupportedModelRegistryStoreURIException
@@ -197,12 +201,22 @@ def wrapper(self, *args, **kwargs):
class MlflowClient:
"""
Client of an MLflow Tracking Server that creates and manages experiments and runs, and of an
- MLflow Registry Server that creates and manages registered models and model versions. It's a
- thin wrapper around TrackingServiceClient and RegistryClient so there is a unified API but we
- can keep the implementation of the tracking and registry clients independent from each other.
+ MLflow Registry Server that creates and manages registered models and model versions. It also
+ exposes workspace CRUD via the configured workspace provider. It's a thin wrapper around:
+
+ - TrackingServiceClient for tracking operations
+ - WorkspaceProviderClient for workspace operations
+ - ModelRegistryClient for registry operations
+
+ This layered structure provides a unified API while preserving independent implementations.
"""
- def __init__(self, tracking_uri: str | None = None, registry_uri: str | None = None):
+ def __init__(
+ self,
+ tracking_uri: str | None = None,
+ registry_uri: str | None = None,
+ workspace_store_uri: str | None = None,
+ ):
"""
Args:
tracking_uri: Address of local or remote tracking server. If not provided, defaults
@@ -212,22 +226,38 @@ def __init__(self, tracking_uri: str | None = None, registry_uri: str | None = N
registry_uri: Address of local or remote model registry server. If not provided,
defaults to the service set by ``mlflow.tracking.set_registry_uri``. If
no such service was set, defaults to the tracking uri of the client.
+ workspace_store_uri: Address of the workspace provider backend. Defaults to the tracking
+ URI when unspecified, but can be pointed at a dedicated workspace store.
"""
final_tracking_uri = utils._resolve_tracking_uri(tracking_uri)
self._registry_uri = registry_utils._resolve_registry_uri(registry_uri, tracking_uri)
self._tracking_client = TrackingServiceClient(final_tracking_uri)
- self._tracing_client = TracingClient(tracking_uri)
+ self._workspace_store_uri = workspace_utils.resolve_workspace_store_uri(
+ workspace_store_uri, tracking_uri=final_tracking_uri
+ )
+ self._tracing_client = TracingClient(final_tracking_uri)
+ self._workspace_client = None
# `MlflowClient` also references a `ModelRegistryClient` instance that is provided by the
# `MlflowClient._get_registry_client()` method. This `ModelRegistryClient` is not explicitly
# defined as an instance variable in the `MlflowClient` constructor; an instance variable
# is assigned lazily by `MlflowClient._get_registry_client()` and should not be referenced
- # outside of the `MlflowClient._get_registry_client()` method
+ # outside of the `MlflowClient._get_registry_client()` method. The workspace provider client
+ # follows the same lazy initialization pattern and is only constructed on demand via
+ # `_get_workspace_client()`.
@property
def tracking_uri(self):
return self._tracking_client.tracking_uri
+ def get_workspace_store_uri(self) -> str:
+ """
+ Return the resolved workspace provider URI. This value is always non-null because
+ `resolve_workspace_store_uri()` falls back to the tracking URI when no workspace URI is
+ explicitly provided.
+ """
+ return self._workspace_store_uri
+
def _get_registry_client(self):
"""Attempts to create a ModelRegistryClient if one does not already exist.
@@ -265,6 +295,51 @@ def _get_registry_client(self):
# Tracking API
+ def _get_workspace_client(self) -> WorkspaceProviderClient:
+ """
+ Lazily construct and cache the WorkspaceProviderClient used for workspace operations.
+ """
+
+ if self._workspace_client is not None:
+ return self._workspace_client
+
+ try:
+ self._workspace_client = WorkspaceProviderClient(self._workspace_store_uri)
+ except UnsupportedWorkspaceStoreURIException as exc:
+ raise MlflowException(
+ "Workspace operations are not supported by the configured workspace URI "
+ f"'{self._workspace_store_uri}'. Stores with the following URI schemes are "
+ + f"supported: {exc.supported_uri_schemes}. Configure a supported workspace store "
+ + "to use workspace APIs.",
+ error_code=FEATURE_DISABLED,
+ ) from exc
+ return self._workspace_client
+
+ def list_workspaces(self) -> list[Workspace]:
+ """Return the list of workspaces available to the current user."""
+
+ return self._get_workspace_client().list_workspaces()
+
+ def create_workspace(self, name: str, description: str | None = None) -> Workspace:
+ """Create a new workspace."""
+
+ return self._get_workspace_client().create_workspace(name, description)
+
+ def get_workspace(self, name: str) -> Workspace:
+ """Return metadata for the specified workspace."""
+
+ return self._get_workspace_client().get_workspace(name)
+
+ def update_workspace(self, name: str, description: str | None = None) -> Workspace:
+ """Update metadata for an existing workspace."""
+
+ return self._get_workspace_client().update_workspace(name, description)
+
+ def delete_workspace(self, name: str) -> None:
+ """Delete an existing workspace."""
+
+ self._get_workspace_client().delete_workspace(name)
+
def get_run(self, run_id: str) -> Run:
"""
Fetch the run from backend store. The resulting :py:class:`Run `
diff --git a/mlflow/utils/rest_utils.py b/mlflow/utils/rest_utils.py
index 368143ad854a2..6aec63693efe8 100644
--- a/mlflow/utils/rest_utils.py
+++ b/mlflow/utils/rest_utils.py
@@ -301,7 +301,11 @@ def http_request_safe(host_creds, endpoint, method, **kwargs):
return verify_rest_response(response, endpoint)
-def verify_rest_response(response, endpoint):
+def verify_rest_response(
+ response,
+ endpoint,
+ expected_status: int = 200,
+):
"""Verify the return code and format, raise exception if the request was not successful."""
# Handle Armeria-specific response case where response text is "200 OK"
# v1/traces endpoint might return empty response
@@ -309,20 +313,24 @@ def verify_rest_response(response, endpoint):
response._content = b"{}" # Update response content to be an empty JSON dictionary
return response
- # Handle non-200 status codes
- if response.status_code != 200:
+ # Handle non-expected status codes
+ if response.status_code != expected_status:
if _can_parse_as_json_object(response.text):
raise RestException(json.loads(response.text))
else:
base_msg = (
f"API request to endpoint {endpoint} "
- f"failed with error code {response.status_code} != 200"
+ f"failed with error code {response.status_code} "
+ f"!= {expected_status}"
)
raise MlflowException(
f"{base_msg}. Response body: '{response.text}'",
error_code=get_error_code(response.status_code),
)
+ if response.status_code == 204:
+ return response
+
# Skip validation for endpoints (e.g. DBFS file-download API) which may return a non-JSON
# response
if endpoint.startswith(_REST_API_PATH_PREFIX) and not _can_parse_as_json_object(response.text):
@@ -573,6 +581,7 @@ def call_endpoint(
response_proto,
extra_headers=None,
retry_timeout_seconds=None,
+ expected_status: int = 200,
):
# Convert json string to json dictionary, to pass to requests
if json_body is not None:
@@ -593,7 +602,14 @@ def call_endpoint(
call_kwargs["json"] = json_body
response = http_request(**call_kwargs)
- response = verify_rest_response(response, endpoint)
+ response = verify_rest_response(
+ response,
+ endpoint,
+ expected_status=expected_status,
+ )
+ if response.status_code == 204:
+ return response_proto
+
response_to_parse = response.text
try:
js_dict = json.loads(response_to_parse)
diff --git a/mlflow/utils/workspace_utils.py b/mlflow/utils/workspace_utils.py
index 3d6a81d00cca6..4cd3ac6f69ffd 100644
--- a/mlflow/utils/workspace_utils.py
+++ b/mlflow/utils/workspace_utils.py
@@ -1,4 +1,4 @@
-"""Utility helpers for workspace-aware database schema defaults."""
+"""Workspace-related utility constants."""
DEFAULT_WORKSPACE_NAME = "default"
diff --git a/tests/server/test_workspace_endpoints.py b/tests/server/test_workspace_endpoints.py
new file mode 100644
index 0000000000000..e2143ef27e01c
--- /dev/null
+++ b/tests/server/test_workspace_endpoints.py
@@ -0,0 +1,101 @@
+from __future__ import annotations
+
+import json
+from unittest import mock
+
+import pytest
+from flask import Flask
+
+from mlflow.entities.workspace import Workspace
+from mlflow.server.handlers import get_endpoints
+
+
+@pytest.fixture(autouse=True)
+def enable_workspaces(monkeypatch):
+ monkeypatch.setenv("MLFLOW_ENABLE_WORKSPACES", "true")
+
+
+@pytest.fixture
+def app(monkeypatch):
+ flask_app = Flask(__name__)
+ for rule, view_func, methods in get_endpoints():
+ flask_app.add_url_rule(rule, view_func=view_func, methods=methods)
+ return flask_app
+
+
+@pytest.fixture
+def mock_workspace_store(monkeypatch):
+ store = mock.Mock()
+ monkeypatch.setattr(
+ "mlflow.server.handlers._get_workspace_store",
+ lambda *_, **__: store,
+ )
+ return store
+
+
+def _workspace_to_json(payload):
+ return json.loads(payload)
+
+
+def test_list_workspaces_endpoint(app, mock_workspace_store):
+ mock_workspace_store.list_workspaces.return_value = [
+ Workspace(name="default", description="Default"),
+ Workspace(name="team-a", description=None),
+ ]
+ with app.test_client() as client:
+ response = client.get("/api/2.0/mlflow/workspaces")
+
+ assert response.status_code == 200
+ payload = _workspace_to_json(response.get_data(True))
+ assert payload["workspaces"][0] == {"name": "default", "description": "Default"}
+ assert payload["workspaces"][1] == {"name": "team-a"}
+ mock_workspace_store.list_workspaces.assert_called_once_with()
+
+
+def test_create_workspace_endpoint(app, mock_workspace_store):
+ created = Workspace(name="team-b", description="Team B")
+ mock_workspace_store.create_workspace.return_value = created
+ with app.test_client() as client:
+ response = client.post(
+ "/api/2.0/mlflow/workspaces",
+ json={"name": "team-b", "description": "Team B"},
+ )
+
+ assert response.status_code == 201
+ payload = _workspace_to_json(response.get_data(True))
+ assert payload == {"workspace": created.to_dict()}
+ mock_workspace_store.create_workspace.assert_called_once()
+
+
+def test_get_workspace_endpoint(app, mock_workspace_store):
+ mock_workspace_store.get_workspace.return_value = Workspace(name="team-c", description="Team C")
+ with app.test_client() as client:
+ response = client.get("/api/2.0/mlflow/workspaces/team-c")
+
+ assert response.status_code == 200
+ payload = _workspace_to_json(response.get_data(True))
+ assert payload == {"workspace": {"name": "team-c", "description": "Team C"}}
+ mock_workspace_store.get_workspace.assert_called_once_with("team-c")
+
+
+def test_update_workspace_endpoint(app, mock_workspace_store):
+ updated = Workspace(name="team-d", description="Updated")
+ mock_workspace_store.update_workspace.return_value = updated
+ with app.test_client() as client:
+ response = client.patch(
+ "/api/2.0/mlflow/workspaces/team-d",
+ json={"description": "Updated"},
+ )
+
+ assert response.status_code == 200
+ payload = _workspace_to_json(response.get_data(True))
+ assert payload == {"workspace": updated.to_dict()}
+ mock_workspace_store.update_workspace.assert_called_once()
+
+
+def test_delete_workspace_endpoint(app, mock_workspace_store):
+ with app.test_client() as client:
+ response = client.delete("/api/2.0/mlflow/workspaces/team-e")
+
+ assert response.status_code == 204
+ mock_workspace_store.delete_workspace.assert_called_once_with("team-e")
diff --git a/tests/store/workspace/__init__.py b/tests/store/workspace/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/tests/store/workspace/test_rest_store.py b/tests/store/workspace/test_rest_store.py
new file mode 100644
index 0000000000000..81feb4624e9b7
--- /dev/null
+++ b/tests/store/workspace/test_rest_store.py
@@ -0,0 +1,167 @@
+from __future__ import annotations
+
+import json
+from types import SimpleNamespace
+from unittest import mock
+
+import pytest
+
+from mlflow.entities.workspace import Workspace
+from mlflow.exceptions import MlflowException, RestException
+from mlflow.protos.service_pb2 import (
+ CreateWorkspace,
+ DeleteWorkspace,
+ GetWorkspace,
+ ListWorkspaces,
+ UpdateWorkspace,
+)
+from mlflow.store.workspace.rest_store import WORKSPACES_ENDPOINT, RestWorkspaceStore
+
+
+@pytest.fixture
+def host_creds():
+ return SimpleNamespace()
+
+
+@pytest.fixture
+def store(host_creds):
+ return RestWorkspaceStore(lambda: host_creds)
+
+
+def test_list_workspaces_parses_response(store, host_creds):
+ response = ListWorkspaces.Response()
+ response.workspaces.add(name="default", description="Default workspace")
+ response.workspaces.add(name="team-a", description="Team A")
+ with mock.patch(
+ "mlflow.store.workspace.rest_store.call_endpoint", return_value=response
+ ) as call_endpoint:
+ workspaces = store.list_workspaces()
+
+ assert [ws.name for ws in workspaces] == ["default", "team-a"]
+ call_endpoint.assert_called_once()
+ kwargs = call_endpoint.call_args.kwargs
+ assert kwargs["host_creds"] is host_creds
+ assert kwargs["endpoint"] == WORKSPACES_ENDPOINT
+ assert kwargs["method"] == "GET"
+ assert kwargs["json_body"] is None
+ assert kwargs.get("expected_status", 200) == 200
+
+
+def test_get_workspace_returns_entity(store, host_creds):
+ response = GetWorkspace.Response()
+ response.workspace.name = "team-b"
+ response.workspace.description = "Team B"
+ with mock.patch(
+ "mlflow.store.workspace.rest_store.call_endpoint", return_value=response
+ ) as call_endpoint:
+ workspace = store.get_workspace("team-b")
+
+ assert workspace.name == "team-b"
+ assert workspace.description == "Team B"
+ call_endpoint.assert_called_once()
+ kwargs = call_endpoint.call_args.kwargs
+ assert kwargs["endpoint"] == f"{WORKSPACES_ENDPOINT}/team-b"
+ assert kwargs["method"] == "GET"
+
+
+def test_create_workspace_sends_payload(store, host_creds):
+ response = CreateWorkspace.Response()
+ response.workspace.name = "team-c"
+ response.workspace.description = "Team C"
+ with mock.patch(
+ "mlflow.store.workspace.rest_store.call_endpoint", return_value=response
+ ) as call_endpoint:
+ workspace = store.create_workspace(Workspace(name="team-c", description="Team C"))
+
+ assert workspace.name == "team-c"
+ assert workspace.description == "Team C"
+ call_endpoint.assert_called_once()
+ kwargs = call_endpoint.call_args.kwargs
+ assert kwargs["endpoint"] == WORKSPACES_ENDPOINT
+ assert kwargs["method"] == "POST"
+ assert kwargs["expected_status"] == 201
+ assert json.loads(kwargs["json_body"]) == {"name": "team-c", "description": "Team C"}
+
+
+def test_create_workspace_conflict_raises_resource_exists(store, monkeypatch):
+ exc = RestException({"error_code": "RESOURCE_ALREADY_EXISTS", "message": "already exists"})
+ monkeypatch.setattr(
+ "mlflow.store.workspace.rest_store.call_endpoint",
+ mock.Mock(side_effect=exc),
+ )
+
+ with pytest.raises(
+ MlflowException,
+ match="already exists",
+ ) as exc_info:
+ store.create_workspace(Workspace(name="team-a"))
+
+ assert exc_info.value.error_code == "RESOURCE_ALREADY_EXISTS"
+ assert "already exists" in exc_info.value.message
+
+
+def test_create_workspace_handles_400_resource_exists(store, monkeypatch):
+ exc = RestException({"error_code": "RESOURCE_ALREADY_EXISTS", "message": "already exists"})
+ monkeypatch.setattr(
+ "mlflow.store.workspace.rest_store.call_endpoint",
+ mock.Mock(side_effect=exc),
+ )
+
+ with pytest.raises(
+ MlflowException,
+ match="already exists",
+ ) as exc_info:
+ store.create_workspace(Workspace(name="team-a"))
+
+ assert exc_info.value.error_code == "RESOURCE_ALREADY_EXISTS"
+
+
+def test_update_workspace_returns_new_description(store, host_creds):
+ response = UpdateWorkspace.Response()
+ response.workspace.name = "team-e"
+ response.workspace.description = "updated"
+ with mock.patch(
+ "mlflow.store.workspace.rest_store.call_endpoint", return_value=response
+ ) as call_endpoint:
+ workspace = store.update_workspace(Workspace(name="team-e", description="updated"))
+
+ assert workspace.description == "updated"
+ call_endpoint.assert_called_once()
+ kwargs = call_endpoint.call_args.kwargs
+ assert kwargs["endpoint"] == f"{WORKSPACES_ENDPOINT}/team-e"
+ assert kwargs["method"] == "PATCH"
+ assert json.loads(kwargs["json_body"]) == {"description": "updated"}
+
+
+def test_delete_workspace_returns_on_success(store, host_creds):
+ response = DeleteWorkspace.Response()
+ with mock.patch(
+ "mlflow.store.workspace.rest_store.call_endpoint", return_value=response
+ ) as call_endpoint:
+ store.delete_workspace("team-f")
+
+ call_endpoint.assert_called_once()
+ kwargs = call_endpoint.call_args.kwargs
+ assert kwargs["endpoint"] == f"{WORKSPACES_ENDPOINT}/team-f"
+ assert kwargs["method"] == "DELETE"
+ assert kwargs["expected_status"] == 204
+ assert kwargs["json_body"] is None
+
+
+def test_get_default_workspace_not_supported(store):
+ with pytest.raises(
+ MlflowException,
+ match="REST workspace provider does not expose a default workspace",
+ ) as exc:
+ store.get_default_workspace()
+ assert exc.value.error_code == "INVALID_PARAMETER_VALUE"
+
+
+def test_rest_store_validates_workspace_names_before_http(monkeypatch, store):
+ mock_call = mock.Mock()
+ monkeypatch.setattr("mlflow.store.workspace.rest_store.call_endpoint", mock_call)
+
+ with pytest.raises(MlflowException, match="must match the pattern"):
+ store.get_workspace("Invalid")
+
+ mock_call.assert_not_called()
diff --git a/tests/store/workspace/test_sqlalchemy_store.py b/tests/store/workspace/test_sqlalchemy_store.py
new file mode 100644
index 0000000000000..1803cfaab58c7
--- /dev/null
+++ b/tests/store/workspace/test_sqlalchemy_store.py
@@ -0,0 +1,161 @@
+import pytest
+from sqlalchemy.exc import IntegrityError
+
+from mlflow.entities.workspace import Workspace
+from mlflow.exceptions import MlflowException
+from mlflow.store.workspace.dbmodels.models import SqlWorkspace
+from mlflow.store.workspace.sqlalchemy_store import SqlAlchemyStore
+from mlflow.utils.workspace_utils import DEFAULT_WORKSPACE_NAME
+
+
+@pytest.fixture
+def workspace_store(tmp_path, monkeypatch):
+ monkeypatch.setenv("MLFLOW_ENABLE_WORKSPACES", "true")
+
+ db_path = tmp_path / "workspace.sqlite"
+ uri = f"sqlite:///{db_path}"
+ store = SqlAlchemyStore(uri)
+
+ with store.ManagedSessionMaker() as session:
+ try:
+ session.add(
+ SqlWorkspace(
+ name=DEFAULT_WORKSPACE_NAME,
+ description="Default workspace",
+ )
+ )
+ session.commit()
+ except IntegrityError:
+ session.rollback()
+
+ try:
+ yield store
+ finally:
+ store._engine.dispose()
+
+
+def _workspace_rows(store):
+ with store.ManagedSessionMaker() as session:
+ return {
+ (row.name, row.description)
+ for row in session.query(SqlWorkspace).order_by(SqlWorkspace.name).all()
+ }
+
+
+def test_list_workspaces_returns_all(workspace_store):
+ workspace_store.create_workspace(Workspace(name="team-a", description="Team A"))
+ workspace_store.create_workspace(Workspace(name="team-b", description=None))
+
+ workspaces = workspace_store.list_workspaces()
+ rows = {(ws.name, ws.description) for ws in workspaces}
+ default_description = next(desc for name, desc in rows if name == DEFAULT_WORKSPACE_NAME)
+ assert rows == {
+ (DEFAULT_WORKSPACE_NAME, default_description),
+ ("team-a", "Team A"),
+ ("team-b", None),
+ }
+
+
+def test_get_workspace_success(workspace_store):
+ workspace_store.create_workspace(Workspace(name="team-a", description="Team A"))
+
+ workspace = workspace_store.get_workspace("team-a")
+ assert workspace.name == "team-a"
+ assert workspace.description == "Team A"
+
+
+def test_get_workspace_not_found(workspace_store):
+ with pytest.raises(MlflowException, match="Workspace 'unknown' not found") as exc:
+ workspace_store.get_workspace("unknown")
+ assert exc.value.error_code == "RESOURCE_DOES_NOT_EXIST"
+
+
+def test_create_workspace_persists_record(workspace_store):
+ created = workspace_store.create_workspace(
+ Workspace(name="team-a", description="Team A"),
+ )
+ assert created.name == "team-a"
+ assert created.description == "Team A"
+ assert ("team-a", "Team A") in _workspace_rows(workspace_store)
+
+
+def test_create_workspace_duplicate_raises(workspace_store):
+ workspace_store.create_workspace(Workspace(name="team-a", description=None))
+
+ with pytest.raises(
+ MlflowException,
+ match="Workspace 'team-a' already exists\\.",
+ ) as exc:
+ workspace_store.create_workspace(Workspace(name="team-a", description=None))
+ assert exc.value.error_code == "RESOURCE_ALREADY_EXISTS"
+
+
+def test_create_workspace_invalid_name_raises(workspace_store):
+ with pytest.raises(
+ MlflowException,
+ match="Workspace name 'Team-A' must match the pattern",
+ ) as exc:
+ workspace_store.create_workspace(Workspace(name="Team-A", description=None))
+ assert exc.value.error_code == "INVALID_PARAMETER_VALUE"
+
+
+def test_update_workspace_changes_description(workspace_store):
+ workspace_store.create_workspace(Workspace(name="team-a", description="old"))
+
+ updated = workspace_store.update_workspace(
+ Workspace(name="team-a", description="new description"),
+ )
+ assert updated.description == "new description"
+ assert ("team-a", "new description") in _workspace_rows(workspace_store)
+
+
+def test_delete_workspace_removes_empty_workspace(workspace_store):
+ workspace_store.create_workspace(Workspace(name="team-a", description=None))
+
+ workspace_store.delete_workspace("team-a")
+ rows = _workspace_rows(workspace_store)
+ assert ("team-a", None) not in rows
+ default_ws = workspace_store.get_default_workspace()
+ assert (DEFAULT_WORKSPACE_NAME, default_ws.description) in rows
+
+
+def test_delete_default_workspace_rejected(workspace_store):
+ with pytest.raises(
+ MlflowException,
+ match=f"Cannot delete the reserved '{DEFAULT_WORKSPACE_NAME}' workspace",
+ ) as exc:
+ workspace_store.delete_workspace(DEFAULT_WORKSPACE_NAME)
+ assert exc.value.error_code == "INVALID_STATE"
+
+
+def test_update_workspace_not_found(workspace_store):
+ with pytest.raises(
+ MlflowException,
+ match="Workspace 'unknown' not found",
+ ) as exc:
+ workspace_store.update_workspace(Workspace(name="unknown", description="new description"))
+ assert exc.value.error_code == "RESOURCE_DOES_NOT_EXIST"
+
+
+def test_delete_workspace_not_found(workspace_store):
+ with pytest.raises(
+ MlflowException,
+ match="Workspace 'unknown' not found",
+ ) as exc:
+ workspace_store.delete_workspace("unknown")
+ assert exc.value.error_code == "RESOURCE_DOES_NOT_EXIST"
+
+
+def test_resolve_artifact_root_returns_default(workspace_store):
+ default_root = "/default/path"
+ assert workspace_store.resolve_artifact_root(default_root) == (default_root, True)
+ assert workspace_store.resolve_artifact_root(default_root, workspace_name="team-a") == (
+ default_root,
+ True,
+ )
+
+
+def test_get_default_workspace_returns_default(workspace_store):
+ default_ws = workspace_store.get_default_workspace()
+ assert default_ws.name == DEFAULT_WORKSPACE_NAME
+ assert default_ws.description is not None
diff --git a/tests/store/workspace/test_workspace_validator.py b/tests/store/workspace/test_workspace_validator.py
new file mode 100644
index 0000000000000..9ff9173711f8b
--- /dev/null
+++ b/tests/store/workspace/test_workspace_validator.py
@@ -0,0 +1,38 @@
+import pytest
+
+from mlflow.exceptions import MlflowException
+from mlflow.store.workspace.abstract_store import WorkspaceNameValidator
+
+
+@pytest.mark.parametrize(
+ "name",
+ [
+ "team-a",
+ "ab",
+ "a" * 63,
+ "123",
+ "a1-b2",
+ ],
+)
+def test_workspace_name_validator_accepts_valid_names(name):
+ WorkspaceNameValidator.validate(name)
+
+
+@pytest.mark.parametrize(
+ ("name", "error_fragment"),
+ [
+ (123, "must be a string"),
+ ("t", "must be between"),
+ ("a" * 64, "must be between"),
+ ("a" * 256, "must be between"),
+ ("Team-A", "must match the pattern"),
+ ("team_a", "must match the pattern"),
+ ("-team", "must match the pattern"),
+ ("team-", "must match the pattern"),
+ ("default", "is reserved"),
+ ("workspaces", "is reserved"),
+ ],
+)
+def test_workspace_name_validator_validate_raises(name, error_fragment):
+ with pytest.raises(MlflowException, match=error_fragment):
+ WorkspaceNameValidator.validate(name)
diff --git a/tests/tracking/test_client_workspace.py b/tests/tracking/test_client_workspace.py
new file mode 100644
index 0000000000000..9bac4db047af3
--- /dev/null
+++ b/tests/tracking/test_client_workspace.py
@@ -0,0 +1,52 @@
+from __future__ import annotations
+
+from mlflow import MlflowClient
+from mlflow.environment_variables import MLFLOW_TRACKING_URI, MLFLOW_WORKSPACE_STORE_URI
+
+
+def test_mlflow_client_resolves_workspace_uri(monkeypatch):
+ recorded: dict[str, str | None] = {}
+
+ class DummyTrackingClient:
+ def __init__(self, tracking_uri: str):
+ recorded["tracking_uri"] = tracking_uri
+ self.tracking_uri = tracking_uri
+
+ class DummyWorkspaceClient:
+ def __init__(self, workspace_uri: str | None = None):
+ recorded["workspace_uri"] = workspace_uri
+
+ # Methods invoked downstream are irrelevant for this initialization test.
+ def list_workspaces(self):
+ return []
+
+ monkeypatch.setattr("mlflow.tracking.client.TrackingServiceClient", DummyTrackingClient)
+ monkeypatch.setattr("mlflow.tracking.client.TracingClient", lambda _: None)
+ monkeypatch.setattr("mlflow.tracking.client.WorkspaceProviderClient", DummyWorkspaceClient)
+ monkeypatch.setattr(
+ "mlflow.tracking.client.utils._resolve_tracking_uri",
+ lambda uri: uri or "sqlite:///tracking.db",
+ )
+ monkeypatch.setattr(
+ "mlflow.tracking.client.registry_utils._resolve_registry_uri",
+ lambda registry_uri, tracking_uri: "registry-resolved",
+ )
+
+ monkeypatch.setenv(MLFLOW_TRACKING_URI.name, "sqlite:///tracking.db")
+ monkeypatch.setenv(MLFLOW_WORKSPACE_STORE_URI.name, "sqlite:///workspace.db")
+
+ client = MlflowClient()
+ client.list_workspaces()
+ assert recorded["workspace_uri"] == "sqlite:///workspace.db"
+
+ recorded.clear()
+ client = MlflowClient(workspace_store_uri="sqlite:///explicit.db")
+ client.list_workspaces()
+ assert recorded["workspace_uri"] == "sqlite:///explicit.db"
+
+ recorded.clear()
+ monkeypatch.delenv(MLFLOW_WORKSPACE_STORE_URI.name, raising=False)
+ client = MlflowClient()
+ client.list_workspaces()
+ # Falls back to the tracking URI when workspace URI is unset.
+ assert recorded["workspace_uri"] == "sqlite:///tracking.db"
diff --git a/tests/tracking/test_workspace_registry.py b/tests/tracking/test_workspace_registry.py
new file mode 100644
index 0000000000000..ff7d604f7c7d5
--- /dev/null
+++ b/tests/tracking/test_workspace_registry.py
@@ -0,0 +1,40 @@
+from __future__ import annotations
+
+import pytest
+
+from mlflow.store.workspace.rest_store import RestWorkspaceStore
+from mlflow.store.workspace.sqlalchemy_store import SqlAlchemyStore
+from mlflow.tracking._workspace.registry import (
+ UnsupportedWorkspaceStoreURIException,
+ _get_workspace_store_registry,
+ get_workspace_store,
+)
+
+
+@pytest.fixture(autouse=True)
+def _clear_workspace_store_cache():
+ registry = _get_workspace_store_registry()
+ registry._get_store_with_resolved_uri.cache_clear()
+ yield
+ registry._get_store_with_resolved_uri.cache_clear()
+
+
+def test_get_workspace_store_resolves_sqlalchemy(tmp_path):
+ workspace_uri = f"sqlite:///{tmp_path / 'workspace.db'}"
+ store = get_workspace_store(workspace_uri=workspace_uri)
+ assert isinstance(store, SqlAlchemyStore)
+ assert store._workspace_uri == workspace_uri
+ store._engine.dispose()
+
+
+def test_get_workspace_store_resolves_rest():
+ store = get_workspace_store(workspace_uri="http://example.com")
+ assert isinstance(store, RestWorkspaceStore)
+
+
+def test_get_workspace_store_unsupported_scheme():
+ with pytest.raises(
+ UnsupportedWorkspaceStoreURIException,
+ match="got unsupported URI 'foo://workspace'",
+ ):
+ get_workspace_store(workspace_uri="foo://workspace")
diff --git a/tests/tracking/test_workspace_utils.py b/tests/tracking/test_workspace_utils.py
new file mode 100644
index 0000000000000..76756698aedda
--- /dev/null
+++ b/tests/tracking/test_workspace_utils.py
@@ -0,0 +1,40 @@
+import pytest
+
+from mlflow.environment_variables import MLFLOW_TRACKING_URI, MLFLOW_WORKSPACE_STORE_URI
+from mlflow.tracking._workspace import utils as workspace_utils
+
+
+@pytest.fixture(autouse=True)
+def _reset_workspace_uri(monkeypatch):
+ workspace_utils.set_workspace_store_uri(None)
+ monkeypatch.delenv(MLFLOW_WORKSPACE_STORE_URI.name, raising=False)
+ monkeypatch.delenv(MLFLOW_TRACKING_URI.name, raising=False)
+ yield
+ workspace_utils.set_workspace_store_uri(None)
+ monkeypatch.delenv(MLFLOW_WORKSPACE_STORE_URI.name, raising=False)
+ monkeypatch.delenv(MLFLOW_TRACKING_URI.name, raising=False)
+
+
+def test_resolve_workspace_uri_prefers_explicit_argument(monkeypatch):
+ monkeypatch.setenv(MLFLOW_WORKSPACE_STORE_URI.name, "sqlite:///env-workspaces.db")
+ result = workspace_utils.resolve_workspace_store_uri("sqlite:///explicit.db")
+ assert result == "sqlite:///explicit.db"
+
+
+def test_resolve_workspace_uri_uses_configured_value(monkeypatch):
+ workspace_utils.set_workspace_store_uri("sqlite:///configured.db")
+ result = workspace_utils.resolve_workspace_store_uri(tracking_uri="sqlite:///tracking.db")
+ assert result == "sqlite:///configured.db"
+
+
+def test_resolve_workspace_uri_uses_environment(monkeypatch):
+ monkeypatch.setenv(MLFLOW_WORKSPACE_STORE_URI.name, "sqlite:///env.db")
+ result = workspace_utils.resolve_workspace_store_uri(tracking_uri="file:///mlruns")
+ assert result == "sqlite:///env.db"
+
+
+def test_resolve_workspace_uri_defaults_to_tracking(monkeypatch):
+ result = workspace_utils.resolve_workspace_store_uri(
+ tracking_uri="sqlite:///tracking-default.db"
+ )
+ assert result == "sqlite:///tracking-default.db"