genesis-flow 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- genesis_flow-1.0.0.dist-info/METADATA +822 -0
- genesis_flow-1.0.0.dist-info/RECORD +645 -0
- genesis_flow-1.0.0.dist-info/WHEEL +5 -0
- genesis_flow-1.0.0.dist-info/entry_points.txt +19 -0
- genesis_flow-1.0.0.dist-info/licenses/LICENSE.txt +202 -0
- genesis_flow-1.0.0.dist-info/top_level.txt +1 -0
- mlflow/__init__.py +367 -0
- mlflow/__main__.py +3 -0
- mlflow/ag2/__init__.py +56 -0
- mlflow/ag2/ag2_logger.py +294 -0
- mlflow/anthropic/__init__.py +40 -0
- mlflow/anthropic/autolog.py +129 -0
- mlflow/anthropic/chat.py +144 -0
- mlflow/artifacts/__init__.py +268 -0
- mlflow/autogen/__init__.py +144 -0
- mlflow/autogen/chat.py +142 -0
- mlflow/azure/__init__.py +26 -0
- mlflow/azure/auth_handler.py +257 -0
- mlflow/azure/client.py +319 -0
- mlflow/azure/config.py +120 -0
- mlflow/azure/connection_factory.py +340 -0
- mlflow/azure/exceptions.py +27 -0
- mlflow/azure/stores.py +327 -0
- mlflow/azure/utils.py +183 -0
- mlflow/bedrock/__init__.py +45 -0
- mlflow/bedrock/_autolog.py +202 -0
- mlflow/bedrock/chat.py +122 -0
- mlflow/bedrock/stream.py +160 -0
- mlflow/bedrock/utils.py +43 -0
- mlflow/cli.py +707 -0
- mlflow/client.py +12 -0
- mlflow/config/__init__.py +56 -0
- mlflow/crewai/__init__.py +79 -0
- mlflow/crewai/autolog.py +253 -0
- mlflow/crewai/chat.py +29 -0
- mlflow/data/__init__.py +75 -0
- mlflow/data/artifact_dataset_sources.py +170 -0
- mlflow/data/code_dataset_source.py +40 -0
- mlflow/data/dataset.py +123 -0
- mlflow/data/dataset_registry.py +168 -0
- mlflow/data/dataset_source.py +110 -0
- mlflow/data/dataset_source_registry.py +219 -0
- mlflow/data/delta_dataset_source.py +167 -0
- mlflow/data/digest_utils.py +108 -0
- mlflow/data/evaluation_dataset.py +562 -0
- mlflow/data/filesystem_dataset_source.py +81 -0
- mlflow/data/http_dataset_source.py +145 -0
- mlflow/data/huggingface_dataset.py +258 -0
- mlflow/data/huggingface_dataset_source.py +118 -0
- mlflow/data/meta_dataset.py +104 -0
- mlflow/data/numpy_dataset.py +223 -0
- mlflow/data/pandas_dataset.py +231 -0
- mlflow/data/polars_dataset.py +352 -0
- mlflow/data/pyfunc_dataset_mixin.py +31 -0
- mlflow/data/schema.py +76 -0
- mlflow/data/sources.py +1 -0
- mlflow/data/spark_dataset.py +406 -0
- mlflow/data/spark_dataset_source.py +74 -0
- mlflow/data/spark_delta_utils.py +118 -0
- mlflow/data/tensorflow_dataset.py +350 -0
- mlflow/data/uc_volume_dataset_source.py +81 -0
- mlflow/db.py +27 -0
- mlflow/dspy/__init__.py +17 -0
- mlflow/dspy/autolog.py +197 -0
- mlflow/dspy/callback.py +398 -0
- mlflow/dspy/constant.py +1 -0
- mlflow/dspy/load.py +93 -0
- mlflow/dspy/save.py +393 -0
- mlflow/dspy/util.py +109 -0
- mlflow/dspy/wrapper.py +226 -0
- mlflow/entities/__init__.py +104 -0
- mlflow/entities/_mlflow_object.py +52 -0
- mlflow/entities/assessment.py +545 -0
- mlflow/entities/assessment_error.py +80 -0
- mlflow/entities/assessment_source.py +141 -0
- mlflow/entities/dataset.py +92 -0
- mlflow/entities/dataset_input.py +51 -0
- mlflow/entities/dataset_summary.py +62 -0
- mlflow/entities/document.py +48 -0
- mlflow/entities/experiment.py +109 -0
- mlflow/entities/experiment_tag.py +35 -0
- mlflow/entities/file_info.py +45 -0
- mlflow/entities/input_tag.py +35 -0
- mlflow/entities/lifecycle_stage.py +35 -0
- mlflow/entities/logged_model.py +228 -0
- mlflow/entities/logged_model_input.py +26 -0
- mlflow/entities/logged_model_output.py +32 -0
- mlflow/entities/logged_model_parameter.py +46 -0
- mlflow/entities/logged_model_status.py +74 -0
- mlflow/entities/logged_model_tag.py +33 -0
- mlflow/entities/metric.py +200 -0
- mlflow/entities/model_registry/__init__.py +29 -0
- mlflow/entities/model_registry/_model_registry_entity.py +13 -0
- mlflow/entities/model_registry/model_version.py +243 -0
- mlflow/entities/model_registry/model_version_deployment_job_run_state.py +44 -0
- mlflow/entities/model_registry/model_version_deployment_job_state.py +70 -0
- mlflow/entities/model_registry/model_version_search.py +25 -0
- mlflow/entities/model_registry/model_version_stages.py +25 -0
- mlflow/entities/model_registry/model_version_status.py +35 -0
- mlflow/entities/model_registry/model_version_tag.py +35 -0
- mlflow/entities/model_registry/prompt.py +73 -0
- mlflow/entities/model_registry/prompt_version.py +244 -0
- mlflow/entities/model_registry/registered_model.py +175 -0
- mlflow/entities/model_registry/registered_model_alias.py +35 -0
- mlflow/entities/model_registry/registered_model_deployment_job_state.py +39 -0
- mlflow/entities/model_registry/registered_model_search.py +25 -0
- mlflow/entities/model_registry/registered_model_tag.py +35 -0
- mlflow/entities/multipart_upload.py +74 -0
- mlflow/entities/param.py +49 -0
- mlflow/entities/run.py +97 -0
- mlflow/entities/run_data.py +84 -0
- mlflow/entities/run_info.py +188 -0
- mlflow/entities/run_inputs.py +59 -0
- mlflow/entities/run_outputs.py +43 -0
- mlflow/entities/run_status.py +41 -0
- mlflow/entities/run_tag.py +36 -0
- mlflow/entities/source_type.py +31 -0
- mlflow/entities/span.py +774 -0
- mlflow/entities/span_event.py +96 -0
- mlflow/entities/span_status.py +102 -0
- mlflow/entities/trace.py +317 -0
- mlflow/entities/trace_data.py +71 -0
- mlflow/entities/trace_info.py +220 -0
- mlflow/entities/trace_info_v2.py +162 -0
- mlflow/entities/trace_location.py +173 -0
- mlflow/entities/trace_state.py +39 -0
- mlflow/entities/trace_status.py +68 -0
- mlflow/entities/view_type.py +51 -0
- mlflow/environment_variables.py +866 -0
- mlflow/evaluation/__init__.py +16 -0
- mlflow/evaluation/assessment.py +369 -0
- mlflow/evaluation/evaluation.py +411 -0
- mlflow/evaluation/evaluation_tag.py +61 -0
- mlflow/evaluation/fluent.py +48 -0
- mlflow/evaluation/utils.py +201 -0
- mlflow/exceptions.py +213 -0
- mlflow/experiments.py +140 -0
- mlflow/gemini/__init__.py +81 -0
- mlflow/gemini/autolog.py +186 -0
- mlflow/gemini/chat.py +261 -0
- mlflow/genai/__init__.py +71 -0
- mlflow/genai/datasets/__init__.py +67 -0
- mlflow/genai/datasets/evaluation_dataset.py +131 -0
- mlflow/genai/evaluation/__init__.py +3 -0
- mlflow/genai/evaluation/base.py +411 -0
- mlflow/genai/evaluation/constant.py +23 -0
- mlflow/genai/evaluation/utils.py +244 -0
- mlflow/genai/judges/__init__.py +21 -0
- mlflow/genai/judges/databricks.py +404 -0
- mlflow/genai/label_schemas/__init__.py +153 -0
- mlflow/genai/label_schemas/label_schemas.py +209 -0
- mlflow/genai/labeling/__init__.py +159 -0
- mlflow/genai/labeling/labeling.py +250 -0
- mlflow/genai/optimize/__init__.py +13 -0
- mlflow/genai/optimize/base.py +198 -0
- mlflow/genai/optimize/optimizers/__init__.py +4 -0
- mlflow/genai/optimize/optimizers/base_optimizer.py +38 -0
- mlflow/genai/optimize/optimizers/dspy_mipro_optimizer.py +221 -0
- mlflow/genai/optimize/optimizers/dspy_optimizer.py +91 -0
- mlflow/genai/optimize/optimizers/utils/dspy_mipro_callback.py +76 -0
- mlflow/genai/optimize/optimizers/utils/dspy_mipro_utils.py +18 -0
- mlflow/genai/optimize/types.py +75 -0
- mlflow/genai/optimize/util.py +30 -0
- mlflow/genai/prompts/__init__.py +206 -0
- mlflow/genai/scheduled_scorers.py +431 -0
- mlflow/genai/scorers/__init__.py +26 -0
- mlflow/genai/scorers/base.py +492 -0
- mlflow/genai/scorers/builtin_scorers.py +765 -0
- mlflow/genai/scorers/scorer_utils.py +138 -0
- mlflow/genai/scorers/validation.py +165 -0
- mlflow/genai/utils/data_validation.py +146 -0
- mlflow/genai/utils/enum_utils.py +23 -0
- mlflow/genai/utils/trace_utils.py +211 -0
- mlflow/groq/__init__.py +42 -0
- mlflow/groq/_groq_autolog.py +74 -0
- mlflow/johnsnowlabs/__init__.py +888 -0
- mlflow/langchain/__init__.py +24 -0
- mlflow/langchain/api_request_parallel_processor.py +330 -0
- mlflow/langchain/autolog.py +147 -0
- mlflow/langchain/chat_agent_langgraph.py +340 -0
- mlflow/langchain/constant.py +1 -0
- mlflow/langchain/constants.py +1 -0
- mlflow/langchain/databricks_dependencies.py +444 -0
- mlflow/langchain/langchain_tracer.py +597 -0
- mlflow/langchain/model.py +919 -0
- mlflow/langchain/output_parsers.py +142 -0
- mlflow/langchain/retriever_chain.py +153 -0
- mlflow/langchain/runnables.py +527 -0
- mlflow/langchain/utils/chat.py +402 -0
- mlflow/langchain/utils/logging.py +671 -0
- mlflow/langchain/utils/serialization.py +36 -0
- mlflow/legacy_databricks_cli/__init__.py +0 -0
- mlflow/legacy_databricks_cli/configure/__init__.py +0 -0
- mlflow/legacy_databricks_cli/configure/provider.py +482 -0
- mlflow/litellm/__init__.py +175 -0
- mlflow/llama_index/__init__.py +22 -0
- mlflow/llama_index/autolog.py +55 -0
- mlflow/llama_index/chat.py +43 -0
- mlflow/llama_index/constant.py +1 -0
- mlflow/llama_index/model.py +577 -0
- mlflow/llama_index/pyfunc_wrapper.py +332 -0
- mlflow/llama_index/serialize_objects.py +188 -0
- mlflow/llama_index/tracer.py +561 -0
- mlflow/metrics/__init__.py +479 -0
- mlflow/metrics/base.py +39 -0
- mlflow/metrics/genai/__init__.py +25 -0
- mlflow/metrics/genai/base.py +101 -0
- mlflow/metrics/genai/genai_metric.py +771 -0
- mlflow/metrics/genai/metric_definitions.py +450 -0
- mlflow/metrics/genai/model_utils.py +371 -0
- mlflow/metrics/genai/prompt_template.py +68 -0
- mlflow/metrics/genai/prompts/__init__.py +0 -0
- mlflow/metrics/genai/prompts/v1.py +422 -0
- mlflow/metrics/genai/utils.py +6 -0
- mlflow/metrics/metric_definitions.py +619 -0
- mlflow/mismatch.py +34 -0
- mlflow/mistral/__init__.py +34 -0
- mlflow/mistral/autolog.py +71 -0
- mlflow/mistral/chat.py +135 -0
- mlflow/ml_package_versions.py +452 -0
- mlflow/models/__init__.py +97 -0
- mlflow/models/auth_policy.py +83 -0
- mlflow/models/cli.py +354 -0
- mlflow/models/container/__init__.py +294 -0
- mlflow/models/container/scoring_server/__init__.py +0 -0
- mlflow/models/container/scoring_server/nginx.conf +39 -0
- mlflow/models/dependencies_schemas.py +287 -0
- mlflow/models/display_utils.py +158 -0
- mlflow/models/docker_utils.py +211 -0
- mlflow/models/evaluation/__init__.py +23 -0
- mlflow/models/evaluation/_shap_patch.py +64 -0
- mlflow/models/evaluation/artifacts.py +194 -0
- mlflow/models/evaluation/base.py +1811 -0
- mlflow/models/evaluation/calibration_curve.py +109 -0
- mlflow/models/evaluation/default_evaluator.py +996 -0
- mlflow/models/evaluation/deprecated.py +23 -0
- mlflow/models/evaluation/evaluator_registry.py +80 -0
- mlflow/models/evaluation/evaluators/classifier.py +704 -0
- mlflow/models/evaluation/evaluators/default.py +233 -0
- mlflow/models/evaluation/evaluators/regressor.py +96 -0
- mlflow/models/evaluation/evaluators/shap.py +296 -0
- mlflow/models/evaluation/lift_curve.py +178 -0
- mlflow/models/evaluation/utils/metric.py +123 -0
- mlflow/models/evaluation/utils/trace.py +179 -0
- mlflow/models/evaluation/validation.py +434 -0
- mlflow/models/flavor_backend.py +93 -0
- mlflow/models/flavor_backend_registry.py +53 -0
- mlflow/models/model.py +1639 -0
- mlflow/models/model_config.py +150 -0
- mlflow/models/notebook_resources/agent_evaluation_template.html +235 -0
- mlflow/models/notebook_resources/eval_with_dataset_example.py +22 -0
- mlflow/models/notebook_resources/eval_with_synthetic_example.py +22 -0
- mlflow/models/python_api.py +369 -0
- mlflow/models/rag_signatures.py +128 -0
- mlflow/models/resources.py +321 -0
- mlflow/models/signature.py +662 -0
- mlflow/models/utils.py +2054 -0
- mlflow/models/wheeled_model.py +280 -0
- mlflow/openai/__init__.py +57 -0
- mlflow/openai/_agent_tracer.py +364 -0
- mlflow/openai/api_request_parallel_processor.py +131 -0
- mlflow/openai/autolog.py +509 -0
- mlflow/openai/constant.py +1 -0
- mlflow/openai/model.py +824 -0
- mlflow/openai/utils/chat_schema.py +367 -0
- mlflow/optuna/__init__.py +3 -0
- mlflow/optuna/storage.py +646 -0
- mlflow/plugins/__init__.py +72 -0
- mlflow/plugins/base.py +358 -0
- mlflow/plugins/builtin/__init__.py +24 -0
- mlflow/plugins/builtin/pytorch_plugin.py +150 -0
- mlflow/plugins/builtin/sklearn_plugin.py +158 -0
- mlflow/plugins/builtin/transformers_plugin.py +187 -0
- mlflow/plugins/cli.py +321 -0
- mlflow/plugins/discovery.py +340 -0
- mlflow/plugins/manager.py +465 -0
- mlflow/plugins/registry.py +316 -0
- mlflow/plugins/templates/framework_plugin_template.py +329 -0
- mlflow/prompt/constants.py +20 -0
- mlflow/prompt/promptlab_model.py +197 -0
- mlflow/prompt/registry_utils.py +248 -0
- mlflow/promptflow/__init__.py +495 -0
- mlflow/protos/__init__.py +0 -0
- mlflow/protos/assessments_pb2.py +174 -0
- mlflow/protos/databricks_artifacts_pb2.py +489 -0
- mlflow/protos/databricks_filesystem_service_pb2.py +196 -0
- mlflow/protos/databricks_managed_catalog_messages_pb2.py +95 -0
- mlflow/protos/databricks_managed_catalog_service_pb2.py +86 -0
- mlflow/protos/databricks_pb2.py +267 -0
- mlflow/protos/databricks_trace_server_pb2.py +374 -0
- mlflow/protos/databricks_uc_registry_messages_pb2.py +1249 -0
- mlflow/protos/databricks_uc_registry_service_pb2.py +170 -0
- mlflow/protos/facet_feature_statistics_pb2.py +296 -0
- mlflow/protos/internal_pb2.py +77 -0
- mlflow/protos/mlflow_artifacts_pb2.py +336 -0
- mlflow/protos/model_registry_pb2.py +1073 -0
- mlflow/protos/scalapb/__init__.py +0 -0
- mlflow/protos/scalapb/scalapb_pb2.py +104 -0
- mlflow/protos/service_pb2.py +2600 -0
- mlflow/protos/unity_catalog_oss_messages_pb2.py +457 -0
- mlflow/protos/unity_catalog_oss_service_pb2.py +130 -0
- mlflow/protos/unity_catalog_prompt_messages_pb2.py +447 -0
- mlflow/protos/unity_catalog_prompt_messages_pb2_grpc.py +24 -0
- mlflow/protos/unity_catalog_prompt_service_pb2.py +164 -0
- mlflow/protos/unity_catalog_prompt_service_pb2_grpc.py +785 -0
- mlflow/py.typed +0 -0
- mlflow/pydantic_ai/__init__.py +57 -0
- mlflow/pydantic_ai/autolog.py +173 -0
- mlflow/pyfunc/__init__.py +3844 -0
- mlflow/pyfunc/_mlflow_pyfunc_backend_predict.py +61 -0
- mlflow/pyfunc/backend.py +523 -0
- mlflow/pyfunc/context.py +78 -0
- mlflow/pyfunc/dbconnect_artifact_cache.py +144 -0
- mlflow/pyfunc/loaders/__init__.py +7 -0
- mlflow/pyfunc/loaders/chat_agent.py +117 -0
- mlflow/pyfunc/loaders/chat_model.py +125 -0
- mlflow/pyfunc/loaders/code_model.py +31 -0
- mlflow/pyfunc/loaders/responses_agent.py +112 -0
- mlflow/pyfunc/mlserver.py +46 -0
- mlflow/pyfunc/model.py +1473 -0
- mlflow/pyfunc/scoring_server/__init__.py +604 -0
- mlflow/pyfunc/scoring_server/app.py +7 -0
- mlflow/pyfunc/scoring_server/client.py +146 -0
- mlflow/pyfunc/spark_model_cache.py +48 -0
- mlflow/pyfunc/stdin_server.py +44 -0
- mlflow/pyfunc/utils/__init__.py +3 -0
- mlflow/pyfunc/utils/data_validation.py +224 -0
- mlflow/pyfunc/utils/environment.py +22 -0
- mlflow/pyfunc/utils/input_converter.py +47 -0
- mlflow/pyfunc/utils/serving_data_parser.py +11 -0
- mlflow/pytorch/__init__.py +1171 -0
- mlflow/pytorch/_lightning_autolog.py +580 -0
- mlflow/pytorch/_pytorch_autolog.py +50 -0
- mlflow/pytorch/pickle_module.py +35 -0
- mlflow/rfunc/__init__.py +42 -0
- mlflow/rfunc/backend.py +134 -0
- mlflow/runs.py +89 -0
- mlflow/server/__init__.py +302 -0
- mlflow/server/auth/__init__.py +1224 -0
- mlflow/server/auth/__main__.py +4 -0
- mlflow/server/auth/basic_auth.ini +6 -0
- mlflow/server/auth/cli.py +11 -0
- mlflow/server/auth/client.py +537 -0
- mlflow/server/auth/config.py +34 -0
- mlflow/server/auth/db/__init__.py +0 -0
- mlflow/server/auth/db/cli.py +18 -0
- mlflow/server/auth/db/migrations/__init__.py +0 -0
- mlflow/server/auth/db/migrations/alembic.ini +110 -0
- mlflow/server/auth/db/migrations/env.py +76 -0
- mlflow/server/auth/db/migrations/versions/8606fa83a998_initial_migration.py +51 -0
- mlflow/server/auth/db/migrations/versions/__init__.py +0 -0
- mlflow/server/auth/db/models.py +67 -0
- mlflow/server/auth/db/utils.py +37 -0
- mlflow/server/auth/entities.py +165 -0
- mlflow/server/auth/logo.py +14 -0
- mlflow/server/auth/permissions.py +65 -0
- mlflow/server/auth/routes.py +18 -0
- mlflow/server/auth/sqlalchemy_store.py +263 -0
- mlflow/server/graphql/__init__.py +0 -0
- mlflow/server/graphql/autogenerated_graphql_schema.py +353 -0
- mlflow/server/graphql/graphql_custom_scalars.py +24 -0
- mlflow/server/graphql/graphql_errors.py +15 -0
- mlflow/server/graphql/graphql_no_batching.py +89 -0
- mlflow/server/graphql/graphql_schema_extensions.py +74 -0
- mlflow/server/handlers.py +3217 -0
- mlflow/server/prometheus_exporter.py +17 -0
- mlflow/server/validation.py +30 -0
- mlflow/shap/__init__.py +691 -0
- mlflow/sklearn/__init__.py +1994 -0
- mlflow/sklearn/utils.py +1041 -0
- mlflow/smolagents/__init__.py +66 -0
- mlflow/smolagents/autolog.py +139 -0
- mlflow/smolagents/chat.py +29 -0
- mlflow/store/__init__.py +10 -0
- mlflow/store/_unity_catalog/__init__.py +1 -0
- mlflow/store/_unity_catalog/lineage/__init__.py +1 -0
- mlflow/store/_unity_catalog/lineage/constants.py +2 -0
- mlflow/store/_unity_catalog/registry/__init__.py +6 -0
- mlflow/store/_unity_catalog/registry/prompt_info.py +75 -0
- mlflow/store/_unity_catalog/registry/rest_store.py +1740 -0
- mlflow/store/_unity_catalog/registry/uc_oss_rest_store.py +507 -0
- mlflow/store/_unity_catalog/registry/utils.py +121 -0
- mlflow/store/artifact/__init__.py +0 -0
- mlflow/store/artifact/artifact_repo.py +472 -0
- mlflow/store/artifact/artifact_repository_registry.py +154 -0
- mlflow/store/artifact/azure_blob_artifact_repo.py +275 -0
- mlflow/store/artifact/azure_data_lake_artifact_repo.py +295 -0
- mlflow/store/artifact/cli.py +141 -0
- mlflow/store/artifact/cloud_artifact_repo.py +332 -0
- mlflow/store/artifact/databricks_artifact_repo.py +729 -0
- mlflow/store/artifact/databricks_artifact_repo_resources.py +301 -0
- mlflow/store/artifact/databricks_logged_model_artifact_repo.py +93 -0
- mlflow/store/artifact/databricks_models_artifact_repo.py +216 -0
- mlflow/store/artifact/databricks_sdk_artifact_repo.py +134 -0
- mlflow/store/artifact/databricks_sdk_models_artifact_repo.py +97 -0
- mlflow/store/artifact/dbfs_artifact_repo.py +240 -0
- mlflow/store/artifact/ftp_artifact_repo.py +132 -0
- mlflow/store/artifact/gcs_artifact_repo.py +296 -0
- mlflow/store/artifact/hdfs_artifact_repo.py +209 -0
- mlflow/store/artifact/http_artifact_repo.py +218 -0
- mlflow/store/artifact/local_artifact_repo.py +142 -0
- mlflow/store/artifact/mlflow_artifacts_repo.py +94 -0
- mlflow/store/artifact/models_artifact_repo.py +259 -0
- mlflow/store/artifact/optimized_s3_artifact_repo.py +356 -0
- mlflow/store/artifact/presigned_url_artifact_repo.py +173 -0
- mlflow/store/artifact/r2_artifact_repo.py +70 -0
- mlflow/store/artifact/runs_artifact_repo.py +265 -0
- mlflow/store/artifact/s3_artifact_repo.py +330 -0
- mlflow/store/artifact/sftp_artifact_repo.py +141 -0
- mlflow/store/artifact/uc_volume_artifact_repo.py +76 -0
- mlflow/store/artifact/unity_catalog_models_artifact_repo.py +168 -0
- mlflow/store/artifact/unity_catalog_oss_models_artifact_repo.py +168 -0
- mlflow/store/artifact/utils/__init__.py +0 -0
- mlflow/store/artifact/utils/models.py +148 -0
- mlflow/store/db/__init__.py +0 -0
- mlflow/store/db/base_sql_model.py +3 -0
- mlflow/store/db/db_types.py +10 -0
- mlflow/store/db/utils.py +314 -0
- mlflow/store/db_migrations/__init__.py +0 -0
- mlflow/store/db_migrations/alembic.ini +74 -0
- mlflow/store/db_migrations/env.py +84 -0
- mlflow/store/db_migrations/versions/0584bdc529eb_add_cascading_deletion_to_datasets_from_experiments.py +88 -0
- mlflow/store/db_migrations/versions/0a8213491aaa_drop_duplicate_killed_constraint.py +49 -0
- mlflow/store/db_migrations/versions/0c779009ac13_add_deleted_time_field_to_runs_table.py +24 -0
- mlflow/store/db_migrations/versions/181f10493468_allow_nulls_for_metric_values.py +35 -0
- mlflow/store/db_migrations/versions/27a6a02d2cf1_add_model_version_tags_table.py +38 -0
- mlflow/store/db_migrations/versions/2b4d017a5e9b_add_model_registry_tables_to_db.py +77 -0
- mlflow/store/db_migrations/versions/2d6e25af4d3e_increase_max_param_val_length.py +33 -0
- mlflow/store/db_migrations/versions/3500859a5d39_add_model_aliases_table.py +50 -0
- mlflow/store/db_migrations/versions/39d1c3be5f05_add_is_nan_constraint_for_metrics_tables_if_necessary.py +41 -0
- mlflow/store/db_migrations/versions/400f98739977_add_logged_model_tables.py +123 -0
- mlflow/store/db_migrations/versions/4465047574b1_increase_max_dataset_schema_size.py +38 -0
- mlflow/store/db_migrations/versions/451aebb31d03_add_metric_step.py +35 -0
- mlflow/store/db_migrations/versions/5b0e9adcef9c_add_cascade_deletion_to_trace_tables_fk.py +40 -0
- mlflow/store/db_migrations/versions/6953534de441_add_step_to_inputs_table.py +25 -0
- mlflow/store/db_migrations/versions/728d730b5ebd_add_registered_model_tags_table.py +38 -0
- mlflow/store/db_migrations/versions/7ac759974ad8_update_run_tags_with_larger_limit.py +36 -0
- mlflow/store/db_migrations/versions/7f2a7d5fae7d_add_datasets_inputs_input_tags_tables.py +82 -0
- mlflow/store/db_migrations/versions/84291f40a231_add_run_link_to_model_version.py +26 -0
- mlflow/store/db_migrations/versions/867495a8f9d4_add_trace_tables.py +90 -0
- mlflow/store/db_migrations/versions/89d4b8295536_create_latest_metrics_table.py +169 -0
- mlflow/store/db_migrations/versions/90e64c465722_migrate_user_column_to_tags.py +64 -0
- mlflow/store/db_migrations/versions/97727af70f4d_creation_time_last_update_time_experiments.py +25 -0
- mlflow/store/db_migrations/versions/__init__.py +0 -0
- mlflow/store/db_migrations/versions/a8c4a736bde6_allow_nulls_for_run_id.py +27 -0
- mlflow/store/db_migrations/versions/acf3f17fdcc7_add_storage_location_field_to_model_.py +29 -0
- mlflow/store/db_migrations/versions/bd07f7e963c5_create_index_on_run_uuid.py +26 -0
- mlflow/store/db_migrations/versions/bda7b8c39065_increase_model_version_tag_value_limit.py +38 -0
- mlflow/store/db_migrations/versions/c48cb773bb87_reset_default_value_for_is_nan_in_metrics_table_for_mysql.py +41 -0
- mlflow/store/db_migrations/versions/cbc13b556ace_add_v3_trace_schema_columns.py +31 -0
- mlflow/store/db_migrations/versions/cc1f77228345_change_param_value_length_to_500.py +34 -0
- mlflow/store/db_migrations/versions/cfd24bdc0731_update_run_status_constraint_with_killed.py +78 -0
- mlflow/store/db_migrations/versions/df50e92ffc5e_add_experiment_tags_table.py +38 -0
- mlflow/store/db_migrations/versions/f5a4f2784254_increase_run_tag_value_limit.py +36 -0
- mlflow/store/entities/__init__.py +3 -0
- mlflow/store/entities/paged_list.py +18 -0
- mlflow/store/model_registry/__init__.py +10 -0
- mlflow/store/model_registry/abstract_store.py +1081 -0
- mlflow/store/model_registry/base_rest_store.py +44 -0
- mlflow/store/model_registry/databricks_workspace_model_registry_rest_store.py +37 -0
- mlflow/store/model_registry/dbmodels/__init__.py +0 -0
- mlflow/store/model_registry/dbmodels/models.py +206 -0
- mlflow/store/model_registry/file_store.py +1091 -0
- mlflow/store/model_registry/rest_store.py +481 -0
- mlflow/store/model_registry/sqlalchemy_store.py +1286 -0
- mlflow/store/tracking/__init__.py +23 -0
- mlflow/store/tracking/abstract_store.py +816 -0
- mlflow/store/tracking/dbmodels/__init__.py +0 -0
- mlflow/store/tracking/dbmodels/initial_models.py +243 -0
- mlflow/store/tracking/dbmodels/models.py +1073 -0
- mlflow/store/tracking/file_store.py +2438 -0
- mlflow/store/tracking/postgres_managed_identity.py +146 -0
- mlflow/store/tracking/rest_store.py +1131 -0
- mlflow/store/tracking/sqlalchemy_store.py +2785 -0
- mlflow/system_metrics/__init__.py +61 -0
- mlflow/system_metrics/metrics/__init__.py +0 -0
- mlflow/system_metrics/metrics/base_metrics_monitor.py +32 -0
- mlflow/system_metrics/metrics/cpu_monitor.py +23 -0
- mlflow/system_metrics/metrics/disk_monitor.py +21 -0
- mlflow/system_metrics/metrics/gpu_monitor.py +71 -0
- mlflow/system_metrics/metrics/network_monitor.py +34 -0
- mlflow/system_metrics/metrics/rocm_monitor.py +123 -0
- mlflow/system_metrics/system_metrics_monitor.py +198 -0
- mlflow/tracing/__init__.py +16 -0
- mlflow/tracing/assessment.py +356 -0
- mlflow/tracing/client.py +531 -0
- mlflow/tracing/config.py +125 -0
- mlflow/tracing/constant.py +105 -0
- mlflow/tracing/destination.py +81 -0
- mlflow/tracing/display/__init__.py +40 -0
- mlflow/tracing/display/display_handler.py +196 -0
- mlflow/tracing/export/async_export_queue.py +186 -0
- mlflow/tracing/export/inference_table.py +138 -0
- mlflow/tracing/export/mlflow_v3.py +137 -0
- mlflow/tracing/export/utils.py +70 -0
- mlflow/tracing/fluent.py +1417 -0
- mlflow/tracing/processor/base_mlflow.py +199 -0
- mlflow/tracing/processor/inference_table.py +175 -0
- mlflow/tracing/processor/mlflow_v3.py +47 -0
- mlflow/tracing/processor/otel.py +73 -0
- mlflow/tracing/provider.py +487 -0
- mlflow/tracing/trace_manager.py +200 -0
- mlflow/tracing/utils/__init__.py +616 -0
- mlflow/tracing/utils/artifact_utils.py +28 -0
- mlflow/tracing/utils/copy.py +55 -0
- mlflow/tracing/utils/environment.py +55 -0
- mlflow/tracing/utils/exception.py +21 -0
- mlflow/tracing/utils/once.py +35 -0
- mlflow/tracing/utils/otlp.py +63 -0
- mlflow/tracing/utils/processor.py +54 -0
- mlflow/tracing/utils/search.py +292 -0
- mlflow/tracing/utils/timeout.py +250 -0
- mlflow/tracing/utils/token.py +19 -0
- mlflow/tracing/utils/truncation.py +124 -0
- mlflow/tracing/utils/warning.py +76 -0
- mlflow/tracking/__init__.py +39 -0
- mlflow/tracking/_model_registry/__init__.py +1 -0
- mlflow/tracking/_model_registry/client.py +764 -0
- mlflow/tracking/_model_registry/fluent.py +853 -0
- mlflow/tracking/_model_registry/registry.py +67 -0
- mlflow/tracking/_model_registry/utils.py +251 -0
- mlflow/tracking/_tracking_service/__init__.py +0 -0
- mlflow/tracking/_tracking_service/client.py +883 -0
- mlflow/tracking/_tracking_service/registry.py +56 -0
- mlflow/tracking/_tracking_service/utils.py +275 -0
- mlflow/tracking/artifact_utils.py +179 -0
- mlflow/tracking/client.py +5900 -0
- mlflow/tracking/context/__init__.py +0 -0
- mlflow/tracking/context/abstract_context.py +35 -0
- mlflow/tracking/context/databricks_cluster_context.py +15 -0
- mlflow/tracking/context/databricks_command_context.py +15 -0
- mlflow/tracking/context/databricks_job_context.py +49 -0
- mlflow/tracking/context/databricks_notebook_context.py +41 -0
- mlflow/tracking/context/databricks_repo_context.py +43 -0
- mlflow/tracking/context/default_context.py +51 -0
- mlflow/tracking/context/git_context.py +32 -0
- mlflow/tracking/context/registry.py +98 -0
- mlflow/tracking/context/system_environment_context.py +15 -0
- mlflow/tracking/default_experiment/__init__.py +1 -0
- mlflow/tracking/default_experiment/abstract_context.py +43 -0
- mlflow/tracking/default_experiment/databricks_notebook_experiment_provider.py +44 -0
- mlflow/tracking/default_experiment/registry.py +75 -0
- mlflow/tracking/fluent.py +3595 -0
- mlflow/tracking/metric_value_conversion_utils.py +93 -0
- mlflow/tracking/multimedia.py +206 -0
- mlflow/tracking/registry.py +86 -0
- mlflow/tracking/request_auth/__init__.py +0 -0
- mlflow/tracking/request_auth/abstract_request_auth_provider.py +34 -0
- mlflow/tracking/request_auth/registry.py +60 -0
- mlflow/tracking/request_header/__init__.py +0 -0
- mlflow/tracking/request_header/abstract_request_header_provider.py +36 -0
- mlflow/tracking/request_header/databricks_request_header_provider.py +38 -0
- mlflow/tracking/request_header/default_request_header_provider.py +17 -0
- mlflow/tracking/request_header/registry.py +79 -0
- mlflow/transformers/__init__.py +2982 -0
- mlflow/transformers/flavor_config.py +258 -0
- mlflow/transformers/hub_utils.py +83 -0
- mlflow/transformers/llm_inference_utils.py +468 -0
- mlflow/transformers/model_io.py +301 -0
- mlflow/transformers/peft.py +51 -0
- mlflow/transformers/signature.py +183 -0
- mlflow/transformers/torch_utils.py +55 -0
- mlflow/types/__init__.py +21 -0
- mlflow/types/agent.py +270 -0
- mlflow/types/chat.py +240 -0
- mlflow/types/llm.py +935 -0
- mlflow/types/responses.py +139 -0
- mlflow/types/responses_helpers.py +416 -0
- mlflow/types/schema.py +1505 -0
- mlflow/types/type_hints.py +647 -0
- mlflow/types/utils.py +753 -0
- mlflow/utils/__init__.py +283 -0
- mlflow/utils/_capture_modules.py +256 -0
- mlflow/utils/_capture_transformers_modules.py +75 -0
- mlflow/utils/_spark_utils.py +201 -0
- mlflow/utils/_unity_catalog_oss_utils.py +97 -0
- mlflow/utils/_unity_catalog_utils.py +479 -0
- mlflow/utils/annotations.py +218 -0
- mlflow/utils/arguments_utils.py +16 -0
- mlflow/utils/async_logging/__init__.py +1 -0
- mlflow/utils/async_logging/async_artifacts_logging_queue.py +258 -0
- mlflow/utils/async_logging/async_logging_queue.py +366 -0
- mlflow/utils/async_logging/run_artifact.py +38 -0
- mlflow/utils/async_logging/run_batch.py +58 -0
- mlflow/utils/async_logging/run_operations.py +49 -0
- mlflow/utils/autologging_utils/__init__.py +737 -0
- mlflow/utils/autologging_utils/client.py +432 -0
- mlflow/utils/autologging_utils/config.py +33 -0
- mlflow/utils/autologging_utils/events.py +294 -0
- mlflow/utils/autologging_utils/logging_and_warnings.py +328 -0
- mlflow/utils/autologging_utils/metrics_queue.py +71 -0
- mlflow/utils/autologging_utils/safety.py +1104 -0
- mlflow/utils/autologging_utils/versioning.py +95 -0
- mlflow/utils/checkpoint_utils.py +206 -0
- mlflow/utils/class_utils.py +6 -0
- mlflow/utils/cli_args.py +257 -0
- mlflow/utils/conda.py +354 -0
- mlflow/utils/credentials.py +231 -0
- mlflow/utils/data_utils.py +17 -0
- mlflow/utils/databricks_utils.py +1436 -0
- mlflow/utils/docstring_utils.py +477 -0
- mlflow/utils/doctor.py +133 -0
- mlflow/utils/download_cloud_file_chunk.py +43 -0
- mlflow/utils/env_manager.py +16 -0
- mlflow/utils/env_pack.py +131 -0
- mlflow/utils/environment.py +1009 -0
- mlflow/utils/exception_utils.py +14 -0
- mlflow/utils/file_utils.py +978 -0
- mlflow/utils/git_utils.py +77 -0
- mlflow/utils/gorilla.py +797 -0
- mlflow/utils/import_hooks/__init__.py +363 -0
- mlflow/utils/lazy_load.py +51 -0
- mlflow/utils/logging_utils.py +168 -0
- mlflow/utils/mime_type_utils.py +58 -0
- mlflow/utils/mlflow_tags.py +103 -0
- mlflow/utils/model_utils.py +486 -0
- mlflow/utils/name_utils.py +346 -0
- mlflow/utils/nfs_on_spark.py +62 -0
- mlflow/utils/openai_utils.py +164 -0
- mlflow/utils/os.py +12 -0
- mlflow/utils/oss_registry_utils.py +29 -0
- mlflow/utils/plugins.py +17 -0
- mlflow/utils/process.py +182 -0
- mlflow/utils/promptlab_utils.py +146 -0
- mlflow/utils/proto_json_utils.py +743 -0
- mlflow/utils/pydantic_utils.py +54 -0
- mlflow/utils/request_utils.py +279 -0
- mlflow/utils/requirements_utils.py +704 -0
- mlflow/utils/rest_utils.py +673 -0
- mlflow/utils/search_logged_model_utils.py +127 -0
- mlflow/utils/search_utils.py +2111 -0
- mlflow/utils/secure_loading.py +221 -0
- mlflow/utils/security_validation.py +384 -0
- mlflow/utils/server_cli_utils.py +61 -0
- mlflow/utils/spark_utils.py +15 -0
- mlflow/utils/string_utils.py +138 -0
- mlflow/utils/thread_utils.py +63 -0
- mlflow/utils/time.py +54 -0
- mlflow/utils/timeout.py +42 -0
- mlflow/utils/uri.py +572 -0
- mlflow/utils/validation.py +662 -0
- mlflow/utils/virtualenv.py +458 -0
- mlflow/utils/warnings_utils.py +25 -0
- mlflow/utils/yaml_utils.py +179 -0
- mlflow/version.py +24 -0
@@ -0,0 +1,243 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
3
|
+
from mlflow.entities.logged_model_parameter import LoggedModelParameter as ModelParam
|
4
|
+
from mlflow.entities.metric import Metric
|
5
|
+
from mlflow.entities.model_registry._model_registry_entity import _ModelRegistryEntity
|
6
|
+
from mlflow.entities.model_registry.model_version_deployment_job_state import (
|
7
|
+
ModelVersionDeploymentJobState,
|
8
|
+
)
|
9
|
+
from mlflow.entities.model_registry.model_version_status import ModelVersionStatus
|
10
|
+
from mlflow.entities.model_registry.model_version_tag import ModelVersionTag
|
11
|
+
from mlflow.protos.model_registry_pb2 import ModelVersion as ProtoModelVersion
|
12
|
+
from mlflow.protos.model_registry_pb2 import ModelVersionTag as ProtoModelVersionTag
|
13
|
+
|
14
|
+
|
15
|
+
class ModelVersion(_ModelRegistryEntity):
|
16
|
+
"""
|
17
|
+
MLflow entity for Model Version.
|
18
|
+
"""
|
19
|
+
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
name: str,
|
23
|
+
version: str,
|
24
|
+
creation_timestamp: int,
|
25
|
+
last_updated_timestamp: Optional[int] = None,
|
26
|
+
description: Optional[str] = None,
|
27
|
+
user_id: Optional[str] = None,
|
28
|
+
current_stage: Optional[str] = None,
|
29
|
+
source: Optional[str] = None,
|
30
|
+
run_id: Optional[str] = None,
|
31
|
+
status: str = ModelVersionStatus.to_string(ModelVersionStatus.READY),
|
32
|
+
status_message: Optional[str] = None,
|
33
|
+
tags: Optional[list[ModelVersionTag]] = None,
|
34
|
+
run_link: Optional[str] = None,
|
35
|
+
aliases: Optional[list[str]] = None,
|
36
|
+
# TODO: Make model_id a required field
|
37
|
+
# (currently optional to minimize breakages during prototype development)
|
38
|
+
model_id: Optional[str] = None,
|
39
|
+
params: Optional[list[ModelParam]] = None,
|
40
|
+
metrics: Optional[list[Metric]] = None,
|
41
|
+
deployment_job_state: Optional[ModelVersionDeploymentJobState] = None,
|
42
|
+
):
|
43
|
+
super().__init__()
|
44
|
+
self._name: str = name
|
45
|
+
self._version: str = version
|
46
|
+
self._creation_time: int = creation_timestamp
|
47
|
+
self._last_updated_timestamp: Optional[int] = last_updated_timestamp
|
48
|
+
self._description: Optional[str] = description
|
49
|
+
self._user_id: Optional[str] = user_id
|
50
|
+
self._current_stage: Optional[str] = current_stage
|
51
|
+
self._source: Optional[str] = source
|
52
|
+
self._run_id: Optional[str] = run_id
|
53
|
+
self._run_link: Optional[str] = run_link
|
54
|
+
self._status: str = status
|
55
|
+
self._status_message: Optional[str] = status_message
|
56
|
+
self._tags: dict[str, str] = {tag.key: tag.value for tag in (tags or [])}
|
57
|
+
self._aliases: list[str] = aliases or []
|
58
|
+
self._model_id: Optional[str] = model_id
|
59
|
+
self._params: Optional[list[ModelParam]] = params
|
60
|
+
self._metrics: Optional[list[Metric]] = metrics
|
61
|
+
self._deployment_job_state: Optional[ModelVersionDeploymentJobState] = deployment_job_state
|
62
|
+
|
63
|
+
@property
|
64
|
+
def name(self) -> str:
|
65
|
+
"""String. Unique name within Model Registry."""
|
66
|
+
return self._name
|
67
|
+
|
68
|
+
@name.setter
|
69
|
+
def name(self, new_name: str):
|
70
|
+
self._name = new_name
|
71
|
+
|
72
|
+
@property
|
73
|
+
def version(self) -> str:
|
74
|
+
"""Version"""
|
75
|
+
return self._version
|
76
|
+
|
77
|
+
@property
|
78
|
+
def creation_timestamp(self) -> int:
|
79
|
+
"""Integer. Model version creation timestamp (milliseconds since the Unix epoch)."""
|
80
|
+
return self._creation_time
|
81
|
+
|
82
|
+
@property
|
83
|
+
def last_updated_timestamp(self) -> Optional[int]:
|
84
|
+
"""Integer. Timestamp of last update for this model version (milliseconds since the Unix
|
85
|
+
epoch).
|
86
|
+
"""
|
87
|
+
return self._last_updated_timestamp
|
88
|
+
|
89
|
+
@last_updated_timestamp.setter
|
90
|
+
def last_updated_timestamp(self, updated_timestamp: int):
|
91
|
+
self._last_updated_timestamp = updated_timestamp
|
92
|
+
|
93
|
+
@property
|
94
|
+
def description(self) -> Optional[str]:
|
95
|
+
"""String. Description"""
|
96
|
+
return self._description
|
97
|
+
|
98
|
+
@description.setter
|
99
|
+
def description(self, description: str):
|
100
|
+
self._description = description
|
101
|
+
|
102
|
+
@property
|
103
|
+
def user_id(self) -> Optional[str]:
|
104
|
+
"""String. User ID that created this model version."""
|
105
|
+
return self._user_id
|
106
|
+
|
107
|
+
@property
|
108
|
+
def current_stage(self) -> Optional[str]:
|
109
|
+
"""String. Current stage of this model version."""
|
110
|
+
return self._current_stage
|
111
|
+
|
112
|
+
@current_stage.setter
|
113
|
+
def current_stage(self, stage: str):
|
114
|
+
self._current_stage = stage
|
115
|
+
|
116
|
+
@property
|
117
|
+
def source(self) -> Optional[str]:
|
118
|
+
"""String. Source path for the model."""
|
119
|
+
return self._source
|
120
|
+
|
121
|
+
@property
|
122
|
+
def run_id(self) -> Optional[str]:
|
123
|
+
"""String. MLflow run ID that generated this model."""
|
124
|
+
return self._run_id
|
125
|
+
|
126
|
+
@property
|
127
|
+
def run_link(self) -> Optional[str]:
|
128
|
+
"""String. MLflow run link referring to the exact run that generated this model version."""
|
129
|
+
return self._run_link
|
130
|
+
|
131
|
+
@property
|
132
|
+
def status(self) -> str:
|
133
|
+
"""String. Current Model Registry status for this model."""
|
134
|
+
return self._status
|
135
|
+
|
136
|
+
@property
|
137
|
+
def status_message(self) -> Optional[str]:
|
138
|
+
"""String. Descriptive message for error status conditions."""
|
139
|
+
return self._status_message
|
140
|
+
|
141
|
+
@property
|
142
|
+
def tags(self) -> dict[str, str]:
|
143
|
+
"""Dictionary of tag key (string) -> tag value for the current model version."""
|
144
|
+
return self._tags
|
145
|
+
|
146
|
+
@property
|
147
|
+
def aliases(self) -> list[str]:
|
148
|
+
"""List of aliases (string) for the current model version."""
|
149
|
+
return self._aliases
|
150
|
+
|
151
|
+
@aliases.setter
|
152
|
+
def aliases(self, aliases: list[str]):
|
153
|
+
self._aliases = aliases
|
154
|
+
|
155
|
+
@property
|
156
|
+
def model_id(self) -> Optional[str]:
|
157
|
+
"""String. ID of the model associated with this version."""
|
158
|
+
return self._model_id
|
159
|
+
|
160
|
+
@property
|
161
|
+
def params(self) -> Optional[list[ModelParam]]:
|
162
|
+
"""List of parameters associated with this model version."""
|
163
|
+
return self._params
|
164
|
+
|
165
|
+
@property
|
166
|
+
def metrics(self) -> Optional[list[Metric]]:
|
167
|
+
"""List of metrics associated with this model version."""
|
168
|
+
return self._metrics
|
169
|
+
|
170
|
+
@property
|
171
|
+
def deployment_job_state(self) -> Optional[ModelVersionDeploymentJobState]:
|
172
|
+
"""Deployment job state for the current model version."""
|
173
|
+
return self._deployment_job_state
|
174
|
+
|
175
|
+
@classmethod
|
176
|
+
def _properties(cls) -> list[str]:
|
177
|
+
# aggregate with base class properties since cls.__dict__ does not do it automatically
|
178
|
+
return sorted(cls._get_properties_helper())
|
179
|
+
|
180
|
+
def _add_tag(self, tag: ModelVersionTag):
|
181
|
+
self._tags[tag.key] = tag.value
|
182
|
+
|
183
|
+
# proto mappers
|
184
|
+
@classmethod
|
185
|
+
def from_proto(cls, proto) -> "ModelVersion":
|
186
|
+
# input: mlflow.protos.model_registry_pb2.ModelVersion
|
187
|
+
# returns: ModelVersion entity
|
188
|
+
model_version = cls(
|
189
|
+
proto.name,
|
190
|
+
proto.version,
|
191
|
+
proto.creation_timestamp,
|
192
|
+
proto.last_updated_timestamp,
|
193
|
+
proto.description if proto.HasField("description") else None,
|
194
|
+
proto.user_id,
|
195
|
+
proto.current_stage,
|
196
|
+
proto.source,
|
197
|
+
proto.run_id if proto.HasField("run_id") else None,
|
198
|
+
ModelVersionStatus.to_string(proto.status),
|
199
|
+
proto.status_message if proto.HasField("status_message") else None,
|
200
|
+
run_link=proto.run_link,
|
201
|
+
aliases=proto.aliases,
|
202
|
+
deployment_job_state=ModelVersionDeploymentJobState.from_proto(
|
203
|
+
proto.deployment_job_state
|
204
|
+
),
|
205
|
+
)
|
206
|
+
for tag in proto.tags:
|
207
|
+
model_version._add_tag(ModelVersionTag.from_proto(tag))
|
208
|
+
# TODO: Include params, metrics, and model ID in proto
|
209
|
+
return model_version
|
210
|
+
|
211
|
+
def to_proto(self):
|
212
|
+
# input: ModelVersion entity
|
213
|
+
# returns mlflow.protos.model_registry_pb2.ModelVersion
|
214
|
+
model_version = ProtoModelVersion()
|
215
|
+
model_version.name = self.name
|
216
|
+
model_version.version = str(self.version)
|
217
|
+
model_version.creation_timestamp = self.creation_timestamp
|
218
|
+
if self.last_updated_timestamp is not None:
|
219
|
+
model_version.last_updated_timestamp = self.last_updated_timestamp
|
220
|
+
if self.description is not None:
|
221
|
+
model_version.description = self.description
|
222
|
+
if self.user_id is not None:
|
223
|
+
model_version.user_id = self.user_id
|
224
|
+
if self.current_stage is not None:
|
225
|
+
model_version.current_stage = self.current_stage
|
226
|
+
if self.source is not None:
|
227
|
+
model_version.source = str(self.source)
|
228
|
+
if self.run_id is not None:
|
229
|
+
model_version.run_id = str(self.run_id)
|
230
|
+
if self.run_link is not None:
|
231
|
+
model_version.run_link = str(self.run_link)
|
232
|
+
if self.status is not None:
|
233
|
+
model_version.status = ModelVersionStatus.from_string(self.status)
|
234
|
+
if self.status_message:
|
235
|
+
model_version.status_message = self.status_message
|
236
|
+
model_version.tags.extend(
|
237
|
+
[ProtoModelVersionTag(key=key, value=value) for key, value in self._tags.items()]
|
238
|
+
)
|
239
|
+
model_version.aliases.extend(self.aliases)
|
240
|
+
if self.deployment_job_state is not None:
|
241
|
+
ModelVersionDeploymentJobState.to_proto(self.deployment_job_state)
|
242
|
+
# TODO: Include params, metrics, and model ID in proto
|
243
|
+
return model_version
|
@@ -0,0 +1,44 @@
|
|
1
|
+
from mlflow.protos.databricks_uc_registry_messages_pb2 import (
|
2
|
+
ModelVersionDeploymentJobState as ProtoModelVersionDeploymentJobState,
|
3
|
+
)
|
4
|
+
|
5
|
+
|
6
|
+
class ModelVersionDeploymentJobRunState:
|
7
|
+
"""Enum for model version deployment state of an
|
8
|
+
:py:class:`mlflow.entities.model_registry.ModelVersion`.
|
9
|
+
"""
|
10
|
+
|
11
|
+
NO_VALID_DEPLOYMENT_JOB_FOUND = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value(
|
12
|
+
"NO_VALID_DEPLOYMENT_JOB_FOUND"
|
13
|
+
)
|
14
|
+
RUNNING = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("RUNNING")
|
15
|
+
SUCCEEDED = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("SUCCEEDED")
|
16
|
+
FAILED = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("FAILED")
|
17
|
+
PENDING = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("PENDING")
|
18
|
+
_STRING_TO_STATE = {
|
19
|
+
k: ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value(k)
|
20
|
+
for k in ProtoModelVersionDeploymentJobState.DeploymentJobRunState.keys()
|
21
|
+
}
|
22
|
+
_STATE_TO_STRING = {value: key for key, value in _STRING_TO_STATE.items()}
|
23
|
+
|
24
|
+
@staticmethod
|
25
|
+
def from_string(state_str):
|
26
|
+
if state_str not in ModelVersionDeploymentJobRunState._STRING_TO_STATE:
|
27
|
+
raise Exception(
|
28
|
+
f"Could not get deployment job run state corresponding to string {state_str}. "
|
29
|
+
f"Valid state strings: {ModelVersionDeploymentJobRunState.all_states()}"
|
30
|
+
)
|
31
|
+
return ModelVersionDeploymentJobRunState._STRING_TO_STATE[state_str]
|
32
|
+
|
33
|
+
@staticmethod
|
34
|
+
def to_string(state):
|
35
|
+
if state not in ModelVersionDeploymentJobRunState._STATE_TO_STRING:
|
36
|
+
raise Exception(
|
37
|
+
f"Could not get string corresponding to deployment job run {state}. "
|
38
|
+
f"Valid states: {ModelVersionDeploymentJobRunState.all_states()}"
|
39
|
+
)
|
40
|
+
return ModelVersionDeploymentJobRunState._STATE_TO_STRING[state]
|
41
|
+
|
42
|
+
@staticmethod
|
43
|
+
def all_states():
|
44
|
+
return list(ModelVersionDeploymentJobRunState._STATE_TO_STRING.keys())
|
@@ -0,0 +1,70 @@
|
|
1
|
+
from mlflow.entities.model_registry._model_registry_entity import _ModelRegistryEntity
|
2
|
+
from mlflow.entities.model_registry.model_version_deployment_job_run_state import (
|
3
|
+
ModelVersionDeploymentJobRunState,
|
4
|
+
)
|
5
|
+
from mlflow.entities.model_registry.registered_model_deployment_job_state import (
|
6
|
+
RegisteredModelDeploymentJobState,
|
7
|
+
)
|
8
|
+
from mlflow.protos.databricks_uc_registry_messages_pb2 import (
|
9
|
+
ModelVersionDeploymentJobState as ProtoModelVersionDeploymentJobState,
|
10
|
+
)
|
11
|
+
|
12
|
+
|
13
|
+
class ModelVersionDeploymentJobState(_ModelRegistryEntity):
|
14
|
+
"""Deployment Job state object associated with a model version."""
|
15
|
+
|
16
|
+
def __init__(self, job_id, run_id, job_state, run_state, current_task_name):
|
17
|
+
self._job_id = job_id
|
18
|
+
self._run_id = run_id
|
19
|
+
self._job_state = job_state
|
20
|
+
self._run_state = run_state
|
21
|
+
self._current_task_name = current_task_name
|
22
|
+
|
23
|
+
def __eq__(self, other):
|
24
|
+
if type(other) is type(self):
|
25
|
+
return self.__dict__ == other.__dict__
|
26
|
+
return False
|
27
|
+
|
28
|
+
@property
|
29
|
+
def job_id(self):
|
30
|
+
return self._job_id
|
31
|
+
|
32
|
+
@property
|
33
|
+
def run_id(self):
|
34
|
+
return self._run_id
|
35
|
+
|
36
|
+
@property
|
37
|
+
def job_state(self):
|
38
|
+
return self._job_state
|
39
|
+
|
40
|
+
@property
|
41
|
+
def run_state(self):
|
42
|
+
return self._run_state
|
43
|
+
|
44
|
+
@property
|
45
|
+
def current_task_name(self):
|
46
|
+
return self._current_task_name
|
47
|
+
|
48
|
+
@classmethod
|
49
|
+
def from_proto(cls, proto):
|
50
|
+
return cls(
|
51
|
+
job_id=proto.job_id,
|
52
|
+
run_id=proto.run_id,
|
53
|
+
job_state=RegisteredModelDeploymentJobState.to_string(proto.job_state),
|
54
|
+
run_state=ModelVersionDeploymentJobRunState.to_string(proto.run_state),
|
55
|
+
current_task_name=proto.current_task_name,
|
56
|
+
)
|
57
|
+
|
58
|
+
def to_proto(self):
|
59
|
+
state = ProtoModelVersionDeploymentJobState()
|
60
|
+
if self.job_id is not None:
|
61
|
+
state.job_id = self.job_id
|
62
|
+
if self.run_id is not None:
|
63
|
+
state.run_id = self.run_id
|
64
|
+
if self.job_state is not None:
|
65
|
+
state.job_state = RegisteredModelDeploymentJobState.from_string(self.job_state)
|
66
|
+
if self.run_state is not None:
|
67
|
+
state.run_state = ModelVersionDeploymentJobRunState.from_string(self.run_state)
|
68
|
+
if self.current_task_name is not None:
|
69
|
+
state.current_task_name = self.current_task_name
|
70
|
+
return state
|
@@ -0,0 +1,25 @@
|
|
1
|
+
from mlflow.entities.model_registry import ModelVersion
|
2
|
+
|
3
|
+
|
4
|
+
class ModelVersionSearch(ModelVersion):
|
5
|
+
def __init__(self, *args, **kwargs):
|
6
|
+
kwargs["tags"] = []
|
7
|
+
kwargs["aliases"] = []
|
8
|
+
super().__init__(*args, **kwargs)
|
9
|
+
|
10
|
+
def tags(self):
|
11
|
+
raise Exception(
|
12
|
+
"UC Model Versions gathered through search_model_versions do not have tags. "
|
13
|
+
"Please use get_model_version to obtain an individual version's tags."
|
14
|
+
)
|
15
|
+
|
16
|
+
def aliases(self):
|
17
|
+
raise Exception(
|
18
|
+
"UC Model Versions gathered through search_model_versions do not have aliases. "
|
19
|
+
"Please use get_model_version to obtain an individual version's aliases."
|
20
|
+
)
|
21
|
+
|
22
|
+
def __eq__(self, other):
|
23
|
+
if type(other) in {type(self), ModelVersion}:
|
24
|
+
return self.__dict__ == other.__dict__
|
25
|
+
return False
|
@@ -0,0 +1,25 @@
|
|
1
|
+
from mlflow.exceptions import MlflowException
|
2
|
+
from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
|
3
|
+
|
4
|
+
STAGE_NONE = "None"
|
5
|
+
STAGE_STAGING = "Staging"
|
6
|
+
STAGE_PRODUCTION = "Production"
|
7
|
+
STAGE_ARCHIVED = "Archived"
|
8
|
+
|
9
|
+
STAGE_DELETED_INTERNAL = "Deleted_Internal"
|
10
|
+
|
11
|
+
ALL_STAGES = [STAGE_NONE, STAGE_STAGING, STAGE_PRODUCTION, STAGE_ARCHIVED]
|
12
|
+
DEFAULT_STAGES_FOR_GET_LATEST_VERSIONS = [STAGE_STAGING, STAGE_PRODUCTION]
|
13
|
+
_CANONICAL_MAPPING = {stage.lower(): stage for stage in ALL_STAGES}
|
14
|
+
|
15
|
+
|
16
|
+
def get_canonical_stage(stage):
|
17
|
+
key = stage.lower()
|
18
|
+
if key not in _CANONICAL_MAPPING:
|
19
|
+
raise MlflowException(
|
20
|
+
"Invalid Model Version stage: {}. Value must be one of {}.".format(
|
21
|
+
stage, ", ".join(ALL_STAGES)
|
22
|
+
),
|
23
|
+
INVALID_PARAMETER_VALUE,
|
24
|
+
)
|
25
|
+
return _CANONICAL_MAPPING[key]
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from mlflow.protos.model_registry_pb2 import ModelVersionStatus as ProtoModelVersionStatus
|
2
|
+
|
3
|
+
|
4
|
+
class ModelVersionStatus:
|
5
|
+
"""Enum for status of an :py:class:`mlflow.entities.model_registry.ModelVersion`."""
|
6
|
+
|
7
|
+
PENDING_REGISTRATION = ProtoModelVersionStatus.Value("PENDING_REGISTRATION")
|
8
|
+
FAILED_REGISTRATION = ProtoModelVersionStatus.Value("FAILED_REGISTRATION")
|
9
|
+
READY = ProtoModelVersionStatus.Value("READY")
|
10
|
+
_STRING_TO_STATUS = {
|
11
|
+
k: ProtoModelVersionStatus.Value(k) for k in ProtoModelVersionStatus.keys()
|
12
|
+
}
|
13
|
+
_STATUS_TO_STRING = {value: key for key, value in _STRING_TO_STATUS.items()}
|
14
|
+
|
15
|
+
@staticmethod
|
16
|
+
def from_string(status_str):
|
17
|
+
if status_str not in ModelVersionStatus._STRING_TO_STATUS:
|
18
|
+
raise Exception(
|
19
|
+
f"Could not get model version status corresponding to string {status_str}. "
|
20
|
+
f"Valid status strings: {list(ModelVersionStatus._STRING_TO_STATUS.keys())}"
|
21
|
+
)
|
22
|
+
return ModelVersionStatus._STRING_TO_STATUS[status_str]
|
23
|
+
|
24
|
+
@staticmethod
|
25
|
+
def to_string(status):
|
26
|
+
if status not in ModelVersionStatus._STATUS_TO_STRING:
|
27
|
+
raise Exception(
|
28
|
+
f"Could not get string corresponding to model version status {status}. "
|
29
|
+
f"Valid statuses: {list(ModelVersionStatus._STATUS_TO_STRING.keys())}"
|
30
|
+
)
|
31
|
+
return ModelVersionStatus._STATUS_TO_STRING[status]
|
32
|
+
|
33
|
+
@staticmethod
|
34
|
+
def all_status():
|
35
|
+
return list(ModelVersionStatus._STATUS_TO_STRING.keys())
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from mlflow.entities.model_registry._model_registry_entity import _ModelRegistryEntity
|
2
|
+
from mlflow.protos.model_registry_pb2 import ModelVersionTag as ProtoModelVersionTag
|
3
|
+
|
4
|
+
|
5
|
+
class ModelVersionTag(_ModelRegistryEntity):
|
6
|
+
"""Tag object associated with a model version."""
|
7
|
+
|
8
|
+
def __init__(self, key, value):
|
9
|
+
self._key = key
|
10
|
+
self._value = value
|
11
|
+
|
12
|
+
def __eq__(self, other):
|
13
|
+
if type(other) is type(self):
|
14
|
+
return self.__dict__ == other.__dict__
|
15
|
+
return False
|
16
|
+
|
17
|
+
@property
|
18
|
+
def key(self):
|
19
|
+
"""String name of the tag."""
|
20
|
+
return self._key
|
21
|
+
|
22
|
+
@property
|
23
|
+
def value(self):
|
24
|
+
"""String value of the tag."""
|
25
|
+
return self._value
|
26
|
+
|
27
|
+
@classmethod
|
28
|
+
def from_proto(cls, proto):
|
29
|
+
return cls(proto.key, proto.value)
|
30
|
+
|
31
|
+
def to_proto(self):
|
32
|
+
tag = ProtoModelVersionTag()
|
33
|
+
tag.key = self.key
|
34
|
+
tag.value = self.value
|
35
|
+
return tag
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"""
|
2
|
+
Prompt entity for MLflow Model Registry.
|
3
|
+
|
4
|
+
This represents a prompt in the registry with its metadata, without version-specific
|
5
|
+
content like template text. For version-specific content, use PromptVersion.
|
6
|
+
"""
|
7
|
+
|
8
|
+
from typing import Optional
|
9
|
+
|
10
|
+
|
11
|
+
class Prompt:
|
12
|
+
"""
|
13
|
+
Entity representing a prompt in the MLflow Model Registry.
|
14
|
+
|
15
|
+
This contains prompt-level information (name, description, tags) but not version-specific
|
16
|
+
content. To access version-specific content like the template, use PromptVersion.
|
17
|
+
"""
|
18
|
+
|
19
|
+
def __init__(
|
20
|
+
self,
|
21
|
+
name: str,
|
22
|
+
description: Optional[str] = None,
|
23
|
+
creation_timestamp: Optional[int] = None,
|
24
|
+
tags: Optional[dict[str, str]] = None,
|
25
|
+
):
|
26
|
+
"""
|
27
|
+
Construct a Prompt entity.
|
28
|
+
|
29
|
+
Args:
|
30
|
+
name: Name of the prompt.
|
31
|
+
description: Description of the prompt.
|
32
|
+
creation_timestamp: Timestamp when the prompt was created.
|
33
|
+
tags: Prompt-level metadata as key-value pairs.
|
34
|
+
"""
|
35
|
+
self._name = name
|
36
|
+
self._description = description
|
37
|
+
self._creation_timestamp = creation_timestamp
|
38
|
+
self._tags = tags or {}
|
39
|
+
|
40
|
+
@property
|
41
|
+
def name(self) -> str:
|
42
|
+
"""The name of the prompt."""
|
43
|
+
return self._name
|
44
|
+
|
45
|
+
@property
|
46
|
+
def description(self) -> Optional[str]:
|
47
|
+
"""The description of the prompt."""
|
48
|
+
return self._description
|
49
|
+
|
50
|
+
@property
|
51
|
+
def creation_timestamp(self) -> Optional[int]:
|
52
|
+
"""The creation timestamp of the prompt."""
|
53
|
+
return self._creation_timestamp
|
54
|
+
|
55
|
+
@property
|
56
|
+
def tags(self) -> dict[str, str]:
|
57
|
+
"""Prompt-level metadata as key-value pairs."""
|
58
|
+
return self._tags.copy()
|
59
|
+
|
60
|
+
def __eq__(self, other) -> bool:
|
61
|
+
if not isinstance(other, Prompt):
|
62
|
+
return False
|
63
|
+
return (
|
64
|
+
self.name == other.name
|
65
|
+
and self.description == other.description
|
66
|
+
and self.creation_timestamp == other.creation_timestamp
|
67
|
+
and self.tags == other.tags
|
68
|
+
)
|
69
|
+
|
70
|
+
def __repr__(self) -> str:
|
71
|
+
return (
|
72
|
+
f"<PromptInfo: name='{self.name}', description='{self.description}', tags={self.tags}>"
|
73
|
+
)
|