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
@@ -0,0 +1,26 @@
1
+ """add run_link to model_version
2
+
3
+ Revision ID: 84291f40a231
4
+ Revises: 27a6a02d2cf1
5
+ Create Date: 2020-07-16 13:45:56.178092
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "84291f40a231"
14
+ down_revision = "27a6a02d2cf1"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ op.add_column(
21
+ "model_versions", sa.Column("run_link", sa.String(500), nullable=True, default=None)
22
+ )
23
+
24
+
25
+ def downgrade():
26
+ pass
@@ -0,0 +1,90 @@
1
+ """add trace tables
2
+
3
+ Revision ID: 867495a8f9d4
4
+ Revises: acf3f17fdcc7
5
+ Create Date: 2024-04-27 12:29:25.178685
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ from mlflow.store.tracking.dbmodels.models import SqlTraceInfo, SqlTraceMetadata, SqlTraceTag
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = "867495a8f9d4"
16
+ down_revision = "acf3f17fdcc7"
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ op.create_table(
23
+ SqlTraceInfo.__tablename__,
24
+ sa.Column("request_id", sa.String(length=50), primary_key=True, nullable=False),
25
+ sa.Column(
26
+ "experiment_id",
27
+ sa.Integer(),
28
+ sa.ForeignKey(
29
+ column="experiments.experiment_id",
30
+ name="fk_trace_info_experiment_id",
31
+ ),
32
+ nullable=False,
33
+ ),
34
+ sa.Column("timestamp_ms", sa.BigInteger(), nullable=False),
35
+ sa.Column("execution_time_ms", sa.BigInteger(), nullable=True),
36
+ sa.Column("status", sa.String(length=50), nullable=False),
37
+ sa.PrimaryKeyConstraint("request_id", name="trace_info_pk"),
38
+ sa.Index(
39
+ f"index_{SqlTraceInfo.__tablename__}_experiment_id_timestamp_ms",
40
+ "experiment_id",
41
+ "timestamp_ms",
42
+ unique=False,
43
+ ),
44
+ )
45
+ op.create_table(
46
+ SqlTraceTag.__tablename__,
47
+ sa.Column("key", sa.String(length=250), primary_key=True, nullable=False),
48
+ sa.Column("value", sa.String(length=8000), nullable=True),
49
+ sa.Column(
50
+ "request_id",
51
+ sa.String(length=50),
52
+ sa.ForeignKey(
53
+ column=SqlTraceInfo.request_id,
54
+ name=f"fk_{SqlTraceTag.__tablename__}_request_id",
55
+ ),
56
+ nullable=False,
57
+ primary_key=True,
58
+ ),
59
+ sa.PrimaryKeyConstraint("key", "request_id", name="trace_tag_pk"),
60
+ sa.Index(
61
+ f"index_{SqlTraceTag.__tablename__}_request_id",
62
+ "request_id",
63
+ unique=False,
64
+ ),
65
+ )
66
+ op.create_table(
67
+ SqlTraceMetadata.__tablename__,
68
+ sa.Column("key", sa.String(length=250), primary_key=True, nullable=False),
69
+ sa.Column("value", sa.String(length=8000), nullable=True),
70
+ sa.Column(
71
+ "request_id",
72
+ sa.String(length=50),
73
+ sa.ForeignKey(
74
+ column=SqlTraceInfo.request_id,
75
+ name=f"fk_{SqlTraceMetadata.__tablename__}_request_id",
76
+ ),
77
+ nullable=False,
78
+ primary_key=True,
79
+ ),
80
+ sa.PrimaryKeyConstraint("key", "request_id", name="trace_request_metadata_pk"),
81
+ sa.Index(
82
+ f"index_{SqlTraceMetadata.__tablename__}_request_id",
83
+ "request_id",
84
+ unique=False,
85
+ ),
86
+ )
87
+
88
+
89
+ def downgrade():
90
+ pass
@@ -0,0 +1,169 @@
1
+ """create latest metrics table
2
+
3
+ Revision ID: 89d4b8295536
4
+ Revises: 7ac759974ad8
5
+ Create Date: 2019-08-20 11:53:28.178479
6
+
7
+ """
8
+
9
+ import logging
10
+ import time
11
+
12
+ from alembic import op
13
+ from sqlalchemy import (
14
+ BigInteger,
15
+ Boolean,
16
+ Column,
17
+ Float,
18
+ ForeignKey,
19
+ PrimaryKeyConstraint,
20
+ String,
21
+ and_,
22
+ distinct,
23
+ func,
24
+ orm,
25
+ )
26
+
27
+ from mlflow.store.tracking.dbmodels.models import SqlLatestMetric, SqlMetric
28
+
29
+ _logger = logging.getLogger(__name__)
30
+ _logger.setLevel(logging.INFO)
31
+
32
+ # revision identifiers, used by Alembic.
33
+ revision = "89d4b8295536"
34
+ down_revision = "7ac759974ad8"
35
+ branch_labels = None
36
+ depends_on = None
37
+
38
+
39
+ def _describe_migration_if_necessary(session):
40
+ """
41
+ If the targeted database contains any metric entries, this function emits important,
42
+ database-specific information about the ``create_latest_metrics_table`` migration.
43
+ If the targeted database does *not* contain any metric entries, this output is omitted
44
+ in order to avoid superfluous log output when initializing a new Tracking database.
45
+ """
46
+ num_metric_entries = session.query(SqlMetric).count()
47
+ if num_metric_entries <= 0:
48
+ return
49
+
50
+ _logger.warning(
51
+ "**IMPORTANT**: This migration creates a `latest_metrics` table and populates it with the"
52
+ " latest metric entry for each unique (run_id, metric_key) tuple. Latest metric entries are"
53
+ " computed based on step, timestamp, and value. This migration may take a long time for"
54
+ " databases containing a large number of metric entries. Please refer to {readme_link} for"
55
+ " information about this migration, including how to estimate migration size and how to"
56
+ " restore your database to its original state if the migration is unsuccessful. If you"
57
+ " encounter failures while executing this migration, please file a GitHub issue at"
58
+ " {issues_link}.".format(
59
+ readme_link=(
60
+ "https://github.com/mlflow/mlflow/blob/master/mlflow/store/db_migrations/README.md"
61
+ "#89d4b8295536_create_latest_metrics_table"
62
+ ),
63
+ issues_link="https://github.com/mlflow/mlflow/issues",
64
+ )
65
+ )
66
+
67
+ num_metric_keys = (
68
+ session.query(SqlMetric.run_uuid, SqlMetric.key)
69
+ .group_by(SqlMetric.run_uuid, SqlMetric.key)
70
+ .count()
71
+ )
72
+ num_runs_containing_metrics = session.query(distinct(SqlMetric.run_uuid)).count()
73
+ _logger.info(
74
+ "This tracking database has {num_metric_entries} total metric entries for {num_metric_keys}"
75
+ " unique metrics across {num_runs} runs.".format(
76
+ num_metric_entries=num_metric_entries,
77
+ num_metric_keys=num_metric_keys,
78
+ num_runs=num_runs_containing_metrics,
79
+ )
80
+ )
81
+
82
+
83
+ def _get_latest_metrics_for_runs(session):
84
+ metrics_with_max_step = (
85
+ session.query(SqlMetric.run_uuid, SqlMetric.key, func.max(SqlMetric.step).label("step"))
86
+ .group_by(SqlMetric.key, SqlMetric.run_uuid)
87
+ .subquery("metrics_with_max_step")
88
+ )
89
+ metrics_with_max_timestamp = (
90
+ session.query(
91
+ SqlMetric.run_uuid,
92
+ SqlMetric.key,
93
+ SqlMetric.step,
94
+ func.max(SqlMetric.timestamp).label("timestamp"),
95
+ )
96
+ .join(
97
+ metrics_with_max_step,
98
+ and_(
99
+ SqlMetric.step == metrics_with_max_step.c.step,
100
+ SqlMetric.run_uuid == metrics_with_max_step.c.run_uuid,
101
+ SqlMetric.key == metrics_with_max_step.c.key,
102
+ ),
103
+ )
104
+ .group_by(SqlMetric.key, SqlMetric.run_uuid, SqlMetric.step)
105
+ .subquery("metrics_with_max_timestamp")
106
+ )
107
+ return (
108
+ session.query(
109
+ SqlMetric.run_uuid,
110
+ SqlMetric.key,
111
+ SqlMetric.step,
112
+ SqlMetric.timestamp,
113
+ func.max(SqlMetric.value).label("value"),
114
+ SqlMetric.is_nan,
115
+ )
116
+ .join(
117
+ metrics_with_max_timestamp,
118
+ and_(
119
+ SqlMetric.timestamp == metrics_with_max_timestamp.c.timestamp,
120
+ SqlMetric.run_uuid == metrics_with_max_timestamp.c.run_uuid,
121
+ SqlMetric.key == metrics_with_max_timestamp.c.key,
122
+ SqlMetric.step == metrics_with_max_timestamp.c.step,
123
+ ),
124
+ )
125
+ .group_by(
126
+ SqlMetric.run_uuid, SqlMetric.key, SqlMetric.step, SqlMetric.timestamp, SqlMetric.is_nan
127
+ )
128
+ .all()
129
+ )
130
+
131
+
132
+ def upgrade():
133
+ bind = op.get_bind()
134
+ session = orm.Session(bind=bind)
135
+
136
+ _describe_migration_if_necessary(session)
137
+ all_latest_metrics = _get_latest_metrics_for_runs(session=session)
138
+
139
+ op.create_table(
140
+ SqlLatestMetric.__tablename__,
141
+ Column("key", String(length=250)),
142
+ Column("value", Float(precision=53), nullable=False),
143
+ Column("timestamp", BigInteger, default=lambda: int(time.time())),
144
+ Column("step", BigInteger, default=0, nullable=False),
145
+ Column("is_nan", Boolean, default=False, nullable=False),
146
+ Column("run_uuid", String(length=32), ForeignKey("runs.run_uuid"), nullable=False),
147
+ PrimaryKeyConstraint("key", "run_uuid", name="latest_metric_pk"),
148
+ )
149
+
150
+ session.add_all(
151
+ [
152
+ SqlLatestMetric(
153
+ run_uuid=run_uuid,
154
+ key=key,
155
+ step=step,
156
+ timestamp=timestamp,
157
+ value=value,
158
+ is_nan=is_nan,
159
+ )
160
+ for run_uuid, key, step, timestamp, value, is_nan in all_latest_metrics
161
+ ]
162
+ )
163
+ session.commit()
164
+
165
+ _logger.info("Migration complete!")
166
+
167
+
168
+ def downgrade():
169
+ op.drop_table(SqlLatestMetric.__tablename__)
@@ -0,0 +1,64 @@
1
+ """migrate user column to tags
2
+
3
+ Revision ID: 90e64c465722
4
+ Revises: 451aebb31d03
5
+ Create Date: 2019-05-29 10:43:52.919427
6
+
7
+ """
8
+
9
+ from alembic import op
10
+ from sqlalchemy import Column, ForeignKey, Integer, PrimaryKeyConstraint, String, orm
11
+ from sqlalchemy.orm import backref, declarative_base, relationship
12
+
13
+ from mlflow.utils.mlflow_tags import MLFLOW_USER
14
+
15
+ # revision identifiers, used by Alembic.
16
+ revision = "90e64c465722"
17
+ down_revision = "451aebb31d03"
18
+ branch_labels = None
19
+ depends_on = None
20
+
21
+
22
+ Base = declarative_base()
23
+
24
+
25
+ class SqlRun(Base):
26
+ __tablename__ = "runs"
27
+ run_uuid = Column(String(32), nullable=False)
28
+ user_id = Column(String(256), nullable=True, default=None)
29
+ experiment_id = Column(Integer)
30
+
31
+ __table_args__ = (PrimaryKeyConstraint("experiment_id", name="experiment_pk"),)
32
+
33
+
34
+ class SqlTag(Base):
35
+ __tablename__ = "tags"
36
+ key = Column(String(250))
37
+ value = Column(String(250), nullable=True)
38
+ run_uuid = Column(String(32), ForeignKey("runs.run_uuid"))
39
+ run = relationship("SqlRun", backref=backref("tags", cascade="all"))
40
+
41
+ __table_args__ = (PrimaryKeyConstraint("key", "run_uuid", name="tag_pk"),)
42
+
43
+
44
+ def upgrade():
45
+ bind = op.get_bind()
46
+ session = orm.Session(bind=bind)
47
+ runs = session.query(SqlRun).all()
48
+ for run in runs:
49
+ if not run.user_id:
50
+ continue
51
+
52
+ tag_exists = False
53
+ for tag in run.tags:
54
+ if tag.key == MLFLOW_USER:
55
+ tag_exists = True
56
+ if tag_exists:
57
+ continue
58
+
59
+ session.merge(SqlTag(run_uuid=run.run_uuid, key=MLFLOW_USER, value=run.user_id))
60
+ session.commit()
61
+
62
+
63
+ def downgrade():
64
+ pass
@@ -0,0 +1,25 @@
1
+ """Add creation_time and last_update_time to experiments table
2
+
3
+ Revision ID: 97727af70f4d
4
+ Revises: cc1f77228345
5
+ Create Date: 2022-08-26 21:16:59.164858
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "97727af70f4d"
14
+ down_revision = "cc1f77228345"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ op.add_column("experiments", sa.Column("creation_time", sa.BigInteger(), nullable=True))
21
+ op.add_column("experiments", sa.Column("last_update_time", sa.BigInteger(), nullable=True))
22
+
23
+
24
+ def downgrade():
25
+ pass
File without changes
@@ -0,0 +1,27 @@
1
+ """allow nulls for run_id
2
+
3
+ Revision ID: a8c4a736bde6
4
+ Revises: 84291f40a231
5
+ Create Date: 2020-12-02 12:14:35.220815
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ from mlflow.store.model_registry.dbmodels.models import SqlModelVersion
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = "a8c4a736bde6"
16
+ down_revision = "84291f40a231"
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ with op.batch_alter_table(SqlModelVersion.__tablename__) as batch_op:
23
+ batch_op.alter_column("run_id", nullable=True, existing_type=sa.VARCHAR(32))
24
+
25
+
26
+ def downgrade():
27
+ pass
@@ -0,0 +1,29 @@
1
+ """add storage location field to model versions
2
+
3
+ Revision ID: acf3f17fdcc7
4
+ Revises: 2d6e25af4d3e
5
+ Create Date: 2023-10-23 15:26:53.062080
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ from mlflow.store.model_registry.dbmodels.models import SqlModelVersion
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = "acf3f17fdcc7"
16
+ down_revision = "2d6e25af4d3e"
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ op.add_column(
23
+ SqlModelVersion.__tablename__,
24
+ sa.Column("storage_location", sa.String(500), nullable=True, default=None),
25
+ )
26
+
27
+
28
+ def downgrade():
29
+ pass
@@ -0,0 +1,26 @@
1
+ """create index on run_uuid
2
+
3
+ Revision ID: bd07f7e963c5
4
+ Revises: c48cb773bb87
5
+ Create Date: 2022-03-03 10:14:34.037978
6
+
7
+ """
8
+
9
+ from alembic import op
10
+
11
+ # revision identifiers, used by Alembic.
12
+ revision = "bd07f7e963c5"
13
+ down_revision = "c48cb773bb87"
14
+ branch_labels = None
15
+ depends_on = None
16
+
17
+
18
+ def upgrade():
19
+ # As a fix for https://github.com/mlflow/mlflow/issues/3785, create an index on run_uuid columns
20
+ # that have a foreign key constraint to speed up SQL operations.
21
+ for table in ["params", "metrics", "latest_metrics", "tags"]:
22
+ op.create_index(f"index_{table}_run_uuid", table, ["run_uuid"])
23
+
24
+
25
+ def downgrade():
26
+ pass
@@ -0,0 +1,38 @@
1
+ """increase_model_version_tag_value_limit
2
+
3
+ Revision ID: bda7b8c39065
4
+ Revises: 6953534de441
5
+ Create Date: 2025-06-23 11:05:41.676297
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "bda7b8c39065"
14
+ down_revision = "6953534de441"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ # Use batch mode for SQLite compatibility
21
+ with op.batch_alter_table("model_version_tags") as batch_op:
22
+ # Increase value column from VARCHAR(5000) to TEXT (unlimited)
23
+ # We use Text type which maps appropriately for each database:
24
+ # - PostgreSQL: TEXT (up to 1GB)
25
+ # - MySQL: TEXT (up to 65,535 bytes) or LONGTEXT if needed
26
+ # - SQLite: TEXT (no limit)
27
+ # - MSSQL: VARCHAR(MAX) (up to 2GB)
28
+ batch_op.alter_column(
29
+ "value",
30
+ existing_type=sa.String(5000),
31
+ type_=sa.Text(),
32
+ existing_nullable=True,
33
+ existing_server_default=None,
34
+ )
35
+
36
+
37
+ def downgrade():
38
+ pass
@@ -0,0 +1,41 @@
1
+ """reset_default_value_for_is_nan_in_metrics_table_for_mysql
2
+
3
+ Revision ID: c48cb773bb87
4
+ Revises: 39d1c3be5f05
5
+ Create Date: 2021-04-02 15:43:28.466043
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "c48cb773bb87"
14
+ down_revision = "39d1c3be5f05"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ # This part of the migration is only relevant for MySQL.
21
+ # In 39d1c3be5f05_add_is_nan_constraint_for_metrics_tables_if_necessary.py
22
+ # (added in MLflow 1.15.0), `alter_column` is called on the `is_nan` column in the `metrics`
23
+ # table without specifying `existing_server_default`. This alters the column default value to
24
+ # NULL in MySQL (see the doc below).
25
+ #
26
+ # https://alembic.sqlalchemy.org/en/latest/ops.html#alembic.operations.Operations.alter_column
27
+ #
28
+ # To revert this change, set the default column value to "0" by specifying `server_default`
29
+ bind = op.get_bind()
30
+ if bind.engine.name == "mysql":
31
+ with op.batch_alter_table("metrics") as batch_op:
32
+ batch_op.alter_column(
33
+ "is_nan",
34
+ type_=sa.types.Boolean(create_constraint=True),
35
+ nullable=False,
36
+ server_default="0",
37
+ )
38
+
39
+
40
+ def downgrade():
41
+ pass
@@ -0,0 +1,31 @@
1
+ """add V3 trace schema columns
2
+
3
+ Revision ID: cbc13b556ace
4
+ Revises: bda7b8c39065
5
+ Create Date: 2025-06-17 12:00:00.000000
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "cbc13b556ace"
14
+ down_revision = "bda7b8c39065"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ # Add V3 specific columns to trace_info table
21
+ with op.batch_alter_table("trace_info", schema=None) as batch_op:
22
+ batch_op.add_column(sa.Column("client_request_id", sa.String(length=50), nullable=True))
23
+ batch_op.add_column(sa.Column("request_preview", sa.String(length=1000), nullable=True))
24
+ batch_op.add_column(sa.Column("response_preview", sa.String(length=1000), nullable=True))
25
+
26
+
27
+ def downgrade():
28
+ with op.batch_alter_table("trace_info", schema=None) as batch_op:
29
+ batch_op.drop_column("response_preview")
30
+ batch_op.drop_column("request_preview")
31
+ batch_op.drop_column("client_request_id")
@@ -0,0 +1,34 @@
1
+ """change param value length to 500
2
+
3
+ Revision ID: cc1f77228345
4
+ Revises: 0c779009ac13
5
+ Create Date: 2022-08-04 22:40:56.960003
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "cc1f77228345"
14
+ down_revision = "0c779009ac13"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade():
20
+ """
21
+ Enlarge the maximum param value length to 500.
22
+ """
23
+ with op.batch_alter_table("params") as batch_op:
24
+ batch_op.alter_column(
25
+ "value",
26
+ existing_type=sa.String(250),
27
+ type_=sa.String(500),
28
+ existing_nullable=False,
29
+ nullable=False,
30
+ )
31
+
32
+
33
+ def downgrade():
34
+ pass
@@ -0,0 +1,78 @@
1
+ """Update run status constraint with killed
2
+
3
+ Revision ID: cfd24bdc0731
4
+ Revises: 89d4b8295536
5
+ Create Date: 2019-10-11 15:55:10.853449
6
+
7
+ """
8
+
9
+ import alembic
10
+ from alembic import op
11
+ from packaging.version import Version
12
+ from sqlalchemy import CheckConstraint, Enum
13
+
14
+ from mlflow.entities import RunStatus, ViewType
15
+ from mlflow.entities.lifecycle_stage import LifecycleStage
16
+ from mlflow.store.tracking.dbmodels.models import SourceTypes, SqlRun
17
+
18
+ # revision identifiers, used by Alembic.
19
+ revision = "cfd24bdc0731"
20
+ down_revision = "2b4d017a5e9b"
21
+ branch_labels = None
22
+ depends_on = None
23
+
24
+ old_run_statuses = [
25
+ RunStatus.to_string(RunStatus.SCHEDULED),
26
+ RunStatus.to_string(RunStatus.FAILED),
27
+ RunStatus.to_string(RunStatus.FINISHED),
28
+ RunStatus.to_string(RunStatus.RUNNING),
29
+ ]
30
+
31
+ new_run_statuses = [*old_run_statuses, RunStatus.to_string(RunStatus.KILLED)]
32
+
33
+ # Certain SQL backends (e.g., SQLite) do not preserve CHECK constraints during migrations.
34
+ # For these backends, CHECK constraints must be specified as table arguments. Here, we define
35
+ # the collection of CHECK constraints that should be preserved when performing the migration.
36
+ # The "status" constraint is excluded from this set because it is explicitly modified
37
+ # within the migration's `upgrade()` routine.
38
+ check_constraint_table_args = [
39
+ CheckConstraint(SqlRun.source_type.in_(SourceTypes), name="source_type"),
40
+ CheckConstraint(
41
+ SqlRun.lifecycle_stage.in_(LifecycleStage.view_type_to_stages(ViewType.ALL)),
42
+ name="runs_lifecycle_stage",
43
+ ),
44
+ ]
45
+
46
+
47
+ def upgrade():
48
+ # In alembic >= 1.7.0, `table_args` is unnecessary since CHECK constraints are preserved
49
+ # during migrations.
50
+ table_args = (
51
+ [] if Version(alembic.__version__) >= Version("1.7.0") else check_constraint_table_args
52
+ )
53
+ with op.batch_alter_table("runs", table_args=table_args) as batch_op:
54
+ # Transform the "status" column to an `Enum` and define a new check constraint. Specify
55
+ # `native_enum=False` to create a check constraint rather than a
56
+ # database-backend-dependent enum (see https://docs.sqlalchemy.org/en/13/core/
57
+ # type_basics.html#sqlalchemy.types.Enum.params.native_enum)
58
+ batch_op.alter_column(
59
+ "status",
60
+ type_=Enum(
61
+ *new_run_statuses,
62
+ create_constraint=True,
63
+ native_enum=False,
64
+ ),
65
+ existing_type=Enum(
66
+ *old_run_statuses,
67
+ create_constraint=True,
68
+ native_enum=False,
69
+ name="status",
70
+ ),
71
+ )
72
+
73
+
74
+ def downgrade():
75
+ # Omit downgrade logic for now - we don't currently provide users a command/API for
76
+ # reverting a database migration, instead recommending that they take a database backup
77
+ # before running the migration.
78
+ pass