[tool.poetry]
name = "spotfishing"
version = "0.3.0"
description = "Detecting spots in FISH images"
authors = [
    "Vince Reuter <vince.reuter@gmail.com>",
]
readme = "README.md"
license = "MIT"
repository = "https://github.com/gerlichlab/spotfishing"
classifiers = [
    "Development Status :: 1 - Planning",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Topic :: Scientific/Engineering :: Bio-Informatics",    
    "Typing :: Typed",
]
packages = [
    { include = "spotfishing" }, 
    { include = "spotfishing_looptrace" }
]
include = ["examples"]

[tool.poetry.dependencies]
# These are the main runtime dependencies.
python = ">= 3.10.0, < 3.13"
gertils = { git = "https://github.com/gerlichlab/gertils.git", tag = "v0.5.1" }
numpy = "^1.24.2"
numpydoc_decorator = "^2.2.1"
pandas = "^1.5.3"
scikit-image = "^0.20.0"
scipy = "^1.10.1"

[tool.poetry.group.nox]
optional = true

[tool.poetry.group.nox.dependencies]
nox = "^2022.11.21"

[tool.poetry.group.test]
optional = true

[tool.poetry.group.test.dependencies]
hypothesis = "^6.68.2"
pytest-cov = "^5.0.0"
pytest = "^7.1.0"

[tool.poetry.group.lint]
optional = true

[tool.poetry.group.lint.dependencies]
hypothesis = "^6.68.2"
mypy = "^1.9.0"
nox = "^2022.11.21"
pandas-stubs = "^2.2.0.240218"
pylint = "^2.15.8"
pytest = "^7.1.0"
python-type-stubs = { git = "https://github.com/gerlichlab/python-type-stubs", tag = "v0.1.0" }

[tool.poetry.group.format]
optional = true

[tool.poetry.group.format.dependencies]
black = "^22"
colorama = "^0.4.6"
isort = ">=5.10,<5.12.0"
codespell = "^2.2.2"

[tool.poetry.group.dev]
optional = true

[tool.poetry.group.dev.dependencies]
# The dev group is for developers' convenience. 
# Consider each new dependency to another group as a dev group candidate.
black = "^22"
codespell = "^2.2.2"
colorama = "^0.4.6"
hypothesis = "^6.68.2"
mypy = "^1.9.0"
nox = "^2022.11.21"
pandas-stubs = "^2.2.0.240218"
pylint = "^2.15.8"
pytest = "^7.1.0"
pytest-cov = "^5.0.0"
python-type-stubs = { git = "https://github.com/gerlichlab/python-type-stubs", tag = "v0.1.0" }

[tool.black]
target-version = ["py310"]

[tool.codespell]
skip = ".git,,.nox,.vscode,__pycache__,pyproject.toml,poetry.lock"
builtin = "clear,rare,informal,usage,code,names"
ignore-words-list = "jupyter,iff"  # prevent jupyter -> jupiter, iff -> if
check-filenames = true
uri-ignore-words-list = "*" # prevent spelling correction in URL-like values.

[tool.isort]
profile = "black"

[tool.mypy]
files = ['*.py', 'spotfishing/*.py', 'spotfishing_looptrace/*.py', 'tests/*.py']
warn_redundant_casts = true
warn_unused_ignores = true
warn_return_any = true
warn_unreachable = true

[[tool.mypy.overrides]]
module = [
    "spotfishing.*",
    "spotfishing_looptrace.*"
]
disallow_untyped_defs = true
disallow_untyped_calls = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_any_unimported = true
disallow_any_explicit = true
disallow_any_generics = true
disallow_subclassing_any = true
implicit_optional = false
strict_optional = true

[tool.pylint]
main.jobs = 4
main.py-version = "3.10"
reports.output-format = "colorized"
"messages control".disable = "logging-fstring-interpolation,unspecified-encoding,wildcard-import"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"