[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "pipxl"
description = "Additional tools for pip - compile, sync, deptree & license"
readme = "README.md"
requires-python = ">=3.7"
license = "MIT"
keywords = []
authors = [
  { name = "Jeroen van Zundert", email = "mail@jeroenvanzundert.nl" },
]
classifiers = [
  "Development Status :: 4 - Beta",
  "License :: OSI Approved :: MIT License",
  "Operating System :: OS Independent",
  "Intended Audience :: Developers",
  "Programming Language :: Python",
  "Programming Language :: Python :: 3.7",
  "Programming Language :: Python :: 3.8",
  "Programming Language :: Python :: 3.9",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: Implementation :: CPython",
  "Programming Language :: Python :: Implementation :: PyPy",
]
dependencies = [
  "pip >= 22.2.2",
  "typer >= 0.4.2",
]
dynamic = ["version"]

[project.urls]
Documentation = "https://github.com/zundertj/pipxl#readme"
Issues = "https://github.com/zundertj/pipxl/issues"
Source = "https://github.com/zundertj/pipxl"

[project.scripts]
pipxl = "pipxl.cli:main"

[tool.hatch.version]
path = "pipxl/__about__.py"

[tool.hatch.envs.default]
dependencies = [
  "pytest==7.1.3",
  "pytest-cov==3.0.0",
  "black==22.8.0",
  "mypy==0.971",
  "flake8==5.0.4",
  "isort==5.10.1",
]

[tool.hatch.envs.default.scripts]
cov = "pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=pipxl --cov=tests"
cov-html = "pytest --cov-report html:cov_html --cov-config=pyproject.toml --cov=pipxl --cov=tests"
no-cov = "cov --no-cov"
precommit = "isort . & black . & flake8 . & mypy ."

[[tool.hatch.envs.test.matrix]]
python = ["37", "38", "39", "310", "311"]

[tool.coverage.run]
branch = true
parallel = true
omit = [
  "pipxl/__about__.py",
]

[tool.coverage.report]
exclude_lines = [
  "no cov",
  "if __name__ == .__main__.:",
  "if TYPE_CHECKING:",
]

[tool.black]
line-length = 120
target-version = ["py310"]

[tool.isort]
profile = "black"

[tool.mypy]
strict = true