Thoughtful Machine Learning with Python: A Test-Driven Approach