mlrun 1.10.0rc21__tar.gz → 1.10.0rc22__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 (395) hide show
  1. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/Makefile +11 -0
  2. {mlrun-1.10.0rc21/mlrun.egg-info → mlrun-1.10.0rc22}/PKG-INFO +2 -2
  3. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/llm_prompt.py +11 -10
  4. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/model.py +3 -3
  5. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/auth.py +2 -0
  6. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/db/base.py +9 -0
  7. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/db/httpdb.py +21 -1
  8. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/db/nopdb.py +8 -0
  9. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/execution.py +52 -10
  10. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/__init__.py +1 -1
  11. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/base.py +86 -33
  12. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/_schedules.py +21 -0
  13. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/base.py +14 -5
  14. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +4 -5
  15. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +53 -20
  16. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +39 -1
  17. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/projects/project.py +50 -7
  18. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/states.py +169 -16
  19. mlrun-1.10.0rc22/mlrun/utils/version/version.json +4 -0
  20. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22/mlrun.egg-info}/PKG-INFO +2 -2
  21. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun.egg-info/requires.txt +1 -1
  22. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/requirements.txt +1 -1
  23. mlrun-1.10.0rc21/mlrun/utils/version/version.json +0 -4
  24. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/LICENSE +0 -0
  25. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/MANIFEST.in +0 -0
  26. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/README.md +0 -0
  27. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/dependencies.py +0 -0
  28. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/dev-requirements.txt +0 -0
  29. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/dockerfiles/mlrun-api/requirements.txt +0 -0
  30. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/archive.zip +0 -0
  31. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/function.py +0 -0
  32. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/handler.py +0 -0
  33. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/infile.txt +0 -0
  34. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/load-project.ipynb +0 -0
  35. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_basics.ipynb +0 -0
  36. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_dask.ipynb +0 -0
  37. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_db.ipynb +0 -0
  38. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_export_import.ipynb +0 -0
  39. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_jobs.ipynb +0 -0
  40. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_sparkk8s.ipynb +0 -0
  41. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/mlrun_vault.ipynb +0 -0
  42. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/model.bst +0 -0
  43. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/new-project.ipynb +0 -0
  44. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/nulltst.py +0 -0
  45. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/params.csv +0 -0
  46. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/remote-spark.ipynb +0 -0
  47. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/secrets.txt +0 -0
  48. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/spark-function.py +0 -0
  49. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/training.py +0 -0
  50. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/v2_model_server.ipynb +0 -0
  51. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/examples/xgb_serving.ipynb +0 -0
  52. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/extras-requirements.txt +0 -0
  53. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/__init__.py +0 -0
  54. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/__main__.py +0 -0
  55. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/alerts/__init__.py +0 -0
  56. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/alerts/alert.py +0 -0
  57. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/__init__.py +0 -0
  58. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/base.py +0 -0
  59. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/dataset.py +0 -0
  60. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/document.py +0 -0
  61. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/helpers.py +0 -0
  62. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/manager.py +0 -0
  63. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/artifacts/plots.py +0 -0
  64. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/__init__.py +0 -0
  65. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/constants.py +0 -0
  66. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/db/__init__.py +0 -0
  67. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/db/dialects.py +0 -0
  68. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/__init__.py +0 -0
  69. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/artifact.py +0 -0
  70. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/base.py +0 -0
  71. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/feature_set.py +0 -0
  72. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/function.py +0 -0
  73. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/model_endpoint.py +0 -0
  74. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/pipeline.py +0 -0
  75. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/project.py +0 -0
  76. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/formatters/run.py +0 -0
  77. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/helpers.py +0 -0
  78. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/model_monitoring/__init__.py +0 -0
  79. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/model_monitoring/helpers.py +0 -0
  80. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/runtimes/constants.py +0 -0
  81. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/__init__.py +0 -0
  82. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/alert.py +0 -0
  83. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/api_gateway.py +0 -0
  84. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/artifact.py +0 -0
  85. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/background_task.py +0 -0
  86. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/client_spec.py +0 -0
  87. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/clusterization_spec.py +0 -0
  88. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/common.py +0 -0
  89. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/constants.py +0 -0
  90. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/datastore_profile.py +0 -0
  91. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/events.py +0 -0
  92. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/feature_store.py +0 -0
  93. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/frontend_spec.py +0 -0
  94. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/function.py +0 -0
  95. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/http.py +0 -0
  96. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/hub.py +0 -0
  97. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/k8s.py +0 -0
  98. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/memory_reports.py +0 -0
  99. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  100. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
  101. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  102. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  103. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
  104. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/notification.py +0 -0
  105. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/object.py +0 -0
  106. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/pagination.py +0 -0
  107. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/partition.py +0 -0
  108. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/pipeline.py +0 -0
  109. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/project.py +0 -0
  110. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/regex.py +0 -0
  111. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/runs.py +0 -0
  112. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/runtime_resource.py +0 -0
  113. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/schedule.py +0 -0
  114. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/secret.py +0 -0
  115. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/serving.py +0 -0
  116. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/tag.py +0 -0
  117. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/schemas/workflow.py +0 -0
  118. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/secrets.py +0 -0
  119. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/common/types.py +0 -0
  120. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/config.py +0 -0
  121. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/data_types/__init__.py +0 -0
  122. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/data_types/data_types.py +0 -0
  123. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/data_types/infer.py +0 -0
  124. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/data_types/spark.py +0 -0
  125. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/data_types/to_pandas.py +0 -0
  126. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/__init__.py +0 -0
  127. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/alibaba_oss.py +0 -0
  128. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/azure_blob.py +0 -0
  129. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/base.py +0 -0
  130. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/datastore.py +0 -0
  131. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/datastore_profile.py +0 -0
  132. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/dbfs_store.py +0 -0
  133. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/filestore.py +0 -0
  134. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/google_cloud_storage.py +0 -0
  135. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/hdfs.py +0 -0
  136. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/inmem.py +0 -0
  137. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/model_provider/__init__.py +0 -0
  138. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
  139. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/model_provider/model_provider.py +0 -0
  140. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/model_provider/openai_provider.py +0 -0
  141. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/redis.py +0 -0
  142. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/remote_client.py +0 -0
  143. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/s3.py +0 -0
  144. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/snowflake_utils.py +0 -0
  145. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/sources.py +0 -0
  146. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/spark_udf.py +0 -0
  147. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/spark_utils.py +0 -0
  148. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/store_resources.py +0 -0
  149. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/storeytargets.py +0 -0
  150. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/targets.py +0 -0
  151. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/utils.py +0 -0
  152. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/v3io.py +0 -0
  153. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/vectorstore.py +0 -0
  154. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/wasbfs/__init__.py +0 -0
  155. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/datastore/wasbfs/fs.py +0 -0
  156. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/db/__init__.py +0 -0
  157. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/db/auth_utils.py +0 -0
  158. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/db/factory.py +0 -0
  159. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/errors.py +0 -0
  160. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/__init__.py +0 -0
  161. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/api.py +0 -0
  162. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/common.py +0 -0
  163. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/feature_set.py +0 -0
  164. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/feature_vector.py +0 -0
  165. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/feature_vector_utils.py +0 -0
  166. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/ingestion.py +0 -0
  167. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/__init__.py +0 -0
  168. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/base.py +0 -0
  169. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  170. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/job.py +0 -0
  171. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  172. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  173. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  174. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/feature_store/steps.py +0 -0
  175. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/features.py +0 -0
  176. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/__init__.py +0 -0
  177. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/__init__.py +0 -0
  178. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  179. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  180. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/model_handler.py +0 -0
  181. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/plan.py +0 -0
  182. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/producer.py +0 -0
  183. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_common/utils.py +0 -0
  184. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  185. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  186. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  187. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  188. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  189. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  190. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_dl_common/utils.py +0 -0
  191. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  192. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  193. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  194. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  195. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  196. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  197. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  198. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plan.py +0 -0
  199. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  200. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  201. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  202. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  203. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  204. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  205. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/producer.py +0 -0
  206. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/_ml_common/utils.py +0 -0
  207. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  208. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  209. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/huggingface/__init__.py +0 -0
  210. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/huggingface/model_server.py +0 -0
  211. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/__init__.py +0 -0
  212. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  213. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  214. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  215. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  216. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  217. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  218. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  219. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  220. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  221. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/model_server.py +0 -0
  222. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/lgbm/utils.py +0 -0
  223. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/onnx/__init__.py +0 -0
  224. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/onnx/dataset.py +0 -0
  225. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  226. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/onnx/model_handler.py +0 -0
  227. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/onnx/model_server.py +0 -0
  228. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/parallel_coordinates.py +0 -0
  229. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/__init__.py +0 -0
  230. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  231. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  232. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  233. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  234. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  235. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  236. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  237. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  238. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/model_server.py +0 -0
  239. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/pytorch/utils.py +0 -0
  240. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/__init__.py +0 -0
  241. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/estimator.py +0 -0
  242. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/metric.py +0 -0
  243. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  244. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  245. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  246. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/sklearn/utils.py +0 -0
  247. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  248. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  249. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  250. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  251. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  252. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  253. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  254. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  255. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/tf_keras/utils.py +0 -0
  256. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/xgboost/__init__.py +0 -0
  257. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  258. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  259. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/frameworks/xgboost/utils.py +0 -0
  260. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/k8s_utils.py +0 -0
  261. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/launcher/__init__.py +0 -0
  262. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/launcher/base.py +0 -0
  263. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/launcher/client.py +0 -0
  264. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/launcher/factory.py +0 -0
  265. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/launcher/local.py +0 -0
  266. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/launcher/remote.py +0 -0
  267. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/lists.py +0 -0
  268. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model.py +0 -0
  269. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/__init__.py +0 -0
  270. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/api.py +0 -0
  271. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  272. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/context.py +0 -0
  273. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  274. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  275. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  276. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/applications/results.py +0 -0
  277. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/controller.py +0 -0
  278. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/__init__.py +0 -0
  279. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/_stats.py +0 -0
  280. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  281. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  282. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  283. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  284. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  285. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  286. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  287. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/features_drift_table.py +0 -0
  288. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/helpers.py +0 -0
  289. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  290. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  291. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/stream_processing.py +0 -0
  292. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/model_monitoring/writer.py +0 -0
  293. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/__init__.py +0 -0
  294. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/context_handler.py +0 -0
  295. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/errors.py +0 -0
  296. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packager.py +0 -0
  297. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packagers/__init__.py +0 -0
  298. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packagers/default_packager.py +0 -0
  299. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packagers/numpy_packagers.py +0 -0
  300. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packagers/pandas_packagers.py +0 -0
  301. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  302. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/packagers_manager.py +0 -0
  303. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/__init__.py +0 -0
  304. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/_archiver.py +0 -0
  305. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/_formatter.py +0 -0
  306. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/_pickler.py +0 -0
  307. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/_supported_format.py +0 -0
  308. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/log_hint_utils.py +0 -0
  309. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/package/utils/type_hint_utils.py +0 -0
  310. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/platforms/__init__.py +0 -0
  311. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/platforms/iguazio.py +0 -0
  312. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/projects/__init__.py +0 -0
  313. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/projects/operations.py +0 -0
  314. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/projects/pipelines.py +0 -0
  315. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/render.py +0 -0
  316. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/run.py +0 -0
  317. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/__init__.py +0 -0
  318. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/base.py +0 -0
  319. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/daskjob.py +0 -0
  320. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  321. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  322. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  323. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  324. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/funcdoc.py +0 -0
  325. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/function_reference.py +0 -0
  326. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/generators.py +0 -0
  327. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/kubejob.py +0 -0
  328. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/local.py +0 -0
  329. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/mounts.py +0 -0
  330. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/mpijob/__init__.py +0 -0
  331. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/mpijob/abstract.py +0 -0
  332. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/mpijob/v1.py +0 -0
  333. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/__init__.py +0 -0
  334. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  335. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  336. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/application/application.py +0 -0
  337. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  338. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/function.py +0 -0
  339. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  340. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/nuclio/serving.py +0 -0
  341. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/pod.py +0 -0
  342. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/remotesparkjob.py +0 -0
  343. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  344. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  345. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/runtimes/utils.py +0 -0
  346. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/secrets.py +0 -0
  347. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/__init__.py +0 -0
  348. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/merger.py +0 -0
  349. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/remote.py +0 -0
  350. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/routers.py +0 -0
  351. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/server.py +0 -0
  352. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/serving_wrapper.py +0 -0
  353. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/system_steps.py +0 -0
  354. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/utils.py +0 -0
  355. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/v1_serving.py +0 -0
  356. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/serving/v2_serving.py +0 -0
  357. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/track/__init__.py +0 -0
  358. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/track/tracker.py +0 -0
  359. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/track/tracker_manager.py +0 -0
  360. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/track/trackers/__init__.py +0 -0
  361. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  362. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/__init__.py +0 -0
  363. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/async_http.py +0 -0
  364. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/azure_vault.py +0 -0
  365. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/clones.py +0 -0
  366. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/condition_evaluator.py +0 -0
  367. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/helpers.py +0 -0
  368. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/http.py +0 -0
  369. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/logger.py +0 -0
  370. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/__init__.py +0 -0
  371. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/__init__.py +0 -0
  372. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/base.py +0 -0
  373. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/console.py +0 -0
  374. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/git.py +0 -0
  375. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/ipython.py +0 -0
  376. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/mail.py +0 -0
  377. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/slack.py +0 -0
  378. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification/webhook.py +0 -0
  379. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/notifications/notification_pusher.py +0 -0
  380. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/regex.py +0 -0
  381. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/retryer.py +0 -0
  382. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/singleton.py +0 -0
  383. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/v3io_clients.py +0 -0
  384. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/vault.py +0 -0
  385. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/version/__init__.py +0 -0
  386. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun/utils/version/version.py +0 -0
  387. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun.egg-info/SOURCES.txt +0 -0
  388. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun.egg-info/dependency_links.txt +0 -0
  389. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun.egg-info/entry_points.txt +0 -0
  390. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun.egg-info/not-zip-safe +0 -0
  391. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/mlrun.egg-info/top_level.txt +0 -0
  392. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/packages.py +0 -0
  393. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/pyproject.toml +0 -0
  394. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/setup.cfg +0 -0
  395. {mlrun-1.10.0rc21 → mlrun-1.10.0rc22}/setup.py +0 -0
@@ -290,6 +290,7 @@ print-docker-images: ## Print all docker images
290
290
  @for image in $(DEFAULT_IMAGES); do \
291
291
  echo $$image ; \
292
292
  done
293
+ @make -C server/go print-docker-images
293
294
 
294
295
 
295
296
  MLRUN_IMAGE_NAME := $(MLRUN_DOCKER_IMAGE_PREFIX)/mlrun
@@ -311,6 +312,7 @@ mlrun: common-image update-version-file ## Build mlrun docker image
311
312
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
312
313
  --build-arg MLRUN_UV_IMAGE=$(MLRUN_UV_IMAGE) \
313
314
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
315
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
314
316
  $(MLRUN_IMAGE_DOCKER_CACHE_FROM_FLAG) \
315
317
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
316
318
  --tag $(MLRUN_IMAGE_NAME_TAGGED) .
@@ -344,6 +346,7 @@ mlrun-kfp: common-image-3.9 update-version-file ## Build mlrun docker image with
344
346
  --build-arg MLRUN_VERSION=$(MLRUN_VERSION) \
345
347
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
346
348
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
349
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
347
350
  $(MLRUN_KFP_IMAGE_DOCKER_CACHE_FROM_FLAG) \
348
351
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
349
352
  --tag $(MLRUN_KFP_IMAGE_NAME):$(MLRUN_DOCKER_TAG)$(MLRUN_PYTHON_VERSION_SUFFIX) .
@@ -386,6 +389,7 @@ mlrun-gpu: update-version-file ## Build mlrun gpu docker image
386
389
  --build-arg MLRUN_GPU_BASE_IMAGE=$(MLRUN_GPU_BASE_IMAGE) \
387
390
  --build-arg MLRUN_UV_IMAGE=$(MLRUN_UV_IMAGE) \
388
391
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
392
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
389
393
  $(MLRUN_GPU_IMAGE_DOCKER_CACHE_FROM_FLAG) \
390
394
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
391
395
  --tag $(MLRUN_GPU_IMAGE_NAME_TAGGED) \
@@ -407,6 +411,7 @@ prebake-mlrun-gpu: ## Build prebake mlrun GPU based docker image
407
411
  --build-arg CUDA_VER=$(MLRUN_GPU_CUDA_VERSION) \
408
412
  --build-arg MLRUN_ANACONDA_PYTHON_DISTRIBUTION=$(MLRUN_ANACONDA_PYTHON_DISTRIBUTION) \
409
413
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
414
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
410
415
  --tag $(MLRUN_GPU_PREBAKED_IMAGE_NAME_TAGGED) \
411
416
  .
412
417
 
@@ -432,6 +437,7 @@ jupyter: update-version-file ## Build mlrun jupyter docker image
432
437
  --build-arg MLRUN_CACHE_DATE=$(MLRUN_CACHE_DATE) \
433
438
  --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
434
439
  --build-arg MLRUN_UV_IMAGE=$(MLRUN_UV_IMAGE) \
440
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
435
441
  $(MLRUN_JUPYTER_IMAGE_DOCKER_CACHE_FROM_FLAG) \
436
442
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
437
443
  --tag $(MLRUN_JUPYTER_IMAGE_NAME_TAGGED) \
@@ -505,6 +511,7 @@ $(COMMON_STAMP): $(COMMON_DOCKERFILE)
505
511
  docker build \
506
512
  --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
507
513
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
514
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
508
515
  -f $(COMMON_DOCKERFILE) \
509
516
  -t $(COMMON_IMAGE_NAME) . \
510
517
  && mkdir -p $(dir $@) && touch $@
@@ -515,6 +522,7 @@ common-image:
515
522
  --no-cache $(COMMON_DOCKER_ARGS) \
516
523
  --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
517
524
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
525
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
518
526
  -f $(COMMON_DOCKERFILE) \
519
527
  -t $(COMMON_IMAGE_NAME) .
520
528
  endif
@@ -546,6 +554,7 @@ api: common-image-3.11 compile-schemas update-version-file ## Build mlrun-api d
546
554
  --build-arg MLRUN_PYTHON_VERSION=$(MLRUN_PYTHON_VERSION) \
547
555
  --build-arg MLRUN_UV_IMAGE=$(MLRUN_UV_IMAGE) \
548
556
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
557
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
549
558
  $(MLRUN_API_IMAGE_DOCKER_CACHE_FROM_FLAG) \
550
559
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
551
560
  --tag $(MLRUN_API_IMAGE_NAME_TAGGED) .
@@ -578,6 +587,7 @@ build-test: common-image compile-schemas update-version-file ## Build test docke
578
587
  --build-arg MLRUN_PIPELINES_KFP_VERSION=$(MLRUN_PIPELINES_KFP_VERSION) \
579
588
  --build-arg MLRUN_UV_VERSION=$(MLRUN_UV_VERSION) \
580
589
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
590
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
581
591
  $(MLRUN_TEST_IMAGE_DOCKER_CACHE_FROM_FLAG) \
582
592
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
583
593
  --tag $(MLRUN_TEST_IMAGE_NAME_TAGGED) .
@@ -597,6 +607,7 @@ build-test-system: common-image compile-schemas update-version-file ## Build sys
597
607
  --build-arg MLRUN_PIP_VERSION=$(MLRUN_PIP_VERSION) \
598
608
  --build-arg MLRUN_UV_VERSION=$(MLRUN_UV_VERSION) \
599
609
  --build-arg DOCKER_DEFAULT_PLATFORM=$(DOCKER_DEFAULT_PLATFORM) \
610
+ --platform $(DOCKER_DEFAULT_PLATFORM) \
600
611
  $(MLRUN_DOCKER_NO_CACHE_FLAG) \
601
612
  --tag $(MLRUN_SYSTEM_TEST_IMAGE_NAME) .
602
613
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc21
3
+ Version: 1.10.0rc22
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -39,7 +39,7 @@ Requires-Dist: tabulate~=0.8.6
39
39
  Requires-Dist: v3io~=0.7.0
40
40
  Requires-Dist: pydantic>=1.10.15
41
41
  Requires-Dist: mergedeep~=1.3
42
- Requires-Dist: v3io-frames~=0.10.14; python_version < "3.11"
42
+ Requires-Dist: v3io-frames~=0.10.15; python_version < "3.11"
43
43
  Requires-Dist: v3io-frames>=0.13.0; python_version >= "3.11"
44
44
  Requires-Dist: semver~=3.0
45
45
  Requires-Dist: dependency-injector~=4.41
@@ -83,19 +83,20 @@ class LLMPromptArtifactSpec(ArtifactSpec):
83
83
  raise mlrun.errors.MLRunInvalidArgumentError(
84
84
  "Expected prompt_template to be a list of dicts"
85
85
  )
86
- keys_to_pop = []
87
86
  for message in prompt_template:
87
+ if set(key.lower() for key in message.keys()) != set(
88
+ self.PROMPT_TEMPLATE_KEYS
89
+ ):
90
+ raise mlrun.errors.MLRunInvalidArgumentError(
91
+ f"Expected prompt_template to contain dicts with keys "
92
+ f"{self.PROMPT_TEMPLATE_KEYS}, got {message.keys()}"
93
+ )
94
+ keys_to_pop = []
88
95
  for key in message.keys():
89
96
  if isinstance(key, str):
90
- if key.lower() not in self.PROMPT_TEMPLATE_KEYS:
91
- raise mlrun.errors.MLRunInvalidArgumentError(
92
- f"Expected prompt_template to contain dict that "
93
- f"only has keys from {self.PROMPT_TEMPLATE_KEYS}"
94
- )
95
- else:
96
- if not key.islower():
97
- message[key.lower()] = message[key]
98
- keys_to_pop.append(key)
97
+ if not key.islower():
98
+ message[key.lower()] = message[key]
99
+ keys_to_pop.append(key)
99
100
  else:
100
101
  raise mlrun.errors.MLRunInvalidArgumentError(
101
102
  f"Expected prompt_template to contain dict that only"
@@ -190,10 +190,10 @@ class ModelArtifact(Artifact):
190
190
  """
191
191
  super().__init__(key, body, format=format, target_path=target_path, **kwargs)
192
192
  model_file = str(model_file or "")
193
- if model_file and model_url:
193
+ if (model_file or model_dir or body) and model_url:
194
194
  raise mlrun.errors.MLRunInvalidArgumentError(
195
- "Arguments 'model_file' and 'model_dir' cannot be"
196
- " used together with 'model_url'."
195
+ "Arguments 'model_file' and 'model_url' cannot be"
196
+ " used together with 'model_file', 'model_dir' or 'body'."
197
197
  )
198
198
  if model_file and "/" in model_file:
199
199
  if model_dir:
@@ -55,6 +55,7 @@ class AuthorizationResourceTypes(mlrun.common.types.StrEnum):
55
55
  secret = "secret"
56
56
  run = "run"
57
57
  model_endpoint = "model-endpoint"
58
+ model_monitoring = "model-monitoring"
58
59
  pipeline = "pipeline"
59
60
  hub_source = "hub-source"
60
61
  workflow = "workflow"
@@ -96,6 +97,7 @@ class AuthorizationResourceTypes(mlrun.common.types.StrEnum):
96
97
  # runtime resource doesn't have an identifier, we don't need any auth granularity behind project level
97
98
  AuthorizationResourceTypes.runtime_resource: "/projects/{project_name}/runtime-resources",
98
99
  AuthorizationResourceTypes.model_endpoint: "/projects/{project_name}/model-endpoints/{resource_name}",
100
+ AuthorizationResourceTypes.model_monitoring: "/projects/{project_name}/model-monitoring/{resource_name}",
99
101
  AuthorizationResourceTypes.pipeline: "/projects/{project_name}/pipelines/{resource_name}",
100
102
  AuthorizationResourceTypes.datastore_profile: "/projects/{project_name}/datastore_profiles",
101
103
  # Hub sources are not project-scoped, and auth is globally on the sources endpoint.
@@ -1111,6 +1111,15 @@ class RunDBInterface(ABC):
1111
1111
  ) -> None:
1112
1112
  pass
1113
1113
 
1114
+ @abstractmethod
1115
+ def delete_model_monitoring_metrics(
1116
+ self,
1117
+ project: str,
1118
+ application_name: str,
1119
+ endpoint_ids: Optional[list[str]] = None,
1120
+ ) -> None:
1121
+ pass
1122
+
1114
1123
  @abstractmethod
1115
1124
  def get_monitoring_function_summaries(
1116
1125
  self,
@@ -3580,7 +3580,7 @@ class HTTPRunDB(RunDBInterface):
3580
3580
  intersection {"intersect_metrics":[], "intersect_results":[]}
3581
3581
  :return: A dictionary of application metrics and/or results for the model endpoints formatted by events_format.
3582
3582
  """
3583
- path = f"projects/{project}/model-endpoints/metrics"
3583
+ path = f"projects/{project}/model-monitoring/metrics"
3584
3584
  params = {
3585
3585
  "type": type,
3586
3586
  "endpoint-id": endpoint_ids,
@@ -4121,6 +4121,26 @@ class HTTPRunDB(RunDBInterface):
4121
4121
  params={**credentials, "replace_creds": replace_creds},
4122
4122
  )
4123
4123
 
4124
+ def delete_model_monitoring_metrics(
4125
+ self,
4126
+ project: str,
4127
+ application_name: str,
4128
+ endpoint_ids: Optional[list[str]] = None,
4129
+ ) -> None:
4130
+ """
4131
+ Delete model endpoints metrics values.
4132
+
4133
+ :param project: The name of the project.
4134
+ :param application_name: The name of the application.
4135
+ :param endpoint_ids: The unique IDs of the model endpoints to delete metrics values from. If none is
4136
+ provided, the metrics values will be deleted from all project's model endpoints.
4137
+ """
4138
+ self.api_call(
4139
+ method=mlrun.common.types.HTTPMethod.DELETE,
4140
+ path=f"projects/{project}/model-monitoring/metrics",
4141
+ params={"endpoint-id": endpoint_ids, "application-name": application_name},
4142
+ )
4143
+
4124
4144
  def get_monitoring_function_summaries(
4125
4145
  self,
4126
4146
  project: str,
@@ -885,6 +885,14 @@ class NopDB(RunDBInterface):
885
885
  ) -> None:
886
886
  pass
887
887
 
888
+ def delete_model_monitoring_metrics(
889
+ self,
890
+ project: str,
891
+ application_name: str,
892
+ endpoint_ids: Optional[list[str]] = None,
893
+ ) -> None:
894
+ pass
895
+
888
896
  def get_monitoring_function_summaries(
889
897
  self,
890
898
  project: str,
@@ -934,14 +934,51 @@ class MLClientCtx:
934
934
 
935
935
  Examples::
936
936
 
937
- # Log an inline prompt
937
+ # Log directly with an inline prompt template
938
938
  context.log_llm_prompt(
939
- key="qa-prompt",
940
- prompt_template=[{"role: "user", "content": "question with {place_holder}"}],
939
+ key="customer_support_prompt",
940
+ prompt_template=[
941
+ {
942
+ "role": "system",
943
+ "content": "You are a helpful customer support assistant.",
944
+ },
945
+ {
946
+ "role": "user",
947
+ "content": "The customer reports: {issue_description}",
948
+ },
949
+ ],
950
+ prompt_legend={
951
+ "issue_description": {
952
+ "field": "user_issue",
953
+ "description": "Detailed description of the customer's issue",
954
+ },
955
+ "solution": {
956
+ "field": "proposed_solution",
957
+ "description": "Suggested fix for the customer's issue",
958
+ },
959
+ },
941
960
  model_artifact=model,
942
- prompt_legend={"question": "user_input"},
943
- model_configuration={"temperature": 0.7, "max_tokens": 128},
944
- tag="latest",
961
+ model_configuration={"temperature": 0.5, "max_tokens": 200},
962
+ description="Prompt for handling customer support queries",
963
+ tag="support-v1",
964
+ labels={"domain": "support"},
965
+ )
966
+
967
+ # Log a prompt from file
968
+ context.log_llm_prompt(
969
+ key="qa_prompt",
970
+ prompt_path="prompts/template.json",
971
+ prompt_legend={
972
+ "question": {
973
+ "field": "user_question",
974
+ "description": "The actual question asked by the user",
975
+ }
976
+ },
977
+ model_artifact=model,
978
+ model_configuration={"temperature": 0.7, "max_tokens": 256},
979
+ description="Q&A prompt template with user-provided question",
980
+ tag="v2",
981
+ labels={"task": "qa", "stage": "experiment"},
945
982
  )
946
983
 
947
984
  :param key: Unique name of the artifact.
@@ -950,7 +987,10 @@ class MLClientCtx:
950
987
  "role": "user", "content": "I need your help with {profession}"]. only "role" and "content" keys allow in any
951
988
  str format (upper/lower case), keys will be modified to lower case.
952
989
  Cannot be used with `prompt_path`.
953
- :param prompt_path: Path to a file containing the prompt content. Cannot be used with `prompt_string`.
990
+ :param prompt_path: Path to a JSON file containing the prompt template.
991
+ Cannot be used together with `prompt_template`.
992
+ The file should define a list of dictionaries in the same format
993
+ supported by `prompt_template`.
954
994
  :param prompt_legend: A dictionary where each key is a placeholder in the prompt (e.g., ``{user_name}``)
955
995
  and the value is a dictionary holding two keys, "field", "description". "field" points to the field in
956
996
  the event where the value of the place-holder inside the event, if None or not exist will be replaced
@@ -958,9 +998,11 @@ class MLClientCtx:
958
998
  Useful for documenting and clarifying dynamic parts of the prompt.
959
999
  :param model_artifact: Reference to the parent model (either `ModelArtifact` or model URI string).
960
1000
  :param model_configuration: Dictionary of generation parameters (e.g., temperature, max_tokens).
961
- :param description: Optional description of the prompt.
962
- :param target_path: Path to write the artifact locally.
963
- :param artifact_path: Path in the artifact store (defaults to project artifact path).
1001
+ :param description: Optional description of the prompt.
1002
+ :param target_path: Absolute target path (instead of using artifact_path + local_path)
1003
+ :param artifact_path: Target artifact path (when not using the default)
1004
+ To define a subpath under the default location use:
1005
+ `artifact_path=context.artifact_subpath('data')`
964
1006
  :param tag: Tag/version to assign to the prompt artifact.
965
1007
  :param labels: Labels to tag the artifact (e.g., list or dict of key-value pairs).
966
1008
  :param upload: Whether to upload the artifact to the store (defaults to True).
@@ -12,6 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from .base import ModelMonitoringApplicationBase
15
+ from .base import ExistingDataHandling, ModelMonitoringApplicationBase
16
16
  from .context import MonitoringApplicationContext
17
17
  from .results import ModelMonitoringApplicationMetric, ModelMonitoringApplicationResult
@@ -27,6 +27,7 @@ import mlrun
27
27
  import mlrun.common.constants as mlrun_constants
28
28
  import mlrun.common.helpers
29
29
  import mlrun.common.schemas.model_monitoring.constants as mm_constants
30
+ import mlrun.common.types
30
31
  import mlrun.datastore.datastore_profile as ds_profile
31
32
  import mlrun.errors
32
33
  import mlrun.model_monitoring.api as mm_api
@@ -39,6 +40,12 @@ from mlrun.serving.utils import MonitoringApplicationToDict
39
40
  from mlrun.utils import logger
40
41
 
41
42
 
43
+ class ExistingDataHandling(mlrun.common.types.StrEnum):
44
+ fail_on_overlap = "fail_on_overlap"
45
+ skip_overlap = "skip_overlap"
46
+ delete_all = "delete_all"
47
+
48
+
42
49
  def _serialize_context_and_result(
43
50
  *,
44
51
  context: mm_context.MonitoringApplicationContext,
@@ -288,7 +295,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
288
295
  end: Optional[str] = None,
289
296
  base_period: Optional[int] = None,
290
297
  write_output: bool = False,
291
- fail_on_overlap: bool = True,
298
+ existing_data_handling: ExistingDataHandling = ExistingDataHandling.fail_on_overlap,
292
299
  stream_profile: Optional[ds_profile.DatastoreProfile] = None,
293
300
  ):
294
301
  """
@@ -350,6 +357,24 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
350
357
  resolved_endpoints = self._handle_endpoints_type_evaluate(
351
358
  project=project, endpoints=endpoints
352
359
  )
360
+ if (
361
+ write_output
362
+ and existing_data_handling == ExistingDataHandling.delete_all
363
+ ):
364
+ endpoint_ids = [
365
+ endpoint_id for _, endpoint_id in resolved_endpoints
366
+ ]
367
+ context.logger.info(
368
+ "Deleting all the application data before running the application",
369
+ application_name=application_name,
370
+ endpoint_ids=endpoint_ids,
371
+ )
372
+ self._delete_application_data(
373
+ project_name=project.name,
374
+ application_name=application_name,
375
+ endpoint_ids=endpoint_ids,
376
+ application_schedules=application_schedules,
377
+ )
353
378
  for endpoint_name, endpoint_id in resolved_endpoints:
354
379
  for window_start, window_end in self._window_generator(
355
380
  start=start,
@@ -358,7 +383,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
358
383
  application_schedules=application_schedules,
359
384
  endpoint_id=endpoint_id,
360
385
  application_name=application_name,
361
- fail_on_overlap=fail_on_overlap,
386
+ existing_data_handling=existing_data_handling,
362
387
  ):
363
388
  result = call_do_tracking(
364
389
  event={
@@ -481,7 +506,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
481
506
  end_dt: datetime,
482
507
  base_period: Optional[int],
483
508
  application_name: str,
484
- fail_on_overlap: bool,
509
+ existing_data_handling: ExistingDataHandling,
485
510
  ) -> datetime:
486
511
  """Make sure that the (app, endpoint) pair doesn't write output before the last analyzed window"""
487
512
  if application_schedules:
@@ -490,7 +515,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
490
515
  )
491
516
  if last_analyzed:
492
517
  if start_dt < last_analyzed:
493
- if not fail_on_overlap:
518
+ if existing_data_handling == ExistingDataHandling.skip_overlap:
494
519
  if last_analyzed < end_dt and base_period is None:
495
520
  logger.warn(
496
521
  "Setting the start time to last_analyzed since the original start time precedes "
@@ -525,6 +550,25 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
525
550
  )
526
551
  return start_dt
527
552
 
553
+ @staticmethod
554
+ def _delete_application_data(
555
+ project_name: str,
556
+ application_name: str,
557
+ endpoint_ids: list[str],
558
+ application_schedules: Optional[
559
+ mm_schedules.ModelMonitoringSchedulesFileApplication
560
+ ],
561
+ ) -> None:
562
+ mlrun.get_run_db().delete_model_monitoring_metrics(
563
+ project=project_name,
564
+ application_name=application_name,
565
+ endpoint_ids=endpoint_ids,
566
+ )
567
+ if application_schedules:
568
+ application_schedules.delete_endpoints_last_analyzed(
569
+ endpoint_uids=endpoint_ids
570
+ )
571
+
528
572
  @classmethod
529
573
  def _window_generator(
530
574
  cls,
@@ -537,7 +581,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
537
581
  ],
538
582
  endpoint_id: str,
539
583
  application_name: str,
540
- fail_on_overlap: bool,
584
+ existing_data_handling: ExistingDataHandling,
541
585
  ) -> Iterator[tuple[Optional[datetime], Optional[datetime]]]:
542
586
  if start is None or end is None:
543
587
  # A single window based on the `sample_data` input - see `_handler`.
@@ -547,15 +591,16 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
547
591
  start_dt = datetime.fromisoformat(start)
548
592
  end_dt = datetime.fromisoformat(end)
549
593
 
550
- start_dt = cls._validate_monotonically_increasing_data(
551
- application_schedules=application_schedules,
552
- endpoint_id=endpoint_id,
553
- start_dt=start_dt,
554
- end_dt=end_dt,
555
- base_period=base_period,
556
- application_name=application_name,
557
- fail_on_overlap=fail_on_overlap,
558
- )
594
+ if existing_data_handling != ExistingDataHandling.delete_all:
595
+ start_dt = cls._validate_monotonically_increasing_data(
596
+ application_schedules=application_schedules,
597
+ endpoint_id=endpoint_id,
598
+ start_dt=start_dt,
599
+ end_dt=end_dt,
600
+ base_period=base_period,
601
+ application_name=application_name,
602
+ existing_data_handling=existing_data_handling,
603
+ )
559
604
 
560
605
  if base_period is None:
561
606
  yield start_dt, end_dt
@@ -702,7 +747,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
702
747
  * ``end``, ``datetime``
703
748
  * ``base_period``, ``int``
704
749
  * ``write_output``, ``bool``
705
- * ``fail_on_overlap``, ``bool``
750
+ * ``existing_data_handling``, ``str``
706
751
 
707
752
  For Git sources, add the source archive to the returned job and change the handler:
708
753
 
@@ -788,7 +833,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
788
833
  end: Optional[datetime] = None,
789
834
  base_period: Optional[int] = None,
790
835
  write_output: bool = False,
791
- fail_on_overlap: bool = True,
836
+ existing_data_handling: ExistingDataHandling = ExistingDataHandling.fail_on_overlap,
792
837
  stream_profile: Optional[ds_profile.DatastoreProfile] = None,
793
838
  ) -> "mlrun.RunObject":
794
839
  """
@@ -856,11 +901,18 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
856
901
  :param write_output: Whether to write the results and metrics to the time-series DB. Can be ``True`` only
857
902
  if ``endpoints`` are passed.
858
903
  Note: the model monitoring infrastructure must be up for the writing to work.
859
- :param fail_on_overlap: Relevant only when ``write_output=True``. When ``True``, and the
860
- requested ``start`` time precedes the ``end`` time of a previous run that also
861
- wrote to the database - an error is raised.
862
- If ``False``, when the previously described situation occurs, the relevant time
863
- window is cut so that it starts at the earliest possible time after ``start``.
904
+ :param existing_data_handling:
905
+ How to handle the existing application data for the model endpoints when writing the
906
+ new data. Relevant only when ``write_output=True``. The default is
907
+ ``"fail_on_overlap"``. The options are:
908
+
909
+ - ``"fail_on_overlap"``: when the requested ``start`` time precedes the
910
+ ``end`` time of a previous run that also wrote to the database - an error is raised.
911
+ - ``"skip_overlap"``: when the previously described situation occurs, the relevant
912
+ time window is cut so that it starts at the earliest possible time after ``start``.
913
+ - ``"delete_all"``: delete all the data that was written by the application to the
914
+ model endpoints, regardless of the time window, and write the new data.
915
+
864
916
  :param stream_profile: The stream datastore profile. It should be provided only when running locally and
865
917
  writing the outputs to the database (i.e., when both ``run_local`` and
866
918
  ``write_output`` are set to ``True``).
@@ -899,18 +951,6 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
899
951
  )
900
952
  params["end"] = end.isoformat() if isinstance(end, datetime) else end
901
953
  params["base_period"] = base_period
902
- params["write_output"] = write_output
903
- params["fail_on_overlap"] = fail_on_overlap
904
- if stream_profile:
905
- if not run_local:
906
- raise mlrun.errors.MLRunValueError(
907
- "Passing a `stream_profile` is relevant only when running locally"
908
- )
909
- if not write_output:
910
- raise mlrun.errors.MLRunValueError(
911
- "Passing a `stream_profile` is relevant only when writing the outputs"
912
- )
913
- params["stream_profile"] = stream_profile
914
954
  elif start or end or base_period:
915
955
  raise mlrun.errors.MLRunValueError(
916
956
  "Custom `start` and `end` times or base_period are supported only with endpoints data"
@@ -920,6 +960,19 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
920
960
  "Writing the application output or passing `stream_profile` are supported only with endpoints data"
921
961
  )
922
962
 
963
+ params["write_output"] = write_output
964
+ params["existing_data_handling"] = existing_data_handling
965
+ if stream_profile:
966
+ if not run_local:
967
+ raise mlrun.errors.MLRunValueError(
968
+ "Passing a `stream_profile` is relevant only when running locally"
969
+ )
970
+ if not write_output:
971
+ raise mlrun.errors.MLRunValueError(
972
+ "Passing a `stream_profile` is relevant only when writing the outputs"
973
+ )
974
+ params["stream_profile"] = stream_profile
975
+
923
976
  inputs: dict[str, str] = {}
924
977
  for data, identifier in [
925
978
  (sample_data, "sample_data"),
@@ -170,6 +170,16 @@ class ModelMonitoringSchedulesFileEndpoint(ModelMonitoringSchedulesFileBase):
170
170
  self._check_open_schedules()
171
171
  self._schedules[application] = float(timestamp)
172
172
 
173
+ def delete_application_time(self, application: str) -> None:
174
+ self._check_open_schedules()
175
+ if application in self._schedules:
176
+ logger.debug(
177
+ "Deleting application time from schedules",
178
+ application=application,
179
+ endpoint_id=self._endpoint_id,
180
+ )
181
+ del self._schedules[application]
182
+
173
183
  def get_application_list(self) -> set[str]:
174
184
  self._check_open_schedules()
175
185
  return set(self._schedules.keys())
@@ -275,6 +285,17 @@ class ModelMonitoringSchedulesFileApplication(ModelMonitoringSchedulesFileBase):
275
285
  timezone.utc
276
286
  ).isoformat()
277
287
 
288
+ def delete_endpoints_last_analyzed(self, endpoint_uids: list[str]) -> None:
289
+ self._check_open_schedules()
290
+ for endpoint_uid in endpoint_uids:
291
+ if endpoint_uid in self._schedules:
292
+ logger.debug(
293
+ "Deleting endpoint last analyzed from schedules",
294
+ endpoint_uid=endpoint_uid,
295
+ application=self._application,
296
+ )
297
+ del self._schedules[endpoint_uid]
298
+
278
299
 
279
300
  def _delete_folder(folder: str) -> None:
280
301
  fs = mlrun.datastore.store_manager.object(folder).store.filesystem
@@ -96,14 +96,23 @@ class TSDBConnector(ABC):
96
96
  """
97
97
 
98
98
  @abstractmethod
99
- def delete_tsdb_records(
100
- self,
101
- endpoint_ids: list[str],
102
- ) -> None:
99
+ def delete_tsdb_records(self, endpoint_ids: list[str]) -> None:
103
100
  """
104
101
  Delete model endpoint records from the TSDB connector.
102
+
105
103
  :param endpoint_ids: List of model endpoint unique identifiers.
106
- :param delete_timeout: The timeout in seconds to wait for the deletion to complete.
104
+ """
105
+ pass
106
+
107
+ @abstractmethod
108
+ def delete_application_records(
109
+ self, application_name: str, endpoint_ids: Optional[list[str]] = None
110
+ ) -> None:
111
+ """
112
+ Delete application records from the TSDB for the given model endpoints or all if ``None``.
113
+
114
+ :param application_name: The name of the application to delete records for.
115
+ :param endpoint_ids: List of model endpoint unique identifiers.
107
116
  """
108
117
  pass
109
118
 
@@ -122,10 +122,7 @@ class TDEngineSchema:
122
122
  )
123
123
  return f"DELETE FROM {self.database}.{subtable} WHERE {values};"
124
124
 
125
- def drop_subtable_query(
126
- self,
127
- subtable: str,
128
- ) -> str:
125
+ def drop_subtable_query(self, subtable: str) -> str:
129
126
  return f"DROP TABLE if EXISTS {self.database}.`{subtable}`;"
130
127
 
131
128
  def drop_supertable_query(self) -> str:
@@ -145,8 +142,10 @@ class TDEngineSchema:
145
142
  values = f" {operator} ".join(
146
143
  f"{filter_tag} LIKE '{val}'" for val in filter_values
147
144
  )
145
+ return self._get_tables_query_by_condition(values)
148
146
 
149
- return f"SELECT DISTINCT tbname FROM {self.database}.{self.super_table} WHERE {values};"
147
+ def _get_tables_query_by_condition(self, condition: str) -> str:
148
+ return f"SELECT DISTINCT TBNAME FROM {self.database}.{self.super_table} WHERE {condition};"
150
149
 
151
150
  @staticmethod
152
151
  def _get_records_query(