blob: a669de1102fd3eeda9babbcbf7d6145e26cfb1bd [file] [log] [blame] [edit]
[build-system]
build-backend = "setuptools.build_meta"
requires = [ "setuptools>=77" ]
[project]
name = "astroid"
description = "An abstract syntax tree for Python with inference support."
readme = "README.rst"
keywords = [ "abstract syntax tree", "python", "static code analysis" ]
license = "LGPL-2.1-or-later"
license-files = [ "LICENSE", "CONTRIBUTORS.txt" ]
requires-python = ">=3.9.0"
classifiers = [
"Development Status :: 6 - Mature",
"Environment :: Console",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"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",
]
dynamic = [ "version" ]
dependencies = [
"typing-extensions>=4; python_version<'3.11'",
]
urls."Bug tracker" = "https://github.com/pylint-dev/astroid/issues"
urls."Discord server" = "https://discord.gg/Egy6P8AMB5"
urls."Docs" = "https://pylint.readthedocs.io/projects/astroid/en/latest/"
urls."Source Code" = "https://github.com/pylint-dev/astroid"
[tool.setuptools.package-dir]
"" = "."
[tool.setuptools.packages.find]
include = [ "astroid*" ]
[tool.setuptools.dynamic]
version = { attr = "astroid.__pkginfo__.__version__" }
[tool.ruff]
target-version = "py39"
# ruff is less lenient than pylint and does not make any exceptions
# (for docstrings, strings and comments in particular).
line-length = 110
extend-exclude = [ "tests/testdata/" ]
lint.select = [
"B", # bugbear
"E", # pycodestyle
"F", # pyflakes
"I", # isort
"RUF", # ruff
"W", # pycodestyle
]
lint.ignore = [
"B905", # `zip()` without an explicit `strict=` parameter
"F401", # API
"RUF100", # ruff does not understand pylint's directive usefulness
]
# Ruff is autofixing a tests with a voluntarily sneaky unicode
lint.per-file-ignores."tests/test_regrtest.py" = [ "RUF001" ]
lint.fixable = [
"B", # bugbear
"E", # pycodestyle
"F", # pyflakes
"I", # isort
"RUF", # ruff
"W", # pycodestyle
]
lint.unfixable = [ "RUF001" ]
[tool.pytest.ini_options]
addopts = '-m "not acceptance"'
python_files = [ "*test_*.py" ]
testpaths = [ "tests" ]
filterwarnings = "error"
[tool.mypy]
python_version = "3.9"
files = [
"astroid/_ast.py",
"astroid/_backport_stdlib_names.py",
"astroid/astroid_manager.py",
"astroid/brain/brain_crypt.py",
"astroid/brain/brain_ctypes.py",
"astroid/brain/brain_curses.py",
"astroid/brain/brain_datetime.py",
"astroid/brain/brain_dateutil.py",
"astroid/brain/brain_hashlib.py",
"astroid/brain/brain_http.py",
"astroid/brain/brain_hypothesis.py",
"astroid/brain/brain_mechanize.py",
"astroid/brain/brain_numpy_core_einsumfunc.py",
"astroid/brain/brain_numpy_core_fromnumeric.py",
"astroid/brain/brain_numpy_core_function_base.py",
"astroid/brain/brain_numpy_core_multiarray.py",
"astroid/brain/brain_numpy_core_numeric.py",
"astroid/brain/brain_numpy_core_numerictypes.py",
"astroid/brain/brain_numpy_core_umath.py",
"astroid/brain/brain_numpy_ma.py",
"astroid/brain/brain_numpy_random_mtrand.py",
"astroid/brain/brain_pkg_resources.py",
"astroid/brain/brain_pytest.py",
"astroid/brain/brain_responses.py",
"astroid/brain/brain_scipy_signal.py",
"astroid/brain/brain_sqlalchemy.py",
"astroid/brain/brain_ssl.py",
"astroid/brain/brain_subprocess.py",
"astroid/brain/brain_threading.py",
"astroid/brain/brain_unittest.py",
"astroid/brain/brain_uuid.py",
"astroid/const.py",
"astroid/context.py",
"astroid/interpreter/_import/",
"astroid/modutils.py",
"astroid/nodes/const.py",
"astroid/nodes/utils.py",
]
always_false = [
"PY310_PLUS",
"PY311_PLUS",
"PY312_PLUS",
"PY313_PLUS",
]
disallow_any_decorated = true
disallow_any_explicit = true
follow_imports = "silent"
scripts_are_modules = true
show_error_codes = true
strict = true
warn_redundant_casts = true
warn_unreachable = 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.aliases]
test = "pytest"