Mastering Python Design Patterns 2nd Edition