python typing for function with optional arguments code example

Example 1: typing generator python

# Iterator
def infinite_stream(start: int) -> Iterator[int]:
    while True:
        yield start
        start += 1

# Generator        
def infinite_stream(start: int) -> Generator[int, None, None]:
    while True:
        yield start
        start += 1

Example 2: python optional type annotation

from custom_module import SomeClass
from typing import Optional

class SubClass:
    a_reference: Optional[SomeClass] # Provides info that a_reference may be 'None'.

    def __init__(self):
        self.a_reference = None