mlrun 1.10.0rc19__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.0rc19 → mlrun-1.10.0rc20}/Makefile +73 -12
  2. {mlrun-1.10.0rc19/mlrun.egg-info → mlrun-1.10.0rc20}/PKG-INFO +4 -4
  3. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/dockerfiles/mlrun-api/requirements.txt +1 -1
  4. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/function.py +10 -0
  5. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/constants.py +4 -11
  6. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/model_endpoints.py +2 -0
  7. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/huggingface_provider.py +109 -20
  8. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/model_provider.py +110 -32
  9. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/openai_provider.py +87 -31
  10. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/db/base.py +0 -19
  11. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/db/httpdb.py +10 -46
  12. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/db/nopdb.py +0 -10
  13. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/launcher/base.py +0 -6
  14. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/api.py +43 -22
  15. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/base.py +1 -1
  16. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/controller.py +112 -38
  17. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/_schedules.py +13 -9
  18. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/stream_processing.py +16 -12
  19. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/platforms/__init__.py +3 -2
  20. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/projects/project.py +2 -2
  21. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/server.py +23 -0
  22. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/states.py +76 -29
  23. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/system_steps.py +60 -36
  24. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/helpers.py +27 -13
  25. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification_pusher.py +1 -1
  26. mlrun-1.10.0rc20/mlrun/utils/version/version.json +4 -0
  27. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20/mlrun.egg-info}/PKG-INFO +4 -4
  28. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun.egg-info/SOURCES.txt +0 -1
  29. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun.egg-info/requires.txt +3 -3
  30. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/requirements.txt +1 -1
  31. mlrun-1.10.0rc19/mlrun/api/schemas/__init__.py +0 -259
  32. mlrun-1.10.0rc19/mlrun/utils/version/version.json +0 -4
  33. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/LICENSE +0 -0
  34. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/MANIFEST.in +0 -0
  35. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/README.md +0 -0
  36. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/dependencies.py +0 -0
  37. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/dev-requirements.txt +0 -0
  38. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/archive.zip +0 -0
  39. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/function.py +0 -0
  40. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/handler.py +0 -0
  41. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/infile.txt +0 -0
  42. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/load-project.ipynb +0 -0
  43. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_basics.ipynb +0 -0
  44. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_dask.ipynb +0 -0
  45. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_db.ipynb +0 -0
  46. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_export_import.ipynb +0 -0
  47. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_jobs.ipynb +0 -0
  48. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_sparkk8s.ipynb +0 -0
  49. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/mlrun_vault.ipynb +0 -0
  50. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/model.bst +0 -0
  51. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/new-project.ipynb +0 -0
  52. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/nulltst.py +0 -0
  53. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/params.csv +0 -0
  54. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/remote-spark.ipynb +0 -0
  55. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/secrets.txt +0 -0
  56. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/spark-function.py +0 -0
  57. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/training.py +0 -0
  58. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/v2_model_server.ipynb +0 -0
  59. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/examples/xgb_serving.ipynb +0 -0
  60. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/extras-requirements.txt +0 -0
  61. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/__init__.py +0 -0
  62. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/__main__.py +0 -0
  63. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/alerts/__init__.py +0 -0
  64. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/alerts/alert.py +0 -0
  65. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/__init__.py +0 -0
  66. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/base.py +0 -0
  67. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/dataset.py +0 -0
  68. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/document.py +0 -0
  69. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/helpers.py +0 -0
  70. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/llm_prompt.py +0 -0
  71. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/manager.py +0 -0
  72. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/model.py +0 -0
  73. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/artifacts/plots.py +0 -0
  74. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/__init__.py +0 -0
  75. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/constants.py +0 -0
  76. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/db/__init__.py +0 -0
  77. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/db/dialects.py +0 -0
  78. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/__init__.py +0 -0
  79. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/artifact.py +0 -0
  80. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/base.py +0 -0
  81. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/feature_set.py +0 -0
  82. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/function.py +0 -0
  83. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/model_endpoint.py +0 -0
  84. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/pipeline.py +0 -0
  85. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/project.py +0 -0
  86. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/formatters/run.py +0 -0
  87. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/helpers.py +0 -0
  88. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/model_monitoring/__init__.py +0 -0
  89. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/model_monitoring/helpers.py +0 -0
  90. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/runtimes/constants.py +0 -0
  91. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/__init__.py +0 -0
  92. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/alert.py +0 -0
  93. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/api_gateway.py +0 -0
  94. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/artifact.py +0 -0
  95. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/auth.py +0 -0
  96. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/background_task.py +0 -0
  97. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/client_spec.py +0 -0
  98. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/clusterization_spec.py +0 -0
  99. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/common.py +0 -0
  100. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/constants.py +0 -0
  101. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/datastore_profile.py +0 -0
  102. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/events.py +0 -0
  103. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/feature_store.py +0 -0
  104. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/frontend_spec.py +0 -0
  105. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/http.py +0 -0
  106. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/hub.py +0 -0
  107. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/k8s.py +0 -0
  108. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/memory_reports.py +0 -0
  109. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  110. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  111. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  112. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/notification.py +0 -0
  113. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/object.py +0 -0
  114. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/pagination.py +0 -0
  115. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/partition.py +0 -0
  116. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/pipeline.py +0 -0
  117. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/project.py +0 -0
  118. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/regex.py +0 -0
  119. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/runs.py +0 -0
  120. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/runtime_resource.py +0 -0
  121. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/schedule.py +0 -0
  122. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/secret.py +0 -0
  123. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/serving.py +0 -0
  124. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/tag.py +0 -0
  125. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/schemas/workflow.py +0 -0
  126. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/secrets.py +0 -0
  127. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/common/types.py +0 -0
  128. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/config.py +0 -0
  129. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/data_types/__init__.py +0 -0
  130. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/data_types/data_types.py +0 -0
  131. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/data_types/infer.py +0 -0
  132. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/data_types/spark.py +0 -0
  133. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/data_types/to_pandas.py +0 -0
  134. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/__init__.py +0 -0
  135. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/alibaba_oss.py +0 -0
  136. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/azure_blob.py +0 -0
  137. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/base.py +0 -0
  138. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/datastore.py +0 -0
  139. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/datastore_profile.py +0 -0
  140. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/dbfs_store.py +0 -0
  141. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/filestore.py +0 -0
  142. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/google_cloud_storage.py +0 -0
  143. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/hdfs.py +0 -0
  144. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/inmem.py +0 -0
  145. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/model_provider/__init__.py +0 -0
  146. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/redis.py +0 -0
  147. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/remote_client.py +0 -0
  148. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/s3.py +0 -0
  149. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/snowflake_utils.py +0 -0
  150. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/sources.py +0 -0
  151. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/spark_udf.py +0 -0
  152. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/spark_utils.py +0 -0
  153. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/store_resources.py +0 -0
  154. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/storeytargets.py +0 -0
  155. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/targets.py +0 -0
  156. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/utils.py +0 -0
  157. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/v3io.py +0 -0
  158. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/vectorstore.py +0 -0
  159. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/wasbfs/__init__.py +0 -0
  160. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/datastore/wasbfs/fs.py +0 -0
  161. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/db/__init__.py +0 -0
  162. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/db/auth_utils.py +0 -0
  163. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/db/factory.py +0 -0
  164. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/errors.py +0 -0
  165. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/execution.py +0 -0
  166. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/__init__.py +0 -0
  167. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/api.py +0 -0
  168. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/common.py +0 -0
  169. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/feature_set.py +0 -0
  170. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/feature_vector.py +0 -0
  171. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/feature_vector_utils.py +0 -0
  172. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/ingestion.py +0 -0
  173. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/__init__.py +0 -0
  174. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/base.py +0 -0
  175. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  176. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/job.py +0 -0
  177. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  178. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  179. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  180. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/feature_store/steps.py +0 -0
  181. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/features.py +0 -0
  182. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/__init__.py +0 -0
  183. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/__init__.py +0 -0
  184. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  185. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  186. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/model_handler.py +0 -0
  187. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/plan.py +0 -0
  188. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/producer.py +0 -0
  189. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_common/utils.py +0 -0
  190. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  191. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  192. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  193. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  194. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  195. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  196. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_dl_common/utils.py +0 -0
  197. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  198. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  199. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  200. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  201. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  202. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  203. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  204. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plan.py +0 -0
  205. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  206. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  207. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  208. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  209. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  210. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  211. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/producer.py +0 -0
  212. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/_ml_common/utils.py +0 -0
  213. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  214. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  215. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/huggingface/__init__.py +0 -0
  216. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/huggingface/model_server.py +0 -0
  217. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/__init__.py +0 -0
  218. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  219. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  220. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  221. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  222. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  223. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  224. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  225. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  226. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  227. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/model_server.py +0 -0
  228. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/lgbm/utils.py +0 -0
  229. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/__init__.py +0 -0
  230. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/dataset.py +0 -0
  231. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  232. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/model_handler.py +0 -0
  233. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/onnx/model_server.py +0 -0
  234. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/parallel_coordinates.py +0 -0
  235. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/__init__.py +0 -0
  236. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  237. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  238. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  239. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  240. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  241. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  242. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  243. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  244. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/model_server.py +0 -0
  245. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/pytorch/utils.py +0 -0
  246. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/__init__.py +0 -0
  247. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/estimator.py +0 -0
  248. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/metric.py +0 -0
  249. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  250. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  251. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  252. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/sklearn/utils.py +0 -0
  253. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  254. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  255. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  256. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  257. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  258. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  259. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  260. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  261. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/tf_keras/utils.py +0 -0
  262. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/__init__.py +0 -0
  263. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  264. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  265. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/frameworks/xgboost/utils.py +0 -0
  266. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/k8s_utils.py +0 -0
  267. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/launcher/__init__.py +0 -0
  268. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/launcher/client.py +0 -0
  269. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/launcher/factory.py +0 -0
  270. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/launcher/local.py +0 -0
  271. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/launcher/remote.py +0 -0
  272. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/lists.py +0 -0
  273. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model.py +0 -0
  274. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/__init__.py +0 -0
  275. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/__init__.py +0 -0
  276. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  277. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/context.py +0 -0
  278. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  279. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  280. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  281. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/applications/results.py +0 -0
  282. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/__init__.py +0 -0
  283. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/_stats.py +0 -0
  284. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  285. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  286. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  287. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  288. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  289. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  290. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  291. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  292. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  293. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  294. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
  295. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/features_drift_table.py +0 -0
  296. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/helpers.py +0 -0
  297. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  298. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  299. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/model_monitoring/writer.py +0 -0
  300. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/__init__.py +0 -0
  301. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/context_handler.py +0 -0
  302. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/errors.py +0 -0
  303. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packager.py +0 -0
  304. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packagers/__init__.py +0 -0
  305. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packagers/default_packager.py +0 -0
  306. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packagers/numpy_packagers.py +0 -0
  307. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packagers/pandas_packagers.py +0 -0
  308. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  309. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/packagers_manager.py +0 -0
  310. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/__init__.py +0 -0
  311. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/_archiver.py +0 -0
  312. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/_formatter.py +0 -0
  313. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/_pickler.py +0 -0
  314. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/_supported_format.py +0 -0
  315. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/log_hint_utils.py +0 -0
  316. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/package/utils/type_hint_utils.py +0 -0
  317. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/platforms/iguazio.py +0 -0
  318. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/projects/__init__.py +0 -0
  319. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/projects/operations.py +0 -0
  320. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/projects/pipelines.py +0 -0
  321. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/render.py +0 -0
  322. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/run.py +0 -0
  323. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/__init__.py +0 -0
  324. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/base.py +0 -0
  325. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/daskjob.py +0 -0
  326. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  327. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  328. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  329. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  330. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/funcdoc.py +0 -0
  331. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/function_reference.py +0 -0
  332. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/generators.py +0 -0
  333. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/kubejob.py +0 -0
  334. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/local.py +0 -0
  335. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/mounts.py +0 -0
  336. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/mpijob/__init__.py +0 -0
  337. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/mpijob/abstract.py +0 -0
  338. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/mpijob/v1.py +0 -0
  339. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/__init__.py +0 -0
  340. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  341. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  342. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/application/application.py +0 -0
  343. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  344. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/function.py +0 -0
  345. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  346. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/nuclio/serving.py +0 -0
  347. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/pod.py +0 -0
  348. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/remotesparkjob.py +0 -0
  349. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  350. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  351. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/runtimes/utils.py +0 -0
  352. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/secrets.py +0 -0
  353. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/__init__.py +0 -0
  354. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/merger.py +0 -0
  355. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/remote.py +0 -0
  356. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/routers.py +0 -0
  357. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/serving_wrapper.py +0 -0
  358. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/utils.py +0 -0
  359. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/v1_serving.py +0 -0
  360. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/serving/v2_serving.py +0 -0
  361. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/track/__init__.py +0 -0
  362. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/track/tracker.py +0 -0
  363. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/track/tracker_manager.py +0 -0
  364. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/track/trackers/__init__.py +0 -0
  365. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  366. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/__init__.py +0 -0
  367. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/async_http.py +0 -0
  368. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/azure_vault.py +0 -0
  369. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/clones.py +0 -0
  370. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/condition_evaluator.py +0 -0
  371. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/http.py +0 -0
  372. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/logger.py +0 -0
  373. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/__init__.py +0 -0
  374. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/__init__.py +0 -0
  375. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/base.py +0 -0
  376. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/console.py +0 -0
  377. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/git.py +0 -0
  378. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/ipython.py +0 -0
  379. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/mail.py +0 -0
  380. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/slack.py +0 -0
  381. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/notifications/notification/webhook.py +0 -0
  382. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/regex.py +0 -0
  383. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/retryer.py +0 -0
  384. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/singleton.py +0 -0
  385. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/v3io_clients.py +0 -0
  386. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/vault.py +0 -0
  387. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/version/__init__.py +0 -0
  388. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun/utils/version/version.py +0 -0
  389. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun.egg-info/dependency_links.txt +0 -0
  390. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun.egg-info/entry_points.txt +0 -0
  391. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun.egg-info/not-zip-safe +0 -0
  392. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/mlrun.egg-info/top_level.txt +0 -0
  393. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/packages.py +0 -0
  394. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/pyproject.toml +0 -0
  395. {mlrun-1.10.0rc19 → mlrun-1.10.0rc20}/setup.cfg +0 -0
  396. {mlrun-1.10.0rc19 → 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.0rc19
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"
@@ -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
@@ -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):
@@ -15,7 +15,11 @@
15
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
@@ -61,15 +65,18 @@ class HuggingFaceProvider(ModelProvider):
61
65
  self.load_client()
62
66
 
63
67
  @staticmethod
64
- def _extract_string_output(result) -> str:
68
+ def _extract_string_output(response: list[dict]) -> str:
65
69
  """
66
70
  Extracts the first generated string from Hugging Face pipeline output,
67
71
  regardless of whether it's plain text-generation or chat-style output.
68
72
  """
69
- if not isinstance(result, list) or len(result) == 0:
73
+ if not isinstance(response, list) or len(response) == 0:
70
74
  raise ValueError("Empty or invalid pipeline output")
71
-
72
- 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")
73
80
 
74
81
  @classmethod
75
82
  def parse_endpoint_and_path(cls, endpoint, subpath) -> (str, str):
@@ -79,6 +86,68 @@ class HuggingFaceProvider(ModelProvider):
79
86
  subpath = ""
80
87
  return endpoint, subpath
81
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
+
82
151
  def load_client(self) -> None:
83
152
  """
84
153
  Initializes the Hugging Face pipeline using the provided options.
@@ -89,7 +158,7 @@ class HuggingFaceProvider(ModelProvider):
89
158
 
90
159
  Note: Hugging Face pipelines are synchronous and do not support async invocation.
91
160
 
92
- Raises:
161
+ :raises:
93
162
  ImportError: If the `transformers` package is not installed.
94
163
  """
95
164
  try:
@@ -148,35 +217,55 @@ class HuggingFaceProvider(ModelProvider):
148
217
 
149
218
  def invoke(
150
219
  self,
151
- messages: Union[str, list[str], "ChatType", list["ChatType"]] = None,
152
- as_str: bool = False,
220
+ messages: Union[str, list[str], "ChatType", list["ChatType"]],
221
+ invoke_response_format: InvokeResponseFormat = InvokeResponseFormat.FULL,
153
222
  **invoke_kwargs,
154
- ) -> Union[str, list]:
223
+ ) -> Union[str, list, dict[str, Any]]:
155
224
  """
156
225
  HuggingFace-specific implementation of `ModelProvider.invoke`.
157
226
  Invokes a HuggingFace model operation using the synchronous client.
158
- For complete usage details, refer to `ModelProvider.invoke`.
227
+ For full details, see `ModelProvider.invoke`.
159
228
 
160
229
  :param messages:
161
- Same as ModelProvider.invoke.
230
+ Same as `ModelProvider.invoke`.
162
231
 
163
- :param as_str:
164
- If `True`, return only the main content (e.g., generated text) from a
165
- **single-response output** — intended for use cases where you expect exactly one result.
232
+ :param invoke_response_format: InvokeResponseFormat
233
+ Specifies the format of the returned response. Options:
166
234
 
167
- If `False`, return the **full raw response object**, which is a list of dictionaries.
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.
168
251
 
169
252
  :param invoke_kwargs:
170
- Same as ModelProvider.invoke.
171
- :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`.
172
257
  """
258
+
173
259
  if self.client.task != "text-generation":
174
260
  raise mlrun.errors.MLRunInvalidArgumentError(
175
261
  "HuggingFaceProvider.invoke supports text-generation task only"
176
262
  )
177
- if as_str:
263
+ if InvokeResponseFormat.is_str_response(invoke_response_format.value):
178
264
  invoke_kwargs["return_full_text"] = False
179
265
  response = self.custom_invoke(text_inputs=messages, **invoke_kwargs)
180
- if as_str:
181
- 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
+ )
182
271
  return response
@@ -15,11 +15,37 @@ from collections.abc import Awaitable
15
15
  from typing import Any, Callable, Optional, Union
16
16
 
17
17
  import mlrun.errors
18
+ from mlrun.common.types import StrEnum
18
19
  from mlrun.datastore.remote_client import (
19
20
  BaseRemoteClient,
20
21
  )
21
22
 
22
23
 
24
+ class InvokeResponseFormat(StrEnum):
25
+ STRING = "string"
26
+ USAGE = "usage"
27
+ FULL = "full"
28
+
29
+ @classmethod
30
+ def is_str_response(cls, invoke_response_format: str) -> bool:
31
+ """
32
+ Returns True if the response key corresponds to a string-based response (not a full generation object).
33
+ """
34
+ return invoke_response_format in {
35
+ cls.USAGE,
36
+ cls.STRING,
37
+ }
38
+
39
+
40
+ class UsageResponseKeys(StrEnum):
41
+ ANSWER = "answer"
42
+ USAGE = "usage"
43
+
44
+ @classmethod
45
+ def fields(cls) -> list[str]:
46
+ return [cls.ANSWER, cls.USAGE]
47
+
48
+
23
49
  class ModelProvider(BaseRemoteClient):
24
50
  """
25
51
  The ModelProvider class is an abstract base for integrating with external
@@ -56,6 +82,41 @@ class ModelProvider(BaseRemoteClient):
56
82
  self._client = None
57
83
  self._async_client = None
58
84
 
85
+ @staticmethod
86
+ def _extract_string_output(response: Any) -> str:
87
+ """
88
+ Extracts string response from response object
89
+ """
90
+ pass
91
+
92
+ def _response_handler(
93
+ self,
94
+ response: Any,
95
+ invoke_response_format: InvokeResponseFormat = InvokeResponseFormat.FULL,
96
+ **kwargs,
97
+ ) -> Union[str, dict, Any]:
98
+ """
99
+ Handles the model response according to the specified response format.
100
+
101
+ :param response: The raw response returned from the model invocation.
102
+ :param invoke_response_format: Determines how the response should be processed and returned.
103
+ Options include:
104
+
105
+ - STRING: Return only the main generated content as a string,
106
+ typically for single-answer responses.
107
+ - USAGE: Return a dictionary combining the string response with
108
+ additional metadata or token usage statistics, in this format:
109
+ {"answer": <string>, "usage": <dict>}
110
+
111
+ - FULL: Return the full raw response object unmodified.
112
+
113
+ :param kwargs: Additional parameters that may be required by specific implementations.
114
+
115
+ :return: The processed response in the format specified by `invoke_response_format`.
116
+ Can be a string, dictionary, or the original response object.
117
+ """
118
+ return None
119
+
59
120
  def get_client_options(self) -> dict:
60
121
  """
61
122
  Returns a dictionary containing credentials and configuration
@@ -133,57 +194,74 @@ class ModelProvider(BaseRemoteClient):
133
194
 
134
195
  def invoke(
135
196
  self,
136
- messages: Optional[list[dict]] = None,
137
- as_str: bool = False,
197
+ messages: Union[list[dict], Any],
198
+ invoke_response_format: InvokeResponseFormat = InvokeResponseFormat.FULL,
138
199
  **invoke_kwargs,
139
- ) -> Union[str, Any]:
200
+ ) -> Union[str, dict[str, Any], Any]:
140
201
  """
141
202
  Invokes a generative AI model with the provided messages and additional parameters.
142
203
  This method is designed to be a flexible interface for interacting with various
143
204
  generative AI backends (e.g., OpenAI, Hugging Face, etc.). It allows users to send
144
- a list of messages (following a standardized format) and receive a response. The
145
- response can be returned as plain text or in its full structured format, depending
146
- on the `as_str` parameter.
205
+ a list of messages (following a standardized format) and receive a response.
206
+
207
+ :param messages: A list of dictionaries representing the conversation history or input messages.
208
+ Each dictionary should follow the format::
209
+ {"role": "system"| "user" | "assistant" ..., "content":
210
+ "Message content as a string"}
211
+
212
+ Example:
213
+
214
+ .. code-block:: json
215
+
216
+ [
217
+ {"role": "system", "content": "You are a helpful assistant."},
218
+ {"role": "user", "content": "What is the capital of France?"}
219
+ ]
220
+
221
+ This format is consistent across all backends. Defaults to None if no messages
222
+ are provided.
223
+
224
+ :param invoke_response_format: Determines how the model response is returned:
225
+
226
+ - string: Returns only the generated text content from the model output,
227
+ for single-answer responses only.
228
+
229
+ - usage: Combines the STRING response with additional metadata (token usage),
230
+ and returns the result in a dictionary.
147
231
 
148
- :param messages: A list of dictionaries representing the conversation history or input messages.
149
- Each dictionary should follow the format::
150
- {"role": "system"| "user" | "assistant" ..., "content": "Message content as a string"}
151
- Example:
232
+ Note: The usage dictionary may contain additional
233
+ keys depending on the model provider:
152
234
 
153
- .. code-block:: json
235
+ .. code-block:: json
154
236
 
155
- [
156
- {"role": "system", "content": "You are a helpful assistant."},
157
- {"role": "user", "content": "What is the capital of France?"}
158
- ]
237
+ {
238
+ "answer": "<generated_text>",
239
+ "usage": {
240
+ "prompt_tokens": <int>,
241
+ "completion_tokens": <int>,
242
+ "total_tokens": <int>
243
+ }
159
244
 
160
- This format is consistent across all backends. Defaults to None if no messages
161
- are provided.
245
+ }
162
246
 
163
- :param as_str: A boolean flag indicating whether to return the response as a plain string.
164
- - If True, the function extracts and returns the main content of the first
165
- response.
166
- - If False, the function returns the full response object,
167
- which may include additional metadata or multiple response options.
168
- Defaults to False.
247
+ - full: Returns the full model output.
169
248
 
170
249
  :param invoke_kwargs:
171
- Additional keyword arguments to be passed to the underlying model API call.
172
- These can include parameters such as temperature, max tokens, etc.,
173
- depending on the capabilities of the specific backend being used.
250
+ Additional keyword arguments to be passed to the underlying model API call.
251
+ These can include parameters such as temperature, max tokens, etc.,
252
+ depending on the capabilities of the specific backend being used.
174
253
 
175
- :return:
176
- - If `as_str` is True: Returns the main content of the first response as a string.
177
- - If `as_str` is False: Returns the full response object.
254
+ :return: The invoke result formatted according to the specified
255
+ invoke_response_format parameter.
178
256
 
179
257
  """
180
258
  raise NotImplementedError("invoke method is not implemented")
181
259
 
182
260
  async def async_invoke(
183
261
  self,
184
- messages: Optional[list[dict]] = None,
185
- as_str: bool = False,
262
+ messages: list[dict],
263
+ invoke_response_format=InvokeResponseFormat.FULL,
186
264
  **invoke_kwargs,
187
- ) -> Union[str, Any]:
265
+ ) -> Union[str, dict[str, Any], Any]:
188
266
  """Async version of `invoke`. See `invoke` for full documentation."""
189
267
  raise NotImplementedError("async_invoke is not implemented")