1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 setuptools,
8
9 # dependencies
10 alembic,
11 cachetools,
12 click,
13 cloudpickle,
14 cryptography,
15 databricks-sdk,
16 docker,
17 fastapi,
18 flask,
19 gitpython,
20 graphene,
21 gunicorn,
22 importlib-metadata,
23 jinja2,
24 markdown,
25 matplotlib,
26 numpy,
27 opentelemetry-api,
28 opentelemetry-sdk,
29 packaging,
30 pandas,
31 protobuf,
32 pyarrow,
33 pyyaml,
34 requests,
35 scikit-learn,
36 scipy,
37 sqlalchemy,
38 sqlparse,
39 uvicorn,
40
41 # tests
42 aiohttp,
43 azure-core,
44 azure-storage-blob,
45 azure-storage-file,
46 boto3,
47 botocore,
48 catboost,
49 datasets,
50 google-cloud-storage,
51 httpx,
52 jwt,
53 keras,
54 langchain,
55 librosa,
56 moto,
57 opentelemetry-exporter-otlp,
58 optuna,
59 pydantic,
60 pyspark,
61 pytestCheckHook,
62 pytorch-lightning,
63 sentence-transformers,
64 shap,
65 starlette,
66 statsmodels,
67 tensorflow,
68 torch,
69 transformers,
70 xgboost,
71}:
72
73buildPythonPackage rec {
74 pname = "mlflow";
75 version = "3.3.1";
76 pyproject = true;
77
78 src = fetchFromGitHub {
79 owner = "mlflow";
80 repo = "mlflow";
81 tag = "v${version}";
82 hash = "sha256-5zObSnGx7+cCrqRfvcnprQN05NqVBCeWcAZEE1Jpeuo=";
83 };
84
85 pythonRelaxDeps = [
86 "gunicorn"
87 "importlib-metadata"
88 "packaging"
89 "protobuf"
90 "pytz"
91 "pyarrow"
92 ];
93
94 build-system = [ setuptools ];
95
96 dependencies = [
97 alembic
98 cachetools
99 click
100 cloudpickle
101 cryptography
102 databricks-sdk
103 docker
104 fastapi
105 flask
106 gitpython
107 graphene
108 gunicorn
109 importlib-metadata
110 jinja2
111 markdown
112 matplotlib
113 numpy
114 opentelemetry-api
115 opentelemetry-sdk
116 packaging
117 pandas
118 protobuf
119 pyarrow
120 pydantic
121 pyyaml
122 requests
123 scikit-learn
124 scipy
125 shap
126 sqlalchemy
127 sqlparse
128 uvicorn
129 ];
130
131 pythonImportsCheck = [ "mlflow" ];
132
133 nativeCheckInputs = [
134 aiohttp
135 azure-core
136 azure-storage-blob
137 azure-storage-file
138 boto3
139 botocore
140 catboost
141 datasets
142 google-cloud-storage
143 httpx
144 jwt
145 keras
146 langchain
147 librosa
148 moto
149 opentelemetry-exporter-otlp
150 optuna
151 pydantic
152 pyspark
153 pytestCheckHook
154 pytorch-lightning
155 sentence-transformers
156 starlette
157 statsmodels
158 tensorflow
159 torch
160 transformers
161 uvicorn
162 xgboost
163 ];
164
165 disabledTestPaths = [
166 # Requires unpackaged `autogen`
167 "tests/autogen/test_autogen_autolog.py"
168
169 # Requires unpackaged `diviner`
170 "tests/diviner/test_diviner_model_export.py"
171
172 # Requires unpackaged `sktime`
173 "examples/sktime/test_sktime_model_export.py"
174
175 # Requires `fastai` which would cause a circular dependency
176 "tests/fastai/test_fastai_autolog.py"
177 "tests/fastai/test_fastai_model_export.py"
178
179 # Requires `spacy` which would cause a circular dependency
180 "tests/spacy/test_spacy_model_export.py"
181
182 # Requires `tensorflow.keras` which is not included in our outdated version of `tensorflow` (2.13.0)
183 "tests/gateway/providers/test_ai21labs.py"
184 "tests/tensorflow/test_keras_model_export.py"
185 "tests/tensorflow/test_keras_pyfunc_model_works_with_all_input_types.py"
186 "tests/tensorflow/test_mlflow_callback.py"
187 ];
188
189 # I (@GaetanLepage) gave up at enabling tests:
190 # - They require a lot of dependencies (some unpackaged);
191 # - Many errors occur at collection time;
192 # - Most (all ?) tests require internet access anyway.
193 doCheck = false;
194
195 meta = {
196 description = "Open source platform for the machine learning lifecycle";
197 mainProgram = "mlflow";
198 homepage = "https://github.com/mlflow/mlflow";
199 changelog = "https://github.com/mlflow/mlflow/blob/${src.tag}/CHANGELOG.md";
200 license = lib.licenses.asl20;
201 maintainers = with lib.maintainers; [ tbenst ];
202 };
203}