[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"

[project]
dynamic = ["version"]
name = "optwps"
description = "Fast Window Protection Score calculator for cell-free DNA analysis"
readme = "README.md"
requires-python = ">=3.7"
license = {text = "BSD 3"}
authors = [
    {name = "Vasileios Lemonidis", email = "vaslemonidis@hotmail.com"},
]
maintainers = [
    {name = "Vasileios Lemonidis", email = "vaslemonidis@hotmail.com"},
]
keywords = [
    "bioinformatics",
    "genomics",
    "cell-free-DNA",
    "cfDNA",
    "WPS",
    "nucleosome",
    "BAM",
    "sequencing",
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Science/Research",
    "Topic :: Scientific/Engineering :: Bio-Informatics",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "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",
    "Operating System :: OS Independent",
]
dependencies = [
    "pysam",
    "bx-python",
    "pgzip",
    "tqdm",
    "numpy",
]

[project.optional-dependencies]
dev = [
    "pytest>=6.0",
    "pytest-cov",
    "black",
    "flake8",
    "mypy",
    "isort",
]
test = [
    "pytest>=6.0",
    "pytest-cov",
]

[project.urls]
Documentation = "https://github.com/VasLem/optwps/README.md"
Repository = "https://github.com/VasLem/optwps"
"Bug Tracker" = "https://github.com/VasLem/optwps/issues"

[project.scripts]
optwps = "optwps:main"

[tool.hatch.version]
source = "uv-dynamic-versioning"



[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
    "--verbose",
    "--cov=lib",
    "--cov-report=term-missing",
    "--cov-report=html",
]

[tool.black]
line-length = 88
target-version = ["py37", "py38", "py39", "py310", "py311"]
include = '\.pyi?$'
extend-exclude = '''
/(
  # directories
  \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | build
  | dist
)/
'''

[tool.isort]
profile = "black"
line_length = 88
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true

[tool.mypy]
python_version = "3.7"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
strict_equality = true
