Good Code
The good version tells callers what kind of payload is accepted and returns a named object with typed fields.
Lesson 08
Add type hints where data enters or leaves a module so assumptions are visible to tools and reviewers.
from dataclasses import dataclass
from typing import Mapping
@dataclass(frozen=True)
class ReviewInput:
title: str
author_id: int
def parse_review_input(payload: Mapping[str, object]) -> ReviewInput:
return ReviewInput(
title=str(payload["title"]),
author_id=int(payload["author_id"]),
)def parse_review_input(payload):
return {
"title": payload["title"],
"author_id": payload["author_id"],
}The good version tells callers what kind of payload is accepted and returns a named object with typed fields.
The bad version accepts and returns anything. Reviewers cannot see whether author_id should be a string, number, or optional value.