- Add auction.py with add_bid and find_winner functions - Add env.py with stdlib-based .env loader (no python-dotenv) - Add tests/test_auction.py with test cases for auction functions - Remove .env.example (tokens not meant to be committed) - Update docs/plan.md to mark Milestone 2 as complete
2.4 KiB
2.4 KiB
Plan: Secret Auction Program (Day 9)
Context
Udemy 100 Days of Code blind-auction CLI. The repository uses a Python .gitignore, an AGPL LICENSE and a git-ignored .env (tokens, never printed or committed). Python 3.13 or newer is required.
Working method
Work on ONE milestone at a time. Each milestone is one branch (milestone/NN-name) and one pull request. When a milestone is finished, stop, verify it and review before starting the next. Milestones and issues are also tracked on the Gitea repository (via API, token from .env).
Milestone 1 - Project scaffold and repo metadata (milestone/01-scaffold)
- Create
src/secret_auction/__init__.py,tests/,docs/ pyproject.toml:requires-python >=3.13, src layout, no runtime deps,devextra (pytest), pytest config, console script.env.example;.envand.venv/ignored; adddocs/doxygen/to.gitignoreconstants.pyDoxyfile- Set repository description and topics (
python,udemy,100-days-of-code,blind-auction,beginner) via API - Create milestones and issues on the host (milestones M1-M4, issues #1-#12)
- Verify: create
.venv, upgrade pip,pip install -e ".[dev]" - Save plan and milestones in
docs/plan.md
Milestone 2 - Core auction logic and env loader (milestone/02-core-logic)
auction.py(Doxygen comments):add_bid,find_winner(usesmax(bids, key=bids.get),ValueErroron empty)env.py: stdlib.envloader (no python-dotenv); does not override existing environment variablestests/test_auction.py(.envloader is for private use and intentionally not tested)- Verify:
pytestpasses
Milestone 3 - CLI program (milestone/03-cli)
main.py: prompt name and numeric bid (re-prompt on invalid), bids dict kept outside the loop, "other bidders? yes/no", clear screen with newlines between bidders, announce the winnertests/test_main.pywith monkeypatchedinput- Verify:
pytest; scripted runpython -m secret_auction.mainwith two bidders
Milestone 4 - Documentation (milestone/04-docs)
README.mdfrom the template (Overview, Requirements, Setup incl. creating/activating.venvandpython -m pip install --upgrade pip, Run, Tests, License AGPL, Links)docs/flowchart.md(Mermaid plus link to the diagrams.net chart)- Generate Doxygen docs if
doxygenis installed - Verify: README commands work verbatim;
.envstays untracked