Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / pylint / default.nix
blob046277a5fa58647175f18cbdf52f4100e06f79a5
1 { stdenv
2 , lib
3 , buildPythonPackage
4 , fetchFromGitHub
5 , pythonOlder
6 , astroid
7 , dill
8 , isort
9 , mccabe
10 , platformdirs
11 , requests
12 , setuptools
13 , tomli
14 , tomlkit
15 , typing-extensions
16 , gitpython
17 , py
18 , pytest-timeout
19 , pytest-xdist
20 , pytest7CheckHook
23 buildPythonPackage rec {
24   pname = "pylint";
25   version = "3.1.0";
26   pyproject = true;
28   disabled = pythonOlder "3.8";
30   src = fetchFromGitHub {
31     owner = "pylint-dev";
32     repo = "pylint";
33     rev = "refs/tags/v${version}";
34     hash = "sha256-JHtMaZNwl+yLwEDD4Nl0vOt9NQ9DO7iIy5LR/9ta1Pw=";
35   };
37   nativeBuildInputs = [
38     setuptools
39   ];
41   propagatedBuildInputs = [
42     astroid
43     dill
44     isort
45     mccabe
46     platformdirs
47     tomlkit
48   ] ++ lib.optionals (pythonOlder "3.11") [
49     tomli
50   ] ++ lib.optionals (pythonOlder "3.9") [
51     typing-extensions
52   ];
54   nativeCheckInputs = [
55     gitpython
56     # https://github.com/PyCQA/pylint/blob/main/requirements_test_min.txt
57     py
58     pytest-timeout
59     pytest-xdist
60     pytest7CheckHook
61     requests
62     typing-extensions
63   ];
65   pytestFlagsArray = [
66     # DeprecationWarning: pyreverse will drop support for resolving and
67     # displaying implemented interfaces in pylint 3.0. The
68     # implementation relies on the '__implements__'  attribute proposed
69     # in PEP 245, which was rejected in 2006.
70     "-W" "ignore::DeprecationWarning"
71     "-v"
72   ];
74   dontUseSetuptoolsCheck = true;
76   preCheck = ''
77     export HOME=$TEMPDIR
78   '';
80   disabledTestPaths = [
81     "tests/benchmark"
82     # tests miss multiple input files
83     # FileNotFoundError: [Errno 2] No such file or directory
84     "tests/pyreverse/test_writer.py"
85   ];
87   disabledTests = [
88     # AssertionError when self executing and checking output
89     # expected output looks like it should match though
90     "test_invocation_of_pylint_config"
91     "test_generate_rcfile"
92     "test_generate_toml_config"
93     "test_help_msg"
94     "test_output_of_callback_options"
95     # Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted. The list of emitted warnings is: [].
96     "test_save_and_load_not_a_linter_stats"
97     # Truncated string expectation mismatch
98     "test_truncated_compare"
99     # Probably related to pytest versions, see pylint-dev/pylint#9477 and pylint-dev/pylint#9483
100     "test_functional"
101     # AssertionError: assert [('specializa..., 'Ancestor')] == [('aggregatio..., 'Ancestor')]
102     "test_functional_relation_extraction"
103   ] ++ lib.optionals stdenv.isDarwin [
104     "test_parallel_execution"
105     "test_py3k_jobs_option"
106   ];
108   meta = with lib; {
109     homepage = "https://pylint.readthedocs.io/en/stable/";
110     description = "A bug and style checker for Python";
111     changelog = "https://github.com/pylint-dev/pylint/releases/tag/v${version}";
112     longDescription = ''
113       Pylint is a Python static code analysis tool which looks for programming errors,
114       helps enforcing a coding standard, sniffs for code smells and offers simple
115       refactoring suggestions.
116       Pylint is shipped with following additional commands:
117       - pyreverse: an UML diagram generator
118       - symilar: an independent similarities checker
119       - epylint: Emacs and Flymake compatible Pylint
120     '';
121     license = licenses.gpl1Plus;
122     maintainers = with maintainers; [ ];
123   };