https://pyrastra.com/posts/python-best-practices-code-quality/