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