from a random version of numpy (git version fd15162 to be exact).

pypy has a builtin module called _numpypy that provides things like

-ndarray, dtypes, ufuncs, and binfuncs.

+ndarray, dtypes, ufuncs, and binfuncs. It has no linalg module, and

+lots is missing or incomplete.

-The branch will be complete when it is possible to run

-pypy -c 'import numpy;numpy.test()' and most tests pass.

+The strategy for completing this branch is:

+1. Find missing functionality or a failing test

-The strategy for completing the branch is:

-1. Set up pypy and cpython

-2. Find missing functionality or a failing test

+And in more detail (asusming you already can run tests on untranslated pypy:

+1a. download a nightly default branch version of pypy

+1a. copy the pypy executable into pypy/bin

+1c. update to this branch

+1d. run 'pypy/bin/pypy -c "import numpy; numpy.test(verbose=2)"

+2a. if the failure is pure python, update it on this branch.

+2b. if the failure is deeper, the failing part of the test probably

+ belongs in pypy/module/micronumpy/tests. Transplant the test there

+ and submit a patch to pypy

+Let us know you are planning to work on this, usually a note on IRC will be sufficient.

-Currently, 'import numpy' fails, since we are missing the

-c-level multiarray module.

+It may be possible to run on an untranslated pypy, the command line to do this is

+python pypy/bin/pyinteractive.py --withmod-micronumpy --withmod-struct --withmod-binascii --withmod-itertools --withmod-rctime --withmod-signal

+I didn't have much luck, even something as simple as

+>>>x = np.array([np.nan, np.inf])

+failed, where a translated pypy succeeded, but ymmv

-So what we need in the short-term is to implement a python version of

-multiarray, work has been begun and it lives in lib_pypy/numpypy/multiarray.py

-1a. Get a recent trunk version of numpy

-1a. Install numpy into python, for extra points use virtualenv, by running 'python setup.py install' in the numpy trunk

-1c. Get the source tree for this branch of pypy

-1d. Download a nightly build of pypy and put the binary into the source tree, preferably at pypy/translator/goal/pypy. Alternatively, translate pypy

-2a. Run 'pypy/translator/goal/pypy -c 'import numpy;numpy.test()'

-2b. Something will fail. Poke around to see what the missing function or import is supposed to do. Hint: try http://docs.scipy.org/doc/numpy/reference/index.html

-2c. Let us know you are planning to work on this, usually a note on IRC will be sufficient.

-2c. Write a test for the missing functionality. For instance, tests for multiarray live in lib_pypy/numpypy/test/test_multiarray.py Try to think of corner cases: inappropriate arguments, missing defaults, and other wierd combination of arguments.

-3a. Try to find where numpy implemented it and stare at that till it makes sense.

-3c. Test under pypy, python, and then think again about the tests, did you miss a corner case? Testing is done by:

- pypy/translator/pypy pytest.py lib_pypy/numpypy/test

- python pytest.py lib_pypy/numpypy/test

-3d. Rerun 2a to make sure you accomplished what you set out to do

-3e. Commit and push your changes, if you are working on a fork let us know what you have done.

+Matti Picus (mattip on IRC)