Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / python-modules / gradio / default.nix
blob19474d8d9fbfe17dcb36273d9c1f5f1a66111a54
1 { lib
2 , buildPythonPackage
3 , fetchPypi
4 , pythonOlder
5 , pythonRelaxDepsHook
7 # pyproject
8 , hatchling
9 , hatch-requirements-txt
10 , hatch-fancy-pypi-readme
12 # runtime
13 , setuptools
14 , aiofiles
15 , altair
16 , fastapi
17 , ffmpy
18 , gradio-client
19 , httpx
20 , huggingface-hub
21 , importlib-resources
22 , jinja2
23 , markupsafe
24 , matplotlib
25 , numpy
26 , orjson
27 , packaging
28 , pandas
29 , pillow
30 , pydantic
31 , python-multipart
32 , pydub
33 , pyyaml
34 , requests
35 , semantic-version
36 , typing-extensions
37 , uvicorn
38 , websockets
40 # check
41 , pytestCheckHook
42 , boto3
43 , ffmpeg
44 , ipython
45 , pytest-asyncio
46 , respx
47 , scikit-image
48 , torch
49 , tqdm
50 , transformers
51 , vega-datasets
54 buildPythonPackage rec {
55   pname = "gradio";
56   version = "3.44.3";
57   format = "pyproject";
59   disabled = pythonOlder "3.7";
61   # We use the Pypi release, as it provides prebuilt webui assets,
62   # and has more frequent releases compared to github tags
63   src = fetchPypi {
64     inherit pname version;
65     hash = "sha256-3mXs9PwlzUo89VosBWtnsOzDQf/T22Yv7s5j6OLLp3M=";
66   };
68   # fix packaging.ParserSyntaxError, which can't handle comments
69   postPatch = ''
70     sed -ie "s/ #.*$//g" requirements*.txt
71   '';
73   nativeBuildInputs = [
74     pythonRelaxDepsHook
75     hatchling
76     hatch-requirements-txt
77     hatch-fancy-pypi-readme
78   ];
80   propagatedBuildInputs = [
81     setuptools # needed for 'pkg_resources'
82     aiofiles
83     altair
84     fastapi
85     ffmpy
86     gradio-client
87     httpx
88     huggingface-hub
89     importlib-resources
90     jinja2
91     markupsafe
92     matplotlib
93     numpy
94     orjson
95     packaging
96     pandas
97     pillow
98     pydantic
99     python-multipart
100     pydub
101     pyyaml
102     requests
103     semantic-version
104     typing-extensions
105     uvicorn
106     websockets
107   ];
109   nativeCheckInputs = [
110     pytestCheckHook
111     boto3
112     ffmpeg
113     ipython
114     pytest-asyncio
115     respx
116     scikit-image
117     # shap is needed as well, but breaks too often
118     torch
119     tqdm
120     transformers
121     vega-datasets
122   ];
124   # Add a pytest hook skipping tests that access network, marking them as "Expected fail" (xfail).
125   # We additionally xfail FileNotFoundError, since the gradio devs often fail to upload test assets to pypi.
126   preCheck = ''
127     export HOME=$TMPDIR
128     cat ${./conftest-skip-network-errors.py} >> test/conftest.py
129   '';
131   disabledTests = [
132     # Actually broken
133     "test_mount_gradio_app"
135     # requires network, it caught our xfail exception
136     "test_error_analytics_successful"
138     # Flaky, tries to pin dependency behaviour. Sensitive to dep versions
139     # These error only affect downstream use of the check dependencies.
140     "test_no_color"
141     "test_in_interface_as_output"
142     "test_should_warn_url_not_having_version"
144     # Flaky, unknown reason
145     "test_in_interface"
147     # shap is too often broken in nixpkgs
148     "test_shapley_text"
149   ];
150   disabledTestPaths = [
151     # makes pytest freeze 50% of the time
152     "test/test_interfaces.py"
153   ];
154   pytestFlagsArray = [
155     "-x"  # abort on first failure
156     #"-m" "not flaky" # doesn't work, even when advertised
157     #"-W" "ignore" # uncomment for debugging help
158   ];
160   # check the binary works outside the build env
161   doInstallCheck = true;
162   postInstallCheck = ''
163     env --ignore-environment $out/bin/gradio environment >/dev/null
164   '';
166   pythonImportsCheck = [ "gradio" ];
168   meta = with lib; {
169     homepage = "https://www.gradio.app/";
170     description = "Python library for easily interacting with trained machine learning models";
171     license = licenses.asl20;
172     maintainers = with maintainers; [ pbsds ];
173   };