[build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [tool.towncrier] # For finding the __version__ package = "pip" package_dir = "src" # For writing into the correct file filename = "NEWS.rst" # For finding the news fragments directory = "news/" # For rendering properly for this project issue_format = "`#{issue} `_" template = "tools/news/template.rst" # Grouping of entries, within our changelog type = [ { name = "Process", directory = "process", showcontent = true }, { name = "Deprecations and Removals", directory = "removal", showcontent = true }, { name = "Features", directory = "feature", showcontent = true }, { name = "Bug Fixes", directory = "bugfix", showcontent = true }, { name = "Vendored Libraries", directory = "vendor", showcontent = true }, { name = "Improved Documentation", directory = "doc", showcontent = true }, { name = "Trivial Changes", directory = "trivial", showcontent = false }, ] [tool.vendoring] destination = "src/pip/_vendor/" requirements = "src/pip/_vendor/vendor.txt" namespace = "pip._vendor" protected-files = ["__init__.py", "README.rst", "vendor.txt"] patches-dir = "tools/vendoring/patches" [tool.vendoring.transformations] substitute = [ # pkg_resource's vendored packages are directly vendored in pip. { match='pkg_resources\.extern', replace="pip._vendor" }, { match='from \.extern', replace="from pip._vendor" }, { match='''\('pygments\.lexers\.''', replace="('pip._vendor.pygments.lexers." }, ] drop = [ # contains unnecessary scripts "bin/", # interpreter and OS specific msgpack libs "msgpack/*.so", # unneeded parts of setuptools "easy_install.py", "setuptools", "pkg_resources/_vendor/", "_distutils_hack", "distutils-precedence.pth", "pkg_resources/extern/", # trim vendored pygments styles and lexers "pygments/styles/[!_]*.py", '^pygments/lexers/(?!python|__init__|_mapping).*\.py$', # trim rich's markdown support "rich/markdown.py", ] [tool.vendoring.typing-stubs] six = ["six.__init__", "six.moves.__init__", "six.moves.configparser"] distro = [] [tool.vendoring.license.directories] setuptools = "pkg_resources" [tool.vendoring.license.fallback-urls] CacheControl = "https://raw.githubusercontent.com/ionrock/cachecontrol/v0.12.6/LICENSE.txt" distlib = "https://bitbucket.org/pypa/distlib/raw/master/LICENSE.txt" webencodings = "https://github.com/SimonSapin/python-webencodings/raw/master/LICENSE" [tool.ruff] extend-exclude = [ "_vendor", "./build", ".scratch", "data", ] ignore = [ "B019", "B020", "B904", # Ruff enables opinionated warnings by default "B905", # Ruff enables opinionated warnings by default "G202", ] line-length = 88 select = [ "ASYNC", "B", "C4", "C90", "E", "F", "G", "I", "ISC", "PERF", "PLE", "PLR0", "W", ] [tool.ruff.isort] # We need to explicitly make pip "first party" as it's imported by code in # the docs and tests directories. known-first-party = ["pip"] known-third-party = ["pip._vendor"] [tool.ruff.mccabe] max-complexity = 33 # default is 10 [tool.ruff.per-file-ignores] "noxfile.py" = ["G"] "src/pip/_internal/*" = ["PERF203"] "tests/*" = ["B011"] "tests/unit/test_finder.py" = ["C414"] [tool.ruff.pylint] max-args = 15 # default is 5 max-branches = 28 # default is 12 max-returns = 13 # default is 6 max-statements = 134 # default is 50