mlrun 1.10.0rc18__tar.gz → 1.10.0rc20__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 (396) hide show
  1. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/Makefile +73 -12
  2. {mlrun-1.10.0rc18/mlrun.egg-info → mlrun-1.10.0rc20}/PKG-INFO +4 -4
  3. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/dev-requirements.txt +1 -0
  4. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/dockerfiles/mlrun-api/requirements.txt +1 -1
  5. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/__init__.py +21 -2
  6. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/constants.py +1 -0
  7. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/function.py +10 -0
  8. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/constants.py +4 -11
  9. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/model_endpoints.py +2 -0
  10. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/__init__.py +9 -1
  11. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/huggingface_provider.py +114 -26
  12. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/model_provider.py +144 -70
  13. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/openai_provider.py +95 -37
  14. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/db/base.py +0 -19
  15. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/db/httpdb.py +10 -46
  16. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/db/nopdb.py +0 -10
  17. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/launcher/base.py +13 -6
  18. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/api.py +43 -22
  19. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/base.py +1 -1
  20. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/controller.py +112 -38
  21. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/_schedules.py +13 -9
  22. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/stream_processing.py +16 -12
  23. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/platforms/__init__.py +3 -2
  24. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/projects/project.py +2 -2
  25. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/run.py +1 -1
  26. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/base.py +5 -2
  27. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/daskjob.py +1 -0
  28. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/application/application.py +84 -5
  29. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/function.py +3 -1
  30. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/server.py +24 -0
  31. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/states.py +80 -30
  32. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/system_steps.py +60 -36
  33. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/helpers.py +37 -13
  34. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification_pusher.py +1 -1
  35. mlrun-1.10.0rc20/mlrun/utils/version/version.json +4 -0
  36. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20/mlrun.egg-info}/PKG-INFO +4 -4
  37. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun.egg-info/SOURCES.txt +0 -1
  38. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun.egg-info/requires.txt +3 -3
  39. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/requirements.txt +1 -1
  40. mlrun-1.10.0rc18/mlrun/api/schemas/__init__.py +0 -259
  41. mlrun-1.10.0rc18/mlrun/utils/version/version.json +0 -4
  42. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/LICENSE +0 -0
  43. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/MANIFEST.in +0 -0
  44. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/README.md +0 -0
  45. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/dependencies.py +0 -0
  46. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/archive.zip +0 -0
  47. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/function.py +0 -0
  48. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/handler.py +0 -0
  49. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/infile.txt +0 -0
  50. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/load-project.ipynb +0 -0
  51. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_basics.ipynb +0 -0
  52. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_dask.ipynb +0 -0
  53. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_db.ipynb +0 -0
  54. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_export_import.ipynb +0 -0
  55. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_jobs.ipynb +0 -0
  56. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_sparkk8s.ipynb +0 -0
  57. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/mlrun_vault.ipynb +0 -0
  58. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/model.bst +0 -0
  59. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/new-project.ipynb +0 -0
  60. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/nulltst.py +0 -0
  61. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/params.csv +0 -0
  62. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/remote-spark.ipynb +0 -0
  63. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/secrets.txt +0 -0
  64. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/spark-function.py +0 -0
  65. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/training.py +0 -0
  66. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/v2_model_server.ipynb +0 -0
  67. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/examples/xgb_serving.ipynb +0 -0
  68. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/extras-requirements.txt +0 -0
  69. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/__main__.py +0 -0
  70. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/alerts/__init__.py +0 -0
  71. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/alerts/alert.py +0 -0
  72. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/__init__.py +0 -0
  73. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/base.py +0 -0
  74. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/dataset.py +0 -0
  75. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/document.py +0 -0
  76. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/helpers.py +0 -0
  77. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/llm_prompt.py +0 -0
  78. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/manager.py +0 -0
  79. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/model.py +0 -0
  80. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/artifacts/plots.py +0 -0
  81. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/__init__.py +0 -0
  82. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/db/__init__.py +0 -0
  83. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/db/dialects.py +0 -0
  84. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/__init__.py +0 -0
  85. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/artifact.py +0 -0
  86. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/base.py +0 -0
  87. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/feature_set.py +0 -0
  88. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/function.py +0 -0
  89. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/model_endpoint.py +0 -0
  90. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/pipeline.py +0 -0
  91. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/project.py +0 -0
  92. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/formatters/run.py +0 -0
  93. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/helpers.py +0 -0
  94. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/model_monitoring/__init__.py +0 -0
  95. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/model_monitoring/helpers.py +0 -0
  96. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/runtimes/constants.py +0 -0
  97. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/__init__.py +0 -0
  98. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/alert.py +0 -0
  99. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/api_gateway.py +0 -0
  100. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/artifact.py +0 -0
  101. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/auth.py +0 -0
  102. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/background_task.py +0 -0
  103. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/client_spec.py +0 -0
  104. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/clusterization_spec.py +0 -0
  105. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/common.py +0 -0
  106. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/constants.py +0 -0
  107. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/datastore_profile.py +0 -0
  108. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/events.py +0 -0
  109. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/feature_store.py +0 -0
  110. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/frontend_spec.py +0 -0
  111. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/http.py +0 -0
  112. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/hub.py +0 -0
  113. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/k8s.py +0 -0
  114. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/memory_reports.py +0 -0
  115. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  116. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  117. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  118. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/notification.py +0 -0
  119. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/object.py +0 -0
  120. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/pagination.py +0 -0
  121. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/partition.py +0 -0
  122. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/pipeline.py +0 -0
  123. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/project.py +0 -0
  124. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/regex.py +0 -0
  125. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/runs.py +0 -0
  126. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/runtime_resource.py +0 -0
  127. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/schedule.py +0 -0
  128. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/secret.py +0 -0
  129. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/serving.py +0 -0
  130. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/tag.py +0 -0
  131. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/schemas/workflow.py +0 -0
  132. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/secrets.py +0 -0
  133. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/common/types.py +0 -0
  134. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/config.py +0 -0
  135. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/data_types/__init__.py +0 -0
  136. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/data_types/data_types.py +0 -0
  137. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/data_types/infer.py +0 -0
  138. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/data_types/spark.py +0 -0
  139. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/data_types/to_pandas.py +0 -0
  140. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/alibaba_oss.py +0 -0
  141. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/azure_blob.py +0 -0
  142. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/base.py +0 -0
  143. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/datastore.py +0 -0
  144. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/datastore_profile.py +0 -0
  145. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/dbfs_store.py +0 -0
  146. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/filestore.py +0 -0
  147. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/google_cloud_storage.py +0 -0
  148. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/hdfs.py +0 -0
  149. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/inmem.py +0 -0
  150. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/__init__.py +0 -0
  151. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/redis.py +0 -0
  152. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/remote_client.py +0 -0
  153. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/s3.py +0 -0
  154. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/snowflake_utils.py +0 -0
  155. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/sources.py +0 -0
  156. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/spark_udf.py +0 -0
  157. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/spark_utils.py +0 -0
  158. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/store_resources.py +0 -0
  159. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/storeytargets.py +0 -0
  160. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/targets.py +0 -0
  161. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/utils.py +0 -0
  162. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/v3io.py +0 -0
  163. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/vectorstore.py +0 -0
  164. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/wasbfs/__init__.py +0 -0
  165. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/datastore/wasbfs/fs.py +0 -0
  166. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/db/__init__.py +0 -0
  167. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/db/auth_utils.py +0 -0
  168. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/db/factory.py +0 -0
  169. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/errors.py +0 -0
  170. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/execution.py +0 -0
  171. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/__init__.py +0 -0
  172. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/api.py +0 -0
  173. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/common.py +0 -0
  174. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/feature_set.py +0 -0
  175. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/feature_vector.py +0 -0
  176. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/feature_vector_utils.py +0 -0
  177. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/ingestion.py +0 -0
  178. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/__init__.py +0 -0
  179. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/base.py +0 -0
  180. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  181. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/job.py +0 -0
  182. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  183. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  184. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  185. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/feature_store/steps.py +0 -0
  186. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/features.py +0 -0
  187. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/__init__.py +0 -0
  188. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/__init__.py +0 -0
  189. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  190. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  191. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/model_handler.py +0 -0
  192. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/plan.py +0 -0
  193. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/producer.py +0 -0
  194. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/utils.py +0 -0
  195. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  196. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  197. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  198. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  199. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  200. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  201. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/utils.py +0 -0
  202. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  203. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  204. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  205. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  206. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  207. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  208. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  209. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plan.py +0 -0
  210. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  211. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  212. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  213. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  214. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  215. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  216. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/producer.py +0 -0
  217. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/utils.py +0 -0
  218. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  219. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  220. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/huggingface/__init__.py +0 -0
  221. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/huggingface/model_server.py +0 -0
  222. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/__init__.py +0 -0
  223. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  224. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  225. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  226. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  227. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  228. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  229. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  230. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  231. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  232. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/model_server.py +0 -0
  233. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/utils.py +0 -0
  234. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/__init__.py +0 -0
  235. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/dataset.py +0 -0
  236. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  237. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/model_handler.py +0 -0
  238. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/model_server.py +0 -0
  239. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/parallel_coordinates.py +0 -0
  240. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/__init__.py +0 -0
  241. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  242. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  243. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  244. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  245. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  246. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  247. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  248. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  249. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/model_server.py +0 -0
  250. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/utils.py +0 -0
  251. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/__init__.py +0 -0
  252. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/estimator.py +0 -0
  253. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/metric.py +0 -0
  254. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  255. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  256. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  257. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/utils.py +0 -0
  258. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  259. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  260. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  261. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  262. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  263. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  264. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  265. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  266. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/utils.py +0 -0
  267. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/__init__.py +0 -0
  268. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  269. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  270. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/utils.py +0 -0
  271. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/k8s_utils.py +0 -0
  272. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/launcher/__init__.py +0 -0
  273. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/launcher/client.py +0 -0
  274. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/launcher/factory.py +0 -0
  275. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/launcher/local.py +0 -0
  276. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/launcher/remote.py +0 -0
  277. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/lists.py +0 -0
  278. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model.py +0 -0
  279. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/__init__.py +0 -0
  280. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/__init__.py +0 -0
  281. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  282. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/context.py +0 -0
  283. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  284. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  285. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  286. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/results.py +0 -0
  287. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/__init__.py +0 -0
  288. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/_stats.py +0 -0
  289. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  290. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  291. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  292. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  293. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  294. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  295. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  296. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  297. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  298. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  299. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
  300. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/features_drift_table.py +0 -0
  301. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/helpers.py +0 -0
  302. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  303. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  304. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/model_monitoring/writer.py +0 -0
  305. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/__init__.py +0 -0
  306. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/context_handler.py +0 -0
  307. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/errors.py +0 -0
  308. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packager.py +0 -0
  309. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packagers/__init__.py +0 -0
  310. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packagers/default_packager.py +0 -0
  311. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packagers/numpy_packagers.py +0 -0
  312. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packagers/pandas_packagers.py +0 -0
  313. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  314. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/packagers_manager.py +0 -0
  315. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/__init__.py +0 -0
  316. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/_archiver.py +0 -0
  317. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/_formatter.py +0 -0
  318. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/_pickler.py +0 -0
  319. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/_supported_format.py +0 -0
  320. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/log_hint_utils.py +0 -0
  321. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/package/utils/type_hint_utils.py +0 -0
  322. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/platforms/iguazio.py +0 -0
  323. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/projects/__init__.py +0 -0
  324. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/projects/operations.py +0 -0
  325. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/projects/pipelines.py +0 -0
  326. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/render.py +0 -0
  327. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/__init__.py +0 -0
  328. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  329. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  330. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  331. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  332. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/funcdoc.py +0 -0
  333. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/function_reference.py +0 -0
  334. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/generators.py +0 -0
  335. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/kubejob.py +0 -0
  336. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/local.py +0 -0
  337. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/mounts.py +0 -0
  338. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/mpijob/__init__.py +0 -0
  339. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/mpijob/abstract.py +0 -0
  340. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/mpijob/v1.py +0 -0
  341. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/__init__.py +0 -0
  342. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  343. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  344. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  345. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  346. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/serving.py +0 -0
  347. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/pod.py +0 -0
  348. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/remotesparkjob.py +0 -0
  349. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  350. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  351. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/runtimes/utils.py +0 -0
  352. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/secrets.py +0 -0
  353. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/__init__.py +0 -0
  354. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/merger.py +0 -0
  355. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/remote.py +0 -0
  356. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/routers.py +0 -0
  357. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/serving_wrapper.py +0 -0
  358. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/utils.py +0 -0
  359. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/v1_serving.py +0 -0
  360. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/serving/v2_serving.py +0 -0
  361. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/track/__init__.py +0 -0
  362. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/track/tracker.py +0 -0
  363. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/track/tracker_manager.py +0 -0
  364. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/track/trackers/__init__.py +0 -0
  365. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  366. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/__init__.py +0 -0
  367. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/async_http.py +0 -0
  368. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/azure_vault.py +0 -0
  369. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/clones.py +0 -0
  370. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/condition_evaluator.py +0 -0
  371. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/http.py +0 -0
  372. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/logger.py +0 -0
  373. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/__init__.py +0 -0
  374. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/__init__.py +0 -0
  375. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/base.py +0 -0
  376. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/console.py +0 -0
  377. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/git.py +0 -0
  378. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/ipython.py +0 -0
  379. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/mail.py +0 -0
  380. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/slack.py +0 -0
  381. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/webhook.py +0 -0
  382. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/regex.py +0 -0
  383. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/retryer.py +0 -0
  384. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/singleton.py +0 -0
  385. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/v3io_clients.py +0 -0
  386. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/vault.py +0 -0
  387. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/version/__init__.py +0 -0
  388. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun/utils/version/version.py +0 -0
  389. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun.egg-info/dependency_links.txt +0 -0
  390. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun.egg-info/entry_points.txt +0 -0
  391. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun.egg-info/not-zip-safe +0 -0
  392. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/mlrun.egg-info/top_level.txt +0 -0
  393. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/packages.py +0 -0
  394. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/pyproject.toml +0 -0
  395. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/setup.cfg +0 -0
  396. {mlrun-1.10.0rc18 → mlrun-1.10.0rc20}/setup.py +0 -0
@@ -13,6 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
15
  # THIS BLOCK IS FOR VARIABLES USER MAY OVERRIDE
16
+ DOCKER_DEFAULT_PLATFORM ?= linux/amd64
16
17
  MLRUN_VERSION ?= unstable
17
18
  # pip requires the python version to be according to some regex (so "unstable" is not valid for example) this regex only
18
19
  # allows us to have free text (like unstable) after the "+". on the contrary in a docker tag "+" is not a valid
@@ -235,11 +236,20 @@ update-version-file: ## Update the version file
235
236
  python ./automation/version/version_file.py ensure --mlrun-version $(MLRUN_VERSION)
236
237
 
237
238
  .PHONY: generate-dockerignore
238
- generate-dockerignore: ## Copies the root .dockerignore and removes the tests pattern from it
239
+ generate-dockerignore: ## Copies the root .dockerignore and removes test exclusions for test-system
239
240
  $(eval TARGET := dockerfiles/${DEST}/Dockerfile.dockerignore)
240
- @if [ -f "$(TARGET)" ]; then \
241
- temp_file=$$(mktemp) && \
242
- sed '/\*\*\/tests/d' .dockerignore > $$temp_file && \
241
+ @if [ -z "${DEST}" ]; then \
242
+ echo "Error: DEST variable must be set"; \
243
+ exit 1; \
244
+ fi; \
245
+ echo "Generating $(TARGET)..."; \
246
+ temp_file=$$(mktemp); \
247
+ if [ "$(DEST)" = "test-system" ]; then \
248
+ grep -vE '(\*\*/tests|\*\*/env\.yml|\*\*/test-[^/]*\.yml|\*\*/model_monitoring/assets)' .dockerignore > $$temp_file; \
249
+ else \
250
+ sed '/\*\*\/tests/d' .dockerignore > $$temp_file; \
251
+ fi; \
252
+ if [ -f "$(TARGET)" ]; then \
243
253
  if cmp -s $$temp_file "$(TARGET)"; then \
244
254
  echo "File $(TARGET) already exists and content is identical"; \
245
255
  rm $$temp_file; \
@@ -249,7 +259,7 @@ generate-dockerignore: ## Copies the root .dockerignore and removes the tests pa
249
259
  mv $$temp_file "$(TARGET)"; \
250
260
  fi; \
251
261
  else \
252
- sed '/\*\*\/tests/d' .dockerignore > "$(TARGET)"; \
262
+ mv $$temp_file "$(TARGET)"; \
253
263
  fi
254
264
 
255
265
 
@@ -292,7 +302,7 @@ MLRUN_CACHE_IMAGE_PUSH_COMMAND := $(if $(and $(MLRUN_DOCKER_CACHE_FROM_TAG),$(ML
292
302
  DEFAULT_IMAGES += $(MLRUN_IMAGE_NAME_TAGGED)
293
303
 
294
304
  .PHONY: mlrun
295
- mlrun: update-version-file ## Build mlrun docker image
305
+ mlrun: common-image update-version-file ## Build mlrun docker image
296
306
  $(MLRUN_CACHE_IMAGE_PULL_COMMAND)
297
307
  docker build \
298
308
  --file dockerfiles/mlrun/Dockerfile \
@@ -300,6 +310,7 @@ mlrun: update-version-file ## Build mlrun docker image
300
310
  --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
301
311
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
302
312
  --build-arg MLRUN_UV_IMAGE=$(MLRUN_UV_IMAGE) \
313
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
303
314
  $(MLRUN_IMAGE_DOCKER_CACHE_FROM_FLAG) \
304
315
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
305
316
  --tag $(MLRUN_IMAGE_NAME_TAGGED) .
@@ -325,13 +336,14 @@ MLRUN_KFP_CACHE_IMAGE_PUSH_COMMAND := $(if $(and $(MLRUN_DOCKER_CACHE_FROM_TAG),
325
336
  DEFAULT_IMAGES += $(MLRUN_KFP_IMAGE_NAME_TAGGED)
326
337
 
327
338
  .PHONY: mlrun-kfp
328
- mlrun-kfp: update-version-file ## Build mlrun docker image with KFP
339
+ mlrun-kfp: common-image-3.9 update-version-file ## Build mlrun docker image with KFP
329
340
  $(MLRUN_KFP_CACHE_IMAGE_PULL_COMMAND)
330
341
  docker build \
331
342
  --file dockerfiles/mlrun-kfp/Dockerfile \
332
343
  --build-arg MLRUN_DOCKER_REGISTRY=$(MLRUN_DOCKER_REGISTRY) \
333
344
  --build-arg MLRUN_VERSION=$(MLRUN_VERSION) \
334
345
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
346
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
335
347
  $(MLRUN_KFP_IMAGE_DOCKER_CACHE_FROM_FLAG) \
336
348
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
337
349
  --tag $(MLRUN_KFP_IMAGE_NAME):$(MLRUN_DOCKER_TAG)$(MLRUN_PYTHON_VERSION_SUFFIX) .
@@ -470,6 +482,49 @@ else
470
482
  $(MAKE) -C server/go compile-schemas
471
483
  endif
472
484
 
485
+ ###############################################################################
486
+ # Common base image
487
+ ###############################################################################
488
+
489
+ COMMON_PLATFORM_TAG := $(subst /,_,$(DOCKER_DEFAULT_PLATFORM))
490
+ COMMON_STAMP ?= build/common-image.$(MLRUN_PYTHON_VERSION).$(COMMON_PLATFORM_TAG).stamp
491
+ COMMON_DOCKERFILE := dockerfiles/common/Dockerfile
492
+ COMMON_IMAGE_NAME := mlrun_common_image:$(MLRUN_PYTHON_VERSION)
493
+
494
+ common-image-3.11:
495
+ $(MAKE) common-image MLRUN_PYTHON_VERSION=3.11
496
+
497
+ common-image-3.9:
498
+ $(MAKE) common-image MLRUN_PYTHON_VERSION=3.9
499
+
500
+ # --- Build (cached) ----------------------------------------------------------
501
+ ifeq ($(strip $(MLRUN_NO_CACHE)),)
502
+ common-image: $(COMMON_STAMP)
503
+
504
+ $(COMMON_STAMP): $(COMMON_DOCKERFILE)
505
+ docker build \
506
+ --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
507
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
508
+ -f $(COMMON_DOCKERFILE) \
509
+ -t $(COMMON_IMAGE_NAME) . \
510
+ && mkdir -p $(dir $@) && touch $@
511
+ else # when MLRUN_NO_CACHE is set
512
+ .PHONY: common-image
513
+ common-image:
514
+ docker build \
515
+ --no-cache $(COMMON_DOCKER_ARGS) \
516
+ --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
517
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
518
+ -f $(COMMON_DOCKERFILE) \
519
+ -t $(COMMON_IMAGE_NAME) .
520
+ endif
521
+
522
+ .PHONY: clean-common-image
523
+ clean-common-image:
524
+ docker rmi $(COMMON_IMAGE_TAG) || true
525
+ rm -f $(COMMON_STAMP)
526
+
527
+
473
528
  MLRUN_API_IMAGE_NAME := $(MLRUN_DOCKER_IMAGE_PREFIX)/mlrun-api
474
529
  MLRUN_API_CACHE_IMAGE_NAME := $(MLRUN_CACHE_DOCKER_IMAGE_PREFIX)/mlrun-api
475
530
  MLRUN_API_IMAGE_NAME_TAGGED := $(MLRUN_API_IMAGE_NAME):$(MLRUN_DOCKER_TAG)$(MLRUN_PYTHON_VERSION_SUFFIX)
@@ -479,13 +534,18 @@ MLRUN_API_CACHE_IMAGE_PULL_COMMAND := $(if $(and $(MLRUN_DOCKER_CACHE_FROM_TAG),
479
534
  MLRUN_API_CACHE_IMAGE_PUSH_COMMAND := $(if $(and $(MLRUN_DOCKER_CACHE_FROM_TAG),$(MLRUN_PUSH_DOCKER_CACHE_IMAGE)),docker tag $(MLRUN_API_IMAGE_NAME_TAGGED) $(MLRUN_API_CACHE_IMAGE_NAME_TAGGED) && docker push $(MLRUN_API_CACHE_IMAGE_NAME_TAGGED),)
480
535
  DEFAULT_IMAGES += $(MLRUN_API_IMAGE_NAME_TAGGED)
481
536
 
537
+
538
+ # The API (and the common image it inherits from) must *always* be built on
539
+ # Python 3.11, regardless of what the rest of the matrix is doing.
540
+ api: export MLRUN_PYTHON_VERSION = 3.11
482
541
  .PHONY: api
483
- api: compile-schemas update-version-file ## Build mlrun-api docker image
542
+ api: common-image-3.11 compile-schemas update-version-file ## Build mlrun-api docker image
484
543
  $(MLRUN_API_CACHE_IMAGE_PULL_COMMAND)
485
544
  docker build \
486
545
  --file dockerfiles/mlrun-api/Dockerfile \
487
546
  --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
488
547
  --build-arg MLRUN_UV_IMAGE=$(MLRUN_UV_IMAGE) \
548
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
489
549
  $(MLRUN_API_IMAGE_DOCKER_CACHE_FROM_FLAG) \
490
550
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
491
551
  --tag $(MLRUN_API_IMAGE_NAME_TAGGED) .
@@ -508,7 +568,7 @@ MLRUN_TEST_CACHE_IMAGE_PULL_COMMAND := $(if $(and $(MLRUN_DOCKER_CACHE_FROM_TAG)
508
568
  MLRUN_TEST_CACHE_IMAGE_PUSH_COMMAND := $(if $(and $(MLRUN_DOCKER_CACHE_FROM_TAG),$(MLRUN_PUSH_DOCKER_CACHE_IMAGE)),docker tag $(MLRUN_TEST_IMAGE_NAME_TAGGED) $(MLRUN_TEST_CACHE_IMAGE_NAME_TAGGED) && docker push $(MLRUN_TEST_CACHE_IMAGE_NAME_TAGGED),)
509
569
 
510
570
  .PHONY: build-test
511
- build-test: compile-schemas update-version-file ## Build test docker image
571
+ build-test: common-image compile-schemas update-version-file ## Build test docker image
512
572
  $(MAKE) generate-dockerignore DEST=test
513
573
  $(MLRUN_TEST_CACHE_IMAGE_PULL_COMMAND)
514
574
  docker build \
@@ -517,6 +577,7 @@ build-test: compile-schemas update-version-file ## Build test docker image
517
577
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
518
578
  --build-arg MLRUN_PIPELINES_KFP_VERSION=$(MLRUN_PIPELINES_KFP_VERSION) \
519
579
  --build-arg MLRUN_UV_VERSION=$(MLRUN_UV_VERSION) \
580
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
520
581
  $(MLRUN_TEST_IMAGE_DOCKER_CACHE_FROM_FLAG) \
521
582
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
522
583
  --tag $(MLRUN_TEST_IMAGE_NAME_TAGGED) .
@@ -529,13 +590,13 @@ push-test: build-test ## Push test docker image
529
590
  MLRUN_SYSTEM_TEST_IMAGE_NAME := $(MLRUN_DOCKER_IMAGE_PREFIX)/test-system:$(MLRUN_DOCKER_TAG)
530
591
 
531
592
  .PHONY: build-test-system
532
- build-test-system: compile-schemas update-version-file ## Build system tests docker image
593
+ build-test-system: common-image compile-schemas update-version-file ## Build system tests docker image
533
594
  $(MAKE) generate-dockerignore DEST=test-system
534
595
  docker build \
535
596
  --file dockerfiles/test-system/Dockerfile \
536
- --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
537
597
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
538
598
  --build-arg MLRUN_UV_VERSION=$(MLRUN_UV_VERSION) \
599
+ --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
539
600
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
540
601
  --tag $(MLRUN_SYSTEM_TEST_IMAGE_NAME) .
541
602
 
@@ -619,7 +680,7 @@ test: clean ## Run mlrun tests
619
680
 
620
681
 
621
682
  .PHONY: test-integration-dockerized
622
- test-integration-dockerized: build-test ## Run mlrun integration tests in docker container
683
+ test-integration-dockerized: build-test api ## Run mlrun integration tests in docker container, some tests require the api image to be built
623
684
  COVERAGE_MOUNT_PATH="/tmp/coverage_reports/integration_tests" ;\
624
685
  $(SETUP_COVERAGE_MOUNTING) && \
625
686
  docker run \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc18
3
+ Version: 1.10.0rc20
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -44,7 +44,7 @@ Requires-Dist: semver~=3.0
44
44
  Requires-Dist: dependency-injector~=4.41
45
45
  Requires-Dist: fsspec<2024.7,>=2023.9.2
46
46
  Requires-Dist: v3iofs~=0.1.17
47
- Requires-Dist: storey~=1.10.9
47
+ Requires-Dist: storey~=1.10.10
48
48
  Requires-Dist: inflection~=0.5.0
49
49
  Requires-Dist: python-dotenv~=1.0
50
50
  Requires-Dist: setuptools>=75.2
@@ -112,7 +112,7 @@ Requires-Dist: apscheduler<4,>=3.11; extra == "api"
112
112
  Requires-Dist: objgraph~=3.6; extra == "api"
113
113
  Requires-Dist: igz-mgmt~=0.4.1; extra == "api"
114
114
  Requires-Dist: humanfriendly~=10.0; extra == "api"
115
- Requires-Dist: fastapi~=0.115.6; extra == "api"
115
+ Requires-Dist: fastapi~=0.116.0; extra == "api"
116
116
  Requires-Dist: sqlalchemy~=2.0; extra == "api"
117
117
  Requires-Dist: sqlalchemy-utils~=0.41.2; extra == "api"
118
118
  Requires-Dist: pymysql~=1.1; extra == "api"
@@ -203,7 +203,7 @@ Requires-Dist: dask~=2024.12.1; python_version >= "3.11" and extra == "complete-
203
203
  Requires-Dist: databricks-sdk~=0.20.0; extra == "complete-api"
204
204
  Requires-Dist: distributed~=2023.12.1; python_version < "3.11" and extra == "complete-api"
205
205
  Requires-Dist: distributed~=2024.12.1; python_version >= "3.11" and extra == "complete-api"
206
- Requires-Dist: fastapi~=0.115.6; extra == "complete-api"
206
+ Requires-Dist: fastapi~=0.116.0; extra == "complete-api"
207
207
  Requires-Dist: gcsfs<2024.7,>=2023.9.2; extra == "complete-api"
208
208
  Requires-Dist: google-cloud-bigquery-storage~=2.17; extra == "complete-api"
209
209
  Requires-Dist: google-cloud-bigquery[bqstorage,pandas]==3.14.1; extra == "complete-api"
@@ -48,3 +48,4 @@ openai~=1.88
48
48
  transformers~=4.53
49
49
  # for hugging face image classifier test:
50
50
  tf-keras~=2.18
51
+ pillow~=11.3
@@ -6,7 +6,7 @@ apscheduler>=3.11,<4
6
6
  objgraph~=3.6
7
7
  igz-mgmt~=0.4.1
8
8
  humanfriendly~=10.0
9
- fastapi~=0.115.6
9
+ fastapi~=0.116.0
10
10
  sqlalchemy~=2.0
11
11
  sqlalchemy-utils~=0.41.2
12
12
  pymysql~=1.1
@@ -31,6 +31,7 @@ from typing import Optional
31
31
 
32
32
  import dotenv
33
33
 
34
+ from .common.constants import MLRUN_ACTIVE_PROJECT
34
35
  from .config import config as mlconf
35
36
  from .datastore import DataItem, ModelProvider, store_manager
36
37
  from .db import get_run_db
@@ -167,11 +168,29 @@ def set_environment(
167
168
 
168
169
 
169
170
  def get_current_project(silent: bool = False) -> Optional[MlrunProject]:
170
- if not pipeline_context.project and not silent:
171
+ if pipeline_context.project:
172
+ return pipeline_context.project
173
+
174
+ project_name = environ.get(MLRUN_ACTIVE_PROJECT, None)
175
+ if not project_name:
176
+ if not silent:
177
+ raise MLRunInvalidArgumentError(
178
+ "No current project is initialized. Use new, get or load project functions first."
179
+ )
180
+ return None
181
+
182
+ project = load_project(
183
+ name=project_name,
184
+ url=project_name,
185
+ save=False,
186
+ sync_functions=False,
187
+ )
188
+
189
+ if not project and not silent:
171
190
  raise MLRunInvalidArgumentError(
172
191
  "No current project is initialized. Use new, get or load project functions first."
173
192
  )
174
- return pipeline_context.project
193
+ return project
175
194
 
176
195
 
177
196
  def get_sample_path(subpath=""):
@@ -30,6 +30,7 @@ RESERVED_TAG_NAME_LATEST = "latest"
30
30
  JOB_TYPE_WORKFLOW_RUNNER = "workflow-runner"
31
31
  JOB_TYPE_PROJECT_LOADER = "project-loader"
32
32
  JOB_TYPE_RERUN_WORKFLOW_RUNNER = "rerun-workflow-runner"
33
+ MLRUN_ACTIVE_PROJECT = "MLRUN_ACTIVE_PROJECT"
33
34
 
34
35
 
35
36
  class MLRunInternalLabels:
@@ -114,11 +114,21 @@ class StateThresholds(pydantic.v1.BaseModel):
114
114
  default: typing.Optional[dict[str, str]]
115
115
 
116
116
 
117
+ class Backoff(pydantic.v1.BaseModel):
118
+ default_base_delay: typing.Optional[str]
119
+ min_base_delay: typing.Optional[str]
120
+
121
+
122
+ class RetrySpec(pydantic.v1.BaseModel):
123
+ backoff: Backoff
124
+
125
+
117
126
  class FunctionSpec(pydantic.v1.BaseModel):
118
127
  image_pull_secret: typing.Optional[ImagePullSecret]
119
128
  security_context: typing.Optional[SecurityContext]
120
129
  service_account: typing.Optional[ServiceAccount]
121
130
  state_thresholds: typing.Optional[StateThresholds]
131
+ retry: typing.Optional[RetrySpec]
122
132
 
123
133
  class Config:
124
134
  extra = pydantic.v1.Extra.allow
@@ -34,6 +34,7 @@ class ModelEndpointSchema(MonitoringStrEnum):
34
34
  UID = "uid"
35
35
  PROJECT = "project"
36
36
  ENDPOINT_TYPE = "endpoint_type"
37
+ MODE = "mode"
37
38
  NAME = "name"
38
39
  CREATED = "created"
39
40
  UPDATED = "updated"
@@ -326,18 +327,10 @@ class EndpointType(IntEnum):
326
327
  def top_level_list(cls):
327
328
  return [cls.NODE_EP, cls.ROUTER, cls.BATCH_EP]
328
329
 
329
- @classmethod
330
- def real_time_list(cls):
331
- return [cls.NODE_EP, cls.ROUTER, cls.LEAF_EP]
332
-
333
- @classmethod
334
- def batch_list(cls):
335
- return [cls.BATCH_EP]
336
330
 
337
-
338
- class EndpointMode(StrEnum):
339
- REAL_TIME = "real_time"
340
- BATCH = "batch"
331
+ class EndpointMode(IntEnum):
332
+ REAL_TIME = 0
333
+ BATCH = 1
341
334
 
342
335
 
343
336
  class MonitoringFunctionNames(MonitoringStrEnum):
@@ -28,6 +28,7 @@ from .constants import (
28
28
  FQN_REGEX,
29
29
  MODEL_ENDPOINT_ID_PATTERN,
30
30
  PROJECT_PATTERN,
31
+ EndpointMode,
31
32
  EndpointType,
32
33
  ModelEndpointMonitoringMetricType,
33
34
  ModelMonitoringMode,
@@ -118,6 +119,7 @@ class ModelEndpointMetadata(ObjectMetadata, ModelEndpointParser):
118
119
  project: constr(regex=PROJECT_PATTERN)
119
120
  endpoint_type: EndpointType = EndpointType.NODE_EP
120
121
  uid: Optional[constr(regex=MODEL_ENDPOINT_ID_PATTERN)]
122
+ mode: EndpointMode = EndpointMode.REAL_TIME
121
123
 
122
124
  @classmethod
123
125
  def mutable_fields(cls):
@@ -39,6 +39,7 @@ __all__ = [
39
39
  from urllib.parse import urlparse
40
40
 
41
41
  import fsspec
42
+ import storey
42
43
 
43
44
  import mlrun.datastore.wasbfs
44
45
  from mlrun.datastore.datastore_profile import (
@@ -168,11 +169,12 @@ def get_stream_pusher(stream_path: str, **kwargs):
168
169
  raise ValueError(f"unsupported stream path {stream_path}")
169
170
 
170
171
 
171
- class _DummyStream:
172
+ class _DummyStream(storey.MapClass):
172
173
  """stream emulator for tests and debug"""
173
174
 
174
175
  def __init__(self, event_list=None, **kwargs):
175
176
  self.event_list = event_list or []
177
+ super().__init__(**kwargs)
176
178
 
177
179
  def push(self, data, **kwargs):
178
180
  if not isinstance(data, list):
@@ -180,3 +182,9 @@ class _DummyStream:
180
182
  for item in data:
181
183
  logger.info(f"dummy stream got event: {item}, kwargs={kwargs}")
182
184
  self.event_list.append(item)
185
+
186
+ def do(self, event):
187
+ if not isinstance(event, list):
188
+ event = [event]
189
+ for item in event:
190
+ self.event_list.append(item)
@@ -12,16 +12,18 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import TYPE_CHECKING, Optional, TypeVar, Union
15
+ from typing import TYPE_CHECKING, Any, Optional, Union
16
16
 
17
17
  import mlrun
18
- from mlrun.datastore.model_provider.model_provider import ModelProvider
18
+ from mlrun.datastore.model_provider.model_provider import (
19
+ InvokeResponseFormat,
20
+ ModelProvider,
21
+ UsageResponseKeys,
22
+ )
19
23
 
20
24
  if TYPE_CHECKING:
21
25
  from transformers.pipelines.base import Pipeline
22
-
23
- T = TypeVar("T")
24
- ChatType = list[dict[str, str]] # according to transformers.pipelines.text_generation
26
+ from transformers.pipelines.text_generation import ChatType
25
27
 
26
28
 
27
29
  class HuggingFaceProvider(ModelProvider):
@@ -63,15 +65,18 @@ class HuggingFaceProvider(ModelProvider):
63
65
  self.load_client()
64
66
 
65
67
  @staticmethod
66
- def _extract_string_output(result) -> str:
68
+ def _extract_string_output(response: list[dict]) -> str:
67
69
  """
68
70
  Extracts the first generated string from Hugging Face pipeline output,
69
71
  regardless of whether it's plain text-generation or chat-style output.
70
72
  """
71
- if not isinstance(result, list) or len(result) == 0:
73
+ if not isinstance(response, list) or len(response) == 0:
72
74
  raise ValueError("Empty or invalid pipeline output")
73
-
74
- return result[0].get("generated_text")
75
+ if len(response) != 1:
76
+ raise mlrun.errors.MLRunInvalidArgumentError(
77
+ "HuggingFaceProvider: extracting string from response is only supported for single-response outputs"
78
+ )
79
+ return response[0].get("generated_text")
75
80
 
76
81
  @classmethod
77
82
  def parse_endpoint_and_path(cls, endpoint, subpath) -> (str, str):
@@ -81,6 +86,68 @@ class HuggingFaceProvider(ModelProvider):
81
86
  subpath = ""
82
87
  return endpoint, subpath
83
88
 
89
+ def _response_handler(
90
+ self,
91
+ response: Union[str, list],
92
+ invoke_response_format: InvokeResponseFormat = InvokeResponseFormat.FULL,
93
+ messages: Union[str, list[str], "ChatType", list["ChatType"]] = None,
94
+ **kwargs,
95
+ ) -> Union[str, list, dict[str, Any]]:
96
+ """
97
+ Same as `ModelProvider._response_handler`.
98
+
99
+ * Expected to receive the response with `return_full_text=False`.
100
+
101
+ :param messages: Same as in `ModelProvider._response_handler`.
102
+ :param response: Same as in `ModelProvider._response_handler`.
103
+ :param invoke_response_format: Same as in `ModelProvider._response_handler`, in full and string modes.
104
+
105
+ For usage mode, generate 3 statistics:
106
+ prompt_tokens, completion_tokens and total_tokens.
107
+
108
+ NOTE: Token counts are estimated after answer generation and
109
+ may differ from the actual tokens generated by the model due to
110
+ internal decoding behavior and implementation details.
111
+
112
+ :param kwargs: Same as in `ModelProvider._response_handler`.
113
+
114
+ :return: The result formatted according to the `invoke_response_format`.
115
+
116
+ :raises MLRunInvalidArgumentError: If extracting the string response fails.
117
+ :raises MLRunRuntimeError: If applying the chat template to the model fails.
118
+ """
119
+ if InvokeResponseFormat.is_str_response(invoke_response_format.value):
120
+ str_response = self._extract_string_output(response)
121
+ if invoke_response_format == InvokeResponseFormat.STRING:
122
+ return str_response
123
+ if invoke_response_format == InvokeResponseFormat.USAGE:
124
+ tokenizer = self.client.tokenizer
125
+ if not isinstance(messages, str):
126
+ try:
127
+ messages = tokenizer.apply_chat_template(
128
+ messages, tokenize=False, add_generation_prompt=True
129
+ )
130
+ except Exception as e:
131
+ raise mlrun.errors.MLRunRuntimeError(
132
+ f"Failed to apply chat template using the tokenizer for model '{self.model}'. "
133
+ "This may indicate that the tokenizer does not support chat formatting, "
134
+ "or that the input format is invalid. "
135
+ f"Original error: {e}"
136
+ )
137
+ prompt_tokens = len(tokenizer.encode(messages))
138
+ completion_tokens = len(tokenizer.encode(str_response))
139
+ total_tokens = prompt_tokens + completion_tokens
140
+ usage = {
141
+ "prompt_tokens": prompt_tokens,
142
+ "completion_tokens": completion_tokens,
143
+ "total_tokens": total_tokens,
144
+ }
145
+ response = {
146
+ UsageResponseKeys.ANSWER: str_response,
147
+ UsageResponseKeys.USAGE: usage,
148
+ }
149
+ return response
150
+
84
151
  def load_client(self) -> None:
85
152
  """
86
153
  Initializes the Hugging Face pipeline using the provided options.
@@ -91,7 +158,7 @@ class HuggingFaceProvider(ModelProvider):
91
158
 
92
159
  Note: Hugging Face pipelines are synchronous and do not support async invocation.
93
160
 
94
- Raises:
161
+ :raises:
95
162
  ImportError: If the `transformers` package is not installed.
96
163
  """
97
164
  try:
@@ -117,7 +184,7 @@ class HuggingFaceProvider(ModelProvider):
117
184
 
118
185
  def custom_invoke(
119
186
  self, operation: Optional["Pipeline"] = None, **invoke_kwargs
120
- ) -> Optional[T]:
187
+ ) -> Union[list, dict, Any]:
121
188
  """
122
189
  HuggingFace implementation of `ModelProvider.custom_invoke`.
123
190
  Use the default config in provider client/ user defined client:
@@ -150,34 +217,55 @@ class HuggingFaceProvider(ModelProvider):
150
217
 
151
218
  def invoke(
152
219
  self,
153
- messages: Union[str, list[str], ChatType, list[ChatType]] = None,
154
- as_str: bool = False,
220
+ messages: Union[str, list[str], "ChatType", list["ChatType"]],
221
+ invoke_response_format: InvokeResponseFormat = InvokeResponseFormat.FULL,
155
222
  **invoke_kwargs,
156
- ) -> Optional[Union[str, list, T]]:
223
+ ) -> Union[str, list, dict[str, Any]]:
157
224
  """
158
225
  HuggingFace-specific implementation of `ModelProvider.invoke`.
159
226
  Invokes a HuggingFace model operation using the synchronous client.
160
- For complete usage details, refer to `ModelProvider.invoke`.
227
+ For full details, see `ModelProvider.invoke`.
228
+
161
229
  :param messages:
162
- Same as ModelProvider.invoke.
230
+ Same as `ModelProvider.invoke`.
231
+
232
+ :param invoke_response_format: InvokeResponseFormat
233
+ Specifies the format of the returned response. Options:
163
234
 
164
- :param as_str:
165
- If `True`, returns only the main content from a single response
166
- (intended for single-response use cases).
167
- If `False`, returns the full response object, whose type depends on
168
- the client (e.g., `pipeline`).
235
+ - "string": Returns only the generated text content, extracted from a single response.
236
+ - "usage": Combines the generated text with metadata (e.g., token usage), returning a dictionary:
237
+
238
+ .. code-block:: json
239
+ {
240
+ "answer": "<generated_text>",
241
+ "usage": {
242
+ "prompt_tokens": <int>,
243
+ "completion_tokens": <int>,
244
+ "total_tokens": <int>
245
+ }
246
+ }
247
+
248
+ - "full": Returns the raw response object from the HuggingFace model,
249
+ typically a list of generated sequences (dictionaries).
250
+ This format does not include token usage statistics.
169
251
 
170
252
  :param invoke_kwargs:
171
- Same as ModelProvider.invoke.
172
- :return: Same as ModelProvider.invoke.
253
+ Additional keyword arguments passed to the HuggingFace client. Same as in `ModelProvider.invoke`.
254
+
255
+ :return:
256
+ A string, dictionary, or list of model outputs, depending on `invoke_response_format`.
173
257
  """
258
+
174
259
  if self.client.task != "text-generation":
175
260
  raise mlrun.errors.MLRunInvalidArgumentError(
176
261
  "HuggingFaceProvider.invoke supports text-generation task only"
177
262
  )
178
- if as_str:
263
+ if InvokeResponseFormat.is_str_response(invoke_response_format.value):
179
264
  invoke_kwargs["return_full_text"] = False
180
265
  response = self.custom_invoke(text_inputs=messages, **invoke_kwargs)
181
- if as_str:
182
- return self._extract_string_output(response)
266
+ response = self._response_handler(
267
+ messages=messages,
268
+ response=response,
269
+ invoke_response_format=invoke_response_format,
270
+ )
183
271
  return response