| [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" |