[Numpy-discussion] ANN: XDress v0.3 Release

Anthony Scopatz scopatz@gmail....
Fri Aug 9 02:36:06 CDT 2013

Hello All,

I am pleased to announce the latest the latest and greatest release of
xdress, which incorporates a lot of feedback received at SciPy 2013.
 Please see the release notes below for more information.

And a HUGE congratulations to the IPython team on their v1.0 release today!
 Please continue taking over the world ;).

Be Well

XDress 0.3 Release Notes
XDress is an automatic wrapper generator for C/C++ written in pure Python.
xdress may generate Python bindings (via Cython) for C++ classes,
functions, and
certain variable types. It also contains idiomatic wrappers for C++
standard library
containers (sets, vectors, maps). In the future, other tools and bindings
will be

The main enabling feature of xdress is a dynamic type system that was
designed with
the purpose of API generation in mind.

Release highlights:

  - C++ template class & function support
  - Automatic docstring generation via dOxygen
  - A complete type system implementation refactor
  - Wrapped names may be different than source names,
    allowing automatic PEP-8-ification
  - A plethora of useful bug fixes

Please visit the website for more information: http://xdress.org/

Ask questions on the mailing list: xdress@googlegroups.com

Download the code from GitHub: http://github.com/xdress/xdress

XDress is free & open source (BSD 2-clause license) and requires Python 2.7,
NumPy 1.5+, Cython 0.19+, and optionally GCC-XML, pycparser, dOxygen, and

New Features

C++ Template Support
The most requested feature following SciPy 2013 was full and complete
for C++ templates.  It is here!  Template instantiations are now
discovered, described, and wrapped.  The only exception to this is that
template member functions are *not* automatically discovered due to a
defect in
GCC-XML.  Template methods must, therefore, be added by hand in a sidecar
See the FAQ for more details.

dOxygen Docstrings
A new plugin called ``xdress.doxygen`` has been added which automatically
scrapes the source code for documentation using dOxygen.  These are then
automatically inserted as docstrings into the wrappers that are generated.
docstrings follow the numpydoc convention.

Type System Refactor
The type system has undergone a complete reactor to make it more
and expose a lot of its internals.  Previously, the type system was a
of functions and module-level private containers.  All of this has been
moved into
a new ``TypeSystem`` class whose attributes and methods are almost all
This enables a number of potentially useful features.

* Type systems may be customized in the xdressrc.py file.
* Type systems may be customized in side car files.
* Type systems can now persist and load themselves.  This enables saving
  a type system when wrapping one project and loading it in as a dependency
  in future projects.
* Easier testing

As a consequence, most other parts of xdress must now hold a reference to a
system object.  Before, it was sufficient to import the type system module.

API Named Tuple
A new named tuple class ``apiname`` has been added.  This allows for a
selection of how users can choose to write names in the classes, functions,
variables list in the run control file.  Possible options now include::

    from xdress.utils import apiname
    classes = [
        (srcname, srcfile,),
        (srcname, srcfile, tarfile,),
        (srcname, srcfile, tarfile, tarname),
        [srcname, srcfile, tarfile, tarname],
        {'srcname': a, 'srcfile': b, 'tarfile': c, 'tarname': d},
        apiname(srcname, srcfile, tarfile, tarname),

This allows the target name (ie the name in the wrapper) to be distinct from
the name that is in the C/C++ source code (ie the source name).  This is
useful for customizing APIs because xdress takes care of the mapping for

PEP-8 Compliance Plugin
A new plugin called ``xdress.pep8names`` has been added which ensures that
all target names for API elements are PEP-8 compliant for that type.  If the
target name is not PEP-8 complaint then it converts it to a compliant
for you.  Subversive?  That's the point!  Functions and variables are
to lowercase_with_underscores while classes are converted to CapCase.

Description Filtering Plugin
Sometimes autoall will expose too much.  To avoid certain API elements while
still automatically finding other names, the ``xdress.descfilter`` plugin
you to skip methods, attributes, and types that the you doesn't feel are
to expose.  This is also a useful stop-gap for data types that have not yet
implemented into the xdress type system.
Tab Completion in BASH
Through the power and magic of the argcomplete package, all arguments and
for all plugins now have tab-completion enabled in BASH.  Install
and then add the following lines to your ``~/.bashrc`` file::

    # Enable completion for xdress
    eval "$(register-python-argcomplete xdress)"

Major Bug Fixes

* Enums and functions pointers were noticeably absent from the GCC-XML
  This has been rectified.

* Classes and structs are now registered into the type system earlier.
 This allows
  them to be used in other plugins.  This includes stlwrap.  It is now
  and easy to create custom numpy dtypes for any struct or C++ class.

* Fixed segfaults with custom dtypes

* Fixed build issue when only vectors were present in stlcontainers.

* The global namespace is now correctly represented by None, rather than
  when using GCC-XML.

Join in the Fun!
If you are interested in using xdress on your project (and need help),
back to xdress, starting up a development team, or writing your own code
plugin tool, please let us know. Participation is very welcome!

- [Anthony Scopatz](http://scopatz.com/)
- Spencer Lyon
- John Wiggins *
- Matt McCormick *
- Brad Buran

An * indicates a first time contributor.


1. Homepage - http://xdress.org/
2. Mailing List - xdress@googlegroups.com
3. GitHub Organization - https://github.com/xdress
4. numpydoc - https://pypi.python.org/pypi/numpydoc
5. argcomplete - https://argcomplete.readthedocs.org/en/latest/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20130809/10057bb9/attachment-0001.html 

More information about the NumPy-Discussion mailing list