MIL-001: project foundation
pyproject.toml (Python >=3.13, no runtime dependencies, speech and dev extras), Python .gitignore, layer skeleton with constants.py, Doxyfile, README with the .venv instructions, the Malay to Danish word list and review record RC-023. Task: MIL-001#1 Task: MIL-001#2 Task: MIL-001#3 Task: MIL-001#4 Task: MIL-001#5 Task: MIL-001#6
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=68"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "flash-card"
|
||||
version = "0.1.0"
|
||||
description = "Flash card program for learning Malay words with Danish translations (Udemy 100 Days of Code, day 31)"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.13"
|
||||
license = "AGPL-3.0-or-later"
|
||||
license-files = ["LICENSE"]
|
||||
authors = [{ name = "Jens Tirsvad Nielsen" }]
|
||||
keywords = ["flashcards", "tkinter", "language-learning", "malay", "danish", "udemy"]
|
||||
classifiers = [
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Environment :: X11 Applications",
|
||||
"Topic :: Education",
|
||||
]
|
||||
# The core program uses the Python standard library only (ADR-0001).
|
||||
dependencies = []
|
||||
|
||||
[project.optional-dependencies]
|
||||
# Spoken Malay word (text to speech). Optional; the program works without it.
|
||||
speech = ["gTTS>=2.5", "playsound==1.2.2"]
|
||||
dev = ["pytest>=8", "ruff>=0.6", "mypy>=1.11", "import-linter>=2.0"]
|
||||
|
||||
[project.scripts]
|
||||
flash-card = "flash_card.presentation.app:run"
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["src"]
|
||||
|
||||
[tool.setuptools.package-data]
|
||||
flash_card = ["presentation/assets/*.png"]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
pythonpath = ["src"]
|
||||
addopts = "-ra"
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 88
|
||||
target-version = "py313"
|
||||
src = ["src", "tests"]
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "UP", "B", "SIM", "N", "D"]
|
||||
ignore = ["D203", "D213"]
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"tests/**" = ["D"]
|
||||
|
||||
[tool.ruff.lint.pydocstyle]
|
||||
convention = "pep257"
|
||||
|
||||
[tool.mypy]
|
||||
python_version = "3.13"
|
||||
strict = true
|
||||
mypy_path = ["src"]
|
||||
packages = ["flash_card"]
|
||||
|
||||
[tool.importlinter]
|
||||
root_package = "flash_card"
|
||||
|
||||
[[tool.importlinter.contracts]]
|
||||
name = "Layers point inward"
|
||||
type = "layers"
|
||||
layers = [
|
||||
"flash_card.presentation",
|
||||
"flash_card.infrastructure",
|
||||
"flash_card.application",
|
||||
"flash_card.domain",
|
||||
]
|
||||
Reference in New Issue
Block a user