mlrun 1.10.0rc27__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.0rc27 → mlrun-1.10.0rc29}/Makefile +0 -2
  2. {mlrun-1.10.0rc27/mlrun.egg-info → mlrun-1.10.0rc29}/PKG-INFO +2 -2
  3. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/__init__.py +1 -0
  4. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/hub.py +5 -0
  5. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/config.py +2 -1
  6. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/azure_blob.py +98 -17
  7. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/utils.py +9 -3
  8. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/db/base.py +1 -0
  9. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/db/httpdb.py +4 -1
  10. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/db/nopdb.py +1 -0
  11. mlrun-1.10.0rc29/mlrun/hub/__init__.py +15 -0
  12. mlrun-1.10.0rc29/mlrun/hub/module.py +166 -0
  13. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +38 -7
  14. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/helpers.py +23 -0
  15. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/projects/operations.py +6 -1
  16. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/projects/project.py +6 -1
  17. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/base.py +10 -3
  18. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/application/application.py +6 -0
  19. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/serving.py +12 -0
  20. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/pod.py +1 -0
  21. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/states.py +13 -4
  22. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/helpers.py +49 -38
  23. mlrun-1.10.0rc29/mlrun/utils/version/version.json +4 -0
  24. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29/mlrun.egg-info}/PKG-INFO +2 -2
  25. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun.egg-info/SOURCES.txt +2 -0
  26. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun.egg-info/requires.txt +1 -1
  27. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/requirements.txt +1 -1
  28. mlrun-1.10.0rc27/mlrun/utils/version/version.json +0 -4
  29. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/LICENSE +0 -0
  30. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/MANIFEST.in +0 -0
  31. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/README.md +0 -0
  32. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/dependencies.py +0 -0
  33. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/dev-requirements.txt +0 -0
  34. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/dockerfiles/mlrun-api/requirements.txt +0 -0
  35. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/archive.zip +0 -0
  36. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/function.py +0 -0
  37. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/handler.py +0 -0
  38. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/infile.txt +0 -0
  39. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/load-project.ipynb +0 -0
  40. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_basics.ipynb +0 -0
  41. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_dask.ipynb +0 -0
  42. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_db.ipynb +0 -0
  43. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_export_import.ipynb +0 -0
  44. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_jobs.ipynb +0 -0
  45. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_sparkk8s.ipynb +0 -0
  46. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/mlrun_vault.ipynb +0 -0
  47. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/model.bst +0 -0
  48. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/new-project.ipynb +0 -0
  49. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/nulltst.py +0 -0
  50. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/params.csv +0 -0
  51. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/remote-spark.ipynb +0 -0
  52. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/secrets.txt +0 -0
  53. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/spark-function.py +0 -0
  54. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/training.py +0 -0
  55. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/v2_model_server.ipynb +0 -0
  56. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/examples/xgb_serving.ipynb +0 -0
  57. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/extras-requirements.txt +0 -0
  58. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/__main__.py +0 -0
  59. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/alerts/__init__.py +0 -0
  60. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/alerts/alert.py +0 -0
  61. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/__init__.py +0 -0
  62. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/base.py +0 -0
  63. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/dataset.py +0 -0
  64. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/document.py +0 -0
  65. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/helpers.py +0 -0
  66. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/llm_prompt.py +0 -0
  67. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/manager.py +0 -0
  68. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/model.py +0 -0
  69. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/artifacts/plots.py +0 -0
  70. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/__init__.py +0 -0
  71. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/constants.py +0 -0
  72. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/db/__init__.py +0 -0
  73. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/db/dialects.py +0 -0
  74. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/__init__.py +0 -0
  75. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/artifact.py +0 -0
  76. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/base.py +0 -0
  77. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/feature_set.py +0 -0
  78. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/function.py +0 -0
  79. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/model_endpoint.py +0 -0
  80. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/pipeline.py +0 -0
  81. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/project.py +0 -0
  82. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/formatters/run.py +0 -0
  83. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/helpers.py +0 -0
  84. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/model_monitoring/__init__.py +0 -0
  85. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/model_monitoring/helpers.py +0 -0
  86. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/runtimes/constants.py +0 -0
  87. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/__init__.py +0 -0
  88. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/alert.py +0 -0
  89. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/api_gateway.py +0 -0
  90. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/artifact.py +0 -0
  91. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/auth.py +0 -0
  92. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/background_task.py +0 -0
  93. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/client_spec.py +0 -0
  94. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/clusterization_spec.py +0 -0
  95. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/common.py +0 -0
  96. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/constants.py +0 -0
  97. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/datastore_profile.py +0 -0
  98. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/events.py +0 -0
  99. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/feature_store.py +0 -0
  100. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/frontend_spec.py +0 -0
  101. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/function.py +0 -0
  102. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/http.py +0 -0
  103. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/k8s.py +0 -0
  104. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/memory_reports.py +0 -0
  105. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  106. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
  107. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  108. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  109. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
  110. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/notification.py +0 -0
  111. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/object.py +0 -0
  112. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/pagination.py +0 -0
  113. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/partition.py +0 -0
  114. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/pipeline.py +0 -0
  115. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/project.py +0 -0
  116. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/regex.py +0 -0
  117. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/runs.py +0 -0
  118. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/runtime_resource.py +0 -0
  119. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/schedule.py +0 -0
  120. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/secret.py +0 -0
  121. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/serving.py +0 -0
  122. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/tag.py +0 -0
  123. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/schemas/workflow.py +0 -0
  124. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/secrets.py +0 -0
  125. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/common/types.py +0 -0
  126. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/data_types/__init__.py +0 -0
  127. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/data_types/data_types.py +0 -0
  128. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/data_types/infer.py +0 -0
  129. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/data_types/spark.py +0 -0
  130. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/data_types/to_pandas.py +0 -0
  131. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/__init__.py +0 -0
  132. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/alibaba_oss.py +0 -0
  133. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/base.py +0 -0
  134. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/datastore.py +0 -0
  135. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/datastore_profile.py +0 -0
  136. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/dbfs_store.py +0 -0
  137. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/filestore.py +0 -0
  138. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/google_cloud_storage.py +0 -0
  139. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/hdfs.py +0 -0
  140. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/inmem.py +0 -0
  141. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/__init__.py +0 -0
  142. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
  143. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/mock_model_provider.py +0 -0
  144. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/model_provider.py +0 -0
  145. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/model_provider/openai_provider.py +0 -0
  146. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/redis.py +0 -0
  147. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/remote_client.py +0 -0
  148. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/s3.py +0 -0
  149. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/snowflake_utils.py +0 -0
  150. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/sources.py +0 -0
  151. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/spark_udf.py +0 -0
  152. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/spark_utils.py +0 -0
  153. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/store_resources.py +0 -0
  154. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/storeytargets.py +0 -0
  155. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/targets.py +0 -0
  156. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/v3io.py +0 -0
  157. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/vectorstore.py +0 -0
  158. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/wasbfs/__init__.py +0 -0
  159. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/datastore/wasbfs/fs.py +0 -0
  160. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/db/__init__.py +0 -0
  161. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/db/auth_utils.py +0 -0
  162. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/db/factory.py +0 -0
  163. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/errors.py +0 -0
  164. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/execution.py +0 -0
  165. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/__init__.py +0 -0
  166. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/api.py +0 -0
  167. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/common.py +0 -0
  168. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/feature_set.py +0 -0
  169. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/feature_vector.py +0 -0
  170. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/feature_vector_utils.py +0 -0
  171. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/ingestion.py +0 -0
  172. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/__init__.py +0 -0
  173. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/base.py +0 -0
  174. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  175. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/job.py +0 -0
  176. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  177. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  178. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  179. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/feature_store/steps.py +0 -0
  180. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/features.py +0 -0
  181. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/__init__.py +0 -0
  182. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/__init__.py +0 -0
  183. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  184. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  185. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/model_handler.py +0 -0
  186. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/plan.py +0 -0
  187. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/producer.py +0 -0
  188. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_common/utils.py +0 -0
  189. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  190. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  191. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  192. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  193. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  194. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  195. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_dl_common/utils.py +0 -0
  196. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  197. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  198. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  199. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  200. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  201. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  202. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  203. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plan.py +0 -0
  204. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  205. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  206. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  207. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  208. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  209. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  210. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/producer.py +0 -0
  211. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/_ml_common/utils.py +0 -0
  212. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  213. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  214. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/huggingface/__init__.py +0 -0
  215. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/huggingface/model_server.py +0 -0
  216. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/__init__.py +0 -0
  217. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  218. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  219. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  220. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  221. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  222. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  223. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  224. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  225. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  226. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/model_server.py +0 -0
  227. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/lgbm/utils.py +0 -0
  228. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/__init__.py +0 -0
  229. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/dataset.py +0 -0
  230. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  231. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/model_handler.py +0 -0
  232. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/onnx/model_server.py +0 -0
  233. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/parallel_coordinates.py +0 -0
  234. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/__init__.py +0 -0
  235. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  236. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  237. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  238. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  239. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  240. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  241. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  242. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  243. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/model_server.py +0 -0
  244. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/pytorch/utils.py +0 -0
  245. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/__init__.py +0 -0
  246. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/estimator.py +0 -0
  247. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/metric.py +0 -0
  248. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  249. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  250. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  251. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/sklearn/utils.py +0 -0
  252. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  253. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  254. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  255. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  256. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  257. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  258. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  259. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  260. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/tf_keras/utils.py +0 -0
  261. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/__init__.py +0 -0
  262. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  263. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  264. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/frameworks/xgboost/utils.py +0 -0
  265. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/k8s_utils.py +0 -0
  266. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/launcher/__init__.py +0 -0
  267. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/launcher/base.py +0 -0
  268. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/launcher/client.py +0 -0
  269. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/launcher/factory.py +0 -0
  270. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/launcher/local.py +0 -0
  271. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/launcher/remote.py +0 -0
  272. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/lists.py +0 -0
  273. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model.py +0 -0
  274. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/__init__.py +0 -0
  275. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/api.py +0 -0
  276. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/__init__.py +0 -0
  277. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  278. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/base.py +0 -0
  279. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/context.py +0 -0
  280. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  281. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  282. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  283. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/applications/results.py +0 -0
  284. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/controller.py +0 -0
  285. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/__init__.py +0 -0
  286. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/_schedules.py +0 -0
  287. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/_stats.py +0 -0
  288. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  289. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  290. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  291. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  292. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  293. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  294. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  295. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  296. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  297. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  298. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/features_drift_table.py +0 -0
  299. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  300. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  301. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/stream_processing.py +0 -0
  302. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/model_monitoring/writer.py +0 -0
  303. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/__init__.py +0 -0
  304. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/context_handler.py +0 -0
  305. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/errors.py +0 -0
  306. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packager.py +0 -0
  307. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packagers/__init__.py +0 -0
  308. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packagers/default_packager.py +0 -0
  309. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packagers/numpy_packagers.py +0 -0
  310. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packagers/pandas_packagers.py +0 -0
  311. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  312. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/packagers_manager.py +0 -0
  313. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/__init__.py +0 -0
  314. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/_archiver.py +0 -0
  315. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/_formatter.py +0 -0
  316. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/_pickler.py +0 -0
  317. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/_supported_format.py +0 -0
  318. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/log_hint_utils.py +0 -0
  319. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/package/utils/type_hint_utils.py +0 -0
  320. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/platforms/__init__.py +0 -0
  321. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/platforms/iguazio.py +0 -0
  322. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/projects/__init__.py +0 -0
  323. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/projects/pipelines.py +0 -0
  324. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/render.py +0 -0
  325. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/run.py +0 -0
  326. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/__init__.py +0 -0
  327. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/daskjob.py +0 -0
  328. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  329. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  330. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  331. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  332. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/funcdoc.py +0 -0
  333. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/function_reference.py +0 -0
  334. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/generators.py +0 -0
  335. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/kubejob.py +0 -0
  336. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/local.py +0 -0
  337. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/mounts.py +0 -0
  338. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/mpijob/__init__.py +0 -0
  339. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/mpijob/abstract.py +0 -0
  340. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/mpijob/v1.py +0 -0
  341. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/__init__.py +0 -0
  342. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  343. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  344. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  345. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/function.py +0 -0
  346. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  347. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/remotesparkjob.py +0 -0
  348. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  349. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  350. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/runtimes/utils.py +0 -0
  351. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/secrets.py +0 -0
  352. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/__init__.py +0 -0
  353. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/merger.py +0 -0
  354. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/remote.py +0 -0
  355. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/routers.py +0 -0
  356. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/server.py +0 -0
  357. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/serving_wrapper.py +0 -0
  358. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/system_steps.py +0 -0
  359. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/utils.py +0 -0
  360. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/v1_serving.py +0 -0
  361. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/serving/v2_serving.py +0 -0
  362. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/track/__init__.py +0 -0
  363. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/track/tracker.py +0 -0
  364. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/track/tracker_manager.py +0 -0
  365. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/track/trackers/__init__.py +0 -0
  366. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  367. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/__init__.py +0 -0
  368. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/async_http.py +0 -0
  369. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/azure_vault.py +0 -0
  370. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/clones.py +0 -0
  371. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/condition_evaluator.py +0 -0
  372. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/http.py +0 -0
  373. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/logger.py +0 -0
  374. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/__init__.py +0 -0
  375. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/__init__.py +0 -0
  376. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/base.py +0 -0
  377. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/console.py +0 -0
  378. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/git.py +0 -0
  379. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/ipython.py +0 -0
  380. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/mail.py +0 -0
  381. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/slack.py +0 -0
  382. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification/webhook.py +0 -0
  383. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/notifications/notification_pusher.py +0 -0
  384. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/regex.py +0 -0
  385. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/retryer.py +0 -0
  386. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/singleton.py +0 -0
  387. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/v3io_clients.py +0 -0
  388. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/vault.py +0 -0
  389. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/version/__init__.py +0 -0
  390. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun/utils/version/version.py +0 -0
  391. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun.egg-info/dependency_links.txt +0 -0
  392. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun.egg-info/entry_points.txt +0 -0
  393. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun.egg-info/not-zip-safe +0 -0
  394. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/mlrun.egg-info/top_level.txt +0 -0
  395. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/packages.py +0 -0
  396. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/pyproject.toml +0 -0
  397. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/setup.cfg +0 -0
  398. {mlrun-1.10.0rc27 → mlrun-1.10.0rc29}/setup.py +0 -0
@@ -656,8 +656,6 @@ test: clean ## Run mlrun tests
656
656
  --ignore=server/py/services/api/migrations \
657
657
  ") && \
658
658
  PER_PYTHON_VERSION_IGNORE_TEST_FLAGS=$(if $(filter $(MLRUN_PYTHON_VERSION),3.11),$$(echo "\
659
- --ignore=server/py/services/api/tests/unit/api/test_pipelines.py \
660
- --ignore=server/py/services/api/tests/unit/crud/test_pipelines.py \
661
659
  --ignore=tests/serving/test_remote.py \
662
660
  --ignore=tests/projects/test_remote_pipeline.py \
663
661
  --ignore=tests/frameworks/tf_keras/test_tf_keras.py \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc27
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"
@@ -255,7 +255,8 @@ default_config = {
255
255
  },
256
256
  "runtimes": {
257
257
  "dask": "600",
258
- "dask_cluster_start": "300",
258
+ # cluster start might take some time in case k8s needs to spin up new nodes
259
+ "dask_cluster_start": "600",
259
260
  },
260
261
  "push_notifications": "60",
261
262
  },
@@ -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:
@@ -5200,7 +5203,7 @@ class HTTPRunDB(RunDBInterface):
5200
5203
 
5201
5204
  :return: A ModelEndpointDriftValues object containing the drift counts over time.
5202
5205
  """
5203
- endpoint_path = f"projects/{project}/model-endpoints/drift-over-time"
5206
+ endpoint_path = f"projects/{project}/model-monitoring/drift-over-time"
5204
5207
  error_message = f"Failed retrieving drift data for {project}"
5205
5208
  response = self.api_call(
5206
5209
  method="GET",
@@ -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()
@@ -1499,20 +1499,51 @@ class V3IOTSDBConnector(TSDBConnector):
1499
1499
  ) -> mm_schemas.ModelEndpointDriftValues:
1500
1500
  table = mm_schemas.V3IOTSDBTables.APP_RESULTS
1501
1501
  start, end, interval = self._prepare_aligned_start_end(start, end)
1502
-
1503
- # get per time-interval x endpoint_id combination the max result status
1504
1502
  df = self._get_records(
1505
1503
  table=table,
1506
1504
  start=start,
1507
1505
  end=end,
1508
- interval=interval,
1509
- sliding_window_step=interval,
1510
1506
  columns=[mm_schemas.ResultData.RESULT_STATUS],
1511
- agg_funcs=["max"],
1512
- group_by=mm_schemas.WriterEvent.ENDPOINT_ID,
1513
1507
  )
1508
+ df = self._aggregate_raw_drift_data(df, start, end, interval)
1514
1509
  if df.empty:
1515
1510
  return mm_schemas.ModelEndpointDriftValues(values=[])
1516
1511
  df = df[df[f"max({mm_schemas.ResultData.RESULT_STATUS})"] >= 1]
1517
- df = df.reset_index(names="_wstart")
1518
1512
  return self._df_to_drift_data(df)
1513
+
1514
+ @staticmethod
1515
+ def _aggregate_raw_drift_data(
1516
+ df: pd.DataFrame, start: datetime, end: datetime, interval: str
1517
+ ) -> pd.DataFrame:
1518
+ if df.empty:
1519
+ return df
1520
+ if not isinstance(df.index, pd.DatetimeIndex):
1521
+ raise TypeError("Expected a DatetimeIndex on the DataFrame (time index).")
1522
+ df[EventFieldType.ENDPOINT_ID] = (
1523
+ df[EventFieldType.ENDPOINT_ID].astype("string").str.strip()
1524
+ ) # remove extra data carried by the category dtype
1525
+ window = df.loc[
1526
+ (df.index >= start) & (df.index < end),
1527
+ [mm_schemas.ResultData.RESULT_STATUS, EventFieldType.ENDPOINT_ID],
1528
+ ]
1529
+ out = (
1530
+ window.groupby(
1531
+ [
1532
+ EventFieldType.ENDPOINT_ID,
1533
+ pd.Grouper(
1534
+ freq=interval, origin=start, label="left", closed="left"
1535
+ ),
1536
+ ]
1537
+ # align to start, [start, end) intervals
1538
+ )[mm_schemas.ResultData.RESULT_STATUS]
1539
+ .max()
1540
+ .reset_index()
1541
+ .rename(
1542
+ columns={
1543
+ mm_schemas.ResultData.RESULT_STATUS: f"max({mm_schemas.ResultData.RESULT_STATUS})"
1544
+ }
1545
+ )
1546
+ )
1547
+ return out.rename(
1548
+ columns={"time": "_wstart"}
1549
+ ) # rename datetime column to _wstart to align with the tdengine result
@@ -659,3 +659,26 @@ def get_start_end(
659
659
  )
660
660
 
661
661
  return start, end
662
+
663
+
664
+ def validate_time_range(
665
+ start: Optional[datetime.datetime] = None, end: Optional[datetime.datetime] = None
666
+ ) -> tuple[datetime.datetime, datetime.datetime]:
667
+ """
668
+ validate start and end parameters and set default values if needed.
669
+ :param start: Either None or datetime, None is handled as datetime.now(tz=timezone.utc) - timedelta(days=1)
670
+ :param end: Either None or datetime, None is handled as datetime.now(tz=timezone.utc)
671
+ :return: start datetime, end datetime
672
+ """
673
+ end = end or mlrun.utils.helpers.datetime_now()
674
+ start = start or (end - datetime.timedelta(days=1))
675
+ if start.tzinfo is None or end.tzinfo is None:
676
+ raise mlrun.errors.MLRunInvalidArgumentTypeError(
677
+ "Custom start and end times must contain the timezone."
678
+ )
679
+ if start > end:
680
+ raise mlrun.errors.MLRunInvalidArgumentError(
681
+ "The start time must be before the end time. Note that if end time is not provided, "
682
+ "the current time is used by default."
683
+ )
684
+ return start, end
@@ -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:
@@ -443,9 +448,11 @@ class BaseRuntime(ModelObj):
443
448
  :param runobj: Run context object (RunObject) with run metadata and status
444
449
  :return: Dictionary with all the variables that could be parsed
445
450
  """
451
+ active_project = self.metadata.project or config.active_project
446
452
  runtime_env = {
447
- mlrun_constants.MLRUN_ACTIVE_PROJECT: self.metadata.project
448
- or config.active_project
453
+ mlrun_constants.MLRUN_ACTIVE_PROJECT: active_project,
454
+ # TODO: Remove this in 1.12.0 as MLRUN_DEFAULT_PROJECT is deprecated and should not be injected anymore
455
+ "MLRUN_DEFAULT_PROJECT": active_project,
449
456
  }
450
457
  if runobj:
451
458
  runtime_env["MLRUN_EXEC_CONFIG"] = runobj.to_json(