[build-system] build-backend = "hatchling.build" requires = [ "hatch-vcs>=0.4", "hatchling>=1.18", ] [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", ] dynamic = [ "version", ] optional-dependencies.graphviz = [ "graphviz>=0.20.1", ] optional-dependencies.test = [ "covdefaults>=2.3", "diff-cover>=8.0.1", "pip>=23.3.1", "pytest>=7.4.3", "pytest-cov>=4.1", "pytest-mock>=3.12", "virtualenv<21,>=20.25", ] urls.Changelog = "https://github.com/tox-dev/pipdeptree/blob/main/CHANGES.md" 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] line-length = 120 target-version = "py38" lint.isort = { known-first-party = ["pipdeptree"], required-imports = ["from __future__ import annotations"] } lint.select = ["ALL"] lint.ignore = [ "S101", # asserts allowed "INP001", # no implicit namespace "D104", # Missing docstring in public package "S104", # Possible binding to all interface "ANN101", # No type annotation for self "ANN102", # Missing type annotation for `cls` in classmethod "ANN401", # Dynamically typed expressions (typing.Any) are disallowed in "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 "COM812", # Conflict with formatter "ISC001", # Conflict with formatter "CPY", # No copyright statements ] lint.preview = true format.preview = true format.docstring-code-format = true format.docstring-code-line-length = 100 [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = [ "PLR0913", # any number of arguments in tests "PLR0917", # any number of arguments in tests "PLC2701", # Private import in tests "FBT", # don"t care about booleans as positional arguments in tests "D", # don"t care about documentation in tests "S603", # `subprocess` call: check for execution of untrusted input "PLR2004", # Magic value used in comparison, consider replacing with a constant variable ] [tool.codespell] builtin = "clear,usage,en-GB_to_en-US" count = true quiet-level = 3 ignore-words-list = "master" [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 }]