Loading pkgs/development/python-modules/gradio/client.nix +12 −22 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ writableTmpDirAsHomeHook, }: buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "gradio-client"; version = "2.0.1"; version = "2.2.0"; pyproject = true; # no tests on pypi Loading @@ -40,32 +40,25 @@ buildPythonPackage rec { owner = "gradio-app"; repo = "gradio"; # not to be confused with @gradio/client@${version} # tag = "gradio_client@${version}"; # tag = "gradio_client@${finalAttrs.version}"; # TODO: switch back to a tag next release, if they tag it. rev = "7a8894d7249ee20c2f7a896237e290e99661fd43"; # 2.0.1 rev = "8b03393a51e1e03fb04cb0a41b9a5dc3266a58aa"; # 2.2.0 sparseCheckout = [ "client/python" "gradio/media_assets" ]; hash = "sha256-p3okK48DJjjyvUzedNR60r5P8aKUxjE+ocb3EplZ6Uk="; hash = "sha256-LkTZwPyHe1w8D5unEMW7dBGKNHxM7gWJ7I+4HwiexKk="; }; sourceRoot = "${src.name}/client/python"; sourceRoot = "${finalAttrs.src.name}/client/python"; postPatch = '' # Because we set sourceRoot above, the folders "client/python" # don't exist, as far as this is concerned. postPatch = '' substituteInPlace test/conftest.py \ --replace-fail 'from client.python.test import media_data' 'import media_data' ''; # upstream adds upper constraints because they can, not because the need to # https://github.com/gradio-app/gradio/pull/4885 pythonRelaxDeps = [ # only backward incompat is dropping py3.7 support "websockets" ]; build-system = [ hatchling hatch-requirements-txt Loading Loading @@ -105,10 +98,6 @@ buildPythonPackage rec { cat ${./conftest-skip-network-errors.py} >> test/conftest.py ''; pytestFlags = [ #"-x" "-Wignore" # uncomment for debugging help ]; enabledTestPaths = [ "test/" ]; Loading @@ -135,10 +124,11 @@ buildPythonPackage rec { }; meta = { homepage = "https://www.gradio.app/"; changelog = "https://github.com/gradio-app/gradio/releases/tag/gradio_client@${version}"; description = "Lightweight library to use any Gradio app as an API"; homepage = "https://www.gradio.app/"; downloadPage = "https://github.com/gradio-app/gradio/tree/main/client/python"; # changelog = "https://github.com/gradio-app/gradio/releases/tag/${finalAttrs.src.tag}"; TODO: uncomment if the tag exists license = lib.licenses.asl20; maintainers = with lib.maintainers; [ pbsds ]; }; } }) pkgs/development/python-modules/gradio/default.nix +18 −21 Original line number Diff line number Diff line Loading @@ -79,41 +79,33 @@ let nodejs = nodejs_24; pnpm = pnpm_10.override { inherit nodejs; }; in buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "gradio"; version = "6.5.1"; version = "6.8.0"; pyproject = true; src = fetchFromGitHub { owner = "gradio-app"; repo = "gradio"; tag = "gradio@${version}"; hash = "sha256-pIcliKcb1eVVMk0ARzWcZGXc6pmI8mGVAvCJZ0JHXUw="; tag = "gradio@${finalAttrs.version}"; hash = "sha256-ZHglnRs0AXCu9HlVoSO0h5p6SE4al/OLPn0jwZgKVR8="; }; patches = [ ./fix-transformers-pipelines-imports.patch ]; pnpmDeps = fetchPnpmDeps { inherit inherit (finalAttrs) pname pnpm version src ; inherit pnpm; fetcherVersion = 3; hash = "sha256-6Cx0hdVd0srhArvck2Kn9U2fT7aKtTZjgV5b/Usrnoo="; }; pythonRelaxDeps = [ "aiofiles" "gradio-client" "markupsafe" "pydantic" # Requests >=2.11.10,<=2.12.4. Staging has it, master doesn't. ]; pythonRemoveDeps = [ # this isn't a real runtime dependency "ruff" ]; nativeBuildInputs = [ zip nodejs Loading @@ -128,6 +120,10 @@ buildPythonPackage rec { hatch-fancy-pypi-readme ]; pythonRelaxDeps = [ "aiofiles" "tomlkit" ]; dependencies = [ aiofiles anyio Loading Loading @@ -191,7 +187,7 @@ buildPythonPackage rec { # mock calls to `shutil.which(...)` (writeShellScriptBin "npm" "false") ] ++ optional-dependencies.oauth ++ finalAttrs.passthru.optional-dependencies.oauth ++ pydantic.optional-dependencies.email; preBuild = '' Loading @@ -216,6 +212,7 @@ buildPythonPackage rec { # requires network, it caught our xfail exception "test_error_analytics_successful" "TestSnippetExecution" # Flaky, tries to pin dependency behaviour. Sensitive to dep versions # These error only affect downstream use of the check dependencies. Loading Loading @@ -441,9 +438,9 @@ buildPythonPackage rec { meta = { homepage = "https://www.gradio.app/"; changelog = "https://github.com/gradio-app/gradio/releases/tag/gradio@${version}"; changelog = "https://github.com/gradio-app/gradio/releases/tag/${finalAttrs.src.tag}"; description = "Python library for easily interacting with trained machine learning models"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ pbsds ]; }; } }) pkgs/development/python-modules/gradio/fix-transformers-pipelines-imports.patch 0 → 100644 +162 −0 Original line number Diff line number Diff line diff --git a/test/test_pipelines.py b/test/test_pipelines.py index 1903f758f..c40e6d3b1 100644 --- a/test/test_pipelines.py +++ b/test/test_pipelines.py @@ -3,20 +3,6 @@ from unittest.mock import MagicMock import pytest import transformers -from transformers import ( - AudioClassificationPipeline, - AutomaticSpeechRecognitionPipeline, - DocumentQuestionAnsweringPipeline, - FeatureExtractionPipeline, - FillMaskPipeline, - ImageClassificationPipeline, - ObjectDetectionPipeline, - QuestionAnsweringPipeline, - TextClassificationPipeline, - TextGenerationPipeline, - VisualQuestionAnsweringPipeline, - ZeroShotClassificationPipeline, -) import gradio as gr from gradio.pipelines_utils import ( @@ -24,6 +10,14 @@ from gradio.pipelines_utils import ( ) +def _get_pipeline_cls(name: str): + """Resolve a pipeline class by name from transformers, returning None if it + was removed in the installed version.""" + return getattr(transformers, name, None) or getattr( + transformers.pipelines, name, None + ) + + @pytest.mark.flaky def test_interface_in_blocks(): pipe1 = transformers.pipeline(model="deepset/roberta-base-squad2") # type: ignore @@ -50,50 +44,66 @@ def test_transformers_load_from_pipeline(): class TestHandleTransformersPipelines(unittest.TestCase): + def _require(self, name: str): + """Return the pipeline class or skip the test if it was removed.""" + cls = _get_pipeline_cls(name) + if cls is None: + self.skipTest( + f"{name} not available in transformers {transformers.__version__}" + ) + return cls + def test_audio_classification_pipeline(self): - pipe = MagicMock(spec=AudioClassificationPipeline) + cls = self._require("AudioClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Class" def test_automatic_speech_recognition_pipeline(self): - pipe = MagicMock(spec=AutomaticSpeechRecognitionPipeline) + cls = self._require("AutomaticSpeechRecognitionPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Output" def test_object_detection_pipeline(self): - pipe = MagicMock(spec=ObjectDetectionPipeline) + cls = self._require("ObjectDetectionPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input Image" assert pipeline_info["outputs"].label == "Objects Detected" def test_feature_extraction_pipeline(self): - pipe = MagicMock(spec=FeatureExtractionPipeline) + cls = self._require("FeatureExtractionPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Output" def test_fill_mask_pipeline(self): - pipe = MagicMock(spec=FillMaskPipeline) + cls = self._require("FillMaskPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Classification" def test_image_classification_pipeline(self): - pipe = MagicMock(spec=ImageClassificationPipeline) + cls = self._require("ImageClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input Image" assert pipeline_info["outputs"].label == "Classification" def test_question_answering_pipeline(self): - pipe = MagicMock(spec=QuestionAnsweringPipeline) + cls = self._require("QuestionAnsweringPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Context" @@ -102,21 +112,24 @@ class TestHandleTransformersPipelines(unittest.TestCase): assert pipeline_info["outputs"][1].label == "Score" def test_text_classification_pipeline(self): - pipe = MagicMock(spec=TextClassificationPipeline) + cls = self._require("TextClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Classification" def test_text_generation_pipeline(self): - pipe = MagicMock(spec=TextGenerationPipeline) + cls = self._require("TextGenerationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Output" def test_zero_shot_classification_pipeline(self): - pipe = MagicMock(spec=ZeroShotClassificationPipeline) + cls = self._require("ZeroShotClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Input" @@ -127,7 +140,8 @@ class TestHandleTransformersPipelines(unittest.TestCase): assert pipeline_info["outputs"].label == "Classification" def test_document_question_answering_pipeline(self): - pipe = MagicMock(spec=DocumentQuestionAnsweringPipeline) + cls = self._require("DocumentQuestionAnsweringPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Input Document" @@ -135,7 +149,8 @@ class TestHandleTransformersPipelines(unittest.TestCase): assert pipeline_info["outputs"].label == "Label" def test_visual_question_answering_pipeline(self): - pipe = MagicMock(spec=VisualQuestionAnsweringPipeline) + cls = self._require("VisualQuestionAnsweringPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Input Image" pkgs/development/python-modules/skops/default.nix +24 −9 Original line number Diff line number Diff line Loading @@ -3,23 +3,28 @@ stdenv, buildPythonPackage, fetchFromGitHub, # build-system hatchling, huggingface-hub, matplotlib, # dependencies numpy, packaging, pandas, prettytable, scikit-learn, tabulate, # tests matplotlib, pandas, pytest-cov-stub, pytestCheckHook, pyyaml, rich, scikit-learn, streamlit, tabulate, }: buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "skops"; version = "0.13.0"; pyproject = true; Loading @@ -27,7 +32,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "skops-dev"; repo = "skops"; tag = "v${version}"; tag = "v${finalAttrs.version}"; hash = "sha256-1550LIVyChqP5q4VZmflCXPyXXg4eHJU5AlVQJD2M8c="; }; Loading Loading @@ -59,8 +64,14 @@ buildPythonPackage rec { disabledTests = [ # flaky "test_base_case_works_as_expected" # fairlearn is not available in nixpkgs "TestAddFairlearnMetricFrame" # numpy.linalg.LinAlgError: The covariance matrix of class 0 is not full rank. # Increase the value of `reg_param` to reduce the collinearity. "test_can_persist_fitted" ]; disabledTestPaths = [ Loading @@ -76,6 +87,10 @@ buildPythonPackage rec { # Warning from scipy.optimize in skops/io/tests/test_persist.py::test_dump_and_load_with_file_wrapper # https://github.com/skops-dev/skops/issues/479 "-Wignore::DeprecationWarning" # FutureWarning: Class PassiveAggressiveClassifier is deprecated; this is deprecated in version # 1.8 and will be removed in 1.10. Use `SGDClassifier(...)` instead. "-Wignore::FutureWarning" ]; pythonImportsCheck = [ "skops" ]; Loading @@ -83,9 +98,9 @@ buildPythonPackage rec { meta = { description = "Library for saving/loading, sharing, and deploying scikit-learn based models"; homepage = "https://skops.readthedocs.io/en/stable"; changelog = "https://github.com/skops-dev/skops/releases/tag/${src.tag}"; changelog = "https://github.com/skops-dev/skops/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = [ lib.maintainers.bcdarwin ]; mainProgram = "skops"; }; } }) pkgs/development/python-modules/smolagents/default.nix +13 −3 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ buildPythonPackage (finalAttrs: { build-system = [ setuptools ]; pythonRelaxDeps = [ "huggingface-hub" ]; dependencies = [ huggingface-hub jinja2 Loading Loading @@ -146,18 +149,23 @@ buildPythonPackage (finalAttrs: { disabledTestPaths = [ # ImportError: cannot import name 'require_soundfile' from 'transformers.testing_utils' "tests/test_types.py" # Requires unpackaged 'helium' "tests/test_vision_web_browser.py" ]; disabledTests = [ # Missing dependencies "TestBlaxelExecutorUnit" "TestModalExecutorUnit" "mcp" "test_cleanup" "test_ddgs_with_kwargs" "test_e2b_executor_instantiation" "test_flatten_messages_as_text_for_all_models" "mcp" "test_import_smolagents_without_extras" "test_vision_web_browser_main" "test_multiple_servers" "test_vision_web_browser_main" # Tests require network access "test_agent_type_output" "test_call_different_providers_without_key" Loading @@ -184,6 +192,9 @@ buildPythonPackage (finalAttrs: { "test_multiagents_save" "test_new_instance" # Flaky: assert 0.9858949184417725 <= 0.73 "test_retry_on_rate_limit_error" # Requires optional "blaxel" dependencies "test_blaxel_executor_instantiation_with_blaxel_sdk" "test_blaxel_executor_custom_parameters" Loading @@ -192,7 +203,6 @@ buildPythonPackage (finalAttrs: { "test_sandbox_lifecycle" # TypeError: 'function' object is not subscriptable "test_stream_to_gradio_memory_step" ]; __darwinAllowLocalNetworking = true; Loading Loading
pkgs/development/python-modules/gradio/client.nix +12 −22 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ writableTmpDirAsHomeHook, }: buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "gradio-client"; version = "2.0.1"; version = "2.2.0"; pyproject = true; # no tests on pypi Loading @@ -40,32 +40,25 @@ buildPythonPackage rec { owner = "gradio-app"; repo = "gradio"; # not to be confused with @gradio/client@${version} # tag = "gradio_client@${version}"; # tag = "gradio_client@${finalAttrs.version}"; # TODO: switch back to a tag next release, if they tag it. rev = "7a8894d7249ee20c2f7a896237e290e99661fd43"; # 2.0.1 rev = "8b03393a51e1e03fb04cb0a41b9a5dc3266a58aa"; # 2.2.0 sparseCheckout = [ "client/python" "gradio/media_assets" ]; hash = "sha256-p3okK48DJjjyvUzedNR60r5P8aKUxjE+ocb3EplZ6Uk="; hash = "sha256-LkTZwPyHe1w8D5unEMW7dBGKNHxM7gWJ7I+4HwiexKk="; }; sourceRoot = "${src.name}/client/python"; sourceRoot = "${finalAttrs.src.name}/client/python"; postPatch = '' # Because we set sourceRoot above, the folders "client/python" # don't exist, as far as this is concerned. postPatch = '' substituteInPlace test/conftest.py \ --replace-fail 'from client.python.test import media_data' 'import media_data' ''; # upstream adds upper constraints because they can, not because the need to # https://github.com/gradio-app/gradio/pull/4885 pythonRelaxDeps = [ # only backward incompat is dropping py3.7 support "websockets" ]; build-system = [ hatchling hatch-requirements-txt Loading Loading @@ -105,10 +98,6 @@ buildPythonPackage rec { cat ${./conftest-skip-network-errors.py} >> test/conftest.py ''; pytestFlags = [ #"-x" "-Wignore" # uncomment for debugging help ]; enabledTestPaths = [ "test/" ]; Loading @@ -135,10 +124,11 @@ buildPythonPackage rec { }; meta = { homepage = "https://www.gradio.app/"; changelog = "https://github.com/gradio-app/gradio/releases/tag/gradio_client@${version}"; description = "Lightweight library to use any Gradio app as an API"; homepage = "https://www.gradio.app/"; downloadPage = "https://github.com/gradio-app/gradio/tree/main/client/python"; # changelog = "https://github.com/gradio-app/gradio/releases/tag/${finalAttrs.src.tag}"; TODO: uncomment if the tag exists license = lib.licenses.asl20; maintainers = with lib.maintainers; [ pbsds ]; }; } })
pkgs/development/python-modules/gradio/default.nix +18 −21 Original line number Diff line number Diff line Loading @@ -79,41 +79,33 @@ let nodejs = nodejs_24; pnpm = pnpm_10.override { inherit nodejs; }; in buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "gradio"; version = "6.5.1"; version = "6.8.0"; pyproject = true; src = fetchFromGitHub { owner = "gradio-app"; repo = "gradio"; tag = "gradio@${version}"; hash = "sha256-pIcliKcb1eVVMk0ARzWcZGXc6pmI8mGVAvCJZ0JHXUw="; tag = "gradio@${finalAttrs.version}"; hash = "sha256-ZHglnRs0AXCu9HlVoSO0h5p6SE4al/OLPn0jwZgKVR8="; }; patches = [ ./fix-transformers-pipelines-imports.patch ]; pnpmDeps = fetchPnpmDeps { inherit inherit (finalAttrs) pname pnpm version src ; inherit pnpm; fetcherVersion = 3; hash = "sha256-6Cx0hdVd0srhArvck2Kn9U2fT7aKtTZjgV5b/Usrnoo="; }; pythonRelaxDeps = [ "aiofiles" "gradio-client" "markupsafe" "pydantic" # Requests >=2.11.10,<=2.12.4. Staging has it, master doesn't. ]; pythonRemoveDeps = [ # this isn't a real runtime dependency "ruff" ]; nativeBuildInputs = [ zip nodejs Loading @@ -128,6 +120,10 @@ buildPythonPackage rec { hatch-fancy-pypi-readme ]; pythonRelaxDeps = [ "aiofiles" "tomlkit" ]; dependencies = [ aiofiles anyio Loading Loading @@ -191,7 +187,7 @@ buildPythonPackage rec { # mock calls to `shutil.which(...)` (writeShellScriptBin "npm" "false") ] ++ optional-dependencies.oauth ++ finalAttrs.passthru.optional-dependencies.oauth ++ pydantic.optional-dependencies.email; preBuild = '' Loading @@ -216,6 +212,7 @@ buildPythonPackage rec { # requires network, it caught our xfail exception "test_error_analytics_successful" "TestSnippetExecution" # Flaky, tries to pin dependency behaviour. Sensitive to dep versions # These error only affect downstream use of the check dependencies. Loading Loading @@ -441,9 +438,9 @@ buildPythonPackage rec { meta = { homepage = "https://www.gradio.app/"; changelog = "https://github.com/gradio-app/gradio/releases/tag/gradio@${version}"; changelog = "https://github.com/gradio-app/gradio/releases/tag/${finalAttrs.src.tag}"; description = "Python library for easily interacting with trained machine learning models"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ pbsds ]; }; } })
pkgs/development/python-modules/gradio/fix-transformers-pipelines-imports.patch 0 → 100644 +162 −0 Original line number Diff line number Diff line diff --git a/test/test_pipelines.py b/test/test_pipelines.py index 1903f758f..c40e6d3b1 100644 --- a/test/test_pipelines.py +++ b/test/test_pipelines.py @@ -3,20 +3,6 @@ from unittest.mock import MagicMock import pytest import transformers -from transformers import ( - AudioClassificationPipeline, - AutomaticSpeechRecognitionPipeline, - DocumentQuestionAnsweringPipeline, - FeatureExtractionPipeline, - FillMaskPipeline, - ImageClassificationPipeline, - ObjectDetectionPipeline, - QuestionAnsweringPipeline, - TextClassificationPipeline, - TextGenerationPipeline, - VisualQuestionAnsweringPipeline, - ZeroShotClassificationPipeline, -) import gradio as gr from gradio.pipelines_utils import ( @@ -24,6 +10,14 @@ from gradio.pipelines_utils import ( ) +def _get_pipeline_cls(name: str): + """Resolve a pipeline class by name from transformers, returning None if it + was removed in the installed version.""" + return getattr(transformers, name, None) or getattr( + transformers.pipelines, name, None + ) + + @pytest.mark.flaky def test_interface_in_blocks(): pipe1 = transformers.pipeline(model="deepset/roberta-base-squad2") # type: ignore @@ -50,50 +44,66 @@ def test_transformers_load_from_pipeline(): class TestHandleTransformersPipelines(unittest.TestCase): + def _require(self, name: str): + """Return the pipeline class or skip the test if it was removed.""" + cls = _get_pipeline_cls(name) + if cls is None: + self.skipTest( + f"{name} not available in transformers {transformers.__version__}" + ) + return cls + def test_audio_classification_pipeline(self): - pipe = MagicMock(spec=AudioClassificationPipeline) + cls = self._require("AudioClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Class" def test_automatic_speech_recognition_pipeline(self): - pipe = MagicMock(spec=AutomaticSpeechRecognitionPipeline) + cls = self._require("AutomaticSpeechRecognitionPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Output" def test_object_detection_pipeline(self): - pipe = MagicMock(spec=ObjectDetectionPipeline) + cls = self._require("ObjectDetectionPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input Image" assert pipeline_info["outputs"].label == "Objects Detected" def test_feature_extraction_pipeline(self): - pipe = MagicMock(spec=FeatureExtractionPipeline) + cls = self._require("FeatureExtractionPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Output" def test_fill_mask_pipeline(self): - pipe = MagicMock(spec=FillMaskPipeline) + cls = self._require("FillMaskPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Classification" def test_image_classification_pipeline(self): - pipe = MagicMock(spec=ImageClassificationPipeline) + cls = self._require("ImageClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input Image" assert pipeline_info["outputs"].label == "Classification" def test_question_answering_pipeline(self): - pipe = MagicMock(spec=QuestionAnsweringPipeline) + cls = self._require("QuestionAnsweringPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Context" @@ -102,21 +112,24 @@ class TestHandleTransformersPipelines(unittest.TestCase): assert pipeline_info["outputs"][1].label == "Score" def test_text_classification_pipeline(self): - pipe = MagicMock(spec=TextClassificationPipeline) + cls = self._require("TextClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Classification" def test_text_generation_pipeline(self): - pipe = MagicMock(spec=TextGenerationPipeline) + cls = self._require("TextGenerationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"].label == "Input" assert pipeline_info["outputs"].label == "Output" def test_zero_shot_classification_pipeline(self): - pipe = MagicMock(spec=ZeroShotClassificationPipeline) + cls = self._require("ZeroShotClassificationPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Input" @@ -127,7 +140,8 @@ class TestHandleTransformersPipelines(unittest.TestCase): assert pipeline_info["outputs"].label == "Classification" def test_document_question_answering_pipeline(self): - pipe = MagicMock(spec=DocumentQuestionAnsweringPipeline) + cls = self._require("DocumentQuestionAnsweringPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Input Document" @@ -135,7 +149,8 @@ class TestHandleTransformersPipelines(unittest.TestCase): assert pipeline_info["outputs"].label == "Label" def test_visual_question_answering_pipeline(self): - pipe = MagicMock(spec=VisualQuestionAnsweringPipeline) + cls = self._require("VisualQuestionAnsweringPipeline") + pipe = MagicMock(spec=cls) pipeline_info = handle_transformers_pipeline(pipe) assert pipeline_info is not None assert pipeline_info["inputs"][0].label == "Input Image"
pkgs/development/python-modules/skops/default.nix +24 −9 Original line number Diff line number Diff line Loading @@ -3,23 +3,28 @@ stdenv, buildPythonPackage, fetchFromGitHub, # build-system hatchling, huggingface-hub, matplotlib, # dependencies numpy, packaging, pandas, prettytable, scikit-learn, tabulate, # tests matplotlib, pandas, pytest-cov-stub, pytestCheckHook, pyyaml, rich, scikit-learn, streamlit, tabulate, }: buildPythonPackage rec { buildPythonPackage (finalAttrs: { pname = "skops"; version = "0.13.0"; pyproject = true; Loading @@ -27,7 +32,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "skops-dev"; repo = "skops"; tag = "v${version}"; tag = "v${finalAttrs.version}"; hash = "sha256-1550LIVyChqP5q4VZmflCXPyXXg4eHJU5AlVQJD2M8c="; }; Loading Loading @@ -59,8 +64,14 @@ buildPythonPackage rec { disabledTests = [ # flaky "test_base_case_works_as_expected" # fairlearn is not available in nixpkgs "TestAddFairlearnMetricFrame" # numpy.linalg.LinAlgError: The covariance matrix of class 0 is not full rank. # Increase the value of `reg_param` to reduce the collinearity. "test_can_persist_fitted" ]; disabledTestPaths = [ Loading @@ -76,6 +87,10 @@ buildPythonPackage rec { # Warning from scipy.optimize in skops/io/tests/test_persist.py::test_dump_and_load_with_file_wrapper # https://github.com/skops-dev/skops/issues/479 "-Wignore::DeprecationWarning" # FutureWarning: Class PassiveAggressiveClassifier is deprecated; this is deprecated in version # 1.8 and will be removed in 1.10. Use `SGDClassifier(...)` instead. "-Wignore::FutureWarning" ]; pythonImportsCheck = [ "skops" ]; Loading @@ -83,9 +98,9 @@ buildPythonPackage rec { meta = { description = "Library for saving/loading, sharing, and deploying scikit-learn based models"; homepage = "https://skops.readthedocs.io/en/stable"; changelog = "https://github.com/skops-dev/skops/releases/tag/${src.tag}"; changelog = "https://github.com/skops-dev/skops/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = [ lib.maintainers.bcdarwin ]; mainProgram = "skops"; }; } })
pkgs/development/python-modules/smolagents/default.nix +13 −3 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ buildPythonPackage (finalAttrs: { build-system = [ setuptools ]; pythonRelaxDeps = [ "huggingface-hub" ]; dependencies = [ huggingface-hub jinja2 Loading Loading @@ -146,18 +149,23 @@ buildPythonPackage (finalAttrs: { disabledTestPaths = [ # ImportError: cannot import name 'require_soundfile' from 'transformers.testing_utils' "tests/test_types.py" # Requires unpackaged 'helium' "tests/test_vision_web_browser.py" ]; disabledTests = [ # Missing dependencies "TestBlaxelExecutorUnit" "TestModalExecutorUnit" "mcp" "test_cleanup" "test_ddgs_with_kwargs" "test_e2b_executor_instantiation" "test_flatten_messages_as_text_for_all_models" "mcp" "test_import_smolagents_without_extras" "test_vision_web_browser_main" "test_multiple_servers" "test_vision_web_browser_main" # Tests require network access "test_agent_type_output" "test_call_different_providers_without_key" Loading @@ -184,6 +192,9 @@ buildPythonPackage (finalAttrs: { "test_multiagents_save" "test_new_instance" # Flaky: assert 0.9858949184417725 <= 0.73 "test_retry_on_rate_limit_error" # Requires optional "blaxel" dependencies "test_blaxel_executor_instantiation_with_blaxel_sdk" "test_blaxel_executor_custom_parameters" Loading @@ -192,7 +203,6 @@ buildPythonPackage (finalAttrs: { "test_sandbox_lifecycle" # TypeError: 'function' object is not subscriptable "test_stream_to_gradio_memory_step" ]; __darwinAllowLocalNetworking = true; Loading