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.
Files changed (645) hide show
  1. genesis_flow-1.0.0.dist-info/METADATA +822 -0
  2. genesis_flow-1.0.0.dist-info/RECORD +645 -0
  3. genesis_flow-1.0.0.dist-info/WHEEL +5 -0
  4. genesis_flow-1.0.0.dist-info/entry_points.txt +19 -0
  5. genesis_flow-1.0.0.dist-info/licenses/LICENSE.txt +202 -0
  6. genesis_flow-1.0.0.dist-info/top_level.txt +1 -0
  7. mlflow/__init__.py +367 -0
  8. mlflow/__main__.py +3 -0
  9. mlflow/ag2/__init__.py +56 -0
  10. mlflow/ag2/ag2_logger.py +294 -0
  11. mlflow/anthropic/__init__.py +40 -0
  12. mlflow/anthropic/autolog.py +129 -0
  13. mlflow/anthropic/chat.py +144 -0
  14. mlflow/artifacts/__init__.py +268 -0
  15. mlflow/autogen/__init__.py +144 -0
  16. mlflow/autogen/chat.py +142 -0
  17. mlflow/azure/__init__.py +26 -0
  18. mlflow/azure/auth_handler.py +257 -0
  19. mlflow/azure/client.py +319 -0
  20. mlflow/azure/config.py +120 -0
  21. mlflow/azure/connection_factory.py +340 -0
  22. mlflow/azure/exceptions.py +27 -0
  23. mlflow/azure/stores.py +327 -0
  24. mlflow/azure/utils.py +183 -0
  25. mlflow/bedrock/__init__.py +45 -0
  26. mlflow/bedrock/_autolog.py +202 -0
  27. mlflow/bedrock/chat.py +122 -0
  28. mlflow/bedrock/stream.py +160 -0
  29. mlflow/bedrock/utils.py +43 -0
  30. mlflow/cli.py +707 -0
  31. mlflow/client.py +12 -0
  32. mlflow/config/__init__.py +56 -0
  33. mlflow/crewai/__init__.py +79 -0
  34. mlflow/crewai/autolog.py +253 -0
  35. mlflow/crewai/chat.py +29 -0
  36. mlflow/data/__init__.py +75 -0
  37. mlflow/data/artifact_dataset_sources.py +170 -0
  38. mlflow/data/code_dataset_source.py +40 -0
  39. mlflow/data/dataset.py +123 -0
  40. mlflow/data/dataset_registry.py +168 -0
  41. mlflow/data/dataset_source.py +110 -0
  42. mlflow/data/dataset_source_registry.py +219 -0
  43. mlflow/data/delta_dataset_source.py +167 -0
  44. mlflow/data/digest_utils.py +108 -0
  45. mlflow/data/evaluation_dataset.py +562 -0
  46. mlflow/data/filesystem_dataset_source.py +81 -0
  47. mlflow/data/http_dataset_source.py +145 -0
  48. mlflow/data/huggingface_dataset.py +258 -0
  49. mlflow/data/huggingface_dataset_source.py +118 -0
  50. mlflow/data/meta_dataset.py +104 -0
  51. mlflow/data/numpy_dataset.py +223 -0
  52. mlflow/data/pandas_dataset.py +231 -0
  53. mlflow/data/polars_dataset.py +352 -0
  54. mlflow/data/pyfunc_dataset_mixin.py +31 -0
  55. mlflow/data/schema.py +76 -0
  56. mlflow/data/sources.py +1 -0
  57. mlflow/data/spark_dataset.py +406 -0
  58. mlflow/data/spark_dataset_source.py +74 -0
  59. mlflow/data/spark_delta_utils.py +118 -0
  60. mlflow/data/tensorflow_dataset.py +350 -0
  61. mlflow/data/uc_volume_dataset_source.py +81 -0
  62. mlflow/db.py +27 -0
  63. mlflow/dspy/__init__.py +17 -0
  64. mlflow/dspy/autolog.py +197 -0
  65. mlflow/dspy/callback.py +398 -0
  66. mlflow/dspy/constant.py +1 -0
  67. mlflow/dspy/load.py +93 -0
  68. mlflow/dspy/save.py +393 -0
  69. mlflow/dspy/util.py +109 -0
  70. mlflow/dspy/wrapper.py +226 -0
  71. mlflow/entities/__init__.py +104 -0
  72. mlflow/entities/_mlflow_object.py +52 -0
  73. mlflow/entities/assessment.py +545 -0
  74. mlflow/entities/assessment_error.py +80 -0
  75. mlflow/entities/assessment_source.py +141 -0
  76. mlflow/entities/dataset.py +92 -0
  77. mlflow/entities/dataset_input.py +51 -0
  78. mlflow/entities/dataset_summary.py +62 -0
  79. mlflow/entities/document.py +48 -0
  80. mlflow/entities/experiment.py +109 -0
  81. mlflow/entities/experiment_tag.py +35 -0
  82. mlflow/entities/file_info.py +45 -0
  83. mlflow/entities/input_tag.py +35 -0
  84. mlflow/entities/lifecycle_stage.py +35 -0
  85. mlflow/entities/logged_model.py +228 -0
  86. mlflow/entities/logged_model_input.py +26 -0
  87. mlflow/entities/logged_model_output.py +32 -0
  88. mlflow/entities/logged_model_parameter.py +46 -0
  89. mlflow/entities/logged_model_status.py +74 -0
  90. mlflow/entities/logged_model_tag.py +33 -0
  91. mlflow/entities/metric.py +200 -0
  92. mlflow/entities/model_registry/__init__.py +29 -0
  93. mlflow/entities/model_registry/_model_registry_entity.py +13 -0
  94. mlflow/entities/model_registry/model_version.py +243 -0
  95. mlflow/entities/model_registry/model_version_deployment_job_run_state.py +44 -0
  96. mlflow/entities/model_registry/model_version_deployment_job_state.py +70 -0
  97. mlflow/entities/model_registry/model_version_search.py +25 -0
  98. mlflow/entities/model_registry/model_version_stages.py +25 -0
  99. mlflow/entities/model_registry/model_version_status.py +35 -0
  100. mlflow/entities/model_registry/model_version_tag.py +35 -0
  101. mlflow/entities/model_registry/prompt.py +73 -0
  102. mlflow/entities/model_registry/prompt_version.py +244 -0
  103. mlflow/entities/model_registry/registered_model.py +175 -0
  104. mlflow/entities/model_registry/registered_model_alias.py +35 -0
  105. mlflow/entities/model_registry/registered_model_deployment_job_state.py +39 -0
  106. mlflow/entities/model_registry/registered_model_search.py +25 -0
  107. mlflow/entities/model_registry/registered_model_tag.py +35 -0
  108. mlflow/entities/multipart_upload.py +74 -0
  109. mlflow/entities/param.py +49 -0
  110. mlflow/entities/run.py +97 -0
  111. mlflow/entities/run_data.py +84 -0
  112. mlflow/entities/run_info.py +188 -0
  113. mlflow/entities/run_inputs.py +59 -0
  114. mlflow/entities/run_outputs.py +43 -0
  115. mlflow/entities/run_status.py +41 -0
  116. mlflow/entities/run_tag.py +36 -0
  117. mlflow/entities/source_type.py +31 -0
  118. mlflow/entities/span.py +774 -0
  119. mlflow/entities/span_event.py +96 -0
  120. mlflow/entities/span_status.py +102 -0
  121. mlflow/entities/trace.py +317 -0
  122. mlflow/entities/trace_data.py +71 -0
  123. mlflow/entities/trace_info.py +220 -0
  124. mlflow/entities/trace_info_v2.py +162 -0
  125. mlflow/entities/trace_location.py +173 -0
  126. mlflow/entities/trace_state.py +39 -0
  127. mlflow/entities/trace_status.py +68 -0
  128. mlflow/entities/view_type.py +51 -0
  129. mlflow/environment_variables.py +866 -0
  130. mlflow/evaluation/__init__.py +16 -0
  131. mlflow/evaluation/assessment.py +369 -0
  132. mlflow/evaluation/evaluation.py +411 -0
  133. mlflow/evaluation/evaluation_tag.py +61 -0
  134. mlflow/evaluation/fluent.py +48 -0
  135. mlflow/evaluation/utils.py +201 -0
  136. mlflow/exceptions.py +213 -0
  137. mlflow/experiments.py +140 -0
  138. mlflow/gemini/__init__.py +81 -0
  139. mlflow/gemini/autolog.py +186 -0
  140. mlflow/gemini/chat.py +261 -0
  141. mlflow/genai/__init__.py +71 -0
  142. mlflow/genai/datasets/__init__.py +67 -0
  143. mlflow/genai/datasets/evaluation_dataset.py +131 -0
  144. mlflow/genai/evaluation/__init__.py +3 -0
  145. mlflow/genai/evaluation/base.py +411 -0
  146. mlflow/genai/evaluation/constant.py +23 -0
  147. mlflow/genai/evaluation/utils.py +244 -0
  148. mlflow/genai/judges/__init__.py +21 -0
  149. mlflow/genai/judges/databricks.py +404 -0
  150. mlflow/genai/label_schemas/__init__.py +153 -0
  151. mlflow/genai/label_schemas/label_schemas.py +209 -0
  152. mlflow/genai/labeling/__init__.py +159 -0
  153. mlflow/genai/labeling/labeling.py +250 -0
  154. mlflow/genai/optimize/__init__.py +13 -0
  155. mlflow/genai/optimize/base.py +198 -0
  156. mlflow/genai/optimize/optimizers/__init__.py +4 -0
  157. mlflow/genai/optimize/optimizers/base_optimizer.py +38 -0
  158. mlflow/genai/optimize/optimizers/dspy_mipro_optimizer.py +221 -0
  159. mlflow/genai/optimize/optimizers/dspy_optimizer.py +91 -0
  160. mlflow/genai/optimize/optimizers/utils/dspy_mipro_callback.py +76 -0
  161. mlflow/genai/optimize/optimizers/utils/dspy_mipro_utils.py +18 -0
  162. mlflow/genai/optimize/types.py +75 -0
  163. mlflow/genai/optimize/util.py +30 -0
  164. mlflow/genai/prompts/__init__.py +206 -0
  165. mlflow/genai/scheduled_scorers.py +431 -0
  166. mlflow/genai/scorers/__init__.py +26 -0
  167. mlflow/genai/scorers/base.py +492 -0
  168. mlflow/genai/scorers/builtin_scorers.py +765 -0
  169. mlflow/genai/scorers/scorer_utils.py +138 -0
  170. mlflow/genai/scorers/validation.py +165 -0
  171. mlflow/genai/utils/data_validation.py +146 -0
  172. mlflow/genai/utils/enum_utils.py +23 -0
  173. mlflow/genai/utils/trace_utils.py +211 -0
  174. mlflow/groq/__init__.py +42 -0
  175. mlflow/groq/_groq_autolog.py +74 -0
  176. mlflow/johnsnowlabs/__init__.py +888 -0
  177. mlflow/langchain/__init__.py +24 -0
  178. mlflow/langchain/api_request_parallel_processor.py +330 -0
  179. mlflow/langchain/autolog.py +147 -0
  180. mlflow/langchain/chat_agent_langgraph.py +340 -0
  181. mlflow/langchain/constant.py +1 -0
  182. mlflow/langchain/constants.py +1 -0
  183. mlflow/langchain/databricks_dependencies.py +444 -0
  184. mlflow/langchain/langchain_tracer.py +597 -0
  185. mlflow/langchain/model.py +919 -0
  186. mlflow/langchain/output_parsers.py +142 -0
  187. mlflow/langchain/retriever_chain.py +153 -0
  188. mlflow/langchain/runnables.py +527 -0
  189. mlflow/langchain/utils/chat.py +402 -0
  190. mlflow/langchain/utils/logging.py +671 -0
  191. mlflow/langchain/utils/serialization.py +36 -0
  192. mlflow/legacy_databricks_cli/__init__.py +0 -0
  193. mlflow/legacy_databricks_cli/configure/__init__.py +0 -0
  194. mlflow/legacy_databricks_cli/configure/provider.py +482 -0
  195. mlflow/litellm/__init__.py +175 -0
  196. mlflow/llama_index/__init__.py +22 -0
  197. mlflow/llama_index/autolog.py +55 -0
  198. mlflow/llama_index/chat.py +43 -0
  199. mlflow/llama_index/constant.py +1 -0
  200. mlflow/llama_index/model.py +577 -0
  201. mlflow/llama_index/pyfunc_wrapper.py +332 -0
  202. mlflow/llama_index/serialize_objects.py +188 -0
  203. mlflow/llama_index/tracer.py +561 -0
  204. mlflow/metrics/__init__.py +479 -0
  205. mlflow/metrics/base.py +39 -0
  206. mlflow/metrics/genai/__init__.py +25 -0
  207. mlflow/metrics/genai/base.py +101 -0
  208. mlflow/metrics/genai/genai_metric.py +771 -0
  209. mlflow/metrics/genai/metric_definitions.py +450 -0
  210. mlflow/metrics/genai/model_utils.py +371 -0
  211. mlflow/metrics/genai/prompt_template.py +68 -0
  212. mlflow/metrics/genai/prompts/__init__.py +0 -0
  213. mlflow/metrics/genai/prompts/v1.py +422 -0
  214. mlflow/metrics/genai/utils.py +6 -0
  215. mlflow/metrics/metric_definitions.py +619 -0
  216. mlflow/mismatch.py +34 -0
  217. mlflow/mistral/__init__.py +34 -0
  218. mlflow/mistral/autolog.py +71 -0
  219. mlflow/mistral/chat.py +135 -0
  220. mlflow/ml_package_versions.py +452 -0
  221. mlflow/models/__init__.py +97 -0
  222. mlflow/models/auth_policy.py +83 -0
  223. mlflow/models/cli.py +354 -0
  224. mlflow/models/container/__init__.py +294 -0
  225. mlflow/models/container/scoring_server/__init__.py +0 -0
  226. mlflow/models/container/scoring_server/nginx.conf +39 -0
  227. mlflow/models/dependencies_schemas.py +287 -0
  228. mlflow/models/display_utils.py +158 -0
  229. mlflow/models/docker_utils.py +211 -0
  230. mlflow/models/evaluation/__init__.py +23 -0
  231. mlflow/models/evaluation/_shap_patch.py +64 -0
  232. mlflow/models/evaluation/artifacts.py +194 -0
  233. mlflow/models/evaluation/base.py +1811 -0
  234. mlflow/models/evaluation/calibration_curve.py +109 -0
  235. mlflow/models/evaluation/default_evaluator.py +996 -0
  236. mlflow/models/evaluation/deprecated.py +23 -0
  237. mlflow/models/evaluation/evaluator_registry.py +80 -0
  238. mlflow/models/evaluation/evaluators/classifier.py +704 -0
  239. mlflow/models/evaluation/evaluators/default.py +233 -0
  240. mlflow/models/evaluation/evaluators/regressor.py +96 -0
  241. mlflow/models/evaluation/evaluators/shap.py +296 -0
  242. mlflow/models/evaluation/lift_curve.py +178 -0
  243. mlflow/models/evaluation/utils/metric.py +123 -0
  244. mlflow/models/evaluation/utils/trace.py +179 -0
  245. mlflow/models/evaluation/validation.py +434 -0
  246. mlflow/models/flavor_backend.py +93 -0
  247. mlflow/models/flavor_backend_registry.py +53 -0
  248. mlflow/models/model.py +1639 -0
  249. mlflow/models/model_config.py +150 -0
  250. mlflow/models/notebook_resources/agent_evaluation_template.html +235 -0
  251. mlflow/models/notebook_resources/eval_with_dataset_example.py +22 -0
  252. mlflow/models/notebook_resources/eval_with_synthetic_example.py +22 -0
  253. mlflow/models/python_api.py +369 -0
  254. mlflow/models/rag_signatures.py +128 -0
  255. mlflow/models/resources.py +321 -0
  256. mlflow/models/signature.py +662 -0
  257. mlflow/models/utils.py +2054 -0
  258. mlflow/models/wheeled_model.py +280 -0
  259. mlflow/openai/__init__.py +57 -0
  260. mlflow/openai/_agent_tracer.py +364 -0
  261. mlflow/openai/api_request_parallel_processor.py +131 -0
  262. mlflow/openai/autolog.py +509 -0
  263. mlflow/openai/constant.py +1 -0
  264. mlflow/openai/model.py +824 -0
  265. mlflow/openai/utils/chat_schema.py +367 -0
  266. mlflow/optuna/__init__.py +3 -0
  267. mlflow/optuna/storage.py +646 -0
  268. mlflow/plugins/__init__.py +72 -0
  269. mlflow/plugins/base.py +358 -0
  270. mlflow/plugins/builtin/__init__.py +24 -0
  271. mlflow/plugins/builtin/pytorch_plugin.py +150 -0
  272. mlflow/plugins/builtin/sklearn_plugin.py +158 -0
  273. mlflow/plugins/builtin/transformers_plugin.py +187 -0
  274. mlflow/plugins/cli.py +321 -0
  275. mlflow/plugins/discovery.py +340 -0
  276. mlflow/plugins/manager.py +465 -0
  277. mlflow/plugins/registry.py +316 -0
  278. mlflow/plugins/templates/framework_plugin_template.py +329 -0
  279. mlflow/prompt/constants.py +20 -0
  280. mlflow/prompt/promptlab_model.py +197 -0
  281. mlflow/prompt/registry_utils.py +248 -0
  282. mlflow/promptflow/__init__.py +495 -0
  283. mlflow/protos/__init__.py +0 -0
  284. mlflow/protos/assessments_pb2.py +174 -0
  285. mlflow/protos/databricks_artifacts_pb2.py +489 -0
  286. mlflow/protos/databricks_filesystem_service_pb2.py +196 -0
  287. mlflow/protos/databricks_managed_catalog_messages_pb2.py +95 -0
  288. mlflow/protos/databricks_managed_catalog_service_pb2.py +86 -0
  289. mlflow/protos/databricks_pb2.py +267 -0
  290. mlflow/protos/databricks_trace_server_pb2.py +374 -0
  291. mlflow/protos/databricks_uc_registry_messages_pb2.py +1249 -0
  292. mlflow/protos/databricks_uc_registry_service_pb2.py +170 -0
  293. mlflow/protos/facet_feature_statistics_pb2.py +296 -0
  294. mlflow/protos/internal_pb2.py +77 -0
  295. mlflow/protos/mlflow_artifacts_pb2.py +336 -0
  296. mlflow/protos/model_registry_pb2.py +1073 -0
  297. mlflow/protos/scalapb/__init__.py +0 -0
  298. mlflow/protos/scalapb/scalapb_pb2.py +104 -0
  299. mlflow/protos/service_pb2.py +2600 -0
  300. mlflow/protos/unity_catalog_oss_messages_pb2.py +457 -0
  301. mlflow/protos/unity_catalog_oss_service_pb2.py +130 -0
  302. mlflow/protos/unity_catalog_prompt_messages_pb2.py +447 -0
  303. mlflow/protos/unity_catalog_prompt_messages_pb2_grpc.py +24 -0
  304. mlflow/protos/unity_catalog_prompt_service_pb2.py +164 -0
  305. mlflow/protos/unity_catalog_prompt_service_pb2_grpc.py +785 -0
  306. mlflow/py.typed +0 -0
  307. mlflow/pydantic_ai/__init__.py +57 -0
  308. mlflow/pydantic_ai/autolog.py +173 -0
  309. mlflow/pyfunc/__init__.py +3844 -0
  310. mlflow/pyfunc/_mlflow_pyfunc_backend_predict.py +61 -0
  311. mlflow/pyfunc/backend.py +523 -0
  312. mlflow/pyfunc/context.py +78 -0
  313. mlflow/pyfunc/dbconnect_artifact_cache.py +144 -0
  314. mlflow/pyfunc/loaders/__init__.py +7 -0
  315. mlflow/pyfunc/loaders/chat_agent.py +117 -0
  316. mlflow/pyfunc/loaders/chat_model.py +125 -0
  317. mlflow/pyfunc/loaders/code_model.py +31 -0
  318. mlflow/pyfunc/loaders/responses_agent.py +112 -0
  319. mlflow/pyfunc/mlserver.py +46 -0
  320. mlflow/pyfunc/model.py +1473 -0
  321. mlflow/pyfunc/scoring_server/__init__.py +604 -0
  322. mlflow/pyfunc/scoring_server/app.py +7 -0
  323. mlflow/pyfunc/scoring_server/client.py +146 -0
  324. mlflow/pyfunc/spark_model_cache.py +48 -0
  325. mlflow/pyfunc/stdin_server.py +44 -0
  326. mlflow/pyfunc/utils/__init__.py +3 -0
  327. mlflow/pyfunc/utils/data_validation.py +224 -0
  328. mlflow/pyfunc/utils/environment.py +22 -0
  329. mlflow/pyfunc/utils/input_converter.py +47 -0
  330. mlflow/pyfunc/utils/serving_data_parser.py +11 -0
  331. mlflow/pytorch/__init__.py +1171 -0
  332. mlflow/pytorch/_lightning_autolog.py +580 -0
  333. mlflow/pytorch/_pytorch_autolog.py +50 -0
  334. mlflow/pytorch/pickle_module.py +35 -0
  335. mlflow/rfunc/__init__.py +42 -0
  336. mlflow/rfunc/backend.py +134 -0
  337. mlflow/runs.py +89 -0
  338. mlflow/server/__init__.py +302 -0
  339. mlflow/server/auth/__init__.py +1224 -0
  340. mlflow/server/auth/__main__.py +4 -0
  341. mlflow/server/auth/basic_auth.ini +6 -0
  342. mlflow/server/auth/cli.py +11 -0
  343. mlflow/server/auth/client.py +537 -0
  344. mlflow/server/auth/config.py +34 -0
  345. mlflow/server/auth/db/__init__.py +0 -0
  346. mlflow/server/auth/db/cli.py +18 -0
  347. mlflow/server/auth/db/migrations/__init__.py +0 -0
  348. mlflow/server/auth/db/migrations/alembic.ini +110 -0
  349. mlflow/server/auth/db/migrations/env.py +76 -0
  350. mlflow/server/auth/db/migrations/versions/8606fa83a998_initial_migration.py +51 -0
  351. mlflow/server/auth/db/migrations/versions/__init__.py +0 -0
  352. mlflow/server/auth/db/models.py +67 -0
  353. mlflow/server/auth/db/utils.py +37 -0
  354. mlflow/server/auth/entities.py +165 -0
  355. mlflow/server/auth/logo.py +14 -0
  356. mlflow/server/auth/permissions.py +65 -0
  357. mlflow/server/auth/routes.py +18 -0
  358. mlflow/server/auth/sqlalchemy_store.py +263 -0
  359. mlflow/server/graphql/__init__.py +0 -0
  360. mlflow/server/graphql/autogenerated_graphql_schema.py +353 -0
  361. mlflow/server/graphql/graphql_custom_scalars.py +24 -0
  362. mlflow/server/graphql/graphql_errors.py +15 -0
  363. mlflow/server/graphql/graphql_no_batching.py +89 -0
  364. mlflow/server/graphql/graphql_schema_extensions.py +74 -0
  365. mlflow/server/handlers.py +3217 -0
  366. mlflow/server/prometheus_exporter.py +17 -0
  367. mlflow/server/validation.py +30 -0
  368. mlflow/shap/__init__.py +691 -0
  369. mlflow/sklearn/__init__.py +1994 -0
  370. mlflow/sklearn/utils.py +1041 -0
  371. mlflow/smolagents/__init__.py +66 -0
  372. mlflow/smolagents/autolog.py +139 -0
  373. mlflow/smolagents/chat.py +29 -0
  374. mlflow/store/__init__.py +10 -0
  375. mlflow/store/_unity_catalog/__init__.py +1 -0
  376. mlflow/store/_unity_catalog/lineage/__init__.py +1 -0
  377. mlflow/store/_unity_catalog/lineage/constants.py +2 -0
  378. mlflow/store/_unity_catalog/registry/__init__.py +6 -0
  379. mlflow/store/_unity_catalog/registry/prompt_info.py +75 -0
  380. mlflow/store/_unity_catalog/registry/rest_store.py +1740 -0
  381. mlflow/store/_unity_catalog/registry/uc_oss_rest_store.py +507 -0
  382. mlflow/store/_unity_catalog/registry/utils.py +121 -0
  383. mlflow/store/artifact/__init__.py +0 -0
  384. mlflow/store/artifact/artifact_repo.py +472 -0
  385. mlflow/store/artifact/artifact_repository_registry.py +154 -0
  386. mlflow/store/artifact/azure_blob_artifact_repo.py +275 -0
  387. mlflow/store/artifact/azure_data_lake_artifact_repo.py +295 -0
  388. mlflow/store/artifact/cli.py +141 -0
  389. mlflow/store/artifact/cloud_artifact_repo.py +332 -0
  390. mlflow/store/artifact/databricks_artifact_repo.py +729 -0
  391. mlflow/store/artifact/databricks_artifact_repo_resources.py +301 -0
  392. mlflow/store/artifact/databricks_logged_model_artifact_repo.py +93 -0
  393. mlflow/store/artifact/databricks_models_artifact_repo.py +216 -0
  394. mlflow/store/artifact/databricks_sdk_artifact_repo.py +134 -0
  395. mlflow/store/artifact/databricks_sdk_models_artifact_repo.py +97 -0
  396. mlflow/store/artifact/dbfs_artifact_repo.py +240 -0
  397. mlflow/store/artifact/ftp_artifact_repo.py +132 -0
  398. mlflow/store/artifact/gcs_artifact_repo.py +296 -0
  399. mlflow/store/artifact/hdfs_artifact_repo.py +209 -0
  400. mlflow/store/artifact/http_artifact_repo.py +218 -0
  401. mlflow/store/artifact/local_artifact_repo.py +142 -0
  402. mlflow/store/artifact/mlflow_artifacts_repo.py +94 -0
  403. mlflow/store/artifact/models_artifact_repo.py +259 -0
  404. mlflow/store/artifact/optimized_s3_artifact_repo.py +356 -0
  405. mlflow/store/artifact/presigned_url_artifact_repo.py +173 -0
  406. mlflow/store/artifact/r2_artifact_repo.py +70 -0
  407. mlflow/store/artifact/runs_artifact_repo.py +265 -0
  408. mlflow/store/artifact/s3_artifact_repo.py +330 -0
  409. mlflow/store/artifact/sftp_artifact_repo.py +141 -0
  410. mlflow/store/artifact/uc_volume_artifact_repo.py +76 -0
  411. mlflow/store/artifact/unity_catalog_models_artifact_repo.py +168 -0
  412. mlflow/store/artifact/unity_catalog_oss_models_artifact_repo.py +168 -0
  413. mlflow/store/artifact/utils/__init__.py +0 -0
  414. mlflow/store/artifact/utils/models.py +148 -0
  415. mlflow/store/db/__init__.py +0 -0
  416. mlflow/store/db/base_sql_model.py +3 -0
  417. mlflow/store/db/db_types.py +10 -0
  418. mlflow/store/db/utils.py +314 -0
  419. mlflow/store/db_migrations/__init__.py +0 -0
  420. mlflow/store/db_migrations/alembic.ini +74 -0
  421. mlflow/store/db_migrations/env.py +84 -0
  422. mlflow/store/db_migrations/versions/0584bdc529eb_add_cascading_deletion_to_datasets_from_experiments.py +88 -0
  423. mlflow/store/db_migrations/versions/0a8213491aaa_drop_duplicate_killed_constraint.py +49 -0
  424. mlflow/store/db_migrations/versions/0c779009ac13_add_deleted_time_field_to_runs_table.py +24 -0
  425. mlflow/store/db_migrations/versions/181f10493468_allow_nulls_for_metric_values.py +35 -0
  426. mlflow/store/db_migrations/versions/27a6a02d2cf1_add_model_version_tags_table.py +38 -0
  427. mlflow/store/db_migrations/versions/2b4d017a5e9b_add_model_registry_tables_to_db.py +77 -0
  428. mlflow/store/db_migrations/versions/2d6e25af4d3e_increase_max_param_val_length.py +33 -0
  429. mlflow/store/db_migrations/versions/3500859a5d39_add_model_aliases_table.py +50 -0
  430. mlflow/store/db_migrations/versions/39d1c3be5f05_add_is_nan_constraint_for_metrics_tables_if_necessary.py +41 -0
  431. mlflow/store/db_migrations/versions/400f98739977_add_logged_model_tables.py +123 -0
  432. mlflow/store/db_migrations/versions/4465047574b1_increase_max_dataset_schema_size.py +38 -0
  433. mlflow/store/db_migrations/versions/451aebb31d03_add_metric_step.py +35 -0
  434. mlflow/store/db_migrations/versions/5b0e9adcef9c_add_cascade_deletion_to_trace_tables_fk.py +40 -0
  435. mlflow/store/db_migrations/versions/6953534de441_add_step_to_inputs_table.py +25 -0
  436. mlflow/store/db_migrations/versions/728d730b5ebd_add_registered_model_tags_table.py +38 -0
  437. mlflow/store/db_migrations/versions/7ac759974ad8_update_run_tags_with_larger_limit.py +36 -0
  438. mlflow/store/db_migrations/versions/7f2a7d5fae7d_add_datasets_inputs_input_tags_tables.py +82 -0
  439. mlflow/store/db_migrations/versions/84291f40a231_add_run_link_to_model_version.py +26 -0
  440. mlflow/store/db_migrations/versions/867495a8f9d4_add_trace_tables.py +90 -0
  441. mlflow/store/db_migrations/versions/89d4b8295536_create_latest_metrics_table.py +169 -0
  442. mlflow/store/db_migrations/versions/90e64c465722_migrate_user_column_to_tags.py +64 -0
  443. mlflow/store/db_migrations/versions/97727af70f4d_creation_time_last_update_time_experiments.py +25 -0
  444. mlflow/store/db_migrations/versions/__init__.py +0 -0
  445. mlflow/store/db_migrations/versions/a8c4a736bde6_allow_nulls_for_run_id.py +27 -0
  446. mlflow/store/db_migrations/versions/acf3f17fdcc7_add_storage_location_field_to_model_.py +29 -0
  447. mlflow/store/db_migrations/versions/bd07f7e963c5_create_index_on_run_uuid.py +26 -0
  448. mlflow/store/db_migrations/versions/bda7b8c39065_increase_model_version_tag_value_limit.py +38 -0
  449. mlflow/store/db_migrations/versions/c48cb773bb87_reset_default_value_for_is_nan_in_metrics_table_for_mysql.py +41 -0
  450. mlflow/store/db_migrations/versions/cbc13b556ace_add_v3_trace_schema_columns.py +31 -0
  451. mlflow/store/db_migrations/versions/cc1f77228345_change_param_value_length_to_500.py +34 -0
  452. mlflow/store/db_migrations/versions/cfd24bdc0731_update_run_status_constraint_with_killed.py +78 -0
  453. mlflow/store/db_migrations/versions/df50e92ffc5e_add_experiment_tags_table.py +38 -0
  454. mlflow/store/db_migrations/versions/f5a4f2784254_increase_run_tag_value_limit.py +36 -0
  455. mlflow/store/entities/__init__.py +3 -0
  456. mlflow/store/entities/paged_list.py +18 -0
  457. mlflow/store/model_registry/__init__.py +10 -0
  458. mlflow/store/model_registry/abstract_store.py +1081 -0
  459. mlflow/store/model_registry/base_rest_store.py +44 -0
  460. mlflow/store/model_registry/databricks_workspace_model_registry_rest_store.py +37 -0
  461. mlflow/store/model_registry/dbmodels/__init__.py +0 -0
  462. mlflow/store/model_registry/dbmodels/models.py +206 -0
  463. mlflow/store/model_registry/file_store.py +1091 -0
  464. mlflow/store/model_registry/rest_store.py +481 -0
  465. mlflow/store/model_registry/sqlalchemy_store.py +1286 -0
  466. mlflow/store/tracking/__init__.py +23 -0
  467. mlflow/store/tracking/abstract_store.py +816 -0
  468. mlflow/store/tracking/dbmodels/__init__.py +0 -0
  469. mlflow/store/tracking/dbmodels/initial_models.py +243 -0
  470. mlflow/store/tracking/dbmodels/models.py +1073 -0
  471. mlflow/store/tracking/file_store.py +2438 -0
  472. mlflow/store/tracking/postgres_managed_identity.py +146 -0
  473. mlflow/store/tracking/rest_store.py +1131 -0
  474. mlflow/store/tracking/sqlalchemy_store.py +2785 -0
  475. mlflow/system_metrics/__init__.py +61 -0
  476. mlflow/system_metrics/metrics/__init__.py +0 -0
  477. mlflow/system_metrics/metrics/base_metrics_monitor.py +32 -0
  478. mlflow/system_metrics/metrics/cpu_monitor.py +23 -0
  479. mlflow/system_metrics/metrics/disk_monitor.py +21 -0
  480. mlflow/system_metrics/metrics/gpu_monitor.py +71 -0
  481. mlflow/system_metrics/metrics/network_monitor.py +34 -0
  482. mlflow/system_metrics/metrics/rocm_monitor.py +123 -0
  483. mlflow/system_metrics/system_metrics_monitor.py +198 -0
  484. mlflow/tracing/__init__.py +16 -0
  485. mlflow/tracing/assessment.py +356 -0
  486. mlflow/tracing/client.py +531 -0
  487. mlflow/tracing/config.py +125 -0
  488. mlflow/tracing/constant.py +105 -0
  489. mlflow/tracing/destination.py +81 -0
  490. mlflow/tracing/display/__init__.py +40 -0
  491. mlflow/tracing/display/display_handler.py +196 -0
  492. mlflow/tracing/export/async_export_queue.py +186 -0
  493. mlflow/tracing/export/inference_table.py +138 -0
  494. mlflow/tracing/export/mlflow_v3.py +137 -0
  495. mlflow/tracing/export/utils.py +70 -0
  496. mlflow/tracing/fluent.py +1417 -0
  497. mlflow/tracing/processor/base_mlflow.py +199 -0
  498. mlflow/tracing/processor/inference_table.py +175 -0
  499. mlflow/tracing/processor/mlflow_v3.py +47 -0
  500. mlflow/tracing/processor/otel.py +73 -0
  501. mlflow/tracing/provider.py +487 -0
  502. mlflow/tracing/trace_manager.py +200 -0
  503. mlflow/tracing/utils/__init__.py +616 -0
  504. mlflow/tracing/utils/artifact_utils.py +28 -0
  505. mlflow/tracing/utils/copy.py +55 -0
  506. mlflow/tracing/utils/environment.py +55 -0
  507. mlflow/tracing/utils/exception.py +21 -0
  508. mlflow/tracing/utils/once.py +35 -0
  509. mlflow/tracing/utils/otlp.py +63 -0
  510. mlflow/tracing/utils/processor.py +54 -0
  511. mlflow/tracing/utils/search.py +292 -0
  512. mlflow/tracing/utils/timeout.py +250 -0
  513. mlflow/tracing/utils/token.py +19 -0
  514. mlflow/tracing/utils/truncation.py +124 -0
  515. mlflow/tracing/utils/warning.py +76 -0
  516. mlflow/tracking/__init__.py +39 -0
  517. mlflow/tracking/_model_registry/__init__.py +1 -0
  518. mlflow/tracking/_model_registry/client.py +764 -0
  519. mlflow/tracking/_model_registry/fluent.py +853 -0
  520. mlflow/tracking/_model_registry/registry.py +67 -0
  521. mlflow/tracking/_model_registry/utils.py +251 -0
  522. mlflow/tracking/_tracking_service/__init__.py +0 -0
  523. mlflow/tracking/_tracking_service/client.py +883 -0
  524. mlflow/tracking/_tracking_service/registry.py +56 -0
  525. mlflow/tracking/_tracking_service/utils.py +275 -0
  526. mlflow/tracking/artifact_utils.py +179 -0
  527. mlflow/tracking/client.py +5900 -0
  528. mlflow/tracking/context/__init__.py +0 -0
  529. mlflow/tracking/context/abstract_context.py +35 -0
  530. mlflow/tracking/context/databricks_cluster_context.py +15 -0
  531. mlflow/tracking/context/databricks_command_context.py +15 -0
  532. mlflow/tracking/context/databricks_job_context.py +49 -0
  533. mlflow/tracking/context/databricks_notebook_context.py +41 -0
  534. mlflow/tracking/context/databricks_repo_context.py +43 -0
  535. mlflow/tracking/context/default_context.py +51 -0
  536. mlflow/tracking/context/git_context.py +32 -0
  537. mlflow/tracking/context/registry.py +98 -0
  538. mlflow/tracking/context/system_environment_context.py +15 -0
  539. mlflow/tracking/default_experiment/__init__.py +1 -0
  540. mlflow/tracking/default_experiment/abstract_context.py +43 -0
  541. mlflow/tracking/default_experiment/databricks_notebook_experiment_provider.py +44 -0
  542. mlflow/tracking/default_experiment/registry.py +75 -0
  543. mlflow/tracking/fluent.py +3595 -0
  544. mlflow/tracking/metric_value_conversion_utils.py +93 -0
  545. mlflow/tracking/multimedia.py +206 -0
  546. mlflow/tracking/registry.py +86 -0
  547. mlflow/tracking/request_auth/__init__.py +0 -0
  548. mlflow/tracking/request_auth/abstract_request_auth_provider.py +34 -0
  549. mlflow/tracking/request_auth/registry.py +60 -0
  550. mlflow/tracking/request_header/__init__.py +0 -0
  551. mlflow/tracking/request_header/abstract_request_header_provider.py +36 -0
  552. mlflow/tracking/request_header/databricks_request_header_provider.py +38 -0
  553. mlflow/tracking/request_header/default_request_header_provider.py +17 -0
  554. mlflow/tracking/request_header/registry.py +79 -0
  555. mlflow/transformers/__init__.py +2982 -0
  556. mlflow/transformers/flavor_config.py +258 -0
  557. mlflow/transformers/hub_utils.py +83 -0
  558. mlflow/transformers/llm_inference_utils.py +468 -0
  559. mlflow/transformers/model_io.py +301 -0
  560. mlflow/transformers/peft.py +51 -0
  561. mlflow/transformers/signature.py +183 -0
  562. mlflow/transformers/torch_utils.py +55 -0
  563. mlflow/types/__init__.py +21 -0
  564. mlflow/types/agent.py +270 -0
  565. mlflow/types/chat.py +240 -0
  566. mlflow/types/llm.py +935 -0
  567. mlflow/types/responses.py +139 -0
  568. mlflow/types/responses_helpers.py +416 -0
  569. mlflow/types/schema.py +1505 -0
  570. mlflow/types/type_hints.py +647 -0
  571. mlflow/types/utils.py +753 -0
  572. mlflow/utils/__init__.py +283 -0
  573. mlflow/utils/_capture_modules.py +256 -0
  574. mlflow/utils/_capture_transformers_modules.py +75 -0
  575. mlflow/utils/_spark_utils.py +201 -0
  576. mlflow/utils/_unity_catalog_oss_utils.py +97 -0
  577. mlflow/utils/_unity_catalog_utils.py +479 -0
  578. mlflow/utils/annotations.py +218 -0
  579. mlflow/utils/arguments_utils.py +16 -0
  580. mlflow/utils/async_logging/__init__.py +1 -0
  581. mlflow/utils/async_logging/async_artifacts_logging_queue.py +258 -0
  582. mlflow/utils/async_logging/async_logging_queue.py +366 -0
  583. mlflow/utils/async_logging/run_artifact.py +38 -0
  584. mlflow/utils/async_logging/run_batch.py +58 -0
  585. mlflow/utils/async_logging/run_operations.py +49 -0
  586. mlflow/utils/autologging_utils/__init__.py +737 -0
  587. mlflow/utils/autologging_utils/client.py +432 -0
  588. mlflow/utils/autologging_utils/config.py +33 -0
  589. mlflow/utils/autologging_utils/events.py +294 -0
  590. mlflow/utils/autologging_utils/logging_and_warnings.py +328 -0
  591. mlflow/utils/autologging_utils/metrics_queue.py +71 -0
  592. mlflow/utils/autologging_utils/safety.py +1104 -0
  593. mlflow/utils/autologging_utils/versioning.py +95 -0
  594. mlflow/utils/checkpoint_utils.py +206 -0
  595. mlflow/utils/class_utils.py +6 -0
  596. mlflow/utils/cli_args.py +257 -0
  597. mlflow/utils/conda.py +354 -0
  598. mlflow/utils/credentials.py +231 -0
  599. mlflow/utils/data_utils.py +17 -0
  600. mlflow/utils/databricks_utils.py +1436 -0
  601. mlflow/utils/docstring_utils.py +477 -0
  602. mlflow/utils/doctor.py +133 -0
  603. mlflow/utils/download_cloud_file_chunk.py +43 -0
  604. mlflow/utils/env_manager.py +16 -0
  605. mlflow/utils/env_pack.py +131 -0
  606. mlflow/utils/environment.py +1009 -0
  607. mlflow/utils/exception_utils.py +14 -0
  608. mlflow/utils/file_utils.py +978 -0
  609. mlflow/utils/git_utils.py +77 -0
  610. mlflow/utils/gorilla.py +797 -0
  611. mlflow/utils/import_hooks/__init__.py +363 -0
  612. mlflow/utils/lazy_load.py +51 -0
  613. mlflow/utils/logging_utils.py +168 -0
  614. mlflow/utils/mime_type_utils.py +58 -0
  615. mlflow/utils/mlflow_tags.py +103 -0
  616. mlflow/utils/model_utils.py +486 -0
  617. mlflow/utils/name_utils.py +346 -0
  618. mlflow/utils/nfs_on_spark.py +62 -0
  619. mlflow/utils/openai_utils.py +164 -0
  620. mlflow/utils/os.py +12 -0
  621. mlflow/utils/oss_registry_utils.py +29 -0
  622. mlflow/utils/plugins.py +17 -0
  623. mlflow/utils/process.py +182 -0
  624. mlflow/utils/promptlab_utils.py +146 -0
  625. mlflow/utils/proto_json_utils.py +743 -0
  626. mlflow/utils/pydantic_utils.py +54 -0
  627. mlflow/utils/request_utils.py +279 -0
  628. mlflow/utils/requirements_utils.py +704 -0
  629. mlflow/utils/rest_utils.py +673 -0
  630. mlflow/utils/search_logged_model_utils.py +127 -0
  631. mlflow/utils/search_utils.py +2111 -0
  632. mlflow/utils/secure_loading.py +221 -0
  633. mlflow/utils/security_validation.py +384 -0
  634. mlflow/utils/server_cli_utils.py +61 -0
  635. mlflow/utils/spark_utils.py +15 -0
  636. mlflow/utils/string_utils.py +138 -0
  637. mlflow/utils/thread_utils.py +63 -0
  638. mlflow/utils/time.py +54 -0
  639. mlflow/utils/timeout.py +42 -0
  640. mlflow/utils/uri.py +572 -0
  641. mlflow/utils/validation.py +662 -0
  642. mlflow/utils/virtualenv.py +458 -0
  643. mlflow/utils/warnings_utils.py +25 -0
  644. mlflow/utils/yaml_utils.py +179 -0
  645. 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]