[build-system] build-backend = "hatchling.build" requires = [ "hatch-vcs>=0.4", "hatchling>=1.25", ] [project] name = "pipdeptree" description = "Command line utility to show dependency tree of packages." readme = "README.md" keywords = [ "application", "cache", "directory", "log", "user", ] license.file = "LICENSE" maintainers = [ { name = "Bernát Gábor", email = "gaborjbernat@gmail.com" }, { name = "Vineet Naik", email = "naikvin@gmail.com" }, ] requires-python = ">=3.8" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "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 :: 3.13", ] dynamic = [ "version", ] dependencies = [ "packaging>=24.1", "pip>=24.2", ] optional-dependencies.graphviz = [ "graphviz>=0.20.3", ] optional-dependencies.test = [ "covdefaults>=2.3", "diff-cover>=9.1.1", "pytest>=8.3.2", "pytest-console-scripts>=1.4.1", "pytest-cov>=5", "pytest-mock>=3.14", "virtualenv>=20.26.4,<21", ] urls.Changelog = "https://github.com/tox-dev/pipdeptree/releases" urls.Documentation = "https://github.com/tox-dev/pipdeptree/blob/main/README.md#pipdeptree" urls.Homepage = "https://github.com/tox-dev/pipdeptree" urls.Source = "https://github.com/tox-dev/pipdeptree" urls.Tracker = "https://github.com/tox-dev/pipdeptree/issues" scripts.pipdeptree = "pipdeptree.__main__:main" [tool.hatch] build.hooks.vcs.version-file = "src/pipdeptree/version.py" version.source = "vcs" [tool.ruff] target-version = "py38" line-length = 120 format.preview = true format.docstring-code-line-length = 100 format.docstring-code-format = true lint.select = [ "ALL", ] lint.ignore = [ "A005", # Don't care about shadowing builtin modules "ANN101", # No type annotation for self "ANN102", # Missing type annotation for `cls` in classmethod "ANN401", # Dynamically typed expressions (typing.Any) are disallowed in "COM812", # Conflict with formatter "CPY", # No copyright statements "D104", # Missing docstring in public package "D203", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible "D212", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible "DOC201", # TODO: Read the comment for DOC501 "DOC402", # TODO: Read the comment for DOC501 "DOC501", # TODO: Remove this once ruff supports Sphinx-style doc-strings; see https://github.com/astral-sh/ruff/issues/12434 "INP001", # no implicit namespace "ISC001", # Conflict with formatter "S101", # asserts allowed "S104", # Possible binding to all interface ] lint.per-file-ignores."tests/**/*.py" = [ "D", # don"t care about documentation in tests "FBT", # don"t care about booleans as positional arguments in tests "PLC2701", # Private import in tests "PLR0913", # any number of arguments in tests "PLR0917", # any number of arguments in tests "PLR2004", # Magic value used in comparison, consider replacing with a constant variable "S603", # `subprocess` call: check for execution of untrusted input ] lint.isort = { known-first-party = [ "pipdeptree", ], required-imports = [ "from __future__ import annotations", ] } lint.preview = true [tool.codespell] builtin = "clear,usage,en-GB_to_en-US" count = true quiet-level = 3 ignore-words-list = "master" [tool.pyproject-fmt] max_supported_python = "3.13" [tool.coverage] html.show_contexts = true html.skip_covered = false paths.source = [ "src", ".tox/*/lib/python*/site-packages", "*/src", ] run.parallel = true run.plugins = [ "covdefaults", ] report.fail_under = 88 subtract_omit = "*/__main__.py" [tool.mypy] show_error_codes = true strict = true overrides = [ { module = [ "graphviz.*", "virtualenv.*", ], ignore_missing_imports = true }, ]