Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP


Document the C/C++ code guidelines #1606

merged 1 commit into from

2 participants

Michael Droettboom Ian Thomas
Michael Droettboom

This is a distillation of a discussion on the mailing list regarding C/C++ extensions.

Ian Thomas

+1 on this provided we are happy to take a flexible approach on keeping interface and core C/C++ code separate, as in some cases it is more sensible to keep them together, e.g. if the core code is very simple, or if the core code needs access to a reference-counted python object for longer than a single C/C++ function call.

Michael Droettboom

@ianthomas23: Agreed. Exceptions can always be made when appropriate.

Michael Droettboom mdboom merged commit 1c3836d into from
Michael Droettboom mdboom deleted the branch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Dec 17, 2012
  1. Michael Droettboom
This page is out of date. Refresh to see the latest.
Showing with 19 additions and 0 deletions.
  1. +19 −0 doc/devel/coding_guide.rst
19 doc/devel/coding_guide.rst
@@ -105,6 +105,25 @@ Installation
ones, make sure the new files included in the match patterns in
:file:``, and/or in `package_data` in ``.
+C/C++ extensions
+* Extensions may be written in C or C++.
+* Code style should conform to PEP7 (understanding that PEP7 doesn't
+ address C++, but most of its admonitions still apply).
+* Interfacing with Python may be done either with the raw Python/C API
+ or Cython. Use of PyCXX is discouraged for new code.
+* Python/C interface code should be kept separate from the core C/C++
+ code. The interface code should be named `FOO_wrap.cpp`.
+* Header file documentation (aka docstrings) should be in Numpydoc
+ format. We don't plan on using automated tools for these
+ docstrings, and the Numpydoc format is well understood in the
+ scientific Python community.
Style guide
Something went wrong with that request. Please try again.