1# Poetry pyproject.toml: https://python-poetry.org/docs/pyproject/
2[build-system]
3requires = ["poetry_core>=1.0.0"]
4build-backend = "poetry.core.masonry.api"
5
6[tool.poetry]
7name = "tlc"
8version = "0.9.0"
9description = "Transfer List Compiler (TLC) is a Python-based CLI for efficiently handling transfer lists."
10authors = ["Arm Ltd <tf-a@lists.trustedfirmware.org>"]
11license = "BSD-3"
12repository = "https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/"
13homepage = "https://trustedfirmware-a.readthedocs.io/en/latest/index.html"
14
15# Keywords description https://python-poetry.org/docs/pyproject/#keywords
16keywords = []  #! Update me
17
18# Pypi classifiers: https://pypi.org/classifiers/
19classifiers = [
20  "Development Status :: 3 - Alpha",
21  "Intended Audience :: Developers",
22  "Operating System :: OS Independent",
23  "Topic :: Software Development :: Libraries :: Python Modules",
24  "License :: OSI Approved :: BSD License",
25  "Programming Language :: Python :: 3",
26  "Programming Language :: Python :: 3.8",
27  "Programming Language :: Python :: 3.9",
28]
29
30[tool.poetry.scripts]
31# Entry points for the package https://python-poetry.org/docs/pyproject/#scripts
32"tlc" = "tlc.__main__:cli"
33
34[tool.poetry.dependencies]
35python = "^3.8"
36
37typer = {extras = ["all"], version = "^0.4.0"}
38rich = "^10.14.0"
39click = "^8.1.7"
40pyyaml = "^6.0.1"
41tox = "^4.18.0"
42jinja2 = "^3.1.4"
43
44[tool.poetry.group.dev]
45optional = true
46
47[tool.poetry.group.dev.dependencies]
48bandit = "^1.7.1"
49tox = "^4.18.0"
50darglint = "^1.8.1"
51black = "^24.4.2"
52isort = {extras = ["colors"], version = "^5.10.1"}
53mypy = "^0.910"
54mypy-extensions = "^0.4.3"
55pre-commit = "^2.15.0"
56pydocstyle = "^6.1.1"
57pylint = "^2.11.1"
58pytest = "^8.0.0"
59pyupgrade = "^2.29.1"
60safety = "^2.2.0"
61coverage = "^6.1.2"
62coverage-badge = "^1.1.0"
63pytest-html = "^4.1.1"
64pytest-cov = "5.0.0"
65
66[tool.black]
67# https://github.com/psf/black
68target-version = ["py38"]
69line-length = 88
70color = true
71
72exclude = '''
73/(
74    \.git
75    | \.hg
76    | \.mypy_cache
77    | \.tox
78    | \.venv
79    | _build
80    | buck-out
81    | build
82    | dist
83    | env
84    | venv
85)/
86'''
87
88[tool.isort]
89# https://github.com/timothycrosley/isort/
90py_version = 38
91line_length = 88
92
93known_typing = ["typing", "types", "typing_extensions", "mypy", "mypy_extensions"]
94sections = ["FUTURE", "TYPING", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
95include_trailing_comma = true
96profile = "black"
97multi_line_output = 3
98indent = 4
99color_output = true
100
101[tool.mypy]
102# https://mypy.readthedocs.io/en/latest/config_file.html#using-a-pyproject-toml-file
103python_version = 3.8
104pretty = true
105show_traceback = true
106color_output = true
107
108allow_redefinition = false
109check_untyped_defs = true
110disallow_any_generics = true
111disallow_incomplete_defs = true
112ignore_missing_imports = true
113implicit_reexport = false
114no_implicit_optional = true
115show_column_numbers = true
116show_error_codes = true
117show_error_context = true
118strict_equality = true
119strict_optional = true
120warn_no_return = true
121warn_redundant_casts = true
122warn_return_any = true
123warn_unreachable = true
124warn_unused_configs = true
125warn_unused_ignores = true
126
127
128[tool.pytest.ini_options]
129# https://docs.pytest.org/en/6.2.x/customize.html#pyproject-toml
130# Directories that are not visited by pytest collector:
131norecursedirs =["hooks", "*.egg", ".eggs", "dist", "build", "docs", ".tox", ".git", "__pycache__"]
132doctest_optionflags = ["NUMBER", "NORMALIZE_WHITESPACE", "IGNORE_EXCEPTION_DETAIL"]
133
134# Extra options:
135addopts = [
136  "--strict-markers",
137  "--tb=short",
138  "--doctest-modules",
139  "--doctest-continue-on-failure",
140]
141
142[tool.coverage.run]
143source = ["tests"]
144branch = true
145
146[tool.coverage.paths]
147source = ["tlc"]
148
149[tool.coverage.report]
150fail_under = 50
151show_missing = true
152