diff options
Diffstat (limited to 'pkgs/development/python-modules/gradio/default.nix')
-rw-r--r-- | pkgs/development/python-modules/gradio/default.nix | 226 |
1 files changed, 139 insertions, 87 deletions
diff --git a/pkgs/development/python-modules/gradio/default.nix b/pkgs/development/python-modules/gradio/default.nix index 6c735123aca18..4d028da04e493 100644 --- a/pkgs/development/python-modules/gradio/default.nix +++ b/pkgs/development/python-modules/gradio/default.nix @@ -1,77 +1,77 @@ -{ lib -, stdenv -, buildPythonPackage -, fetchPypi -, pythonOlder -, pythonRelaxDepsHook -, writeShellScriptBin -, gradio - -# pyproject -, hatchling -, hatch-requirements-txt -, hatch-fancy-pypi-readme - -# runtime -, setuptools -, aiofiles -, altair -, diffusers -, fastapi -, ffmpy -, gradio-client -, httpx -, huggingface-hub -, importlib-resources -, jinja2 -, markupsafe -, matplotlib -, numpy -, orjson -, packaging -, pandas -, pillow -, pydantic -, python-multipart -, pydub -, pyyaml -, semantic-version -, typing-extensions -, uvicorn -, typer -, tomlkit - -# oauth -, authlib -, itsdangerous - -# check -, pytestCheckHook -, boto3 -, gradio-pdf -, ffmpeg -, ipython -, pytest-asyncio -, respx -, scikit-image -, torch -, tqdm -, transformers -, vega-datasets +{ + lib, + stdenv, + buildPythonPackage, + fetchPypi, + pythonOlder, + pythonRelaxDepsHook, + writeShellScriptBin, + gradio, + + # pyproject + hatchling, + hatch-requirements-txt, + hatch-fancy-pypi-readme, + + # runtime + setuptools, + aiofiles, + altair, + diffusers, + fastapi, + ffmpy, + gradio-client, + httpx, + huggingface-hub, + importlib-resources, + jinja2, + markupsafe, + matplotlib, + numpy, + orjson, + packaging, + pandas, + pillow, + pydantic, + python-multipart, + pydub, + pyyaml, + semantic-version, + typing-extensions, + uvicorn, + typer, + tomlkit, + + # oauth + authlib, + itsdangerous, + + # check + pytestCheckHook, + boto3, + gradio-pdf, + ffmpeg, + ipython, + pytest-asyncio, + respx, + scikit-image, + torch, + tqdm, + transformers, + vega-datasets, }: buildPythonPackage rec { pname = "gradio"; - version = "4.22.0"; + version = "4.36.1"; format = "pyproject"; disabled = pythonOlder "3.7"; - # We use the Pypi release, since it provides prebuilt webui assets, - # and upstream has stopped tagging releases since 3.41.0 + # We use the Pypi release, since it provides prebuilt webui assets src = fetchPypi { inherit pname version; - hash = "sha256-nhrT509xB3+R+HF6TF5AQGnfufT6iNmzjxZgcVL7fBo="; + hash = "sha256-crLSEVbTRnEjuubzD0Y/AC7wbicnZidDCPXtPKw3Vjs="; }; # fix packaging.ParserSyntaxError, which can't handle comments @@ -82,9 +82,7 @@ buildPythonPackage rec { rm -rf venv/ ''; - pythonRelaxDeps = [ - "tomlkit" - ]; + pythonRelaxDeps = [ "tomlkit" ]; pythonRemoveDeps = [ # our package is presented as a binary, not a python lib - and @@ -151,19 +149,19 @@ buildPythonPackage rec { # mock calls to `shutil.which(...)` (writeShellScriptBin "npm" "false") - ] - ++ passthru.optional-dependencies.oauth - ++ pydantic.passthru.optional-dependencies.email; + ] ++ passthru.optional-dependencies.oauth ++ pydantic.passthru.optional-dependencies.email; # Add a pytest hook skipping tests that access network, marking them as "Expected fail" (xfail). # We additionally xfail FileNotFoundError, since the gradio devs often fail to upload test assets to pypi. - preCheck = '' - export HOME=$TMPDIR - cat ${./conftest-skip-network-errors.py} >> test/conftest.py - '' + lib.optionalString stdenv.isDarwin '' - # OSError: [Errno 24] Too many open files - ulimit -n 4096 - ''; + preCheck = + '' + export HOME=$TMPDIR + cat ${./conftest-skip-network-errors.py} >> test/conftest.py + '' + + lib.optionalString stdenv.isDarwin '' + # OSError: [Errno 24] Too many open files + ulimit -n 4096 + ''; disabledTests = [ # Actually broken @@ -189,15 +187,67 @@ buildPythonPackage rec { # tests if pip and other tools are installed "test_get_executable_path" + ] ++ lib.optionals stdenv.isDarwin [ + # flaky on darwin (depend on port availability) + "test_all_status_messages" + "test_async_generators" + "test_async_generators_interface" + "test_async_iterator_update_with_new_component" + "test_concurrency_limits" + "test_default_concurrency_limits" + "test_default_flagging_callback" + "test_end_to_end" + "test_end_to_end_cache_examples" + "test_event_data" + "test_every_does_not_block_queue" + "test_example_caching_relaunch" + "test_example_caching_relaunch" + "test_exit_called_at_launch" + "test_file_component_uploads" + "test_files_saved_as_file_paths" + "test_flagging_does_not_create_unnecessary_directories" + "test_flagging_no_permission_error_with_flagging_disabled" + "test_info_and_warning_alerts" + "test_info_isolation" + "test_launch_analytics_does_not_error_with_invalid_blocks" + "test_no_empty_audio_files" + "test_no_empty_image_files" + "test_no_empty_video_files" + "test_non_streaming_api" + "test_non_streaming_api_async" + "test_pil_images_hashed" + "test_progress_bar" + "test_progress_bar_track_tqdm" + "test_queue_when_using_auth" + "test_restart_after_close" + "test_set_share_in_colab" + "test_show_error" + "test_simple_csv_flagging_callback" + "test_single_request" + "test_socket_reuse" + "test_start_server" + "test_state_holder_is_used_in_postprocess" + "test_state_stored_up_to_capacity" + "test_static_files_single_app" + "test_streaming_api" + "test_streaming_api_async" + "test_streaming_api_with_additional_inputs" + "test_sync_generators" + "test_time_to_live_and_delete_callback_for_state" + "test_updates_stored_up_to_capacity" + "test_varying_output_forms_with_generators" ]; disabledTestPaths = [ # 100% touches network "test/test_networking.py" # makes pytest freeze 50% of the time "test/test_interfaces.py" + ] ++ lib.optionals stdenv.isDarwin [ + # Network-related tests that are flaky on darwin (depend on port availability) + "test/test_routes.py" ]; pytestFlagsArray = [ - "-x" # abort on first failure + "-x" # abort on first failure "-m 'not flaky'" #"-W" "ignore" # uncomment for debugging help ]; @@ -212,17 +262,19 @@ buildPythonPackage rec { # Cyclic dependencies are fun! # This is gradio without gradio-client and gradio-pdf - passthru.sans-reverse-dependencies = (gradio.override (old: { + passthru.sans-reverse-dependencies = + (gradio.override (old: { gradio-client = null; gradio-pdf = null; - })).overridePythonAttrs (old: { - pname = old.pname + "-sans-reverse-dependencies"; - pythonRemoveDeps = (old.pythonRemoveDeps or []) ++ [ "gradio-client" ]; - doInstallCheck = false; - doCheck = false; - pythonImportsCheck = null; - dontCheckRuntimeDeps = true; - }); + })).overridePythonAttrs + (old: { + pname = old.pname + "-sans-reverse-dependencies"; + pythonRemoveDeps = (old.pythonRemoveDeps or [ ]) ++ [ "gradio-client" ]; + doInstallCheck = false; + doCheck = false; + pythonImportsCheck = null; + dontCheckRuntimeDeps = true; + }); meta = with lib; { homepage = "https://www.gradio.app/"; |