astropy/astropy — pull request #46 by mdboom (2011-11-03 16:42:32+00:00)
Title: VO

This is an initial import of vo.table into astropy as astropy.io.vo.

This includes only the VOTABLE file format handling code. The VO networking (conesearch, ssa, image search etc.) stuff is still kind of half-baked and not ready -- that will live on a branch on my fork for a while.

There are some things left to do, but they are perhaps best left for after merging:

- There are lots of general-purpose utilities here that should be moved into astropy.utils.

- There are some local data files which should use the new data loading framework when that lands on master.

- It has an optional dependency on "xmllint" for schema verification. We should add this to the forthcoming "check for optional dependencies" tool. At the moment, an exception is raised when calling the single function that depends upon "xmllint". The tests will pass without "xmllint" installed, but the output of the tests will not be verified against the schema.

Some points:

- This includes all of expat verbatim in cextern. It does not build with a system copy of expat because at least on Ubuntu and Fedora, the system expat is built with UTF-8 strings rather than UCS2/4 strings which makes the conversion to Python Unicode strings much slower. In benchmarking I found this to have a factor of about 15% speedup. The Python expat wrappers perform even worse because they do a lot of unnecessary work. So, somehow, I suppose it should be documented that even though we are including expat in cextern, we don't want to create the option for the user to build against a system expat.