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,228 @@
1
+ from typing import Any, Optional, Union
2
+
3
+ import mlflow.protos.service_pb2 as pb2
4
+ from mlflow.entities._mlflow_object import _MlflowObject
5
+ from mlflow.entities.logged_model_parameter import LoggedModelParameter
6
+ from mlflow.entities.logged_model_status import LoggedModelStatus
7
+ from mlflow.entities.logged_model_tag import LoggedModelTag
8
+ from mlflow.entities.metric import Metric
9
+
10
+
11
+ class LoggedModel(_MlflowObject):
12
+ """
13
+ MLflow entity representing a Model logged to an MLflow Experiment.
14
+ """
15
+
16
+ def __init__(
17
+ self,
18
+ experiment_id: str,
19
+ model_id: str,
20
+ name: str,
21
+ artifact_location: str,
22
+ creation_timestamp: int,
23
+ last_updated_timestamp: int,
24
+ model_type: Optional[str] = None,
25
+ source_run_id: Optional[str] = None,
26
+ status: Union[LoggedModelStatus, int] = LoggedModelStatus.READY,
27
+ status_message: Optional[str] = None,
28
+ tags: Optional[Union[list[LoggedModelTag], dict[str, str]]] = None,
29
+ params: Optional[Union[list[LoggedModelParameter], dict[str, str]]] = None,
30
+ metrics: Optional[list[Metric]] = None,
31
+ ):
32
+ super().__init__()
33
+ self._experiment_id: str = experiment_id
34
+ self._model_id: str = model_id
35
+ self._name: str = name
36
+ self._artifact_location: str = artifact_location
37
+ self._creation_time: int = creation_timestamp
38
+ self._last_updated_timestamp: int = last_updated_timestamp
39
+ self._model_type: Optional[str] = model_type
40
+ self._source_run_id: Optional[str] = source_run_id
41
+ self._status: LoggedModelStatus = (
42
+ status if isinstance(status, LoggedModelStatus) else LoggedModelStatus.from_int(status)
43
+ )
44
+ self._status_message: Optional[str] = status_message
45
+ self._tags: dict[str, str] = (
46
+ {tag.key: tag.value for tag in (tags or [])} if isinstance(tags, list) else (tags or {})
47
+ )
48
+ self._params: dict[str, str] = (
49
+ {param.key: param.value for param in (params or [])}
50
+ if isinstance(params, list)
51
+ else (params or {})
52
+ )
53
+ self._metrics: Optional[list[Metric]] = metrics
54
+ self._model_uri = f"models:/{self.model_id}"
55
+
56
+ def __repr__(self) -> str:
57
+ return "LoggedModel({})".format(
58
+ ", ".join(
59
+ f"{k}={v!r}"
60
+ for k, v in sorted(self, key=lambda x: x[0])
61
+ if (
62
+ k
63
+ not in [
64
+ # These fields can be large and take up space on the notebook or terminal
65
+ "tags",
66
+ "params",
67
+ "metrics",
68
+ ]
69
+ )
70
+ )
71
+ )
72
+
73
+ @property
74
+ def experiment_id(self) -> str:
75
+ """String. Experiment ID associated with this Model."""
76
+ return self._experiment_id
77
+
78
+ @experiment_id.setter
79
+ def experiment_id(self, new_experiment_id: str):
80
+ self._experiment_id = new_experiment_id
81
+
82
+ @property
83
+ def model_id(self) -> str:
84
+ """String. Unique ID for this Model."""
85
+ return self._model_id
86
+
87
+ @model_id.setter
88
+ def model_id(self, new_model_id: str):
89
+ self._model_id = new_model_id
90
+
91
+ @property
92
+ def name(self) -> str:
93
+ """String. Name for this Model."""
94
+ return self._name
95
+
96
+ @name.setter
97
+ def name(self, new_name: str):
98
+ self._name = new_name
99
+
100
+ @property
101
+ def artifact_location(self) -> str:
102
+ """String. Location of the model artifacts."""
103
+ return self._artifact_location
104
+
105
+ @artifact_location.setter
106
+ def artifact_location(self, new_artifact_location: str):
107
+ self._artifact_location = new_artifact_location
108
+
109
+ @property
110
+ def creation_timestamp(self) -> int:
111
+ """Integer. Model creation timestamp (milliseconds since the Unix epoch)."""
112
+ return self._creation_time
113
+
114
+ @property
115
+ def last_updated_timestamp(self) -> int:
116
+ """Integer. Timestamp of last update for this Model (milliseconds since the Unix
117
+ epoch).
118
+ """
119
+ return self._last_updated_timestamp
120
+
121
+ @last_updated_timestamp.setter
122
+ def last_updated_timestamp(self, updated_timestamp: int):
123
+ self._last_updated_timestamp = updated_timestamp
124
+
125
+ @property
126
+ def model_type(self) -> Optional[str]:
127
+ """String. Type of the model."""
128
+ return self._model_type
129
+
130
+ @model_type.setter
131
+ def model_type(self, new_model_type: Optional[str]):
132
+ self._model_type = new_model_type
133
+
134
+ @property
135
+ def source_run_id(self) -> Optional[str]:
136
+ """String. MLflow run ID that generated this model."""
137
+ return self._source_run_id
138
+
139
+ @property
140
+ def status(self) -> LoggedModelStatus:
141
+ """String. Current status of this Model."""
142
+ return self._status
143
+
144
+ @status.setter
145
+ def status(self, updated_status: str):
146
+ self._status = updated_status
147
+
148
+ @property
149
+ def status_message(self) -> Optional[str]:
150
+ """String. Descriptive message for error status conditions."""
151
+ return self._status_message
152
+
153
+ @property
154
+ def tags(self) -> dict[str, str]:
155
+ """Dictionary of tag key (string) -> tag value for this Model."""
156
+ return self._tags
157
+
158
+ @property
159
+ def params(self) -> dict[str, str]:
160
+ """Model parameters."""
161
+ return self._params
162
+
163
+ @property
164
+ def metrics(self) -> Optional[list[Metric]]:
165
+ """List of metrics associated with this Model."""
166
+ return self._metrics
167
+
168
+ @property
169
+ def model_uri(self) -> str:
170
+ """URI of the model."""
171
+ return self._model_uri
172
+
173
+ @metrics.setter
174
+ def metrics(self, new_metrics: Optional[list[Metric]]):
175
+ self._metrics = new_metrics
176
+
177
+ @classmethod
178
+ def _properties(cls) -> list[str]:
179
+ # aggregate with base class properties since cls.__dict__ does not do it automatically
180
+ return sorted(cls._get_properties_helper())
181
+
182
+ def _add_tag(self, tag):
183
+ self._tags[tag.key] = tag.value
184
+
185
+ def to_dictionary(self) -> dict[str, Any]:
186
+ model_dict = dict(self)
187
+ model_dict["status"] = self.status.to_int()
188
+ # Remove the model_uri field from the dictionary since it is a derived field
189
+ del model_dict["model_uri"]
190
+ return model_dict
191
+
192
+ def to_proto(self):
193
+ return pb2.LoggedModel(
194
+ info=pb2.LoggedModelInfo(
195
+ experiment_id=self.experiment_id,
196
+ model_id=self.model_id,
197
+ name=self.name,
198
+ artifact_uri=self.artifact_location,
199
+ creation_timestamp_ms=self.creation_timestamp,
200
+ last_updated_timestamp_ms=self.last_updated_timestamp,
201
+ model_type=self.model_type,
202
+ source_run_id=self.source_run_id,
203
+ status=self.status.to_proto(),
204
+ tags=[pb2.LoggedModelTag(key=k, value=v) for k, v in self.tags.items()],
205
+ ),
206
+ data=pb2.LoggedModelData(
207
+ params=[pb2.LoggedModelParameter(key=k, value=v) for (k, v) in self.params.items()],
208
+ metrics=[m.to_proto() for m in self.metrics] if self.metrics else [],
209
+ ),
210
+ )
211
+
212
+ @classmethod
213
+ def from_proto(cls, proto):
214
+ return cls(
215
+ experiment_id=proto.info.experiment_id,
216
+ model_id=proto.info.model_id,
217
+ name=proto.info.name,
218
+ artifact_location=proto.info.artifact_uri,
219
+ creation_timestamp=proto.info.creation_timestamp_ms,
220
+ last_updated_timestamp=proto.info.last_updated_timestamp_ms,
221
+ model_type=proto.info.model_type,
222
+ source_run_id=proto.info.source_run_id,
223
+ status=LoggedModelStatus.from_proto(proto.info.status),
224
+ status_message=proto.info.status_message,
225
+ tags=[LoggedModelTag.from_proto(tag) for tag in proto.info.tags],
226
+ params=[LoggedModelParameter.from_proto(param) for param in proto.data.params],
227
+ metrics=[Metric.from_proto(metric) for metric in proto.data.metrics],
228
+ )
@@ -0,0 +1,26 @@
1
+ from mlflow.entities._mlflow_object import _MlflowObject
2
+ from mlflow.protos.service_pb2 import ModelInput as ProtoModelInput
3
+
4
+
5
+ class LoggedModelInput(_MlflowObject):
6
+ """ModelInput object associated with a Run."""
7
+
8
+ def __init__(self, model_id: str):
9
+ self._model_id = model_id
10
+
11
+ def __eq__(self, other: _MlflowObject) -> bool:
12
+ if type(other) is type(self):
13
+ return self.__dict__ == other.__dict__
14
+ return False
15
+
16
+ @property
17
+ def model_id(self) -> str:
18
+ """Model ID."""
19
+ return self._model_id
20
+
21
+ def to_proto(self):
22
+ return ProtoModelInput(model_id=self._model_id)
23
+
24
+ @classmethod
25
+ def from_proto(cls, proto):
26
+ return cls(proto.model_id)
@@ -0,0 +1,32 @@
1
+ from mlflow.entities._mlflow_object import _MlflowObject
2
+ from mlflow.protos.service_pb2 import ModelOutput
3
+
4
+
5
+ class LoggedModelOutput(_MlflowObject):
6
+ """ModelOutput object associated with a Run."""
7
+
8
+ def __init__(self, model_id: str, step: int) -> None:
9
+ self._model_id = model_id
10
+ self._step = step
11
+
12
+ def __eq__(self, other: _MlflowObject) -> bool:
13
+ if type(other) is type(self):
14
+ return self.__dict__ == other.__dict__
15
+ return False
16
+
17
+ @property
18
+ def model_id(self) -> str:
19
+ """Model ID"""
20
+ return self._model_id
21
+
22
+ @property
23
+ def step(self) -> str:
24
+ """Step at which the model was logged"""
25
+ return self._step
26
+
27
+ def to_proto(self):
28
+ return ModelOutput(model_id=self.model_id, step=self.step)
29
+
30
+ @classmethod
31
+ def from_proto(cls, proto):
32
+ return cls(proto.model_id, proto.step)
@@ -0,0 +1,46 @@
1
+ import sys
2
+
3
+ from mlflow.entities._mlflow_object import _MlflowObject
4
+ from mlflow.protos import service_pb2 as pb2
5
+
6
+
7
+ class LoggedModelParameter(_MlflowObject):
8
+ """
9
+ MLflow entity representing a parameter of a Model.
10
+ """
11
+
12
+ def __init__(self, key, value):
13
+ if "pyspark.ml" in sys.modules:
14
+ import pyspark.ml.param
15
+
16
+ if isinstance(key, pyspark.ml.param.Param):
17
+ key = key.name
18
+ value = str(value)
19
+ self._key = key
20
+ self._value = value
21
+
22
+ @property
23
+ def key(self):
24
+ """String key corresponding to the parameter name."""
25
+ return self._key
26
+
27
+ @property
28
+ def value(self):
29
+ """String value of the parameter."""
30
+ return self._value
31
+
32
+ def __eq__(self, __o):
33
+ if isinstance(__o, self.__class__):
34
+ return self._key == __o._key
35
+
36
+ return False
37
+
38
+ def __hash__(self):
39
+ return hash(self._key)
40
+
41
+ def to_proto(self):
42
+ return pb2.LoggedModelParameter(key=self._key, value=self._value)
43
+
44
+ @classmethod
45
+ def from_proto(cls, proto):
46
+ return cls(key=proto.key, value=proto.value)
@@ -0,0 +1,74 @@
1
+ from enum import Enum
2
+
3
+ from mlflow.exceptions import MlflowException
4
+ from mlflow.protos import service_pb2 as pb2
5
+
6
+
7
+ class LoggedModelStatus(str, Enum):
8
+ """Enum for status of an :py:class:`mlflow.entities.LoggedModel`."""
9
+
10
+ UNSPECIFIED = "UNSPECIFIED"
11
+ PENDING = "PENDING"
12
+ READY = "READY"
13
+ FAILED = "FAILED"
14
+
15
+ def __str__(self):
16
+ return self.value
17
+
18
+ @staticmethod
19
+ def is_finalized(status) -> bool:
20
+ """
21
+ Determines whether or not a LoggedModelStatus is a finalized status.
22
+ A finalized status indicates that no further status updates will occur.
23
+ """
24
+ return status in [LoggedModelStatus.READY, LoggedModelStatus.FAILED]
25
+
26
+ def to_proto(self):
27
+ if self == LoggedModelStatus.UNSPECIFIED:
28
+ return pb2.LoggedModelStatus.LOGGED_MODEL_STATUS_UNSPECIFIED
29
+ elif self == LoggedModelStatus.PENDING:
30
+ return pb2.LoggedModelStatus.LOGGED_MODEL_PENDING
31
+ elif self == LoggedModelStatus.READY:
32
+ return pb2.LoggedModelStatus.LOGGED_MODEL_READY
33
+ elif self == LoggedModelStatus.FAILED:
34
+ return pb2.LoggedModelStatus.LOGGED_MODEL_UPLOAD_FAILED
35
+
36
+ raise MlflowException.invalid_parameter_value(f"Unknown model status: {self}")
37
+
38
+ @classmethod
39
+ def from_proto(cls, proto):
40
+ if proto == pb2.LoggedModelStatus.LOGGED_MODEL_STATUS_UNSPECIFIED:
41
+ return LoggedModelStatus.UNSPECIFIED
42
+ elif proto == pb2.LoggedModelStatus.LOGGED_MODEL_PENDING:
43
+ return LoggedModelStatus.PENDING
44
+ elif proto == pb2.LoggedModelStatus.LOGGED_MODEL_READY:
45
+ return LoggedModelStatus.READY
46
+ elif proto == pb2.LoggedModelStatus.LOGGED_MODEL_UPLOAD_FAILED:
47
+ return LoggedModelStatus.FAILED
48
+
49
+ raise MlflowException.invalid_parameter_value(f"Unknown model status: {proto}")
50
+
51
+ @classmethod
52
+ def from_int(cls, status_int: int) -> "LoggedModelStatus":
53
+ if status_int == 0:
54
+ return cls.UNSPECIFIED
55
+ elif status_int == 1:
56
+ return cls.PENDING
57
+ elif status_int == 2:
58
+ return cls.READY
59
+ elif status_int == 3:
60
+ return cls.FAILED
61
+
62
+ raise MlflowException.invalid_parameter_value(f"Unknown model status: {status_int}")
63
+
64
+ def to_int(self) -> int:
65
+ if self == LoggedModelStatus.UNSPECIFIED:
66
+ return 0
67
+ elif self == LoggedModelStatus.PENDING:
68
+ return 1
69
+ elif self == LoggedModelStatus.READY:
70
+ return 2
71
+ elif self == LoggedModelStatus.FAILED:
72
+ return 3
73
+
74
+ raise MlflowException.invalid_parameter_value(f"Unknown model status: {self}")
@@ -0,0 +1,33 @@
1
+ from mlflow.entities._mlflow_object import _MlflowObject
2
+ from mlflow.protos import service_pb2 as pb2
3
+
4
+
5
+ class LoggedModelTag(_MlflowObject):
6
+ """Tag object associated with a Model."""
7
+
8
+ def __init__(self, key, value):
9
+ self._key = key
10
+ self._value = value
11
+
12
+ def __eq__(self, other):
13
+ if type(other) is type(self):
14
+ # TODO deep equality here?
15
+ return self.__dict__ == other.__dict__
16
+ return False
17
+
18
+ @property
19
+ def key(self):
20
+ """String name of the tag."""
21
+ return self._key
22
+
23
+ @property
24
+ def value(self):
25
+ """String value of the tag."""
26
+ return self._value
27
+
28
+ def to_proto(self):
29
+ return pb2.LoggedModelTag(key=self._key, value=self._value)
30
+
31
+ @classmethod
32
+ def from_proto(cls, proto):
33
+ return cls(key=proto.key, value=proto.value)
@@ -0,0 +1,200 @@
1
+ from typing import Optional
2
+
3
+ from mlflow.entities._mlflow_object import _MlflowObject
4
+ from mlflow.exceptions import MlflowException
5
+ from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE
6
+ from mlflow.protos.service_pb2 import Metric as ProtoMetric
7
+ from mlflow.protos.service_pb2 import MetricWithRunId as ProtoMetricWithRunId
8
+
9
+
10
+ class Metric(_MlflowObject):
11
+ """
12
+ Metric object.
13
+ """
14
+
15
+ def __init__(
16
+ self,
17
+ key,
18
+ value,
19
+ timestamp,
20
+ step,
21
+ model_id: Optional[str] = None,
22
+ dataset_name: Optional[str] = None,
23
+ dataset_digest: Optional[str] = None,
24
+ run_id: Optional[str] = None,
25
+ ):
26
+ if (dataset_name, dataset_digest).count(None) == 1:
27
+ raise MlflowException(
28
+ "Both dataset_name and dataset_digest must be provided if one is provided",
29
+ INVALID_PARAMETER_VALUE,
30
+ )
31
+
32
+ self._key = key
33
+ self._value = value
34
+ self._timestamp = timestamp
35
+ self._step = step
36
+ self._model_id = model_id
37
+ self._dataset_name = dataset_name
38
+ self._dataset_digest = dataset_digest
39
+ self._run_id = run_id
40
+
41
+ @property
42
+ def key(self):
43
+ """String key corresponding to the metric name."""
44
+ return self._key
45
+
46
+ @property
47
+ def value(self):
48
+ """Float value of the metric."""
49
+ return self._value
50
+
51
+ @property
52
+ def timestamp(self):
53
+ """Metric timestamp as an integer (milliseconds since the Unix epoch)."""
54
+ return self._timestamp
55
+
56
+ @property
57
+ def step(self):
58
+ """Integer metric step (x-coordinate)."""
59
+ return self._step
60
+
61
+ @property
62
+ def model_id(self):
63
+ """ID of the Model associated with the metric."""
64
+ return self._model_id
65
+
66
+ @property
67
+ def dataset_name(self) -> Optional[str]:
68
+ """String. Name of the dataset associated with the metric."""
69
+ return self._dataset_name
70
+
71
+ @property
72
+ def dataset_digest(self) -> Optional[str]:
73
+ """String. Digest of the dataset associated with the metric."""
74
+ return self._dataset_digest
75
+
76
+ @property
77
+ def run_id(self) -> Optional[str]:
78
+ """String. Run ID associated with the metric."""
79
+ return self._run_id
80
+
81
+ def to_proto(self):
82
+ metric = ProtoMetric()
83
+ metric.key = self.key
84
+ metric.value = self.value
85
+ metric.timestamp = self.timestamp
86
+ metric.step = self.step
87
+ if self.model_id:
88
+ metric.model_id = self.model_id
89
+ if self.dataset_name:
90
+ metric.dataset_name = self.dataset_name
91
+ if self.dataset_digest:
92
+ metric.dataset_digest = self.dataset_digest
93
+ if self.run_id:
94
+ metric.run_id = self.run_id
95
+ return metric
96
+
97
+ @classmethod
98
+ def from_proto(cls, proto):
99
+ return cls(
100
+ proto.key,
101
+ proto.value,
102
+ proto.timestamp,
103
+ proto.step,
104
+ model_id=proto.model_id or None,
105
+ dataset_name=proto.dataset_name or None,
106
+ dataset_digest=proto.dataset_digest or None,
107
+ run_id=proto.run_id or None,
108
+ )
109
+
110
+ def __eq__(self, __o):
111
+ if isinstance(__o, self.__class__):
112
+ return self.__dict__ == __o.__dict__
113
+
114
+ return False
115
+
116
+ def __hash__(self):
117
+ return hash(
118
+ (
119
+ self._key,
120
+ self._value,
121
+ self._timestamp,
122
+ self._step,
123
+ self._model_id,
124
+ self._dataset_name,
125
+ self._dataset_digest,
126
+ self._run_id,
127
+ )
128
+ )
129
+
130
+ def to_dictionary(self):
131
+ """
132
+ Convert the Metric object to a dictionary.
133
+
134
+ Returns:
135
+ dict: The Metric object represented as a dictionary.
136
+ """
137
+ return {
138
+ "key": self.key,
139
+ "value": self.value,
140
+ "timestamp": self.timestamp,
141
+ "step": self.step,
142
+ "model_id": self.model_id,
143
+ "dataset_name": self.dataset_name,
144
+ "dataset_digest": self.dataset_digest,
145
+ "run_id": self._run_id,
146
+ }
147
+
148
+ @classmethod
149
+ def from_dictionary(cls, metric_dict):
150
+ """
151
+ Create a Metric object from a dictionary.
152
+
153
+ Args:
154
+ metric_dict (dict): Dictionary containing metric information.
155
+
156
+ Returns:
157
+ Metric: The Metric object created from the dictionary.
158
+ """
159
+ required_keys = ["key", "value", "timestamp", "step"]
160
+ missing_keys = [key for key in required_keys if key not in metric_dict]
161
+ if missing_keys:
162
+ raise MlflowException(
163
+ f"Missing required keys {missing_keys} in metric dictionary",
164
+ INVALID_PARAMETER_VALUE,
165
+ )
166
+
167
+ return cls(**metric_dict)
168
+
169
+
170
+ class MetricWithRunId(Metric):
171
+ def __init__(self, metric: Metric, run_id):
172
+ super().__init__(
173
+ key=metric.key,
174
+ value=metric.value,
175
+ timestamp=metric.timestamp,
176
+ step=metric.step,
177
+ )
178
+ self._run_id = run_id
179
+
180
+ @property
181
+ def run_id(self):
182
+ return self._run_id
183
+
184
+ def to_dict(self):
185
+ return {
186
+ "key": self.key,
187
+ "value": self.value,
188
+ "timestamp": self.timestamp,
189
+ "step": self.step,
190
+ "run_id": self.run_id,
191
+ }
192
+
193
+ def to_proto(self):
194
+ metric = ProtoMetricWithRunId()
195
+ metric.key = self.key
196
+ metric.value = self.value
197
+ metric.timestamp = self.timestamp
198
+ metric.step = self.step
199
+ metric.run_id = self.run_id
200
+ return metric
@@ -0,0 +1,29 @@
1
+ from mlflow.entities.model_registry.model_version import ModelVersion
2
+ from mlflow.entities.model_registry.model_version_deployment_job_state import (
3
+ ModelVersionDeploymentJobState,
4
+ )
5
+ from mlflow.entities.model_registry.model_version_search import ModelVersionSearch
6
+ from mlflow.entities.model_registry.model_version_tag import ModelVersionTag
7
+ from mlflow.entities.model_registry.prompt import Prompt
8
+ from mlflow.entities.model_registry.prompt_version import PromptVersion
9
+ from mlflow.entities.model_registry.registered_model import RegisteredModel
10
+ from mlflow.entities.model_registry.registered_model_alias import RegisteredModelAlias
11
+ from mlflow.entities.model_registry.registered_model_deployment_job_state import (
12
+ RegisteredModelDeploymentJobState,
13
+ )
14
+ from mlflow.entities.model_registry.registered_model_search import RegisteredModelSearch
15
+ from mlflow.entities.model_registry.registered_model_tag import RegisteredModelTag
16
+
17
+ __all__ = [
18
+ "Prompt",
19
+ "PromptVersion",
20
+ "RegisteredModel",
21
+ "ModelVersion",
22
+ "RegisteredModelAlias",
23
+ "RegisteredModelTag",
24
+ "ModelVersionTag",
25
+ "RegisteredModelSearch",
26
+ "ModelVersionSearch",
27
+ "ModelVersionDeploymentJobState",
28
+ "RegisteredModelDeploymentJobState",
29
+ ]
@@ -0,0 +1,13 @@
1
+ from abc import abstractmethod
2
+
3
+ from mlflow.entities._mlflow_object import _MlflowObject
4
+
5
+
6
+ class _ModelRegistryEntity(_MlflowObject):
7
+ @classmethod
8
+ @abstractmethod
9
+ def from_proto(cls, proto):
10
+ pass
11
+
12
+ def __eq__(self, other):
13
+ return dict(self) == dict(other)