■ Contents
xviii
■Chapter 16: Testing, 1-2-3 ��������������������������������������������������������������������������������� 307
Test First, Code Later ���������������������������������������������������������������������������������������������������� 307
Precise Requirement Specification�����������������������������������������������������������������������������������������������������307
Planning for Change ��������������������������������������������������������������������������������������������������������������������������� 309
The 1-2-3 (and 4) of Testing ��������������������������������������������������������������������������������������������������������������� 310
Tools for Testing ����������������������������������������������������������������������������������������������������������� 310
doctest ������������������������������������������������������������������������������������������������������������������������������������������������ 310
unittest ����������������������������������������������������������������������������������������������������������������������������������������������� 312
Beyond Unit Tests ��������������������������������������������������������������������������������������������������������� 315
Source Code Checking with PyChecker and PyLint ���������������������������������������������������������������������������� 315
Profiling ���������������������������������������������������������������������������������������������������������������������������������������������� 318
A Quick Summary ��������������������������������������������������������������������������������������������������������� 319
New Functions in This Chapter ����������������������������������������������������������������������������������������������������������� 320
What Now? �����������������������������������������������������������������������������������������������������������������������������������������320
■Chapter 17: Extending Python ��������������������������������������������������������������������������� 321
The Best of Both Worlds ����������������������������������������������������������������������������������������������� 321
The Really Easy Way: Jython and IronPython ��������������������������������������������������������������� 322
Writing C Extensions ���������������������������������������������������������������������������������������������������� 325
A Swig of … SWIG ������������������������������������������������������������������������������������������������������������������������������ 326
What Does It Do? �������������������������������������������������������������������������������������������������������������������������������� 327
I Prefer Pi ��������������������������������������������������������������������������������������������������������������������������������������������327
The Interface File �������������������������������������������������������������������������������������������������������������������������������� 328
Running SWIG ������������������������������������������������������������������������������������������������������������������������������������� 328
Compiling, Linking, and Using������������������������������������������������������������������������������������������������������������� 329
A Shortcut Through the Magic Forest of Compilers ���������������������������������������������������������������������������� 330
Hacking It on Your Own �����������������������������������������������������������������������������������������������������������������������330
Reference Counting ���������������������������������������������������������������������������������������������������������������������������� 331
A Framework for Extensions���������������������������������������������������������������������������������������������������������������332
Palindromes, Detartrated
1
for Your Enjoyment �����������������������������������������������������������������������������������333