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