<!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.ascii.basic — 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.ascii.basic</h1><div class="highlight"><pre> <span class="c"># Licensed under a 3-clause BSD style license - see LICENSE.rst</span> <span class="sd">"""An extensible ASCII table reader and writer.</span> <span class="sd">basic.py:</span> <span class="sd"> Basic table read / write functionality for simple character</span> <span class="sd"> delimited files with various options for column header definition.</span> <span class="sd">:Copyright: Smithsonian Astrophysical Observatory (2011)</span> <span class="sd">:Author: Tom Aldcroft (aldcroft@head.cfa.harvard.edu)</span> <span class="sd">"""</span> <span class="c">##</span> <span class="c">## Redistribution and use in source and binary forms, with or without</span> <span class="c">## modification, are permitted provided that the following conditions are met:</span> <span class="c">## * Redistributions of source code must retain the above copyright</span> <span class="c">## notice, this list of conditions and the following disclaimer.</span> <span class="c">## * Redistributions in binary form must reproduce the above copyright</span> <span class="c">## notice, this list of conditions and the following disclaimer in the</span> <span class="c">## documentation and/or other materials provided with the distribution.</span> <span class="c">## * Neither the name of the Smithsonian Astrophysical Observatory nor the</span> <span class="c">## names of its contributors may be used to endorse or promote products</span> <span class="c">## derived from this software without specific prior written permission.</span> <span class="c">##</span> <span class="c">## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span> <span class="c">## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span> <span class="c">## WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span> <span class="c">## DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY</span> <span class="c">## DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span> <span class="c">## (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span> <span class="c">## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span> <span class="c">## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span> <span class="c">## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span> <span class="c">## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span> <span class="kn">import</span> <span class="nn">re</span> <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">core</span> <span class="kn">from</span> <span class="nn">.core</span> <span class="kn">import</span> <span class="n">io</span><span class="p">,</span> <span class="nb">next</span><span class="p">,</span> <span class="n">izip</span><span class="p">,</span> <span class="nb">any</span> <div class="viewcode-block" id="Basic"><a class="viewcode-back" href="../../../../_generated/astropy.io.ascii.basic.Basic.html#astropy.io.ascii.basic.Basic">[docs]</a><span class="k">class</span> <span class="nc">Basic</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BaseReader</span><span class="p">):</span> <span class="sd">"""Read a character-delimited table with a single header line at the top</span> <span class="sd"> followed by data lines to the end of the table. Lines beginning with # as</span> <span class="sd"> the first non-whitespace character are comments. This reader is highly</span> <span class="sd"> configurable.</span> <span class="sd"> ::</span> <span class="sd"> rdr = ascii.get_reader(Reader=ascii.Basic)</span> <span class="sd"> rdr.header.splitter.delimiter = ' '</span> <span class="sd"> rdr.data.splitter.delimiter = ' '</span> <span class="sd"> rdr.header.start_line = 0</span> <span class="sd"> rdr.data.start_line = 1</span> <span class="sd"> rdr.data.end_line = None</span> <span class="sd"> rdr.header.comment = r'\s*#'</span> <span class="sd"> rdr.data.comment = r'\s*#'</span> <span class="sd"> Example table::</span> <span class="sd"> # Column definition is the first uncommented line</span> <span class="sd"> # Default delimiter is the space character.</span> <span class="sd"> apples oranges pears</span> <span class="sd"> # Data starts after the header column definition, blank lines ignored</span> <span class="sd"> 1 2 3</span> <span class="sd"> 4 5 6</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">core</span><span class="o">.</span><span class="n">BaseReader</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">' '</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">' '</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">0</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">1</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="s">r'\s*#'</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">write_comment</span> <span class="o">=</span> <span class="s">'# '</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="s">r'\s*#'</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">write_comment</span> <span class="o">=</span> <span class="s">'# '</span> </div> <div class="viewcode-block" id="NoHeader"><a class="viewcode-back" href="../../../../_generated/astropy.io.ascii.basic.NoHeader.html#astropy.io.ascii.basic.NoHeader">[docs]</a><span class="k">class</span> <span class="nc">NoHeader</span><span class="p">(</span><span class="n">Basic</span><span class="p">):</span> <span class="sd">"""Read a table with no header line. Columns are autonamed using</span> <span class="sd"> header.auto_format which defaults to "col%d". Otherwise this reader</span> <span class="sd"> the same as the :class:`Basic` class from which it is derived. Example::</span> <span class="sd"> # Table data</span> <span class="sd"> 1 2 "hello there"</span> <span class="sd"> 3 4 world</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">Basic</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="bp">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">0</span> </div> <span class="k">class</span> <span class="nc">CommentedHeaderHeader</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BaseHeader</span><span class="p">):</span> <span class="sd">"""Header class for which the column definition line starts with the</span> <span class="sd"> comment character. See the :class:`CommentedHeader` class for an example.</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">process_lines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lines</span><span class="p">):</span> <span class="sd">"""Return only lines that start with the comment regexp. For these</span> <span class="sd"> lines strip out the matching characters."""</span> <span class="n">re_comment</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">comment</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span> <span class="n">match</span> <span class="o">=</span> <span class="n">re_comment</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">if</span> <span class="n">match</span><span class="p">:</span> <span class="k">yield</span> <span class="n">line</span><span class="p">[</span><span class="n">match</span><span class="o">.</span><span class="n">end</span><span class="p">():]</span> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lines</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="bp">self</span><span class="o">.</span><span class="n">write_comment</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">x</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cols</span><span class="p">]))</span> <div class="viewcode-block" id="CommentedHeader"><a class="viewcode-back" href="../../../../_generated/astropy.io.ascii.basic.CommentedHeader.html#astropy.io.ascii.basic.CommentedHeader">[docs]</a><span class="k">class</span> <span class="nc">CommentedHeader</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BaseReader</span><span class="p">):</span> <span class="sd">"""Read a file where the column names are given in a line that begins with</span> <span class="sd"> the header comment character. `header_start` can be used to specify the</span> <span class="sd"> line index of column names, and it can be a negative index (for example -1</span> <span class="sd"> for the last commented line). The default delimiter is the <space></span> <span class="sd"> character.::</span> <span class="sd"> # col1 col2 col3</span> <span class="sd"> # Comment line</span> <span class="sd"> 1 2 3</span> <span class="sd"> 4 5 6</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">core</span><span class="o">.</span><span class="n">BaseReader</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span> <span class="o">=</span> <span class="n">CommentedHeaderHeader</span><span class="p">()</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">' '</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">' '</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">0</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">0</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="s">r'\s*#'</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">write_comment</span> <span class="o">=</span> <span class="s">'# '</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="s">r'\s*#'</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">write_comment</span> <span class="o">=</span> <span class="s">'# '</span> </div> <div class="viewcode-block" id="Tab"><a class="viewcode-back" href="../../../../_generated/astropy.io.ascii.basic.Tab.html#astropy.io.ascii.basic.Tab">[docs]</a><span class="k">class</span> <span class="nc">Tab</span><span class="p">(</span><span class="n">Basic</span><span class="p">):</span> <span class="sd">"""Read a tab-separated file. Unlike the :class:`Basic` reader, whitespace is</span> <span class="sd"> not stripped from the beginning and end of lines. By default whitespace is</span> <span class="sd"> still stripped from the beginning and end of individual column values.</span> <span class="sd"> Example::</span> <span class="sd"> col1 <tab> col2 <tab> col3</span> <span class="sd"> # Comment line</span> <span class="sd"> 1 <tab> 2 <tab> 5</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">Basic</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">'</span><span class="se">\t</span><span class="s">'</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">'</span><span class="se">\t</span><span class="s">'</span> <span class="c"># Don't strip line whitespace since that includes tabs</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">process_line</span> <span class="o">=</span> <span class="bp">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">process_line</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Don't strip data value whitespace since that is significant in TSV tables</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">process_val</span> <span class="o">=</span> <span class="bp">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">skipinitialspace</span> <span class="o">=</span> <span class="bp">False</span> </div> <div class="viewcode-block" id="Rdb"><a class="viewcode-back" href="../../../../_generated/astropy.io.ascii.basic.Rdb.html#astropy.io.ascii.basic.Rdb">[docs]</a><span class="k">class</span> <span class="nc">Rdb</span><span class="p">(</span><span class="n">Tab</span><span class="p">):</span> <span class="sd">"""Read a tab-separated file with an extra line after the column definition</span> <span class="sd"> line. The RDB format meets this definition. Example::</span> <span class="sd"> col1 <tab> col2 <tab> col3</span> <span class="sd"> N <tab> S <tab> N</span> <span class="sd"> 1 <tab> 2 <tab> 5</span> <span class="sd"> In this reader the second line is just ignored.</span> <span class="sd"> """</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">Tab</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span> <span class="o">=</span> <span class="n">RdbHeader</span><span class="p">()</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">0</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="s">r'\s*#'</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">write_comment</span> <span class="o">=</span> <span class="s">'# '</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="s">'</span><span class="se">\t</span><span class="s">'</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">process_line</span> <span class="o">=</span> <span class="bp">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">start_line</span> <span class="o">=</span> <span class="mi">2</span> </div> <span class="k">class</span> <span class="nc">RdbHeader</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BaseHeader</span><span class="p">):</span> <span class="n">col_type_map</span> <span class="o">=</span> <span class="p">{</span><span class="s">'n'</span><span class="p">:</span> <span class="n">core</span><span class="o">.</span><span class="n">NumType</span><span class="p">,</span> <span class="s">'s'</span><span class="p">:</span> <span class="n">core</span><span class="o">.</span><span class="n">StrType</span><span class="p">}</span> <span class="k">def</span> <span class="nf">get_type_map_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">col</span><span class="p">):</span> <span class="k">return</span> <span class="n">col</span><span class="o">.</span><span class="n">raw_type</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">def</span> <span class="nf">get_cols</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lines</span><span class="p">):</span> <span class="sd">"""Initialize the header Column objects from the table ``lines``.</span> <span class="sd"> This is a specialized get_cols for the RDB type:</span> <span class="sd"> Line 0: RDB col names</span> <span class="sd"> Line 1: RDB col definitions</span> <span class="sd"> Line 2+: RDB data rows</span> <span class="sd"> :param lines: list of table lines</span> <span class="sd"> :returns: None</span> <span class="sd"> """</span> <span class="n">header_lines</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">process_lines</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="c"># this is a generator</span> <span class="n">header_vals_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">hl</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">hl</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">splitter</span><span class="p">(</span><span class="n">header_lines</span><span class="p">))]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">header_vals_list</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'RDB header requires 2 lines'</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">,</span> <span class="n">raw_types</span> <span class="o">=</span> <span class="n">header_vals_list</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_types</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'RDB header mismatch between number of column names and column types'</span><span class="p">)</span> <span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="s">r'\d*(N|S)$'</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">IGNORECASE</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">raw_types</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'RDB types definitions do not all match [num](N|S): </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">raw_types</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_cols_from_names</span><span class="p">()</span> <span class="k">for</span> <span class="n">col</span><span class="p">,</span> <span class="n">raw_type</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cols</span><span class="p">,</span> <span class="n">raw_types</span><span class="p">):</span> <span class="n">col</span><span class="o">.</span><span class="n">raw_type</span> <span class="o">=</span> <span class="n">raw_type</span> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_col_type</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lines</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="bp">self</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">x</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cols</span><span class="p">]))</span> <span class="n">rdb_types</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cols</span><span class="p">:</span> <span class="c"># Check if dtype.kind is string or unicode. See help(np.core.numerictypes)</span> <span class="n">rdb_type</span> <span class="o">=</span> <span class="s">'S'</span> <span class="k">if</span> <span class="n">col</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'S'</span><span class="p">,</span> <span class="s">'U'</span><span class="p">)</span> <span class="k">else</span> <span class="s">'N'</span> <span class="n">rdb_types</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rdb_type</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="bp">self</span><span class="o">.</span><span class="n">splitter</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">rdb_types</span><span class="p">))</span> </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>