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
mlflow/entities/run.py
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
from typing import Any, Optional
|
2
|
+
|
3
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
4
|
+
from mlflow.entities.run_data import RunData
|
5
|
+
from mlflow.entities.run_info import RunInfo
|
6
|
+
from mlflow.entities.run_inputs import RunInputs
|
7
|
+
from mlflow.entities.run_outputs import RunOutputs
|
8
|
+
from mlflow.exceptions import MlflowException
|
9
|
+
from mlflow.protos.service_pb2 import Run as ProtoRun
|
10
|
+
|
11
|
+
|
12
|
+
class Run(_MlflowObject):
|
13
|
+
"""
|
14
|
+
Run object.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def __init__(
|
18
|
+
self,
|
19
|
+
run_info: RunInfo,
|
20
|
+
run_data: RunData,
|
21
|
+
run_inputs: Optional[RunInputs] = None,
|
22
|
+
run_outputs: Optional[RunOutputs] = None,
|
23
|
+
) -> None:
|
24
|
+
if run_info is None:
|
25
|
+
raise MlflowException("run_info cannot be None")
|
26
|
+
self._info = run_info
|
27
|
+
self._data = run_data
|
28
|
+
self._inputs = run_inputs
|
29
|
+
self._outputs = run_outputs
|
30
|
+
|
31
|
+
@property
|
32
|
+
def info(self) -> RunInfo:
|
33
|
+
"""
|
34
|
+
The run metadata, such as the run id, start time, and status.
|
35
|
+
|
36
|
+
:rtype: :py:class:`mlflow.entities.RunInfo`
|
37
|
+
"""
|
38
|
+
return self._info
|
39
|
+
|
40
|
+
@property
|
41
|
+
def data(self) -> RunData:
|
42
|
+
"""
|
43
|
+
The run data, including metrics, parameters, and tags.
|
44
|
+
|
45
|
+
:rtype: :py:class:`mlflow.entities.RunData`
|
46
|
+
"""
|
47
|
+
return self._data
|
48
|
+
|
49
|
+
@property
|
50
|
+
def inputs(self) -> RunInputs:
|
51
|
+
"""
|
52
|
+
The run inputs, including dataset inputs.
|
53
|
+
|
54
|
+
:rtype: :py:class:`mlflow.entities.RunInputs`
|
55
|
+
"""
|
56
|
+
return self._inputs
|
57
|
+
|
58
|
+
@property
|
59
|
+
def outputs(self) -> RunOutputs:
|
60
|
+
"""
|
61
|
+
The run outputs, including model outputs.
|
62
|
+
|
63
|
+
:rtype: :py:class:`mlflow.entities.RunOutputs`
|
64
|
+
"""
|
65
|
+
return self._outputs
|
66
|
+
|
67
|
+
def to_proto(self):
|
68
|
+
run = ProtoRun()
|
69
|
+
run.info.MergeFrom(self.info.to_proto())
|
70
|
+
if self.data:
|
71
|
+
run.data.MergeFrom(self.data.to_proto())
|
72
|
+
if self.inputs:
|
73
|
+
run.inputs.MergeFrom(self.inputs.to_proto())
|
74
|
+
if self.outputs:
|
75
|
+
run.outputs.MergeFrom(self.outputs.to_proto())
|
76
|
+
return run
|
77
|
+
|
78
|
+
@classmethod
|
79
|
+
def from_proto(cls, proto):
|
80
|
+
return cls(
|
81
|
+
RunInfo.from_proto(proto.info),
|
82
|
+
RunData.from_proto(proto.data),
|
83
|
+
RunInputs.from_proto(proto.inputs) if proto.inputs else None,
|
84
|
+
RunOutputs.from_proto(proto.outputs) if proto.outputs else None,
|
85
|
+
)
|
86
|
+
|
87
|
+
def to_dictionary(self) -> dict[Any, Any]:
|
88
|
+
run_dict = {
|
89
|
+
"info": dict(self.info),
|
90
|
+
}
|
91
|
+
if self.data:
|
92
|
+
run_dict["data"] = self.data.to_dictionary()
|
93
|
+
if self.inputs:
|
94
|
+
run_dict["inputs"] = self.inputs.to_dictionary()
|
95
|
+
if self.outputs:
|
96
|
+
run_dict["outputs"] = self.outputs.to_dictionary()
|
97
|
+
return run_dict
|
@@ -0,0 +1,84 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.entities.metric import Metric
|
3
|
+
from mlflow.entities.param import Param
|
4
|
+
from mlflow.entities.run_tag import RunTag
|
5
|
+
from mlflow.protos.service_pb2 import Param as ProtoParam
|
6
|
+
from mlflow.protos.service_pb2 import RunData as ProtoRunData
|
7
|
+
from mlflow.protos.service_pb2 import RunTag as ProtoRunTag
|
8
|
+
|
9
|
+
|
10
|
+
class RunData(_MlflowObject):
|
11
|
+
"""
|
12
|
+
Run data (metrics and parameters).
|
13
|
+
"""
|
14
|
+
|
15
|
+
def __init__(self, metrics=None, params=None, tags=None):
|
16
|
+
"""Construct a new mlflow.entities.RunData instance.
|
17
|
+
|
18
|
+
Args:
|
19
|
+
metrics: List of mlflow.entities.Metric.
|
20
|
+
params: List of mlflow.entities.Param.
|
21
|
+
tags: List of mlflow.entities.RunTag.
|
22
|
+
|
23
|
+
"""
|
24
|
+
# Maintain the original list of metrics so that we can easily convert it back to
|
25
|
+
# protobuf
|
26
|
+
self._metric_objs = metrics or []
|
27
|
+
self._metrics = {metric.key: metric.value for metric in self._metric_objs}
|
28
|
+
self._params = {param.key: param.value for param in (params or [])}
|
29
|
+
self._tags = {tag.key: tag.value for tag in (tags or [])}
|
30
|
+
|
31
|
+
@property
|
32
|
+
def metrics(self):
|
33
|
+
"""
|
34
|
+
Dictionary of string key -> metric value for the current run.
|
35
|
+
For each metric key, the metric value with the latest timestamp is returned. In case there
|
36
|
+
are multiple values with the same latest timestamp, the maximum of these values is returned.
|
37
|
+
"""
|
38
|
+
return self._metrics
|
39
|
+
|
40
|
+
@property
|
41
|
+
def params(self):
|
42
|
+
"""Dictionary of param key (string) -> param value for the current run."""
|
43
|
+
return self._params
|
44
|
+
|
45
|
+
@property
|
46
|
+
def tags(self):
|
47
|
+
"""Dictionary of tag key (string) -> tag value for the current run."""
|
48
|
+
return self._tags
|
49
|
+
|
50
|
+
def _add_metric(self, metric):
|
51
|
+
self._metrics[metric.key] = metric.value
|
52
|
+
self._metric_objs.append(metric)
|
53
|
+
|
54
|
+
def _add_param(self, param):
|
55
|
+
self._params[param.key] = param.value
|
56
|
+
|
57
|
+
def _add_tag(self, tag):
|
58
|
+
self._tags[tag.key] = tag.value
|
59
|
+
|
60
|
+
def to_proto(self):
|
61
|
+
run_data = ProtoRunData()
|
62
|
+
run_data.metrics.extend([m.to_proto() for m in self._metric_objs])
|
63
|
+
run_data.params.extend([ProtoParam(key=key, value=val) for key, val in self.params.items()])
|
64
|
+
run_data.tags.extend([ProtoRunTag(key=key, value=val) for key, val in self.tags.items()])
|
65
|
+
return run_data
|
66
|
+
|
67
|
+
def to_dictionary(self):
|
68
|
+
return {
|
69
|
+
"metrics": self.metrics,
|
70
|
+
"params": self.params,
|
71
|
+
"tags": self.tags,
|
72
|
+
}
|
73
|
+
|
74
|
+
@classmethod
|
75
|
+
def from_proto(cls, proto):
|
76
|
+
run_data = cls()
|
77
|
+
# iterate proto and add metrics, params, and tags
|
78
|
+
for proto_metric in proto.metrics:
|
79
|
+
run_data._add_metric(Metric.from_proto(proto_metric))
|
80
|
+
for proto_param in proto.params:
|
81
|
+
run_data._add_param(Param.from_proto(proto_param))
|
82
|
+
for proto_tag in proto.tags:
|
83
|
+
run_data._add_tag(RunTag.from_proto(proto_tag))
|
84
|
+
return run_data
|
@@ -0,0 +1,188 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.entities.lifecycle_stage import LifecycleStage
|
3
|
+
from mlflow.entities.run_status import RunStatus
|
4
|
+
from mlflow.exceptions import MlflowException
|
5
|
+
from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
|
6
|
+
from mlflow.protos.service_pb2 import RunInfo as ProtoRunInfo
|
7
|
+
|
8
|
+
|
9
|
+
def check_run_is_active(run_info):
|
10
|
+
if run_info.lifecycle_stage != LifecycleStage.ACTIVE:
|
11
|
+
raise MlflowException(
|
12
|
+
f"The run {run_info.run_id} must be in 'active' lifecycle_stage.",
|
13
|
+
error_code=INVALID_PARAMETER_VALUE,
|
14
|
+
)
|
15
|
+
|
16
|
+
|
17
|
+
class searchable_attribute(property):
|
18
|
+
# Wrapper class over property to designate some of the properties as searchable
|
19
|
+
# run attributes
|
20
|
+
pass
|
21
|
+
|
22
|
+
|
23
|
+
class orderable_attribute(property):
|
24
|
+
# Wrapper class over property to designate some of the properties as orderable
|
25
|
+
# run attributes
|
26
|
+
pass
|
27
|
+
|
28
|
+
|
29
|
+
class RunInfo(_MlflowObject):
|
30
|
+
"""
|
31
|
+
Metadata about a run.
|
32
|
+
"""
|
33
|
+
|
34
|
+
def __init__(
|
35
|
+
self,
|
36
|
+
run_id,
|
37
|
+
experiment_id,
|
38
|
+
user_id,
|
39
|
+
status,
|
40
|
+
start_time,
|
41
|
+
end_time,
|
42
|
+
lifecycle_stage,
|
43
|
+
artifact_uri=None,
|
44
|
+
run_name=None,
|
45
|
+
):
|
46
|
+
if experiment_id is None:
|
47
|
+
raise Exception("experiment_id cannot be None")
|
48
|
+
if user_id is None:
|
49
|
+
raise Exception("user_id cannot be None")
|
50
|
+
if status is None:
|
51
|
+
raise Exception("status cannot be None")
|
52
|
+
if start_time is None:
|
53
|
+
raise Exception("start_time cannot be None")
|
54
|
+
self._run_id = run_id
|
55
|
+
self._experiment_id = experiment_id
|
56
|
+
self._user_id = user_id
|
57
|
+
self._status = status
|
58
|
+
self._start_time = start_time
|
59
|
+
self._end_time = end_time
|
60
|
+
self._lifecycle_stage = lifecycle_stage
|
61
|
+
self._artifact_uri = artifact_uri
|
62
|
+
self._run_name = run_name
|
63
|
+
|
64
|
+
def __eq__(self, other):
|
65
|
+
if type(other) is type(self):
|
66
|
+
# TODO deep equality here?
|
67
|
+
return self.__dict__ == other.__dict__
|
68
|
+
return False
|
69
|
+
|
70
|
+
def _copy_with_overrides(self, status=None, end_time=None, lifecycle_stage=None, run_name=None):
|
71
|
+
"""A copy of the RunInfo with certain attributes modified."""
|
72
|
+
proto = self.to_proto()
|
73
|
+
if status:
|
74
|
+
proto.status = status
|
75
|
+
if end_time:
|
76
|
+
proto.end_time = end_time
|
77
|
+
if lifecycle_stage:
|
78
|
+
proto.lifecycle_stage = lifecycle_stage
|
79
|
+
if run_name:
|
80
|
+
proto.run_name = run_name
|
81
|
+
return RunInfo.from_proto(proto)
|
82
|
+
|
83
|
+
@searchable_attribute
|
84
|
+
def run_id(self):
|
85
|
+
"""String containing run id."""
|
86
|
+
return self._run_id
|
87
|
+
|
88
|
+
@property
|
89
|
+
def experiment_id(self):
|
90
|
+
"""String ID of the experiment for the current run."""
|
91
|
+
return self._experiment_id
|
92
|
+
|
93
|
+
@searchable_attribute
|
94
|
+
def run_name(self):
|
95
|
+
"""String containing run name."""
|
96
|
+
return self._run_name
|
97
|
+
|
98
|
+
def _set_run_name(self, new_name):
|
99
|
+
self._run_name = new_name
|
100
|
+
|
101
|
+
@searchable_attribute
|
102
|
+
def user_id(self):
|
103
|
+
"""String ID of the user who initiated this run."""
|
104
|
+
return self._user_id
|
105
|
+
|
106
|
+
@searchable_attribute
|
107
|
+
def status(self):
|
108
|
+
"""
|
109
|
+
One of the values in :py:class:`mlflow.entities.RunStatus`
|
110
|
+
describing the status of the run.
|
111
|
+
"""
|
112
|
+
return self._status
|
113
|
+
|
114
|
+
@searchable_attribute
|
115
|
+
def start_time(self):
|
116
|
+
"""Start time of the run, in number of milliseconds since the UNIX epoch."""
|
117
|
+
return self._start_time
|
118
|
+
|
119
|
+
@searchable_attribute
|
120
|
+
def end_time(self):
|
121
|
+
"""End time of the run, in number of milliseconds since the UNIX epoch."""
|
122
|
+
return self._end_time
|
123
|
+
|
124
|
+
@searchable_attribute
|
125
|
+
def artifact_uri(self):
|
126
|
+
"""String root artifact URI of the run."""
|
127
|
+
return self._artifact_uri
|
128
|
+
|
129
|
+
@property
|
130
|
+
def lifecycle_stage(self):
|
131
|
+
"""
|
132
|
+
One of the values in :py:class:`mlflow.entities.lifecycle_stage.LifecycleStage`
|
133
|
+
describing the lifecycle stage of the run.
|
134
|
+
"""
|
135
|
+
return self._lifecycle_stage
|
136
|
+
|
137
|
+
def to_proto(self):
|
138
|
+
proto = ProtoRunInfo()
|
139
|
+
proto.run_uuid = self.run_id
|
140
|
+
proto.run_id = self.run_id
|
141
|
+
if self.run_name is not None:
|
142
|
+
proto.run_name = self.run_name
|
143
|
+
proto.experiment_id = self.experiment_id
|
144
|
+
proto.user_id = self.user_id
|
145
|
+
proto.status = RunStatus.from_string(self.status)
|
146
|
+
proto.start_time = self.start_time
|
147
|
+
if self.end_time:
|
148
|
+
proto.end_time = self.end_time
|
149
|
+
if self.artifact_uri:
|
150
|
+
proto.artifact_uri = self.artifact_uri
|
151
|
+
proto.lifecycle_stage = self.lifecycle_stage
|
152
|
+
return proto
|
153
|
+
|
154
|
+
@classmethod
|
155
|
+
def from_proto(cls, proto):
|
156
|
+
end_time = proto.end_time
|
157
|
+
# The proto2 default scalar value of zero indicates that the run's end time is absent.
|
158
|
+
# An absent end time is represented with a NoneType in the `RunInfo` class
|
159
|
+
if end_time == 0:
|
160
|
+
end_time = None
|
161
|
+
return cls(
|
162
|
+
run_id=proto.run_id,
|
163
|
+
run_name=proto.run_name,
|
164
|
+
experiment_id=proto.experiment_id,
|
165
|
+
user_id=proto.user_id,
|
166
|
+
status=RunStatus.to_string(proto.status),
|
167
|
+
start_time=proto.start_time,
|
168
|
+
end_time=end_time,
|
169
|
+
lifecycle_stage=proto.lifecycle_stage,
|
170
|
+
artifact_uri=proto.artifact_uri,
|
171
|
+
)
|
172
|
+
|
173
|
+
@classmethod
|
174
|
+
def get_searchable_attributes(cls):
|
175
|
+
return sorted(
|
176
|
+
[p for p in cls.__dict__ if isinstance(getattr(cls, p), searchable_attribute)]
|
177
|
+
)
|
178
|
+
|
179
|
+
@classmethod
|
180
|
+
def get_orderable_attributes(cls):
|
181
|
+
# Note that all searchable attributes are also orderable.
|
182
|
+
return sorted(
|
183
|
+
[
|
184
|
+
p
|
185
|
+
for p in cls.__dict__
|
186
|
+
if isinstance(getattr(cls, p), (searchable_attribute, orderable_attribute))
|
187
|
+
]
|
188
|
+
)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
from typing import Any, Optional
|
2
|
+
|
3
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
4
|
+
from mlflow.entities.dataset_input import DatasetInput
|
5
|
+
from mlflow.entities.logged_model_input import LoggedModelInput
|
6
|
+
from mlflow.protos.service_pb2 import RunInputs as ProtoRunInputs
|
7
|
+
|
8
|
+
|
9
|
+
class RunInputs(_MlflowObject):
|
10
|
+
"""RunInputs object."""
|
11
|
+
|
12
|
+
def __init__(
|
13
|
+
self,
|
14
|
+
dataset_inputs: list[DatasetInput],
|
15
|
+
model_inputs: Optional[list[LoggedModelInput]] = None,
|
16
|
+
) -> None:
|
17
|
+
self._dataset_inputs = dataset_inputs
|
18
|
+
self._model_inputs = model_inputs or []
|
19
|
+
|
20
|
+
def __eq__(self, other: _MlflowObject) -> bool:
|
21
|
+
if type(other) is type(self):
|
22
|
+
return self.__dict__ == other.__dict__
|
23
|
+
return False
|
24
|
+
|
25
|
+
@property
|
26
|
+
def dataset_inputs(self) -> list[DatasetInput]:
|
27
|
+
"""Array of dataset inputs."""
|
28
|
+
return self._dataset_inputs
|
29
|
+
|
30
|
+
@property
|
31
|
+
def model_inputs(self) -> list[LoggedModelInput]:
|
32
|
+
"""Array of model inputs."""
|
33
|
+
return self._model_inputs
|
34
|
+
|
35
|
+
def to_proto(self):
|
36
|
+
run_inputs = ProtoRunInputs()
|
37
|
+
run_inputs.dataset_inputs.extend(
|
38
|
+
[dataset_input.to_proto() for dataset_input in self.dataset_inputs]
|
39
|
+
)
|
40
|
+
run_inputs.model_inputs.extend(
|
41
|
+
[model_input.to_proto() for model_input in self.model_inputs]
|
42
|
+
)
|
43
|
+
return run_inputs
|
44
|
+
|
45
|
+
def to_dictionary(self) -> dict[str, Any]:
|
46
|
+
return {
|
47
|
+
"model_inputs": self.model_inputs,
|
48
|
+
"dataset_inputs": [d.to_dictionary() for d in self.dataset_inputs],
|
49
|
+
}
|
50
|
+
|
51
|
+
@classmethod
|
52
|
+
def from_proto(cls, proto):
|
53
|
+
dataset_inputs = [
|
54
|
+
DatasetInput.from_proto(dataset_input) for dataset_input in proto.dataset_inputs
|
55
|
+
]
|
56
|
+
model_inputs = [
|
57
|
+
LoggedModelInput.from_proto(model_input) for model_input in proto.model_inputs
|
58
|
+
]
|
59
|
+
return cls(dataset_inputs, model_inputs)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
4
|
+
from mlflow.entities.logged_model_output import LoggedModelOutput
|
5
|
+
from mlflow.protos.service_pb2 import RunOutputs as ProtoRunOutputs
|
6
|
+
|
7
|
+
|
8
|
+
class RunOutputs(_MlflowObject):
|
9
|
+
"""RunOutputs object."""
|
10
|
+
|
11
|
+
def __init__(self, model_outputs: list[LoggedModelOutput]) -> None:
|
12
|
+
self._model_outputs = model_outputs
|
13
|
+
|
14
|
+
def __eq__(self, other: _MlflowObject) -> bool:
|
15
|
+
if type(other) is type(self):
|
16
|
+
return self.__dict__ == other.__dict__
|
17
|
+
return False
|
18
|
+
|
19
|
+
@property
|
20
|
+
def model_outputs(self) -> list[LoggedModelOutput]:
|
21
|
+
"""Array of model outputs."""
|
22
|
+
return self._model_outputs
|
23
|
+
|
24
|
+
def to_proto(self):
|
25
|
+
run_outputs = ProtoRunOutputs()
|
26
|
+
run_outputs.model_outputs.extend(
|
27
|
+
[model_output.to_proto() for model_output in self.model_outputs]
|
28
|
+
)
|
29
|
+
|
30
|
+
return run_outputs
|
31
|
+
|
32
|
+
def to_dictionary(self) -> dict[Any, Any]:
|
33
|
+
return {
|
34
|
+
"model_outputs": self.model_outputs,
|
35
|
+
}
|
36
|
+
|
37
|
+
@classmethod
|
38
|
+
def from_proto(cls, proto):
|
39
|
+
model_outputs = [
|
40
|
+
LoggedModelOutput.from_proto(model_output) for model_output in proto.model_outputs
|
41
|
+
]
|
42
|
+
|
43
|
+
return cls(model_outputs)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
from mlflow.protos.service_pb2 import RunStatus as ProtoRunStatus
|
2
|
+
|
3
|
+
|
4
|
+
class RunStatus:
|
5
|
+
"""Enum for status of an :py:class:`mlflow.entities.Run`."""
|
6
|
+
|
7
|
+
RUNNING = ProtoRunStatus.Value("RUNNING")
|
8
|
+
SCHEDULED = ProtoRunStatus.Value("SCHEDULED")
|
9
|
+
FINISHED = ProtoRunStatus.Value("FINISHED")
|
10
|
+
FAILED = ProtoRunStatus.Value("FAILED")
|
11
|
+
KILLED = ProtoRunStatus.Value("KILLED")
|
12
|
+
|
13
|
+
_STRING_TO_STATUS = {k: ProtoRunStatus.Value(k) for k in ProtoRunStatus.keys()}
|
14
|
+
_STATUS_TO_STRING = {value: key for key, value in _STRING_TO_STATUS.items()}
|
15
|
+
_TERMINATED_STATUSES = {FINISHED, FAILED, KILLED}
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def from_string(status_str):
|
19
|
+
if status_str not in RunStatus._STRING_TO_STATUS:
|
20
|
+
raise Exception(
|
21
|
+
f"Could not get run status corresponding to string {status_str}. Valid run "
|
22
|
+
f"status strings: {list(RunStatus._STRING_TO_STATUS.keys())}"
|
23
|
+
)
|
24
|
+
return RunStatus._STRING_TO_STATUS[status_str]
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def to_string(status):
|
28
|
+
if status not in RunStatus._STATUS_TO_STRING:
|
29
|
+
raise Exception(
|
30
|
+
f"Could not get string corresponding to run status {status}. Valid run "
|
31
|
+
f"statuses: {list(RunStatus._STATUS_TO_STRING.keys())}"
|
32
|
+
)
|
33
|
+
return RunStatus._STATUS_TO_STRING[status]
|
34
|
+
|
35
|
+
@staticmethod
|
36
|
+
def is_terminated(status):
|
37
|
+
return status in RunStatus._TERMINATED_STATUSES
|
38
|
+
|
39
|
+
@staticmethod
|
40
|
+
def all_status():
|
41
|
+
return list(RunStatus._STATUS_TO_STRING.keys())
|
@@ -0,0 +1,36 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.protos.service_pb2 import RunTag as ProtoRunTag
|
3
|
+
|
4
|
+
|
5
|
+
class RunTag(_MlflowObject):
|
6
|
+
"""Tag object associated with a run."""
|
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
|
+
# TODO deep equality here?
|
15
|
+
return self.__dict__ == other.__dict__
|
16
|
+
return False
|
17
|
+
|
18
|
+
@property
|
19
|
+
def key(self):
|
20
|
+
"""String name of the tag."""
|
21
|
+
return self._key
|
22
|
+
|
23
|
+
@property
|
24
|
+
def value(self):
|
25
|
+
"""String value of the tag."""
|
26
|
+
return self._value
|
27
|
+
|
28
|
+
def to_proto(self):
|
29
|
+
param = ProtoRunTag()
|
30
|
+
param.key = self.key
|
31
|
+
param.value = self.value
|
32
|
+
return param
|
33
|
+
|
34
|
+
@classmethod
|
35
|
+
def from_proto(cls, proto):
|
36
|
+
return cls(proto.key, proto.value)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class SourceType:
|
2
|
+
"""Enum for originating source of a :py:class:`mlflow.entities.Run`."""
|
3
|
+
|
4
|
+
NOTEBOOK, JOB, PROJECT, LOCAL, UNKNOWN = range(1, 6)
|
5
|
+
|
6
|
+
_STRING_TO_SOURCETYPE = {
|
7
|
+
"NOTEBOOK": NOTEBOOK,
|
8
|
+
"JOB": JOB,
|
9
|
+
"PROJECT": PROJECT,
|
10
|
+
"LOCAL": LOCAL,
|
11
|
+
"UNKNOWN": UNKNOWN,
|
12
|
+
}
|
13
|
+
SOURCETYPE_TO_STRING = {value: key for key, value in _STRING_TO_SOURCETYPE.items()}
|
14
|
+
|
15
|
+
@staticmethod
|
16
|
+
def from_string(status_str):
|
17
|
+
if status_str not in SourceType._STRING_TO_SOURCETYPE:
|
18
|
+
raise Exception(
|
19
|
+
f"Could not get run status corresponding to string {status_str}. Valid run "
|
20
|
+
f"status strings: {list(SourceType._STRING_TO_SOURCETYPE.keys())}"
|
21
|
+
)
|
22
|
+
return SourceType._STRING_TO_SOURCETYPE[status_str]
|
23
|
+
|
24
|
+
@staticmethod
|
25
|
+
def to_string(status):
|
26
|
+
if status not in SourceType.SOURCETYPE_TO_STRING:
|
27
|
+
raise Exception(
|
28
|
+
f"Could not get string corresponding to run status {status}. Valid run "
|
29
|
+
f"statuses: {list(SourceType.SOURCETYPE_TO_STRING.keys())}"
|
30
|
+
)
|
31
|
+
return SourceType.SOURCETYPE_TO_STRING[status]
|