Consider using the typing library for type hints
Since Python does not have typing by default, it can sometimes be a bit difficult to navigate through the code base and understand how the execution flow looks like under particular inputs. I have good experiences with the typing library that allows you to annotate variables and parameters. This improves the static analysis capabilities of various IDEs, most notably Pycharm, and would make it easier for devs that want to understand the structure of the simulator.