Currently with the @catch_and_convert_exceptions decorator on each message class it isn't possible to be inherited again. The BaseModel.model_validate classmethod in Pydantic will not receive the correct class as we are pinning the class due to the decorator. A different approach would be to catch and convert the exception using the methods exposed by s2-python in the S2MessageComponent mixin instead of using the class decorator. This should also fix some of the typing/autocomplete issues.
Currently with the @catch_and_convert_exceptions decorator on each message class it isn't possible to be inherited again. The BaseModel.model_validate classmethod in Pydantic will not receive the correct class as we are pinning the class due to the decorator. A different approach would be to catch and convert the exception using the methods exposed by s2-python in the S2MessageComponent mixin instead of using the class decorator. This should also fix some of the typing/autocomplete issues.