Files
Tirsvad fa6cc8ba18
TirSystem/git-workflows: OpenGrep / opengrep (push) Skipped
TirSystem/git-workflows: Sync GitHub mirror metadata / sync-metadata (push) Skipped
TirSystem/git-workflows: Publish accepted milestones / publish (push) Skipped
TirSystem/git-workflows: Validate / validate (push) Skipped
TirSystem/git-workflows: Release / release (pull_request) Successful in 17s
TirSystem/git-workflows: Validate / validate (pull_request) Successful in 32s
TirSystem/git-workflows: Publish wiki / publish-wiki (push) Skipped
TirSystem/git-workflows: OpenGrep / opengrep (pull_request) Successful in 4m16s
Resolve pending commit links
2026-11-06 12:37:51 +08:00

4.0 KiB

Speed calc decorator

Metadata

Key Value
ID MIL-002
CrossReference BC-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-11-06 Deprecated Jens Tirsvad Nielsen S01 Review findings fixed: traceability to success criteria and constraints (RC-004) a07d05b
2026-11-06 Accepted Jens Tirsvad Nielsen AI as stand-in for S01 Go per RC-004; language checks confirmed by S01 a07d05b

Purpose

Decide whether the exercise is solved: the decorator works, is tested, and each lecture step has a screenshot in the README.

Deliverable

Package speed_calc under src/ (constants.py, the decorator, fast_function, slow_function, a __main__ entry point), tests under tests/, and one screenshot per lecture step in docs/screenshots/, shown in the README.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 python -m pytest exits 0 in a fresh .venv Yes No
2 python -m speed_calc prints the current time and two lines of the form <name> run speed: <seconds>s Yes No
3 Function names are speed_calc_decorator, fast_function, slow_function Yes No
4 Constants are only in constants.py; source has Doxygen comments Yes No
5 docs/screenshots/ has 4 images, one per lecture step, referenced in the README Yes No
6 pyproject.toml lists no runtime dependencies Yes No

Dependencies

Depends on Reason
MIL-001 Needs the project configuration and README skeleton

Traceability

Business Case objective / KPI / user story Reference
Objectives 1 and 2 (function names, tests) BC-001
Objective 4 (one screenshot per step, README part) BC-001
Success criteria 1, 2, 3 and 5 (tests, output, 0 runtime dependencies, screenshots) BC-001
Constraint: constants.py holds the constants; Doxygen comments (Methodological and Standards Foundation) BC-001

Ownership

Role Stakeholder ID (SA)
Owner S01
Approving reviewer S01

Target Date

2026-11-07 — within the Business Case target of 2026-11-09.

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Lecture step 1: print the current time Create the package and constants.py, and print time.time() as in the starting code. Test with a fake clock. No
2 Lecture step 2: decorator skeleton Write speed_calc_decorator(function) that returns a wrapper calling the function and preserving its metadata with functools.wraps. Test that the result and name are preserved. No
3 Lecture step 3: time the call Make the wrapper read the clock before and after the call and print <name> run speed: <seconds>s. The clock is injectable so the test asserts exact values. No
4 Lecture step 4: fast vs slow Add fast_function (range 1,000,000) and slow_function (range 10,000,000) with the decorator, and the __main__ entry point that prints the expected output shape. Constants live in constants.py. No
5 Doxygen comments on all source Document modules, functions and constants with Doxygen-style comments, and check that doxygen Doxyfile runs without warnings if Doxygen is installed. No
6 Screenshots per lecture step Render each step's real program output to a Portable Network Graphics (PNG) image in docs/screenshots/ with a dev-only script (no host desktop capture), and add them to the README. No
7 Update README with run and test output Add the four screenshots, the run command and the test command with expected results. No