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