mlrun 1.10.0rc22__tar.gz → 1.10.0rc24__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.
- {mlrun-1.10.0rc22/mlrun.egg-info → mlrun-1.10.0rc24}/PKG-INFO +2 -2
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/model_monitoring/functions.py +13 -4
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/config.py +5 -1
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/datastore.py +6 -1
- mlrun-1.10.0rc24/mlrun/datastore/model_provider/mock_model_provider.py +87 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/model_provider/model_provider.py +5 -5
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/model_provider/openai_provider.py +44 -13
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/k8s_utils.py +105 -2
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/controller.py +1 -1
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/application/application.py +15 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/server.py +24 -7
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/states.py +191 -61
- mlrun-1.10.0rc24/mlrun/utils/version/version.json +4 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24/mlrun.egg-info}/PKG-INFO +2 -2
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun.egg-info/SOURCES.txt +1 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun.egg-info/requires.txt +1 -1
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/requirements.txt +1 -1
- mlrun-1.10.0rc22/mlrun/utils/version/version.json +0 -4
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/LICENSE +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/MANIFEST.in +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/Makefile +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/README.md +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/dependencies.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/dev-requirements.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/dockerfiles/mlrun-api/requirements.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/archive.zip +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/function.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/infile.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/load-project.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_basics.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_dask.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_db.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_export_import.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_jobs.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_sparkk8s.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/mlrun_vault.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/model.bst +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/new-project.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/nulltst.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/params.csv +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/remote-spark.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/secrets.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/spark-function.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/training.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/v2_model_server.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/examples/xgb_serving.ipynb +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/extras-requirements.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/__main__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/alerts/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/alerts/alert.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/dataset.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/document.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/helpers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/llm_prompt.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/manager.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/model.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/artifacts/plots.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/constants.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/db/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/db/dialects.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/artifact.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/feature_set.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/function.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/model_endpoint.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/pipeline.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/project.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/formatters/run.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/helpers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/runtimes/constants.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/alert.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/api_gateway.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/artifact.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/auth.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/background_task.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/client_spec.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/clusterization_spec.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/common.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/constants.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/datastore_profile.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/events.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/feature_store.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/frontend_spec.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/function.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/http.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/hub.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/k8s.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/memory_reports.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/notification.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/object.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/pagination.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/partition.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/pipeline.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/project.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/regex.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/runs.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/runtime_resource.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/schedule.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/secret.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/serving.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/tag.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/schemas/workflow.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/secrets.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/common/types.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/data_types/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/data_types/data_types.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/data_types/infer.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/data_types/spark.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/data_types/to_pandas.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/alibaba_oss.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/azure_blob.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/datastore_profile.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/dbfs_store.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/filestore.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/google_cloud_storage.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/hdfs.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/inmem.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/model_provider/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/redis.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/remote_client.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/s3.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/snowflake_utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/sources.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/spark_udf.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/spark_utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/store_resources.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/storeytargets.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/targets.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/v3io.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/vectorstore.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/wasbfs/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/datastore/wasbfs/fs.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/db/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/db/auth_utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/db/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/db/factory.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/db/httpdb.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/db/nopdb.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/errors.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/execution.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/api.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/common.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/feature_set.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/feature_vector.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/feature_vector_utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/ingestion.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/job.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/local_merger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/feature_store/steps.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/features.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/producer.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_common/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_dl_common/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/producer.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/_ml_common/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/huggingface/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/huggingface/model_server.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/model_server.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/lgbm/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/onnx/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/onnx/dataset.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/onnx/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/onnx/model_server.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/parallel_coordinates.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/model_server.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/pytorch/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/estimator.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/metric.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/sklearn/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/model_server.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/tf_keras/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/xgboost/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/xgboost/model_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/frameworks/xgboost/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/launcher/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/launcher/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/launcher/client.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/launcher/factory.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/launcher/local.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/launcher/remote.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/lists.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/api.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/context.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/applications/results.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/_schedules.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/_stats.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/features_drift_table.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/metrics/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/stream_processing.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/model_monitoring/writer.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/context_handler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/errors.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packager.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packagers/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packagers/default_packager.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packagers/numpy_packagers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packagers/pandas_packagers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/packagers_manager.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/_archiver.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/_formatter.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/_pickler.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/_supported_format.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/log_hint_utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/package/utils/type_hint_utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/platforms/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/platforms/iguazio.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/projects/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/projects/operations.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/projects/pipelines.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/projects/project.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/render.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/run.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/daskjob.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/databricks_job/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/funcdoc.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/function_reference.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/generators.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/kubejob.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/local.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/mounts.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/mpijob/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/mpijob/abstract.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/mpijob/v1.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/function.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/nuclio.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/nuclio/serving.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/pod.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/remotesparkjob.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/sparkjob/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/runtimes/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/secrets.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/merger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/remote.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/routers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/serving_wrapper.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/system_steps.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/utils.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/v1_serving.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/serving/v2_serving.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/track/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/track/tracker.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/track/tracker_manager.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/track/trackers/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/track/trackers/mlflow_tracker.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/async_http.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/azure_vault.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/clones.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/condition_evaluator.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/helpers.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/http.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/logger.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/base.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/console.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/git.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/ipython.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/mail.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/slack.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification/webhook.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/notifications/notification_pusher.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/regex.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/retryer.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/singleton.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/v3io_clients.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/vault.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/version/__init__.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun/utils/version/version.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun.egg-info/dependency_links.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun.egg-info/entry_points.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun.egg-info/not-zip-safe +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/mlrun.egg-info/top_level.txt +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/packages.py +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/pyproject.toml +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/setup.cfg +0 -0
- {mlrun-1.10.0rc22 → mlrun-1.10.0rc24}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.0rc24
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -45,7 +45,7 @@ Requires-Dist: semver~=3.0
|
|
|
45
45
|
Requires-Dist: dependency-injector~=4.41
|
|
46
46
|
Requires-Dist: fsspec<2024.7,>=2023.9.2
|
|
47
47
|
Requires-Dist: v3iofs~=0.1.17
|
|
48
|
-
Requires-Dist: storey~=1.10.
|
|
48
|
+
Requires-Dist: storey~=1.10.11
|
|
49
49
|
Requires-Dist: inflection~=0.5.0
|
|
50
50
|
Requires-Dist: python-dotenv~=1.0
|
|
51
51
|
Requires-Dist: setuptools>=75.2
|
|
@@ -54,12 +54,21 @@ class FunctionSummary(BaseModel):
|
|
|
54
54
|
|
|
55
55
|
return cls(
|
|
56
56
|
type=func_type,
|
|
57
|
-
name=func_dict["metadata"]["name"]
|
|
57
|
+
name=func_dict["metadata"]["name"]
|
|
58
|
+
if func_type != FunctionsType.APPLICATION
|
|
59
|
+
else func_dict["spec"]
|
|
60
|
+
.get("graph", {})
|
|
61
|
+
.get("steps", {})
|
|
62
|
+
.get("PrepareMonitoringEvent", {})
|
|
63
|
+
.get("class_args", {})
|
|
64
|
+
.get("application_name"),
|
|
58
65
|
application_class=""
|
|
59
66
|
if func_type != FunctionsType.APPLICATION
|
|
60
|
-
else func_dict["spec"]
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
else func_dict["spec"]
|
|
68
|
+
.get("graph", {})
|
|
69
|
+
.get("steps", {})
|
|
70
|
+
.get("PushToMonitoringWriter", {})
|
|
71
|
+
.get("after", [None])[0],
|
|
63
72
|
project_name=func_dict["metadata"]["project"],
|
|
64
73
|
updated_time=func_dict["metadata"].get("updated"),
|
|
65
74
|
status=func_dict["status"].get("state"),
|
|
@@ -107,7 +107,11 @@ default_config = {
|
|
|
107
107
|
"submit_timeout": "280", # timeout when submitting a new k8s resource
|
|
108
108
|
# runtimes cleanup interval in seconds
|
|
109
109
|
"runtimes_cleanup_interval": "300",
|
|
110
|
-
|
|
110
|
+
# disabled by default due to an internal bug in serving functions
|
|
111
|
+
# relying on a background task to hold the status for its model endpoints
|
|
112
|
+
# TODO: need to refine what/when we can delete the background tasks
|
|
113
|
+
# e.g: use labels or naming convention.
|
|
114
|
+
"background_task_cleanup_interval": "0",
|
|
111
115
|
"background_task_max_age": "21600", # 6 hours in seconds
|
|
112
116
|
"monitoring": {
|
|
113
117
|
"runs": {
|
|
@@ -39,6 +39,7 @@ from .base import DataItem, DataStore, HttpStore
|
|
|
39
39
|
from .filestore import FileStore
|
|
40
40
|
from .inmem import InMemoryStore
|
|
41
41
|
from .model_provider.huggingface_provider import HuggingFaceProvider
|
|
42
|
+
from .model_provider.mock_model_provider import MockModelProvider
|
|
42
43
|
from .model_provider.openai_provider import OpenAIProvider
|
|
43
44
|
from .store_resources import get_store_resource, is_store_uri
|
|
44
45
|
from .v3io import V3ioStore
|
|
@@ -103,7 +104,11 @@ def schema_to_store(schema) -> DataStore.__subclasses__():
|
|
|
103
104
|
def schema_to_model_provider(
|
|
104
105
|
schema: str, raise_missing_schema_exception=True
|
|
105
106
|
) -> type[ModelProvider]:
|
|
106
|
-
schema_dict = {
|
|
107
|
+
schema_dict = {
|
|
108
|
+
"openai": OpenAIProvider,
|
|
109
|
+
"huggingface": HuggingFaceProvider,
|
|
110
|
+
"mock": MockModelProvider,
|
|
111
|
+
}
|
|
107
112
|
provider_class = schema_dict.get(schema, None)
|
|
108
113
|
if not provider_class:
|
|
109
114
|
if raise_missing_schema_exception:
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Copyright 2023 Iguazio
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from typing import Any, Optional, Union
|
|
16
|
+
|
|
17
|
+
import mlrun
|
|
18
|
+
from mlrun.datastore.model_provider.model_provider import (
|
|
19
|
+
InvokeResponseFormat,
|
|
20
|
+
ModelProvider,
|
|
21
|
+
UsageResponseKeys,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class MockModelProvider(ModelProvider):
|
|
26
|
+
support_async = False
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
parent,
|
|
31
|
+
kind,
|
|
32
|
+
name,
|
|
33
|
+
endpoint="",
|
|
34
|
+
secrets: Optional[dict] = None,
|
|
35
|
+
default_invoke_kwargs: Optional[dict] = None,
|
|
36
|
+
):
|
|
37
|
+
super().__init__(
|
|
38
|
+
parent=parent, name=name, kind=kind, endpoint=endpoint, secrets=secrets
|
|
39
|
+
)
|
|
40
|
+
self.default_invoke_kwargs = default_invoke_kwargs or {}
|
|
41
|
+
self._client = None
|
|
42
|
+
self._async_client = None
|
|
43
|
+
|
|
44
|
+
@staticmethod
|
|
45
|
+
def _extract_string_output(response: Any) -> str:
|
|
46
|
+
"""
|
|
47
|
+
Extracts string response from response object
|
|
48
|
+
"""
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
def load_client(self) -> None:
|
|
52
|
+
"""
|
|
53
|
+
Initializes the SDK client for the model provider with the given keyword arguments
|
|
54
|
+
and assigns it to an instance attribute (e.g., self._client).
|
|
55
|
+
|
|
56
|
+
Subclasses should override this method to:
|
|
57
|
+
- Create and configure the provider-specific client instance.
|
|
58
|
+
- Assign the client instance to self._client.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
pass
|
|
62
|
+
|
|
63
|
+
def invoke(
|
|
64
|
+
self,
|
|
65
|
+
messages: Union[list[dict], Any],
|
|
66
|
+
invoke_response_format: InvokeResponseFormat = InvokeResponseFormat.FULL,
|
|
67
|
+
**invoke_kwargs,
|
|
68
|
+
) -> Union[str, dict[str, Any], Any]:
|
|
69
|
+
if invoke_response_format == InvokeResponseFormat.STRING:
|
|
70
|
+
return (
|
|
71
|
+
"You are using a mock model provider, no actual inference is performed."
|
|
72
|
+
)
|
|
73
|
+
elif invoke_response_format == InvokeResponseFormat.FULL:
|
|
74
|
+
return {
|
|
75
|
+
UsageResponseKeys.USAGE: {"prompt_tokens": 0, "completion_tokens": 0},
|
|
76
|
+
UsageResponseKeys.ANSWER: "You are using a mock model provider, no actual inference is performed.",
|
|
77
|
+
"extra": {},
|
|
78
|
+
}
|
|
79
|
+
elif invoke_response_format == InvokeResponseFormat.USAGE:
|
|
80
|
+
return {
|
|
81
|
+
UsageResponseKeys.ANSWER: "You are using a mock model provider, no actual inference is performed.",
|
|
82
|
+
UsageResponseKeys.USAGE: {"prompt_tokens": 0, "completion_tokens": 0},
|
|
83
|
+
}
|
|
84
|
+
else:
|
|
85
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
86
|
+
f"Unsupported invoke response format: {invoke_response_format}"
|
|
87
|
+
)
|
|
@@ -128,16 +128,16 @@ class ModelProvider(BaseRemoteClient):
|
|
|
128
128
|
|
|
129
129
|
def load_client(self) -> None:
|
|
130
130
|
"""
|
|
131
|
-
|
|
132
|
-
and assigns it to an instance attribute (e.g., self._client).
|
|
131
|
+
Initialize the SDK client for the model provider and assign it to an instance attribute.
|
|
133
132
|
|
|
134
|
-
Subclasses should override this method to
|
|
135
|
-
- Create and configure the provider-specific client instance.
|
|
136
|
-
- Assign the client instance to self._client.
|
|
133
|
+
Subclasses should override this method to create and configure the provider-specific client.
|
|
137
134
|
"""
|
|
138
135
|
|
|
139
136
|
raise NotImplementedError("load_client method is not implemented")
|
|
140
137
|
|
|
138
|
+
def load_async_client(self) -> Any:
|
|
139
|
+
raise NotImplementedError("load_async_client method is not implemented")
|
|
140
|
+
|
|
141
141
|
@property
|
|
142
142
|
def client(self) -> Any:
|
|
143
143
|
return self._client
|
|
@@ -67,7 +67,6 @@ class OpenAIProvider(ModelProvider):
|
|
|
67
67
|
default_invoke_kwargs=default_invoke_kwargs,
|
|
68
68
|
)
|
|
69
69
|
self.options = self.get_client_options()
|
|
70
|
-
self.load_client()
|
|
71
70
|
|
|
72
71
|
@classmethod
|
|
73
72
|
def _import_response_class(cls) -> None:
|
|
@@ -98,24 +97,56 @@ class OpenAIProvider(ModelProvider):
|
|
|
98
97
|
subpath = ""
|
|
99
98
|
return endpoint, subpath
|
|
100
99
|
|
|
100
|
+
@property
|
|
101
|
+
def client(self) -> Any:
|
|
102
|
+
"""
|
|
103
|
+
Lazily return the synchronous OpenAI client.
|
|
104
|
+
|
|
105
|
+
If the client has not been initialized yet, it will be created
|
|
106
|
+
by calling `load_client`.
|
|
107
|
+
"""
|
|
108
|
+
self.load_client()
|
|
109
|
+
return self._client
|
|
110
|
+
|
|
101
111
|
def load_client(self) -> None:
|
|
102
112
|
"""
|
|
103
|
-
|
|
113
|
+
Lazily initialize the synchronous OpenAI client.
|
|
114
|
+
|
|
115
|
+
The client is created only if it does not already exist.
|
|
116
|
+
Raises ImportError if the openai package is not installed.
|
|
117
|
+
"""
|
|
118
|
+
if not self._client:
|
|
119
|
+
try:
|
|
120
|
+
from openai import OpenAI # noqa
|
|
121
|
+
|
|
122
|
+
self._client = OpenAI(**self.options)
|
|
123
|
+
except ImportError as exc:
|
|
124
|
+
raise ImportError("openai package is not installed") from exc
|
|
125
|
+
|
|
126
|
+
def load_async_client(self) -> None:
|
|
127
|
+
"""
|
|
128
|
+
Lazily initialize the asynchronous OpenAI client.
|
|
129
|
+
|
|
130
|
+
The client is created only if it does not already exist.
|
|
131
|
+
Raises ImportError if the openai package is not installed.
|
|
132
|
+
"""
|
|
133
|
+
if not self._async_client:
|
|
134
|
+
try:
|
|
135
|
+
from openai import AsyncOpenAI # noqa
|
|
104
136
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
137
|
+
self._async_client = AsyncOpenAI(**self.options)
|
|
138
|
+
except ImportError as exc:
|
|
139
|
+
raise ImportError("openai package is not installed") from exc
|
|
108
140
|
|
|
109
|
-
|
|
110
|
-
|
|
141
|
+
@property
|
|
142
|
+
def async_client(self) -> Any:
|
|
111
143
|
"""
|
|
112
|
-
|
|
113
|
-
from openai import OpenAI, AsyncOpenAI # noqa
|
|
144
|
+
Return the asynchronous OpenAI client, creating it on first access.
|
|
114
145
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
146
|
+
The client is lazily initialized via `load_async_client`.
|
|
147
|
+
"""
|
|
148
|
+
self.load_async_client()
|
|
149
|
+
return self._async_client
|
|
119
150
|
|
|
120
151
|
def get_client_options(self) -> dict:
|
|
121
152
|
res = dict(
|
|
@@ -26,6 +26,10 @@ from .config import config as mlconfig
|
|
|
26
26
|
|
|
27
27
|
_running_inside_kubernetes_cluster = None
|
|
28
28
|
|
|
29
|
+
K8sObj = typing.Union[kubernetes.client.V1Affinity, kubernetes.client.V1Toleration]
|
|
30
|
+
SanitizedK8sObj = dict[str, typing.Any]
|
|
31
|
+
K8sObjList = typing.Union[list[K8sObj], list[SanitizedK8sObj]]
|
|
32
|
+
|
|
29
33
|
|
|
30
34
|
def is_running_inside_kubernetes_cluster():
|
|
31
35
|
global _running_inside_kubernetes_cluster
|
|
@@ -232,6 +236,54 @@ def validate_node_selectors(
|
|
|
232
236
|
return True
|
|
233
237
|
|
|
234
238
|
|
|
239
|
+
def sanitize_k8s_objects(
|
|
240
|
+
k8s_objects: typing.Union[None, K8sObjList, SanitizedK8sObj, K8sObj],
|
|
241
|
+
) -> typing.Union[list[SanitizedK8sObj], SanitizedK8sObj]:
|
|
242
|
+
"""Convert K8s objects to dicts. Handles single objects or lists."""
|
|
243
|
+
api_client = kubernetes.client.ApiClient()
|
|
244
|
+
if not k8s_objects:
|
|
245
|
+
return k8s_objects
|
|
246
|
+
|
|
247
|
+
def _sanitize_k8s_object(k8s_obj):
|
|
248
|
+
return (
|
|
249
|
+
api_client.sanitize_for_serialization(k8s_obj)
|
|
250
|
+
if hasattr(k8s_obj, "to_dict")
|
|
251
|
+
else k8s_obj
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
return (
|
|
255
|
+
[_sanitize_k8s_object(k8s_obj) for k8s_obj in k8s_objects]
|
|
256
|
+
if isinstance(k8s_objects, list)
|
|
257
|
+
else _sanitize_k8s_object(k8s_objects)
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def sanitize_scheduling_configuration(
|
|
262
|
+
tolerations: typing.Optional[list[kubernetes.client.V1Toleration]] = None,
|
|
263
|
+
affinity: typing.Optional[kubernetes.client.V1Affinity] = None,
|
|
264
|
+
) -> tuple[
|
|
265
|
+
typing.Optional[list[dict]],
|
|
266
|
+
typing.Optional[dict],
|
|
267
|
+
]:
|
|
268
|
+
"""
|
|
269
|
+
Sanitizes pod scheduling configuration for serialization.
|
|
270
|
+
|
|
271
|
+
Takes affinity and tolerations and converts them to
|
|
272
|
+
JSON-serializable dictionaries using the Kubernetes API client's
|
|
273
|
+
sanitization method.
|
|
274
|
+
|
|
275
|
+
Args:
|
|
276
|
+
affinity: Pod affinity/anti-affinity rules
|
|
277
|
+
tolerations: List of toleration rules
|
|
278
|
+
|
|
279
|
+
Returns:
|
|
280
|
+
Tuple of (sanitized_affinity, sanitized_tolerations)
|
|
281
|
+
- affinity: Sanitized dict representation or None
|
|
282
|
+
- tolerations: List of sanitized dict representations or None
|
|
283
|
+
"""
|
|
284
|
+
return sanitize_k8s_objects(tolerations), sanitize_k8s_objects(affinity)
|
|
285
|
+
|
|
286
|
+
|
|
235
287
|
def enrich_preemption_mode(
|
|
236
288
|
preemption_mode: typing.Optional[str],
|
|
237
289
|
node_selector: dict[str, str],
|
|
@@ -269,8 +321,8 @@ def enrich_preemption_mode(
|
|
|
269
321
|
)
|
|
270
322
|
|
|
271
323
|
enriched_node_selector = copy.deepcopy(node_selector or {})
|
|
272
|
-
enriched_tolerations =
|
|
273
|
-
enriched_affinity =
|
|
324
|
+
enriched_tolerations = _safe_copy_tolerations(tolerations or [])
|
|
325
|
+
enriched_affinity = _safe_copy_affinity(affinity)
|
|
274
326
|
preemptible_tolerations = generate_preemptible_tolerations()
|
|
275
327
|
|
|
276
328
|
if handler := _get_mode_handler(preemption_mode):
|
|
@@ -288,6 +340,57 @@ def enrich_preemption_mode(
|
|
|
288
340
|
)
|
|
289
341
|
|
|
290
342
|
|
|
343
|
+
def _safe_copy_tolerations(
|
|
344
|
+
tolerations: list[kubernetes.client.V1Toleration],
|
|
345
|
+
) -> list[kubernetes.client.V1Toleration]:
|
|
346
|
+
"""
|
|
347
|
+
Safely copy a list of V1Toleration objects without mutating the originals.
|
|
348
|
+
|
|
349
|
+
Explicitly reconstructs V1Toleration objects instead of using deepcopy() to avoid
|
|
350
|
+
serialization errors with K8s client objects that contain threading primitives
|
|
351
|
+
and non-copyable elements like RLock objects.
|
|
352
|
+
|
|
353
|
+
Args:
|
|
354
|
+
tolerations: List of V1Toleration objects to copy
|
|
355
|
+
|
|
356
|
+
Returns:
|
|
357
|
+
New list containing copied V1Toleration objects with identical field values"""
|
|
358
|
+
return [
|
|
359
|
+
kubernetes.client.V1Toleration(
|
|
360
|
+
effect=toleration.effect,
|
|
361
|
+
key=toleration.key,
|
|
362
|
+
value=toleration.value,
|
|
363
|
+
operator=toleration.operator,
|
|
364
|
+
toleration_seconds=toleration.toleration_seconds,
|
|
365
|
+
)
|
|
366
|
+
for toleration in tolerations
|
|
367
|
+
]
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
def _safe_copy_affinity(
|
|
371
|
+
affinity: kubernetes.client.V1Affinity,
|
|
372
|
+
) -> kubernetes.client.V1Affinity:
|
|
373
|
+
"""
|
|
374
|
+
Safely create a deep copy of a V1Affinity object.
|
|
375
|
+
|
|
376
|
+
Uses K8s API client serialization/deserialization instead of deepcopy() to avoid
|
|
377
|
+
errors with threading primitives and complex internal structures in K8s objects.
|
|
378
|
+
Serializes to dict then deserializes back to a clean V1Affinity object.
|
|
379
|
+
|
|
380
|
+
Args:
|
|
381
|
+
affinity: V1Affinity object to copy, or None
|
|
382
|
+
|
|
383
|
+
Returns:
|
|
384
|
+
New V1Affinity object with identical field values, or None if input was None
|
|
385
|
+
"""
|
|
386
|
+
if not affinity:
|
|
387
|
+
return None
|
|
388
|
+
api_client = kubernetes.client.ApiClient()
|
|
389
|
+
# Convert to dict then back to object properly
|
|
390
|
+
affinity_dict = api_client.sanitize_for_serialization(affinity)
|
|
391
|
+
return api_client._ApiClient__deserialize(affinity_dict, "V1Affinity")
|
|
392
|
+
|
|
393
|
+
|
|
291
394
|
def _get_mode_handler(mode: str):
|
|
292
395
|
return {
|
|
293
396
|
mlrun.common.schemas.PreemptionModes.prevent: _handle_prevent_mode,
|
|
@@ -859,7 +859,7 @@ class MonitoringApplicationController:
|
|
|
859
859
|
for endpoint in endpoints:
|
|
860
860
|
last_request = last_request_dict.get(endpoint.metadata.uid, None)
|
|
861
861
|
if isinstance(last_request, float):
|
|
862
|
-
last_request = pd.to_datetime(last_request, unit="
|
|
862
|
+
last_request = pd.to_datetime(last_request, unit="ms", utc=True)
|
|
863
863
|
endpoint.status.last_request = (
|
|
864
864
|
last_request or endpoint.status.last_request
|
|
865
865
|
)
|
|
@@ -79,6 +79,10 @@ class ApplicationSpec(NuclioSpec):
|
|
|
79
79
|
add_templated_ingress_host_mode=None,
|
|
80
80
|
state_thresholds=None,
|
|
81
81
|
disable_default_http_trigger=None,
|
|
82
|
+
serving_spec=None,
|
|
83
|
+
graph=None,
|
|
84
|
+
parameters=None,
|
|
85
|
+
track_models=None,
|
|
82
86
|
internal_application_port=None,
|
|
83
87
|
application_ports=None,
|
|
84
88
|
):
|
|
@@ -120,6 +124,10 @@ class ApplicationSpec(NuclioSpec):
|
|
|
120
124
|
security_context=security_context,
|
|
121
125
|
service_type=service_type,
|
|
122
126
|
add_templated_ingress_host_mode=add_templated_ingress_host_mode,
|
|
127
|
+
serving_spec=serving_spec,
|
|
128
|
+
graph=graph,
|
|
129
|
+
parameters=parameters,
|
|
130
|
+
track_models=track_models,
|
|
123
131
|
state_thresholds=state_thresholds,
|
|
124
132
|
disable_default_http_trigger=disable_default_http_trigger,
|
|
125
133
|
)
|
|
@@ -186,6 +194,13 @@ class ApplicationSpec(NuclioSpec):
|
|
|
186
194
|
is_valid_port(port, raise_on_error=True)
|
|
187
195
|
self._internal_application_port = port
|
|
188
196
|
|
|
197
|
+
# If when internal application port is being set, length of self._application_ports is 1,
|
|
198
|
+
# it means that it consist of [old_port] only
|
|
199
|
+
# so in this case, we rewrite the list completely, by setting value to [new_value]
|
|
200
|
+
if len(self.application_ports) == 1:
|
|
201
|
+
self._application_ports = [port]
|
|
202
|
+
return
|
|
203
|
+
|
|
189
204
|
# when setting new internal application port, ensure that it is included in the application ports
|
|
190
205
|
# it just triggers setter logic, so setting to the same value is a no-op
|
|
191
206
|
self.application_ports = self._application_ports
|
|
@@ -17,8 +17,10 @@ __all__ = ["GraphServer", "create_graph_server", "GraphContext", "MockEvent"]
|
|
|
17
17
|
import asyncio
|
|
18
18
|
import base64
|
|
19
19
|
import copy
|
|
20
|
+
import importlib
|
|
20
21
|
import json
|
|
21
22
|
import os
|
|
23
|
+
import pathlib
|
|
22
24
|
import socket
|
|
23
25
|
import traceback
|
|
24
26
|
import uuid
|
|
@@ -572,19 +574,34 @@ async def async_execute_graph(
|
|
|
572
574
|
nest_under_inputs: bool,
|
|
573
575
|
) -> list[Any]:
|
|
574
576
|
spec = mlrun.utils.get_serving_spec()
|
|
575
|
-
|
|
576
|
-
namespace = {}
|
|
577
|
+
modname = None
|
|
577
578
|
code = os.getenv("MLRUN_EXEC_CODE")
|
|
578
579
|
if code:
|
|
579
580
|
code = base64.b64decode(code).decode("utf-8")
|
|
580
|
-
|
|
581
|
+
with open("user_code.py", "w") as fp:
|
|
582
|
+
fp.write(code)
|
|
583
|
+
modname = "user_code"
|
|
581
584
|
else:
|
|
582
585
|
# TODO: find another way to get the local file path, or ensure that MLRUN_EXEC_CODE
|
|
583
586
|
# gets set in local flow and not just in the remote pod
|
|
584
|
-
|
|
585
|
-
if
|
|
586
|
-
|
|
587
|
-
|
|
587
|
+
source_file_path = spec.get("filename", None)
|
|
588
|
+
if source_file_path:
|
|
589
|
+
source_file_path_object = pathlib.Path(source_file_path).resolve()
|
|
590
|
+
current_dir_path_object = pathlib.Path(".").resolve()
|
|
591
|
+
if not source_file_path_object.is_relative_to(current_dir_path_object):
|
|
592
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
593
|
+
f"Source file path '{source_file_path}' is not under the current working directory "
|
|
594
|
+
f"(which is required when running with local=True)"
|
|
595
|
+
)
|
|
596
|
+
relative_path_to_source_file = source_file_path_object.relative_to(
|
|
597
|
+
current_dir_path_object
|
|
598
|
+
)
|
|
599
|
+
modname = ".".join(relative_path_to_source_file.with_suffix("").parts)
|
|
600
|
+
|
|
601
|
+
namespace = {}
|
|
602
|
+
if modname:
|
|
603
|
+
mod = importlib.import_module(modname)
|
|
604
|
+
namespace = mod.__dict__
|
|
588
605
|
|
|
589
606
|
server = GraphServer.from_dict(spec)
|
|
590
607
|
|