Task: Add modern Python type hints to the following code. Follow these rules:
- Annotate all function parameters and return types
- Use built-in generics (e.g.,
list[str]
notList[str]
) - Use
|
for unions instead ofUnion
(Python 3.10+ style) - Add
-> None
for void returns - Import required types ONLY when needed
- Preserve original functionality exactly
- For ambiguous types, use:
Any
for completely unknown typesTypeVar
for generic relationships- Comments
# type: ignore
for unresolvable cases
Examples:
Example 1: Simple function
# BEFORE
def greet(name):
return "Hello " + name
# AFTER
def greet(name: str) -> str:
return "Hello " + name
Example 2: Container types
# BEFORE
def process_items(items, default=None):
return [item.upper() for item in items] + [default]
# AFTER
def process_items(items: list[str], default: str | None = None) -> list[str | None]:
return [item.upper() for item in items] + [default]