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,72 @@
1
+ """
2
+ Genesis-Flow Plugin Architecture
3
+
4
+ This module provides a comprehensive plugin system for ML frameworks and extensions.
5
+ Plugins can be dynamically discovered, loaded, enabled/disabled, and managed.
6
+
7
+ The plugin system supports:
8
+ - Framework plugins (PyTorch, TensorFlow, XGBoost, etc.)
9
+ - Custom logging plugins
10
+ - Model registry plugins
11
+ - Deployment plugins
12
+ - UI extensions
13
+
14
+ Example usage:
15
+ from mlflow.plugins import PluginManager
16
+
17
+ # Get plugin manager
18
+ manager = PluginManager()
19
+
20
+ # List available plugins
21
+ plugins = manager.list_plugins()
22
+
23
+ # Enable a plugin
24
+ manager.enable_plugin("pytorch")
25
+
26
+ # Use the plugin
27
+ import mlflow.pytorch
28
+ """
29
+
30
+ from mlflow.plugins.manager import PluginManager
31
+ from mlflow.plugins.registry import PluginRegistry
32
+ from mlflow.plugins.base import BasePlugin, FrameworkPlugin
33
+ from mlflow.plugins.discovery import discover_plugins, scan_entrypoints
34
+
35
+ __all__ = [
36
+ "PluginManager",
37
+ "PluginRegistry",
38
+ "BasePlugin",
39
+ "FrameworkPlugin",
40
+ "discover_plugins",
41
+ "scan_entrypoints",
42
+ ]
43
+
44
+ # Global plugin manager instance
45
+ _plugin_manager = None
46
+
47
+ def get_plugin_manager() -> PluginManager:
48
+ """Get the global plugin manager instance."""
49
+ global _plugin_manager
50
+ if _plugin_manager is None:
51
+ _plugin_manager = PluginManager()
52
+ return _plugin_manager
53
+
54
+ def list_plugins():
55
+ """List all available plugins."""
56
+ return get_plugin_manager().list_plugins()
57
+
58
+ def enable_plugin(name: str):
59
+ """Enable a plugin by name."""
60
+ return get_plugin_manager().enable_plugin(name)
61
+
62
+ def disable_plugin(name: str):
63
+ """Disable a plugin by name."""
64
+ return get_plugin_manager().disable_plugin(name)
65
+
66
+ def is_plugin_enabled(name: str) -> bool:
67
+ """Check if a plugin is enabled."""
68
+ return get_plugin_manager().is_plugin_enabled(name)
69
+
70
+ def get_plugin(name: str):
71
+ """Get a plugin instance by name."""
72
+ return get_plugin_manager().get_plugin(name)
mlflow/plugins/base.py ADDED
@@ -0,0 +1,358 @@
1
+ """
2
+ Base Plugin Classes for Genesis-Flow Plugin System
3
+
4
+ Defines the interface and base classes that all plugins must implement.
5
+ """
6
+
7
+ import logging
8
+ from abc import ABC, abstractmethod
9
+ from typing import Dict, List, Optional, Any, Callable
10
+ from dataclasses import dataclass
11
+ from enum import Enum
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+ class PluginType(Enum):
16
+ """Types of plugins supported by Genesis-Flow."""
17
+ FRAMEWORK = "framework" # ML framework integration (PyTorch, TensorFlow, etc.)
18
+ LOGGING = "logging" # Custom logging backends
19
+ MODEL_REGISTRY = "registry" # Model registry integrations
20
+ DEPLOYMENT = "deployment" # Deployment platforms
21
+ ARTIFACT = "artifact" # Artifact storage backends
22
+ UI = "ui" # UI extensions
23
+ CUSTOM = "custom" # Custom extensions
24
+
25
+ @dataclass
26
+ class PluginMetadata:
27
+ """Metadata for a plugin."""
28
+ name: str
29
+ version: str
30
+ description: str
31
+ author: str
32
+ plugin_type: PluginType
33
+ dependencies: List[str]
34
+ optional_dependencies: List[str]
35
+ min_genesis_flow_version: str
36
+ max_genesis_flow_version: Optional[str] = None
37
+ homepage: Optional[str] = None
38
+ documentation: Optional[str] = None
39
+ license: Optional[str] = None
40
+ tags: List[str] = None
41
+
42
+ def __post_init__(self):
43
+ if self.tags is None:
44
+ self.tags = []
45
+
46
+ class PluginState(Enum):
47
+ """States a plugin can be in."""
48
+ DISCOVERED = "discovered"
49
+ LOADED = "loaded"
50
+ ENABLED = "enabled"
51
+ DISABLED = "disabled"
52
+ FAILED = "failed"
53
+
54
+ class BasePlugin(ABC):
55
+ """
56
+ Base class for all Genesis-Flow plugins.
57
+
58
+ All plugins must inherit from this class and implement the required methods.
59
+ """
60
+
61
+ def __init__(self, metadata: PluginMetadata):
62
+ self.metadata = metadata
63
+ self.state = PluginState.DISCOVERED
64
+ self._logger = logging.getLogger(f"mlflow.plugins.{metadata.name}")
65
+ self._hooks = {}
66
+
67
+ @abstractmethod
68
+ def load(self) -> bool:
69
+ """
70
+ Load the plugin and perform any necessary initialization.
71
+
72
+ Returns:
73
+ True if loading was successful, False otherwise
74
+ """
75
+ pass
76
+
77
+ @abstractmethod
78
+ def enable(self) -> bool:
79
+ """
80
+ Enable the plugin for use.
81
+
82
+ Returns:
83
+ True if enabling was successful, False otherwise
84
+ """
85
+ pass
86
+
87
+ @abstractmethod
88
+ def disable(self) -> bool:
89
+ """
90
+ Disable the plugin.
91
+
92
+ Returns:
93
+ True if disabling was successful, False otherwise
94
+ """
95
+ pass
96
+
97
+ @abstractmethod
98
+ def unload(self) -> bool:
99
+ """
100
+ Unload the plugin and clean up resources.
101
+
102
+ Returns:
103
+ True if unloading was successful, False otherwise
104
+ """
105
+ pass
106
+
107
+ def is_compatible(self, genesis_flow_version: str) -> bool:
108
+ """
109
+ Check if the plugin is compatible with the current Genesis-Flow version.
110
+
111
+ Args:
112
+ genesis_flow_version: Current Genesis-Flow version
113
+
114
+ Returns:
115
+ True if compatible, False otherwise
116
+ """
117
+ from packaging.version import Version
118
+
119
+ try:
120
+ current = Version(genesis_flow_version)
121
+ min_version = Version(self.metadata.min_genesis_flow_version)
122
+
123
+ if current < min_version:
124
+ return False
125
+
126
+ if self.metadata.max_genesis_flow_version:
127
+ max_version = Version(self.metadata.max_genesis_flow_version)
128
+ if current > max_version:
129
+ return False
130
+
131
+ return True
132
+
133
+ except Exception as e:
134
+ self._logger.warning(f"Version compatibility check failed: {e}")
135
+ return False
136
+
137
+ def check_dependencies(self) -> bool:
138
+ """
139
+ Check if all required dependencies are available.
140
+
141
+ Returns:
142
+ True if all dependencies are satisfied, False otherwise
143
+ """
144
+ try:
145
+ import importlib
146
+
147
+ for dep in self.metadata.dependencies:
148
+ try:
149
+ importlib.import_module(dep)
150
+ except ImportError:
151
+ self._logger.error(f"Required dependency '{dep}' not found")
152
+ return False
153
+
154
+ # Check optional dependencies and log warnings
155
+ for dep in self.metadata.optional_dependencies:
156
+ try:
157
+ importlib.import_module(dep)
158
+ except ImportError:
159
+ self._logger.warning(f"Optional dependency '{dep}' not found")
160
+
161
+ return True
162
+
163
+ except Exception as e:
164
+ self._logger.error(f"Dependency check failed: {e}")
165
+ return False
166
+
167
+ def register_hook(self, event: str, callback: Callable):
168
+ """Register a callback for a specific event."""
169
+ if event not in self._hooks:
170
+ self._hooks[event] = []
171
+ self._hooks[event].append(callback)
172
+
173
+ def trigger_hook(self, event: str, *args, **kwargs):
174
+ """Trigger all callbacks for a specific event."""
175
+ if event in self._hooks:
176
+ for callback in self._hooks[event]:
177
+ try:
178
+ callback(*args, **kwargs)
179
+ except Exception as e:
180
+ self._logger.error(f"Hook callback failed for {event}: {e}")
181
+
182
+ def get_info(self) -> Dict[str, Any]:
183
+ """Get plugin information."""
184
+ return {
185
+ "name": self.metadata.name,
186
+ "version": self.metadata.version,
187
+ "description": self.metadata.description,
188
+ "author": self.metadata.author,
189
+ "type": self.metadata.plugin_type.value,
190
+ "state": self.state.value,
191
+ "dependencies": self.metadata.dependencies,
192
+ "optional_dependencies": self.metadata.optional_dependencies,
193
+ "tags": self.metadata.tags,
194
+ }
195
+
196
+ class FrameworkPlugin(BasePlugin):
197
+ """
198
+ Base class for ML framework plugins.
199
+
200
+ Framework plugins provide integration with ML libraries like PyTorch, TensorFlow, etc.
201
+ """
202
+
203
+ def __init__(self, metadata: PluginMetadata):
204
+ super().__init__(metadata)
205
+ self._module_path = None
206
+ self._lazy_loader = None
207
+
208
+ @abstractmethod
209
+ def get_module_path(self) -> str:
210
+ """
211
+ Get the module path for the framework integration.
212
+
213
+ Returns:
214
+ Module path (e.g., "mlflow.pytorch")
215
+ """
216
+ pass
217
+
218
+ @abstractmethod
219
+ def get_autolog_functions(self) -> Dict[str, Callable]:
220
+ """
221
+ Get autologging functions provided by this framework.
222
+
223
+ Returns:
224
+ Dict mapping function names to callables
225
+ """
226
+ pass
227
+
228
+ @abstractmethod
229
+ def get_save_functions(self) -> Dict[str, Callable]:
230
+ """
231
+ Get model saving functions provided by this framework.
232
+
233
+ Returns:
234
+ Dict mapping function names to callables
235
+ """
236
+ pass
237
+
238
+ @abstractmethod
239
+ def get_load_functions(self) -> Dict[str, Callable]:
240
+ """
241
+ Get model loading functions provided by this framework.
242
+
243
+ Returns:
244
+ Dict mapping function names to callables
245
+ """
246
+ pass
247
+
248
+ def load(self) -> bool:
249
+ """Load the framework plugin."""
250
+ try:
251
+ if not self.check_dependencies():
252
+ self.state = PluginState.FAILED
253
+ return False
254
+
255
+ self._module_path = self.get_module_path()
256
+
257
+ # Create lazy loader for the framework
258
+ from mlflow.utils.lazy_load import LazyLoader
259
+ import mlflow
260
+
261
+ self._lazy_loader = LazyLoader(
262
+ self._module_path,
263
+ mlflow.__dict__,
264
+ self._module_path
265
+ )
266
+
267
+ self.state = PluginState.LOADED
268
+ self._logger.info(f"Framework plugin {self.metadata.name} loaded")
269
+ return True
270
+
271
+ except Exception as e:
272
+ self._logger.error(f"Failed to load framework plugin {self.metadata.name}: {e}")
273
+ self.state = PluginState.FAILED
274
+ return False
275
+
276
+ def enable(self) -> bool:
277
+ """Enable the framework plugin."""
278
+ try:
279
+ if self.state != PluginState.LOADED:
280
+ if not self.load():
281
+ return False
282
+
283
+ # Register the lazy loader in mlflow namespace
284
+ import mlflow
285
+ setattr(mlflow, self.metadata.name, self._lazy_loader)
286
+
287
+ self.state = PluginState.ENABLED
288
+ self._logger.info(f"Framework plugin {self.metadata.name} enabled")
289
+ return True
290
+
291
+ except Exception as e:
292
+ self._logger.error(f"Failed to enable framework plugin {self.metadata.name}: {e}")
293
+ self.state = PluginState.FAILED
294
+ return False
295
+
296
+ def disable(self) -> bool:
297
+ """Disable the framework plugin."""
298
+ try:
299
+ import mlflow
300
+
301
+ if hasattr(mlflow, self.metadata.name):
302
+ delattr(mlflow, self.metadata.name)
303
+
304
+ self.state = PluginState.LOADED
305
+ self._logger.info(f"Framework plugin {self.metadata.name} disabled")
306
+ return True
307
+
308
+ except Exception as e:
309
+ self._logger.error(f"Failed to disable framework plugin {self.metadata.name}: {e}")
310
+ return False
311
+
312
+ def unload(self) -> bool:
313
+ """Unload the framework plugin."""
314
+ try:
315
+ self.disable()
316
+
317
+ self._lazy_loader = None
318
+ self._module_path = None
319
+
320
+ self.state = PluginState.DISCOVERED
321
+ self._logger.info(f"Framework plugin {self.metadata.name} unloaded")
322
+ return True
323
+
324
+ except Exception as e:
325
+ self._logger.error(f"Failed to unload framework plugin {self.metadata.name}: {e}")
326
+ return False
327
+
328
+ class LoggingPlugin(BasePlugin):
329
+ """Base class for custom logging backend plugins."""
330
+
331
+ @abstractmethod
332
+ def get_logging_backend(self):
333
+ """Get the logging backend implementation."""
334
+ pass
335
+
336
+ class ModelRegistryPlugin(BasePlugin):
337
+ """Base class for model registry integration plugins."""
338
+
339
+ @abstractmethod
340
+ def get_registry_backend(self):
341
+ """Get the model registry backend implementation."""
342
+ pass
343
+
344
+ class DeploymentPlugin(BasePlugin):
345
+ """Base class for deployment platform plugins."""
346
+
347
+ @abstractmethod
348
+ def get_deployment_backend(self):
349
+ """Get the deployment backend implementation."""
350
+ pass
351
+
352
+ class ArtifactPlugin(BasePlugin):
353
+ """Base class for artifact storage plugins."""
354
+
355
+ @abstractmethod
356
+ def get_artifact_repository(self):
357
+ """Get the artifact repository implementation."""
358
+ pass
@@ -0,0 +1,24 @@
1
+ """
2
+ Built-in Plugins for Genesis-Flow
3
+
4
+ This module contains all built-in plugins that ship with Genesis-Flow.
5
+ These plugins provide integration with essential ML frameworks.
6
+ """
7
+
8
+ from mlflow.plugins.builtin.pytorch_plugin import PyTorchPlugin
9
+ from mlflow.plugins.builtin.sklearn_plugin import SklearnPlugin
10
+ from mlflow.plugins.builtin.transformers_plugin import TransformersPlugin
11
+
12
+ # Registry of all built-in plugins
13
+ BUILTIN_PLUGINS = {
14
+ "pytorch": PyTorchPlugin,
15
+ "sklearn": SklearnPlugin,
16
+ "transformers": TransformersPlugin,
17
+ }
18
+
19
+ __all__ = [
20
+ "BUILTIN_PLUGINS",
21
+ "PyTorchPlugin",
22
+ "SklearnPlugin",
23
+ "TransformersPlugin",
24
+ ]
@@ -0,0 +1,150 @@
1
+ """
2
+ PyTorch Plugin for Genesis-Flow
3
+
4
+ Provides PyTorch integration as a modular plugin that can be enabled/disabled.
5
+ """
6
+
7
+ import logging
8
+ from typing import Dict, Callable
9
+
10
+ from mlflow.plugins.base import FrameworkPlugin, PluginMetadata, PluginType
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+ class PyTorchPlugin(FrameworkPlugin):
15
+ """
16
+ PyTorch framework plugin for Genesis-Flow.
17
+
18
+ Provides PyTorch model logging, autologging, and deployment capabilities.
19
+ """
20
+
21
+ @classmethod
22
+ def get_default_metadata(cls) -> PluginMetadata:
23
+ """Get default metadata for PyTorch plugin."""
24
+ return PluginMetadata(
25
+ name="pytorch",
26
+ version="1.0.0",
27
+ description="PyTorch deep learning framework integration",
28
+ author="Genesis-Flow Team",
29
+ plugin_type=PluginType.FRAMEWORK,
30
+ dependencies=["torch"],
31
+ optional_dependencies=["torchvision", "torchaudio"],
32
+ min_genesis_flow_version="1.0.0",
33
+ homepage="https://pytorch.org",
34
+ documentation="https://mlflow.org/docs/latest/models.html#pytorch-pytorch",
35
+ license="Apache 2.0",
36
+ tags=["deep-learning", "neural-networks", "pytorch"],
37
+ )
38
+
39
+ def get_module_path(self) -> str:
40
+ """Get the module path for PyTorch integration."""
41
+ return "mlflow.pytorch"
42
+
43
+ def get_autolog_functions(self) -> Dict[str, Callable]:
44
+ """Get PyTorch autologging functions."""
45
+ try:
46
+ from mlflow.pytorch import autolog
47
+ return {
48
+ "autolog": autolog,
49
+ }
50
+ except ImportError:
51
+ logger.warning("PyTorch autolog not available")
52
+ return {}
53
+
54
+ def get_save_functions(self) -> Dict[str, Callable]:
55
+ """Get PyTorch model saving functions."""
56
+ try:
57
+ from mlflow.pytorch import log_model, save_model
58
+ return {
59
+ "log_model": log_model,
60
+ "save_model": save_model,
61
+ }
62
+ except ImportError:
63
+ logger.warning("PyTorch save functions not available")
64
+ return {}
65
+
66
+ def get_load_functions(self) -> Dict[str, Callable]:
67
+ """Get PyTorch model loading functions."""
68
+ try:
69
+ from mlflow.pytorch import load_model
70
+ return {
71
+ "load_model": load_model,
72
+ }
73
+ except ImportError:
74
+ logger.warning("PyTorch load functions not available")
75
+ return {}
76
+
77
+ def enable(self) -> bool:
78
+ """Enable PyTorch plugin with enhanced functionality."""
79
+ try:
80
+ # Call parent enable
81
+ if not super().enable():
82
+ return False
83
+
84
+ # Additional PyTorch-specific setup
85
+ self._setup_pytorch_environment()
86
+
87
+ self._logger.info("PyTorch plugin enabled with full functionality")
88
+ return True
89
+
90
+ except Exception as e:
91
+ self._logger.error(f"Failed to enable PyTorch plugin: {e}")
92
+ return False
93
+
94
+ def _setup_pytorch_environment(self):
95
+ """Setup PyTorch-specific environment and configurations."""
96
+ try:
97
+ import torch
98
+
99
+ # Log PyTorch version and CUDA availability
100
+ self._logger.info(f"PyTorch version: {torch.__version__}")
101
+ self._logger.info(f"CUDA available: {torch.cuda.is_available()}")
102
+
103
+ if torch.cuda.is_available():
104
+ self._logger.info(f"CUDA version: {torch.version.cuda}")
105
+ self._logger.info(f"GPU count: {torch.cuda.device_count()}")
106
+
107
+ # Setup hook for automatic model artifact logging
108
+ self.register_hook("model_save", self._on_model_save)
109
+
110
+ except Exception as e:
111
+ self._logger.warning(f"PyTorch environment setup warning: {e}")
112
+
113
+ def _on_model_save(self, model, *args, **kwargs):
114
+ """Hook called when a model is saved."""
115
+ try:
116
+ import torch
117
+
118
+ if isinstance(model, torch.nn.Module):
119
+ self._logger.debug("PyTorch model save detected")
120
+ # Additional logging or processing can be added here
121
+
122
+ except Exception as e:
123
+ self._logger.warning(f"PyTorch model save hook error: {e}")
124
+
125
+ def check_dependencies(self) -> bool:
126
+ """Enhanced dependency checking for PyTorch."""
127
+ # Check basic dependencies first
128
+ if not super().check_dependencies():
129
+ return False
130
+
131
+ try:
132
+ import torch
133
+
134
+ # Check minimum PyTorch version
135
+ from packaging.version import Version
136
+ min_pytorch_version = "1.9.0"
137
+
138
+ if Version(torch.__version__) < Version(min_pytorch_version):
139
+ self._logger.error(f"PyTorch {min_pytorch_version}+ required, found {torch.__version__}")
140
+ return False
141
+
142
+ self._logger.debug(f"PyTorch {torch.__version__} dependency satisfied")
143
+ return True
144
+
145
+ except ImportError:
146
+ self._logger.error("PyTorch not installed")
147
+ return False
148
+ except Exception as e:
149
+ self._logger.error(f"PyTorch dependency check failed: {e}")
150
+ return False