https://medium.com/@sarperismetmakas/context-managers-in-python-a-guide-to-clean-and-efficient-code-8dca9dc4b197