[build-system] build-backend = "hatchling.build" requires = [ "hatch-vcs>=0.3", "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>=7.6", "pip>=23.1.2", "pytest>=7.4", "pytest-cov>=4.1", "pytest-mock>=3.11.1", "virtualenv<21,>=20.23.1", ] 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.black] line-length = 120 [tool.ruff] select = ["ALL"] line-length = 120 target-version = "py38" isort = {known-first-party = ["pipdeptree"], required-imports = ["from __future__ import annotations"]} ignore = [ "S101", # asserts allowed "INP001", # no implicit namespace "D", # ignore documentation for now "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 "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 ] [tool.ruff.per-file-ignores] "tests/**/*.py" = [ "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.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 = 89 subtract_omit = "*/__main__.py" [tool.mypy] show_error_codes = true strict = true overrides = [ { module = [ "graphviz.*", "virtualenv.*", ], ignore_missing_imports = true }, ]