- 
                Notifications
    You must be signed in to change notification settings 
- Fork 456
Description
Is your feature request related to a problem? Please describe.
The docs example for extending parser models (https://awslabs.github.io/aws-lambda-powertools-python/latest/utilities/parser/#extending-built-in-models) doesn't pass mypy, because the Order class is not compatible with the EventBridgeModel annotation detail: Dict[str, Any].
error: Incompatible types in assignment (expression has type "Order", base class "EventBridgeModel" defined the type as "Dict[str, Any]")I would like to be able to both extend this model and have my code pass type checks without # type: ignore or similar.
I suspect this affects other parser models, like the Message field of SnsNotificationModel.
Describe the solution you'd like
One solution is to change only the detail type annotation, e.g. Union[Dict[str, Any], BaseModel], but there may be other things to add to that list and it doesn't feel great; there could be many other types that would parse fine and could be listed there, right? Or is that it, because you either use EventBridgeModel directly (Dict) or you subclass it (BaseModel)?
Is there anything that could be done with typing.Protocol, to check the class has certain methods regardless of name?
There might also be an argument to not change the type, but note in the docs that this will fail type-checks and instruct how to silence mypy in such instances.
Describe alternatives you've considered
I tried various solutions which didn't work, like adding dict or TypedDict to the parent class list for Order (incompatible methods), or changing it to TypedDict (same error as above).
Additional context
I'm using the pydantic.mypy extension.