nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 python3Packages,
4 fetchFromGitHub,
5
6 # optional-dependencies
7 ruff,
8
9 # tests
10 versionCheckHook,
11
12 nix-update-script,
13}:
14
15let
16 nbqa = python3Packages.buildPythonApplication rec {
17 pname = "nbqa";
18 version = "1.9.1";
19 pyproject = true;
20
21 src = fetchFromGitHub {
22 owner = "nbQA-dev";
23 repo = "nbQA";
24 tag = version;
25 hash = "sha256-qVNJ8f8vUlTCi5DbvG70orcSnulH60UcI5iABtXYUog=";
26 };
27
28 build-system = with python3Packages; [
29 setuptools
30 ];
31
32 optional-dependencies.toolchain =
33 (with python3Packages; [
34 black
35 blacken-docs
36 flake8
37 isort
38 jupytext
39 mypy
40 pylint
41 pyupgrade
42 ])
43 ++ [
44 ruff
45 ];
46
47 dependencies = with python3Packages; [
48 autopep8
49 ipython
50 tokenize-rt
51 tomli
52 ];
53
54 postPatch = ''
55 # Force using the Ruff executable rather than the Python package
56 substituteInPlace nbqa/__main__.py --replace 'if shell:' 'if shell or main_command == "ruff":'
57 '';
58
59 preCheck = ''
60 # Allow the tests to run `nbqa` itself from the path
61 export PATH="$out/bin":"$PATH"
62 '';
63
64 nativeCheckInputs =
65 (with python3Packages; [
66 autoflake
67 distutils
68 mdformat
69 pre-commit-hooks
70 pydocstyle
71 pytestCheckHook
72 yapf
73 ])
74 ++ lib.flatten (lib.attrValues optional-dependencies)
75 ++ [ versionCheckHook ];
76 versionCheckProgramArg = "--version";
77
78 disabledTests = [
79 # Test data not found
80 "test_black_multiple_files"
81 "test_black_return_code"
82 "test_grep"
83 "test_jupytext_on_folder"
84 "test_mypy_works"
85 "test_running_in_different_dir_works"
86 "test_unable_to_reconstruct_message_pythonpath"
87 "test_with_subcommand"
88 "test_pylint_works"
89 ];
90
91 disabledTestPaths = [
92 # Test data not found
93 "tests/test_include_exclude.py"
94 ];
95
96 passthru = {
97 # selector is a function mapping pythonPackages to a list of code quality
98 # tools, e.g. nbqa.withTools (ps: [ ps.black ])
99 withTools =
100 selector:
101 nbqa.overridePythonAttrs (
102 { dependencies, ... }:
103 {
104 dependencies = dependencies ++ selector python3Packages;
105 doCheck = false;
106 }
107 );
108
109 updateScript = nix-update-script { };
110 };
111
112 meta = {
113 homepage = "https://github.com/nbQA-dev/nbQA";
114 changelog = "https://nbqa.readthedocs.io/en/latest/history.html";
115 description = "Run ruff, isort, pyupgrade, mypy, pylint, flake8, black, blacken-docs, and more on Jupyter Notebooks";
116 license = lib.licenses.mit;
117 maintainers = with lib.maintainers; [ l0b0 ];
118 mainProgram = "nbqa";
119 };
120 };
121in
122nbqa