From fe3bf64f5567728bfd6abb7fb6c25463d2354103 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 6 May 2026 11:41:20 +0000 Subject: [PATCH 1/6] python3Packages.mlflow-skinny: init at 3.12.0 --- .../python-modules/mlflow-skinny/default.nix | 73 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 75 insertions(+) create mode 100644 pkgs/development/python-modules/mlflow-skinny/default.nix diff --git a/pkgs/development/python-modules/mlflow-skinny/default.nix b/pkgs/development/python-modules/mlflow-skinny/default.nix new file mode 100644 index 000000000000..7683c7c045fb --- /dev/null +++ b/pkgs/development/python-modules/mlflow-skinny/default.nix @@ -0,0 +1,73 @@ +{ + buildPythonPackage, + mlflow, + + # build-system + setuptools, + + # dependencies + cachetools, + click, + cloudpickle, + databricks-sdk, + fastapi, + gitpython, + importlib-metadata, + opentelemetry-api, + opentelemetry-proto, + opentelemetry-sdk, + packaging, + protobuf, + pydantic, + python-dotenv, + pyyaml, + requests, + sqlparse, + starlette, + typing-extensions, + uvicorn, +}: + +buildPythonPackage (finalAttrs: { + pname = "mlflow-skinny"; + inherit (mlflow) version src; + pyproject = true; + __structuredAttrs = true; + + sourceRoot = "${finalAttrs.src.name}/libs/skinny"; + + build-system = [ setuptools ]; + + dependencies = [ + cachetools + click + cloudpickle + databricks-sdk + fastapi + gitpython + importlib-metadata + opentelemetry-api + opentelemetry-proto + opentelemetry-sdk + packaging + protobuf + pydantic + python-dotenv + pyyaml + requests + sqlparse + starlette + typing-extensions + uvicorn + ]; + + pythonImportsCheck = [ "mlflow" ]; + + # No tests in the skinny subtree. + doCheck = false; + + meta = mlflow.meta // { + description = "Lightweight version of MLflow that is designed to minimize package size"; + homepage = "https://github.com/mlflow/mlflow/tree/master/libs/skinny"; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 75a1ff10b2df..33d11b09ed92 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10165,6 +10165,8 @@ self: super: with self; { mlflow = callPackage ../development/python-modules/mlflow { }; + mlflow-skinny = callPackage ../development/python-modules/mlflow-skinny { }; + mlrose = callPackage ../development/python-modules/mlrose { }; mlt = toPythonModule ( From 1f778585143ea1c29d70408d3a19a8738e7ba9e9 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 6 May 2026 11:42:13 +0000 Subject: [PATCH 2/6] python3Packages.mlflow: 3.11.1 -> 3.12.0 Diff: https://github.com/mlflow/mlflow/compare/v3.11.1...v3.12.0 Changelog: https://github.com/mlflow/mlflow/blob/v3.12.0/CHANGELOG.md --- .../python-modules/mlflow/default.nix | 73 ++++--------------- 1 file changed, 15 insertions(+), 58 deletions(-) diff --git a/pkgs/development/python-modules/mlflow/default.nix b/pkgs/development/python-modules/mlflow/default.nix index 85d5b0a56be0..f935d7ab2903 100644 --- a/pkgs/development/python-modules/mlflow/default.nix +++ b/pkgs/development/python-modules/mlflow/default.nix @@ -9,39 +9,25 @@ # dependencies aiohttp, alembic, - cachetools, - click, - cloudpickle, cryptography, - databricks-sdk, docker, - fastapi, flask, flask-cors, - gitpython, graphene, gunicorn, huey, - importlib-metadata, - jinja2, - markdown, matplotlib, + mlflow-skinny, + mlflow-tracing, numpy, - opentelemetry-api, - opentelemetry-proto, - opentelemetry-sdk, - packaging, pandas, - protobuf, pyarrow, - python-dotenv, - pyyaml, - requests, scikit-learn, scipy, skops, sqlalchemy, sqlparse, + starlette, uvicorn, # tests @@ -61,13 +47,10 @@ moto, opentelemetry-exporter-otlp, optuna, - pydantic, pyspark, pytestCheckHook, pytorch-lightning, sentence-transformers, - shap, - starlette, statsmodels, tensorflow, torch, @@ -75,75 +58,50 @@ xgboost, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "mlflow"; - version = "3.11.1"; + version = "3.12.0"; pyproject = true; src = fetchFromGitHub { owner = "mlflow"; repo = "mlflow"; - tag = "v${version}"; - hash = "sha256-Oe6nBnnOz7MvGUNCcCGhHl6ZbyDfAhQ0LlfMBF4p6Hc="; + tag = "v${finalAttrs.version}"; + hash = "sha256-OxhM+KCem0sb9cwtyzrUD/MGfoiiCfgU47qipYRDaFk="; }; - pythonRelaxDeps = [ - "cryptography" - "gunicorn" - "importlib_metadata" - "packaging" - "protobuf" - "pytz" - "pyarrow" - ]; + # ppyproject.release.toml is the one shipped in the Pypi package, so we use it too. + postPatch = '' + mv pyproject.release.toml pyproject.toml + ''; build-system = [ setuptools ]; dependencies = [ aiohttp alembic - cachetools - click - cloudpickle cryptography - databricks-sdk docker - fastapi flask flask-cors - gitpython graphene gunicorn huey - importlib-metadata - jinja2 - markdown matplotlib + mlflow-skinny + mlflow-tracing numpy - opentelemetry-api - opentelemetry-proto - opentelemetry-sdk - packaging pandas - protobuf pyarrow - pydantic - python-dotenv - pyyaml - requests scikit-learn scipy - shap skops sqlalchemy - sqlparse - uvicorn ]; pythonImportsCheck = [ "mlflow" ]; nativeCheckInputs = [ - aiohttp azure-core azure-storage-blob azure-storage-file @@ -165,7 +123,6 @@ buildPythonPackage rec { pytestCheckHook pytorch-lightning sentence-transformers - starlette statsmodels tensorflow torch @@ -208,8 +165,8 @@ buildPythonPackage rec { description = "Open source platform for the machine learning lifecycle"; mainProgram = "mlflow"; homepage = "https://github.com/mlflow/mlflow"; - changelog = "https://github.com/mlflow/mlflow/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/mlflow/mlflow/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = [ ]; }; -} +}) From b40249b44bdf86b70d74c2d05c1d846adf4a7244 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 6 May 2026 11:50:59 +0000 Subject: [PATCH 3/6] python3Packages.mlflow: remove test attributes (as they are disabled) --- .../python-modules/mlflow/default.nix | 84 ------------------- 1 file changed, 84 deletions(-) diff --git a/pkgs/development/python-modules/mlflow/default.nix b/pkgs/development/python-modules/mlflow/default.nix index f935d7ab2903..9d0e66e9dd96 100644 --- a/pkgs/development/python-modules/mlflow/default.nix +++ b/pkgs/development/python-modules/mlflow/default.nix @@ -26,36 +26,6 @@ scipy, skops, sqlalchemy, - sqlparse, - starlette, - uvicorn, - - # tests - azure-core, - azure-storage-blob, - azure-storage-file, - boto3, - botocore, - catboost, - datasets, - google-cloud-storage, - httpx, - jwt, - keras, - langchain, - librosa, - moto, - opentelemetry-exporter-otlp, - optuna, - pyspark, - pytestCheckHook, - pytorch-lightning, - sentence-transformers, - statsmodels, - tensorflow, - torch, - transformers, - xgboost, }: buildPythonPackage (finalAttrs: { @@ -101,60 +71,6 @@ buildPythonPackage (finalAttrs: { pythonImportsCheck = [ "mlflow" ]; - nativeCheckInputs = [ - azure-core - azure-storage-blob - azure-storage-file - boto3 - botocore - catboost - datasets - google-cloud-storage - httpx - jwt - keras - langchain - librosa - moto - opentelemetry-exporter-otlp - optuna - pydantic - pyspark - pytestCheckHook - pytorch-lightning - sentence-transformers - statsmodels - tensorflow - torch - transformers - uvicorn - xgboost - ]; - - disabledTestPaths = [ - # Requires unpackaged `autogen` - "tests/autogen/test_autogen_autolog.py" - - # Requires unpackaged `diviner` - "tests/diviner/test_diviner_model_export.py" - - # Requires unpackaged `sktime` - "examples/sktime/test_sktime_model_export.py" - - # Requires `fastai` which would cause a circular dependency - "tests/fastai/test_fastai_autolog.py" - "tests/fastai/test_fastai_model_export.py" - - # Requires `spacy` which would cause a circular dependency - "tests/spacy/test_spacy_model_export.py" - - # Requires `tensorflow.keras` which is not included in our outdated version of `tensorflow` (2.13.0) - "tests/gateway/providers/test_ai21labs.py" - "tests/tensorflow/test_keras_model_export.py" - "tests/tensorflow/test_keras_pyfunc_model_works_with_all_input_types.py" - "tests/tensorflow/test_mlflow_callback.py" - ]; - # I (@GaetanLepage) gave up at enabling tests: # - They require a lot of dependencies (some unpackaged); # - Many errors occur at collection time; From 345925e5ef2a8cefbe1d2c06a265472abd320311 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 6 May 2026 11:51:27 +0000 Subject: [PATCH 4/6] python3Packages.mlflow: add GaetanLepage to maintainers --- pkgs/development/python-modules/mlflow/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/mlflow/default.nix b/pkgs/development/python-modules/mlflow/default.nix index 9d0e66e9dd96..2664291d6798 100644 --- a/pkgs/development/python-modules/mlflow/default.nix +++ b/pkgs/development/python-modules/mlflow/default.nix @@ -83,6 +83,8 @@ buildPythonPackage (finalAttrs: { homepage = "https://github.com/mlflow/mlflow"; changelog = "https://github.com/mlflow/mlflow/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.asl20; - maintainers = [ ]; + maintainers = with lib.maintainers; [ + GaetanLepage + ]; }; }) From 32709ae95a8a3c68623006ef2f741fe2ab867e17 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 6 May 2026 11:12:04 +0000 Subject: [PATCH 5/6] python3Packages.sagemaker-mlflow: 0.3.0 -> 0.4.0 Diff: https://github.com/aws/sagemaker-mlflow/compare/v0.3.0...v0.4.0 Changelog: https://github.com/aws/sagemaker-mlflow/releases/tag/v0.4.0 --- .../sagemaker-mlflow/default.nix | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/pkgs/development/python-modules/sagemaker-mlflow/default.nix b/pkgs/development/python-modules/sagemaker-mlflow/default.nix index 3a84be94939d..06cfb393bdbe 100644 --- a/pkgs/development/python-modules/sagemaker-mlflow/default.nix +++ b/pkgs/development/python-modules/sagemaker-mlflow/default.nix @@ -8,23 +8,24 @@ # dependencies boto3, - mlflow, + mlflow-skinny, # tests pytestCheckHook, scikit-learn, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "sagemaker-mlflow"; - version = "0.3.0"; + version = "0.4.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "aws"; repo = "sagemaker-mlflow"; - tag = "v${version}"; - hash = "sha256-riCoUpao9QIrQMb7r9stJO/xTSsDfL+uNS664W5GRQc="; + tag = "v${finalAttrs.version}"; + hash = "sha256-QE40ZBW7N3GPC+eJqj5uzS3L+A6Wu2/LgHOiUsEXKMw="; }; build-system = [ @@ -33,7 +34,7 @@ buildPythonPackage rec { dependencies = [ boto3 - mlflow + mlflow-skinny ]; pythonImportsCheck = [ "sagemaker_mlflow" ]; @@ -56,16 +57,24 @@ buildPythonPackage rec { "test_presigned_url" "test_presigned_url_with_fields" + # Exercises a `sqlite://` model-registry store, only available with the + # sqlalchemy backend of the full `mlflow` package (not `mlflow-skinny`). + "test_store_instantiation_none" + ]; + + disabledTestPaths = [ + # `from mlflow.models import infer_signature` fails to import at collection + # time: `infer_signature` is only available in the full `mlflow` package, + # not in `mlflow-skinny`. Also see: # https://github.com/aws/sagemaker-mlflow/issues/16 - # TypeError: LogisticRegression.__init__() got an unexpected keyword argument 'multi_class' - "test_model_registry" + "test/integration/tests/test_model_registry.py" ]; meta = { description = "MLFlow plugin for SageMaker"; homepage = "https://github.com/aws/sagemaker-mlflow"; - changelog = "https://github.com/aws/sagemaker-mlflow/releases/tag/v${version}"; + changelog = "https://github.com/aws/sagemaker-mlflow/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ GaetanLepage ]; }; -} +}) From e9b3be6ac7c6180cf2d49ffbaaef0d935ad66683 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 8 May 2026 00:07:28 +0000 Subject: [PATCH 6/6] python3Packages.mlflow-tracing: init at 3.12.0 --- .../python-modules/mlflow-tracing/default.nix | 58 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 60 insertions(+) create mode 100644 pkgs/development/python-modules/mlflow-tracing/default.nix diff --git a/pkgs/development/python-modules/mlflow-tracing/default.nix b/pkgs/development/python-modules/mlflow-tracing/default.nix new file mode 100644 index 000000000000..ca76c7112bad --- /dev/null +++ b/pkgs/development/python-modules/mlflow-tracing/default.nix @@ -0,0 +1,58 @@ +{ + lib, + buildPythonPackage, + mlflow, + + # build-system + setuptools, + + # dependencies + cachetools, + databricks-sdk, + opentelemetry-api, + opentelemetry-proto, + opentelemetry-sdk, + packaging, + protobuf, + pydantic, + + # tests + pytestCheckHook, +}: +buildPythonPackage (finalAttrs: { + pname = "mlflow-tracing"; + inherit (mlflow) version; + pyproject = true; + __structuredAttrs = true; + + inherit (mlflow) src; + + sourceRoot = "${finalAttrs.src.name}/libs/tracing"; + + build-system = [ + setuptools + ]; + + dependencies = [ + cachetools + databricks-sdk + opentelemetry-api + opentelemetry-proto + opentelemetry-sdk + packaging + protobuf + pydantic + ]; + + pythonImportsCheck = [ "mlflow.tracing" ]; + + # No tests + doCheck = false; + + meta = { + description = "Open-Source SDK for observability and monitoring GenAI applications"; + homepage = "https://github.com/mlflow/mlflow/tree/master/libs/tracing"; + inherit (mlflow.meta) license; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 33d11b09ed92..3c8e858574aa 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10167,6 +10167,8 @@ self: super: with self; { mlflow-skinny = callPackage ../development/python-modules/mlflow-skinny { }; + mlflow-tracing = callPackage ../development/python-modules/mlflow-tracing { }; + mlrose = callPackage ../development/python-modules/mlrose { }; mlt = toPythonModule (