Shouldn't this be done somehow by extending `EventRecord`? So I am not sure if `EventRecord` is private or public class here? You export it so it seems public, but you are not really having API where user's should use `EventRecord`?

Wouldn't it be better if you would have `__init__` in `EventRecord` which populates `__dict__`? So users can extend that and intercept and modify how parameters are processed and stored?

So why is not `post` in fact `__init__` of `EventRecord`?