From 8a242099b8601f5c0c11a45bcf935fac3276f685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 21 Sep 2024 18:20:38 -0700 Subject: [PATCH 1/4] python312Packages.blacken-docs: move from top-level We need it as a Python module for nbqa. --- .../python-modules}/blacken-docs/default.nix | 25 +++++++++++-------- pkgs/top-level/all-packages.nix | 2 +- pkgs/top-level/python-packages.nix | 2 ++ 3 files changed, 17 insertions(+), 12 deletions(-) rename pkgs/{tools/misc => development/python-modules}/blacken-docs/default.nix (73%) diff --git a/pkgs/tools/misc/blacken-docs/default.nix b/pkgs/development/python-modules/blacken-docs/default.nix similarity index 73% rename from pkgs/tools/misc/blacken-docs/default.nix rename to pkgs/development/python-modules/blacken-docs/default.nix index 434f684b78d2..7370471c2604 100644 --- a/pkgs/tools/misc/blacken-docs/default.nix +++ b/pkgs/development/python-modules/blacken-docs/default.nix @@ -1,12 +1,16 @@ -{ black -, fetchFromGitHub -, lib -, python3 +{ + black, + buildPythonPackage, + fetchFromGitHub, + lib, + pytestCheckHook, + setuptools, }: -python3.pkgs.buildPythonApplication rec { + +buildPythonPackage rec { pname = "blacken-docs"; version = "1.15.0"; - format = "pyproject"; + pyproject = true; src = fetchFromGitHub { owner = "adamchainz"; @@ -15,17 +19,16 @@ python3.pkgs.buildPythonApplication rec { hash = "sha256-3FGuFOAHCcybPwujWlh58NWtuF5CebaKTgBWgCGpSL8="; }; - nativeBuildInputs = [ - python3.pkgs.setuptools + build-system = [ + setuptools ]; - propagatedBuildInputs = [ + dependencies = [ black ]; nativeCheckInputs = [ - black - python3.pkgs.pytestCheckHook + pytestCheckHook ]; meta = with lib; { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c874ee7429e3..cce8fa3b248f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6605,7 +6605,7 @@ with pkgs; bbin = callPackage ../development/tools/bbin { }; - blacken-docs = callPackage ../tools/misc/blacken-docs { }; + blacken-docs = with python3Packages; toPythonApplication blacken-docs; bore = callPackage ../tools/networking/bore { inherit (darwin) Libsystem; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 74cb990650ae..62bcc9a550c7 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1667,6 +1667,8 @@ self: super: with self; { black = callPackage ../development/python-modules/black { }; + blacken-docs = callPackage ../development/python-modules/blacken-docs { }; + blackjax = callPackage ../development/python-modules/blackjax { }; black-macchiato = callPackage ../development/python-modules/black-macchiato { }; From 26bfa2c7f2a3801a17a13986105842f42ea90172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 21 Sep 2024 18:15:24 -0700 Subject: [PATCH 2/4] nbqa: update dependencies --- pkgs/by-name/nb/nbqa/package.nix | 56 +++++++++++++------------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/pkgs/by-name/nb/nbqa/package.nix b/pkgs/by-name/nb/nbqa/package.nix index f4b1a8fdf527..1c09784febbd 100644 --- a/pkgs/by-name/nb/nbqa/package.nix +++ b/pkgs/by-name/nb/nbqa/package.nix @@ -4,8 +4,6 @@ fetchFromGitHub, # optional-dependencies - black, - blacken-docs, ruff, # passthru @@ -28,27 +26,27 @@ python3.pkgs.buildPythonApplication rec { setuptools ]; - passthru.optional-dependencies = { - black = [ black ]; - blacken-docs = [ blacken-docs ]; - flake8 = [ python3.pkgs.flake8 ]; - isort = [ python3.pkgs.isort ]; - jupytext = [ python3.pkgs.jupytext ]; - mypy = [ python3.pkgs.mypy ]; - pylint = [ python3.pkgs.pylint ]; - pyupgrade = [ python3.pkgs.pyupgrade ]; - ruff = [ ruff ]; - }; + optional-dependencies.toolchain = + (with python3.pkgs; [ + black + blacken-docs + flake8 + isort + jupytext + mypy + pylint + pyupgrade + ]) + ++ [ + ruff + ]; - dependencies = - with python3.pkgs; - [ - autopep8 - ipython - tokenize-rt - tomli - ] - ++ builtins.attrValues passthru.optional-dependencies; + dependencies = with python3.pkgs; [ + autopep8 + ipython + tokenize-rt + tomli + ]; postPatch = '' # Force using the Ruff executable rather than the Python package @@ -61,24 +59,16 @@ python3.pkgs.buildPythonApplication rec { ''; nativeCheckInputs = - [ - black - ruff - ] - ++ (with python3.pkgs; [ + (with python3.pkgs; [ autoflake distutils - flake8 - isort - jupytext mdformat pre-commit-hooks pydocstyle - pylint pytestCheckHook - pyupgrade yapf - ]); + ]) + ++ lib.flatten (lib.attrValues optional-dependencies); disabledTests = [ # Test data not found From 23e6b80a0185c9c9268f40adc58e23ca4ff0a4f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 21 Sep 2024 18:47:29 -0700 Subject: [PATCH 3/4] nbqa: use versionCheckHook --- pkgs/by-name/nb/nbqa/package.nix | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/nb/nbqa/package.nix b/pkgs/by-name/nb/nbqa/package.nix index 1c09784febbd..5d713cd058d0 100644 --- a/pkgs/by-name/nb/nbqa/package.nix +++ b/pkgs/by-name/nb/nbqa/package.nix @@ -6,9 +6,8 @@ # optional-dependencies ruff, - # passthru - testers, - nbqa, + # tests + versionCheckHook, }: python3.pkgs.buildPythonApplication rec { pname = "nbqa"; @@ -68,7 +67,8 @@ python3.pkgs.buildPythonApplication rec { pytestCheckHook yapf ]) - ++ lib.flatten (lib.attrValues optional-dependencies); + ++ lib.flatten (lib.attrValues optional-dependencies) + ++ [ versionCheckHook ]; disabledTests = [ # Test data not found @@ -88,12 +88,6 @@ python3.pkgs.buildPythonApplication rec { "tests/test_include_exclude.py" ]; - passthru = { - tests.version = testers.testVersion { - package = nbqa; - }; - }; - meta = { homepage = "https://github.com/nbQA-dev/nbQA"; changelog = "https://nbqa.readthedocs.io/en/latest/history.html"; From 479a1a6c167a070400057e20a87d8af302d1cda1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 21 Sep 2024 18:36:36 -0700 Subject: [PATCH 4/4] nbqa: add passthru.withTools You can now do fancy things like (nbqa.override { python3 = python311; }).withTools (ps: [ ps.black ]) --- pkgs/by-name/nb/nbqa/package.nix | 170 +++++++++++++++++-------------- 1 file changed, 94 insertions(+), 76 deletions(-) diff --git a/pkgs/by-name/nb/nbqa/package.nix b/pkgs/by-name/nb/nbqa/package.nix index 5d713cd058d0..07fdcdde271a 100644 --- a/pkgs/by-name/nb/nbqa/package.nix +++ b/pkgs/by-name/nb/nbqa/package.nix @@ -9,91 +9,109 @@ # tests versionCheckHook, }: -python3.pkgs.buildPythonApplication rec { - pname = "nbqa"; - version = "1.9.0"; - pyproject = true; - src = fetchFromGitHub { - owner = "nbQA-dev"; - repo = "nbQA"; - rev = "refs/tags/${version}"; - hash = "sha256-9s+q2unh+jezU0Er7ZH0tvgntmPFts9OmsgAMeQXRrY="; - }; +let + nbqa = python3.pkgs.buildPythonApplication rec { + pname = "nbqa"; + version = "1.9.0"; + pyproject = true; - build-system = with python3.pkgs; [ - setuptools - ]; + src = fetchFromGitHub { + owner = "nbQA-dev"; + repo = "nbQA"; + rev = "refs/tags/${version}"; + hash = "sha256-9s+q2unh+jezU0Er7ZH0tvgntmPFts9OmsgAMeQXRrY="; + }; - optional-dependencies.toolchain = - (with python3.pkgs; [ - black - blacken-docs - flake8 - isort - jupytext - mypy - pylint - pyupgrade - ]) - ++ [ - ruff + build-system = with python3.pkgs; [ + setuptools ]; - dependencies = with python3.pkgs; [ - autopep8 - ipython - tokenize-rt - tomli - ]; + optional-dependencies.toolchain = + (with python3.pkgs; [ + black + blacken-docs + flake8 + isort + jupytext + mypy + pylint + pyupgrade + ]) + ++ [ + ruff + ]; - postPatch = '' - # Force using the Ruff executable rather than the Python package - substituteInPlace nbqa/__main__.py --replace 'if shell:' 'if shell or main_command == "ruff":' - ''; + dependencies = with python3.pkgs; [ + autopep8 + ipython + tokenize-rt + tomli + ]; - preCheck = '' - # Allow the tests to run `nbqa` itself from the path - export PATH="$out/bin":"$PATH" - ''; + postPatch = '' + # Force using the Ruff executable rather than the Python package + substituteInPlace nbqa/__main__.py --replace 'if shell:' 'if shell or main_command == "ruff":' + ''; - nativeCheckInputs = - (with python3.pkgs; [ - autoflake - distutils - mdformat - pre-commit-hooks - pydocstyle - pytestCheckHook - yapf - ]) - ++ lib.flatten (lib.attrValues optional-dependencies) - ++ [ versionCheckHook ]; + preCheck = '' + # Allow the tests to run `nbqa` itself from the path + export PATH="$out/bin":"$PATH" + ''; - disabledTests = [ - # Test data not found - "test_black_multiple_files" - "test_black_return_code" - "test_grep" - "test_jupytext_on_folder" - "test_mypy_works" - "test_running_in_different_dir_works" - "test_unable_to_reconstruct_message_pythonpath" - "test_with_subcommand" - "test_pylint_works" - ]; + nativeCheckInputs = + (with python3.pkgs; [ + autoflake + distutils + mdformat + pre-commit-hooks + pydocstyle + pytestCheckHook + yapf + ]) + ++ lib.flatten (lib.attrValues optional-dependencies) + ++ [ versionCheckHook ]; - disabledTestPaths = [ - # Test data not found - "tests/test_include_exclude.py" - ]; + disabledTests = [ + # Test data not found + "test_black_multiple_files" + "test_black_return_code" + "test_grep" + "test_jupytext_on_folder" + "test_mypy_works" + "test_running_in_different_dir_works" + "test_unable_to_reconstruct_message_pythonpath" + "test_with_subcommand" + "test_pylint_works" + ]; - meta = { - homepage = "https://github.com/nbQA-dev/nbQA"; - changelog = "https://nbqa.readthedocs.io/en/latest/history.html"; - description = "Run ruff, isort, pyupgrade, mypy, pylint, flake8, black, blacken-docs, and more on Jupyter Notebooks"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ l0b0 ]; - mainProgram = "nbqa"; + disabledTestPaths = [ + # Test data not found + "tests/test_include_exclude.py" + ]; + + passthru = { + # selector is a function mapping pythonPackages to a list of code quality + # tools, e.g. nbqa.withTools (ps: [ ps.black ]) + withTools = + selector: + nbqa.overridePythonAttrs ( + { dependencies, ... }: + { + dependencies = dependencies ++ selector python3.pkgs; + doCheck = false; + } + ); + }; + + meta = { + homepage = "https://github.com/nbQA-dev/nbQA"; + changelog = "https://nbqa.readthedocs.io/en/latest/history.html"; + description = "Run ruff, isort, pyupgrade, mypy, pylint, flake8, black, blacken-docs, and more on Jupyter Notebooks"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ l0b0 ]; + mainProgram = "nbqa"; + }; }; -} +in +nbqa