Protocols in Python: Why You Need Them