[build-system] requires = ["setuptools>=64.0", "wheel>=0.37.1"] build-backend = "setuptools.build_meta" [project] name = "astroid" license = {text = "LGPL-2.1-or-later"} description = "An abstract syntax tree for Python with inference support." readme = "README.rst" keywords = ["static code analysis", "python", "abstract syntax tree"] classifiers = [ "Development Status :: 6 - Mature", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing", ] requires-python = ">=3.8.0" dependencies = [ "typing-extensions>=4.0.0;python_version<'3.11'", ] dynamic = ["version"] [project.urls] "Docs" = "https://pylint.readthedocs.io/projects/astroid/en/latest/" "Source Code" = "https://github.com/pylint-dev/astroid" "Bug tracker" = "https://github.com/pylint-dev/astroid/issues" "Discord server" = "https://discord.gg/Egy6P8AMB5" [tool.setuptools] license-files = ["LICENSE", "CONTRIBUTORS.txt"] # Keep in sync with setup.cfg [tool.setuptools.packages.find] include = ["astroid*"] [tool.setuptools.package-data] "*" = [ "../requirements*.txt", "../tox.ini", "../tests/__init__.py", "../tests/resources.py", ] [tool.setuptools.dynamic] version = {attr = "astroid.__pkginfo__.__version__"} [tool.aliases] test = "pytest" [tool.pytest.ini_options] addopts = '-m "not acceptance"' python_files = ["*test_*.py"] testpaths = ["tests"] filterwarnings = "error" [tool.mypy] enable_error_code = "ignore-without-code" no_implicit_optional = true scripts_are_modules = true show_error_codes = true warn_redundant_casts = true [[tool.mypy.overrides]] # Importlib typeshed stubs do not include the private functions we use module = [ "_io.*", "gi.*", "importlib.*", "nose.*", "numpy.*", "pytest", "setuptools", ] ignore_missing_imports = true [tool.ruff] # ruff is less lenient than pylint and does not make any exceptions # (for docstrings, strings and comments in particular). line-length = 110 select = [ "E", # pycodestyle "F", # pyflakes "W", # pycodestyle "B", # bugbear "I", # isort "RUF", # ruff ] ignore = [ "B905", # `zip()` without an explicit `strict=` parameter "F401", # API "RUF100", # ruff does not understand pylint's directive usefulness ] fixable = [ "E", # pycodestyle "F", # pyflakes "W", # pycodestyle "B", # bugbear "I", # isort "RUF", # ruff ] unfixable = [] target-version = "py37"