Add project configuration, .gitignore and the package skeleton

pyproject.toml declares Python 3.13 or later, an empty runtime dependency list and
pytest, ruff and mypy as development tools. The package has constants.py, the one
place for constants, and a smoke test keeps the test run green.

Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
This commit is contained in:
2026-10-07 23:58:37 +08:00
parent 1526262910
commit 2cd19dfd03
6 changed files with 184 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"
[project]
name = "turtle-challenges"
version = "0.1.0"
description = "Turtle graphics exercises from Udemy's 100 Days of Code Python bootcamp (day 18)."
readme = "README.md"
requires-python = ">=3.13"
license = "AGPL-3.0-only"
license-files = ["LICENSE"]
# Only the standard library is used at run time (turtle needs Tk, see README).
dependencies = []
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.13",
"Topic :: Education",
]
[project.optional-dependencies]
dev = [
"mypy>=1.13",
"pytest>=8.3",
"ruff>=0.8",
]
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
pythonpath = ["src", "."]
testpaths = ["tests"]
[tool.ruff]
line-length = 88
target-version = "py313"
src = ["src", "tests"]
# Only the project's own code: the framework submodule and agent skills are not ours.
include = ["src/**/*.py", "tests/**/*.py"]
[tool.ruff.lint]
select = ["ANN", "B", "E", "F", "I", "N", "SIM", "UP", "W"]
[tool.mypy]
strict = true
files = ["src", "tests"]
mypy_path = "src"