Author: Matti Picus <[email protected]> Branch: python-numpy Changeset: r60971:5a8676a23e8a Date: 2013-02-08 13:45 +0200 http://bitbucket.org/pypy/pypy/changeset/5a8676a23e8a/
Log: update HOWTO for this branch diff --git a/HOW_TO_CONTRIBUTE.txt b/HOW_TO_CONTRIBUTE.txt --- a/HOW_TO_CONTRIBUTE.txt +++ b/HOW_TO_CONTRIBUTE.txt @@ -2,38 +2,31 @@ 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 +2. Fix and test -The strategy for completing the branch is: -1. Set up pypy and cpython -2. Find missing functionality or a failing test -3. Fix and 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 +>>>import numpy as np +>>>x = np.array([np.nan, np.inf]) +>>>print x +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 -And in more detail: -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. -3b. Write some code -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 -as well as - 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) _______________________________________________ pypy-commit mailing list [email protected] http://mail.python.org/mailman/listinfo/pypy-commit
