<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>astropy.io.votable.table — Astropy v0.2.4</title> <link rel="stylesheet" href="../../../../_static/bootstrap-astropy.css" type="text/css" /> <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../../../', VERSION: '0.2.4', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../../_static/underscore.js"></script> <script type="text/javascript" src="../../../../_static/doctools.js"></script> <script type="text/javascript" src="../../../../_static/sidebar.js"></script> <link rel="shortcut icon" href="../../../../_static/astropy_logo.ico"/> <link rel="top" title="Astropy v0.2.4" href="../../../../index.html" /> <link rel="up" title="Module code" href="../../../index.html" /> </head> <body> <div class="topbar"> <a class="brand" title="Documentation Home" href="../../../../index.html"></a> <ul> <li><a class="homelink" title="AstroPy Homepage" href="http://www.astropy.org"></a></li> <li><a title="General Index" href="../../../../genindex.html">Index</a></li> <li><a title="Python Module Index" href="../../../../py-modindex.html">Modules</a></li> <li> <form action="../../../../search.html" method="get"> <input type="text" name="q" placeholder="Search" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </li> </ul> </div> <div class="related"> <h3>Navigation</h3> <ul> <li> <a href="../../../../index.html">Astropy v0.2.4</a> » </li> <li><a href="../../../index.html" accesskey="U">Module code</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <h1>Source code for astropy.io.votable.table</h1><div class="highlight"><pre> <span class="c"># Licensed under a 3-clause BSD style license - see LICENSE.rst</span> <span class="sd">"""</span> <span class="sd">This file contains a contains the high-level functions to read a</span> <span class="sd">VOTable file.</span> <span class="sd">"""</span> <span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">absolute_import</span> <span class="c"># STDLIB</span> <span class="kn">import</span> <span class="nn">io</span> <span class="kn">import</span> <span class="nn">os</span> <span class="kn">import</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="nn">warnings</span> <span class="c"># LOCAL</span> <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">exceptions</span> <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">tree</span> <span class="kn">from</span> <span class="nn">...utils.xml</span> <span class="kn">import</span> <span class="n">iterparser</span> <span class="kn">from</span> <span class="nn">...utils</span> <span class="kn">import</span> <span class="n">data</span> <span class="kn">from</span> <span class="nn">...config</span> <span class="kn">import</span> <span class="n">ConfigurationItem</span> <span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s">'parse'</span><span class="p">,</span> <span class="s">'parse_single_table'</span><span class="p">,</span> <span class="s">'from_table'</span><span class="p">,</span> <span class="s">'writeto'</span><span class="p">,</span> <span class="s">'validate'</span><span class="p">]</span> <span class="n">PEDANTIC</span> <span class="o">=</span> <span class="n">ConfigurationItem</span><span class="p">(</span> <span class="s">'pedantic'</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="s">'When True, treat fixable violations of the VOTable spec as exceptions.'</span><span class="p">)</span> <div class="viewcode-block" id="parse"><a class="viewcode-back" href="../../../../_generated/astropy.io.votable.table.parse.html#astropy.io.votable.table.parse">[docs]</a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">invalid</span><span class="o">=</span><span class="s">'exception'</span><span class="p">,</span> <span class="n">pedantic</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">chunk_size</span><span class="o">=</span><span class="n">tree</span><span class="o">.</span><span class="n">DEFAULT_CHUNK_SIZE</span><span class="p">,</span> <span class="n">table_number</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">table_id</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_debug_python_based_parser</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Parses a VOTABLE_ xml file (or file-like object), and returns a</span> <span class="sd"> `~astropy.io.votable.tree.VOTable` object.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> source : str or readable file-like object</span> <span class="sd"> Path or file object containing a VOTABLE_ xml file.</span> <span class="sd"> columns : sequence of str, optional</span> <span class="sd"> List of field names to include in the output. The default is</span> <span class="sd"> to include all fields.</span> <span class="sd"> invalid : str, optional</span> <span class="sd"> One of the following values:</span> <span class="sd"> - 'exception': throw an exception when an invalid value is</span> <span class="sd"> encountered (default)</span> <span class="sd"> - 'mask': mask out invalid values</span> <span class="sd"> pedantic : bool, optional</span> <span class="sd"> When `True`, raise an error when the file violates the spec,</span> <span class="sd"> otherwise issue a warning. Warnings may be controlled using</span> <span class="sd"> the standard Python mechanisms. See the `warnings`</span> <span class="sd"> module in the Python standard library for more information.</span> <span class="sd"> When not provided, uses the configuration setting</span> <span class="sd"> `astropy.io.votable.pedantic`, which defaults to False.</span> <span class="sd"> chunk_size : int, optional</span> <span class="sd"> The number of rows to read before converting to an array.</span> <span class="sd"> Higher numbers are likely to be faster, but will consume more</span> <span class="sd"> memory.</span> <span class="sd"> table_number : int, optional</span> <span class="sd"> The number of table in the file to read in. If `None`, all</span> <span class="sd"> tables will be read. If a number, 0 refers to the first table</span> <span class="sd"> in the file, and only that numbered table will be parsed and</span> <span class="sd"> read in. Should not be used with `table_id`.</span> <span class="sd"> table_id : str, optional</span> <span class="sd"> The ID of the table in the file to read in. Should not be</span> <span class="sd"> used with `table_number`.</span> <span class="sd"> filename : str, optional</span> <span class="sd"> A filename, URL or other identifier to use in error messages.</span> <span class="sd"> If *filename* is None and *source* is a string (i.e. a path),</span> <span class="sd"> then *source* will be used as a filename for error messages.</span> <span class="sd"> Therefore, *filename* is only required when source is a</span> <span class="sd"> file-like object.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> votable : `astropy.io.votable.tree.VOTableFile` object</span> <span class="sd"> See also</span> <span class="sd"> --------</span> <span class="sd"> astropy.io.votable.exceptions : The exceptions this function may raise.</span> <span class="sd"> """</span> <span class="n">invalid</span> <span class="o">=</span> <span class="n">invalid</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">assert</span> <span class="n">invalid</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'exception'</span><span class="p">,</span> <span class="s">'mask'</span><span class="p">)</span> <span class="k">if</span> <span class="n">pedantic</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">pedantic</span> <span class="o">=</span> <span class="n">PEDANTIC</span><span class="p">()</span> <span class="n">config</span> <span class="o">=</span> <span class="p">{</span> <span class="s">'columns'</span> <span class="p">:</span> <span class="n">columns</span><span class="p">,</span> <span class="s">'invalid'</span> <span class="p">:</span> <span class="n">invalid</span><span class="p">,</span> <span class="s">'pedantic'</span> <span class="p">:</span> <span class="n">pedantic</span><span class="p">,</span> <span class="s">'chunk_size'</span> <span class="p">:</span> <span class="n">chunk_size</span><span class="p">,</span> <span class="s">'table_number'</span> <span class="p">:</span> <span class="n">table_number</span><span class="p">,</span> <span class="s">'filename'</span> <span class="p">:</span> <span class="n">filename</span><span class="p">}</span> <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span> <span class="n">config</span><span class="p">[</span><span class="s">'filename'</span><span class="p">]</span> <span class="o">=</span> <span class="n">source</span> <span class="k">with</span> <span class="n">iterparser</span><span class="o">.</span><span class="n">get_xml_iterator</span><span class="p">(</span> <span class="n">source</span><span class="p">,</span> <span class="n">_debug_python_based_parser</span><span class="o">=</span><span class="n">_debug_python_based_parser</span><span class="p">)</span> <span class="k">as</span> <span class="n">iterator</span><span class="p">:</span> <span class="k">return</span> <span class="n">tree</span><span class="o">.</span><span class="n">VOTableFile</span><span class="p">(</span> <span class="n">config</span><span class="o">=</span><span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">iterator</span><span class="p">,</span> <span class="n">config</span><span class="p">)</span> </div> <div class="viewcode-block" id="parse_single_table"><a class="viewcode-back" href="../../../../_generated/astropy.io.votable.table.parse_single_table.html#astropy.io.votable.table.parse_single_table">[docs]</a><span class="k">def</span> <span class="nf">parse_single_table</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Parses a VOTABLE_ xml file (or file-like object), reading and</span> <span class="sd"> returning only the first `~astropy.io.votable.tree.Table`</span> <span class="sd"> instance.</span> <span class="sd"> See `parse` for a description of the keyword arguments.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> votable : `astropy.io.votable.tree.Table` object</span> <span class="sd"> """</span> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'table_number'</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">kwargs</span><span class="p">[</span><span class="s">'table_number'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> <span class="n">votable</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="k">return</span> <span class="n">votable</span><span class="o">.</span><span class="n">get_first_table</span><span class="p">()</span> </div> <div class="viewcode-block" id="writeto"><a class="viewcode-back" href="../../../../_generated/astropy.io.votable.table.writeto.html#astropy.io.votable.table.writeto">[docs]</a><span class="k">def</span> <span class="nf">writeto</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">file</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Writes a `astropy.io.vo.VOTableFile` to a VOTABLE_ xml file.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> table : `astropy.io.vo.VOTableFile` or `astropy.table.Table` instance.</span> <span class="sd"> file : str or writable file-like object</span> <span class="sd"> Path or file object to write to</span> <span class="sd"> """</span> <span class="kn">from</span> <span class="nn">...table</span> <span class="kn">import</span> <span class="n">Table</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> <span class="n">table</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">VOTableFile</span><span class="o">.</span><span class="n">from_table</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">tree</span><span class="o">.</span><span class="n">VOTableFile</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span> <span class="s">"first argument must be astropy.io.vo.VOTableFile or "</span> <span class="s">"astropy.table.Table instance"</span><span class="p">)</span> <span class="n">table</span><span class="o">.</span><span class="n">to_xml</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">_debug_python_based_parser</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> </div> <div class="viewcode-block" id="validate"><a class="viewcode-back" href="../../../../_generated/astropy.io.votable.table.validate.html#astropy.io.votable.table.validate">[docs]</a><span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">output</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">xmllint</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Prints a validation report for the given file.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> source : str or readable file-like object</span> <span class="sd"> Path to a VOTABLE_ xml file.</span> <span class="sd"> output : writable file-like object, optional</span> <span class="sd"> Where to output the report. Defaults to `sys.stdout`.</span> <span class="sd"> If `None`, the output will be returned as a string.</span> <span class="sd"> xmllint : bool, optional</span> <span class="sd"> When `True`, also send the file to `xmllint` for schema and</span> <span class="sd"> DTD validation. Requires that `xmllint` is installed. The</span> <span class="sd"> default is `False`. `source` must be a file on the local</span> <span class="sd"> filesystem in order for `xmllint` to work.</span> <span class="sd"> filename : str, optional</span> <span class="sd"> A filename to use in the error messages. If not provided, one</span> <span class="sd"> will be automatically determined from ``source``.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> is_valid : bool or str</span> <span class="sd"> Returns `True` if no warnings were found. If `output` is</span> <span class="sd"> `None`, the return value will be a string.</span> <span class="sd"> """</span> <span class="kn">import</span> <span class="nn">textwrap</span> <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">converters</span><span class="p">,</span> <span class="n">xmlutil</span> <span class="kn">from</span> <span class="nn">...utils.console</span> <span class="kn">import</span> <span class="n">print_code_line</span><span class="p">,</span> <span class="n">color_print</span> <span class="n">return_as_str</span> <span class="o">=</span> <span class="bp">False</span> <span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">output</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">StringIO</span><span class="p">()</span> <span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">votable</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># This is a special variable used by the Python warnings</span> <span class="c"># infrastructure to keep track of warnings that have already been</span> <span class="c"># seen. Since we want to get every single warning out of this, we</span> <span class="c"># have to delete all of them first.</span> <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="p">(</span><span class="n">exceptions</span><span class="p">,</span> <span class="n">converters</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">xmlutil</span><span class="p">):</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="s">'__warningregistry__'</span><span class="p">):</span> <span class="k">del</span> <span class="n">module</span><span class="o">.</span><span class="n">__warningregistry__</span> <span class="k">with</span> <span class="n">data</span><span class="o">.</span><span class="n">get_readable_fileobj</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">'binary'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fd</span><span class="p">:</span> <span class="n">content</span> <span class="o">=</span> <span class="n">fd</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="n">content_buffer</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">BytesIO</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> <span class="n">content_buffer</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span> <span class="n">filename</span> <span class="o">=</span> <span class="n">source</span> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="s">'name'</span><span class="p">):</span> <span class="n">filename</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">name</span> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="s">'url'</span><span class="p">):</span> <span class="n">filename</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">url</span> <span class="k">else</span><span class="p">:</span> <span class="n">filename</span> <span class="o">=</span> <span class="s">"<unknown>"</span> <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">(</span><span class="n">record</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">warning_lines</span><span class="p">:</span> <span class="n">warnings</span><span class="o">.</span><span class="n">resetwarnings</span><span class="p">()</span> <span class="n">warnings</span><span class="o">.</span><span class="n">simplefilter</span><span class="p">(</span><span class="s">"always"</span><span class="p">,</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">VOWarning</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="k">try</span><span class="p">:</span> <span class="n">votable</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="n">content_buffer</span><span class="p">,</span> <span class="n">pedantic</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="n">filename</span><span class="p">)</span> <span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> <span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">message</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">warning_lines</span><span class="p">]</span> <span class="o">+</span> <span class="n">lines</span> <span class="n">content_buffer</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u"Validation report for {0}</span><span class="se">\n\n</span><span class="s">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">):</span> <span class="n">xml_lines</span> <span class="o">=</span> <span class="n">iterparser</span><span class="o">.</span><span class="n">xml_readlines</span><span class="p">(</span><span class="n">content_buffer</span><span class="p">)</span> <span class="k">for</span> <span class="n">warning</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span> <span class="n">w</span> <span class="o">=</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">parse_vowarning</span><span class="p">(</span><span class="n">warning</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">w</span><span class="p">[</span><span class="s">'is_something'</span><span class="p">]:</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">w</span><span class="p">[</span><span class="s">'message'</span><span class="p">])</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u'</span><span class="se">\n\n</span><span class="s">'</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">line</span> <span class="o">=</span> <span class="n">xml_lines</span><span class="p">[</span><span class="n">w</span><span class="p">[</span><span class="s">'nline'</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="n">warning</span> <span class="o">=</span> <span class="n">w</span><span class="p">[</span><span class="s">'warning'</span><span class="p">]</span> <span class="k">if</span> <span class="n">w</span><span class="p">[</span><span class="s">'is_warning'</span><span class="p">]:</span> <span class="n">color</span> <span class="o">=</span> <span class="s">'yellow'</span> <span class="k">else</span><span class="p">:</span> <span class="n">color</span> <span class="o">=</span> <span class="s">'red'</span> <span class="n">color_print</span><span class="p">(</span> <span class="s">u'{0:d}: '</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">w</span><span class="p">[</span><span class="s">'nline'</span><span class="p">]),</span> <span class="s">''</span><span class="p">,</span> <span class="n">warning</span> <span class="ow">or</span> <span class="s">'EXC'</span><span class="p">,</span> <span class="n">color</span><span class="p">,</span> <span class="s">u': '</span><span class="p">,</span> <span class="s">''</span><span class="p">,</span> <span class="n">textwrap</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span> <span class="n">w</span><span class="p">[</span><span class="s">'message'</span><span class="p">],</span> <span class="n">initial_indent</span><span class="o">=</span><span class="s">u' '</span><span class="p">,</span> <span class="n">subsequent_indent</span><span class="o">=</span><span class="s">u' '</span><span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(),</span> <span class="nb">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span> <span class="n">print_code_line</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="n">w</span><span class="p">[</span><span class="s">'nchar'</span><span class="p">],</span> <span class="nb">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u'</span><span class="se">\n</span><span class="s">'</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u'astropy.io.votable found no violations.</span><span class="se">\n\n</span><span class="s">'</span><span class="p">)</span> <span class="n">success</span> <span class="o">=</span> <span class="mi">0</span> <span class="k">if</span> <span class="n">xmllint</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span> <span class="kn">from</span> <span class="nn">...utils.xml</span> <span class="kn">import</span> <span class="n">validate</span> <span class="k">if</span> <span class="n">votable</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">version</span> <span class="o">=</span> <span class="s">"1.1"</span> <span class="k">else</span><span class="p">:</span> <span class="n">version</span> <span class="o">=</span> <span class="n">votable</span><span class="o">.</span><span class="n">version</span> <span class="n">success</span><span class="p">,</span> <span class="n">stdout</span><span class="p">,</span> <span class="n">stderr</span> <span class="o">=</span> <span class="n">validate</span><span class="o">.</span><span class="n">validate_schema</span><span class="p">(</span> <span class="n">filename</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span> <span class="k">if</span> <span class="n">success</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span> <span class="s">u'xmllint schema violations:</span><span class="se">\n\n</span><span class="s">'</span><span class="p">)</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stderr</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">output</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u'xmllint passed</span><span class="se">\n</span><span class="s">'</span><span class="p">)</span> <span class="k">if</span> <span class="n">return_as_str</span><span class="p">:</span> <span class="k">return</span> <span class="n">output</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span> <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">success</span> <span class="o">==</span> <span class="mi">0</span> </div> <div class="viewcode-block" id="from_table"><a class="viewcode-back" href="../../../../_generated/astropy.io.votable.table.from_table.html#astropy.io.votable.table.from_table">[docs]</a><span class="k">def</span> <span class="nf">from_table</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">table_id</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Given an `astropy.table.Table` object, return a</span> <span class="sd"> `~astropy.io.votable.tree.VOTableFile` file structure containing</span> <span class="sd"> just that single table.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> table : `astropy.table.Table` instance</span> <span class="sd"> table_id : str, optional</span> <span class="sd"> If not `None`, set the given id on the returned</span> <span class="sd"> `~astropy.tree.Table` instance.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> votable : `astropy.io.votable.tree.VOTableFile` instance</span> <span class="sd"> """</span> <span class="k">return</span> <span class="n">tree</span><span class="o">.</span><span class="n">VOTableFile</span><span class="o">.</span><span class="n">from_table</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">table_id</span><span class="o">=</span><span class="n">table_id</span><span class="p">)</span> </div> <div class="viewcode-block" id="is_votable"><a class="viewcode-back" href="../../../../_generated/astropy.io.votable.table.is_votable.html#astropy.io.votable.table.is_votable">[docs]</a><span class="k">def</span> <span class="nf">is_votable</span><span class="p">(</span><span class="n">source</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Reads the header of a file to determine if it is a VOTable file.</span> <span class="sd"> Parameters</span> <span class="sd"> ----------</span> <span class="sd"> source : str or readable file-like object</span> <span class="sd"> Path or file object containing a VOTABLE_ xml file.</span> <span class="sd"> Returns</span> <span class="sd"> -------</span> <span class="sd"> is_votable : bool</span> <span class="sd"> Returns `True` if the given file is a VOTable file.</span> <span class="sd"> """</span> <span class="k">try</span><span class="p">:</span> <span class="k">with</span> <span class="n">iterparser</span><span class="o">.</span><span class="n">get_xml_iterator</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> <span class="k">as</span> <span class="n">iterator</span><span class="p">:</span> <span class="k">for</span> <span class="n">start</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">iterator</span><span class="p">:</span> <span class="k">if</span> <span class="n">tag</span> <span class="o">!=</span> <span class="s">'xml'</span><span class="p">:</span> <span class="k">return</span> <span class="bp">False</span> <span class="k">break</span> <span class="k">for</span> <span class="n">start</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">iterator</span><span class="p">:</span> <span class="k">if</span> <span class="n">tag</span> <span class="o">!=</span> <span class="s">'VOTABLE'</span><span class="p">:</span> <span class="k">return</span> <span class="bp">False</span> <span class="k">break</span> <span class="k">return</span> <span class="bp">True</span> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> <span class="k">return</span> <span class="bp">False</span></div> </pre></div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"><h3>Page Contents</h3> </div> </div> <div class="clearer"></div> </div> <footer class="footer"> <p class="pull-right"> <a href="#">Back to Top</a></p> <p> © Copyright 2011-2013, The Astropy Developers.<br/> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. Last built 22 Oct 2013. <br/> </p> </footer> </body> </html>