[project]
name = "shapeshifter_uftp"
version = "2.3.1"
description = "Implementation of the Shapeshifter (UFTP) protocol"
dependencies = [
    "xsdata[lxml]>=25.0,<27.0",
    "pynacl>=1.5.0,<=1.6.2",
    "dnspython==2.8.0",
    "fastapi>=0.110,<0.128",
    "fastapi-xml>=1.1.1,<2.0.0",
    "requests",
    "uvicorn",
    "termcolor",
]
requires-python = ">=3.11,<3.15"
readme = "README.rst"
license = "Apache-2.0"

[project.urls]
Repository = "https://github.com/shapeshifter/shapeshifter-library-python"
Documentation = "https://github.com/shapeshifter/shapeshifter-library-python/README.md"
Issues = "https://github.com/shapeshifter/shapeshifter-library-python/issues"
Changelog = "https://github.com/shapeshifter/shapeshifter-library-python/blob/main/CHANGELOG.md"


[dependency-groups]
dev = [
    "xmlschema",
    "pytest",
    "pytest-cov",
    "pylint",
    "responses",
    "sphinx",
    "sphinx-rtd-theme"
]

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project.scripts]
shapeshifter-keypair = "shapeshifter_uftp.cli:generate_signing_keypair"
shapeshifter-lookup = "shapeshifter_uftp.cli:perform_lookup"

[tool.pytest.ini_options]
addopts = "-v --cov --cov-report html --cov-report lcov"

[tool.coverage.run]
include = [
    "shapeshifter_uftp/**/*.py",
]
omit = [
    "application/asgi.py",
]

[tool.coverage.report]
skip_empty = true

[tool.coverage.html]
directory = "test_coverage"

[tool.pylint.DESIGN]

[tool.isort]
profile = "black"

[tool.setuptools]
packages = [
    "shapeshifter_uftp",
    "shapeshifter_uftp.client",
    "shapeshifter_uftp.service",
    "shapeshifter_uftp.uftp",
    "shapeshifter_uftp.uftp.messages"
]

[tool.ruff.lint]
select = [
    "I",
    "W191",
    "W291",
    "W292",
    "W293",
    "F401",
]
