# Poetry pyproject.toml: https://python-poetry.org/docs/pyproject/
[build-system]
requires = ["poetry_core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "tlc"
version = "0.9.0"
description = "Transfer List Compiler (TLC) is a Python-based CLI for efficiently handling transfer lists."
authors = ["Arm Ltd <tf-a@lists.trustedfirmware.org>"]
license = "BSD-3"
repository = "https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/"
homepage = "https://trustedfirmware-a.readthedocs.io/en/latest/index.html"

# Keywords description https://python-poetry.org/docs/pyproject/#keywords
keywords = []  #! Update me

# Pypi classifiers: https://pypi.org/classifiers/
classifiers = [
  "Development Status :: 3 - Alpha",
  "Intended Audience :: Developers",
  "Operating System :: OS Independent",
  "Topic :: Software Development :: Libraries :: Python Modules",
  "License :: OSI Approved :: BSD License",
  "Programming Language :: Python :: 3",
  "Programming Language :: Python :: 3.8",
  "Programming Language :: Python :: 3.9",
]

[tool.poetry.scripts]
# Entry points for the package https://python-poetry.org/docs/pyproject/#scripts
"tlc" = "tlc.__main__:cli"

[tool.poetry.dependencies]
python = "^3.8"

typer = {extras = ["all"], version = "^0.4.0"}
rich = "^10.14.0"
click = "^8.1.7"
pyyaml = "^6.0.1"
tox = "^4.18.0"
jinja2 = "^3.1.5"

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

[tool.poetry.group.dev.dependencies]
bandit = "^1.7.1"
tox = "^4.18.0"
darglint = "^1.8.1"
black = "^24.4.2"
isort = {extras = ["colors"], version = "^5.10.1"}
mypy = "^0.910"
mypy-extensions = "^0.4.3"
pre-commit = "^2.15.0"
pydocstyle = "^6.1.1"
pylint = "^2.11.1"
pytest = "^8.0.0"
pyupgrade = "^2.29.1"
safety = "^2.2.0"
coverage = "^6.1.2"
coverage-badge = "^1.1.0"
pytest-html = "^4.1.1"
pytest-cov = "5.0.0"

[tool.black]
# https://github.com/psf/black
target-version = ["py38"]
line-length = 88
color = true

exclude = '''
/(
    \.git
    | \.hg
    | \.mypy_cache
    | \.tox
    | \.venv
    | _build
    | buck-out
    | build
    | dist
    | env
    | venv
)/
'''

[tool.isort]
# https://github.com/timothycrosley/isort/
py_version = 38
line_length = 88

known_typing = ["typing", "types", "typing_extensions", "mypy", "mypy_extensions"]
sections = ["FUTURE", "TYPING", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
include_trailing_comma = true
profile = "black"
multi_line_output = 3
indent = 4
color_output = true

[tool.mypy]
# https://mypy.readthedocs.io/en/latest/config_file.html#using-a-pyproject-toml-file
python_version = 3.8
pretty = true
show_traceback = true
color_output = true

allow_redefinition = false
check_untyped_defs = true
disallow_any_generics = true
disallow_incomplete_defs = true
ignore_missing_imports = true
implicit_reexport = false
no_implicit_optional = true
show_column_numbers = true
show_error_codes = true
show_error_context = true
strict_equality = true
strict_optional = true
warn_no_return = true
warn_redundant_casts = true
warn_return_any = true
warn_unreachable = true
warn_unused_configs = true
warn_unused_ignores = true


[tool.pytest.ini_options]
# https://docs.pytest.org/en/6.2.x/customize.html#pyproject-toml
# Directories that are not visited by pytest collector:
norecursedirs =["hooks", "*.egg", ".eggs", "dist", "build", "docs", ".tox", ".git", "__pycache__"]
doctest_optionflags = ["NUMBER", "NORMALIZE_WHITESPACE", "IGNORE_EXCEPTION_DETAIL"]

# Extra options:
addopts = [
  "--strict-markers",
  "--tb=short",
  "--doctest-modules",
  "--doctest-continue-on-failure",
]

[tool.coverage.run]
source = ["tests"]
branch = true

[tool.coverage.paths]
source = ["tlc"]

[tool.coverage.report]
fail_under = 50
show_missing = true
