sphinx/pyproject.toml
danieleades 952bdbbac2
Shrink mypy whitelist for `sphinx.cmd.quickstart` (#12617)
Co-authored-by: Daniel Eades <daniel.eades@seebyte.com>
2024-07-20 20:05:48 +01:00

322 lines
9.7 KiB
TOML

[build-system]
requires = ["flit_core>=3.7"]
build-backend = "flit_core.buildapi"
# project metadata
[project]
name = "Sphinx"
description = "Python documentation generator"
readme = "README.rst"
urls.Changelog = "https://www.sphinx-doc.org/en/master/changes.html"
urls.Code = "https://github.com/sphinx-doc/sphinx"
urls.Download = "https://pypi.org/project/Sphinx/"
urls.Homepage = "https://www.sphinx-doc.org/"
urls."Issue tracker" = "https://github.com/sphinx-doc/sphinx/issues"
license.text = "BSD-2-Clause"
requires-python = ">=3.9"
# Classifiers list: https://pypi.org/classifiers/
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: Science/Research",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"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",
"Framework :: Sphinx",
"Framework :: Sphinx :: Domain",
"Framework :: Sphinx :: Extension",
"Framework :: Sphinx :: Theme",
"Topic :: Documentation",
"Topic :: Documentation :: Sphinx",
"Topic :: Internet :: WWW/HTTP :: Site Management",
"Topic :: Printing",
"Topic :: Software Development",
"Topic :: Software Development :: Documentation",
"Topic :: Text Processing",
"Topic :: Text Processing :: General",
"Topic :: Text Processing :: Indexing",
"Topic :: Text Processing :: Markup",
"Topic :: Text Processing :: Markup :: HTML",
"Topic :: Text Processing :: Markup :: LaTeX",
"Topic :: Utilities",
]
dependencies = [
"sphinxcontrib-applehelp",
"sphinxcontrib-devhelp",
"sphinxcontrib-jsmath",
"sphinxcontrib-htmlhelp>=2.0.0",
"sphinxcontrib-serializinghtml>=1.1.9",
"sphinxcontrib-qthelp",
"Jinja2>=3.1",
"Pygments>=2.17",
"docutils>=0.20,<0.22",
"snowballstemmer>=2.2",
"babel>=2.13",
"alabaster~=0.7.14",
"imagesize>=1.3",
"requests>=2.30.0",
"packaging>=23.0",
"importlib-metadata>=6.0; python_version < '3.10'",
"tomli>=2; python_version < '3.11'",
"colorama>=0.4.6; sys_platform == 'win32'",
]
dynamic = ["version"]
[project.optional-dependencies]
docs = [
"sphinxcontrib-websupport",
]
lint = [
"flake8>=6.0",
"ruff==0.5.4",
"mypy==1.10.1",
"sphinx-lint>=0.9",
"types-colorama==0.4.15.20240311",
"types-docutils==0.21.0.20240711",
"types-Pillow==10.2.0.20240520",
"types-Pygments==2.18.0.20240506",
"types-requests>=2.30.0", # align with requests
"importlib-metadata>=6.0", # for mypy (Python<=3.9)
"tomli>=2", # for mypy (Python<=3.10)
"pytest>=6.0",
]
test = [
"pytest>=8.0",
"defusedxml>=0.7.1", # for secure XML/HTML parsing
"cython>=3.0",
"setuptools>=70.0", # for Cython compilation
"typing_extensions>=4.9", # for typing_extensions.Unpack
]
[[project.authors]]
name = "Georg Brandl"
email = "georg@python.org"
[project.scripts]
sphinx-build = "sphinx.cmd.build:main"
sphinx-quickstart = "sphinx.cmd.quickstart:main"
sphinx-apidoc = "sphinx.ext.apidoc:main"
sphinx-autogen = "sphinx.ext.autosummary.generate:main"
[tool.flit.module]
name = "sphinx"
[tool.flit.sdist]
include = [
"LICENSE.rst",
"AUTHORS.rst",
"CHANGES.rst",
# Documentation
"doc/",
"CODE_OF_CONDUCT.rst", # used as an include in the Documentation
"EXAMPLES.rst", # used as an include in the Documentation
# Tests
"tests/",
"tox.ini",
# Utilities
"utils/",
"babel.cfg",
]
exclude = [
"doc/_build",
]
[tool.mypy]
files = ["sphinx", "utils", "tests"]
exclude = [
"tests/certs",
"tests/js",
"tests/roots",
# tests/
"^tests/test_events\\.py$",
"^tests/test_quickstart\\.py$",
"^tests/test_search\\.py$",
"^tests/test_versioning\\.py$",
# tests/test_builders
"^tests/test_builders/test_build_dirhtml\\.py$",
"^tests/test_builders/test_build_epub\\.py$",
"^tests/test_builders/test_builder\\.py$",
"^tests/test_builders/test_build_gettext\\.py$",
"^tests/test_builders/test_build_html\\.py$",
"^tests/test_builders/test_build_latex\\.py$",
"^tests/test_builders/test_build_texinfo\\.py$",
# tests/test_config
"^tests/test_config/test_config\\.py$",
# tests/test_directives
"^tests/test_directives/test_directive_object_description\\.py$",
"^tests/test_directives/test_directive_only\\.py$",
"^tests/test_directives/test_directive_other\\.py$",
"^tests/test_directives/test_directive_patch\\.py$",
# tests/test_domains
"^tests/test_domains/test_domain_c\\.py$",
"^tests/test_domains/test_domain_cpp\\.py$",
"^tests/test_domains/test_domain_js\\.py$",
"^tests/test_domains/test_domain_py\\.py$",
"^tests/test_domains/test_domain_py_fields\\.py$",
"^tests/test_domains/test_domain_py_pyfunction\\.py$",
"^tests/test_domains/test_domain_py_pyobject\\.py$",
"^tests/test_domains/test_domain_rst\\.py$",
"^tests/test_domains/test_domain_std\\.py$",
# tests/test_environment
"^tests/test_environment/test_environment_toctree\\.py$",
# tests/test_extensions
"^tests/test_extensions/test_ext_apidoc\\.py$",
"^tests/test_extensions/test_ext_autodoc\\.py$",
"^tests/test_extensions/test_ext_autodoc_autofunction\\.py$",
"^tests/test_extensions/test_ext_autodoc_events\\.py$",
"^tests/test_extensions/test_ext_autodoc_mock\\.py$",
"^tests/test_extensions/test_ext_autosummary\\.py$",
"^tests/test_extensions/test_ext_doctest\\.py$",
"^tests/test_extensions/test_ext_inheritance_diagram\\.py$",
"^tests/test_extensions/test_ext_intersphinx\\.py$",
"^tests/test_extensions/test_ext_napoleon\\.py$",
"^tests/test_extensions/test_ext_napoleon_docstring\\.py$",
# tests/test_intl
"^tests/test_intl/test_intl\\.py$",
# tests/test_markup
"^tests/test_markup/test_markup\\.py$",
# tests/test_pycode
"^tests/test_pycode/test_pycode\\.py$",
"^tests/test_pycode/test_pycode_ast\\.py$",
# tests/test_theming
# tests/test_transforms
"^tests/test_transforms/test_transforms_move_module_targets\\.py$",
"^tests/test_transforms/test_transforms_post_transforms\\.py$",
# tests/test_util
"^tests/test_util/test_util_fileutil\\.py$",
"^tests/test_util/test_util_i18n\\.py$",
"^tests/test_util/test_util_inspect\\.py$",
"^tests/test_util/test_util_logging\\.py$",
"^tests/test_util/test_util_nodes\\.py$",
"^tests/test_util/test_util_rst\\.py$",
"^tests/test_util/test_util_template\\.py$",
"^tests/test_util/test_util_typing\\.py$",
"^tests/test_util/typing_test_data\\.py$",
# tests/test_writers
]
check_untyped_defs = true
disallow_incomplete_defs = true
python_version = "3.9"
show_column_numbers = true
show_error_context = true
strict_optional = true
warn_redundant_casts = true
warn_unused_configs = true
warn_unused_ignores = true
disallow_any_generics = true
extra_checks = true
enable_error_code = [
"type-arg",
"redundant-self",
"truthy-iterable",
"ignore-without-code",
"unused-awaitable",
]
[[tool.mypy.overrides]]
module = [
"sphinx.domains.c",
"sphinx.domains.c._ast",
"sphinx.domains.c._parser",
"sphinx.domains.c._symbol",
"sphinx.domains.cpp",
"sphinx.domains.cpp._ast",
"sphinx.domains.cpp._parser",
"sphinx.domains.cpp._symbol",
]
strict_optional = false
[[tool.mypy.overrides]]
module = [
"sphinx.application",
"sphinx.config",
"sphinx.domains",
"sphinx.domains.c",
"sphinx.domains.cpp",
"sphinx.events",
"sphinx.ext.autodoc",
"sphinx.ext.autodoc.importer",
"sphinx.ext.doctest",
"sphinx.ext.graphviz",
"sphinx.ext.inheritance_diagram",
"sphinx.ext.intersphinx._load",
"sphinx.ext.napoleon.docstring",
"sphinx.highlighting",
"sphinx.jinja2glue",
"sphinx.registry",
"sphinx.search",
"sphinx.util",
"sphinx.util.docfields",
"sphinx.util.docutils",
"sphinx.util.i18n",
"sphinx.util.inspect",
"sphinx.util.logging",
"sphinx.util.parallel",
"sphinx.util.template",
]
disallow_any_generics = false
[[tool.mypy.overrides]]
module = [
"defusedxml.ElementTree",
"imagesize",
"snowballstemmer",
]
ignore_missing_imports = true
[tool.pytest.ini_options]
minversion = "6.0"
addopts = [
"-ra",
"--import-mode=prepend",
# "--pythonwarnings=error",
"--strict-config",
"--strict-markers",
]
empty_parameter_set_mark = "xfail"
filterwarnings = [
"all",
"ignore::DeprecationWarning:docutils.io",
"ignore:Distutils was imported before Setuptools:UserWarning:_distutils_hack",
"ignore:Setuptools is replacing distutils:UserWarning:_distutils_hack",
"ignore::DeprecationWarning:pyximport.pyximport",
"ignore::ImportWarning:importlib._bootstrap",
]
log_cli_level = "INFO"
markers = [
"apidoc",
]
testpaths = ["tests"]
xfail_strict = true
[tool.coverage.run]
branch = true
parallel = true
source = ['sphinx']
[tool.coverage.report]
exclude_lines = [
# Have to re-enable the standard pragma
'pragma: no cover',
# Don't complain if tests don't hit defensive assertion code:
'raise NotImplementedError',
# Don't complain if non-runnable code isn't run:
'if __name__ == .__main__.:',
]
ignore_errors = true