mlrun 1.10.0rc11__tar.gz → 1.10.0rc13__tar.gz

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.

Potentially problematic release.


This version of mlrun might be problematic. Click here for more details.

Files changed (395) hide show
  1. {mlrun-1.10.0rc11/mlrun.egg-info → mlrun-1.10.0rc13}/PKG-INFO +2 -2
  2. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/__init__.py +2 -1
  3. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/__main__.py +7 -1
  4. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/base.py +9 -3
  5. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/dataset.py +2 -1
  6. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/llm_prompt.py +6 -2
  7. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/model.py +2 -2
  8. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/constants.py +1 -0
  9. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/runtimes/constants.py +10 -1
  10. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/__init__.py +1 -1
  11. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/model_monitoring/model_endpoints.py +1 -1
  12. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/serving.py +7 -0
  13. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/config.py +21 -2
  14. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/__init__.py +3 -1
  15. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/alibaba_oss.py +1 -1
  16. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/azure_blob.py +1 -1
  17. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/base.py +6 -31
  18. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/datastore.py +109 -33
  19. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/datastore_profile.py +31 -0
  20. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/dbfs_store.py +1 -1
  21. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/google_cloud_storage.py +2 -2
  22. mlrun-1.10.0rc13/mlrun/datastore/model_provider/model_provider.py +160 -0
  23. mlrun-1.10.0rc13/mlrun/datastore/model_provider/openai_provider.py +144 -0
  24. mlrun-1.10.0rc13/mlrun/datastore/remote_client.py +65 -0
  25. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/s3.py +1 -1
  26. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/storeytargets.py +1 -1
  27. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/utils.py +22 -0
  28. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/v3io.py +1 -1
  29. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/db/base.py +1 -1
  30. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/db/httpdb.py +9 -4
  31. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/db/nopdb.py +1 -1
  32. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/execution.py +28 -7
  33. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/launcher/base.py +23 -13
  34. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/launcher/local.py +3 -1
  35. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/launcher/remote.py +4 -2
  36. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model.py +65 -0
  37. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +175 -8
  38. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packagers_manager.py +2 -0
  39. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/projects/operations.py +8 -1
  40. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/projects/pipelines.py +40 -18
  41. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/projects/project.py +28 -5
  42. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/run.py +42 -2
  43. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/__init__.py +6 -0
  44. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/base.py +24 -6
  45. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/daskjob.py +1 -0
  46. mlrun-1.10.0rc13/mlrun/runtimes/databricks_job/__init__.py +13 -0
  47. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/databricks_job/databricks_runtime.py +1 -0
  48. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/local.py +1 -6
  49. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/server.py +1 -2
  50. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/states.py +438 -23
  51. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/system_steps.py +27 -29
  52. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/helpers.py +13 -2
  53. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification_pusher.py +15 -0
  54. mlrun-1.10.0rc13/mlrun/utils/version/version.json +4 -0
  55. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13/mlrun.egg-info}/PKG-INFO +2 -2
  56. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun.egg-info/SOURCES.txt +4 -0
  57. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun.egg-info/requires.txt +1 -1
  58. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/requirements.txt +1 -1
  59. mlrun-1.10.0rc11/mlrun/utils/version/version.json +0 -4
  60. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/LICENSE +0 -0
  61. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/MANIFEST.in +0 -0
  62. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/Makefile +0 -0
  63. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/README.md +0 -0
  64. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/dependencies.py +0 -0
  65. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/dev-requirements.txt +0 -0
  66. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/dockerfiles/mlrun-api/requirements.txt +0 -0
  67. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/archive.zip +0 -0
  68. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/function.py +0 -0
  69. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/handler.py +0 -0
  70. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/infile.txt +0 -0
  71. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/load-project.ipynb +0 -0
  72. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_basics.ipynb +0 -0
  73. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_dask.ipynb +0 -0
  74. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_db.ipynb +0 -0
  75. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_export_import.ipynb +0 -0
  76. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_jobs.ipynb +0 -0
  77. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_sparkk8s.ipynb +0 -0
  78. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/mlrun_vault.ipynb +0 -0
  79. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/model.bst +0 -0
  80. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/new-project.ipynb +0 -0
  81. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/nulltst.py +0 -0
  82. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/params.csv +0 -0
  83. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/remote-spark.ipynb +0 -0
  84. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/secrets.txt +0 -0
  85. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/spark-function.py +0 -0
  86. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/training.py +0 -0
  87. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/v2_model_server.ipynb +0 -0
  88. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/examples/xgb_serving.ipynb +0 -0
  89. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/extras-requirements.txt +0 -0
  90. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/alerts/__init__.py +0 -0
  91. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/alerts/alert.py +0 -0
  92. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/api/schemas/__init__.py +0 -0
  93. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/__init__.py +0 -0
  94. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/document.py +0 -0
  95. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/helpers.py +0 -0
  96. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/manager.py +0 -0
  97. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/artifacts/plots.py +0 -0
  98. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/__init__.py +0 -0
  99. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/db/__init__.py +0 -0
  100. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/db/dialects.py +0 -0
  101. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/__init__.py +0 -0
  102. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/artifact.py +0 -0
  103. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/base.py +0 -0
  104. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/feature_set.py +0 -0
  105. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/function.py +0 -0
  106. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/model_endpoint.py +0 -0
  107. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/pipeline.py +0 -0
  108. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/project.py +0 -0
  109. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/formatters/run.py +0 -0
  110. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/helpers.py +0 -0
  111. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/model_monitoring/__init__.py +0 -0
  112. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/model_monitoring/helpers.py +0 -0
  113. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/alert.py +0 -0
  114. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/api_gateway.py +0 -0
  115. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/artifact.py +0 -0
  116. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/auth.py +0 -0
  117. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/background_task.py +0 -0
  118. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/client_spec.py +0 -0
  119. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/clusterization_spec.py +0 -0
  120. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/common.py +0 -0
  121. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/constants.py +0 -0
  122. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/datastore_profile.py +0 -0
  123. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/events.py +0 -0
  124. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/feature_store.py +0 -0
  125. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/frontend_spec.py +0 -0
  126. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/function.py +0 -0
  127. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/http.py +0 -0
  128. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/hub.py +0 -0
  129. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/k8s.py +0 -0
  130. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/memory_reports.py +0 -0
  131. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  132. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
  133. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  134. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  135. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/notification.py +0 -0
  136. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/object.py +0 -0
  137. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/pagination.py +0 -0
  138. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/partition.py +0 -0
  139. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/pipeline.py +0 -0
  140. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/project.py +0 -0
  141. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/regex.py +0 -0
  142. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/runs.py +0 -0
  143. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/runtime_resource.py +0 -0
  144. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/schedule.py +0 -0
  145. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/secret.py +0 -0
  146. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/tag.py +0 -0
  147. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/schemas/workflow.py +0 -0
  148. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/secrets.py +0 -0
  149. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/common/types.py +0 -0
  150. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/data_types/__init__.py +0 -0
  151. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/data_types/data_types.py +0 -0
  152. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/data_types/infer.py +0 -0
  153. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/data_types/spark.py +0 -0
  154. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/data_types/to_pandas.py +0 -0
  155. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/filestore.py +0 -0
  156. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/hdfs.py +0 -0
  157. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/inmem.py +0 -0
  158. {mlrun-1.10.0rc11/mlrun/runtimes/databricks_job → mlrun-1.10.0rc13/mlrun/datastore/model_provider}/__init__.py +0 -0
  159. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/redis.py +0 -0
  160. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/snowflake_utils.py +0 -0
  161. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/sources.py +0 -0
  162. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/spark_udf.py +0 -0
  163. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/spark_utils.py +0 -0
  164. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/store_resources.py +0 -0
  165. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/targets.py +0 -0
  166. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/vectorstore.py +0 -0
  167. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/wasbfs/__init__.py +0 -0
  168. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/datastore/wasbfs/fs.py +0 -0
  169. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/db/__init__.py +0 -0
  170. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/db/auth_utils.py +0 -0
  171. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/db/factory.py +0 -0
  172. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/errors.py +0 -0
  173. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/__init__.py +0 -0
  174. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/api.py +0 -0
  175. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/common.py +0 -0
  176. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/feature_set.py +0 -0
  177. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/feature_vector.py +0 -0
  178. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/feature_vector_utils.py +0 -0
  179. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/ingestion.py +0 -0
  180. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/__init__.py +0 -0
  181. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/base.py +0 -0
  182. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  183. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/job.py +0 -0
  184. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  185. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  186. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  187. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/feature_store/steps.py +0 -0
  188. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/features.py +0 -0
  189. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/__init__.py +0 -0
  190. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/__init__.py +0 -0
  191. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  192. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  193. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/model_handler.py +0 -0
  194. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/plan.py +0 -0
  195. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/producer.py +0 -0
  196. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_common/utils.py +0 -0
  197. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  198. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  199. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  200. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  201. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  202. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  203. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_dl_common/utils.py +0 -0
  204. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  205. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  206. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  207. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  208. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  209. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  210. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  211. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plan.py +0 -0
  212. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  213. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  214. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  215. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  216. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  217. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  218. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/producer.py +0 -0
  219. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/_ml_common/utils.py +0 -0
  220. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  221. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  222. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/huggingface/__init__.py +0 -0
  223. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/huggingface/model_server.py +0 -0
  224. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/__init__.py +0 -0
  225. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  226. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  227. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  228. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  229. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  230. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  231. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  232. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  233. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  234. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/model_server.py +0 -0
  235. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/lgbm/utils.py +0 -0
  236. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/onnx/__init__.py +0 -0
  237. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/onnx/dataset.py +0 -0
  238. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  239. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/onnx/model_handler.py +0 -0
  240. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/onnx/model_server.py +0 -0
  241. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/parallel_coordinates.py +0 -0
  242. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/__init__.py +0 -0
  243. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  244. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  245. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  246. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  247. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  248. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  249. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  250. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  251. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/model_server.py +0 -0
  252. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/pytorch/utils.py +0 -0
  253. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/__init__.py +0 -0
  254. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/estimator.py +0 -0
  255. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/metric.py +0 -0
  256. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  257. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  258. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  259. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/sklearn/utils.py +0 -0
  260. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  261. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  262. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  263. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  264. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  265. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  266. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  267. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  268. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/tf_keras/utils.py +0 -0
  269. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/xgboost/__init__.py +0 -0
  270. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  271. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  272. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/frameworks/xgboost/utils.py +0 -0
  273. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/k8s_utils.py +0 -0
  274. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/launcher/__init__.py +0 -0
  275. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/launcher/client.py +0 -0
  276. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/launcher/factory.py +0 -0
  277. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/lists.py +0 -0
  278. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/__init__.py +0 -0
  279. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/api.py +0 -0
  280. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/__init__.py +0 -0
  281. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  282. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/base.py +0 -0
  283. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/context.py +0 -0
  284. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  285. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  286. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  287. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/applications/results.py +0 -0
  288. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/controller.py +0 -0
  289. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/__init__.py +0 -0
  290. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/_schedules.py +0 -0
  291. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/_stats.py +0 -0
  292. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  293. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  294. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  295. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  296. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  297. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  298. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  299. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  300. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  301. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  302. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/features_drift_table.py +0 -0
  303. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/helpers.py +0 -0
  304. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  305. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  306. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/stream_processing.py +0 -0
  307. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/model_monitoring/writer.py +0 -0
  308. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/__init__.py +0 -0
  309. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/context_handler.py +0 -0
  310. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/errors.py +0 -0
  311. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packager.py +0 -0
  312. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packagers/__init__.py +0 -0
  313. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packagers/default_packager.py +0 -0
  314. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packagers/numpy_packagers.py +0 -0
  315. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packagers/pandas_packagers.py +0 -0
  316. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  317. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/__init__.py +0 -0
  318. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/_archiver.py +0 -0
  319. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/_formatter.py +0 -0
  320. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/_pickler.py +0 -0
  321. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/_supported_format.py +0 -0
  322. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/log_hint_utils.py +0 -0
  323. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/package/utils/type_hint_utils.py +0 -0
  324. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/platforms/__init__.py +0 -0
  325. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/platforms/iguazio.py +0 -0
  326. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/projects/__init__.py +0 -0
  327. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/render.py +0 -0
  328. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  329. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  330. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/funcdoc.py +0 -0
  331. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/function_reference.py +0 -0
  332. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/generators.py +0 -0
  333. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/kubejob.py +0 -0
  334. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/mounts.py +0 -0
  335. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/mpijob/__init__.py +0 -0
  336. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/mpijob/abstract.py +0 -0
  337. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/mpijob/v1.py +0 -0
  338. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/__init__.py +0 -0
  339. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  340. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  341. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/application/application.py +0 -0
  342. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  343. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/function.py +0 -0
  344. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  345. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/nuclio/serving.py +0 -0
  346. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/pod.py +0 -0
  347. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/remotesparkjob.py +0 -0
  348. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  349. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  350. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/runtimes/utils.py +0 -0
  351. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/secrets.py +0 -0
  352. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/__init__.py +0 -0
  353. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/merger.py +0 -0
  354. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/remote.py +0 -0
  355. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/routers.py +0 -0
  356. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/serving_wrapper.py +0 -0
  357. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/utils.py +0 -0
  358. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/v1_serving.py +0 -0
  359. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/serving/v2_serving.py +0 -0
  360. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/track/__init__.py +0 -0
  361. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/track/tracker.py +0 -0
  362. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/track/tracker_manager.py +0 -0
  363. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/track/trackers/__init__.py +0 -0
  364. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  365. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/__init__.py +0 -0
  366. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/async_http.py +0 -0
  367. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/azure_vault.py +0 -0
  368. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/clones.py +0 -0
  369. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/condition_evaluator.py +0 -0
  370. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/http.py +0 -0
  371. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/logger.py +0 -0
  372. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/__init__.py +0 -0
  373. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/__init__.py +0 -0
  374. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/base.py +0 -0
  375. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/console.py +0 -0
  376. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/git.py +0 -0
  377. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/ipython.py +0 -0
  378. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/mail.py +0 -0
  379. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/slack.py +0 -0
  380. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/notifications/notification/webhook.py +0 -0
  381. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/regex.py +0 -0
  382. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/retryer.py +0 -0
  383. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/singleton.py +0 -0
  384. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/v3io_clients.py +0 -0
  385. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/vault.py +0 -0
  386. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/version/__init__.py +0 -0
  387. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun/utils/version/version.py +0 -0
  388. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun.egg-info/dependency_links.txt +0 -0
  389. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun.egg-info/entry_points.txt +0 -0
  390. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun.egg-info/not-zip-safe +0 -0
  391. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/mlrun.egg-info/top_level.txt +0 -0
  392. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/packages.py +0 -0
  393. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/pyproject.toml +0 -0
  394. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/setup.cfg +0 -0
  395. {mlrun-1.10.0rc11 → mlrun-1.10.0rc13}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc11
3
+ Version: 1.10.0rc13
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -31,7 +31,7 @@ Requires-Dist: ipython~=8.10
31
31
  Requires-Dist: nuclio-jupyter~=0.11.1
32
32
  Requires-Dist: numpy<1.27.0,>=1.26.4
33
33
  Requires-Dist: pandas<2.2,>=1.2
34
- Requires-Dist: pyarrow<17,>=10.0
34
+ Requires-Dist: pyarrow<18,>=10.0
35
35
  Requires-Dist: pyyaml<7,>=6.0.2
36
36
  Requires-Dist: requests~=2.32
37
37
  Requires-Dist: tabulate~=0.8.6
@@ -32,7 +32,7 @@ from typing import Optional
32
32
  import dotenv
33
33
 
34
34
  from .config import config as mlconf
35
- from .datastore import DataItem, store_manager
35
+ from .datastore import DataItem, ModelProvider, store_manager
36
36
  from .db import get_run_db
37
37
  from .errors import MLRunInvalidArgumentError, MLRunNotFoundError
38
38
  from .execution import MLClientCtx
@@ -55,6 +55,7 @@ from .run import (
55
55
  code_to_function,
56
56
  function_to_module,
57
57
  get_dataitem,
58
+ get_model_provider,
58
59
  get_object,
59
60
  get_or_create_ctx,
60
61
  get_pipeline,
@@ -261,7 +261,13 @@ def run(
261
261
  config = environ.get("MLRUN_EXEC_CONFIG")
262
262
  if from_env and config:
263
263
  config = json.loads(config)
264
- runobj = RunTemplate.from_dict(config)
264
+ # If run is a retry we need to maintain the run status therefore using RunObject instead of RunTemplate
265
+ retry_count = config.get("status", {}).get("retry_count")
266
+ if retry_count:
267
+ logger.info(f"Retrying run - attempt: {retry_count + 1}")
268
+ runobj = mlrun.RunObject.from_dict(config)
269
+ else:
270
+ runobj = RunTemplate.from_dict(config)
265
271
  elif task:
266
272
  obj = get_object(task)
267
273
  task = yaml.load(obj, Loader=yaml.FullLoader)
@@ -839,9 +839,7 @@ def get_artifact_meta(artifact):
839
839
  artifact = artifact.artifact_url
840
840
 
841
841
  if mlrun.datastore.is_store_uri(artifact):
842
- artifact_spec, target = mlrun.datastore.store_manager.get_store_artifact(
843
- artifact
844
- )
842
+ artifact_spec, _ = mlrun.datastore.store_manager.get_store_artifact(artifact)
845
843
 
846
844
  elif artifact.lower().endswith(".yaml"):
847
845
  data = mlrun.datastore.store_manager.object(url=artifact).get()
@@ -942,3 +940,11 @@ def fill_artifact_object_hash(object_dict, iteration=None, producer_id=None):
942
940
  object_dict["spec"][key] = value
943
941
 
944
942
  return uid
943
+
944
+
945
+ def verify_target_path(artifact: Artifact):
946
+ if not artifact.get_target_path():
947
+ raise mlrun.errors.MLRunInvalidArgumentError(
948
+ f"artifact {artifact.uri} "
949
+ f"does not have a valid/persistent offline target"
950
+ )
@@ -26,7 +26,7 @@ import mlrun.datastore
26
26
  import mlrun.utils.helpers
27
27
  from mlrun.config import config as mlconf
28
28
 
29
- from .base import Artifact, ArtifactSpec, StorePrefix
29
+ from .base import Artifact, ArtifactSpec, StorePrefix, verify_target_path
30
30
 
31
31
  default_preview_rows_length = 20
32
32
  max_preview_columns = mlconf.artifacts.datasets.max_preview_columns
@@ -424,6 +424,7 @@ def update_dataset_meta(
424
424
  artifact_spec = artifact
425
425
  elif mlrun.datastore.is_store_uri(artifact):
426
426
  artifact_spec, _ = mlrun.datastore.store_manager.get_store_artifact(artifact)
427
+ verify_target_path(artifact_spec)
427
428
  else:
428
429
  raise ValueError("model path must be a model store object/URL/DataItem")
429
430
 
@@ -61,7 +61,11 @@ class LLMPromptArtifactSpec(ArtifactSpec):
61
61
  self.prompt_legend = prompt_legend
62
62
  self.model_configuration = model_configuration
63
63
  self.description = description
64
- self._model_artifact = None
64
+ self._model_artifact = (
65
+ model_artifact
66
+ if isinstance(model_artifact, model_art.ModelArtifact)
67
+ else None
68
+ )
65
69
 
66
70
  @property
67
71
  def model_uri(self):
@@ -127,7 +131,7 @@ class LLMPromptArtifact(Artifact):
127
131
  if self.spec._model_artifact:
128
132
  return self.spec._model_artifact
129
133
  if self.spec.model_uri:
130
- self.spec._model_artifact, target = (
134
+ self.spec._model_artifact, _ = (
131
135
  mlrun.datastore.store_manager.get_store_artifact(self.spec.model_uri)
132
136
  )
133
137
  return self.spec._model_artifact
@@ -26,7 +26,7 @@ from ..data_types import InferOptions, get_infer_interface
26
26
  from ..features import Feature
27
27
  from ..model import ObjectList
28
28
  from ..utils import StorePrefix, is_relative_path
29
- from .base import Artifact, ArtifactSpec, upload_extra_data
29
+ from .base import Artifact, ArtifactSpec, upload_extra_data, verify_target_path
30
30
 
31
31
  model_spec_filename = "model_spec.yaml"
32
32
  MODEL_OPTIONAL_SUFFIXES = [".tar.gz", ".pkl", ".bin", ".pickle"]
@@ -493,7 +493,6 @@ def get_model(
493
493
  :returns: model filename, model artifact object, extra data dict
494
494
 
495
495
  """
496
- # TODO support LLMPromptArtifact
497
496
  model_file = ""
498
497
  model_spec = None
499
498
  extra_dataitems = {}
@@ -518,6 +517,7 @@ def get_model(
518
517
  model_spec, target = mlrun.datastore.store_manager.get_store_artifact(
519
518
  model_dir
520
519
  )
520
+ verify_target_path(model_spec)
521
521
  else:
522
522
  model_spec, target = model_dir, model_dir.get_target_path()
523
523
  if not model_spec or model_spec.kind != "model":
@@ -66,6 +66,7 @@ class MLRunInternalLabels:
66
66
  scrape_metrics = f"{MLRUN_LABEL_PREFIX}scrape-metrics"
67
67
  tag = f"{MLRUN_LABEL_PREFIX}tag"
68
68
  uid = f"{MLRUN_LABEL_PREFIX}uid"
69
+ retry = f"{MLRUN_LABEL_PREFIX}retry-attempt"
69
70
  username = f"{MLRUN_LABEL_PREFIX}username"
70
71
  username_domain = f"{MLRUN_LABEL_PREFIX}username_domain"
71
72
  task_name = f"{MLRUN_LABEL_PREFIX}task-name"
@@ -139,6 +139,7 @@ class RunStates:
139
139
  aborted = "aborted"
140
140
  aborting = "aborting"
141
141
  skipped = "skipped"
142
+ pending_retry = "pendingRetry"
142
143
 
143
144
  @staticmethod
144
145
  def all():
@@ -152,6 +153,7 @@ class RunStates:
152
153
  RunStates.aborted,
153
154
  RunStates.aborting,
154
155
  RunStates.skipped,
156
+ RunStates.pending_retry,
155
157
  ]
156
158
 
157
159
  @staticmethod
@@ -168,6 +170,7 @@ class RunStates:
168
170
  return [
169
171
  RunStates.error,
170
172
  RunStates.aborted,
173
+ RunStates.pending_retry,
171
174
  ]
172
175
 
173
176
  @staticmethod
@@ -185,12 +188,18 @@ class RunStates:
185
188
  def non_terminal_states():
186
189
  return list(set(RunStates.all()) - set(RunStates.terminal_states()))
187
190
 
191
+ @staticmethod
192
+ def terminal_or_error_states():
193
+ return list(
194
+ set(RunStates.terminal_states())
195
+ | set(RunStates.error_and_abortion_states())
196
+ )
197
+
188
198
  @staticmethod
189
199
  def not_allowed_for_deletion_states():
190
200
  return [
191
201
  RunStates.running,
192
202
  RunStates.pending,
193
- # TODO: add aborting state once we have it
194
203
  ]
195
204
 
196
205
  @staticmethod
@@ -214,7 +214,7 @@ from .secret import (
214
214
  SecretsData,
215
215
  UserSecretCreationRequest,
216
216
  )
217
- from .serving import ModelRunnerStepData, MonitoringData
217
+ from .serving import ModelRunnerStepData, ModelsData, MonitoringData
218
218
  from .tag import Tag, TagObjects
219
219
  from .workflow import (
220
220
  GetWorkflowResponse,
@@ -336,8 +336,8 @@ class ModelEndpointMonitoringMetricNoData(_ModelEndpointMonitoringMetricValuesBa
336
336
 
337
337
  class ApplicationBaseRecord(BaseModel):
338
338
  type: Literal["metric", "result"]
339
- time: datetime
340
339
  value: float
340
+ time: Optional[datetime] = None
341
341
 
342
342
 
343
343
  class ApplicationResultRecord(ApplicationBaseRecord):
@@ -12,6 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ import enum
16
+
15
17
  from pydantic.v1 import BaseModel
16
18
 
17
19
  from mlrun.common.types import StrEnum
@@ -40,3 +42,8 @@ class MonitoringData(StrEnum):
40
42
  MODEL_PATH = "model_path"
41
43
  MODEL_ENDPOINT_UID = "model_endpoint_uid"
42
44
  MODEL_CLASS = "model_class"
45
+
46
+
47
+ class ModelsData(enum.Enum):
48
+ MODEL_CLASS = 0
49
+ MODEL_PARAMETERS = 1
@@ -120,6 +120,14 @@ default_config = {
120
120
  # max number of parallel abort run jobs in runs monitoring
121
121
  "concurrent_abort_stale_runs_workers": 10,
122
122
  "list_runs_time_period_in_days": 7, # days
123
+ "retry": {
124
+ # periodic job for triggering retries interval in seconds
125
+ "interval": "30",
126
+ # runs limit to fetch for retrying
127
+ "fetch_runs_limit": 1000,
128
+ # minutes until a run is considered stale and will be aborted
129
+ "staleness_threshold": 60 * 24 * 3,
130
+ },
123
131
  },
124
132
  "projects": {
125
133
  "summaries": {
@@ -184,6 +192,9 @@ default_config = {
184
192
  "url": "",
185
193
  },
186
194
  "v3io_framesd": "http://framesd:8080",
195
+ "model_providers": {
196
+ "openai_default_model": "gpt-4",
197
+ },
187
198
  # default node selector to be applied to all functions - json string base64 encoded format
188
199
  "default_function_node_selector": "e30=",
189
200
  # default priority class to be applied to functions running on k8s cluster
@@ -270,6 +281,12 @@ default_config = {
270
281
  "executing": "24h",
271
282
  }
272
283
  },
284
+ "retry": {
285
+ "backoff": {
286
+ "default_base_delay": "30s",
287
+ "min_base_delay": "30s",
288
+ },
289
+ },
273
290
  # When the module is reloaded, the maximum depth recursion configuration for the recursive reload
274
291
  # function is used to prevent infinite loop
275
292
  "reload_max_recursion_depth": 100,
@@ -316,6 +333,7 @@ default_config = {
316
333
  "project_summaries": "enabled",
317
334
  "start_logs": "enabled",
318
335
  "stop_logs": "enabled",
336
+ "retry_jobs": "enabled",
319
337
  },
320
338
  },
321
339
  "worker": {
@@ -539,7 +557,7 @@ default_config = {
539
557
  },
540
558
  "v3io_api": "",
541
559
  "v3io_framesd": "",
542
- # If running from sdk and MLRUN_DBPATH is not set, the db will fallback to a nop db which will not preform any
560
+ # If running from sdk and MLRUN_DBPATH is not set, the db will fallback to a nop db which will not perform any
543
561
  # run db operations.
544
562
  "nop_db": {
545
563
  # if set to true, will raise an error for trying to use run db functionality
@@ -641,7 +659,7 @@ default_config = {
641
659
  "offline_storage_path": "model-endpoints/{kind}",
642
660
  "parquet_batching_max_events": 10_000,
643
661
  "parquet_batching_timeout_secs": timedelta(minutes=1).total_seconds(),
644
- "model_endpoint_creation_check_period": "15",
662
+ "model_endpoint_creation_check_period": 15,
645
663
  },
646
664
  "secret_stores": {
647
665
  # Use only in testing scenarios (such as integration tests) to avoid using k8s for secrets (will use in-memory
@@ -1219,6 +1237,7 @@ class Config:
1219
1237
  """
1220
1238
  Get the default value for the ssl_redirect configuration.
1221
1239
  In Iguazio we always want to redirect to HTTPS, in other cases we don't.
1240
+
1222
1241
  :return: True if we should redirect to HTTPS, False otherwise.
1223
1242
  """
1224
1243
  return self.is_running_on_iguazio()
@@ -14,6 +14,7 @@
14
14
 
15
15
  __all__ = [
16
16
  "DataItem",
17
+ "ModelProvider",
17
18
  "get_store_resource",
18
19
  "ParquetTarget",
19
20
  "CSVTarget",
@@ -32,12 +33,12 @@ __all__ = [
32
33
  "get_stream_pusher",
33
34
  "ConfigProfile",
34
35
  "VectorStoreCollection",
36
+ "store_manager",
35
37
  ]
36
38
 
37
39
  from urllib.parse import urlparse
38
40
 
39
41
  import fsspec
40
- from mergedeep import merge
41
42
 
42
43
  import mlrun.datastore.wasbfs
43
44
  from mlrun.datastore.datastore_profile import (
@@ -45,6 +46,7 @@ from mlrun.datastore.datastore_profile import (
45
46
  DatastoreProfileKafkaTarget,
46
47
  DatastoreProfileV3io,
47
48
  )
49
+ from mlrun.datastore.model_provider.model_provider import ModelProvider
48
50
  from mlrun.platforms.iguazio import (
49
51
  HTTPOutputStream,
50
52
  KafkaOutputStream,
@@ -69,7 +69,7 @@ class OSSStore(DataStore):
69
69
  key=self._get_secret_or_env("ALIBABA_ACCESS_KEY_ID"),
70
70
  secret=self._get_secret_or_env("ALIBABA_SECRET_ACCESS_KEY"),
71
71
  )
72
- return self._sanitize_storage_options(res)
72
+ return self._sanitize_options(res)
73
73
 
74
74
  def get_bucket_and_key(self, key):
75
75
  path = self._join(key)[1:]
@@ -67,7 +67,7 @@ class AzureBlobStore(DataStore):
67
67
  or self._get_secret_or_env("AZURE_STORAGE_SAS_TOKEN"),
68
68
  credential=self._get_secret_or_env("credential"),
69
69
  )
70
- self._storage_options = self._sanitize_storage_options(res)
70
+ self._storage_options = self._sanitize_options(res)
71
71
  return self._storage_options
72
72
 
73
73
  @property
@@ -28,6 +28,7 @@ import requests
28
28
 
29
29
  import mlrun.config
30
30
  import mlrun.errors
31
+ from mlrun.datastore.remote_client import BaseRemoteClient
31
32
  from mlrun.errors import err_to_str
32
33
  from mlrun.utils import StorePrefix, is_jupyter, logger
33
34
 
@@ -45,22 +46,19 @@ class FileStats:
45
46
  return f"FileStats(size={self.size}, modified={self.modified}, type={self.content_type})"
46
47
 
47
48
 
48
- class DataStore:
49
+ class DataStore(BaseRemoteClient):
49
50
  using_bucket = False
50
51
 
51
52
  def __init__(
52
53
  self, parent, name, kind, endpoint="", secrets: Optional[dict] = None, **kwargs
53
54
  ):
54
- self._parent = parent
55
- self.kind = kind
56
- self.name = name
57
- self.endpoint = endpoint
55
+ super().__init__(
56
+ parent=parent, kind=kind, name=name, endpoint=endpoint, secrets=secrets
57
+ )
58
58
  self.subpath = ""
59
- self.secret_pfx = ""
60
59
  self.options = {}
61
60
  self.from_spec = False
62
61
  self._filesystem = None
63
- self._secrets = secrets or {}
64
62
 
65
63
  @property
66
64
  def is_structured(self):
@@ -70,13 +68,6 @@ class DataStore:
70
68
  def is_unstructured(self):
71
69
  return True
72
70
 
73
- @staticmethod
74
- def _sanitize_storage_options(options):
75
- if not options:
76
- return {}
77
- options = {k: v for k, v in options.items() if v is not None and v != ""}
78
- return options
79
-
80
71
  @staticmethod
81
72
  def _sanitize_url(url):
82
73
  """
@@ -106,15 +97,9 @@ class DataStore:
106
97
  """Whether the data store supports isdir"""
107
98
  return True
108
99
 
109
- def _get_secret_or_env(self, key, default=None):
110
- # Project-secrets are mounted as env variables whose name can be retrieved from SecretsStore
111
- return mlrun.get_secret_or_env(
112
- key, secret_provider=self._get_secret, default=default
113
- )
114
-
115
100
  def get_storage_options(self):
116
101
  """get fsspec storage options"""
117
- return self._sanitize_storage_options(None)
102
+ return self._sanitize_options(None)
118
103
 
119
104
  def open(self, filepath, mode):
120
105
  file_system = self.filesystem
@@ -125,16 +110,6 @@ class DataStore:
125
110
  return f"{self.subpath}/{key}"
126
111
  return key
127
112
 
128
- def _get_parent_secret(self, key):
129
- return self._parent.secret(self.secret_pfx + key)
130
-
131
- def _get_secret(self, key: str, default=None):
132
- return self._secrets.get(key, default) or self._get_parent_secret(key)
133
-
134
- @property
135
- def url(self):
136
- return f"{self.kind}://{self.endpoint}"
137
-
138
113
  @property
139
114
  def spark_url(self):
140
115
  return self.url
@@ -11,50 +11,40 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
+
14
15
  import warnings
16
+ from functools import partial
15
17
  from typing import Optional
16
- from urllib.parse import urlparse
17
18
 
18
19
  from mergedeep import merge
19
20
 
20
21
  import mlrun
21
22
  import mlrun.errors
23
+ from mlrun.artifacts.llm_prompt import LLMPromptArtifact
24
+ from mlrun.artifacts.model import ModelArtifact
22
25
  from mlrun.datastore.datastore_profile import datastore_profile_read
26
+ from mlrun.datastore.model_provider.model_provider import (
27
+ ModelProvider,
28
+ )
29
+ from mlrun.datastore.remote_client import BaseRemoteClient
30
+ from mlrun.datastore.utils import (
31
+ parse_url,
32
+ )
23
33
  from mlrun.errors import err_to_str
24
34
  from mlrun.utils.helpers import get_local_file_schema
25
35
 
36
+ from ..artifacts.base import verify_target_path
26
37
  from ..utils import DB_SCHEMA, RunKeys
27
38
  from .base import DataItem, DataStore, HttpStore
28
39
  from .filestore import FileStore
29
40
  from .inmem import InMemoryStore
41
+ from .model_provider.openai_provider import OpenAIProvider
30
42
  from .store_resources import get_store_resource, is_store_uri
31
43
  from .v3io import V3ioStore
32
44
 
33
45
  in_memory_store = InMemoryStore()
34
46
 
35
47
 
36
- def parse_url(url):
37
- if url and url.startswith("v3io://") and not url.startswith("v3io:///"):
38
- url = url.replace("v3io://", "v3io:///", 1)
39
- parsed_url = urlparse(url)
40
- schema = parsed_url.scheme.lower()
41
- endpoint = parsed_url.hostname
42
- if endpoint:
43
- # HACK - urlparse returns the hostname after in lower case - we want the original case:
44
- # the hostname is a substring of the netloc, in which it's the original case, so we find the indexes of the
45
- # hostname in the netloc and take it from there
46
- lower_hostname = parsed_url.hostname
47
- netloc = str(parsed_url.netloc)
48
- lower_netloc = netloc.lower()
49
- hostname_index_in_netloc = lower_netloc.index(str(lower_hostname))
50
- endpoint = netloc[
51
- hostname_index_in_netloc : hostname_index_in_netloc + len(lower_hostname)
52
- ]
53
- if parsed_url.port:
54
- endpoint += f":{parsed_url.port}"
55
- return schema, endpoint, parsed_url
56
-
57
-
58
48
  def schema_to_store(schema) -> DataStore.__subclasses__():
59
49
  # import store classes inside to enable making their dependencies optional (package extras)
60
50
 
@@ -109,6 +99,20 @@ def schema_to_store(schema) -> DataStore.__subclasses__():
109
99
  raise ValueError(f"unsupported store scheme ({schema})")
110
100
 
111
101
 
102
+ def schema_to_model_provider(
103
+ schema: str, raise_missing_schema_exception=True
104
+ ) -> type[ModelProvider]:
105
+ # TODO add hugging face and http
106
+ schema_dict = {"openai": OpenAIProvider}
107
+ provider_class = schema_dict.get(schema, None)
108
+ if not provider_class:
109
+ if raise_missing_schema_exception:
110
+ raise ValueError(f"unsupported model provider schema ({schema})")
111
+ else:
112
+ warnings.warn(f"unsupported model provider schema: {schema}")
113
+ return provider_class
114
+
115
+
112
116
  def uri_to_ipython(link):
113
117
  schema, endpoint, parsed_url = parse_url(link)
114
118
  if schema in [DB_SCHEMA, "memory", "ds"]:
@@ -159,7 +163,11 @@ class StoreManager:
159
163
  self._stores[store.name] = store
160
164
 
161
165
  def get_store_artifact(
162
- self, url, project="", allow_empty_resources=None, secrets=None
166
+ self,
167
+ url,
168
+ project="",
169
+ allow_empty_resources=None,
170
+ secrets=None,
163
171
  ):
164
172
  """
165
173
  This is expected to be run only on client side. server is not expected to load artifacts.
@@ -175,12 +183,21 @@ class StoreManager:
175
183
  except Exception as exc:
176
184
  raise OSError(f"artifact {url} not found, {err_to_str(exc)}")
177
185
  target = resource.get_target_path()
186
+
178
187
  # the allow_empty.. flag allows us to have functions which dont depend on having targets e.g. a function
179
188
  # which accepts a feature vector uri and generate the offline vector (parquet) for it if it doesnt exist
180
- if not target and not allow_empty_resources:
181
- raise mlrun.errors.MLRunInvalidArgumentError(
182
- f"Resource {url} does not have a valid/persistent offline target"
183
- )
189
+ if not allow_empty_resources:
190
+ if isinstance(resource, LLMPromptArtifact):
191
+ if not resource.spec.model_uri:
192
+ raise mlrun.errors.MLRunInvalidArgumentError(
193
+ f"LLMPromptArtifact {url} does not contain model artifact uri"
194
+ )
195
+ elif not target and not (
196
+ isinstance(resource, ModelArtifact) and resource.model_url
197
+ ):
198
+ raise mlrun.errors.MLRunInvalidArgumentError(
199
+ f"Resource {url} does not have a valid/persistent offline target or model_url"
200
+ )
184
201
  return resource, target or ""
185
202
 
186
203
  def object(
@@ -190,6 +207,7 @@ class StoreManager:
190
207
  project="",
191
208
  allow_empty_resources=None,
192
209
  secrets: Optional[dict] = None,
210
+ **kwargs,
193
211
  ) -> DataItem:
194
212
  meta = artifact_url = None
195
213
  if is_store_uri(url):
@@ -197,6 +215,8 @@ class StoreManager:
197
215
  meta, url = self.get_store_artifact(
198
216
  url, project, allow_empty_resources, secrets
199
217
  )
218
+ if not allow_empty_resources:
219
+ verify_target_path(meta)
200
220
 
201
221
  store, subpath, url = self.get_or_create_store(
202
222
  url, secrets=secrets, project_name=project
@@ -218,7 +238,7 @@ class StoreManager:
218
238
  cache: Optional[dict] = None,
219
239
  schema_to_class: callable = schema_to_store,
220
240
  **kwargs,
221
- ) -> (DataStore, str, str):
241
+ ) -> (BaseRemoteClient, str, str):
222
242
  # The cache can be an empty dictionary ({}), even if it is a _stores object
223
243
  cache = cache if cache is not None else {}
224
244
  schema, endpoint, parsed_url = parse_url(url)
@@ -227,10 +247,7 @@ class StoreManager:
227
247
 
228
248
  if schema == "ds":
229
249
  datastore_profile = datastore_profile_read(url, project_name, secrets)
230
- if secrets and datastore_profile.secrets():
231
- secrets = merge(secrets, datastore_profile.secrets())
232
- else:
233
- secrets = secrets or datastore_profile.secrets()
250
+ secrets = merge(secrets or {}, datastore_profile.secrets() or {})
234
251
  url = datastore_profile.url(subpath)
235
252
  schema, endpoint, parsed_url = parse_url(url)
236
253
  subpath = parsed_url.path
@@ -260,6 +277,9 @@ class StoreManager:
260
277
  remote_client_class = schema_to_class(schema)
261
278
  remote_client = None
262
279
  if remote_client_class:
280
+ endpoint, subpath = remote_client_class.parse_endpoint_and_path(
281
+ endpoint, subpath
282
+ )
263
283
  remote_client = remote_client_class(
264
284
  self, schema, cache_key, parsed_url.netloc, secrets=secrets, **kwargs
265
285
  )
@@ -288,5 +308,61 @@ class StoreManager:
288
308
  )
289
309
  return datastore, sub_path, url
290
310
 
311
+ def get_or_create_model_provider(
312
+ self,
313
+ url,
314
+ secrets: Optional[dict] = None,
315
+ project_name="",
316
+ default_invoke_kwargs: Optional[dict] = None,
317
+ raise_missing_schema_exception=True,
318
+ ) -> ModelProvider:
319
+ schema_to_provider_with_raise = partial(
320
+ schema_to_model_provider,
321
+ raise_missing_schema_exception=raise_missing_schema_exception,
322
+ )
323
+ model_provider, _, _ = self._get_or_create_remote_client(
324
+ url=url,
325
+ secrets=secrets,
326
+ project_name=project_name,
327
+ schema_to_class=schema_to_provider_with_raise,
328
+ default_invoke_kwargs=default_invoke_kwargs,
329
+ )
330
+ if model_provider and not isinstance(model_provider, ModelProvider):
331
+ raise mlrun.errors.MLRunInvalidArgumentError(
332
+ "remote client by url is not model_provider"
333
+ )
334
+ return model_provider
335
+
291
336
  def reset_secrets(self):
292
337
  self._secrets = {}
338
+
339
+ def model_provider_object(
340
+ self,
341
+ url,
342
+ project="",
343
+ allow_empty_resources=None,
344
+ secrets: Optional[dict] = None,
345
+ default_invoke_kwargs: Optional[dict] = None,
346
+ raise_missing_schema_exception=True,
347
+ ) -> ModelProvider:
348
+ if mlrun.datastore.is_store_uri(url):
349
+ resource = self.get_store_artifact(
350
+ url,
351
+ project,
352
+ allow_empty_resources,
353
+ secrets,
354
+ )
355
+ if not isinstance(resource, ModelArtifact) or not resource.model_url:
356
+ raise mlrun.errors.MLRunInvalidArgumentError(
357
+ "unable to create the model provider from the given resource URI"
358
+ )
359
+ url = resource.model_url
360
+ default_invoke_kwargs = default_invoke_kwargs or resource.default_config
361
+ model_provider = self.get_or_create_model_provider(
362
+ url,
363
+ secrets=secrets,
364
+ project_name=project,
365
+ default_invoke_kwargs=default_invoke_kwargs,
366
+ raise_missing_schema_exception=raise_missing_schema_exception,
367
+ )
368
+ return model_provider