| [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.10.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.10", | 
 |   "Programming Language :: Python :: 3.11", | 
 |   "Programming Language :: Python :: 3.12", | 
 |   "Programming Language :: Python :: 3.13", | 
 |   "Programming Language :: Python :: 3.14", | 
 |   "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 = "py310" | 
 |  | 
 | # 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.pyproject-fmt] | 
 | max_supported_python = "3.14" | 
 |  | 
 | [tool.pytest.ini_options] | 
 | addopts = '-m "not acceptance"' | 
 | python_files = [ "*test_*.py" ] | 
 | testpaths = [ "tests" ] | 
 | filterwarnings = "error" | 
 |  | 
 | [tool.mypy] | 
 | python_version = "3.10" | 
 | files = [ | 
 |   "astroid/_ast.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 = [ | 
 |   "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.*", | 
 |   "numpy.*", | 
 |   "pytest", | 
 |   "setuptools", | 
 | ] | 
 | ignore_missing_imports = true | 
 |  | 
 | [tool.aliases] | 
 | test = "pytest" |