mlrun 1.10.0rc33__tar.gz → 1.10.0rc35__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 (400) hide show
  1. {mlrun-1.10.0rc33/mlrun.egg-info → mlrun-1.10.0rc35}/PKG-INFO +2 -2
  2. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/dependencies.py +1 -1
  3. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/__init__.py +1 -0
  4. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/__init__.py +1 -0
  5. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/azure_blob.py +12 -1
  6. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/base.py +88 -54
  7. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/project.py +9 -3
  8. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/run.py +26 -18
  9. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/application/application.py +6 -0
  10. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/server.py +2 -13
  11. mlrun-1.10.0rc35/mlrun/serving/steps.py +62 -0
  12. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/helpers.py +30 -3
  13. mlrun-1.10.0rc35/mlrun/utils/version/version.json +4 -0
  14. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35/mlrun.egg-info}/PKG-INFO +2 -2
  15. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/SOURCES.txt +1 -0
  16. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/requires.txt +1 -1
  17. mlrun-1.10.0rc33/mlrun/utils/version/version.json +0 -4
  18. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/LICENSE +0 -0
  19. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/MANIFEST.in +0 -0
  20. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/Makefile +0 -0
  21. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/README.md +0 -0
  22. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/dev-requirements.txt +0 -0
  23. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/dockerfiles/mlrun-api/requirements.txt +0 -0
  24. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/archive.zip +0 -0
  25. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/function.py +0 -0
  26. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/handler.py +0 -0
  27. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/infile.txt +0 -0
  28. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/load-project.ipynb +0 -0
  29. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_basics.ipynb +0 -0
  30. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_dask.ipynb +0 -0
  31. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_db.ipynb +0 -0
  32. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_export_import.ipynb +0 -0
  33. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_jobs.ipynb +0 -0
  34. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_sparkk8s.ipynb +0 -0
  35. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_vault.ipynb +0 -0
  36. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/model.bst +0 -0
  37. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/new-project.ipynb +0 -0
  38. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/nulltst.py +0 -0
  39. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/params.csv +0 -0
  40. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/remote-spark.ipynb +0 -0
  41. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/secrets.txt +0 -0
  42. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/spark-function.py +0 -0
  43. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/training.py +0 -0
  44. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/v2_model_server.ipynb +0 -0
  45. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/xgb_serving.ipynb +0 -0
  46. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/extras-requirements.txt +0 -0
  47. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/__init__.py +0 -0
  48. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/__main__.py +0 -0
  49. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/alerts/__init__.py +0 -0
  50. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/alerts/alert.py +0 -0
  51. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/__init__.py +0 -0
  52. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/base.py +0 -0
  53. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/dataset.py +0 -0
  54. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/document.py +0 -0
  55. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/helpers.py +0 -0
  56. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/llm_prompt.py +0 -0
  57. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/manager.py +0 -0
  58. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/model.py +0 -0
  59. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/plots.py +0 -0
  60. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/__init__.py +0 -0
  61. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/constants.py +0 -0
  62. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/db/__init__.py +0 -0
  63. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/db/dialects.py +0 -0
  64. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/__init__.py +0 -0
  65. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/artifact.py +0 -0
  66. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/base.py +0 -0
  67. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/feature_set.py +0 -0
  68. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/function.py +0 -0
  69. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/model_endpoint.py +0 -0
  70. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/pipeline.py +0 -0
  71. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/project.py +0 -0
  72. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/run.py +0 -0
  73. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/helpers.py +0 -0
  74. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/model_monitoring/__init__.py +0 -0
  75. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/model_monitoring/helpers.py +0 -0
  76. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/runtimes/constants.py +0 -0
  77. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/alert.py +0 -0
  78. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/api_gateway.py +0 -0
  79. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/artifact.py +0 -0
  80. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/auth.py +0 -0
  81. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/background_task.py +0 -0
  82. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/client_spec.py +0 -0
  83. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/clusterization_spec.py +0 -0
  84. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/common.py +0 -0
  85. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/constants.py +0 -0
  86. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/datastore_profile.py +0 -0
  87. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/events.py +0 -0
  88. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/feature_store.py +0 -0
  89. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/frontend_spec.py +0 -0
  90. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/function.py +0 -0
  91. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/http.py +0 -0
  92. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/hub.py +0 -0
  93. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/k8s.py +0 -0
  94. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/memory_reports.py +0 -0
  95. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
  96. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  97. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  98. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
  99. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/notification.py +0 -0
  100. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/object.py +0 -0
  101. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/pagination.py +0 -0
  102. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/partition.py +0 -0
  103. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/pipeline.py +0 -0
  104. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/project.py +0 -0
  105. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/regex.py +0 -0
  106. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/runs.py +0 -0
  107. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/runtime_resource.py +0 -0
  108. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/schedule.py +0 -0
  109. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/secret.py +0 -0
  110. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/serving.py +0 -0
  111. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/tag.py +0 -0
  112. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/workflow.py +0 -0
  113. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/secrets.py +0 -0
  114. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/types.py +0 -0
  115. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/config.py +0 -0
  116. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/__init__.py +0 -0
  117. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/data_types.py +0 -0
  118. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/infer.py +0 -0
  119. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/spark.py +0 -0
  120. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/to_pandas.py +0 -0
  121. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/__init__.py +0 -0
  122. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/alibaba_oss.py +0 -0
  123. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/base.py +0 -0
  124. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/datastore.py +0 -0
  125. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/datastore_profile.py +0 -0
  126. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/dbfs_store.py +0 -0
  127. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/filestore.py +0 -0
  128. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/google_cloud_storage.py +0 -0
  129. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/hdfs.py +0 -0
  130. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/inmem.py +0 -0
  131. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/__init__.py +0 -0
  132. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
  133. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/mock_model_provider.py +0 -0
  134. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/model_provider.py +0 -0
  135. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/openai_provider.py +0 -0
  136. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/redis.py +0 -0
  137. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/remote_client.py +0 -0
  138. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/s3.py +0 -0
  139. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/snowflake_utils.py +0 -0
  140. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/sources.py +0 -0
  141. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/spark_udf.py +0 -0
  142. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/spark_utils.py +0 -0
  143. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/store_resources.py +0 -0
  144. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/storeytargets.py +0 -0
  145. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/targets.py +0 -0
  146. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/utils.py +0 -0
  147. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/v3io.py +0 -0
  148. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/vectorstore.py +0 -0
  149. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/wasbfs/__init__.py +0 -0
  150. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/wasbfs/fs.py +0 -0
  151. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/__init__.py +0 -0
  152. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/auth_utils.py +0 -0
  153. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/base.py +0 -0
  154. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/factory.py +0 -0
  155. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/httpdb.py +0 -0
  156. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/nopdb.py +0 -0
  157. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/errors.py +0 -0
  158. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/execution.py +0 -0
  159. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/__init__.py +0 -0
  160. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/api.py +0 -0
  161. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/common.py +0 -0
  162. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/feature_set.py +0 -0
  163. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/feature_vector.py +0 -0
  164. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/feature_vector_utils.py +0 -0
  165. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/ingestion.py +0 -0
  166. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/__init__.py +0 -0
  167. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/base.py +0 -0
  168. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  169. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/job.py +0 -0
  170. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  171. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  172. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  173. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/steps.py +0 -0
  174. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/features.py +0 -0
  175. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/__init__.py +0 -0
  176. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/__init__.py +0 -0
  177. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  178. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  179. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/model_handler.py +0 -0
  180. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/plan.py +0 -0
  181. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/producer.py +0 -0
  182. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/utils.py +0 -0
  183. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  184. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  185. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  186. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  187. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  188. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  189. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/utils.py +0 -0
  190. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  191. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  192. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  193. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  194. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  195. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  196. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  197. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plan.py +0 -0
  198. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  199. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  200. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  201. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  202. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  203. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  204. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/producer.py +0 -0
  205. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/utils.py +0 -0
  206. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  207. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  208. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/huggingface/__init__.py +0 -0
  209. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/huggingface/model_server.py +0 -0
  210. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/__init__.py +0 -0
  211. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  212. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  213. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  214. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  215. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  216. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  217. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  218. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  219. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  220. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/model_server.py +0 -0
  221. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/utils.py +0 -0
  222. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/__init__.py +0 -0
  223. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/dataset.py +0 -0
  224. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  225. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/model_handler.py +0 -0
  226. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/model_server.py +0 -0
  227. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/parallel_coordinates.py +0 -0
  228. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/__init__.py +0 -0
  229. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  230. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  231. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  232. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  233. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  234. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  235. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  236. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  237. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/model_server.py +0 -0
  238. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/utils.py +0 -0
  239. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/__init__.py +0 -0
  240. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/estimator.py +0 -0
  241. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/metric.py +0 -0
  242. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  243. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  244. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  245. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/utils.py +0 -0
  246. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  247. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  248. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  249. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  250. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  251. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  252. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  253. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  254. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/utils.py +0 -0
  255. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/__init__.py +0 -0
  256. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  257. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  258. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/utils.py +0 -0
  259. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/hub/__init__.py +0 -0
  260. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/hub/module.py +0 -0
  261. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/k8s_utils.py +0 -0
  262. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/__init__.py +0 -0
  263. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/base.py +0 -0
  264. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/client.py +0 -0
  265. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/factory.py +0 -0
  266. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/local.py +0 -0
  267. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/remote.py +0 -0
  268. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/lists.py +0 -0
  269. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model.py +0 -0
  270. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/__init__.py +0 -0
  271. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/api.py +0 -0
  272. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/__init__.py +0 -0
  273. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  274. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/context.py +0 -0
  275. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  276. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  277. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  278. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/results.py +0 -0
  279. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/controller.py +0 -0
  280. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/__init__.py +0 -0
  281. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/_schedules.py +0 -0
  282. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/_stats.py +0 -0
  283. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  284. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  285. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  286. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  287. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  288. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  289. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  290. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  291. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/writer_graph_steps.py +0 -0
  292. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  293. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  294. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
  295. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/features_drift_table.py +0 -0
  296. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/helpers.py +0 -0
  297. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  298. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  299. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/stream_processing.py +0 -0
  300. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/writer.py +0 -0
  301. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/__init__.py +0 -0
  302. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/context_handler.py +0 -0
  303. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/errors.py +0 -0
  304. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packager.py +0 -0
  305. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/__init__.py +0 -0
  306. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/default_packager.py +0 -0
  307. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/numpy_packagers.py +0 -0
  308. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/pandas_packagers.py +0 -0
  309. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  310. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers_manager.py +0 -0
  311. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/__init__.py +0 -0
  312. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_archiver.py +0 -0
  313. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_formatter.py +0 -0
  314. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_pickler.py +0 -0
  315. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_supported_format.py +0 -0
  316. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/log_hint_utils.py +0 -0
  317. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/type_hint_utils.py +0 -0
  318. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/platforms/__init__.py +0 -0
  319. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/platforms/iguazio.py +0 -0
  320. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/__init__.py +0 -0
  321. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/operations.py +0 -0
  322. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/pipelines.py +0 -0
  323. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/render.py +0 -0
  324. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/__init__.py +0 -0
  325. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/base.py +0 -0
  326. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/daskjob.py +0 -0
  327. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  328. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  329. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  330. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  331. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/funcdoc.py +0 -0
  332. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/function_reference.py +0 -0
  333. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/generators.py +0 -0
  334. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/kubejob.py +0 -0
  335. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/local.py +0 -0
  336. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mounts.py +0 -0
  337. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mpijob/__init__.py +0 -0
  338. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mpijob/abstract.py +0 -0
  339. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mpijob/v1.py +0 -0
  340. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/__init__.py +0 -0
  341. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  342. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  343. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  344. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/function.py +0 -0
  345. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  346. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/serving.py +0 -0
  347. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/pod.py +0 -0
  348. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/remotesparkjob.py +0 -0
  349. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  350. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  351. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/utils.py +0 -0
  352. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/secrets.py +0 -0
  353. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/__init__.py +0 -0
  354. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/merger.py +0 -0
  355. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/remote.py +0 -0
  356. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/routers.py +0 -0
  357. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/serving_wrapper.py +0 -0
  358. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/states.py +0 -0
  359. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/system_steps.py +0 -0
  360. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/utils.py +0 -0
  361. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/v1_serving.py +0 -0
  362. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/v2_serving.py +0 -0
  363. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/__init__.py +0 -0
  364. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/tracker.py +0 -0
  365. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/tracker_manager.py +0 -0
  366. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/trackers/__init__.py +0 -0
  367. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  368. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/__init__.py +0 -0
  369. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/async_http.py +0 -0
  370. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/azure_vault.py +0 -0
  371. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/clones.py +0 -0
  372. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/condition_evaluator.py +0 -0
  373. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/http.py +0 -0
  374. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/logger.py +0 -0
  375. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/__init__.py +0 -0
  376. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/__init__.py +0 -0
  377. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/base.py +0 -0
  378. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/console.py +0 -0
  379. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/git.py +0 -0
  380. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/ipython.py +0 -0
  381. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/mail.py +0 -0
  382. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/slack.py +0 -0
  383. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/webhook.py +0 -0
  384. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification_pusher.py +0 -0
  385. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/regex.py +0 -0
  386. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/retryer.py +0 -0
  387. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/singleton.py +0 -0
  388. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/v3io_clients.py +0 -0
  389. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/vault.py +0 -0
  390. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/version/__init__.py +0 -0
  391. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/version/version.py +0 -0
  392. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/dependency_links.txt +0 -0
  393. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/entry_points.txt +0 -0
  394. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/not-zip-safe +0 -0
  395. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/top_level.txt +0 -0
  396. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/packages.py +0 -0
  397. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/pyproject.toml +0 -0
  398. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/requirements.txt +0 -0
  399. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/setup.cfg +0 -0
  400. {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc33
3
+ Version: 1.10.0rc35
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -105,7 +105,7 @@ Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
105
105
  Provides-Extra: dev-postgres
106
106
  Requires-Dist: pytest-mock-resources[postgres]~=2.12; extra == "dev-postgres"
107
107
  Provides-Extra: kfp18
108
- Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]>=0.5.7; extra == "kfp18"
108
+ Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8; extra == "kfp18"
109
109
  Provides-Extra: api
110
110
  Requires-Dist: uvicorn~=0.32.1; extra == "api"
111
111
  Requires-Dist: dask-kubernetes~=0.11.0; extra == "api"
@@ -87,7 +87,7 @@ def extra_requirements() -> dict[str, list[str]]:
87
87
  extras_require.update(
88
88
  {
89
89
  "dev-postgres": ["pytest-mock-resources[postgres]~=2.12"],
90
- "kfp18": ["mlrun_pipelines_kfp_v1_8[kfp]>=0.5.7"],
90
+ "kfp18": ["mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8"],
91
91
  # TODO uncomment when KFP 1.8 support is removed
92
92
  # "kfp2": ["mlrun_pipelines_kfp_v2[kfp]>=0.5.0 ; python_version >= '3.11'"],
93
93
  "api": api_deps,
@@ -154,6 +154,7 @@ from .model_monitoring import (
154
154
  ModelEndpointSchema,
155
155
  ModelEndpointSpec,
156
156
  ModelEndpointStatus,
157
+ ModelMonitoringInfraLabel,
157
158
  ModelMonitoringMode,
158
159
  MonitoringFunctionNames,
159
160
  TSDBTarget,
@@ -30,6 +30,7 @@ from .constants import (
30
30
  ModelEndpointMonitoringMetricType,
31
31
  ModelEndpointSchema,
32
32
  ModelMonitoringAppLabel,
33
+ ModelMonitoringInfraLabel,
33
34
  ModelMonitoringMode,
34
35
  MonitoringFunctionNames,
35
36
  PredictionsQueryConstants,
@@ -234,7 +234,18 @@ class AzureBlobStore(DataStore):
234
234
  # if called without passing dataitem - like in fset.purge_targets,
235
235
  # key will include schema.
236
236
  if not schema:
237
- key = Path(self.endpoint, key).as_posix()
237
+ # For wasbs/wasb, the filesystem is scoped to the container, so we need to use
238
+ # the container name as the base path, not the hostname endpoint.
239
+ # For az://, endpoint already contains the container name.
240
+ if self.kind in ["wasbs", "wasb"]:
241
+ container = self.storage_options.get("container")
242
+ if container:
243
+ key = Path(container, key).as_posix()
244
+ else:
245
+ # If no container found, use endpoint (might be hostname, but better than nothing)
246
+ key = Path(self.endpoint, key).as_posix()
247
+ else:
248
+ key = Path(self.endpoint, key).as_posix()
238
249
  return key
239
250
 
240
251
  def upload(self, key, src_path):
@@ -332,36 +332,11 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
332
332
  project=project,
333
333
  ) as (endpoints_output, application_schedules):
334
334
 
335
- def call_do_tracking(event: Optional[dict] = None):
335
+ def call_do_tracking(
336
+ monitoring_context: mm_context.MonitoringApplicationContext,
337
+ ):
336
338
  nonlocal endpoints_output
337
339
 
338
- if event is None:
339
- event = {}
340
- monitoring_context = (
341
- mm_context.MonitoringApplicationContext._from_ml_ctx(
342
- event=event,
343
- application_name=application_name,
344
- context=context,
345
- project=project,
346
- sample_df=sample_data,
347
- feature_stats=feature_stats,
348
- )
349
- )
350
-
351
- if (
352
- monitoring_context.endpoint_id
353
- and monitoring_context.sample_df.empty
354
- ):
355
- # The current sample is empty
356
- context.logger.warning(
357
- "No sample data available for tracking",
358
- application_name=application_name,
359
- endpoint_id=monitoring_context.endpoint_id,
360
- start_time=monitoring_context.start_infer_time,
361
- end_time=monitoring_context.end_infer_time,
362
- )
363
- return
364
-
365
340
  result = self.do_tracking(monitoring_context)
366
341
  endpoints_output[monitoring_context.endpoint_id].append(
367
342
  (monitoring_context, result)
@@ -369,7 +344,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
369
344
  return result
370
345
 
371
346
  if endpoints is not None:
372
- resolved_endpoints = self._handle_endpoints_type_evaluate(
347
+ resolved_endpoints = self._validate_endpoints(
373
348
  project=project, endpoints=endpoints
374
349
  )
375
350
  if (
@@ -391,26 +366,24 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
391
366
  application_schedules=application_schedules,
392
367
  )
393
368
  for endpoint_name, endpoint_id in resolved_endpoints:
394
- for window_start, window_end in self._window_generator(
369
+ for monitoring_ctx in self._window_generator(
395
370
  start=start,
396
371
  end=end,
397
372
  base_period=base_period,
398
373
  application_schedules=application_schedules,
399
374
  endpoint_id=endpoint_id,
375
+ endpoint_name=endpoint_name,
400
376
  application_name=application_name,
401
377
  existing_data_handling=existing_data_handling,
378
+ sample_data=sample_data,
379
+ context=context,
380
+ project=project,
402
381
  ):
403
- result = call_do_tracking(
404
- event={
405
- mm_constants.ApplicationEvent.ENDPOINT_NAME: endpoint_name,
406
- mm_constants.ApplicationEvent.ENDPOINT_ID: endpoint_id,
407
- mm_constants.ApplicationEvent.START_INFER_TIME: window_start,
408
- mm_constants.ApplicationEvent.END_INFER_TIME: window_end,
409
- }
410
- )
382
+ result = call_do_tracking(monitoring_ctx)
411
383
  result_key = (
412
- f"{endpoint_name}-{endpoint_id}_{window_start.isoformat()}_{window_end.isoformat()}"
413
- if window_start and window_end
384
+ f"{endpoint_name}-{endpoint_id}_{monitoring_ctx.start_infer_time.isoformat()}_{monitoring_ctx.end_infer_time.isoformat()}"
385
+ if monitoring_ctx.start_infer_time
386
+ and monitoring_ctx.end_infer_time
414
387
  else f"{endpoint_name}-{endpoint_id}"
415
388
  )
416
389
 
@@ -418,10 +391,38 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
418
391
  result_key, self._flatten_data_result(result)
419
392
  )
420
393
  else:
421
- return self._flatten_data_result(call_do_tracking())
394
+ result = call_do_tracking(
395
+ mm_context.MonitoringApplicationContext._from_ml_ctx(
396
+ context=context,
397
+ project=project,
398
+ application_name=application_name,
399
+ event={},
400
+ sample_df=sample_data,
401
+ feature_stats=feature_stats,
402
+ )
403
+ )
404
+ return self._flatten_data_result(result)
422
405
 
423
406
  @staticmethod
424
- def _handle_endpoints_type_evaluate(
407
+ def _check_endpoints_first_request(
408
+ endpoints: list[mlrun.common.schemas.ModelEndpoint],
409
+ ) -> None:
410
+ """Make sure that all the endpoints have had at least one request"""
411
+ endpoints_no_requests = [
412
+ (endpoint.metadata.name, endpoint.metadata.uid)
413
+ for endpoint in endpoints
414
+ if not endpoint.status.first_request
415
+ ]
416
+ if endpoints_no_requests:
417
+ raise mlrun.errors.MLRunValueError(
418
+ "The following model endpoints have not had any requests yet and "
419
+ "have no data, cannot run the model monitoring application on them: "
420
+ f"{endpoints_no_requests}"
421
+ )
422
+
423
+ @classmethod
424
+ def _validate_endpoints(
425
+ cls,
425
426
  project: "mlrun.MlrunProject",
426
427
  endpoints: Union[
427
428
  list[tuple[str, str]], list[list[str]], list[str], Literal["all"]
@@ -457,6 +458,9 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
457
458
  endpoints_list = project.list_model_endpoints(
458
459
  names=endpoint_names, latest_only=True
459
460
  ).endpoints
461
+
462
+ cls._check_endpoints_first_request(endpoints_list)
463
+
460
464
  if endpoints_list:
461
465
  list_endpoints_result = [
462
466
  (endpoint.metadata.name, endpoint.metadata.uid)
@@ -596,13 +600,51 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
596
600
  application_schedules: Optional[
597
601
  mm_schedules.ModelMonitoringSchedulesFileApplication
598
602
  ],
603
+ endpoint_name: str,
599
604
  endpoint_id: str,
600
605
  application_name: str,
601
606
  existing_data_handling: ExistingDataHandling,
602
- ) -> Iterator[tuple[Optional[datetime], Optional[datetime]]]:
607
+ context: "mlrun.MLClientCtx",
608
+ project: "mlrun.MlrunProject",
609
+ sample_data: Optional[pd.DataFrame],
610
+ ) -> Iterator[mm_context.MonitoringApplicationContext]:
611
+ def yield_monitoring_ctx(
612
+ window_start: Optional[datetime], window_end: Optional[datetime]
613
+ ) -> Iterator[mm_context.MonitoringApplicationContext]:
614
+ ctx = mm_context.MonitoringApplicationContext._from_ml_ctx(
615
+ event={
616
+ mm_constants.ApplicationEvent.ENDPOINT_NAME: endpoint_name,
617
+ mm_constants.ApplicationEvent.ENDPOINT_ID: endpoint_id,
618
+ mm_constants.ApplicationEvent.START_INFER_TIME: window_start,
619
+ mm_constants.ApplicationEvent.END_INFER_TIME: window_end,
620
+ },
621
+ application_name=application_name,
622
+ context=context,
623
+ project=project,
624
+ sample_df=sample_data,
625
+ )
626
+
627
+ if ctx.sample_df.empty:
628
+ # The current sample is empty
629
+ context.logger.debug(
630
+ "No sample data available for tracking",
631
+ application_name=application_name,
632
+ endpoint_id=ctx.endpoint_id,
633
+ start_time=ctx.start_infer_time,
634
+ end_time=ctx.end_infer_time,
635
+ )
636
+ return
637
+
638
+ yield ctx
639
+
640
+ if application_schedules and window_end:
641
+ application_schedules.update_endpoint_last_analyzed(
642
+ endpoint_uid=endpoint_id, last_analyzed=window_end
643
+ )
644
+
603
645
  if start is None or end is None:
604
646
  # A single window based on the `sample_data` input - see `_handler`.
605
- yield None, None
647
+ yield from yield_monitoring_ctx(None, None)
606
648
  return
607
649
 
608
650
  start_dt = datetime.fromisoformat(start)
@@ -630,11 +672,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
630
672
  )
631
673
 
632
674
  if base_period is None:
633
- yield start_dt, end_dt
634
- if application_schedules:
635
- application_schedules.update_endpoint_last_analyzed(
636
- endpoint_uid=endpoint_id, last_analyzed=end_dt
637
- )
675
+ yield from yield_monitoring_ctx(start_dt, end_dt)
638
676
  return
639
677
 
640
678
  window_length = cls._validate_and_get_window_length(
@@ -644,11 +682,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
644
682
  current_start_time = start_dt
645
683
  while current_start_time < end_dt:
646
684
  current_end_time = min(current_start_time + window_length, end_dt)
647
- yield current_start_time, current_end_time
648
- if application_schedules:
649
- application_schedules.update_endpoint_last_analyzed(
650
- endpoint_uid=endpoint_id, last_analyzed=current_end_time
651
- )
685
+ yield from yield_monitoring_ctx(current_start_time, current_end_time)
652
686
  current_start_time = current_end_time
653
687
 
654
688
  @classmethod
@@ -2574,7 +2574,7 @@ class MlrunProject(ModelObj):
2574
2574
  *,
2575
2575
  deploy_histogram_data_drift_app: bool = True,
2576
2576
  wait_for_deployment: bool = False,
2577
- fetch_credentials_from_sys_config: bool = False,
2577
+ fetch_credentials_from_sys_config: bool = False, # deprecated
2578
2578
  ) -> None:
2579
2579
  """
2580
2580
  Deploy model monitoring application controller, writer and stream functions.
@@ -2609,14 +2609,20 @@ class MlrunProject(ModelObj):
2609
2609
  :param wait_for_deployment: If true, return only after the deployment is done on the backend.
2610
2610
  Otherwise, deploy the model monitoring infrastructure on the
2611
2611
  background, including the histogram data drift app if selected.
2612
- :param fetch_credentials_from_sys_config: If true, fetch the credentials from the system configuration.
2612
+ :param fetch_credentials_from_sys_config: Deprecated. If true, fetch the credentials from the project
2613
+ configuration.
2613
2614
  """
2615
+ if fetch_credentials_from_sys_config:
2616
+ warnings.warn(
2617
+ "`fetch_credentials_from_sys_config` is deprecated in 1.10.0 and will be removed in 1.12.0.",
2618
+ # TODO: Remove this in 1.12.0
2619
+ FutureWarning,
2620
+ )
2614
2621
  if base_period < 10:
2615
2622
  logger.warn(
2616
2623
  "enable_model_monitoring: 'base_period' < 10 minutes is not supported in production environments",
2617
2624
  project=self.name,
2618
2625
  )
2619
-
2620
2626
  db = mlrun.db.get_run_db(secrets=self._secrets)
2621
2627
  db.enable_model_monitoring(
2622
2628
  project=self.name,
@@ -17,6 +17,7 @@ import json
17
17
  import os
18
18
  import pathlib
19
19
  import socket
20
+ import sys
20
21
  import tempfile
21
22
  import time
22
23
  import typing
@@ -117,14 +118,13 @@ def function_to_module(code="", workdir=None, secrets=None, silent=False):
117
118
  raise ValueError("nothing to run, specify command or function")
118
119
 
119
120
  command = os.path.join(workdir or "", command)
120
- path = Path(command)
121
- mod_name = path.name
122
- if path.suffix:
123
- mod_name = mod_name[: -len(path.suffix)]
121
+ mod_name = mlrun.utils.helpers.get_module_name_from_path(command)
124
122
  spec = imputil.spec_from_file_location(mod_name, command)
125
123
  if spec is None:
126
124
  raise OSError(f"cannot import from {command!r}")
127
125
  mod = imputil.module_from_spec(spec)
126
+ # add to system modules, which can be necessary when running in a MockServer (ML-10937)
127
+ sys.modules[mod_name] = mod
128
128
  spec.loader.exec_module(mod)
129
129
 
130
130
  return mod
@@ -413,21 +413,29 @@ def import_function_to_dict(
413
413
  with open(code_file, "wb") as fp:
414
414
  fp.write(code)
415
415
  elif cmd:
416
- if not path.isfile(code_file):
417
- slash_index = url.rfind("/")
418
- if slash_index < 0:
419
- raise ValueError(f"no file in exec path (spec.command={code_file})")
420
- base_dir = os.path.normpath(url[: slash_index + 1])
421
- candidate_path = _ensure_path_confined_to_base_dir(
422
- base_directory=base_dir,
423
- relative_path=code_file,
424
- error_message_on_escape=f"exec file spec.command={code_file} is outside of allowed directory",
425
- )
426
- if path.isfile(candidate_path):
427
- raise ValueError(
428
- f"exec file spec.command={code_file} is relative, change working dir"
429
- )
416
+ slash_index = url.rfind("/")
417
+ if slash_index < 0:
418
+ raise ValueError(f"no file in exec path (spec.command={code_file})")
419
+ base_dir = os.path.normpath(url[: slash_index + 1])
420
+
421
+ # Validate and resolve the candidate path before checking existence
422
+ candidate_path = _ensure_path_confined_to_base_dir(
423
+ base_directory=base_dir,
424
+ relative_path=code_file,
425
+ error_message_on_escape=(
426
+ f"exec file spec.command={code_file} is outside of allowed directory"
427
+ ),
428
+ )
429
+
430
+ # Only now it's safe to check file existence
431
+ if not path.isfile(candidate_path):
430
432
  raise ValueError(f"no file in exec path (spec.command={code_file})")
433
+
434
+ # Check that the path is absolute
435
+ if not os.path.isabs(code_file):
436
+ raise ValueError(
437
+ f"exec file spec.command={code_file} is relative, it must be absolute. Change working dir"
438
+ )
431
439
  else:
432
440
  raise ValueError("command or code not specified in function spec")
433
441
 
@@ -568,6 +568,12 @@ class ApplicationRuntime(RemoteRuntime):
568
568
  "Authentication credentials not provided"
569
569
  )
570
570
 
571
+ if direct_port_access and port:
572
+ logger.warning(
573
+ "Ignoring 'port' because 'direct_port_access' is enabled. "
574
+ "The 'port' setting is only applicable when 'direct_port_access' is disabled."
575
+ )
576
+
571
577
  ports = (
572
578
  port or self.spec.internal_application_port if direct_port_access else []
573
579
  )
@@ -20,7 +20,6 @@ import copy
20
20
  import importlib
21
21
  import json
22
22
  import os
23
- import pathlib
24
23
  import socket
25
24
  import traceback
26
25
  import uuid
@@ -51,7 +50,7 @@ from ..datastore.store_resources import ResourceCache
51
50
  from ..errors import MLRunInvalidArgumentError
52
51
  from ..execution import MLClientCtx
53
52
  from ..model import ModelObj
54
- from ..utils import get_caller_globals
53
+ from ..utils import get_caller_globals, get_module_name_from_path
55
54
  from .states import (
56
55
  FlowStep,
57
56
  MonitoredStep,
@@ -598,17 +597,7 @@ async def async_execute_graph(
598
597
  # gets set in local flow and not just in the remote pod
599
598
  source_file_path = spec.get("filename", None)
600
599
  if source_file_path:
601
- source_file_path_object = pathlib.Path(source_file_path).resolve()
602
- current_dir_path_object = pathlib.Path(".").resolve()
603
- if not source_file_path_object.is_relative_to(current_dir_path_object):
604
- raise mlrun.errors.MLRunRuntimeError(
605
- f"Source file path '{source_file_path}' is not under the current working directory "
606
- f"(which is required when running with local=True)"
607
- )
608
- relative_path_to_source_file = source_file_path_object.relative_to(
609
- current_dir_path_object
610
- )
611
- modname = ".".join(relative_path_to_source_file.with_suffix("").parts)
600
+ modname = get_module_name_from_path(source_file_path)
612
601
 
613
602
  namespace = {}
614
603
  if modname:
@@ -0,0 +1,62 @@
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 typing import Union
16
+
17
+ import storey
18
+
19
+ import mlrun.errors
20
+
21
+
22
+ class ChoiceByField(storey.Choice):
23
+ """
24
+ Selects downstream outlets to route each event based on a predetermined field.
25
+ :param field_name: event field name that contains the step name or names of the desired outlet or outlets
26
+ """
27
+
28
+ def __init__(self, field_name: Union[str, list[str]], **kwargs):
29
+ self.field_name = field_name
30
+ super().__init__(**kwargs)
31
+
32
+ def select_outlets(self, event):
33
+ # Case 1: Missing field
34
+ if self.field_name not in event:
35
+ raise mlrun.errors.MLRunRuntimeError(
36
+ f"Field '{self.field_name}' is not contained in the event keys {list(event.keys())}."
37
+ )
38
+
39
+ outlet = event[self.field_name]
40
+
41
+ # Case 2: Field exists but is None
42
+ if outlet is None:
43
+ raise mlrun.errors.MLRunInvalidArgumentError(
44
+ f"Field '{self.field_name}' exists but its value is None."
45
+ )
46
+
47
+ # Case 3: Invalid type
48
+ if not isinstance(outlet, (str, list, tuple)):
49
+ raise mlrun.errors.MLRunInvalidArgumentTypeError(
50
+ f"Field '{self.field_name}' must be a string or list of strings "
51
+ f"but is instead of type '{type(outlet).__name__}'."
52
+ )
53
+
54
+ outlets = [outlet] if isinstance(outlet, str) else outlet
55
+
56
+ # Case 4: Empty list or tuple
57
+ if not outlets:
58
+ raise mlrun.errors.MLRunRuntimeError(
59
+ f"The value of the key '{self.field_name}' cannot be an empty {type(outlets).__name__}."
60
+ )
61
+
62
+ return outlets
@@ -21,6 +21,7 @@ import inspect
21
21
  import itertools
22
22
  import json
23
23
  import os
24
+ import pathlib
24
25
  import re
25
26
  import string
26
27
  import sys
@@ -923,11 +924,23 @@ def enrich_image_url(
923
924
  )
924
925
  mlrun_version = config.images_tag or client_version or server_version
925
926
  tag = mlrun_version or ""
926
- tag += resolve_image_tag_suffix(
927
- mlrun_version=mlrun_version,
928
- python_version=client_python_version,
927
+
928
+ # starting mlrun 1.10.0-rc0 we want to enrich the kfp image with the python version
929
+ # e.g for 1.9 we have a single mlrun-kfp image that supports only python 3.9
930
+ enrich_kfp_python_version = (
931
+ "mlrun-kfp" in image_url
932
+ and mlrun_version
933
+ and semver.VersionInfo.is_valid(mlrun_version)
934
+ and semver.VersionInfo.parse(mlrun_version)
935
+ >= semver.VersionInfo.parse("1.10.0-rc0")
929
936
  )
930
937
 
938
+ if "mlrun-kfp" not in image_url or enrich_kfp_python_version:
939
+ tag += resolve_image_tag_suffix(
940
+ mlrun_version=mlrun_version,
941
+ python_version=client_python_version,
942
+ )
943
+
931
944
  # it's an mlrun image if the repository is mlrun
932
945
  is_mlrun_image = image_url.startswith("mlrun/") or "/mlrun/" in image_url
933
946
  if ":" in image_url:
@@ -2408,3 +2421,17 @@ def set_data_by_path(
2408
2421
  raise mlrun.errors.MLRunInvalidArgumentError(
2409
2422
  "Expected path to be of type str or list of str"
2410
2423
  )
2424
+
2425
+
2426
+ def get_module_name_from_path(source_file_path: str) -> str:
2427
+ source_file_path_object = pathlib.Path(source_file_path).resolve()
2428
+ current_dir_path_object = pathlib.Path(".").resolve()
2429
+ if not source_file_path_object.is_relative_to(current_dir_path_object):
2430
+ raise mlrun.errors.MLRunRuntimeError(
2431
+ f"Source file path '{source_file_path}' is not under the current working directory "
2432
+ f"(which is required when running with local=True)"
2433
+ )
2434
+ relative_path_to_source_file = source_file_path_object.relative_to(
2435
+ current_dir_path_object
2436
+ )
2437
+ return ".".join(relative_path_to_source_file.with_suffix("").parts)
@@ -0,0 +1,4 @@
1
+ {
2
+ "git_commit": "6ab7c319ab2182ce9f0594c1a6c0be3c98175ebe",
3
+ "version": "1.10.0-rc35"
4
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc33
3
+ Version: 1.10.0rc35
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -105,7 +105,7 @@ Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
105
105
  Provides-Extra: dev-postgres
106
106
  Requires-Dist: pytest-mock-resources[postgres]~=2.12; extra == "dev-postgres"
107
107
  Provides-Extra: kfp18
108
- Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]>=0.5.7; extra == "kfp18"
108
+ Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8; extra == "kfp18"
109
109
  Provides-Extra: api
110
110
  Requires-Dist: uvicorn~=0.32.1; extra == "api"
111
111
  Requires-Dist: dask-kubernetes~=0.11.0; extra == "api"
@@ -359,6 +359,7 @@ mlrun/serving/routers.py
359
359
  mlrun/serving/server.py
360
360
  mlrun/serving/serving_wrapper.py
361
361
  mlrun/serving/states.py
362
+ mlrun/serving/steps.py
362
363
  mlrun/serving/system_steps.py
363
364
  mlrun/serving/utils.py
364
365
  mlrun/serving/v1_serving.py
@@ -231,7 +231,7 @@ kafka-python~=2.1.0
231
231
  avro~=1.11
232
232
 
233
233
  [kfp18]
234
- mlrun_pipelines_kfp_v1_8[kfp]>=0.5.7
234
+ mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8
235
235
 
236
236
  [mlflow]
237
237
  mlflow~=2.22
@@ -1,4 +0,0 @@
1
- {
2
- "git_commit": "f4d56eca3901844a2deda33bff864e8cf20cf032",
3
- "version": "1.10.0-rc33"
4
- }
File without changes
File without changes
File without changes
File without changes