[project]
name = "for_runners_ynh"
dynamic = ["version"]
description = "YunoHost app package for https://github.com/jedie/django-for-runners"
license = {text = "GPL-3.0-or-later"}
readme = "README.md"
authors = [
    {name = 'Jens Diemer', email = 'git@jensdiemer.de'}
]
requires-python = ">=3.9"  # Stay with 3.9 until YunoHost used >=Debian 11 (Bullseye)
dependencies = [
    "django_for_runners",  # https://github.com/jedie/django-for-runners
    #
    # extras "ynh" will install: gunicorn, psycopg2, django-redis and django-axes
    # see: https://github.com/YunoHost-Apps/django_yunohost_integration/blob/main/pyproject.toml
    "django_yunohost_integration[ynh]",  # https://github.com/YunoHost-Apps/django_yunohost_integration
    #
    "cli-base-utilities",  # https://github.com/jedie/cli-base-utilities
    #
    # indirect depencies, added because we didn't create the requirements.txt with Python <3.11
    # See: https://github.com/jazzband/pip-tools/issues/1326
    "async-timeout",  # needed by redis for python<=3.11.2
]
[project.optional-dependencies]
dev = [
    "bx_django_utils",  # https://github.com/boxine/bx_django_utils
    "beautifulsoup4",  # https://pypi.org/project/beautifulsoup4/
    "manageprojects>=0.15.0",  # https://github.com/jedie/manageprojects
    "pip-tools",  # https://github.com/jazzband/pip-tools/
    "tblib",   # https://github.com/ionelmc/python-tblib
    "tox",  # https://github.com/tox-dev/tox
    "coverage",  # https://github.com/nedbat/coveragepy
    "autopep8",  # https://github.com/hhatto/autopep8
    "pyupgrade",  # https://github.com/asottile/pyupgrade
    "flake8",  # https://github.com/pycqa/flake8
    "pyflakes",  # https://github.com/PyCQA/pyflakes
    "codespell",  # https://github.com/codespell-project/codespell
    "EditorConfig",  # https://github.com/editorconfig/editorconfig-core-py
    "safety",  # https://github.com/pyupio/safety
    "mypy",  # https://github.com/python/mypy
    "twine",  # https://github.com/pypa/twine

    # https://github.com/akaihola/darker
    # https://github.com/ikamensh/flynt
    # https://github.com/pycqa/isort
    # https://github.com/pygments/pygments
    "darker[flynt, isort, color]",

    # indirect depencies added because of bug:
    # https://github.com/pypa/pip/issues/9644 / https://github.com/jazzband/pip-tools/issues/1866
    # to avoid errors like:
    # In --require-hashes mode, all requirements must have their versions pinned with ==. These do not: ...
    "tomli",  # Only needed for Python <3.11
]

[project.urls]
Documentation = "https://github.com/YunoHost-Apps/django-for-runners_ynh"
Source = "https://github.com/YunoHost-Apps/django-for-runners_ynh"

[project.scripts]
for_runners_ynh_app = "for_runners_ynh.__main__:main"
for_runners_ynh_dev = "for_runners_ynh.cli.dev:main"

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

[tool.setuptools.packages.find]
where = ["."]
include = ["for_runners_ynh*"]

[tool.setuptools.dynamic]
version = {attr = "for_runners_ynh.__version__"}


[tool.darker]
src = ['.']
# YunoHost apps still use "master" istead of "main", isn't it?
revision = "origin/master..."
line_length = 119
verbose = true
color = true
skip_string_normalization = true
diff = false
check = false
stdout = false
isort = true
flynt = true
lint = [
    "flake8",
]
log_level = "INFO"


[tool.isort]
# https://pycqa.github.io/isort/docs/configuration/config_files/#pyprojecttoml-preferred-format
atomic=true
profile='black'
skip_glob=[".*", "*/htmlcov/*","*/migrations/*","*/local_test/*"]
known_first_party=['django_for_runners', 'for_runners_ynh']
line_length=119
lines_after_imports=2


[tool.coverage.run]
branch = true
parallel = true
concurrency = ["multiprocessing"]
source = ['.']
command_line = './dev-cli.py test'
disable_warnings = ["couldnt-parse"]

[tool.coverage.report]
omit = ['.*', '*/tests/*']
skip_empty = true
fail_under = 10
show_missing = true
exclude_lines = [
    'if self.debug:',
    'pragma: no cover',
    'raise NotImplementedError',
    'if __name__ == .__main__.:',
]


[tool.tox]  # https://tox.wiki/en/latest/config.html#pyproject-toml
legacy_tox_ini = """
[tox]
isolated_build = True
envlist = py{312,311,310,39}
skip_missing_interpreters = True

[testenv]
passenv = *
skip_install = true
commands_pre =
    pip install -U pip-tools
    pip-sync requirements.dev.txt
commands =
    {envpython} -m coverage run --context='{envname}'
    {envpython} -m coverage combine --append
    {envpython} -m coverage xml
    {envpython} -m coverage report
"""


[tool.mypy]
warn_unused_configs = true
ignore_missing_imports = true
allow_redefinition = true  # https://github.com/python/mypy/issues/7165
show_error_codes = true
plugins = []
exclude = ['.venv', 'tests']


[manageprojects] # https://github.com/jedie/manageprojects
initial_revision = "2281f4b"
initial_date = 2023-04-02T17:40:58+02:00
cookiecutter_template = "https://github.com/jedie/cookiecutter_templates/"
cookiecutter_directory = "yunohost_django_package"
applied_migrations = [
    "183124a", # 2023-04-04T12:26:15+02:00
    "3383cb0", # 2023-11-09T20:14:05+01:00
    "4abd4c0", # 2023-11-25T15:59:31+01:00
    "2f9fd7b", # 2023-11-26T20:13:32+01:00
]

[manageprojects.cookiecutter_context.cookiecutter]
project_name = "django-for-runners"
full_name = "Jens Diemer"
github_username = "jedie"
author_email = "git@jensdiemer.de"
upstream_pkg_name = "django_for_runners"
upstream_url = "https://github.com/jedie/django-for-runners"
upstream_pkg_app_name = "for_runners"
upstream_pkg_project_name = "for_runners_project"
ynh_app_pkg_name = "for_runners_ynh"
ynh_app_url = "https://github.com/YunoHost-Apps/django-for-runners_ynh"
bug_tracker_url = "https://github.com/jedie/django-for-runners/issues"
upstream_version = "0.17.3"
ynh_version = "+ynh3"
package_description = "YunoHost app package for https://github.com/jedie/django-for-runners"
license = "GPL-3.0-or-later"
_template = "https://github.com/jedie/cookiecutter_templates/"

