1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, isPyPy
6, lazy-object-proxy
7, setuptools
8, typing-extensions
9, typed-ast
10, pylint
11, pytestCheckHook
12, wrapt
13}:
14
15buildPythonPackage rec {
16 pname = "astroid";
17 version = "2.14.2"; # Check whether the version is compatible with pylint
18 format = "pyproject";
19
20 disabled = pythonOlder "3.7.2";
21
22 src = fetchFromGitHub {
23 owner = "PyCQA";
24 repo = pname;
25 rev = "refs/tags/v${version}";
26 hash = "sha256-SIBzn57UNn/sLuDWt391M/kcCyjCocHmL5qi2cSX2iA=";
27 };
28
29 nativeBuildInputs = [
30 setuptools
31 ];
32
33 propagatedBuildInputs = [
34 lazy-object-proxy
35 wrapt
36 ] ++ lib.optionals (pythonOlder "3.11") [
37 typing-extensions
38 ] ++ lib.optionals (!isPyPy && pythonOlder "3.8") [
39 typed-ast
40 ];
41
42 nativeCheckInputs = [
43 pytestCheckHook
44 typing-extensions
45 ];
46
47 disabledTests = [
48 # DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('tests.testdata.python3.data.path_pkg_resources_1.package')`.
49 "test_identify_old_namespace_package_protocol"
50 ];
51
52 passthru.tests = {
53 inherit pylint;
54 };
55
56 meta = with lib; {
57 changelog = "https://github.com/PyCQA/astroid/blob/${src.rev}/ChangeLog";
58 description = "An abstract syntax tree for Python with inference support";
59 homepage = "https://github.com/PyCQA/astroid";
60 license = licenses.lgpl21Plus;
61 maintainers = with maintainers; [ SuperSandro2000 ];
62 };
63}