blob: c5d4c15fd8b645fe7eb8f4d27dd5453316f33966 [file] [log] [blame]
[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 :: 3.12",
"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.package-dir]
"" = "."
[tool.setuptools.packages.find]
include = ["astroid*"]
[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 = ["RUF001"]
target-version = "py38"
[tool.ruff.per-file-ignores]
# Ruff is autofixing a tests with a voluntarily sneaky unicode
"tests/test_regrtest.py" = ["RUF001"]