mlrun 1.10.0rc28__tar.gz → 1.10.0rc29__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 (398) hide show
  1. {mlrun-1.10.0rc28/mlrun.egg-info → mlrun-1.10.0rc29}/PKG-INFO +2 -2
  2. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/__init__.py +1 -0
  3. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/hub.py +5 -0
  4. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/azure_blob.py +98 -17
  5. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/utils.py +9 -3
  6. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/db/base.py +1 -0
  7. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/db/httpdb.py +3 -0
  8. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/db/nopdb.py +1 -0
  9. mlrun-1.10.0rc29/mlrun/hub/__init__.py +15 -0
  10. mlrun-1.10.0rc29/mlrun/hub/module.py +166 -0
  11. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/projects/operations.py +6 -1
  12. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/projects/project.py +6 -1
  13. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/base.py +6 -1
  14. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/application/application.py +6 -0
  15. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/serving.py +12 -0
  16. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/pod.py +1 -0
  17. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/states.py +13 -4
  18. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/helpers.py +13 -9
  19. mlrun-1.10.0rc29/mlrun/utils/version/version.json +4 -0
  20. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29/mlrun.egg-info}/PKG-INFO +2 -2
  21. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun.egg-info/SOURCES.txt +2 -0
  22. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun.egg-info/requires.txt +1 -1
  23. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/requirements.txt +1 -1
  24. mlrun-1.10.0rc28/mlrun/utils/version/version.json +0 -4
  25. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/LICENSE +0 -0
  26. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/MANIFEST.in +0 -0
  27. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/Makefile +0 -0
  28. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/README.md +0 -0
  29. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/dependencies.py +0 -0
  30. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/dev-requirements.txt +0 -0
  31. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/dockerfiles/mlrun-api/requirements.txt +0 -0
  32. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/archive.zip +0 -0
  33. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/function.py +0 -0
  34. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/handler.py +0 -0
  35. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/infile.txt +0 -0
  36. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/load-project.ipynb +0 -0
  37. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_basics.ipynb +0 -0
  38. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_dask.ipynb +0 -0
  39. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_db.ipynb +0 -0
  40. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_export_import.ipynb +0 -0
  41. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_jobs.ipynb +0 -0
  42. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_sparkk8s.ipynb +0 -0
  43. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/mlrun_vault.ipynb +0 -0
  44. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/model.bst +0 -0
  45. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/new-project.ipynb +0 -0
  46. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/nulltst.py +0 -0
  47. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/params.csv +0 -0
  48. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/remote-spark.ipynb +0 -0
  49. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/secrets.txt +0 -0
  50. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/spark-function.py +0 -0
  51. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/training.py +0 -0
  52. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/v2_model_server.ipynb +0 -0
  53. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/examples/xgb_serving.ipynb +0 -0
  54. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/extras-requirements.txt +0 -0
  55. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/__main__.py +0 -0
  56. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/alerts/__init__.py +0 -0
  57. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/alerts/alert.py +0 -0
  58. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/__init__.py +0 -0
  59. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/base.py +0 -0
  60. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/dataset.py +0 -0
  61. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/document.py +0 -0
  62. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/helpers.py +0 -0
  63. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/llm_prompt.py +0 -0
  64. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/manager.py +0 -0
  65. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/model.py +0 -0
  66. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/artifacts/plots.py +0 -0
  67. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/__init__.py +0 -0
  68. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/constants.py +0 -0
  69. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/db/__init__.py +0 -0
  70. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/db/dialects.py +0 -0
  71. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/__init__.py +0 -0
  72. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/artifact.py +0 -0
  73. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/base.py +0 -0
  74. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/feature_set.py +0 -0
  75. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/function.py +0 -0
  76. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/model_endpoint.py +0 -0
  77. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/pipeline.py +0 -0
  78. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/project.py +0 -0
  79. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/formatters/run.py +0 -0
  80. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/helpers.py +0 -0
  81. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/model_monitoring/__init__.py +0 -0
  82. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/model_monitoring/helpers.py +0 -0
  83. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/runtimes/constants.py +0 -0
  84. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/__init__.py +0 -0
  85. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/alert.py +0 -0
  86. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/api_gateway.py +0 -0
  87. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/artifact.py +0 -0
  88. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/auth.py +0 -0
  89. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/background_task.py +0 -0
  90. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/client_spec.py +0 -0
  91. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/clusterization_spec.py +0 -0
  92. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/common.py +0 -0
  93. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/constants.py +0 -0
  94. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/datastore_profile.py +0 -0
  95. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/events.py +0 -0
  96. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/feature_store.py +0 -0
  97. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/frontend_spec.py +0 -0
  98. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/function.py +0 -0
  99. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/http.py +0 -0
  100. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/k8s.py +0 -0
  101. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/memory_reports.py +0 -0
  102. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  103. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
  104. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  105. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  106. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
  107. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/notification.py +0 -0
  108. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/object.py +0 -0
  109. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/pagination.py +0 -0
  110. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/partition.py +0 -0
  111. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/pipeline.py +0 -0
  112. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/project.py +0 -0
  113. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/regex.py +0 -0
  114. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/runs.py +0 -0
  115. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/runtime_resource.py +0 -0
  116. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/schedule.py +0 -0
  117. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/secret.py +0 -0
  118. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/serving.py +0 -0
  119. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/tag.py +0 -0
  120. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/schemas/workflow.py +0 -0
  121. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/secrets.py +0 -0
  122. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/common/types.py +0 -0
  123. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/config.py +0 -0
  124. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/data_types/__init__.py +0 -0
  125. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/data_types/data_types.py +0 -0
  126. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/data_types/infer.py +0 -0
  127. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/data_types/spark.py +0 -0
  128. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/data_types/to_pandas.py +0 -0
  129. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/__init__.py +0 -0
  130. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/alibaba_oss.py +0 -0
  131. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/base.py +0 -0
  132. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/datastore.py +0 -0
  133. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/datastore_profile.py +0 -0
  134. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/dbfs_store.py +0 -0
  135. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/filestore.py +0 -0
  136. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/google_cloud_storage.py +0 -0
  137. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/hdfs.py +0 -0
  138. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/inmem.py +0 -0
  139. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/__init__.py +0 -0
  140. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
  141. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/mock_model_provider.py +0 -0
  142. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/model_provider.py +0 -0
  143. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/openai_provider.py +0 -0
  144. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/redis.py +0 -0
  145. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/remote_client.py +0 -0
  146. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/s3.py +0 -0
  147. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/snowflake_utils.py +0 -0
  148. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/sources.py +0 -0
  149. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/spark_udf.py +0 -0
  150. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/spark_utils.py +0 -0
  151. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/store_resources.py +0 -0
  152. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/storeytargets.py +0 -0
  153. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/targets.py +0 -0
  154. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/v3io.py +0 -0
  155. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/vectorstore.py +0 -0
  156. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/wasbfs/__init__.py +0 -0
  157. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/datastore/wasbfs/fs.py +0 -0
  158. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/db/__init__.py +0 -0
  159. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/db/auth_utils.py +0 -0
  160. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/db/factory.py +0 -0
  161. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/errors.py +0 -0
  162. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/execution.py +0 -0
  163. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/__init__.py +0 -0
  164. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/api.py +0 -0
  165. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/common.py +0 -0
  166. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/feature_set.py +0 -0
  167. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/feature_vector.py +0 -0
  168. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/feature_vector_utils.py +0 -0
  169. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/ingestion.py +0 -0
  170. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/__init__.py +0 -0
  171. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/base.py +0 -0
  172. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  173. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/job.py +0 -0
  174. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  175. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  176. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  177. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/feature_store/steps.py +0 -0
  178. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/features.py +0 -0
  179. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/__init__.py +0 -0
  180. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/__init__.py +0 -0
  181. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  182. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  183. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/model_handler.py +0 -0
  184. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/plan.py +0 -0
  185. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/producer.py +0 -0
  186. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/utils.py +0 -0
  187. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  188. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  189. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  190. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  191. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  192. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  193. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/utils.py +0 -0
  194. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  195. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  196. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  197. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  198. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  199. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  200. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  201. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plan.py +0 -0
  202. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  203. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  204. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  205. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  206. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  207. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  208. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/producer.py +0 -0
  209. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/utils.py +0 -0
  210. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  211. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  212. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/huggingface/__init__.py +0 -0
  213. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/huggingface/model_server.py +0 -0
  214. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/__init__.py +0 -0
  215. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  216. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  217. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  218. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  219. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  220. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  221. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  222. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  223. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  224. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/model_server.py +0 -0
  225. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/utils.py +0 -0
  226. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/__init__.py +0 -0
  227. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/dataset.py +0 -0
  228. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  229. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/model_handler.py +0 -0
  230. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/model_server.py +0 -0
  231. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/parallel_coordinates.py +0 -0
  232. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/__init__.py +0 -0
  233. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  234. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  235. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  236. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  237. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  238. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  239. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  240. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  241. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/model_server.py +0 -0
  242. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/utils.py +0 -0
  243. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/__init__.py +0 -0
  244. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/estimator.py +0 -0
  245. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/metric.py +0 -0
  246. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  247. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  248. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  249. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/utils.py +0 -0
  250. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  251. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  252. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  253. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  254. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  255. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  256. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  257. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  258. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/utils.py +0 -0
  259. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/__init__.py +0 -0
  260. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  261. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  262. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/utils.py +0 -0
  263. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/k8s_utils.py +0 -0
  264. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/launcher/__init__.py +0 -0
  265. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/launcher/base.py +0 -0
  266. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/launcher/client.py +0 -0
  267. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/launcher/factory.py +0 -0
  268. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/launcher/local.py +0 -0
  269. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/launcher/remote.py +0 -0
  270. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/lists.py +0 -0
  271. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model.py +0 -0
  272. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/__init__.py +0 -0
  273. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/api.py +0 -0
  274. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/__init__.py +0 -0
  275. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  276. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/base.py +0 -0
  277. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/context.py +0 -0
  278. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  279. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  280. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  281. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/results.py +0 -0
  282. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/controller.py +0 -0
  283. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/__init__.py +0 -0
  284. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/_schedules.py +0 -0
  285. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/_stats.py +0 -0
  286. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  287. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  288. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  289. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  290. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  291. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  292. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  293. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  294. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  295. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  296. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
  297. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/features_drift_table.py +0 -0
  298. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/helpers.py +0 -0
  299. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  300. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  301. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/stream_processing.py +0 -0
  302. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/model_monitoring/writer.py +0 -0
  303. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/__init__.py +0 -0
  304. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/context_handler.py +0 -0
  305. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/errors.py +0 -0
  306. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packager.py +0 -0
  307. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packagers/__init__.py +0 -0
  308. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packagers/default_packager.py +0 -0
  309. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packagers/numpy_packagers.py +0 -0
  310. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packagers/pandas_packagers.py +0 -0
  311. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  312. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/packagers_manager.py +0 -0
  313. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/__init__.py +0 -0
  314. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/_archiver.py +0 -0
  315. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/_formatter.py +0 -0
  316. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/_pickler.py +0 -0
  317. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/_supported_format.py +0 -0
  318. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/log_hint_utils.py +0 -0
  319. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/package/utils/type_hint_utils.py +0 -0
  320. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/platforms/__init__.py +0 -0
  321. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/platforms/iguazio.py +0 -0
  322. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/projects/__init__.py +0 -0
  323. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/projects/pipelines.py +0 -0
  324. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/render.py +0 -0
  325. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/run.py +0 -0
  326. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/__init__.py +0 -0
  327. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/daskjob.py +0 -0
  328. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  329. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  330. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  331. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  332. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/funcdoc.py +0 -0
  333. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/function_reference.py +0 -0
  334. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/generators.py +0 -0
  335. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/kubejob.py +0 -0
  336. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/local.py +0 -0
  337. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/mounts.py +0 -0
  338. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/mpijob/__init__.py +0 -0
  339. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/mpijob/abstract.py +0 -0
  340. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/mpijob/v1.py +0 -0
  341. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/__init__.py +0 -0
  342. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  343. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  344. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  345. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/function.py +0 -0
  346. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  347. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/remotesparkjob.py +0 -0
  348. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  349. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  350. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/runtimes/utils.py +0 -0
  351. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/secrets.py +0 -0
  352. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/__init__.py +0 -0
  353. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/merger.py +0 -0
  354. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/remote.py +0 -0
  355. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/routers.py +0 -0
  356. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/server.py +0 -0
  357. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/serving_wrapper.py +0 -0
  358. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/system_steps.py +0 -0
  359. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/utils.py +0 -0
  360. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/v1_serving.py +0 -0
  361. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/serving/v2_serving.py +0 -0
  362. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/track/__init__.py +0 -0
  363. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/track/tracker.py +0 -0
  364. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/track/tracker_manager.py +0 -0
  365. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/track/trackers/__init__.py +0 -0
  366. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  367. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/__init__.py +0 -0
  368. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/async_http.py +0 -0
  369. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/azure_vault.py +0 -0
  370. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/clones.py +0 -0
  371. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/condition_evaluator.py +0 -0
  372. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/http.py +0 -0
  373. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/logger.py +0 -0
  374. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/__init__.py +0 -0
  375. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/__init__.py +0 -0
  376. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/base.py +0 -0
  377. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/console.py +0 -0
  378. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/git.py +0 -0
  379. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/ipython.py +0 -0
  380. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/mail.py +0 -0
  381. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/slack.py +0 -0
  382. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/webhook.py +0 -0
  383. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification_pusher.py +0 -0
  384. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/regex.py +0 -0
  385. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/retryer.py +0 -0
  386. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/singleton.py +0 -0
  387. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/v3io_clients.py +0 -0
  388. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/vault.py +0 -0
  389. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/version/__init__.py +0 -0
  390. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun/utils/version/version.py +0 -0
  391. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun.egg-info/dependency_links.txt +0 -0
  392. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun.egg-info/entry_points.txt +0 -0
  393. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun.egg-info/not-zip-safe +0 -0
  394. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/mlrun.egg-info/top_level.txt +0 -0
  395. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/packages.py +0 -0
  396. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/pyproject.toml +0 -0
  397. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/setup.cfg +0 -0
  398. {mlrun-1.10.0rc28 → mlrun-1.10.0rc29}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc28
3
+ Version: 1.10.0rc29
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -22,7 +22,7 @@ Requires-Python: >=3.9, <3.12
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: urllib3>=1.26.20
25
- Requires-Dist: v3io-frames>=0.10.15
25
+ Requires-Dist: v3io-frames>=0.10.16
26
26
  Requires-Dist: GitPython>=3.1.41,~=3.1
27
27
  Requires-Dist: aiohttp~=3.11
28
28
  Requires-Dist: aiohttp-retry~=2.9
@@ -37,6 +37,7 @@ from .datastore import DataItem, ModelProvider, store_manager
37
37
  from .db import get_run_db
38
38
  from .errors import MLRunInvalidArgumentError, MLRunNotFoundError
39
39
  from .execution import MLClientCtx
40
+ from .hub import get_hub_module, import_module
40
41
  from .model import RunObject, RunTemplate, new_task
41
42
  from .package import ArtifactType, DefaultPackager, Packager, handler
42
43
  from .projects import (
@@ -134,3 +134,8 @@ class HubCatalog(BaseModel):
134
134
  kind: ObjectKind = Field(ObjectKind.hub_catalog, const=True)
135
135
  channel: str
136
136
  catalog: list[HubItem]
137
+
138
+
139
+ class HubModuleType(mlrun.common.types.StrEnum):
140
+ generic = "generic"
141
+ monitoring_app = "monitoring-app"
@@ -1,4 +1,4 @@
1
- # Copyright 2023 Iguazio
1
+ # Copyright 2025 Iguazio
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,6 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ import contextlib
15
16
  import time
16
17
  from pathlib import Path
17
18
  from typing import Optional
@@ -30,6 +31,40 @@ from .base import DataStore, FileStats, make_datastore_schema_sanitizer
30
31
 
31
32
 
32
33
  class AzureBlobStore(DataStore):
34
+ """
35
+ Azure Blob Storage datastore implementation.
36
+
37
+ Supports multiple URL schemas: az://, wasbs://, wasb://
38
+
39
+ Supported Connection String Formats:
40
+ ====================================
41
+
42
+ 1. Account Key (Standard):
43
+ "DefaultEndpointsProtocol=https;AccountName=<account>;AccountKey=<key>;EndpointSuffix=core.windows.net"
44
+
45
+ 2. SAS Token:
46
+ "BlobEndpoint=https://<account>.blob.core.windows.net/;SharedAccessSignature=<sas_token>"
47
+
48
+ 3. Minimal BlobEndpoint:
49
+ "BlobEndpoint=https://<account>.blob.core.windows.net/;AccountName=<account>;AccountKey=<key>"
50
+
51
+ 4. Custom Domain:
52
+ "BlobEndpoint=https://<account>.mydomain.com/;AccountName=<account>;AccountKey=<key>"
53
+
54
+ 5. China/Government Cloud:
55
+ "DefaultEndpointsProtocol=https;AccountName=<account>;AccountKey=<key>;EndpointSuffix=core.chinacloudapi.cn"
56
+
57
+ 6. Full Service Endpoints with SAS:
58
+ "BlobEndpoint=https://<account>.blob.core.windows.net/;QueueEndpoint=...;SharedAccessSignature=<sas>"
59
+
60
+ Authentication Methods:
61
+ ======================
62
+ - Account Key (connection_string or storage_options)
63
+ - SAS Token (connection_string or storage_options)
64
+ - OAuth/Azure AD (storage_options: client_id, client_secret, tenant_id)
65
+
66
+ """
67
+
33
68
  using_bucket = True
34
69
  max_concurrency = 100
35
70
  max_blocksize = 1024 * 1024 * 4
@@ -40,6 +75,12 @@ class AzureBlobStore(DataStore):
40
75
  def __init__(
41
76
  self, parent, schema, name, endpoint="", secrets: Optional[dict] = None
42
77
  ):
78
+ # Extract container from WASBS endpoint before calling super()
79
+ self._container_from_endpoint = None
80
+ if schema in ["wasbs", "wasb"] and endpoint and "@" in endpoint:
81
+ # Handle container@host format
82
+ self._container_from_endpoint, endpoint = endpoint.split("@", 1)
83
+
43
84
  super().__init__(parent, name, schema, endpoint, secrets=secrets)
44
85
  self._service_client = None
45
86
  self._storage_options = None
@@ -67,6 +108,34 @@ class AzureBlobStore(DataStore):
67
108
  or self._get_secret_or_env("AZURE_STORAGE_SAS_TOKEN"),
68
109
  credential=self._get_secret_or_env("credential"),
69
110
  )
111
+ # Use container extracted from WASBS endpoint during initialization
112
+ if self._container_from_endpoint:
113
+ res["container"] = self._container_from_endpoint
114
+
115
+ # For az:// URLs, endpoint contains the container name
116
+ if not res.get("container") and self.kind in ["az"]:
117
+ if container := getattr(self, "endpoint", None):
118
+ res["container"] = container
119
+
120
+ # Last resort: For wasbs:// without container, check if connection string has BlobEndpoint with container
121
+ if not res.get("container") and self.kind in ["wasbs", "wasb"]:
122
+ connection_string = res.get("connection_string")
123
+ if connection_string and "BlobEndpoint=" in connection_string:
124
+ # Try to extract container from BlobEndpoint URL
125
+ for part in connection_string.split(";"):
126
+ if part.startswith("BlobEndpoint="):
127
+ blob_endpoint = part.split("=", 1)[1]
128
+ # Parse URL to get path component
129
+ from urllib.parse import urlparse
130
+
131
+ parsed = urlparse(blob_endpoint)
132
+ if parsed.path and parsed.path.strip("/"):
133
+ # Extract first path segment as container
134
+ path_parts = parsed.path.strip("/").split("/")
135
+ if path_parts[0]:
136
+ res["container"] = path_parts[0]
137
+ break
138
+
70
139
  self._storage_options = self._sanitize_options(res)
71
140
  return self._storage_options
72
141
 
@@ -243,10 +312,12 @@ class AzureBlobStore(DataStore):
243
312
 
244
313
  for key in ["account_name", "account_key", "sas_token"]:
245
314
  if parsed_value := parsed_credential.get(key):
246
- if key in st and st[key] != parsed_value:
315
+ # Only check for conflicts if storage options has a non-empty value for this key
316
+ existing_value = st.get(key)
317
+ if existing_value and existing_value != parsed_value:
247
318
  if key == "account_name":
248
319
  raise mlrun.errors.MLRunInvalidArgumentError(
249
- f"Storage option for '{key}' is '{st[key]}', "
320
+ f"Storage option for '{key}' is '{existing_value}', "
250
321
  f"which does not match corresponding connection string '{parsed_value}'"
251
322
  )
252
323
  else:
@@ -262,7 +333,8 @@ class AzureBlobStore(DataStore):
262
333
  primary_url = primary_url[len("http://") :]
263
334
  if primary_url.startswith("https://"):
264
335
  primary_url = primary_url[len("https://") :]
265
- host = primary_url
336
+ # Remove any path components from the host
337
+ host = primary_url.split("/")[0]
266
338
  elif account_name:
267
339
  host = f"{account_name}.{service}.core.windows.net"
268
340
  else:
@@ -278,7 +350,10 @@ class AzureBlobStore(DataStore):
278
350
  # --- WASB + SAS (container-scoped key; no provider classes needed) ---
279
351
  if "sas_token" in st and st["sas_token"]:
280
352
  sas = st["sas_token"].lstrip("?")
281
- if container := getattr(self, "endpoint", None) or st.get("container"):
353
+
354
+ container = st.get("container")
355
+
356
+ if container:
282
357
  # fs.azure.sas.<container>.<account>.blob.core.windows.net = <sas>
283
358
  res[f"spark.hadoop.fs.azure.sas.{container}.{host}"] = sas
284
359
 
@@ -295,11 +370,12 @@ class AzureBlobStore(DataStore):
295
370
  st = self.storage_options
296
371
  service = "blob"
297
372
 
298
- container = getattr(self, "endpoint", None) or st.get("container")
373
+ container = st.get("container")
374
+
299
375
  if not container:
300
376
  raise mlrun.errors.MLRunInvalidArgumentError(
301
- "Container is required to build the WASB URL "
302
- "(self.endpoint or storage_options['container'])."
377
+ "Container name is required to build the WASB URL. "
378
+ "Set storage_options['container'] or use datastore profile with container specified."
303
379
  )
304
380
 
305
381
  # Prefer host from connection string; else synthesize from account_name
@@ -308,18 +384,23 @@ class AzureBlobStore(DataStore):
308
384
  connection_string = st.get("connection_string")
309
385
 
310
386
  if connection_string:
311
- primary_url, _, _ = parse_connection_str(
312
- connection_string, credential=None, service=service
313
- )
314
- if primary_url.startswith("http://"):
315
- primary_url = primary_url[len("http://") :]
316
- if primary_url.startswith("https://"):
317
- primary_url = primary_url[len("https://") :]
318
- host = primary_url.rstrip("/")
319
-
387
+ with contextlib.suppress(Exception):
388
+ primary_url, _, _ = parse_connection_str(
389
+ connection_string, credential=None, service=service
390
+ )
391
+ if primary_url.startswith("http://"):
392
+ primary_url = primary_url[len("http://") :]
393
+ if primary_url.startswith("https://"):
394
+ primary_url = primary_url[len("https://") :]
395
+ # Remove any path components from the host
396
+ host = primary_url.split("/")[0].rstrip("/")
320
397
  if not host and account_name:
321
398
  host = f"{account_name}.{service}.core.windows.net"
322
399
 
400
+ # For wasbs:// URLs where endpoint is already the host
401
+ if not host and self.kind in ["wasbs", "wasb"] and hasattr(self, "endpoint"):
402
+ host = getattr(self, "endpoint", None)
403
+
323
404
  if not host:
324
405
  raise mlrun.errors.MLRunInvalidArgumentError(
325
406
  "account_name is required (or provide a connection_string) to build the WASB URL."
@@ -320,7 +320,13 @@ def parse_url(url):
320
320
  parsed_url = urlparse(url)
321
321
  schema = parsed_url.scheme.lower()
322
322
  endpoint = parsed_url.hostname
323
- if endpoint:
323
+
324
+ # Special handling for WASBS URLs to preserve container information
325
+ if schema in ["wasbs", "wasb"] and parsed_url.netloc and "@" in parsed_url.netloc:
326
+ # For wasbs://container@host format, preserve the full netloc as endpoint
327
+ # This allows the datastore to extract container later
328
+ endpoint = parsed_url.netloc
329
+ elif endpoint:
324
330
  # HACK - urlparse returns the hostname after in lower case - we want the original case:
325
331
  # the hostname is a substring of the netloc, in which it's the original case, so we find the indexes of the
326
332
  # hostname in the netloc and take it from there
@@ -331,8 +337,8 @@ def parse_url(url):
331
337
  endpoint = netloc[
332
338
  hostname_index_in_netloc : hostname_index_in_netloc + len(lower_hostname)
333
339
  ]
334
- if parsed_url.port:
335
- endpoint += f":{parsed_url.port}"
340
+ if parsed_url.port:
341
+ endpoint += f":{parsed_url.port}"
336
342
  return schema, endpoint, parsed_url
337
343
 
338
344
 
@@ -774,6 +774,7 @@ class RunDBInterface(ABC):
774
774
  item_name: Optional[str] = None,
775
775
  tag: Optional[str] = None,
776
776
  version: Optional[str] = None,
777
+ item_type: mlrun.common.schemas.hub.HubSourceType = mlrun.common.schemas.hub.HubSourceType.functions,
777
778
  ):
778
779
  pass
779
780
 
@@ -4310,6 +4310,7 @@ class HTTPRunDB(RunDBInterface):
4310
4310
  item_name: Optional[str] = None,
4311
4311
  tag: Optional[str] = None,
4312
4312
  version: Optional[str] = None,
4313
+ item_type: HubSourceType = HubSourceType.functions,
4313
4314
  ) -> list[mlrun.common.schemas.hub.IndexedHubSource]:
4314
4315
  """
4315
4316
  List hub sources in the MLRun DB.
@@ -4317,6 +4318,7 @@ class HTTPRunDB(RunDBInterface):
4317
4318
  :param item_name: Sources contain this item will be returned, If not provided all sources will be returned.
4318
4319
  :param tag: Item tag to filter by, supported only if item name is provided.
4319
4320
  :param version: Item version to filter by, supported only if item name is provided and tag is not.
4321
+ :param item_type: Item type to filter by, supported only if item name is provided.
4320
4322
 
4321
4323
  :returns: List of indexed hub sources.
4322
4324
  """
@@ -4324,6 +4326,7 @@ class HTTPRunDB(RunDBInterface):
4324
4326
  params = {}
4325
4327
  if item_name:
4326
4328
  params["item-name"] = normalize_name(item_name)
4329
+ params["item-type"] = item_type
4327
4330
  if tag:
4328
4331
  params["tag"] = tag
4329
4332
  if version:
@@ -673,6 +673,7 @@ class NopDB(RunDBInterface):
673
673
  item_name: Optional[str] = None,
674
674
  tag: Optional[str] = None,
675
675
  version: Optional[str] = None,
676
+ item_type: mlrun.common.schemas.hub.HubSourceType = mlrun.common.schemas.hub.HubSourceType.functions,
676
677
  ):
677
678
  pass
678
679
 
@@ -0,0 +1,15 @@
1
+ # Copyright 2025 Iguazio
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from .module import get_hub_module, import_module
@@ -0,0 +1,166 @@
1
+ # Copyright 2025 Iguazio
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import os
16
+ import subprocess
17
+ import sys
18
+ from pathlib import Path
19
+ from typing import Optional, Union
20
+
21
+ import yaml
22
+
23
+ import mlrun.common.types
24
+ import mlrun.utils
25
+ from mlrun.common.schemas.hub import HubModuleType, HubSourceType
26
+ from mlrun.run import function_to_module, get_object
27
+ from mlrun.utils import logger
28
+
29
+ from ..model import ModelObj
30
+ from ..utils import extend_hub_uri_if_needed
31
+
32
+
33
+ class HubModule(ModelObj):
34
+ def __init__(
35
+ self,
36
+ name: str,
37
+ kind: Union[HubModuleType, str],
38
+ version: Optional[str] = None,
39
+ description: Optional[str] = None,
40
+ categories: Optional[list] = None,
41
+ requirements: Optional[list] = None,
42
+ local_path: Optional[str] = None,
43
+ filename: Optional[str] = None,
44
+ example: Optional[str] = None,
45
+ url: Optional[str] = None,
46
+ **kwargs, # catch all for unused args
47
+ ):
48
+ self.name: str = name
49
+ self.version: str = version
50
+ self.kind: HubModuleType = kind
51
+ self.description: str = description or ""
52
+ self.categories: list = categories or []
53
+ self.requirements: list = requirements or []
54
+ self.local_path: str = local_path or ""
55
+ self.filename: str = filename or name + ".py"
56
+ self.example: str = example or ""
57
+ self.url: str = url or ""
58
+
59
+ def module(self):
60
+ """Import the module after downloading its fils to local_path"""
61
+ try:
62
+ return function_to_module(code=self.filename, workdir=self.local_path)
63
+ except FileNotFoundError:
64
+ searched_path = self.local_path or "./"
65
+ raise FileNotFoundError(
66
+ f"Module file {self.filename} not found in {searched_path}, try calling download_module_files() first"
67
+ )
68
+
69
+ def install_requirements(self) -> None:
70
+ """
71
+ Install pip-style requirements (e.g., ["pandas>=2.0.0", "requests==2.31.0"]).
72
+ """
73
+ for req in self.requirements:
74
+ logger.info(f"Installing {req} ...")
75
+ try:
76
+ subprocess.run(
77
+ [sys.executable, "-m", "pip", "install", req], check=True, text=True
78
+ )
79
+ logger.info(f"Installed {req}")
80
+ except subprocess.CalledProcessError as e:
81
+ logger.error(f"Failed to install {req} (exit code {e.returncode})")
82
+
83
+ def download_module_files(self, local_path=None, secrets=None):
84
+ """
85
+ Download this hub module’s files (code file and, if available, an example notebook) to the target directory
86
+ specified by `local_path` (defaults to the current working directory).
87
+ This path will be used later to locate the code file when importing the module.
88
+ """
89
+ self.local_path = self.verify_directory(path=local_path)
90
+ source_url, _ = extend_hub_uri_if_needed(
91
+ uri=self.url, asset_type=HubSourceType.modules, file=self.filename
92
+ )
93
+ self._download_object(
94
+ obj_url=source_url, target_name=self.filename, secrets=secrets
95
+ )
96
+ if self.example:
97
+ example_url, _ = extend_hub_uri_if_needed(
98
+ uri=self.url, asset_type=HubSourceType.modules, file=self.example
99
+ )
100
+ self._download_object(
101
+ obj_url=example_url, target_name=self.example, secrets=secrets
102
+ )
103
+
104
+ def _download_object(self, obj_url, target_name, secrets=None):
105
+ data = get_object(url=obj_url, secrets=secrets)
106
+ target_dir = self.local_path if self.local_path is not None else os.getcwd()
107
+ target_filepath = os.path.join(target_dir, target_name)
108
+ with open(target_filepath, "wb") as f:
109
+ f.write(data)
110
+
111
+ @staticmethod
112
+ def verify_directory(path: str) -> Path:
113
+ """Validate that the given path is an existing directory."""
114
+ if path:
115
+ path = Path(path)
116
+ if not path.exists():
117
+ raise ValueError(f"Path does not exist: {path}")
118
+ if not path.is_dir():
119
+ raise ValueError(f"Path is not a directory: {path}")
120
+ return path
121
+
122
+
123
+ def get_hub_module(
124
+ url="", download_files=True, secrets=None, local_path=None
125
+ ) -> HubModule:
126
+ """
127
+ Get a hub-module object containing metadata of the requested module.
128
+ :param url: Hub module url in the format "hub://[<source>/]<item-name>[:<tag>]"
129
+ :param download_files: When set to True, the module files (code file and example notebook) are downloaded
130
+ :param secrets: Optional, credentials dict for DB or URL (s3, v3io, ...)
131
+ :param local_path: Path to target directory for the module files. Ignored when download_files is set to False.
132
+ Defaults to the current working directory.
133
+
134
+ :return: HubModule object
135
+ """
136
+ item_yaml_url, is_hub_uri = extend_hub_uri_if_needed(
137
+ uri=url, asset_type=HubSourceType.modules, file="item.yaml"
138
+ )
139
+ if not is_hub_uri:
140
+ raise mlrun.errors.MLRunInvalidArgumentError("Not a valid hub URL")
141
+ yaml_obj = get_object(url=item_yaml_url, secrets=secrets)
142
+ item_yaml = yaml.safe_load(yaml_obj)
143
+ spec = item_yaml.pop("spec", {})
144
+ hub_module = HubModule(**item_yaml, **spec, url=url)
145
+ if download_files:
146
+ hub_module.download_module_files(local_path=local_path, secrets=secrets)
147
+ return hub_module
148
+
149
+
150
+ def import_module(url="", install_requirements=False, secrets=None, local_path=None):
151
+ """
152
+ Import a module from the hub to use directly.
153
+ :param url: hub module url in the format "hub://[<source>/]<item-name>[:<tag>]"
154
+ :param install_requirements: when set to True, the module's requirements are installed.
155
+ :param secrets: optional, credentials dict for DB or URL (s3, v3io, ...)
156
+ :param local_path: Path to target directory for the module files (code and example notebook).
157
+ Defaults to the current working directory.
158
+
159
+ :return: the module
160
+ """
161
+ hub_module: HubModule = get_hub_module(
162
+ url=url, download_files=True, secrets=secrets, local_path=local_path
163
+ )
164
+ if install_requirements:
165
+ hub_module.install_requirements()
166
+ return hub_module.module()
@@ -177,7 +177,12 @@ def run_function(
177
177
  This ensures latest code changes are executed. This argument must be used in
178
178
  conjunction with the local=True argument.
179
179
  :param output_path: path to store artifacts, when running in a workflow this will be set automatically
180
- :param retry: Retry configuration for the run, can be a dict or an instance of mlrun.model.Retry.
180
+ :param retry: Retry configuration for the run, can be a dict or an instance of
181
+ :py:class:`~mlrun.model.Retry`.
182
+ The `count` field in the `Retry` object specifies the number of retry attempts.
183
+ If `count=0`, the run will not be retried.
184
+ The `backoff` field specifies the retry backoff strategy between retry attempts.
185
+ If not provided, no backoff is applied.
181
186
  :return: MLRun RunObject or PipelineNodeWrapper
182
187
  """
183
188
  if artifact_path:
@@ -4104,7 +4104,12 @@ class MlrunProject(ModelObj):
4104
4104
  This ensures latest code changes are executed. This argument must be used in
4105
4105
  conjunction with the local=True argument.
4106
4106
  :param output_path: path to store artifacts, when running in a workflow this will be set automatically
4107
- :param retry: Retry configuration for the run, can be a dict or an instance of mlrun.model.Retry.
4107
+ :param retry: Retry configuration for the run, can be a dict or an instance of
4108
+ :py:class:`~mlrun.model.Retry`.
4109
+ The `count` field in the `Retry` object specifies the number of retry attempts.
4110
+ If `count=0`, the run will not be retried.
4111
+ The `backoff` field specifies the retry backoff strategy between retry attempts.
4112
+ If not provided, no backoff is applied.
4108
4113
  :return: MLRun RunObject or PipelineNodeWrapper
4109
4114
  """
4110
4115
  if artifact_path:
@@ -376,7 +376,12 @@ class BaseRuntime(ModelObj):
376
376
  This ensures latest code changes are executed. This argument must be used in
377
377
  conjunction with the local=True argument.
378
378
  :param output_path: Default artifact output path.
379
- :param retry: Retry configuration for the run, can be a dict or an instance of mlrun.model.Retry.
379
+ :param retry: Retry configuration for the run, can be a dict or an instance of
380
+ :py:class:`~mlrun.model.Retry`.
381
+ The `count` field in the `Retry` object specifies the number of retry attempts.
382
+ If `count=0`, the run will not be retried.
383
+ The `backoff` field specifies the retry backoff strategy between retry attempts.
384
+ If not provided, no backoff is applied.
380
385
  :return: Run context object (RunObject) with run metadata, results and status
381
386
  """
382
387
  if artifact_path or out_path:
@@ -698,6 +698,12 @@ class ApplicationRuntime(RemoteRuntime):
698
698
  """
699
699
  # create a function that includes only the reverse proxy, without the application
700
700
 
701
+ if not mlrun.get_current_project(silent=True):
702
+ raise mlrun.errors.MLRunMissingProjectError(
703
+ "An active project is required to run deploy_reverse_proxy_image(). "
704
+ "Use `mlrun.get_or_create_project()` or set an active project first."
705
+ )
706
+
701
707
  reverse_proxy_func = mlrun.run.new_function(
702
708
  name="reverse-proxy-temp", kind="remote"
703
709
  )
@@ -14,6 +14,7 @@
14
14
  import json
15
15
  import os
16
16
  import warnings
17
+ from base64 import b64decode
17
18
  from copy import deepcopy
18
19
  from typing import Optional, Union
19
20
 
@@ -678,6 +679,17 @@ class ServingRuntime(RemoteRuntime):
678
679
  f"function {function} is used in steps and is not defined, "
679
680
  "use the .add_child_function() to specify child function attributes"
680
681
  )
682
+ if isinstance(self.spec.graph, RootFlowStep) and any(
683
+ isinstance(step_type, mlrun.serving.states.ModelRunnerStep)
684
+ for step_type in self.spec.graph.steps.values()
685
+ ):
686
+ # Add import for LLModel
687
+ decoded_code = b64decode(self.spec.build.functionSourceCode).decode("utf-8")
688
+ import_llmodel_code = "\nfrom mlrun.serving.states import LLModel\n"
689
+ if import_llmodel_code not in decoded_code:
690
+ decoded_code += import_llmodel_code
691
+ encoded_code = mlrun.utils.helpers.encode_user_code(decoded_code)
692
+ self.spec.build.functionSourceCode = encoded_code
681
693
 
682
694
  # Handle secret processing before handling child functions, since secrets are transferred to them
683
695
  if self.spec.secret_sources:
@@ -109,6 +109,7 @@ class KubeResourceSpec(FunctionSpec):
109
109
  "track_models",
110
110
  "parameters",
111
111
  "graph",
112
+ "filename",
112
113
  ]
113
114
  _default_fields_to_strip = FunctionSpec._default_fields_to_strip + [
114
115
  "volumes",
@@ -1641,6 +1641,9 @@ class ModelRunnerStep(MonitoredStep):
1641
1641
  model_runner_step.add_model(..., model_class=MyModel(name="my_model"))
1642
1642
  graph.to(model_runner_step)
1643
1643
 
1644
+ Note when ModelRunnerStep is used in a graph, MLRun automatically imports
1645
+ the default language model class (LLModel) during function deployment.
1646
+
1644
1647
  :param model_selector: ModelSelector instance whose select() method will be used to select models to run on each
1645
1648
  event. Optional. If not passed, all models will be run.
1646
1649
  :param raise_exception: If True, an error will be raised when model selection fails or if one of the models raised
@@ -1829,7 +1832,9 @@ class ModelRunnerStep(MonitoredStep):
1829
1832
  Add a Model to this ModelRunner.
1830
1833
 
1831
1834
  :param endpoint_name: str, will identify the model in the ModelRunnerStep, and assign model endpoint name
1832
- :param model_class: Model class name
1835
+ :param model_class: Model class name. If LLModel is chosen
1836
+ (either by name `LLModel` or by its full path, e.g. mlrun.serving.states.LLModel),
1837
+ outputs will be overridden with UsageResponseKeys fields.
1833
1838
  :param execution_mechanism: Parallel execution mechanism to be used to execute this model. Must be one of:
1834
1839
  * "process_pool" – To run in a separate process from a process pool. This is appropriate for CPU or GPU
1835
1840
  intensive tasks as they would otherwise block the main process by holding Python's Global Interpreter
@@ -1902,7 +1907,8 @@ class ModelRunnerStep(MonitoredStep):
1902
1907
  "Cannot provide a model object as argument to `model_class` and also provide `model_parameters`."
1903
1908
  )
1904
1909
  if type(model_class) is LLModel or (
1905
- isinstance(model_class, str) and model_class == LLModel.__name__
1910
+ isinstance(model_class, str)
1911
+ and model_class.split(".")[-1] == LLModel.__name__
1906
1912
  ):
1907
1913
  if outputs:
1908
1914
  warnings.warn(
@@ -2848,7 +2854,9 @@ class RootFlowStep(FlowStep):
2848
2854
  """
2849
2855
  Add a shared model to the graph, this model will be available to all the ModelRunners in the graph
2850
2856
  :param name: Name of the shared model (should be unique in the graph)
2851
- :param model_class: Model class name
2857
+ :param model_class: Model class name. If LLModel is chosen
2858
+ (either by name `LLModel` or by its full path, e.g. mlrun.serving.states.LLModel),
2859
+ outputs will be overridden with UsageResponseKeys fields.
2852
2860
  :param execution_mechanism: Parallel execution mechanism to be used to execute this model. Must be one of:
2853
2861
  * "process_pool" – To run in a separate process from a process pool. This is appropriate for CPU or GPU
2854
2862
  intensive tasks as they would otherwise block the main process by holding Python's Global Interpreter
@@ -2892,7 +2900,8 @@ class RootFlowStep(FlowStep):
2892
2900
  "Cannot provide a model object as argument to `model_class` and also provide `model_parameters`."
2893
2901
  )
2894
2902
  if type(model_class) is LLModel or (
2895
- isinstance(model_class, str) and model_class == LLModel.__name__
2903
+ isinstance(model_class, str)
2904
+ and model_class.split(".")[-1] == LLModel.__name__
2896
2905
  ):
2897
2906
  if outputs:
2898
2907
  warnings.warn(