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,141 @@
|
|
1
|
+
import warnings
|
2
|
+
from dataclasses import asdict, dataclass
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
6
|
+
from mlflow.exceptions import MlflowException
|
7
|
+
from mlflow.protos.assessments_pb2 import AssessmentSource as ProtoAssessmentSource
|
8
|
+
from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
|
9
|
+
from mlflow.utils.annotations import experimental
|
10
|
+
|
11
|
+
|
12
|
+
@experimental(version="2.21.0")
|
13
|
+
@dataclass
|
14
|
+
class AssessmentSource(_MlflowObject):
|
15
|
+
"""
|
16
|
+
Source of an assessment (human, LLM as a judge with GPT-4, etc).
|
17
|
+
|
18
|
+
When recording an assessment, MLflow mandates providing a source information
|
19
|
+
to keep track of how the assessment is conducted.
|
20
|
+
|
21
|
+
Args:
|
22
|
+
source_type: The type of the assessment source. Must be one of the values in
|
23
|
+
the AssessmentSourceType enum.
|
24
|
+
source_id: An identifier for the source, e.g. user ID or LLM judge ID. If not
|
25
|
+
provided, the default value "default" is used.
|
26
|
+
|
27
|
+
Example:
|
28
|
+
|
29
|
+
Human annotation can be represented with a source type of "HUMAN":
|
30
|
+
|
31
|
+
.. code-block:: python
|
32
|
+
|
33
|
+
import mlflow
|
34
|
+
from mlflow.entities.assessment import AssessmentSource, AssessmentSourceType
|
35
|
+
|
36
|
+
source = AssessmentSource(
|
37
|
+
source_type=AssessmentSourceType.HUMAN,
|
38
|
+
source_id="bob@example.com",
|
39
|
+
)
|
40
|
+
|
41
|
+
LLM-as-a-judge can be represented with a source type of "LLM_JUDGE":
|
42
|
+
|
43
|
+
.. code-block:: python
|
44
|
+
|
45
|
+
import mlflow
|
46
|
+
from mlflow.entities.assessment import AssessmentSource, AssessmentSourceType
|
47
|
+
|
48
|
+
source = AssessmentSource(
|
49
|
+
source_type=AssessmentSourceType.LLM_JUDGE,
|
50
|
+
source_id="gpt-4o-mini",
|
51
|
+
)
|
52
|
+
|
53
|
+
Heuristic evaluation can be represented with a source type of "CODE":
|
54
|
+
|
55
|
+
.. code-block:: python
|
56
|
+
|
57
|
+
import mlflow
|
58
|
+
from mlflow.entities.assessment import AssessmentSource, AssessmentSourceType
|
59
|
+
|
60
|
+
source = AssessmentSource(
|
61
|
+
source_type=AssessmentSourceType.CODE,
|
62
|
+
source_id="repo/evaluation_script.py",
|
63
|
+
)
|
64
|
+
|
65
|
+
To record more context about the assessment, you can use the `metadata` field of
|
66
|
+
the assessment logging APIs as well.
|
67
|
+
"""
|
68
|
+
|
69
|
+
source_type: str
|
70
|
+
source_id: str = "default"
|
71
|
+
|
72
|
+
def __post_init__(self):
|
73
|
+
# Perform the standardization on source_type after initialization
|
74
|
+
self.source_type = AssessmentSourceType._standardize(self.source_type)
|
75
|
+
|
76
|
+
def to_dictionary(self) -> dict[str, Any]:
|
77
|
+
return asdict(self)
|
78
|
+
|
79
|
+
@classmethod
|
80
|
+
def from_dictionary(cls, source_dict: dict[str, Any]) -> "AssessmentSource":
|
81
|
+
return cls(**source_dict)
|
82
|
+
|
83
|
+
def to_proto(self):
|
84
|
+
source = ProtoAssessmentSource()
|
85
|
+
source.source_type = ProtoAssessmentSource.SourceType.Value(self.source_type)
|
86
|
+
if self.source_id is not None:
|
87
|
+
source.source_id = self.source_id
|
88
|
+
return source
|
89
|
+
|
90
|
+
@classmethod
|
91
|
+
def from_proto(cls, proto):
|
92
|
+
return AssessmentSource(
|
93
|
+
source_type=AssessmentSourceType.from_proto(proto.source_type),
|
94
|
+
source_id=proto.source_id if proto.source_id else None,
|
95
|
+
)
|
96
|
+
|
97
|
+
|
98
|
+
@experimental(version="2.21.0")
|
99
|
+
class AssessmentSourceType:
|
100
|
+
SOURCE_TYPE_UNSPECIFIED = "SOURCE_TYPE_UNSPECIFIED"
|
101
|
+
LLM_JUDGE = "LLM_JUDGE"
|
102
|
+
AI_JUDGE = "AI_JUDGE" # Deprecated, use LLM_JUDGE instead
|
103
|
+
HUMAN = "HUMAN"
|
104
|
+
CODE = "CODE"
|
105
|
+
_SOURCE_TYPES = [SOURCE_TYPE_UNSPECIFIED, LLM_JUDGE, HUMAN, CODE]
|
106
|
+
|
107
|
+
def __init__(self, source_type: str):
|
108
|
+
self._source_type = AssessmentSourceType._parse(source_type)
|
109
|
+
|
110
|
+
@staticmethod
|
111
|
+
def _parse(source_type: str) -> str:
|
112
|
+
source_type = source_type.upper()
|
113
|
+
|
114
|
+
# Backwards compatibility shim for mlflow.evaluations.AssessmentSourceType
|
115
|
+
if source_type == AssessmentSourceType.AI_JUDGE:
|
116
|
+
warnings.warn(
|
117
|
+
"AI_JUDGE is deprecated. Use LLM_JUDGE instead.",
|
118
|
+
DeprecationWarning,
|
119
|
+
)
|
120
|
+
source_type = AssessmentSourceType.LLM_JUDGE
|
121
|
+
|
122
|
+
if source_type not in AssessmentSourceType._SOURCE_TYPES:
|
123
|
+
raise MlflowException(
|
124
|
+
message=(
|
125
|
+
f"Invalid assessment source type: {source_type}. "
|
126
|
+
f"Valid source types: {AssessmentSourceType._SOURCE_TYPES}"
|
127
|
+
),
|
128
|
+
error_code=INVALID_PARAMETER_VALUE,
|
129
|
+
)
|
130
|
+
return source_type
|
131
|
+
|
132
|
+
def __str__(self):
|
133
|
+
return self._source_type
|
134
|
+
|
135
|
+
@staticmethod
|
136
|
+
def _standardize(source_type: str) -> str:
|
137
|
+
return str(AssessmentSourceType(source_type))
|
138
|
+
|
139
|
+
@classmethod
|
140
|
+
def from_proto(cls, proto_source_type) -> str:
|
141
|
+
return ProtoAssessmentSource.SourceType.Name(proto_source_type)
|
@@ -0,0 +1,92 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
3
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
4
|
+
from mlflow.protos.service_pb2 import Dataset as ProtoDataset
|
5
|
+
|
6
|
+
|
7
|
+
class Dataset(_MlflowObject):
|
8
|
+
"""Dataset object associated with an experiment."""
|
9
|
+
|
10
|
+
def __init__(
|
11
|
+
self,
|
12
|
+
name: str,
|
13
|
+
digest: str,
|
14
|
+
source_type: str,
|
15
|
+
source: str,
|
16
|
+
schema: Optional[str] = None,
|
17
|
+
profile: Optional[str] = None,
|
18
|
+
) -> None:
|
19
|
+
self._name = name
|
20
|
+
self._digest = digest
|
21
|
+
self._source_type = source_type
|
22
|
+
self._source = source
|
23
|
+
self._schema = schema
|
24
|
+
self._profile = profile
|
25
|
+
|
26
|
+
def __eq__(self, other: _MlflowObject) -> bool:
|
27
|
+
if type(other) is type(self):
|
28
|
+
return self.__dict__ == other.__dict__
|
29
|
+
return False
|
30
|
+
|
31
|
+
@property
|
32
|
+
def name(self) -> str:
|
33
|
+
"""String name of the dataset."""
|
34
|
+
return self._name
|
35
|
+
|
36
|
+
@property
|
37
|
+
def digest(self) -> str:
|
38
|
+
"""String digest of the dataset."""
|
39
|
+
return self._digest
|
40
|
+
|
41
|
+
@property
|
42
|
+
def source_type(self) -> str:
|
43
|
+
"""String source_type of the dataset."""
|
44
|
+
return self._source_type
|
45
|
+
|
46
|
+
@property
|
47
|
+
def source(self) -> str:
|
48
|
+
"""String source of the dataset."""
|
49
|
+
return self._source
|
50
|
+
|
51
|
+
@property
|
52
|
+
def schema(self) -> str:
|
53
|
+
"""String schema of the dataset."""
|
54
|
+
return self._schema
|
55
|
+
|
56
|
+
@property
|
57
|
+
def profile(self) -> str:
|
58
|
+
"""String profile of the dataset."""
|
59
|
+
return self._profile
|
60
|
+
|
61
|
+
def to_proto(self):
|
62
|
+
dataset = ProtoDataset()
|
63
|
+
dataset.name = self.name
|
64
|
+
dataset.digest = self.digest
|
65
|
+
dataset.source_type = self.source_type
|
66
|
+
dataset.source = self.source
|
67
|
+
if self.schema:
|
68
|
+
dataset.schema = self.schema
|
69
|
+
if self.profile:
|
70
|
+
dataset.profile = self.profile
|
71
|
+
return dataset
|
72
|
+
|
73
|
+
@classmethod
|
74
|
+
def from_proto(cls, proto):
|
75
|
+
return cls(
|
76
|
+
proto.name,
|
77
|
+
proto.digest,
|
78
|
+
proto.source_type,
|
79
|
+
proto.source,
|
80
|
+
proto.schema if proto.HasField("schema") else None,
|
81
|
+
proto.profile if proto.HasField("profile") else None,
|
82
|
+
)
|
83
|
+
|
84
|
+
def to_dictionary(self):
|
85
|
+
return {
|
86
|
+
"name": self.name,
|
87
|
+
"digest": self.digest,
|
88
|
+
"source_type": self.source_type,
|
89
|
+
"source": self.source,
|
90
|
+
"schema": self.schema,
|
91
|
+
"profile": self.profile,
|
92
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
3
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
4
|
+
from mlflow.entities.dataset import Dataset
|
5
|
+
from mlflow.entities.input_tag import InputTag
|
6
|
+
from mlflow.protos.service_pb2 import DatasetInput as ProtoDatasetInput
|
7
|
+
|
8
|
+
|
9
|
+
class DatasetInput(_MlflowObject):
|
10
|
+
"""DatasetInput object associated with an experiment."""
|
11
|
+
|
12
|
+
def __init__(self, dataset: Dataset, tags: Optional[list[InputTag]] = None) -> None:
|
13
|
+
self._dataset = dataset
|
14
|
+
self._tags = tags or []
|
15
|
+
|
16
|
+
def __eq__(self, other: _MlflowObject) -> bool:
|
17
|
+
if type(other) is type(self):
|
18
|
+
return self.__dict__ == other.__dict__
|
19
|
+
return False
|
20
|
+
|
21
|
+
def _add_tag(self, tag: InputTag) -> None:
|
22
|
+
self._tags.append(tag)
|
23
|
+
|
24
|
+
@property
|
25
|
+
def tags(self) -> list[InputTag]:
|
26
|
+
"""Array of input tags."""
|
27
|
+
return self._tags
|
28
|
+
|
29
|
+
@property
|
30
|
+
def dataset(self) -> Dataset:
|
31
|
+
"""Dataset."""
|
32
|
+
return self._dataset
|
33
|
+
|
34
|
+
def to_proto(self):
|
35
|
+
dataset_input = ProtoDatasetInput()
|
36
|
+
dataset_input.tags.extend([tag.to_proto() for tag in self.tags])
|
37
|
+
dataset_input.dataset.MergeFrom(self.dataset.to_proto())
|
38
|
+
return dataset_input
|
39
|
+
|
40
|
+
@classmethod
|
41
|
+
def from_proto(cls, proto):
|
42
|
+
dataset_input = cls(Dataset.from_proto(proto.dataset))
|
43
|
+
for input_tag in proto.tags:
|
44
|
+
dataset_input._add_tag(InputTag.from_proto(input_tag))
|
45
|
+
return dataset_input
|
46
|
+
|
47
|
+
def to_dictionary(self):
|
48
|
+
return {
|
49
|
+
"dataset": self.dataset.to_dictionary(),
|
50
|
+
"tags": {tag.key: tag.value for tag in self.tags},
|
51
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
from mlflow.protos.service_pb2 import DatasetSummary
|
2
|
+
|
3
|
+
|
4
|
+
class _DatasetSummary:
|
5
|
+
"""
|
6
|
+
DatasetSummary object.
|
7
|
+
|
8
|
+
This is used to return a list of dataset summaries across one or more experiments in the UI.
|
9
|
+
"""
|
10
|
+
|
11
|
+
def __init__(self, experiment_id, name, digest, context):
|
12
|
+
self._experiment_id = experiment_id
|
13
|
+
self._name = name
|
14
|
+
self._digest = digest
|
15
|
+
self._context = context
|
16
|
+
|
17
|
+
def __eq__(self, other) -> bool:
|
18
|
+
if type(other) is type(self):
|
19
|
+
return self.__dict__ == other.__dict__
|
20
|
+
return False
|
21
|
+
|
22
|
+
@property
|
23
|
+
def experiment_id(self):
|
24
|
+
return self._experiment_id
|
25
|
+
|
26
|
+
@property
|
27
|
+
def name(self):
|
28
|
+
return self._name
|
29
|
+
|
30
|
+
@property
|
31
|
+
def digest(self):
|
32
|
+
return self._digest
|
33
|
+
|
34
|
+
@property
|
35
|
+
def context(self):
|
36
|
+
return self._context
|
37
|
+
|
38
|
+
def to_dict(self):
|
39
|
+
return {
|
40
|
+
"experiment_id": self.experiment_id,
|
41
|
+
"name": self.name,
|
42
|
+
"digest": self.digest,
|
43
|
+
"context": self.context,
|
44
|
+
}
|
45
|
+
|
46
|
+
def to_proto(self):
|
47
|
+
dataset_summary = DatasetSummary()
|
48
|
+
dataset_summary.experiment_id = self.experiment_id
|
49
|
+
dataset_summary.name = self.name
|
50
|
+
dataset_summary.digest = self.digest
|
51
|
+
if self.context:
|
52
|
+
dataset_summary.context = self.context
|
53
|
+
return dataset_summary
|
54
|
+
|
55
|
+
@classmethod
|
56
|
+
def from_proto(cls, proto):
|
57
|
+
return cls(
|
58
|
+
experiment_id=proto.experiment_id,
|
59
|
+
name=proto.name,
|
60
|
+
digest=proto.digest,
|
61
|
+
context=proto.context,
|
62
|
+
)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
from copy import deepcopy
|
2
|
+
from dataclasses import asdict, dataclass, field
|
3
|
+
from typing import Any, Optional
|
4
|
+
|
5
|
+
|
6
|
+
@dataclass
|
7
|
+
class Document:
|
8
|
+
"""
|
9
|
+
An entity used in MLflow Tracing to represent retrieved documents in a RETRIEVER span.
|
10
|
+
|
11
|
+
Args:
|
12
|
+
page_content: The content of the document.
|
13
|
+
metadata: A dictionary of metadata associated with the document.
|
14
|
+
id: The ID of the document.
|
15
|
+
"""
|
16
|
+
|
17
|
+
page_content: str
|
18
|
+
metadata: dict[str, Any] = field(default_factory=dict)
|
19
|
+
id: Optional[str] = None
|
20
|
+
|
21
|
+
@classmethod
|
22
|
+
def from_langchain_document(cls, document):
|
23
|
+
# older versions of langchain do not have the id attribute
|
24
|
+
id = getattr(document, "id", None)
|
25
|
+
|
26
|
+
return cls(
|
27
|
+
page_content=document.page_content,
|
28
|
+
metadata=deepcopy(document.metadata),
|
29
|
+
id=id,
|
30
|
+
)
|
31
|
+
|
32
|
+
@classmethod
|
33
|
+
def from_llama_index_node_with_score(cls, node_with_score):
|
34
|
+
metadata = {
|
35
|
+
"score": node_with_score.get_score(),
|
36
|
+
# update after setting score so that it can be
|
37
|
+
# overridden if the user wishes to do so
|
38
|
+
**deepcopy(node_with_score.metadata),
|
39
|
+
}
|
40
|
+
|
41
|
+
return cls(
|
42
|
+
page_content=node_with_score.get_content(),
|
43
|
+
metadata=metadata,
|
44
|
+
id=node_with_score.node_id,
|
45
|
+
)
|
46
|
+
|
47
|
+
def to_dict(self):
|
48
|
+
return asdict(self)
|
@@ -0,0 +1,109 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.entities.experiment_tag import ExperimentTag
|
3
|
+
from mlflow.protos.service_pb2 import Experiment as ProtoExperiment
|
4
|
+
from mlflow.protos.service_pb2 import ExperimentTag as ProtoExperimentTag
|
5
|
+
|
6
|
+
|
7
|
+
class Experiment(_MlflowObject):
|
8
|
+
"""
|
9
|
+
Experiment object.
|
10
|
+
"""
|
11
|
+
|
12
|
+
DEFAULT_EXPERIMENT_NAME = "Default"
|
13
|
+
|
14
|
+
def __init__(
|
15
|
+
self,
|
16
|
+
experiment_id,
|
17
|
+
name,
|
18
|
+
artifact_location,
|
19
|
+
lifecycle_stage,
|
20
|
+
tags=None,
|
21
|
+
creation_time=None,
|
22
|
+
last_update_time=None,
|
23
|
+
):
|
24
|
+
super().__init__()
|
25
|
+
self._experiment_id = experiment_id
|
26
|
+
self._name = name
|
27
|
+
self._artifact_location = artifact_location
|
28
|
+
self._lifecycle_stage = lifecycle_stage
|
29
|
+
self._tags = {tag.key: tag.value for tag in (tags or [])}
|
30
|
+
self._creation_time = creation_time
|
31
|
+
self._last_update_time = last_update_time
|
32
|
+
|
33
|
+
@property
|
34
|
+
def experiment_id(self):
|
35
|
+
"""String ID of the experiment."""
|
36
|
+
return self._experiment_id
|
37
|
+
|
38
|
+
@property
|
39
|
+
def name(self):
|
40
|
+
"""String name of the experiment."""
|
41
|
+
return self._name
|
42
|
+
|
43
|
+
def _set_name(self, new_name):
|
44
|
+
self._name = new_name
|
45
|
+
|
46
|
+
@property
|
47
|
+
def artifact_location(self):
|
48
|
+
"""String corresponding to the root artifact URI for the experiment."""
|
49
|
+
return self._artifact_location
|
50
|
+
|
51
|
+
@property
|
52
|
+
def lifecycle_stage(self):
|
53
|
+
"""Lifecycle stage of the experiment. Can either be 'active' or 'deleted'."""
|
54
|
+
return self._lifecycle_stage
|
55
|
+
|
56
|
+
@property
|
57
|
+
def tags(self):
|
58
|
+
"""Tags that have been set on the experiment."""
|
59
|
+
return self._tags
|
60
|
+
|
61
|
+
def _add_tag(self, tag):
|
62
|
+
self._tags[tag.key] = tag.value
|
63
|
+
|
64
|
+
@property
|
65
|
+
def creation_time(self):
|
66
|
+
return self._creation_time
|
67
|
+
|
68
|
+
def _set_creation_time(self, creation_time):
|
69
|
+
self._creation_time = creation_time
|
70
|
+
|
71
|
+
@property
|
72
|
+
def last_update_time(self):
|
73
|
+
return self._last_update_time
|
74
|
+
|
75
|
+
def _set_last_update_time(self, last_update_time):
|
76
|
+
self._last_update_time = last_update_time
|
77
|
+
|
78
|
+
@classmethod
|
79
|
+
def from_proto(cls, proto):
|
80
|
+
experiment = cls(
|
81
|
+
proto.experiment_id,
|
82
|
+
proto.name,
|
83
|
+
proto.artifact_location,
|
84
|
+
proto.lifecycle_stage,
|
85
|
+
# `creation_time` and `last_update_time` were added in MLflow 1.29.0. Experiments
|
86
|
+
# created before this version don't have these fields and `proto.creation_time` and
|
87
|
+
# `proto.last_update_time` default to 0. We should only set `creation_time` and
|
88
|
+
# `last_update_time` if they are non-zero.
|
89
|
+
creation_time=proto.creation_time or None,
|
90
|
+
last_update_time=proto.last_update_time or None,
|
91
|
+
)
|
92
|
+
for proto_tag in proto.tags:
|
93
|
+
experiment._add_tag(ExperimentTag.from_proto(proto_tag))
|
94
|
+
return experiment
|
95
|
+
|
96
|
+
def to_proto(self):
|
97
|
+
experiment = ProtoExperiment()
|
98
|
+
experiment.experiment_id = self.experiment_id
|
99
|
+
experiment.name = self.name
|
100
|
+
experiment.artifact_location = self.artifact_location
|
101
|
+
experiment.lifecycle_stage = self.lifecycle_stage
|
102
|
+
if self.creation_time:
|
103
|
+
experiment.creation_time = self.creation_time
|
104
|
+
if self.last_update_time:
|
105
|
+
experiment.last_update_time = self.last_update_time
|
106
|
+
experiment.tags.extend(
|
107
|
+
[ProtoExperimentTag(key=key, value=val) for key, val in self._tags.items()]
|
108
|
+
)
|
109
|
+
return experiment
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.protos.service_pb2 import ExperimentTag as ProtoExperimentTag
|
3
|
+
|
4
|
+
|
5
|
+
class ExperimentTag(_MlflowObject):
|
6
|
+
"""Tag object associated with an experiment."""
|
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
|
+
def to_proto(self):
|
28
|
+
param = ProtoExperimentTag()
|
29
|
+
param.key = self.key
|
30
|
+
param.value = self.value
|
31
|
+
return param
|
32
|
+
|
33
|
+
@classmethod
|
34
|
+
def from_proto(cls, proto):
|
35
|
+
return cls(proto.key, proto.value)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.protos.service_pb2 import FileInfo as ProtoFileInfo
|
3
|
+
|
4
|
+
|
5
|
+
class FileInfo(_MlflowObject):
|
6
|
+
"""
|
7
|
+
Metadata about a file or directory.
|
8
|
+
"""
|
9
|
+
|
10
|
+
def __init__(self, path, is_dir, file_size):
|
11
|
+
self._path = path
|
12
|
+
self._is_dir = is_dir
|
13
|
+
self._bytes = file_size
|
14
|
+
|
15
|
+
def __eq__(self, other):
|
16
|
+
if type(other) is type(self):
|
17
|
+
return self.__dict__ == other.__dict__
|
18
|
+
return False
|
19
|
+
|
20
|
+
@property
|
21
|
+
def path(self):
|
22
|
+
"""String path of the file or directory."""
|
23
|
+
return self._path
|
24
|
+
|
25
|
+
@property
|
26
|
+
def is_dir(self):
|
27
|
+
"""Whether the FileInfo corresponds to a directory."""
|
28
|
+
return self._is_dir
|
29
|
+
|
30
|
+
@property
|
31
|
+
def file_size(self):
|
32
|
+
"""Size of the file or directory. If the FileInfo is a directory, returns None."""
|
33
|
+
return self._bytes
|
34
|
+
|
35
|
+
def to_proto(self):
|
36
|
+
proto = ProtoFileInfo()
|
37
|
+
proto.path = self.path
|
38
|
+
proto.is_dir = self.is_dir
|
39
|
+
if self.file_size:
|
40
|
+
proto.file_size = self.file_size
|
41
|
+
return proto
|
42
|
+
|
43
|
+
@classmethod
|
44
|
+
def from_proto(cls, proto):
|
45
|
+
return cls(proto.path, proto.is_dir, proto.file_size)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from mlflow.entities._mlflow_object import _MlflowObject
|
2
|
+
from mlflow.protos.service_pb2 import InputTag as ProtoInputTag
|
3
|
+
|
4
|
+
|
5
|
+
class InputTag(_MlflowObject):
|
6
|
+
"""Input tag object associated with a dataset."""
|
7
|
+
|
8
|
+
def __init__(self, key: str, value: str) -> None:
|
9
|
+
self._key = key
|
10
|
+
self._value = value
|
11
|
+
|
12
|
+
def __eq__(self, other: _MlflowObject) -> bool:
|
13
|
+
if type(other) is type(self):
|
14
|
+
return self.__dict__ == other.__dict__
|
15
|
+
return False
|
16
|
+
|
17
|
+
@property
|
18
|
+
def key(self) -> str:
|
19
|
+
"""String name of the input tag."""
|
20
|
+
return self._key
|
21
|
+
|
22
|
+
@property
|
23
|
+
def value(self) -> str:
|
24
|
+
"""String value of the input tag."""
|
25
|
+
return self._value
|
26
|
+
|
27
|
+
def to_proto(self):
|
28
|
+
tag = ProtoInputTag()
|
29
|
+
tag.key = self.key
|
30
|
+
tag.value = self.value
|
31
|
+
return tag
|
32
|
+
|
33
|
+
@classmethod
|
34
|
+
def from_proto(cls, proto):
|
35
|
+
return cls(proto.key, proto.value)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from mlflow.entities.view_type import ViewType
|
2
|
+
from mlflow.exceptions import MlflowException
|
3
|
+
|
4
|
+
|
5
|
+
class LifecycleStage:
|
6
|
+
ACTIVE = "active"
|
7
|
+
DELETED = "deleted"
|
8
|
+
_VALID_STAGES = {ACTIVE, DELETED}
|
9
|
+
|
10
|
+
@classmethod
|
11
|
+
def view_type_to_stages(cls, view_type=ViewType.ALL):
|
12
|
+
stages = []
|
13
|
+
if view_type == ViewType.ACTIVE_ONLY or view_type == ViewType.ALL:
|
14
|
+
stages.append(cls.ACTIVE)
|
15
|
+
if view_type == ViewType.DELETED_ONLY or view_type == ViewType.ALL:
|
16
|
+
stages.append(cls.DELETED)
|
17
|
+
return stages
|
18
|
+
|
19
|
+
@classmethod
|
20
|
+
def is_valid(cls, lifecycle_stage):
|
21
|
+
return lifecycle_stage in cls._VALID_STAGES
|
22
|
+
|
23
|
+
@classmethod
|
24
|
+
def matches_view_type(cls, view_type, lifecycle_stage):
|
25
|
+
if not cls.is_valid(lifecycle_stage):
|
26
|
+
raise MlflowException(f"Invalid lifecycle stage '{lifecycle_stage}'")
|
27
|
+
|
28
|
+
if view_type == ViewType.ALL:
|
29
|
+
return True
|
30
|
+
elif view_type == ViewType.ACTIVE_ONLY:
|
31
|
+
return lifecycle_stage == LifecycleStage.ACTIVE
|
32
|
+
elif view_type == ViewType.DELETED_ONLY:
|
33
|
+
return lifecycle_stage == LifecycleStage.DELETED
|
34
|
+
else:
|
35
|
+
raise MlflowException(f"Invalid view type '{view_type}'")
|