mlrun 1.10.0rc39__tar.gz → 1.10.0rc41__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.0rc39/mlrun.egg-info → mlrun-1.10.0rc41}/PKG-INFO +1 -1
  2. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/model_monitoring/helpers.py +1 -1
  3. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/secrets.py +13 -0
  4. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model.py +3 -5
  5. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/context.py +1 -0
  6. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/base.py +2 -4
  7. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +8 -9
  8. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +154 -76
  9. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/projects/project.py +3 -5
  10. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/mounts.py +2 -6
  11. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/serving.py +4 -6
  12. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/pod.py +22 -31
  13. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/states.py +45 -21
  14. mlrun-1.10.0rc41/mlrun/utils/version/version.json +4 -0
  15. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41/mlrun.egg-info}/PKG-INFO +1 -1
  16. mlrun-1.10.0rc39/mlrun/utils/version/version.json +0 -4
  17. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/LICENSE +0 -0
  18. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/MANIFEST.in +0 -0
  19. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/Makefile +0 -0
  20. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/README.md +0 -0
  21. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/dependencies.py +0 -0
  22. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/dev-requirements.txt +0 -0
  23. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/dockerfiles/mlrun-api/requirements.txt +0 -0
  24. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/archive.zip +0 -0
  25. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/function.py +0 -0
  26. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/handler.py +0 -0
  27. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/infile.txt +0 -0
  28. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/load-project.ipynb +0 -0
  29. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_basics.ipynb +0 -0
  30. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_dask.ipynb +0 -0
  31. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_db.ipynb +0 -0
  32. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_export_import.ipynb +0 -0
  33. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_jobs.ipynb +0 -0
  34. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_sparkk8s.ipynb +0 -0
  35. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/mlrun_vault.ipynb +0 -0
  36. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/model.bst +0 -0
  37. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/new-project.ipynb +0 -0
  38. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/nulltst.py +0 -0
  39. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/params.csv +0 -0
  40. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/remote-spark.ipynb +0 -0
  41. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/secrets.txt +0 -0
  42. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/spark-function.py +0 -0
  43. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/training.py +0 -0
  44. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/v2_model_server.ipynb +0 -0
  45. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/examples/xgb_serving.ipynb +0 -0
  46. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/extras-requirements.txt +0 -0
  47. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/__init__.py +0 -0
  48. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/__main__.py +0 -0
  49. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/alerts/__init__.py +0 -0
  50. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/alerts/alert.py +0 -0
  51. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/__init__.py +0 -0
  52. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/base.py +0 -0
  53. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/dataset.py +0 -0
  54. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/document.py +0 -0
  55. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/helpers.py +0 -0
  56. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/llm_prompt.py +0 -0
  57. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/manager.py +0 -0
  58. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/model.py +0 -0
  59. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/artifacts/plots.py +0 -0
  60. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/__init__.py +0 -0
  61. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/constants.py +0 -0
  62. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/db/__init__.py +0 -0
  63. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/db/dialects.py +0 -0
  64. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/__init__.py +0 -0
  65. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/artifact.py +0 -0
  66. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/base.py +0 -0
  67. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/feature_set.py +0 -0
  68. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/function.py +0 -0
  69. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/model_endpoint.py +0 -0
  70. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/pipeline.py +0 -0
  71. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/project.py +0 -0
  72. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/formatters/run.py +0 -0
  73. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/helpers.py +0 -0
  74. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/model_monitoring/__init__.py +0 -0
  75. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/runtimes/constants.py +0 -0
  76. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/__init__.py +0 -0
  77. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/alert.py +0 -0
  78. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/api_gateway.py +0 -0
  79. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/artifact.py +0 -0
  80. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/auth.py +0 -0
  81. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/background_task.py +0 -0
  82. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/client_spec.py +0 -0
  83. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/clusterization_spec.py +0 -0
  84. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/common.py +0 -0
  85. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/constants.py +0 -0
  86. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/datastore_profile.py +0 -0
  87. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/events.py +0 -0
  88. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/feature_store.py +0 -0
  89. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/frontend_spec.py +0 -0
  90. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/function.py +0 -0
  91. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/http.py +0 -0
  92. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/hub.py +0 -0
  93. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/k8s.py +0 -0
  94. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/memory_reports.py +0 -0
  95. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
  96. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
  97. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  98. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  99. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
  100. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/notification.py +0 -0
  101. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/object.py +0 -0
  102. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/pagination.py +0 -0
  103. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/partition.py +0 -0
  104. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/pipeline.py +0 -0
  105. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/project.py +0 -0
  106. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/regex.py +0 -0
  107. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/runs.py +0 -0
  108. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/runtime_resource.py +0 -0
  109. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/schedule.py +0 -0
  110. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/secret.py +0 -0
  111. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/serving.py +0 -0
  112. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/tag.py +0 -0
  113. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/schemas/workflow.py +0 -0
  114. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/common/types.py +0 -0
  115. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/config.py +0 -0
  116. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/data_types/__init__.py +0 -0
  117. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/data_types/data_types.py +0 -0
  118. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/data_types/infer.py +0 -0
  119. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/data_types/spark.py +0 -0
  120. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/data_types/to_pandas.py +0 -0
  121. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/__init__.py +0 -0
  122. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/alibaba_oss.py +0 -0
  123. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/azure_blob.py +0 -0
  124. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/base.py +0 -0
  125. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/datastore.py +0 -0
  126. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/datastore_profile.py +0 -0
  127. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/dbfs_store.py +0 -0
  128. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/filestore.py +0 -0
  129. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/google_cloud_storage.py +0 -0
  130. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/hdfs.py +0 -0
  131. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/inmem.py +0 -0
  132. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/model_provider/__init__.py +0 -0
  133. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
  134. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/model_provider/mock_model_provider.py +0 -0
  135. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/model_provider/model_provider.py +0 -0
  136. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/model_provider/openai_provider.py +0 -0
  137. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/redis.py +0 -0
  138. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/remote_client.py +0 -0
  139. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/s3.py +0 -0
  140. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/snowflake_utils.py +0 -0
  141. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/sources.py +0 -0
  142. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/spark_udf.py +0 -0
  143. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/spark_utils.py +0 -0
  144. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/store_resources.py +0 -0
  145. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/storeytargets.py +0 -0
  146. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/targets.py +0 -0
  147. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/utils.py +0 -0
  148. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/v3io.py +0 -0
  149. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/vectorstore.py +0 -0
  150. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/wasbfs/__init__.py +0 -0
  151. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/datastore/wasbfs/fs.py +0 -0
  152. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/db/__init__.py +0 -0
  153. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/db/auth_utils.py +0 -0
  154. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/db/base.py +0 -0
  155. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/db/factory.py +0 -0
  156. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/db/httpdb.py +0 -0
  157. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/db/nopdb.py +0 -0
  158. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/errors.py +0 -0
  159. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/execution.py +0 -0
  160. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/__init__.py +0 -0
  161. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/api.py +0 -0
  162. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/common.py +0 -0
  163. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/feature_set.py +0 -0
  164. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/feature_vector.py +0 -0
  165. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/feature_vector_utils.py +0 -0
  166. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/ingestion.py +0 -0
  167. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/__init__.py +0 -0
  168. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/base.py +0 -0
  169. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  170. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/job.py +0 -0
  171. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  172. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  173. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  174. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/feature_store/steps.py +0 -0
  175. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/features.py +0 -0
  176. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/__init__.py +0 -0
  177. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/__init__.py +0 -0
  178. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  179. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  180. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/model_handler.py +0 -0
  181. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/plan.py +0 -0
  182. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/producer.py +0 -0
  183. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_common/utils.py +0 -0
  184. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  185. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  186. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  187. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  188. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  189. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  190. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_dl_common/utils.py +0 -0
  191. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  192. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  193. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  194. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  195. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  196. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  197. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  198. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plan.py +0 -0
  199. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  200. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  201. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  202. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  203. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  204. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  205. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/producer.py +0 -0
  206. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/_ml_common/utils.py +0 -0
  207. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  208. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  209. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/huggingface/__init__.py +0 -0
  210. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/huggingface/model_server.py +0 -0
  211. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/__init__.py +0 -0
  212. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  213. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  214. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  215. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  216. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  217. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  218. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  219. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  220. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  221. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/model_server.py +0 -0
  222. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/lgbm/utils.py +0 -0
  223. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/onnx/__init__.py +0 -0
  224. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/onnx/dataset.py +0 -0
  225. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  226. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/onnx/model_handler.py +0 -0
  227. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/onnx/model_server.py +0 -0
  228. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/parallel_coordinates.py +0 -0
  229. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/__init__.py +0 -0
  230. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  231. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  232. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  233. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  234. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  235. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  236. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  237. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  238. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/model_server.py +0 -0
  239. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/pytorch/utils.py +0 -0
  240. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/__init__.py +0 -0
  241. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/estimator.py +0 -0
  242. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/metric.py +0 -0
  243. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  244. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  245. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  246. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/sklearn/utils.py +0 -0
  247. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  248. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  249. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  250. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  251. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  252. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  253. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  254. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  255. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/tf_keras/utils.py +0 -0
  256. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/xgboost/__init__.py +0 -0
  257. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  258. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  259. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/frameworks/xgboost/utils.py +0 -0
  260. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/hub/__init__.py +0 -0
  261. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/hub/module.py +0 -0
  262. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/k8s_utils.py +0 -0
  263. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/launcher/__init__.py +0 -0
  264. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/launcher/base.py +0 -0
  265. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/launcher/client.py +0 -0
  266. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/launcher/factory.py +0 -0
  267. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/launcher/local.py +0 -0
  268. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/launcher/remote.py +0 -0
  269. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/lists.py +0 -0
  270. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/__init__.py +0 -0
  271. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/api.py +0 -0
  272. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/__init__.py +0 -0
  273. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  274. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/base.py +0 -0
  275. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  276. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  277. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  278. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/applications/results.py +0 -0
  279. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/controller.py +0 -0
  280. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/__init__.py +0 -0
  281. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/_schedules.py +0 -0
  282. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/_stats.py +0 -0
  283. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  284. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  285. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  286. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  287. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  288. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  289. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/tdengine/writer_graph_steps.py +0 -0
  290. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  291. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  292. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/features_drift_table.py +0 -0
  293. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/helpers.py +0 -0
  294. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  295. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  296. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/stream_processing.py +0 -0
  297. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/model_monitoring/writer.py +0 -0
  298. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/__init__.py +0 -0
  299. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/context_handler.py +0 -0
  300. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/errors.py +0 -0
  301. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packager.py +0 -0
  302. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packagers/__init__.py +0 -0
  303. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packagers/default_packager.py +0 -0
  304. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packagers/numpy_packagers.py +0 -0
  305. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packagers/pandas_packagers.py +0 -0
  306. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  307. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/packagers_manager.py +0 -0
  308. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/__init__.py +0 -0
  309. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/_archiver.py +0 -0
  310. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/_formatter.py +0 -0
  311. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/_pickler.py +0 -0
  312. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/_supported_format.py +0 -0
  313. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/log_hint_utils.py +0 -0
  314. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/package/utils/type_hint_utils.py +0 -0
  315. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/platforms/__init__.py +0 -0
  316. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/platforms/iguazio.py +0 -0
  317. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/projects/__init__.py +0 -0
  318. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/projects/operations.py +0 -0
  319. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/projects/pipelines.py +0 -0
  320. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/render.py +0 -0
  321. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/run.py +0 -0
  322. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/__init__.py +0 -0
  323. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/base.py +0 -0
  324. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/daskjob.py +0 -0
  325. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  326. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  327. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  328. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  329. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/funcdoc.py +0 -0
  330. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/function_reference.py +0 -0
  331. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/generators.py +0 -0
  332. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/kubejob.py +0 -0
  333. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/local.py +0 -0
  334. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/mpijob/__init__.py +0 -0
  335. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/mpijob/abstract.py +0 -0
  336. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/mpijob/v1.py +0 -0
  337. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/__init__.py +0 -0
  338. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  339. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  340. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/application/application.py +0 -0
  341. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  342. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/function.py +0 -0
  343. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  344. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/remotesparkjob.py +0 -0
  345. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  346. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  347. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/runtimes/utils.py +0 -0
  348. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/secrets.py +0 -0
  349. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/__init__.py +0 -0
  350. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/merger.py +0 -0
  351. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/remote.py +0 -0
  352. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/routers.py +0 -0
  353. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/server.py +0 -0
  354. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/serving_wrapper.py +0 -0
  355. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/steps.py +0 -0
  356. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/system_steps.py +0 -0
  357. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/utils.py +0 -0
  358. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/v1_serving.py +0 -0
  359. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/serving/v2_serving.py +0 -0
  360. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/track/__init__.py +0 -0
  361. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/track/tracker.py +0 -0
  362. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/track/tracker_manager.py +0 -0
  363. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/track/trackers/__init__.py +0 -0
  364. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  365. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/__init__.py +0 -0
  366. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/async_http.py +0 -0
  367. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/azure_vault.py +0 -0
  368. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/clones.py +0 -0
  369. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/condition_evaluator.py +0 -0
  370. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/helpers.py +0 -0
  371. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/http.py +0 -0
  372. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/logger.py +0 -0
  373. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/__init__.py +0 -0
  374. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/__init__.py +0 -0
  375. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/base.py +0 -0
  376. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/console.py +0 -0
  377. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/git.py +0 -0
  378. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/ipython.py +0 -0
  379. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/mail.py +0 -0
  380. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/slack.py +0 -0
  381. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification/webhook.py +0 -0
  382. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/notifications/notification_pusher.py +0 -0
  383. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/regex.py +0 -0
  384. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/retryer.py +0 -0
  385. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/singleton.py +0 -0
  386. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/v3io_clients.py +0 -0
  387. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/vault.py +0 -0
  388. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/version/__init__.py +0 -0
  389. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun/utils/version/version.py +0 -0
  390. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun.egg-info/SOURCES.txt +0 -0
  391. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun.egg-info/dependency_links.txt +0 -0
  392. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun.egg-info/entry_points.txt +0 -0
  393. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun.egg-info/not-zip-safe +0 -0
  394. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun.egg-info/requires.txt +0 -0
  395. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/mlrun.egg-info/top_level.txt +0 -0
  396. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/packages.py +0 -0
  397. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/pyproject.toml +0 -0
  398. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/requirements.txt +0 -0
  399. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/setup.cfg +0 -0
  400. {mlrun-1.10.0rc39 → mlrun-1.10.0rc41}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlrun
3
- Version: 1.10.0rc39
3
+ Version: 1.10.0rc41
4
4
  Summary: Tracking and config of machine learning runs
5
5
  Home-page: https://github.com/mlrun/mlrun
6
6
  Author: Yaron Haviv
@@ -170,6 +170,6 @@ def log_background_task_state(
170
170
  f"Model endpoint creation task is still in progress with the current state: "
171
171
  f"{background_task_state}. Events will not be monitored for the next "
172
172
  f"{mlrun.mlconf.model_endpoint_monitoring.model_endpoint_creation_check_period} seconds",
173
- function_name=server.function.name,
173
+ function_name=server.function_name,
174
174
  background_task_check_timestamp=background_task_check_timestamp.isoformat(),
175
175
  )
@@ -25,6 +25,19 @@ _AUTH_SECRET_NAME_TEMPLATE = re.escape(
25
25
  AUTH_SECRET_PATTERN = re.compile(f"^{_AUTH_SECRET_NAME_TEMPLATE}.*")
26
26
 
27
27
 
28
+ def validate_not_forbidden_secret(secret_name: str) -> None:
29
+ """
30
+ Forbid client-supplied references to internal MLRun auth/project secrets.
31
+ No-op when running inside the API server (API enrichments are allowed).
32
+ """
33
+ if not secret_name or mlrun.config.is_running_as_api():
34
+ return
35
+ if AUTH_SECRET_PATTERN.match(secret_name):
36
+ raise mlrun.errors.MLRunInvalidArgumentError(
37
+ f"Forbidden secret '{secret_name}' matches MLRun auth-secret pattern."
38
+ )
39
+
40
+
28
41
  class SecretProviderInterface(ABC):
29
42
  @abstractmethod
30
43
  def store_auth_secret(
@@ -1619,11 +1619,9 @@ class RunTemplate(ModelObj):
1619
1619
  """
1620
1620
  if kind == "azure_vault" and isinstance(source, dict):
1621
1621
  candidate_secret_name = (source.get("k8s_secret") or "").strip()
1622
- if candidate_secret_name and mlrun.common.secrets.AUTH_SECRET_PATTERN.match(
1623
- candidate_secret_name
1624
- ):
1625
- raise mlrun.errors.MLRunInvalidArgumentError(
1626
- f"Forbidden secret '{candidate_secret_name}' matches MLRun auth-secret pattern."
1622
+ if candidate_secret_name:
1623
+ mlrun.common.secrets.validate_not_forbidden_secret(
1624
+ candidate_secret_name
1627
1625
  )
1628
1626
  if kind == "vault" and isinstance(source, list):
1629
1627
  source = {"project": self.metadata.project, "secrets": source}
@@ -249,6 +249,7 @@ class MonitoringApplicationContext:
249
249
  project=self.project_name,
250
250
  endpoint_id=self.endpoint_id,
251
251
  feature_analysis=True,
252
+ tsdb_metrics=False,
252
253
  )
253
254
  return self._model_endpoint
254
255
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  from abc import ABC, abstractmethod
16
16
  from datetime import datetime, timedelta
17
- from typing import Callable, ClassVar, Literal, Optional, Union
17
+ from typing import ClassVar, Literal, Optional, Union
18
18
 
19
19
  import pandas as pd
20
20
  import pydantic.v1
@@ -444,11 +444,9 @@ class TSDBConnector(ABC):
444
444
  ]
445
445
  """
446
446
 
447
- async def add_basic_metrics(
447
+ def add_basic_metrics(
448
448
  self,
449
449
  model_endpoint_objects: list[mlrun.common.schemas.ModelEndpoint],
450
- project: str,
451
- run_in_threadpool: Callable,
452
450
  metric_list: Optional[list[str]] = None,
453
451
  ) -> list[mlrun.common.schemas.ModelEndpoint]:
454
452
  raise NotImplementedError()
@@ -14,7 +14,7 @@
14
14
 
15
15
  import threading
16
16
  from datetime import datetime, timedelta
17
- from typing import Callable, Final, Literal, Optional, Union
17
+ from typing import Final, Literal, Optional, Union
18
18
 
19
19
  import pandas as pd
20
20
  import taosws
@@ -1057,7 +1057,6 @@ class TDEngineConnector(TSDBConnector):
1057
1057
  ]
1058
1058
  ):
1059
1059
  metric_objects = []
1060
-
1061
1060
  if not df_results.empty:
1062
1061
  df_results.rename(
1063
1062
  columns={
@@ -1069,7 +1068,9 @@ class TDEngineConnector(TSDBConnector):
1069
1068
  metric_objects.append(
1070
1069
  mm_schemas.ApplicationResultRecord(
1071
1070
  time=datetime.fromisoformat(
1072
- row[mm_schemas.WriterEvent.END_INFER_TIME]
1071
+ row[mm_schemas.WriterEvent.END_INFER_TIME].replace(
1072
+ " +", "+"
1073
+ )
1073
1074
  ),
1074
1075
  result_name=row[mm_schemas.ResultData.RESULT_NAME],
1075
1076
  kind=row[mm_schemas.ResultData.RESULT_KIND],
@@ -1089,7 +1090,9 @@ class TDEngineConnector(TSDBConnector):
1089
1090
  metric_objects.append(
1090
1091
  mm_schemas.ApplicationMetricRecord(
1091
1092
  time=datetime.fromisoformat(
1092
- row[mm_schemas.WriterEvent.END_INFER_TIME]
1093
+ row[mm_schemas.WriterEvent.END_INFER_TIME].replace(
1094
+ " +", "+"
1095
+ )
1093
1096
  ),
1094
1097
  metric_name=row[mm_schemas.MetricData.METRIC_NAME],
1095
1098
  value=row[mm_schemas.MetricData.METRIC_VALUE],
@@ -1248,11 +1251,9 @@ class TDEngineConnector(TSDBConnector):
1248
1251
  df.dropna(inplace=True)
1249
1252
  return df
1250
1253
 
1251
- async def add_basic_metrics(
1254
+ def add_basic_metrics(
1252
1255
  self,
1253
1256
  model_endpoint_objects: list[mlrun.common.schemas.ModelEndpoint],
1254
- project: str,
1255
- run_in_threadpool: Callable,
1256
1257
  metric_list: Optional[list[str]] = None,
1257
1258
  ) -> list[mlrun.common.schemas.ModelEndpoint]:
1258
1259
  """
@@ -1260,8 +1261,6 @@ class TDEngineConnector(TSDBConnector):
1260
1261
 
1261
1262
  :param model_endpoint_objects: A list of `ModelEndpoint` objects that will
1262
1263
  be filled with the relevant basic metrics.
1263
- :param project: The name of the project.
1264
- :param run_in_threadpool: A function that runs another function in a thread pool.
1265
1264
  :param metric_list: List of metrics to include from the time series DB. Defaults to all metrics.
1266
1265
 
1267
1266
  :return: A list of `ModelEndpointMonitoringMetric` objects.
@@ -12,9 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  import math
15
- from datetime import datetime, timedelta
15
+ from datetime import datetime, timedelta, timezone
16
16
  from io import StringIO
17
- from typing import Callable, Literal, Optional, Union
17
+ from typing import Literal, Optional, Union
18
18
 
19
19
  import pandas as pd
20
20
  import v3io_frames
@@ -1230,11 +1230,9 @@ class V3IOTSDBConnector(TSDBConnector):
1230
1230
  )
1231
1231
  return df.reset_index(drop=True)
1232
1232
 
1233
- async def add_basic_metrics(
1233
+ def add_basic_metrics(
1234
1234
  self,
1235
1235
  model_endpoint_objects: list[mlrun.common.schemas.ModelEndpoint],
1236
- project: str,
1237
- run_in_threadpool: Callable,
1238
1236
  metric_list: Optional[list[str]] = None,
1239
1237
  ) -> list[mlrun.common.schemas.ModelEndpoint]:
1240
1238
  """
@@ -1242,8 +1240,6 @@ class V3IOTSDBConnector(TSDBConnector):
1242
1240
 
1243
1241
  :param model_endpoint_objects: A list of `ModelEndpoint` objects that will
1244
1242
  be filled with the relevant basic metrics.
1245
- :param project: The name of the project.
1246
- :param run_in_threadpool: A function that runs another function in a thread pool.
1247
1243
  :param metric_list: List of metrics to include from the time series DB. Defaults to all metrics.
1248
1244
 
1249
1245
  :return: A list of `ModelEndpointMonitoringMetric` objects.
@@ -1272,8 +1268,7 @@ class V3IOTSDBConnector(TSDBConnector):
1272
1268
  function,
1273
1269
  _,
1274
1270
  ) in metric_name_to_function_and_column_name.items():
1275
- metric_name_to_result[metric_name] = await run_in_threadpool(
1276
- function,
1271
+ metric_name_to_result[metric_name] = function(
1277
1272
  endpoint_ids=uids,
1278
1273
  get_raw=True,
1279
1274
  )
@@ -1344,7 +1339,7 @@ class V3IOTSDBConnector(TSDBConnector):
1344
1339
  else:
1345
1340
  filter_query = app_filter_query
1346
1341
 
1347
- df = self._get_records(
1342
+ raw_frames: list[v3io_frames.client.RawFrame] = self._get_records(
1348
1343
  table=mm_schemas.V3IOTSDBTables.APP_RESULTS,
1349
1344
  start=start,
1350
1345
  end=end,
@@ -1353,39 +1348,33 @@ class V3IOTSDBConnector(TSDBConnector):
1353
1348
  mm_schemas.ResultData.RESULT_STATUS,
1354
1349
  ],
1355
1350
  filter_query=filter_query,
1351
+ get_raw=True,
1356
1352
  )
1357
1353
 
1358
- # filter result status
1359
- if result_status_list and not df.empty:
1360
- df = df[df[mm_schemas.ResultData.RESULT_STATUS].isin(result_status_list)]
1361
-
1362
- if df.empty:
1354
+ if not raw_frames:
1363
1355
  return {}
1364
- else:
1365
- # convert application name to lower case
1366
- df[mm_schemas.ApplicationEvent.APPLICATION_NAME] = df[
1367
- mm_schemas.ApplicationEvent.APPLICATION_NAME
1368
- ].str.lower()
1369
-
1370
- df = (
1371
- df[
1372
- [
1373
- mm_schemas.ApplicationEvent.APPLICATION_NAME,
1374
- mm_schemas.ResultData.RESULT_STATUS,
1375
- mm_schemas.ResultData.RESULT_VALUE,
1376
- ]
1377
- ]
1378
- .groupby(
1379
- [
1380
- mm_schemas.ApplicationEvent.APPLICATION_NAME,
1381
- mm_schemas.ResultData.RESULT_STATUS,
1382
- ],
1383
- observed=True,
1384
- )
1385
- .count()
1386
- )
1387
1356
 
1388
- return df[mm_schemas.ResultData.RESULT_VALUE].to_dict()
1357
+ # Count occurrences by (application_name, result_status) from RawFrame objects
1358
+ count_dict = {}
1359
+
1360
+ for frame in raw_frames:
1361
+ # Extract column data from each RawFrame
1362
+ app_name = frame.column_data(mm_schemas.ApplicationEvent.APPLICATION_NAME)[
1363
+ 0
1364
+ ]
1365
+ statuses = frame.column_data(mm_schemas.ResultData.RESULT_STATUS)
1366
+
1367
+ for status in statuses:
1368
+ # Filter by result status if specified
1369
+ if result_status_list and status not in result_status_list:
1370
+ continue
1371
+
1372
+ # Convert application name to lower case
1373
+ key = (app_name.lower(), status)
1374
+
1375
+ # Update the count in the dictionary
1376
+ count_dict[key] = count_dict.get(key, 0) + 1
1377
+ return count_dict
1389
1378
 
1390
1379
  def count_processed_model_endpoints(
1391
1380
  self,
@@ -1543,51 +1532,140 @@ class V3IOTSDBConnector(TSDBConnector):
1543
1532
  ) -> mm_schemas.ModelEndpointDriftValues:
1544
1533
  table = mm_schemas.V3IOTSDBTables.APP_RESULTS
1545
1534
  start, end, interval = self._prepare_aligned_start_end(start, end)
1546
- df = self._get_records(
1535
+ raw_frames: list[v3io_frames.client.RawFrame] = self._get_records(
1547
1536
  table=table,
1548
1537
  start=start,
1549
1538
  end=end,
1550
1539
  columns=[mm_schemas.ResultData.RESULT_STATUS],
1540
+ get_raw=True,
1551
1541
  )
1552
- df = self._aggregate_raw_drift_data(df, start, end, interval)
1553
- if df.empty:
1542
+
1543
+ if not raw_frames:
1544
+ return mm_schemas.ModelEndpointDriftValues(values=[])
1545
+
1546
+ aggregated_data = self._aggregate_raw_drift_data(
1547
+ raw_frames=raw_frames, start=start, end=end, interval=interval
1548
+ )
1549
+ if not aggregated_data:
1550
+ return mm_schemas.ModelEndpointDriftValues(values=[])
1551
+
1552
+ # Filter to only include entries with max result_status >= 1
1553
+ filtered_data = [
1554
+ (endpoint_id, timestamp, max_status)
1555
+ for endpoint_id, timestamp, max_status in aggregated_data
1556
+ if max_status >= 1
1557
+ ]
1558
+
1559
+ if not filtered_data:
1554
1560
  return mm_schemas.ModelEndpointDriftValues(values=[])
1555
- df = df[df[f"max({mm_schemas.ResultData.RESULT_STATUS})"] >= 1]
1556
- return self._df_to_drift_data(df)
1561
+
1562
+ return self._convert_drift_data_to_values(aggregated_data=filtered_data)
1557
1563
 
1558
1564
  @staticmethod
1559
1565
  def _aggregate_raw_drift_data(
1560
- df: pd.DataFrame, start: datetime, end: datetime, interval: str
1561
- ) -> pd.DataFrame:
1562
- if df.empty:
1563
- return df
1564
- if not isinstance(df.index, pd.DatetimeIndex):
1565
- raise TypeError("Expected a DatetimeIndex on the DataFrame (time index).")
1566
- df[EventFieldType.ENDPOINT_ID] = (
1567
- df[EventFieldType.ENDPOINT_ID].astype("string").str.strip()
1568
- ) # remove extra data carried by the category dtype
1569
- window = df.loc[
1570
- (df.index >= start) & (df.index < end),
1571
- [mm_schemas.ResultData.RESULT_STATUS, EventFieldType.ENDPOINT_ID],
1566
+ raw_frames: list[v3io_frames.client.RawFrame],
1567
+ start: datetime,
1568
+ end: datetime,
1569
+ interval: str,
1570
+ ) -> list[tuple[str, datetime, float]]:
1571
+ """
1572
+ Aggregate raw drift data from RawFrame objects.
1573
+
1574
+ :param raw_frames: List of RawFrame objects containing drift data.
1575
+ :param start: Start datetime for filtering data.
1576
+ :param end: End datetime for filtering data.
1577
+ :param interval: Time interval string (e.g., '5min') for aggregation
1578
+
1579
+ :returns: list of tuples: (endpoint_id, timestamp, max_result_status)
1580
+ """
1581
+ if not raw_frames:
1582
+ return []
1583
+
1584
+ # Parse interval to get timedelta
1585
+ interval_td = pd.Timedelta(interval)
1586
+
1587
+ # Collect all data points from RawFrame objects
1588
+ data_points = []
1589
+ for frame in raw_frames:
1590
+ endpoint_id = frame.column_data(EventFieldType.ENDPOINT_ID)[0]
1591
+ result_statuses = frame.column_data(mm_schemas.ResultData.RESULT_STATUS)
1592
+ timestamps = frame.indices()[0].times
1593
+
1594
+ # Combine data from this frame
1595
+ for i, (status, timestamp) in enumerate(zip(result_statuses, timestamps)):
1596
+ # V3IO TSDB returns timestamps in nanoseconds
1597
+ timestamp_dt = pd.Timestamp(
1598
+ timestamp, unit="ns", tzinfo=timezone.utc
1599
+ ).to_pydatetime()
1600
+
1601
+ # Filter by time window
1602
+ if start <= timestamp_dt < end:
1603
+ data_points.append((endpoint_id, timestamp_dt, status))
1604
+
1605
+ if not data_points:
1606
+ return []
1607
+
1608
+ # Group by endpoint_id and time intervals, then find max status
1609
+ # Create time buckets aligned to start
1610
+ grouped_data = {}
1611
+ for endpoint_id, timestamp, status in data_points:
1612
+ # Calculate which interval bucket this timestamp falls into
1613
+ time_diff = timestamp - start
1614
+ bucket_index = int(time_diff / interval_td)
1615
+ bucket_start = start + (bucket_index * interval_td)
1616
+
1617
+ key = (endpoint_id, bucket_start)
1618
+ if key not in grouped_data:
1619
+ grouped_data[key] = status
1620
+ else:
1621
+ # Keep the maximum status value
1622
+ grouped_data[key] = max(grouped_data[key], status)
1623
+
1624
+ # Convert to list of tuples
1625
+ result = [
1626
+ (endpoint_id, timestamp, max_status)
1627
+ for (endpoint_id, timestamp), max_status in grouped_data.items()
1572
1628
  ]
1573
- out = (
1574
- window.groupby(
1575
- [
1576
- EventFieldType.ENDPOINT_ID,
1577
- pd.Grouper(
1578
- freq=interval, origin=start, label="left", closed="left"
1579
- ),
1580
- ]
1581
- # align to start, [start, end) intervals
1582
- )[mm_schemas.ResultData.RESULT_STATUS]
1583
- .max()
1584
- .reset_index()
1585
- .rename(
1586
- columns={
1587
- mm_schemas.ResultData.RESULT_STATUS: f"max({mm_schemas.ResultData.RESULT_STATUS})"
1629
+
1630
+ return result
1631
+
1632
+ @staticmethod
1633
+ def _convert_drift_data_to_values(
1634
+ aggregated_data: list[tuple[str, datetime, float]],
1635
+ ) -> mm_schemas.ModelEndpointDriftValues:
1636
+ """
1637
+ Convert aggregated drift data to ModelEndpointDriftValues format.
1638
+
1639
+ :param aggregated_data: List of tuples (endpoint_id, timestamp, max_result_status)
1640
+ :return: ModelEndpointDriftValues with counts of suspected and detected per timestamp
1641
+ """
1642
+ suspected_val = mm_schemas.constants.ResultStatusApp.potential_detection.value
1643
+ detected_val = mm_schemas.constants.ResultStatusApp.detected.value
1644
+
1645
+ # Group by timestamp and result status, then count occurrences
1646
+ timestamp_status_counts = {}
1647
+ for _, timestamp, max_status in aggregated_data:
1648
+ key = (timestamp, max_status)
1649
+ timestamp_status_counts[key] = timestamp_status_counts.get(key, 0) + 1
1650
+
1651
+ # Organize by timestamp with counts for suspected and detected
1652
+ timestamp_counts = {}
1653
+ for (timestamp, status), count in timestamp_status_counts.items():
1654
+ if timestamp not in timestamp_counts:
1655
+ timestamp_counts[timestamp] = {
1656
+ "count_suspected": 0,
1657
+ "count_detected": 0,
1588
1658
  }
1589
- )
1590
- )
1591
- return out.rename(
1592
- columns={"time": "_wstart"}
1593
- ) # rename datetime column to _wstart to align with the tdengine result
1659
+
1660
+ if status == suspected_val:
1661
+ timestamp_counts[timestamp]["count_suspected"] = count
1662
+ elif status == detected_val:
1663
+ timestamp_counts[timestamp]["count_detected"] = count
1664
+
1665
+ # Convert to the expected format: list of (timestamp, count_suspected, count_detected)
1666
+ values = [
1667
+ (timestamp, counts["count_suspected"], counts["count_detected"])
1668
+ for timestamp, counts in sorted(timestamp_counts.items())
1669
+ ]
1670
+
1671
+ return mm_schemas.ModelEndpointDriftValues(values=values)
@@ -3455,11 +3455,9 @@ class MlrunProject(ModelObj):
3455
3455
  # Block using mlrun-auth-secrets.* via azure_vault's k8s_secret param (client-side only)
3456
3456
  if kind == "azure_vault" and isinstance(source, dict):
3457
3457
  candidate_secret_name = (source.get("k8s_secret") or "").strip()
3458
- if candidate_secret_name and mlrun.common.secrets.AUTH_SECRET_PATTERN.match(
3459
- candidate_secret_name
3460
- ):
3461
- raise mlrun.errors.MLRunInvalidArgumentError(
3462
- f"Forbidden secret '{candidate_secret_name}' matches MLRun auth-secret pattern."
3458
+ if candidate_secret_name:
3459
+ mlrun.common.secrets.validate_not_forbidden_secret(
3460
+ candidate_secret_name
3463
3461
  )
3464
3462
 
3465
3463
  if kind == "vault" and isinstance(source, list):
@@ -414,12 +414,8 @@ def mount_secret(
414
414
  the specified paths, and unlisted keys will not be
415
415
  present."""
416
416
 
417
- if secret_name and mlrun.common.secrets.AUTH_SECRET_PATTERN.match(
418
- secret_name.strip()
419
- ):
420
- raise mlrun.errors.MLRunInvalidArgumentError(
421
- f"Forbidden secret '{secret_name}' matches MLRun auth-secret pattern."
422
- )
417
+ if secret_name:
418
+ mlrun.common.secrets.validate_not_forbidden_secret(secret_name.strip())
423
419
 
424
420
  def _mount_secret(runtime: "KubeResource"):
425
421
  # Define the secret volume source
@@ -23,6 +23,7 @@ from nuclio import KafkaTrigger
23
23
 
24
24
  import mlrun
25
25
  import mlrun.common.schemas as schemas
26
+ import mlrun.common.secrets
26
27
  import mlrun.datastore.datastore_profile as ds_profile
27
28
  from mlrun.datastore import get_kafka_brokers_from_dict, parse_kafka_url
28
29
  from mlrun.model import ObjectList
@@ -44,7 +45,6 @@ from mlrun.serving.states import (
44
45
  )
45
46
  from mlrun.utils import get_caller_globals, logger, set_paths
46
47
 
47
- from ...common.secrets import AUTH_SECRET_PATTERN
48
48
  from .. import KubejobRuntime
49
49
  from ..pod import KubeResourceSpec
50
50
  from .function import NuclioSpec, RemoteRuntime, min_nuclio_versions
@@ -638,11 +638,9 @@ class ServingRuntime(RemoteRuntime):
638
638
  """
639
639
  if kind == "azure_vault" and isinstance(source, dict):
640
640
  candidate_secret_name = (source.get("k8s_secret") or "").strip()
641
- if candidate_secret_name and AUTH_SECRET_PATTERN.match(
642
- candidate_secret_name
643
- ):
644
- raise mlrun.errors.MLRunInvalidArgumentError(
645
- f"Forbidden secret '{candidate_secret_name}' matches MLRun auth-secret pattern."
641
+ if candidate_secret_name:
642
+ mlrun.common.secrets.validate_not_forbidden_secret(
643
+ candidate_secret_name
646
644
  )
647
645
  if kind == "vault" and isinstance(source, list):
648
646
  source = {"project": self.metadata.project, "secrets": source}
@@ -27,6 +27,7 @@ import kubernetes.client as k8s_client
27
27
  from kubernetes.client import V1Volume, V1VolumeMount
28
28
 
29
29
  import mlrun.common.constants
30
+ import mlrun.common.secrets
30
31
  import mlrun.errors
31
32
  import mlrun.runtimes.mounts
32
33
  import mlrun.utils.regex
@@ -35,7 +36,6 @@ from mlrun.common.schemas import (
35
36
  SecurityContextEnrichmentModes,
36
37
  )
37
38
 
38
- from ..common.secrets import AUTH_SECRET_PATTERN
39
39
  from ..config import config as mlconf
40
40
  from ..k8s_utils import (
41
41
  generate_preemptible_nodes_affinity_terms,
@@ -716,21 +716,16 @@ class KubeResource(BaseRuntime):
716
716
  secret: Optional[str] = None,
717
717
  secret_key: Optional[str] = None,
718
718
  ):
719
- """Set env var from secret; block auth-secret usage on client side."""
720
- self._validate_no_auth_secret(
721
- secret_name=secret,
722
- )
723
- secret_key = secret_key or name
719
+ """
720
+ Set an environment variable from a Kubernetes Secret.
721
+ Client-side guard forbids MLRun internal auth/project secrets; no-op on API.
722
+ """
723
+ mlrun.common.secrets.validate_not_forbidden_secret(secret)
724
+ key = secret_key or name
724
725
  value_from = k8s_client.V1EnvVarSource(
725
- secret_key_ref=k8s_client.V1SecretKeySelector(
726
- name=secret,
727
- key=secret_key,
728
- )
729
- )
730
- return self._set_env(
731
- name=name,
732
- value_from=value_from,
726
+ secret_key_ref=k8s_client.V1SecretKeySelector(name=secret, key=key)
733
727
  )
728
+ return self._set_env(name=name, value_from=value_from)
734
729
 
735
730
  def set_env(
736
731
  self,
@@ -738,16 +733,22 @@ class KubeResource(BaseRuntime):
738
733
  value: Optional[str] = None,
739
734
  value_from: Optional[typing.Any] = None,
740
735
  ):
741
- """Set env var; block auth-secret usage when coming from a secret."""
736
+ """
737
+ Set an environment variable.
738
+ If value comes from a Secret, validate on client-side only.
739
+ """
742
740
  if value_from is not None:
743
741
  secret_name = self._extract_secret_name_from_value_from(
744
- value_from=value_from,
745
- )
746
- self._validate_no_auth_secret(
747
- secret_name=secret_name,
742
+ value_from=value_from
748
743
  )
749
- return self._set_env(name, value_from=value_from)
750
- return self._set_env(name, value=str(value) if value is not None else None)
744
+ if secret_name:
745
+ mlrun.common.secrets.validate_not_forbidden_secret(secret_name)
746
+ return self._set_env(name=name, value_from=value_from)
747
+
748
+ # Plain literal value path
749
+ return self._set_env(
750
+ name=name, value=(str(value) if value is not None else None)
751
+ )
751
752
 
752
753
  def with_annotations(self, annotations: dict):
753
754
  """set a key/value annotations in the metadata of the pod"""
@@ -1393,16 +1394,6 @@ class KubeResource(BaseRuntime):
1393
1394
 
1394
1395
  return self.status.state
1395
1396
 
1396
- @staticmethod
1397
- def _validate_no_auth_secret(
1398
- secret_name: Optional[str],
1399
- ):
1400
- """Raise if secret name matches MLRun auth-secret pattern."""
1401
- if secret_name and AUTH_SECRET_PATTERN.match(secret_name):
1402
- raise mlrun.errors.MLRunInvalidArgumentError(
1403
- f"Forbidden secret '{secret_name}' matches MLRun auth-secret pattern."
1404
- )
1405
-
1406
1397
  @staticmethod
1407
1398
  def _extract_secret_name_from_value_from(
1408
1399
  value_from: typing.Any,