[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"] # Only for tools/capture_screenshots.py; not needed to run the program. tools = ["pillow>=10"] # Only for tools/build_executable.py; not needed to run the program. build = ["pyinstaller>=6"] 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", "presentation/assets/*.ico"] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] addopts = "-ra" [tool.ruff] line-length = 88 target-version = "py313" src = ["src", "tests"] [tool.ruff.format] line-ending = "lf" [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", ]