The attached patch adds Python 3 support to ffnet. To maintain Python 2.5 compatibility, most of the heavy lifting is done by using 2to3 in setup.py.
1) Pickles are read/written with the file opened in binary mode, which should be fine in Python 2 and is mandatory in Python 3.
2) _mmprop.py uses explicit floor division, introduced in Python 2.2, to chunk the data.
3) fortran/init.py uses an explicit relative import, introduced in Python 2.5.
4) One test in _test.py has an explicit cast from single-element numpy array to float. This is what round() was doing in assertNotAlmostEqual in Python 2.x, but this fallback behavior was eliminated in Python 3.
Tested with "python -m ffnet._tests" and by running the code in the examples directory, under both Python 3.3 and 2.7. Note that, due to the way setup.py is written, the examples will not be run through 2to3 on installation, but they do work fine after a manual 2to3 run. I chose not to mess with this for the sake of minimizing changes.