What you will need
Note
Many of the below requirements can be easily installed by
uncommenting the appropriate lines in setup.py.
Here is a list of the tools you are likely to need if you want to work on
ptypes:
- gcc, gdb and make
- python2.7 (Most Linux distros include it by default. You may have to
install the header files [usually in a package called python-dev or
similar] on top of the normal Python2 package.)
- cython (You need at least 0.19.2. In earlier versions there is a bug that
will make the compiled binary core. Download from
here then build and install it:
cd <yourcythondir>; python setup.py build; sudo python setup.py install)
- git (and an account on https://github.com/ so that you can send pull
requests)
- pep8 (This is a Python package to check compliance to the Python coding
standards PEP 8. Install it via sudo apt-get install pep8)
- autopep8 (This is a package to fix non-compliant code automatically - use it
with caution. Install is using sudo apt-get install python-autopep8)
- setuptools, virtualenv and virtualenvwrapper (See
here
how to install these.)
- py.test (sudo apt-get install python-pytest,
sudo apt-get install python-pytest-doc)
- tox (sudo apt-get install python-tox)
- valgrind (Use this when gdb proves to be insufficient for debugging
memory related errors. Installation: sudo apt-get install valgrind.
You will need to download the suppression file Misc/valgrind-python.supp
from the source repository of the Python release you are using and specify
it when running valgrind.)
- sphinx
(sudo apt-get install python-sphinx)
Before you make changes, have a look at Lessons learnt while developing ptypes
For a complete build-package-install-test cycle go to the directory containing
tox.ini and type tox. This will recompile all modules, which may
prove lengthy. For a shorter cycle, create a virtual environment called (say)
ptypes (i.e. mkvirtualenv ptypes) or, if it already exists, activate it
(by workon ptypes), and for each cycle run pip install -e .; py.test
from the directory containing tox.ini.
To build the documentation, go to the doc directory and type make html.
Quality guidelines
Please cover new code with tests. Before submitting, run the test suites via
tox and make sure they all pass. Verify that the documentation builds.
Run pep8 as well. Please avoid introducing new warnings.
Coding style
Many of the warnings of pep8 are not applicable because the verifier is
targeted at Python (as opposed to Cython) code. These warnings are silenced
in the tox.ini file.
For imports, cimport statements should precede normal imports, reflecting
the fact that a the former has a compile time effect, while the later is an
executable runtime statement.