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,243 @@
1
+ from typing import Optional
2
+
3
+ from mlflow.entities.logged_model_parameter import LoggedModelParameter as ModelParam
4
+ from mlflow.entities.metric import Metric
5
+ from mlflow.entities.model_registry._model_registry_entity import _ModelRegistryEntity
6
+ from mlflow.entities.model_registry.model_version_deployment_job_state import (
7
+ ModelVersionDeploymentJobState,
8
+ )
9
+ from mlflow.entities.model_registry.model_version_status import ModelVersionStatus
10
+ from mlflow.entities.model_registry.model_version_tag import ModelVersionTag
11
+ from mlflow.protos.model_registry_pb2 import ModelVersion as ProtoModelVersion
12
+ from mlflow.protos.model_registry_pb2 import ModelVersionTag as ProtoModelVersionTag
13
+
14
+
15
+ class ModelVersion(_ModelRegistryEntity):
16
+ """
17
+ MLflow entity for Model Version.
18
+ """
19
+
20
+ def __init__(
21
+ self,
22
+ name: str,
23
+ version: str,
24
+ creation_timestamp: int,
25
+ last_updated_timestamp: Optional[int] = None,
26
+ description: Optional[str] = None,
27
+ user_id: Optional[str] = None,
28
+ current_stage: Optional[str] = None,
29
+ source: Optional[str] = None,
30
+ run_id: Optional[str] = None,
31
+ status: str = ModelVersionStatus.to_string(ModelVersionStatus.READY),
32
+ status_message: Optional[str] = None,
33
+ tags: Optional[list[ModelVersionTag]] = None,
34
+ run_link: Optional[str] = None,
35
+ aliases: Optional[list[str]] = None,
36
+ # TODO: Make model_id a required field
37
+ # (currently optional to minimize breakages during prototype development)
38
+ model_id: Optional[str] = None,
39
+ params: Optional[list[ModelParam]] = None,
40
+ metrics: Optional[list[Metric]] = None,
41
+ deployment_job_state: Optional[ModelVersionDeploymentJobState] = None,
42
+ ):
43
+ super().__init__()
44
+ self._name: str = name
45
+ self._version: str = version
46
+ self._creation_time: int = creation_timestamp
47
+ self._last_updated_timestamp: Optional[int] = last_updated_timestamp
48
+ self._description: Optional[str] = description
49
+ self._user_id: Optional[str] = user_id
50
+ self._current_stage: Optional[str] = current_stage
51
+ self._source: Optional[str] = source
52
+ self._run_id: Optional[str] = run_id
53
+ self._run_link: Optional[str] = run_link
54
+ self._status: str = status
55
+ self._status_message: Optional[str] = status_message
56
+ self._tags: dict[str, str] = {tag.key: tag.value for tag in (tags or [])}
57
+ self._aliases: list[str] = aliases or []
58
+ self._model_id: Optional[str] = model_id
59
+ self._params: Optional[list[ModelParam]] = params
60
+ self._metrics: Optional[list[Metric]] = metrics
61
+ self._deployment_job_state: Optional[ModelVersionDeploymentJobState] = deployment_job_state
62
+
63
+ @property
64
+ def name(self) -> str:
65
+ """String. Unique name within Model Registry."""
66
+ return self._name
67
+
68
+ @name.setter
69
+ def name(self, new_name: str):
70
+ self._name = new_name
71
+
72
+ @property
73
+ def version(self) -> str:
74
+ """Version"""
75
+ return self._version
76
+
77
+ @property
78
+ def creation_timestamp(self) -> int:
79
+ """Integer. Model version creation timestamp (milliseconds since the Unix epoch)."""
80
+ return self._creation_time
81
+
82
+ @property
83
+ def last_updated_timestamp(self) -> Optional[int]:
84
+ """Integer. Timestamp of last update for this model version (milliseconds since the Unix
85
+ epoch).
86
+ """
87
+ return self._last_updated_timestamp
88
+
89
+ @last_updated_timestamp.setter
90
+ def last_updated_timestamp(self, updated_timestamp: int):
91
+ self._last_updated_timestamp = updated_timestamp
92
+
93
+ @property
94
+ def description(self) -> Optional[str]:
95
+ """String. Description"""
96
+ return self._description
97
+
98
+ @description.setter
99
+ def description(self, description: str):
100
+ self._description = description
101
+
102
+ @property
103
+ def user_id(self) -> Optional[str]:
104
+ """String. User ID that created this model version."""
105
+ return self._user_id
106
+
107
+ @property
108
+ def current_stage(self) -> Optional[str]:
109
+ """String. Current stage of this model version."""
110
+ return self._current_stage
111
+
112
+ @current_stage.setter
113
+ def current_stage(self, stage: str):
114
+ self._current_stage = stage
115
+
116
+ @property
117
+ def source(self) -> Optional[str]:
118
+ """String. Source path for the model."""
119
+ return self._source
120
+
121
+ @property
122
+ def run_id(self) -> Optional[str]:
123
+ """String. MLflow run ID that generated this model."""
124
+ return self._run_id
125
+
126
+ @property
127
+ def run_link(self) -> Optional[str]:
128
+ """String. MLflow run link referring to the exact run that generated this model version."""
129
+ return self._run_link
130
+
131
+ @property
132
+ def status(self) -> str:
133
+ """String. Current Model Registry status for this model."""
134
+ return self._status
135
+
136
+ @property
137
+ def status_message(self) -> Optional[str]:
138
+ """String. Descriptive message for error status conditions."""
139
+ return self._status_message
140
+
141
+ @property
142
+ def tags(self) -> dict[str, str]:
143
+ """Dictionary of tag key (string) -> tag value for the current model version."""
144
+ return self._tags
145
+
146
+ @property
147
+ def aliases(self) -> list[str]:
148
+ """List of aliases (string) for the current model version."""
149
+ return self._aliases
150
+
151
+ @aliases.setter
152
+ def aliases(self, aliases: list[str]):
153
+ self._aliases = aliases
154
+
155
+ @property
156
+ def model_id(self) -> Optional[str]:
157
+ """String. ID of the model associated with this version."""
158
+ return self._model_id
159
+
160
+ @property
161
+ def params(self) -> Optional[list[ModelParam]]:
162
+ """List of parameters associated with this model version."""
163
+ return self._params
164
+
165
+ @property
166
+ def metrics(self) -> Optional[list[Metric]]:
167
+ """List of metrics associated with this model version."""
168
+ return self._metrics
169
+
170
+ @property
171
+ def deployment_job_state(self) -> Optional[ModelVersionDeploymentJobState]:
172
+ """Deployment job state for the current model version."""
173
+ return self._deployment_job_state
174
+
175
+ @classmethod
176
+ def _properties(cls) -> list[str]:
177
+ # aggregate with base class properties since cls.__dict__ does not do it automatically
178
+ return sorted(cls._get_properties_helper())
179
+
180
+ def _add_tag(self, tag: ModelVersionTag):
181
+ self._tags[tag.key] = tag.value
182
+
183
+ # proto mappers
184
+ @classmethod
185
+ def from_proto(cls, proto) -> "ModelVersion":
186
+ # input: mlflow.protos.model_registry_pb2.ModelVersion
187
+ # returns: ModelVersion entity
188
+ model_version = cls(
189
+ proto.name,
190
+ proto.version,
191
+ proto.creation_timestamp,
192
+ proto.last_updated_timestamp,
193
+ proto.description if proto.HasField("description") else None,
194
+ proto.user_id,
195
+ proto.current_stage,
196
+ proto.source,
197
+ proto.run_id if proto.HasField("run_id") else None,
198
+ ModelVersionStatus.to_string(proto.status),
199
+ proto.status_message if proto.HasField("status_message") else None,
200
+ run_link=proto.run_link,
201
+ aliases=proto.aliases,
202
+ deployment_job_state=ModelVersionDeploymentJobState.from_proto(
203
+ proto.deployment_job_state
204
+ ),
205
+ )
206
+ for tag in proto.tags:
207
+ model_version._add_tag(ModelVersionTag.from_proto(tag))
208
+ # TODO: Include params, metrics, and model ID in proto
209
+ return model_version
210
+
211
+ def to_proto(self):
212
+ # input: ModelVersion entity
213
+ # returns mlflow.protos.model_registry_pb2.ModelVersion
214
+ model_version = ProtoModelVersion()
215
+ model_version.name = self.name
216
+ model_version.version = str(self.version)
217
+ model_version.creation_timestamp = self.creation_timestamp
218
+ if self.last_updated_timestamp is not None:
219
+ model_version.last_updated_timestamp = self.last_updated_timestamp
220
+ if self.description is not None:
221
+ model_version.description = self.description
222
+ if self.user_id is not None:
223
+ model_version.user_id = self.user_id
224
+ if self.current_stage is not None:
225
+ model_version.current_stage = self.current_stage
226
+ if self.source is not None:
227
+ model_version.source = str(self.source)
228
+ if self.run_id is not None:
229
+ model_version.run_id = str(self.run_id)
230
+ if self.run_link is not None:
231
+ model_version.run_link = str(self.run_link)
232
+ if self.status is not None:
233
+ model_version.status = ModelVersionStatus.from_string(self.status)
234
+ if self.status_message:
235
+ model_version.status_message = self.status_message
236
+ model_version.tags.extend(
237
+ [ProtoModelVersionTag(key=key, value=value) for key, value in self._tags.items()]
238
+ )
239
+ model_version.aliases.extend(self.aliases)
240
+ if self.deployment_job_state is not None:
241
+ ModelVersionDeploymentJobState.to_proto(self.deployment_job_state)
242
+ # TODO: Include params, metrics, and model ID in proto
243
+ return model_version
@@ -0,0 +1,44 @@
1
+ from mlflow.protos.databricks_uc_registry_messages_pb2 import (
2
+ ModelVersionDeploymentJobState as ProtoModelVersionDeploymentJobState,
3
+ )
4
+
5
+
6
+ class ModelVersionDeploymentJobRunState:
7
+ """Enum for model version deployment state of an
8
+ :py:class:`mlflow.entities.model_registry.ModelVersion`.
9
+ """
10
+
11
+ NO_VALID_DEPLOYMENT_JOB_FOUND = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value(
12
+ "NO_VALID_DEPLOYMENT_JOB_FOUND"
13
+ )
14
+ RUNNING = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("RUNNING")
15
+ SUCCEEDED = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("SUCCEEDED")
16
+ FAILED = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("FAILED")
17
+ PENDING = ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value("PENDING")
18
+ _STRING_TO_STATE = {
19
+ k: ProtoModelVersionDeploymentJobState.DeploymentJobRunState.Value(k)
20
+ for k in ProtoModelVersionDeploymentJobState.DeploymentJobRunState.keys()
21
+ }
22
+ _STATE_TO_STRING = {value: key for key, value in _STRING_TO_STATE.items()}
23
+
24
+ @staticmethod
25
+ def from_string(state_str):
26
+ if state_str not in ModelVersionDeploymentJobRunState._STRING_TO_STATE:
27
+ raise Exception(
28
+ f"Could not get deployment job run state corresponding to string {state_str}. "
29
+ f"Valid state strings: {ModelVersionDeploymentJobRunState.all_states()}"
30
+ )
31
+ return ModelVersionDeploymentJobRunState._STRING_TO_STATE[state_str]
32
+
33
+ @staticmethod
34
+ def to_string(state):
35
+ if state not in ModelVersionDeploymentJobRunState._STATE_TO_STRING:
36
+ raise Exception(
37
+ f"Could not get string corresponding to deployment job run {state}. "
38
+ f"Valid states: {ModelVersionDeploymentJobRunState.all_states()}"
39
+ )
40
+ return ModelVersionDeploymentJobRunState._STATE_TO_STRING[state]
41
+
42
+ @staticmethod
43
+ def all_states():
44
+ return list(ModelVersionDeploymentJobRunState._STATE_TO_STRING.keys())
@@ -0,0 +1,70 @@
1
+ from mlflow.entities.model_registry._model_registry_entity import _ModelRegistryEntity
2
+ from mlflow.entities.model_registry.model_version_deployment_job_run_state import (
3
+ ModelVersionDeploymentJobRunState,
4
+ )
5
+ from mlflow.entities.model_registry.registered_model_deployment_job_state import (
6
+ RegisteredModelDeploymentJobState,
7
+ )
8
+ from mlflow.protos.databricks_uc_registry_messages_pb2 import (
9
+ ModelVersionDeploymentJobState as ProtoModelVersionDeploymentJobState,
10
+ )
11
+
12
+
13
+ class ModelVersionDeploymentJobState(_ModelRegistryEntity):
14
+ """Deployment Job state object associated with a model version."""
15
+
16
+ def __init__(self, job_id, run_id, job_state, run_state, current_task_name):
17
+ self._job_id = job_id
18
+ self._run_id = run_id
19
+ self._job_state = job_state
20
+ self._run_state = run_state
21
+ self._current_task_name = current_task_name
22
+
23
+ def __eq__(self, other):
24
+ if type(other) is type(self):
25
+ return self.__dict__ == other.__dict__
26
+ return False
27
+
28
+ @property
29
+ def job_id(self):
30
+ return self._job_id
31
+
32
+ @property
33
+ def run_id(self):
34
+ return self._run_id
35
+
36
+ @property
37
+ def job_state(self):
38
+ return self._job_state
39
+
40
+ @property
41
+ def run_state(self):
42
+ return self._run_state
43
+
44
+ @property
45
+ def current_task_name(self):
46
+ return self._current_task_name
47
+
48
+ @classmethod
49
+ def from_proto(cls, proto):
50
+ return cls(
51
+ job_id=proto.job_id,
52
+ run_id=proto.run_id,
53
+ job_state=RegisteredModelDeploymentJobState.to_string(proto.job_state),
54
+ run_state=ModelVersionDeploymentJobRunState.to_string(proto.run_state),
55
+ current_task_name=proto.current_task_name,
56
+ )
57
+
58
+ def to_proto(self):
59
+ state = ProtoModelVersionDeploymentJobState()
60
+ if self.job_id is not None:
61
+ state.job_id = self.job_id
62
+ if self.run_id is not None:
63
+ state.run_id = self.run_id
64
+ if self.job_state is not None:
65
+ state.job_state = RegisteredModelDeploymentJobState.from_string(self.job_state)
66
+ if self.run_state is not None:
67
+ state.run_state = ModelVersionDeploymentJobRunState.from_string(self.run_state)
68
+ if self.current_task_name is not None:
69
+ state.current_task_name = self.current_task_name
70
+ return state
@@ -0,0 +1,25 @@
1
+ from mlflow.entities.model_registry import ModelVersion
2
+
3
+
4
+ class ModelVersionSearch(ModelVersion):
5
+ def __init__(self, *args, **kwargs):
6
+ kwargs["tags"] = []
7
+ kwargs["aliases"] = []
8
+ super().__init__(*args, **kwargs)
9
+
10
+ def tags(self):
11
+ raise Exception(
12
+ "UC Model Versions gathered through search_model_versions do not have tags. "
13
+ "Please use get_model_version to obtain an individual version's tags."
14
+ )
15
+
16
+ def aliases(self):
17
+ raise Exception(
18
+ "UC Model Versions gathered through search_model_versions do not have aliases. "
19
+ "Please use get_model_version to obtain an individual version's aliases."
20
+ )
21
+
22
+ def __eq__(self, other):
23
+ if type(other) in {type(self), ModelVersion}:
24
+ return self.__dict__ == other.__dict__
25
+ return False
@@ -0,0 +1,25 @@
1
+ from mlflow.exceptions import MlflowException
2
+ from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
3
+
4
+ STAGE_NONE = "None"
5
+ STAGE_STAGING = "Staging"
6
+ STAGE_PRODUCTION = "Production"
7
+ STAGE_ARCHIVED = "Archived"
8
+
9
+ STAGE_DELETED_INTERNAL = "Deleted_Internal"
10
+
11
+ ALL_STAGES = [STAGE_NONE, STAGE_STAGING, STAGE_PRODUCTION, STAGE_ARCHIVED]
12
+ DEFAULT_STAGES_FOR_GET_LATEST_VERSIONS = [STAGE_STAGING, STAGE_PRODUCTION]
13
+ _CANONICAL_MAPPING = {stage.lower(): stage for stage in ALL_STAGES}
14
+
15
+
16
+ def get_canonical_stage(stage):
17
+ key = stage.lower()
18
+ if key not in _CANONICAL_MAPPING:
19
+ raise MlflowException(
20
+ "Invalid Model Version stage: {}. Value must be one of {}.".format(
21
+ stage, ", ".join(ALL_STAGES)
22
+ ),
23
+ INVALID_PARAMETER_VALUE,
24
+ )
25
+ return _CANONICAL_MAPPING[key]
@@ -0,0 +1,35 @@
1
+ from mlflow.protos.model_registry_pb2 import ModelVersionStatus as ProtoModelVersionStatus
2
+
3
+
4
+ class ModelVersionStatus:
5
+ """Enum for status of an :py:class:`mlflow.entities.model_registry.ModelVersion`."""
6
+
7
+ PENDING_REGISTRATION = ProtoModelVersionStatus.Value("PENDING_REGISTRATION")
8
+ FAILED_REGISTRATION = ProtoModelVersionStatus.Value("FAILED_REGISTRATION")
9
+ READY = ProtoModelVersionStatus.Value("READY")
10
+ _STRING_TO_STATUS = {
11
+ k: ProtoModelVersionStatus.Value(k) for k in ProtoModelVersionStatus.keys()
12
+ }
13
+ _STATUS_TO_STRING = {value: key for key, value in _STRING_TO_STATUS.items()}
14
+
15
+ @staticmethod
16
+ def from_string(status_str):
17
+ if status_str not in ModelVersionStatus._STRING_TO_STATUS:
18
+ raise Exception(
19
+ f"Could not get model version status corresponding to string {status_str}. "
20
+ f"Valid status strings: {list(ModelVersionStatus._STRING_TO_STATUS.keys())}"
21
+ )
22
+ return ModelVersionStatus._STRING_TO_STATUS[status_str]
23
+
24
+ @staticmethod
25
+ def to_string(status):
26
+ if status not in ModelVersionStatus._STATUS_TO_STRING:
27
+ raise Exception(
28
+ f"Could not get string corresponding to model version status {status}. "
29
+ f"Valid statuses: {list(ModelVersionStatus._STATUS_TO_STRING.keys())}"
30
+ )
31
+ return ModelVersionStatus._STATUS_TO_STRING[status]
32
+
33
+ @staticmethod
34
+ def all_status():
35
+ return list(ModelVersionStatus._STATUS_TO_STRING.keys())
@@ -0,0 +1,35 @@
1
+ from mlflow.entities.model_registry._model_registry_entity import _ModelRegistryEntity
2
+ from mlflow.protos.model_registry_pb2 import ModelVersionTag as ProtoModelVersionTag
3
+
4
+
5
+ class ModelVersionTag(_ModelRegistryEntity):
6
+ """Tag object associated with a model version."""
7
+
8
+ def __init__(self, key, value):
9
+ self._key = key
10
+ self._value = value
11
+
12
+ def __eq__(self, other):
13
+ if type(other) is type(self):
14
+ return self.__dict__ == other.__dict__
15
+ return False
16
+
17
+ @property
18
+ def key(self):
19
+ """String name of the tag."""
20
+ return self._key
21
+
22
+ @property
23
+ def value(self):
24
+ """String value of the tag."""
25
+ return self._value
26
+
27
+ @classmethod
28
+ def from_proto(cls, proto):
29
+ return cls(proto.key, proto.value)
30
+
31
+ def to_proto(self):
32
+ tag = ProtoModelVersionTag()
33
+ tag.key = self.key
34
+ tag.value = self.value
35
+ return tag
@@ -0,0 +1,73 @@
1
+ """
2
+ Prompt entity for MLflow Model Registry.
3
+
4
+ This represents a prompt in the registry with its metadata, without version-specific
5
+ content like template text. For version-specific content, use PromptVersion.
6
+ """
7
+
8
+ from typing import Optional
9
+
10
+
11
+ class Prompt:
12
+ """
13
+ Entity representing a prompt in the MLflow Model Registry.
14
+
15
+ This contains prompt-level information (name, description, tags) but not version-specific
16
+ content. To access version-specific content like the template, use PromptVersion.
17
+ """
18
+
19
+ def __init__(
20
+ self,
21
+ name: str,
22
+ description: Optional[str] = None,
23
+ creation_timestamp: Optional[int] = None,
24
+ tags: Optional[dict[str, str]] = None,
25
+ ):
26
+ """
27
+ Construct a Prompt entity.
28
+
29
+ Args:
30
+ name: Name of the prompt.
31
+ description: Description of the prompt.
32
+ creation_timestamp: Timestamp when the prompt was created.
33
+ tags: Prompt-level metadata as key-value pairs.
34
+ """
35
+ self._name = name
36
+ self._description = description
37
+ self._creation_timestamp = creation_timestamp
38
+ self._tags = tags or {}
39
+
40
+ @property
41
+ def name(self) -> str:
42
+ """The name of the prompt."""
43
+ return self._name
44
+
45
+ @property
46
+ def description(self) -> Optional[str]:
47
+ """The description of the prompt."""
48
+ return self._description
49
+
50
+ @property
51
+ def creation_timestamp(self) -> Optional[int]:
52
+ """The creation timestamp of the prompt."""
53
+ return self._creation_timestamp
54
+
55
+ @property
56
+ def tags(self) -> dict[str, str]:
57
+ """Prompt-level metadata as key-value pairs."""
58
+ return self._tags.copy()
59
+
60
+ def __eq__(self, other) -> bool:
61
+ if not isinstance(other, Prompt):
62
+ return False
63
+ return (
64
+ self.name == other.name
65
+ and self.description == other.description
66
+ and self.creation_timestamp == other.creation_timestamp
67
+ and self.tags == other.tags
68
+ )
69
+
70
+ def __repr__(self) -> str:
71
+ return (
72
+ f"<PromptInfo: name='{self.name}', description='{self.description}', tags={self.tags}>"
73
+ )