Files
054-flask/docs/milestones/mil-004-functions-decorators.md
Tirsvad 9ec3fd9970
TirSystem/git-workflows: Publish wiki / publish-wiki (push) Skipped
TirSystem/git-workflows: Validate / validate (pull_request) Successful in 36s
TirSystem/git-workflows: Release / release (pull_request) Successful in 23s
TirSystem/git-workflows: OpenGrep / opengrep (pull_request) Successful in 4m5s
TirSystem/git-workflows: Sync GitHub mirror metadata / sync-metadata (push) Successful in 14s
TirSystem/git-workflows: Validate / validate (push) Successful in 40s
TirSystem/git-workflows: Publish accepted milestones / publish (push) Successful in 44s
TirSystem/git-workflows: OpenGrep / opengrep (push) Successful in 4m25s
Resolve pending commit links
2026-11-06 12:18:21 +08:00

3.3 KiB

MIL-004 First-class functions and decorators

Metadata

Key Value
ID MIL-004
CrossReference BC-001, ADR-0001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-11-06 Deprecated Jens Tirsvad Nielsen S01 Initial version 73a5a95
2026-11-06 Accepted Jens Tirsvad Nielsen S01 Paths follow the layered layout of ADR-0001 0f4e36b

Purpose

Decide whether lectures 5 and 6 (functions as first-class objects, nested and returned functions, decorators) are implemented, tested and illustrated.

Deliverable

src/flask_day_54/domain/first_class_functions.py (add, subtract, calculate, nested and returned functions) and src/flask_day_54/domain/decorators.py (the @ syntax) with tests, and screenshots for lectures 5 and 6.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 calculate(add, 2, 3) returns 5 and calculate(subtract, 5, 3) returns 2 (tested) Met Not met
2 A nested function is returned and called independently of its parent (tested) Met Not met
3 A decorator applied with the @ syntax wraps the home greeting without changing the wrapped function's name (tested) Met Not met
4 Screenshots lecture-05.png and lecture-06.png exist in docs/images/ and are shown in the README Met Not met

Dependencies

Depends on Reason
MIL-003 Builds on the finished application and test setup

Traceability

Business Case objective / KPI / user story Reference
Objectives 1 and 3 BC-001
CN-002, CN-003 SA-001

Ownership

Role Stakeholder ID (SA)
Owner S01
Approving reviewer S01

Target Date

2026-11-09 - within the Business Case constraints.

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Implement first_class_functions Create add, subtract and calculate that takes a function as argument, plus an outer function with a nested function and one that returns it, exactly as lecture 5 describes. No
2 Implement decorators Create a decorator with the @ syntax that adds behaviour before and after a function, using functools.wraps, as lecture 6 recaps. No
3 Test both modules Add pytest tests for the lecture examples, including that nested functions are not reachable from outside the parent. No
4 Screenshot lecture 5: functions as arguments Capture the real output of running the module (calculate, nested and returned functions) in a rendered terminal transcript. No
5 Screenshot lecture 6: decorators Capture the real output of the decorator demo. No
6 README section for lectures 5 and 6 Add the two screenshots and a short explanation with the function names. No