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,346 @@
1
+ import random
2
+ import uuid
3
+
4
+ _EXPERIMENT_ID_FIXED_WIDTH = 18
5
+
6
+
7
+ def _generate_unique_integer_id():
8
+ """Utility function for generating a random fixed-length integer
9
+
10
+ Args:
11
+ id_length: The target length of the string representation of the integer without
12
+ leading zeros
13
+
14
+ Returns:
15
+ a fixed-width integer
16
+ """
17
+
18
+ random_int = uuid.uuid4().int
19
+ # Cast to string to get a fixed length
20
+ random_str = str(random_int)[-_EXPERIMENT_ID_FIXED_WIDTH:]
21
+ # append a random int as string to the end of the generated string for as many
22
+ # leading zeros exist in the generated string in order to preserve the total length
23
+ # once cast back to int
24
+ for s in random_str:
25
+ if s == "0":
26
+ random_str = random_str + str(random.randint(0, 9))
27
+ else:
28
+ break
29
+ return int(random_str)
30
+
31
+
32
+ def _generate_string(sep, integer_scale):
33
+ predicate = random.choice(_GENERATOR_PREDICATES).lower()
34
+ noun = random.choice(_GENERATOR_NOUNS).lower()
35
+ num = random.randint(0, 10**integer_scale)
36
+ return f"{predicate}{sep}{noun}{sep}{num}"
37
+
38
+
39
+ def _generate_random_name(sep="-", integer_scale=3, max_length=20):
40
+ """Helper function for generating a random predicate, noun, and integer combination
41
+
42
+ Args:
43
+ sep: String separator for word spacing.
44
+ integer_scale: Dictates the maximum scale range for random integer sampling (power of 10).
45
+ max_length: Maximum allowable string length.
46
+
47
+ Returns:
48
+ A random string phrase comprised of a predicate, noun, and random integer.
49
+
50
+ """
51
+ name = None
52
+ for _ in range(10):
53
+ name = _generate_string(sep, integer_scale)
54
+ if len(name) <= max_length:
55
+ return name
56
+ # If the combined length isn't below the threshold after 10 iterations, truncate it.
57
+ return name[:max_length]
58
+
59
+
60
+ _GENERATOR_NOUNS = [
61
+ "ant",
62
+ "ape",
63
+ "asp",
64
+ "auk",
65
+ "bass",
66
+ "bat",
67
+ "bear",
68
+ "bee",
69
+ "bird",
70
+ "boar",
71
+ "bug",
72
+ "calf",
73
+ "carp",
74
+ "cat",
75
+ "chimp",
76
+ "cod",
77
+ "colt",
78
+ "conch",
79
+ "cow",
80
+ "crab",
81
+ "crane",
82
+ "croc",
83
+ "crow",
84
+ "cub",
85
+ "deer",
86
+ "doe",
87
+ "dog",
88
+ "dolphin",
89
+ "donkey",
90
+ "dove",
91
+ "duck",
92
+ "eel",
93
+ "elk",
94
+ "fawn",
95
+ "finch",
96
+ "fish",
97
+ "flea",
98
+ "fly",
99
+ "foal",
100
+ "fowl",
101
+ "fox",
102
+ "frog",
103
+ "gnat",
104
+ "gnu",
105
+ "goat",
106
+ "goose",
107
+ "grouse",
108
+ "grub",
109
+ "gull",
110
+ "hare",
111
+ "hawk",
112
+ "hen",
113
+ "hog",
114
+ "horse",
115
+ "hound",
116
+ "jay",
117
+ "kit",
118
+ "kite",
119
+ "koi",
120
+ "lamb",
121
+ "lark",
122
+ "loon",
123
+ "lynx",
124
+ "mare",
125
+ "midge",
126
+ "mink",
127
+ "mole",
128
+ "moose",
129
+ "moth",
130
+ "mouse",
131
+ "mule",
132
+ "newt",
133
+ "owl",
134
+ "ox",
135
+ "panda",
136
+ "penguin",
137
+ "perch",
138
+ "pig",
139
+ "pug",
140
+ "quail",
141
+ "ram",
142
+ "rat",
143
+ "ray",
144
+ "robin",
145
+ "roo",
146
+ "rook",
147
+ "seal",
148
+ "shad",
149
+ "shark",
150
+ "sheep",
151
+ "shoat",
152
+ "shrew",
153
+ "shrike",
154
+ "shrimp",
155
+ "skink",
156
+ "skunk",
157
+ "sloth",
158
+ "slug",
159
+ "smelt",
160
+ "snail",
161
+ "snake",
162
+ "snipe",
163
+ "sow",
164
+ "sponge",
165
+ "squid",
166
+ "squirrel",
167
+ "stag",
168
+ "steed",
169
+ "stoat",
170
+ "stork",
171
+ "swan",
172
+ "tern",
173
+ "toad",
174
+ "trout",
175
+ "turtle",
176
+ "vole",
177
+ "wasp",
178
+ "whale",
179
+ "wolf",
180
+ "worm",
181
+ "wren",
182
+ "yak",
183
+ "zebra",
184
+ ]
185
+
186
+ _GENERATOR_PREDICATES = [
187
+ "abundant",
188
+ "able",
189
+ "abrasive",
190
+ "adorable",
191
+ "adaptable",
192
+ "adventurous",
193
+ "aged",
194
+ "agreeable",
195
+ "ambitious",
196
+ "amazing",
197
+ "amusing",
198
+ "angry",
199
+ "auspicious",
200
+ "awesome",
201
+ "bald",
202
+ "beautiful",
203
+ "bemused",
204
+ "bedecked",
205
+ "big",
206
+ "bittersweet",
207
+ "blushing",
208
+ "bold",
209
+ "bouncy",
210
+ "brawny",
211
+ "bright",
212
+ "burly",
213
+ "bustling",
214
+ "calm",
215
+ "capable",
216
+ "carefree",
217
+ "capricious",
218
+ "caring",
219
+ "casual",
220
+ "charming",
221
+ "chill",
222
+ "classy",
223
+ "clean",
224
+ "clumsy",
225
+ "colorful",
226
+ "crawling",
227
+ "dapper",
228
+ "debonair",
229
+ "dashing",
230
+ "defiant",
231
+ "delicate",
232
+ "delightful",
233
+ "dazzling",
234
+ "efficient",
235
+ "enchanting",
236
+ "entertaining",
237
+ "enthused",
238
+ "exultant",
239
+ "fearless",
240
+ "flawless",
241
+ "fortunate",
242
+ "fun",
243
+ "funny",
244
+ "gaudy",
245
+ "gentle",
246
+ "gifted",
247
+ "glamorous",
248
+ "grandiose",
249
+ "gregarious",
250
+ "handsome",
251
+ "hilarious",
252
+ "honorable",
253
+ "illustrious",
254
+ "incongruous",
255
+ "indecisive",
256
+ "industrious",
257
+ "intelligent",
258
+ "inquisitive",
259
+ "intrigued",
260
+ "invincible",
261
+ "judicious",
262
+ "kindly",
263
+ "languid",
264
+ "learned",
265
+ "legendary",
266
+ "likeable",
267
+ "loud",
268
+ "luminous",
269
+ "luxuriant",
270
+ "lyrical",
271
+ "magnificent",
272
+ "marvelous",
273
+ "masked",
274
+ "melodic",
275
+ "merciful",
276
+ "mercurial",
277
+ "monumental",
278
+ "mysterious",
279
+ "nebulous",
280
+ "nervous",
281
+ "nimble",
282
+ "nosy",
283
+ "omniscient",
284
+ "orderly",
285
+ "overjoyed",
286
+ "peaceful",
287
+ "painted",
288
+ "persistent",
289
+ "placid",
290
+ "polite",
291
+ "popular",
292
+ "powerful",
293
+ "puzzled",
294
+ "rambunctious",
295
+ "rare",
296
+ "rebellious",
297
+ "respected",
298
+ "resilient",
299
+ "righteous",
300
+ "receptive",
301
+ "redolent",
302
+ "resilient",
303
+ "rogue",
304
+ "rumbling",
305
+ "salty",
306
+ "sassy",
307
+ "secretive",
308
+ "selective",
309
+ "sedate",
310
+ "serious",
311
+ "shivering",
312
+ "skillful",
313
+ "sincere",
314
+ "skittish",
315
+ "silent",
316
+ "smiling",
317
+ "sneaky",
318
+ "sophisticated",
319
+ "spiffy",
320
+ "stately",
321
+ "suave",
322
+ "stylish",
323
+ "tasteful",
324
+ "thoughtful",
325
+ "thundering",
326
+ "traveling",
327
+ "treasured",
328
+ "trusting",
329
+ "unequaled",
330
+ "upset",
331
+ "unique",
332
+ "unleashed",
333
+ "useful",
334
+ "upbeat",
335
+ "unruly",
336
+ "valuable",
337
+ "vaunted",
338
+ "victorious",
339
+ "welcoming",
340
+ "whimsical",
341
+ "wistful",
342
+ "wise",
343
+ "worried",
344
+ "youthful",
345
+ "zealous",
346
+ ]
@@ -0,0 +1,62 @@
1
+ import os
2
+ import shutil
3
+ import uuid
4
+
5
+ from mlflow.utils._spark_utils import _get_active_spark_session
6
+ from mlflow.utils.databricks_utils import (
7
+ get_databricks_nfs_temp_dir,
8
+ is_databricks_connect,
9
+ is_in_databricks_runtime,
10
+ is_in_databricks_serverless_runtime,
11
+ )
12
+
13
+ # Set spark config "spark.mlflow.nfs.rootDir" to specify a NFS (network file system) directory
14
+ # which is shared with all spark cluster nodes.
15
+ # This will help optimize routine of distributing spark driver files to remote workers.
16
+ # None represent no NFS directory available.
17
+ # Note:
18
+ # 1. If NFS directory set, you must ensure all spark cluster nodes using the same hardware and
19
+ # installed the same OS with the same environment configured, because mlflow uses NFS directory
20
+ # to distribute driver side virtual environment to remote workers if NFS available, heterogeneous
21
+ # cluster nodes might cause issues under the case.
22
+ # 2. The NFS directory must be mounted before importing mlflow.
23
+ # 3. For databricks users, don't set this config, databricks product sets up internal NFS service
24
+ # automatically.
25
+ _NFS_CACHE_ROOT_DIR = None
26
+
27
+
28
+ def get_nfs_cache_root_dir():
29
+ if is_in_databricks_runtime():
30
+ spark_sess = _get_active_spark_session()
31
+ if is_in_databricks_serverless_runtime():
32
+ # Databricks Serverless runtime VM can't access NFS.
33
+ nfs_enabled = False
34
+ else:
35
+ nfs_enabled = spark_sess and (
36
+ spark_sess.conf.get("spark.databricks.mlflow.nfs.enabled", "true").lower() == "true"
37
+ )
38
+ if nfs_enabled:
39
+ try:
40
+ return get_databricks_nfs_temp_dir()
41
+ except Exception:
42
+ nfs_root_dir = "/local_disk0/.ephemeral_nfs"
43
+ # Test whether the NFS directory is writable.
44
+ test_path = os.path.join(nfs_root_dir, uuid.uuid4().hex)
45
+ try:
46
+ os.makedirs(test_path)
47
+ return nfs_root_dir
48
+ except Exception:
49
+ # For databricks cluster enabled Table ACL, we have no permission to access NFS
50
+ # directory, in this case, return None, meaning NFS is not available.
51
+ return None
52
+ finally:
53
+ shutil.rmtree(test_path, ignore_errors=True)
54
+ else:
55
+ return None
56
+ else:
57
+ spark_session = _get_active_spark_session()
58
+ if is_databricks_connect(spark_session):
59
+ # Remote spark connect client can't access Databricks Serverless cluster NFS.
60
+ return None
61
+ if spark_session is not None:
62
+ return spark_session.conf.get("spark.mlflow.nfs.rootDir", None)
@@ -0,0 +1,164 @@
1
+ import os
2
+ import time
3
+ from enum import Enum
4
+ from typing import NamedTuple, Optional
5
+
6
+ import mlflow
7
+
8
+ REQUEST_URL_CHAT = "https://api.openai.com/v1/chat/completions"
9
+ REQUEST_URL_COMPLETIONS = "https://api.openai.com/v1/completions"
10
+ REQUEST_URL_EMBEDDINGS = "https://api.openai.com/v1/embeddings"
11
+
12
+ REQUEST_FIELDS_CHAT = {
13
+ "model",
14
+ "messages",
15
+ "frequency_penalty",
16
+ "logit_bias",
17
+ "max_tokens",
18
+ "n",
19
+ "presence_penalty",
20
+ "response_format",
21
+ "seed",
22
+ "stop",
23
+ "stream",
24
+ "temperature",
25
+ "top_p",
26
+ "tools",
27
+ "tool_choice",
28
+ "user",
29
+ "function_call",
30
+ "functions",
31
+ }
32
+ REQUEST_FIELDS_COMPLETIONS = {
33
+ "model",
34
+ "prompt",
35
+ "best_of",
36
+ "echo",
37
+ "frequency_penalty",
38
+ "logit_bias",
39
+ "logprobs",
40
+ "max_tokens",
41
+ "n",
42
+ "presence_penalty",
43
+ "seed",
44
+ "stop",
45
+ "stream",
46
+ "suffix",
47
+ "temperature",
48
+ "top_p",
49
+ "user",
50
+ }
51
+ REQUEST_FIELDS_EMBEDDINGS = {"input", "model", "encoding_format", "user"}
52
+ REQUEST_FIELDS = REQUEST_FIELDS_CHAT | REQUEST_FIELDS_COMPLETIONS | REQUEST_FIELDS_EMBEDDINGS
53
+
54
+
55
+ def _validate_model_params(task, model, params):
56
+ if not params:
57
+ return
58
+
59
+ if any(key in model for key in params):
60
+ raise mlflow.MlflowException.invalid_parameter_value(
61
+ f"Providing any of {list(model.keys())} as parameters in the signature is not "
62
+ "allowed because they were indicated as part of the OpenAI model. Either remove "
63
+ "the argument when logging the model or remove the parameter from the signature.",
64
+ )
65
+ if "batch_size" in params and task == "chat.completions":
66
+ raise mlflow.MlflowException.invalid_parameter_value(
67
+ "Parameter `batch_size` is not supported for task `chat.completions`"
68
+ )
69
+
70
+
71
+ class _OAITokenHolder:
72
+ def __init__(self, api_type):
73
+ self._credential = None
74
+ self._api_type = api_type
75
+ self._is_azure_ad = api_type in ("azure_ad", "azuread")
76
+ self._azure_ad_token = None
77
+ self._api_token_env = os.environ.get("OPENAI_API_KEY")
78
+
79
+ if self._is_azure_ad and not self._api_token_env:
80
+ try:
81
+ from azure.identity import DefaultAzureCredential
82
+ except ImportError:
83
+ raise mlflow.MlflowException(
84
+ "Using API type `azure_ad` or `azuread` requires the package"
85
+ " `azure-identity` to be installed."
86
+ )
87
+ self._credential = DefaultAzureCredential()
88
+
89
+ @property
90
+ def token(self):
91
+ return self._api_token_env or self._azure_ad_token.token
92
+
93
+ def refresh(self, logger=None):
94
+ """Validates the token or API key configured for accessing the OpenAI resource."""
95
+
96
+ if self._api_token_env is not None:
97
+ return
98
+
99
+ if self._is_azure_ad:
100
+ if not self._azure_ad_token or self._azure_ad_token.expires_on < time.time() + 60:
101
+ from azure.core.exceptions import ClientAuthenticationError
102
+
103
+ if logger:
104
+ logger.debug(
105
+ "Token for Azure AD is either expired or unset. Attempting to "
106
+ "acquire a new token."
107
+ )
108
+ try:
109
+ self._azure_ad_token = self._credential.get_token(
110
+ "https://cognitiveservices.azure.com/.default"
111
+ )
112
+ except ClientAuthenticationError as err:
113
+ raise mlflow.MlflowException(
114
+ "Unable to acquire a valid Azure AD token for the resource due to "
115
+ f"the following error: {err.message}"
116
+ ) from err
117
+
118
+ if logger:
119
+ logger.debug("Token refreshed successfully")
120
+ else:
121
+ raise mlflow.MlflowException(
122
+ "OpenAI API key must be set in the ``OPENAI_API_KEY`` environment variable."
123
+ )
124
+
125
+
126
+ class _OpenAIApiConfig(NamedTuple):
127
+ api_type: str
128
+ batch_size: int
129
+ max_requests_per_minute: int
130
+ max_tokens_per_minute: int
131
+ api_version: Optional[str]
132
+ api_base: str
133
+ deployment_id: Optional[str]
134
+ organization: Optional[str] = None
135
+ max_retries: int = 5
136
+ timeout: float = 60.0
137
+
138
+
139
+ # See https://github.com/openai/openai-python/blob/cf03fe16a92cd01f2a8867537399c12e183ba58e/openai/__init__.py#L30-L38
140
+ # for the list of environment variables that openai-python uses
141
+ class _OpenAIEnvVar(str, Enum):
142
+ OPENAI_API_TYPE = "OPENAI_API_TYPE"
143
+ OPENAI_BASE_URL = "OPENAI_BASE_URL"
144
+ OPENAI_API_BASE = "OPENAI_API_BASE"
145
+ OPENAI_API_KEY = "OPENAI_API_KEY"
146
+ OPENAI_API_KEY_PATH = "OPENAI_API_KEY_PATH"
147
+ OPENAI_API_VERSION = "OPENAI_API_VERSION"
148
+ OPENAI_ORGANIZATION = "OPENAI_ORGANIZATION"
149
+ OPENAI_ENGINE = "OPENAI_ENGINE"
150
+ # use deployment_name instead of deployment_id to be
151
+ # consistent with gateway
152
+ OPENAI_DEPLOYMENT_NAME = "OPENAI_DEPLOYMENT_NAME"
153
+
154
+ @property
155
+ def secret_key(self):
156
+ return self.value.lower()
157
+
158
+ @classmethod
159
+ def read_environ(cls):
160
+ env_vars = {}
161
+ for e in _OpenAIEnvVar:
162
+ if value := os.getenv(e.value):
163
+ env_vars[e.value] = value
164
+ return env_vars
mlflow/utils/os.py ADDED
@@ -0,0 +1,12 @@
1
+ import os
2
+
3
+
4
+ def is_windows():
5
+ """
6
+ Returns true if the local system/OS name is Windows.
7
+
8
+ Returns:
9
+ True if the local system/OS name is Windows.
10
+
11
+ """
12
+ return os.name == "nt"
@@ -0,0 +1,29 @@
1
+ import urllib.parse
2
+
3
+ from mlflow.environment_variables import MLFLOW_UC_OSS_TOKEN
4
+ from mlflow.exceptions import MlflowException
5
+ from mlflow.utils.databricks_utils import get_databricks_host_creds
6
+ from mlflow.utils.rest_utils import MlflowHostCreds
7
+ from mlflow.utils.uri import (
8
+ _DATABRICKS_UNITY_CATALOG_SCHEME,
9
+ )
10
+
11
+
12
+ def get_oss_host_creds(server_uri=None):
13
+ """
14
+ Retrieve the host credentials for the OSS server.
15
+
16
+ Args:
17
+ server_uri (str): The URI of the server.
18
+
19
+ Returns:
20
+ MlflowHostCreds: The host credentials for the OSS server.
21
+ """
22
+ parsed_uri = urllib.parse.urlparse(server_uri)
23
+
24
+ if parsed_uri.scheme != "uc":
25
+ raise MlflowException("The scheme of the server_uri should be 'uc'")
26
+
27
+ if parsed_uri.path == _DATABRICKS_UNITY_CATALOG_SCHEME:
28
+ return get_databricks_host_creds(parsed_uri.path)
29
+ return MlflowHostCreds(host=parsed_uri.path, token=MLFLOW_UC_OSS_TOKEN.get())
@@ -0,0 +1,17 @@
1
+ import importlib.metadata
2
+ import sys
3
+
4
+
5
+ def _get_entry_points(group: str) -> list[importlib.metadata.EntryPoint]:
6
+ if sys.version_info >= (3, 10):
7
+ return importlib.metadata.entry_points(group=group)
8
+
9
+ entrypoints = importlib.metadata.entry_points()
10
+ try:
11
+ return entrypoints.get(group, [])
12
+ except AttributeError:
13
+ return entrypoints.select(group=group)
14
+
15
+
16
+ def get_entry_points(group: str) -> list[importlib.metadata.EntryPoint]:
17
+ return _get_entry_points(group)