mlrun 1.10.0rc33__tar.gz → 1.10.0rc35__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mlrun might be problematic. Click here for more details.
- {mlrun-1.10.0rc33/mlrun.egg-info → mlrun-1.10.0rc35}/PKG-INFO +2 -2
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/dependencies.py +1 -1
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/__init__.py +1 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/__init__.py +1 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/azure_blob.py +12 -1
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/base.py +88 -54
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/project.py +9 -3
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/run.py +26 -18
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/application/application.py +6 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/server.py +2 -13
- mlrun-1.10.0rc35/mlrun/serving/steps.py +62 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/helpers.py +30 -3
- mlrun-1.10.0rc35/mlrun/utils/version/version.json +4 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35/mlrun.egg-info}/PKG-INFO +2 -2
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/SOURCES.txt +1 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/requires.txt +1 -1
- mlrun-1.10.0rc33/mlrun/utils/version/version.json +0 -4
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/LICENSE +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/MANIFEST.in +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/Makefile +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/README.md +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/dev-requirements.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/dockerfiles/mlrun-api/requirements.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/archive.zip +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/function.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/infile.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/load-project.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_basics.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_dask.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_db.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_export_import.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_jobs.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_sparkk8s.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/mlrun_vault.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/model.bst +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/new-project.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/nulltst.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/params.csv +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/remote-spark.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/secrets.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/spark-function.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/training.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/v2_model_server.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/examples/xgb_serving.ipynb +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/extras-requirements.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/__main__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/alerts/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/alerts/alert.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/dataset.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/document.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/helpers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/llm_prompt.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/manager.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/model.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/artifacts/plots.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/constants.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/db/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/db/dialects.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/artifact.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/feature_set.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/function.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/model_endpoint.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/pipeline.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/project.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/formatters/run.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/helpers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/runtimes/constants.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/alert.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/api_gateway.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/artifact.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/auth.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/background_task.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/client_spec.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/clusterization_spec.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/common.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/constants.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/datastore_profile.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/events.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/feature_store.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/frontend_spec.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/function.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/http.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/hub.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/k8s.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/memory_reports.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/constants.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/notification.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/object.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/pagination.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/partition.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/pipeline.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/project.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/regex.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/runs.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/runtime_resource.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/schedule.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/secret.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/serving.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/tag.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/schemas/workflow.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/secrets.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/common/types.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/config.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/data_types.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/infer.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/spark.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/data_types/to_pandas.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/alibaba_oss.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/datastore.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/datastore_profile.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/dbfs_store.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/filestore.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/google_cloud_storage.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/hdfs.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/inmem.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/huggingface_provider.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/mock_model_provider.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/model_provider.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/model_provider/openai_provider.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/redis.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/remote_client.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/s3.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/snowflake_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/sources.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/spark_udf.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/spark_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/store_resources.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/storeytargets.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/targets.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/v3io.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/vectorstore.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/wasbfs/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/datastore/wasbfs/fs.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/auth_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/factory.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/httpdb.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/db/nopdb.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/errors.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/execution.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/api.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/common.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/feature_set.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/feature_vector.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/feature_vector_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/ingestion.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/job.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/local_merger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/feature_store/steps.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/features.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/producer.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_common/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_dl_common/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/producer.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/_ml_common/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/huggingface/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/huggingface/model_server.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/model_server.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/lgbm/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/dataset.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/onnx/model_server.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/parallel_coordinates.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/model_server.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/pytorch/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/estimator.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/metric.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/sklearn/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/model_server.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/tf_keras/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/model_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/frameworks/xgboost/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/hub/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/hub/module.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/k8s_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/client.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/factory.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/local.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/launcher/remote.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/lists.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/api.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/context.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/applications/results.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/controller.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/_schedules.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/_stats.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/tdengine/writer_graph_steps.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/features_drift_table.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/metrics/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/stream_processing.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/model_monitoring/writer.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/context_handler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/errors.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packager.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/default_packager.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/numpy_packagers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/pandas_packagers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/packagers_manager.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_archiver.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_formatter.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_pickler.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/_supported_format.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/log_hint_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/package/utils/type_hint_utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/platforms/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/platforms/iguazio.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/operations.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/projects/pipelines.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/render.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/daskjob.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/funcdoc.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/function_reference.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/generators.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/kubejob.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/local.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mounts.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mpijob/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mpijob/abstract.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/mpijob/v1.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/function.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/nuclio.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/nuclio/serving.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/pod.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/remotesparkjob.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/sparkjob/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/runtimes/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/secrets.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/merger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/remote.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/routers.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/serving_wrapper.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/states.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/system_steps.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/utils.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/v1_serving.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/serving/v2_serving.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/tracker.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/tracker_manager.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/trackers/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/track/trackers/mlflow_tracker.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/async_http.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/azure_vault.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/clones.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/condition_evaluator.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/http.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/logger.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/base.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/console.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/git.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/ipython.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/mail.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/slack.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification/webhook.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/notifications/notification_pusher.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/regex.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/retryer.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/singleton.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/v3io_clients.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/vault.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/version/__init__.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun/utils/version/version.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/dependency_links.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/entry_points.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/not-zip-safe +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/mlrun.egg-info/top_level.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/packages.py +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/pyproject.toml +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/requirements.txt +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/setup.cfg +0 -0
- {mlrun-1.10.0rc33 → mlrun-1.10.0rc35}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.0rc35
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -105,7 +105,7 @@ Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
|
|
|
105
105
|
Provides-Extra: dev-postgres
|
|
106
106
|
Requires-Dist: pytest-mock-resources[postgres]~=2.12; extra == "dev-postgres"
|
|
107
107
|
Provides-Extra: kfp18
|
|
108
|
-
Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]
|
|
108
|
+
Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8; extra == "kfp18"
|
|
109
109
|
Provides-Extra: api
|
|
110
110
|
Requires-Dist: uvicorn~=0.32.1; extra == "api"
|
|
111
111
|
Requires-Dist: dask-kubernetes~=0.11.0; extra == "api"
|
|
@@ -87,7 +87,7 @@ def extra_requirements() -> dict[str, list[str]]:
|
|
|
87
87
|
extras_require.update(
|
|
88
88
|
{
|
|
89
89
|
"dev-postgres": ["pytest-mock-resources[postgres]~=2.12"],
|
|
90
|
-
"kfp18": ["mlrun_pipelines_kfp_v1_8[kfp]
|
|
90
|
+
"kfp18": ["mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8"],
|
|
91
91
|
# TODO uncomment when KFP 1.8 support is removed
|
|
92
92
|
# "kfp2": ["mlrun_pipelines_kfp_v2[kfp]>=0.5.0 ; python_version >= '3.11'"],
|
|
93
93
|
"api": api_deps,
|
|
@@ -234,7 +234,18 @@ class AzureBlobStore(DataStore):
|
|
|
234
234
|
# if called without passing dataitem - like in fset.purge_targets,
|
|
235
235
|
# key will include schema.
|
|
236
236
|
if not schema:
|
|
237
|
-
|
|
237
|
+
# For wasbs/wasb, the filesystem is scoped to the container, so we need to use
|
|
238
|
+
# the container name as the base path, not the hostname endpoint.
|
|
239
|
+
# For az://, endpoint already contains the container name.
|
|
240
|
+
if self.kind in ["wasbs", "wasb"]:
|
|
241
|
+
container = self.storage_options.get("container")
|
|
242
|
+
if container:
|
|
243
|
+
key = Path(container, key).as_posix()
|
|
244
|
+
else:
|
|
245
|
+
# If no container found, use endpoint (might be hostname, but better than nothing)
|
|
246
|
+
key = Path(self.endpoint, key).as_posix()
|
|
247
|
+
else:
|
|
248
|
+
key = Path(self.endpoint, key).as_posix()
|
|
238
249
|
return key
|
|
239
250
|
|
|
240
251
|
def upload(self, key, src_path):
|
|
@@ -332,36 +332,11 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
332
332
|
project=project,
|
|
333
333
|
) as (endpoints_output, application_schedules):
|
|
334
334
|
|
|
335
|
-
def call_do_tracking(
|
|
335
|
+
def call_do_tracking(
|
|
336
|
+
monitoring_context: mm_context.MonitoringApplicationContext,
|
|
337
|
+
):
|
|
336
338
|
nonlocal endpoints_output
|
|
337
339
|
|
|
338
|
-
if event is None:
|
|
339
|
-
event = {}
|
|
340
|
-
monitoring_context = (
|
|
341
|
-
mm_context.MonitoringApplicationContext._from_ml_ctx(
|
|
342
|
-
event=event,
|
|
343
|
-
application_name=application_name,
|
|
344
|
-
context=context,
|
|
345
|
-
project=project,
|
|
346
|
-
sample_df=sample_data,
|
|
347
|
-
feature_stats=feature_stats,
|
|
348
|
-
)
|
|
349
|
-
)
|
|
350
|
-
|
|
351
|
-
if (
|
|
352
|
-
monitoring_context.endpoint_id
|
|
353
|
-
and monitoring_context.sample_df.empty
|
|
354
|
-
):
|
|
355
|
-
# The current sample is empty
|
|
356
|
-
context.logger.warning(
|
|
357
|
-
"No sample data available for tracking",
|
|
358
|
-
application_name=application_name,
|
|
359
|
-
endpoint_id=monitoring_context.endpoint_id,
|
|
360
|
-
start_time=monitoring_context.start_infer_time,
|
|
361
|
-
end_time=monitoring_context.end_infer_time,
|
|
362
|
-
)
|
|
363
|
-
return
|
|
364
|
-
|
|
365
340
|
result = self.do_tracking(monitoring_context)
|
|
366
341
|
endpoints_output[monitoring_context.endpoint_id].append(
|
|
367
342
|
(monitoring_context, result)
|
|
@@ -369,7 +344,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
369
344
|
return result
|
|
370
345
|
|
|
371
346
|
if endpoints is not None:
|
|
372
|
-
resolved_endpoints = self.
|
|
347
|
+
resolved_endpoints = self._validate_endpoints(
|
|
373
348
|
project=project, endpoints=endpoints
|
|
374
349
|
)
|
|
375
350
|
if (
|
|
@@ -391,26 +366,24 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
391
366
|
application_schedules=application_schedules,
|
|
392
367
|
)
|
|
393
368
|
for endpoint_name, endpoint_id in resolved_endpoints:
|
|
394
|
-
for
|
|
369
|
+
for monitoring_ctx in self._window_generator(
|
|
395
370
|
start=start,
|
|
396
371
|
end=end,
|
|
397
372
|
base_period=base_period,
|
|
398
373
|
application_schedules=application_schedules,
|
|
399
374
|
endpoint_id=endpoint_id,
|
|
375
|
+
endpoint_name=endpoint_name,
|
|
400
376
|
application_name=application_name,
|
|
401
377
|
existing_data_handling=existing_data_handling,
|
|
378
|
+
sample_data=sample_data,
|
|
379
|
+
context=context,
|
|
380
|
+
project=project,
|
|
402
381
|
):
|
|
403
|
-
result = call_do_tracking(
|
|
404
|
-
event={
|
|
405
|
-
mm_constants.ApplicationEvent.ENDPOINT_NAME: endpoint_name,
|
|
406
|
-
mm_constants.ApplicationEvent.ENDPOINT_ID: endpoint_id,
|
|
407
|
-
mm_constants.ApplicationEvent.START_INFER_TIME: window_start,
|
|
408
|
-
mm_constants.ApplicationEvent.END_INFER_TIME: window_end,
|
|
409
|
-
}
|
|
410
|
-
)
|
|
382
|
+
result = call_do_tracking(monitoring_ctx)
|
|
411
383
|
result_key = (
|
|
412
|
-
f"{endpoint_name}-{endpoint_id}_{
|
|
413
|
-
if
|
|
384
|
+
f"{endpoint_name}-{endpoint_id}_{monitoring_ctx.start_infer_time.isoformat()}_{monitoring_ctx.end_infer_time.isoformat()}"
|
|
385
|
+
if monitoring_ctx.start_infer_time
|
|
386
|
+
and monitoring_ctx.end_infer_time
|
|
414
387
|
else f"{endpoint_name}-{endpoint_id}"
|
|
415
388
|
)
|
|
416
389
|
|
|
@@ -418,10 +391,38 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
418
391
|
result_key, self._flatten_data_result(result)
|
|
419
392
|
)
|
|
420
393
|
else:
|
|
421
|
-
|
|
394
|
+
result = call_do_tracking(
|
|
395
|
+
mm_context.MonitoringApplicationContext._from_ml_ctx(
|
|
396
|
+
context=context,
|
|
397
|
+
project=project,
|
|
398
|
+
application_name=application_name,
|
|
399
|
+
event={},
|
|
400
|
+
sample_df=sample_data,
|
|
401
|
+
feature_stats=feature_stats,
|
|
402
|
+
)
|
|
403
|
+
)
|
|
404
|
+
return self._flatten_data_result(result)
|
|
422
405
|
|
|
423
406
|
@staticmethod
|
|
424
|
-
def
|
|
407
|
+
def _check_endpoints_first_request(
|
|
408
|
+
endpoints: list[mlrun.common.schemas.ModelEndpoint],
|
|
409
|
+
) -> None:
|
|
410
|
+
"""Make sure that all the endpoints have had at least one request"""
|
|
411
|
+
endpoints_no_requests = [
|
|
412
|
+
(endpoint.metadata.name, endpoint.metadata.uid)
|
|
413
|
+
for endpoint in endpoints
|
|
414
|
+
if not endpoint.status.first_request
|
|
415
|
+
]
|
|
416
|
+
if endpoints_no_requests:
|
|
417
|
+
raise mlrun.errors.MLRunValueError(
|
|
418
|
+
"The following model endpoints have not had any requests yet and "
|
|
419
|
+
"have no data, cannot run the model monitoring application on them: "
|
|
420
|
+
f"{endpoints_no_requests}"
|
|
421
|
+
)
|
|
422
|
+
|
|
423
|
+
@classmethod
|
|
424
|
+
def _validate_endpoints(
|
|
425
|
+
cls,
|
|
425
426
|
project: "mlrun.MlrunProject",
|
|
426
427
|
endpoints: Union[
|
|
427
428
|
list[tuple[str, str]], list[list[str]], list[str], Literal["all"]
|
|
@@ -457,6 +458,9 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
457
458
|
endpoints_list = project.list_model_endpoints(
|
|
458
459
|
names=endpoint_names, latest_only=True
|
|
459
460
|
).endpoints
|
|
461
|
+
|
|
462
|
+
cls._check_endpoints_first_request(endpoints_list)
|
|
463
|
+
|
|
460
464
|
if endpoints_list:
|
|
461
465
|
list_endpoints_result = [
|
|
462
466
|
(endpoint.metadata.name, endpoint.metadata.uid)
|
|
@@ -596,13 +600,51 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
596
600
|
application_schedules: Optional[
|
|
597
601
|
mm_schedules.ModelMonitoringSchedulesFileApplication
|
|
598
602
|
],
|
|
603
|
+
endpoint_name: str,
|
|
599
604
|
endpoint_id: str,
|
|
600
605
|
application_name: str,
|
|
601
606
|
existing_data_handling: ExistingDataHandling,
|
|
602
|
-
|
|
607
|
+
context: "mlrun.MLClientCtx",
|
|
608
|
+
project: "mlrun.MlrunProject",
|
|
609
|
+
sample_data: Optional[pd.DataFrame],
|
|
610
|
+
) -> Iterator[mm_context.MonitoringApplicationContext]:
|
|
611
|
+
def yield_monitoring_ctx(
|
|
612
|
+
window_start: Optional[datetime], window_end: Optional[datetime]
|
|
613
|
+
) -> Iterator[mm_context.MonitoringApplicationContext]:
|
|
614
|
+
ctx = mm_context.MonitoringApplicationContext._from_ml_ctx(
|
|
615
|
+
event={
|
|
616
|
+
mm_constants.ApplicationEvent.ENDPOINT_NAME: endpoint_name,
|
|
617
|
+
mm_constants.ApplicationEvent.ENDPOINT_ID: endpoint_id,
|
|
618
|
+
mm_constants.ApplicationEvent.START_INFER_TIME: window_start,
|
|
619
|
+
mm_constants.ApplicationEvent.END_INFER_TIME: window_end,
|
|
620
|
+
},
|
|
621
|
+
application_name=application_name,
|
|
622
|
+
context=context,
|
|
623
|
+
project=project,
|
|
624
|
+
sample_df=sample_data,
|
|
625
|
+
)
|
|
626
|
+
|
|
627
|
+
if ctx.sample_df.empty:
|
|
628
|
+
# The current sample is empty
|
|
629
|
+
context.logger.debug(
|
|
630
|
+
"No sample data available for tracking",
|
|
631
|
+
application_name=application_name,
|
|
632
|
+
endpoint_id=ctx.endpoint_id,
|
|
633
|
+
start_time=ctx.start_infer_time,
|
|
634
|
+
end_time=ctx.end_infer_time,
|
|
635
|
+
)
|
|
636
|
+
return
|
|
637
|
+
|
|
638
|
+
yield ctx
|
|
639
|
+
|
|
640
|
+
if application_schedules and window_end:
|
|
641
|
+
application_schedules.update_endpoint_last_analyzed(
|
|
642
|
+
endpoint_uid=endpoint_id, last_analyzed=window_end
|
|
643
|
+
)
|
|
644
|
+
|
|
603
645
|
if start is None or end is None:
|
|
604
646
|
# A single window based on the `sample_data` input - see `_handler`.
|
|
605
|
-
yield None, None
|
|
647
|
+
yield from yield_monitoring_ctx(None, None)
|
|
606
648
|
return
|
|
607
649
|
|
|
608
650
|
start_dt = datetime.fromisoformat(start)
|
|
@@ -630,11 +672,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
630
672
|
)
|
|
631
673
|
|
|
632
674
|
if base_period is None:
|
|
633
|
-
yield start_dt, end_dt
|
|
634
|
-
if application_schedules:
|
|
635
|
-
application_schedules.update_endpoint_last_analyzed(
|
|
636
|
-
endpoint_uid=endpoint_id, last_analyzed=end_dt
|
|
637
|
-
)
|
|
675
|
+
yield from yield_monitoring_ctx(start_dt, end_dt)
|
|
638
676
|
return
|
|
639
677
|
|
|
640
678
|
window_length = cls._validate_and_get_window_length(
|
|
@@ -644,11 +682,7 @@ class ModelMonitoringApplicationBase(MonitoringApplicationToDict, ABC):
|
|
|
644
682
|
current_start_time = start_dt
|
|
645
683
|
while current_start_time < end_dt:
|
|
646
684
|
current_end_time = min(current_start_time + window_length, end_dt)
|
|
647
|
-
yield current_start_time, current_end_time
|
|
648
|
-
if application_schedules:
|
|
649
|
-
application_schedules.update_endpoint_last_analyzed(
|
|
650
|
-
endpoint_uid=endpoint_id, last_analyzed=current_end_time
|
|
651
|
-
)
|
|
685
|
+
yield from yield_monitoring_ctx(current_start_time, current_end_time)
|
|
652
686
|
current_start_time = current_end_time
|
|
653
687
|
|
|
654
688
|
@classmethod
|
|
@@ -2574,7 +2574,7 @@ class MlrunProject(ModelObj):
|
|
|
2574
2574
|
*,
|
|
2575
2575
|
deploy_histogram_data_drift_app: bool = True,
|
|
2576
2576
|
wait_for_deployment: bool = False,
|
|
2577
|
-
fetch_credentials_from_sys_config: bool = False,
|
|
2577
|
+
fetch_credentials_from_sys_config: bool = False, # deprecated
|
|
2578
2578
|
) -> None:
|
|
2579
2579
|
"""
|
|
2580
2580
|
Deploy model monitoring application controller, writer and stream functions.
|
|
@@ -2609,14 +2609,20 @@ class MlrunProject(ModelObj):
|
|
|
2609
2609
|
:param wait_for_deployment: If true, return only after the deployment is done on the backend.
|
|
2610
2610
|
Otherwise, deploy the model monitoring infrastructure on the
|
|
2611
2611
|
background, including the histogram data drift app if selected.
|
|
2612
|
-
:param fetch_credentials_from_sys_config: If true, fetch the credentials from the
|
|
2612
|
+
:param fetch_credentials_from_sys_config: Deprecated. If true, fetch the credentials from the project
|
|
2613
|
+
configuration.
|
|
2613
2614
|
"""
|
|
2615
|
+
if fetch_credentials_from_sys_config:
|
|
2616
|
+
warnings.warn(
|
|
2617
|
+
"`fetch_credentials_from_sys_config` is deprecated in 1.10.0 and will be removed in 1.12.0.",
|
|
2618
|
+
# TODO: Remove this in 1.12.0
|
|
2619
|
+
FutureWarning,
|
|
2620
|
+
)
|
|
2614
2621
|
if base_period < 10:
|
|
2615
2622
|
logger.warn(
|
|
2616
2623
|
"enable_model_monitoring: 'base_period' < 10 minutes is not supported in production environments",
|
|
2617
2624
|
project=self.name,
|
|
2618
2625
|
)
|
|
2619
|
-
|
|
2620
2626
|
db = mlrun.db.get_run_db(secrets=self._secrets)
|
|
2621
2627
|
db.enable_model_monitoring(
|
|
2622
2628
|
project=self.name,
|
|
@@ -17,6 +17,7 @@ import json
|
|
|
17
17
|
import os
|
|
18
18
|
import pathlib
|
|
19
19
|
import socket
|
|
20
|
+
import sys
|
|
20
21
|
import tempfile
|
|
21
22
|
import time
|
|
22
23
|
import typing
|
|
@@ -117,14 +118,13 @@ def function_to_module(code="", workdir=None, secrets=None, silent=False):
|
|
|
117
118
|
raise ValueError("nothing to run, specify command or function")
|
|
118
119
|
|
|
119
120
|
command = os.path.join(workdir or "", command)
|
|
120
|
-
|
|
121
|
-
mod_name = path.name
|
|
122
|
-
if path.suffix:
|
|
123
|
-
mod_name = mod_name[: -len(path.suffix)]
|
|
121
|
+
mod_name = mlrun.utils.helpers.get_module_name_from_path(command)
|
|
124
122
|
spec = imputil.spec_from_file_location(mod_name, command)
|
|
125
123
|
if spec is None:
|
|
126
124
|
raise OSError(f"cannot import from {command!r}")
|
|
127
125
|
mod = imputil.module_from_spec(spec)
|
|
126
|
+
# add to system modules, which can be necessary when running in a MockServer (ML-10937)
|
|
127
|
+
sys.modules[mod_name] = mod
|
|
128
128
|
spec.loader.exec_module(mod)
|
|
129
129
|
|
|
130
130
|
return mod
|
|
@@ -413,21 +413,29 @@ def import_function_to_dict(
|
|
|
413
413
|
with open(code_file, "wb") as fp:
|
|
414
414
|
fp.write(code)
|
|
415
415
|
elif cmd:
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
416
|
+
slash_index = url.rfind("/")
|
|
417
|
+
if slash_index < 0:
|
|
418
|
+
raise ValueError(f"no file in exec path (spec.command={code_file})")
|
|
419
|
+
base_dir = os.path.normpath(url[: slash_index + 1])
|
|
420
|
+
|
|
421
|
+
# Validate and resolve the candidate path before checking existence
|
|
422
|
+
candidate_path = _ensure_path_confined_to_base_dir(
|
|
423
|
+
base_directory=base_dir,
|
|
424
|
+
relative_path=code_file,
|
|
425
|
+
error_message_on_escape=(
|
|
426
|
+
f"exec file spec.command={code_file} is outside of allowed directory"
|
|
427
|
+
),
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
# Only now it's safe to check file existence
|
|
431
|
+
if not path.isfile(candidate_path):
|
|
430
432
|
raise ValueError(f"no file in exec path (spec.command={code_file})")
|
|
433
|
+
|
|
434
|
+
# Check that the path is absolute
|
|
435
|
+
if not os.path.isabs(code_file):
|
|
436
|
+
raise ValueError(
|
|
437
|
+
f"exec file spec.command={code_file} is relative, it must be absolute. Change working dir"
|
|
438
|
+
)
|
|
431
439
|
else:
|
|
432
440
|
raise ValueError("command or code not specified in function spec")
|
|
433
441
|
|
|
@@ -568,6 +568,12 @@ class ApplicationRuntime(RemoteRuntime):
|
|
|
568
568
|
"Authentication credentials not provided"
|
|
569
569
|
)
|
|
570
570
|
|
|
571
|
+
if direct_port_access and port:
|
|
572
|
+
logger.warning(
|
|
573
|
+
"Ignoring 'port' because 'direct_port_access' is enabled. "
|
|
574
|
+
"The 'port' setting is only applicable when 'direct_port_access' is disabled."
|
|
575
|
+
)
|
|
576
|
+
|
|
571
577
|
ports = (
|
|
572
578
|
port or self.spec.internal_application_port if direct_port_access else []
|
|
573
579
|
)
|
|
@@ -20,7 +20,6 @@ import copy
|
|
|
20
20
|
import importlib
|
|
21
21
|
import json
|
|
22
22
|
import os
|
|
23
|
-
import pathlib
|
|
24
23
|
import socket
|
|
25
24
|
import traceback
|
|
26
25
|
import uuid
|
|
@@ -51,7 +50,7 @@ from ..datastore.store_resources import ResourceCache
|
|
|
51
50
|
from ..errors import MLRunInvalidArgumentError
|
|
52
51
|
from ..execution import MLClientCtx
|
|
53
52
|
from ..model import ModelObj
|
|
54
|
-
from ..utils import get_caller_globals
|
|
53
|
+
from ..utils import get_caller_globals, get_module_name_from_path
|
|
55
54
|
from .states import (
|
|
56
55
|
FlowStep,
|
|
57
56
|
MonitoredStep,
|
|
@@ -598,17 +597,7 @@ async def async_execute_graph(
|
|
|
598
597
|
# gets set in local flow and not just in the remote pod
|
|
599
598
|
source_file_path = spec.get("filename", None)
|
|
600
599
|
if source_file_path:
|
|
601
|
-
|
|
602
|
-
current_dir_path_object = pathlib.Path(".").resolve()
|
|
603
|
-
if not source_file_path_object.is_relative_to(current_dir_path_object):
|
|
604
|
-
raise mlrun.errors.MLRunRuntimeError(
|
|
605
|
-
f"Source file path '{source_file_path}' is not under the current working directory "
|
|
606
|
-
f"(which is required when running with local=True)"
|
|
607
|
-
)
|
|
608
|
-
relative_path_to_source_file = source_file_path_object.relative_to(
|
|
609
|
-
current_dir_path_object
|
|
610
|
-
)
|
|
611
|
-
modname = ".".join(relative_path_to_source_file.with_suffix("").parts)
|
|
600
|
+
modname = get_module_name_from_path(source_file_path)
|
|
612
601
|
|
|
613
602
|
namespace = {}
|
|
614
603
|
if modname:
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Copyright 2025 Iguazio
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from typing import Union
|
|
16
|
+
|
|
17
|
+
import storey
|
|
18
|
+
|
|
19
|
+
import mlrun.errors
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ChoiceByField(storey.Choice):
|
|
23
|
+
"""
|
|
24
|
+
Selects downstream outlets to route each event based on a predetermined field.
|
|
25
|
+
:param field_name: event field name that contains the step name or names of the desired outlet or outlets
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, field_name: Union[str, list[str]], **kwargs):
|
|
29
|
+
self.field_name = field_name
|
|
30
|
+
super().__init__(**kwargs)
|
|
31
|
+
|
|
32
|
+
def select_outlets(self, event):
|
|
33
|
+
# Case 1: Missing field
|
|
34
|
+
if self.field_name not in event:
|
|
35
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
36
|
+
f"Field '{self.field_name}' is not contained in the event keys {list(event.keys())}."
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
outlet = event[self.field_name]
|
|
40
|
+
|
|
41
|
+
# Case 2: Field exists but is None
|
|
42
|
+
if outlet is None:
|
|
43
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
44
|
+
f"Field '{self.field_name}' exists but its value is None."
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Case 3: Invalid type
|
|
48
|
+
if not isinstance(outlet, (str, list, tuple)):
|
|
49
|
+
raise mlrun.errors.MLRunInvalidArgumentTypeError(
|
|
50
|
+
f"Field '{self.field_name}' must be a string or list of strings "
|
|
51
|
+
f"but is instead of type '{type(outlet).__name__}'."
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
outlets = [outlet] if isinstance(outlet, str) else outlet
|
|
55
|
+
|
|
56
|
+
# Case 4: Empty list or tuple
|
|
57
|
+
if not outlets:
|
|
58
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
59
|
+
f"The value of the key '{self.field_name}' cannot be an empty {type(outlets).__name__}."
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
return outlets
|
|
@@ -21,6 +21,7 @@ import inspect
|
|
|
21
21
|
import itertools
|
|
22
22
|
import json
|
|
23
23
|
import os
|
|
24
|
+
import pathlib
|
|
24
25
|
import re
|
|
25
26
|
import string
|
|
26
27
|
import sys
|
|
@@ -923,11 +924,23 @@ def enrich_image_url(
|
|
|
923
924
|
)
|
|
924
925
|
mlrun_version = config.images_tag or client_version or server_version
|
|
925
926
|
tag = mlrun_version or ""
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
927
|
+
|
|
928
|
+
# starting mlrun 1.10.0-rc0 we want to enrich the kfp image with the python version
|
|
929
|
+
# e.g for 1.9 we have a single mlrun-kfp image that supports only python 3.9
|
|
930
|
+
enrich_kfp_python_version = (
|
|
931
|
+
"mlrun-kfp" in image_url
|
|
932
|
+
and mlrun_version
|
|
933
|
+
and semver.VersionInfo.is_valid(mlrun_version)
|
|
934
|
+
and semver.VersionInfo.parse(mlrun_version)
|
|
935
|
+
>= semver.VersionInfo.parse("1.10.0-rc0")
|
|
929
936
|
)
|
|
930
937
|
|
|
938
|
+
if "mlrun-kfp" not in image_url or enrich_kfp_python_version:
|
|
939
|
+
tag += resolve_image_tag_suffix(
|
|
940
|
+
mlrun_version=mlrun_version,
|
|
941
|
+
python_version=client_python_version,
|
|
942
|
+
)
|
|
943
|
+
|
|
931
944
|
# it's an mlrun image if the repository is mlrun
|
|
932
945
|
is_mlrun_image = image_url.startswith("mlrun/") or "/mlrun/" in image_url
|
|
933
946
|
if ":" in image_url:
|
|
@@ -2408,3 +2421,17 @@ def set_data_by_path(
|
|
|
2408
2421
|
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
2409
2422
|
"Expected path to be of type str or list of str"
|
|
2410
2423
|
)
|
|
2424
|
+
|
|
2425
|
+
|
|
2426
|
+
def get_module_name_from_path(source_file_path: str) -> str:
|
|
2427
|
+
source_file_path_object = pathlib.Path(source_file_path).resolve()
|
|
2428
|
+
current_dir_path_object = pathlib.Path(".").resolve()
|
|
2429
|
+
if not source_file_path_object.is_relative_to(current_dir_path_object):
|
|
2430
|
+
raise mlrun.errors.MLRunRuntimeError(
|
|
2431
|
+
f"Source file path '{source_file_path}' is not under the current working directory "
|
|
2432
|
+
f"(which is required when running with local=True)"
|
|
2433
|
+
)
|
|
2434
|
+
relative_path_to_source_file = source_file_path_object.relative_to(
|
|
2435
|
+
current_dir_path_object
|
|
2436
|
+
)
|
|
2437
|
+
return ".".join(relative_path_to_source_file.with_suffix("").parts)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.0rc35
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -105,7 +105,7 @@ Requires-Dist: snowflake-connector-python~=3.7; extra == "snowflake"
|
|
|
105
105
|
Provides-Extra: dev-postgres
|
|
106
106
|
Requires-Dist: pytest-mock-resources[postgres]~=2.12; extra == "dev-postgres"
|
|
107
107
|
Provides-Extra: kfp18
|
|
108
|
-
Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]
|
|
108
|
+
Requires-Dist: mlrun_pipelines_kfp_v1_8[kfp]~=0.5.8; extra == "kfp18"
|
|
109
109
|
Provides-Extra: api
|
|
110
110
|
Requires-Dist: uvicorn~=0.32.1; extra == "api"
|
|
111
111
|
Requires-Dist: dask-kubernetes~=0.11.0; extra == "api"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|