[build-system]
requires = ["flit"]
build-backend = "flit.buildapi"

[project]
name = "ordr3"
readme = "README.md"
description = "Our custom ordering system"
license = { file = "LICENSE" }
requires-python = ">=3.7"
dynamic = ["version"]

authors = [
    {name = "Holger Frey", email = "frey@imtek.de"},
]

# see https://pypi.org/classifiers/
classifiers = [
    "Development Status :: 2 - Pre-Alpha",
    "Intended Audience :: Developers",
    "Programming Language :: Python :: 3.7",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3 :: Only",
    "License :: Freely Distributable",
]

dependencies = [
    "deform",
    "passlib[argon2,bcrypt] >= 1.7",
    "pyramid >= 2.0",
    "pyramid_debugtoolbar",
    "pyramid_jinja2",
    "pyramid_mailer",
    "pyramid_tm",
    "pyramid_retry",
    "requests >= 2.23",
    "sqlalchemy < 2.0.0",
    "transaction >= 3.0.0",
    "waitress",
    "zope.sqlalchemy",
]

[project.urls]
Source = "https://git.cpi.imtek.uni-freiburg.de/CPI/ordr3.git"

[project.entry-points."paste.app_factory"]
main = "ordr3:main"

[project.optional-dependencies]
test = [
    "pytest >=4.0.0",
    "pytest-cov",
    "pytest-icdiff",
    "pytest-mock",
    "pytest-randomly",
    "tox",
    "webtest",
]
dev = [
    "ruff",
    "keyring",
    "pre-commit",
]


[tool.pytest.ini_options]
markers = [
    "functional: marks tests as functional (deselect with '-m \"not functional\"')",
]
addopts = [
    "--strict-markers",
    "--strict-config",
    "--showlocals",
    "-ra",
]

[tool.ruff]
# see https://docs.astral.sh/ruff/configuration/

line-length = 80
indent-width = 4

fix = true

[tool.ruff.lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`)  codes by default.
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
# McCabe complexity (`C901`) by default.
fixable = ["ALL"]
select = ["ALL"]
ignore = [
    # currently ignored when moving to ruff
    "ANN",
    "DTZ",
    "RUF",
    "A002",
    "ARG005",
    "FBT003",
    "FLY002",
    "N802",
    "N806",
    "PLR2004",
    "PT006",
    "PYI024",
    "RET504",
    "SIM117",
    "TID252",
    "UP031",

    # ignored for now, should be activated in the future
    # docstrings
    "D",

    # don't complain about not annotating self or cls
    "ANN101",
    "ANN102",

    # ignored, "ruff format" will handle this
    "COM812", 
    "ISC001",

    # ignored, due to Windows / WSL2 setup
    # flake8-executable
    "EXE",
]

[tool.ruff.lint.pydocstyle]
convention = "pep257"  # Accepts: "google", "numpy", or "pep257".

[tool.ruff.lint.per-file-ignores]
# see https://github.com/charliermarsh/ruff
"tests/*" = ["FBT003", "INP001", "PLR2004", "S101", "SLF001", "ANN"]
"noxfile.py" = ["ANN"]


[tool.ruff.format]
indent-style = "space"