Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 82fd441cd3f2a8bc33fc3ed41403eced > files > 1492

python-astropy-0.2.4-4.mga4.x86_64.rpm


<!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.exceptions &mdash; 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>
	 &raquo;
      </li>
      <li><a href="../../../index.html" accesskey="U">Module code</a> &raquo;</li>
      
       
    </ul>
</div>
  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <h1>Source code for astropy.io.votable.exceptions</h1><div class="highlight"><pre>
<span class="c"># Licensed under a 3-clause BSD style license - see LICENSE.rst</span>
<span class="c"># -*- coding: utf-8 -*-</span>
<span class="sd">u&quot;&quot;&quot;</span>
<span class="sd">.. _warnings:</span>

<span class="sd">Warnings</span>
<span class="sd">--------</span>

<span class="sd">.. note::</span>
<span class="sd">    Most of the following warnings indicate violations of the VOTable</span>
<span class="sd">    specification.  They should be reported to the authors of the</span>
<span class="sd">    tools that produced the VOTable file.</span>

<span class="sd">    To control the warnings emitted, use the standard Python</span>
<span class="sd">    :mod:`warnings` module.  Most of these are of the type</span>
<span class="sd">    `VOTableSpecWarning`.</span>

<span class="sd">{warnings}</span>

<span class="sd">.. _exceptions:</span>

<span class="sd">Exceptions</span>
<span class="sd">----------</span>

<span class="sd">.. note::</span>

<span class="sd">    This is a list of many of the fatal exceptions emitted by vo.table</span>
<span class="sd">    when the file does not conform to spec.  Other exceptions may be</span>
<span class="sd">    raised due to unforeseen cases or bugs in vo.table itself.</span>

<span class="sd">{exceptions}</span>
<span class="sd">&quot;&quot;&quot;</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">re</span>
<span class="kn">from</span> <span class="nn">warnings</span> <span class="kn">import</span> <span class="n">warn</span>

<span class="c"># LOCAL</span>
<span class="kn">from</span> <span class="nn">.util</span> <span class="kn">import</span> <span class="n">IS_PY3K</span>


<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span>
    <span class="s">&#39;warn_or_raise&#39;</span><span class="p">,</span> <span class="s">&#39;vo_raise&#39;</span><span class="p">,</span> <span class="s">&#39;vo_reraise&#39;</span><span class="p">,</span> <span class="s">&#39;vo_warn&#39;</span><span class="p">,</span>
    <span class="s">&#39;warn_unknown_attrs&#39;</span><span class="p">,</span> <span class="s">&#39;parse_vowarning&#39;</span><span class="p">,</span> <span class="s">&#39;VOWarning&#39;</span><span class="p">,</span>
    <span class="s">&#39;VOTableChangeWarning&#39;</span><span class="p">,</span> <span class="s">&#39;VOTableSpecWarning&#39;</span><span class="p">,</span>
    <span class="s">&#39;UnimplementedWarning&#39;</span><span class="p">,</span> <span class="s">&#39;IOWarning&#39;</span><span class="p">,</span> <span class="s">&#39;VOTableSpecError&#39;</span><span class="p">]</span>


<span class="n">MAX_WARNINGS</span> <span class="o">=</span> <span class="mi">10</span>


<span class="k">def</span> <span class="nf">_format_message</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">config</span><span class="o">=</span><span class="p">{},</span> <span class="n">pos</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">pos</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
        <span class="n">pos</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;?&#39;</span><span class="p">,</span> <span class="s">&#39;?&#39;</span><span class="p">)</span>
    <span class="n">filename</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;filename&#39;</span><span class="p">,</span> <span class="s">&#39;?&#39;</span><span class="p">)</span>
    <span class="k">return</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">:</span><span class="si">%s</span><span class="s">:</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">pos</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pos</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">name</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">_suppressed_warning</span><span class="p">(</span><span class="n">warning</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
    <span class="n">warning_class</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">warning</span><span class="p">)</span>
    <span class="n">config</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s">&#39;_warning_counts&#39;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">warning_class</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
    <span class="n">config</span><span class="p">[</span><span class="s">&#39;_warning_counts&#39;</span><span class="p">][</span><span class="n">warning_class</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
    <span class="n">message_count</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s">&#39;_warning_counts&#39;</span><span class="p">][</span><span class="n">warning_class</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">message_count</span> <span class="o">&lt;=</span> <span class="n">MAX_WARNINGS</span><span class="p">:</span>
        <span class="k">if</span> <span class="n">message_count</span> <span class="o">==</span> <span class="n">MAX_WARNINGS</span><span class="p">:</span>
            <span class="n">warning</span><span class="o">.</span><span class="n">formatted_message</span> <span class="o">+=</span> \
                <span class="s">&#39; (suppressing further warnings of this type...)&#39;</span>
        <span class="n">warn</span><span class="p">(</span><span class="n">warning</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="n">stacklevel</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>


<div class="viewcode-block" id="warn_or_raise"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.warn_or_raise">[docs]</a><span class="k">def</span> <span class="nf">warn_or_raise</span><span class="p">(</span><span class="n">warning_class</span><span class="p">,</span> <span class="n">exception_class</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(),</span> <span class="n">config</span><span class="o">=</span><span class="p">{},</span>
                  <span class="n">pos</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Warn or raise an exception, depending on the pedantic setting.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;pedantic&#39;</span><span class="p">):</span>
        <span class="k">if</span> <span class="n">exception_class</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
            <span class="n">exception_class</span> <span class="o">=</span> <span class="n">warning_class</span>
        <span class="n">vo_raise</span><span class="p">(</span><span class="n">exception_class</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">vo_warn</span><span class="p">(</span><span class="n">warning_class</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="n">stacklevel</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>

</div>
<div class="viewcode-block" id="vo_raise"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.vo_raise">[docs]</a><span class="k">def</span> <span class="nf">vo_raise</span><span class="p">(</span><span class="n">exception_class</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(),</span> <span class="n">config</span><span class="o">=</span><span class="p">{},</span> <span class="n">pos</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Raise an exception, with proper position information if available.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">raise</span> <span class="n">exception_class</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">)</span>

</div>
<div class="viewcode-block" id="vo_reraise"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.vo_reraise">[docs]</a><span class="k">def</span> <span class="nf">vo_reraise</span><span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">config</span><span class="o">=</span><span class="p">{},</span> <span class="n">pos</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">additional</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Raise an exception, with proper position information if available.</span>

<span class="sd">    Restores the original traceback of the exception, and should only</span>
<span class="sd">    be called within an &quot;except:&quot; block of code.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">message</span> <span class="o">=</span> <span class="n">_format_message</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">),</span> <span class="n">exc</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]:</span>
        <span class="n">message</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">additional</span><span class="p">):</span>
        <span class="n">message</span> <span class="o">+=</span> <span class="s">&#39; &#39;</span> <span class="o">+</span> <span class="n">additional</span>
    <span class="n">exc</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">message</span><span class="p">,)</span>
    <span class="k">raise</span> <span class="n">exc</span>

</div>
<div class="viewcode-block" id="vo_warn"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.vo_warn">[docs]</a><span class="k">def</span> <span class="nf">vo_warn</span><span class="p">(</span><span class="n">warning_class</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(),</span> <span class="n">config</span><span class="o">=</span><span class="p">{},</span> <span class="n">pos</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Warn, with proper position information if available.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">warning</span> <span class="o">=</span> <span class="n">warning_class</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">)</span>
    <span class="n">_suppressed_warning</span><span class="p">(</span><span class="n">warning</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="n">stacklevel</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>

</div>
<span class="k">def</span> <span class="nf">warn_unknown_attrs</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">attrs</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">good_attr</span><span class="o">=</span><span class="p">[],</span> <span class="n">stacklevel</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
        <span class="k">if</span> <span class="n">attr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">good_attr</span><span class="p">:</span>
            <span class="n">vo_warn</span><span class="p">(</span><span class="n">W48</span><span class="p">,</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">element</span><span class="p">),</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">stacklevel</span><span class="o">=</span><span class="n">stacklevel</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>


<span class="n">_warning_pat</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="p">(</span><span class="s">r&quot;:?(?P&lt;nline&gt;[0-9?]+):(?P&lt;nchar&gt;[0-9?]+): &quot;</span> <span class="o">+</span>
     <span class="s">r&quot;((?P&lt;warning&gt;[WE]\d+): )?(?P&lt;rest&gt;.*)$&quot;</span><span class="p">))</span>


<div class="viewcode-block" id="parse_vowarning"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.parse_vowarning">[docs]</a><span class="k">def</span> <span class="nf">parse_vowarning</span><span class="p">(</span><span class="n">line</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Parses the vo warning string back into its parts.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
    <span class="n">match</span> <span class="o">=</span> <span class="n">_warning_pat</span><span class="o">.</span><span class="n">search</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="n">result</span><span class="p">[</span><span class="s">&#39;warning&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">warning</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s">&#39;warning&#39;</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">warning</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_warning&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">warning</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;W&#39;</span><span class="p">)</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_exception&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_warning&#39;</span><span class="p">]</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;number&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s">&#39;warning&#39;</span><span class="p">)[</span><span class="mi">1</span><span class="p">:])</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;doc_url&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&quot;io/votable/api_exceptions.html#{0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
                <span class="n">warning</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_warning&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_exception&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_other&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;number&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
            <span class="n">result</span><span class="p">[</span><span class="s">&#39;doc_url&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;nline&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s">&#39;nline&#39;</span><span class="p">))</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;nchar&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s">&#39;nchar&#39;</span><span class="p">))</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;message&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s">&#39;rest&#39;</span><span class="p">)</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_something&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;warning&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">None</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_warning&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_exception&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_other&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;is_something&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
        <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
            <span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf-8&#39;</span><span class="p">)</span>
        <span class="n">result</span><span class="p">[</span><span class="s">&#39;message&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">line</span>

    <span class="k">return</span> <span class="n">result</span>

</div>
<div class="viewcode-block" id="VOWarning"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.VOWarning">[docs]</a><span class="k">class</span> <span class="nc">VOWarning</span><span class="p">(</span><span class="ne">Warning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The base class of all VO warnings and exceptions.</span>

<span class="sd">    Handles the formatting of the message with a warning or exception</span>
<span class="sd">    code, filename, line and column number.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">()</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">args</span><span class="p">,</span> <span class="n">config</span><span class="o">=</span><span class="p">{},</span> <span class="n">pos</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
        <span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">message</span> <span class="o">%</span> <span class="n">args</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">formatted_message</span> <span class="o">=</span> <span class="n">_format_message</span><span class="p">(</span>
            <span class="n">msg</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">config</span><span class="p">,</span> <span class="n">pos</span><span class="p">)</span>
        <span class="ne">Warning</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">formatted_message</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">formatted_message</span>

    <span class="nd">@classmethod</span>
    <span class="k">def</span> <span class="nf">get_short_name</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">default_args</span><span class="p">):</span>
            <span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">message</span> <span class="o">%</span> <span class="n">cls</span><span class="o">.</span><span class="n">default_args</span>
        <span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">message</span>

</div>
<div class="viewcode-block" id="VOTableChangeWarning"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.VOTableChangeWarning">[docs]</a><span class="k">class</span> <span class="nc">VOTableChangeWarning</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">SyntaxWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A change has been made to the input XML file.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">pass</span>

</div>
<div class="viewcode-block" id="VOTableSpecWarning"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.VOTableSpecWarning">[docs]</a><span class="k">class</span> <span class="nc">VOTableSpecWarning</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">SyntaxWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The input XML file violates the spec, but there is an obvious workaround.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">pass</span>

</div>
<div class="viewcode-block" id="UnimplementedWarning"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.UnimplementedWarning">[docs]</a><span class="k">class</span> <span class="nc">UnimplementedWarning</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">SyntaxWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A feature of the VOTABLE_ spec is not implemented.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">pass</span>

</div>
<div class="viewcode-block" id="IOWarning"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.IOWarning">[docs]</a><span class="k">class</span> <span class="nc">IOWarning</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A network or IO error occurred, but was recovered using the cache.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">pass</span>

</div>
<div class="viewcode-block" id="VOTableSpecError"><a class="viewcode-back" href="../../../../io/votable/api_exceptions.html#astropy.io.votable.exceptions.VOTableSpecError">[docs]</a><span class="k">class</span> <span class="nc">VOTableSpecError</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The input XML file violates the spec and there is no good workaround.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">pass</span>

</div>
<span class="k">class</span> <span class="nc">W01</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The VOTable spec states:</span>

<span class="sd">        If a cell contains an array or complex number, it should be</span>
<span class="sd">        encoded as multiple numbers separated by whitespace.</span>

<span class="sd">    Many VOTable files in the wild use commas as a separator instead,</span>
<span class="sd">    and ``vo.table`` supports this convention when not in</span>
<span class="sd">    :ref:`pedantic-mode`.</span>

<span class="sd">    `vo.table` always outputs files using only spaces, regardless of</span>
<span class="sd">    how they were input.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#toc-header-35&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:TABLEDATA&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Array uses commas rather than whitespace&quot;</span>


<span class="k">class</span> <span class="nc">W02</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    XML ids must match the following regular expression::</span>

<span class="sd">        ^[A-Za-z_][A-Za-z0-9_\.\-]*$</span>

<span class="sd">    The VOTable 1.1 says the following:</span>

<span class="sd">        According to the XML standard, the attribute ``ID`` is a</span>
<span class="sd">        string beginning with a letter or underscore (``_``), followed</span>
<span class="sd">        by a sequence of letters, digits, or any of the punctuation</span>
<span class="sd">        characters ``.`` (dot), ``-`` (dash), ``_`` (underscore), or</span>
<span class="sd">        ``:`` (colon).</span>

<span class="sd">    However, this is in conflict with the XML standard, which says</span>
<span class="sd">    colons may not be used.  VOTable 1.1&#39;s own schema does not allow a</span>
<span class="sd">    colon here.  Therefore, ``vo.table`` disallows the colon.</span>

<span class="sd">    VOTable 1.2 corrects this error in the specification.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `XML Names &lt;http://www.w3.org/TR/REC-xml/#NT-Name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> attribute &#39;</span><span class="si">%s</span><span class="s">&#39; is invalid.  Must be a standard XML id&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W03</span><span class="p">(</span><span class="n">VOTableChangeWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The VOTable 1.1 spec says the following about ``name`` vs. ``ID``</span>
<span class="sd">    on ``FIELD`` and ``VALUE`` elements:</span>

<span class="sd">        ``ID`` and ``name`` attributes have a different role in</span>
<span class="sd">        VOTable: the ``ID`` is meant as a *unique identifier* of an</span>
<span class="sd">        element seen as a VOTable component, while the ``name`` is</span>
<span class="sd">        meant for presentation purposes, and need not to be unique</span>
<span class="sd">        throughout the VOTable document. The ``ID`` attribute is</span>
<span class="sd">        therefore required in the elements which have to be</span>
<span class="sd">        referenced, but in principle any element may have an ``ID``</span>
<span class="sd">        attribute. ... In summary, the ``ID`` is different from the</span>
<span class="sd">        ``name`` attribute in that (a) the ``ID`` attribute is made</span>
<span class="sd">        from a restricted character set, and must be unique throughout</span>
<span class="sd">        a VOTable document whereas names are standard XML attributes</span>
<span class="sd">        and need not be unique; and (b) there should be support in the</span>
<span class="sd">        parsing software to look up references and extract the</span>
<span class="sd">        relevant element with matching ``ID``.</span>

<span class="sd">    It is further recommended in the VOTable 1.2 spec:</span>

<span class="sd">        While the ``ID`` attribute has to be unique in a VOTable</span>
<span class="sd">        document, the ``name`` attribute need not. It is however</span>
<span class="sd">        recommended, as a good practice, to assign unique names within</span>
<span class="sd">        a ``TABLE`` element. This recommendation means that, between a</span>
<span class="sd">        ``TABLE`` and its corresponding closing ``TABLE`` tag,</span>
<span class="sd">        ``name`` attributes of ``FIELD``, ``PARAM`` and optional</span>
<span class="sd">        ``GROUP`` elements should be all different.</span>

<span class="sd">    Since ``vo.table`` requires a unique identifier for each of its</span>
<span class="sd">    columns, ``ID`` is used for the column name when present.</span>
<span class="sd">    However, when ``ID`` is not present, (since it is not required by</span>
<span class="sd">    the specification) ``name`` is used instead.  However, ``name``</span>
<span class="sd">    must be cleansed by replacing invalid characters (such as</span>
<span class="sd">    whitespace) with underscores.</span>

<span class="sd">    .. note::</span>
<span class="sd">        This warning does not indicate that the input file is invalid</span>
<span class="sd">        with respect to the VOTable specification, only that the</span>
<span class="sd">        column names in the record array may not match exactly the</span>
<span class="sd">        ``name`` attributes specified in the file.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Implictly generating an ID from a name &#39;</span><span class="si">%s</span><span class="s">&#39; -&gt; &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W04</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``content-type`` attribute must use MIME content-type syntax as</span>
<span class="sd">    defined in `RFC 2046 &lt;http://tools.ietf.org/html/rfc2046&gt;`__.</span>

<span class="sd">    The current check for validity is somewhat over-permissive.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:link&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:link&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;content-type &#39;</span><span class="si">%s</span><span class="s">&#39; must be a valid MIME content type&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W05</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The attribute must be a valid URI as defined in `RFC 2396</span>
<span class="sd">    &lt;http://www.ietf.org/rfc/rfc2396.txt&gt;`_.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not a valid URI&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W06</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    This warning is emitted when a ``ucd`` attribute does not match</span>
<span class="sd">    the syntax of a `unified content descriptor</span>
<span class="sd">    &lt;http://vizier.u-strasbg.fr/doc/UCD.htx&gt;`__.</span>

<span class="sd">    If the VOTable version is 1.2 or later, the UCD will also be</span>
<span class="sd">    checked to ensure it conforms to the controlled vocabulary defined</span>
<span class="sd">    by UCD1+.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:ucd&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:ucd&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid UCD &#39;</span><span class="si">%s</span><span class="s">&#39;: </span><span class="si">%s</span><span class="s">&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;explanation&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W07</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    As astro year field is a Besselian or Julian year matching the</span>
<span class="sd">    regular expression::</span>

<span class="sd">        ^[JB]?[0-9]+([.][0-9]*)?$</span>

<span class="sd">    Defined in this XML Schema snippet::</span>

<span class="sd">        &lt;xs:simpleType  name=&quot;astroYear&quot;&gt;</span>
<span class="sd">          &lt;xs:restriction base=&quot;xs:token&quot;&gt;</span>
<span class="sd">            &lt;xs:pattern  value=&quot;[JB]?[0-9]+([.][0-9]*)?&quot;/&gt;</span>
<span class="sd">          &lt;/xs:restriction&gt;</span>
<span class="sd">        &lt;/xs:simpleType&gt;</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid astroYear in </span><span class="si">%s</span><span class="s">: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W08</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    To avoid local-dependent number parsing differences, ``vo.table``</span>
<span class="sd">    may require a string or unicode string where a numeric type may</span>
<span class="sd">    make more sense.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="k">if</span> <span class="n">IS_PY3K</span><span class="p">:</span>
        <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; must be a str or bytes object&quot;</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; must be a str or unicode object&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W09</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The VOTable specification uses the attribute name ``ID`` (with</span>
<span class="sd">    uppercase letters) to specify unique identifiers.  Some</span>
<span class="sd">    VOTable-producing tools use the more standard lowercase ``id``</span>
<span class="sd">    instead.  ``vo.table`` accepts ``id`` and emits this warning when</span>
<span class="sd">    not in ``pedantic`` mode.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;ID attribute not capitalized&quot;</span>


<span class="k">class</span> <span class="nc">W10</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The parser has encountered an element that does not exist in the</span>
<span class="sd">    specification, or appears in an invalid context.  Check the file</span>
<span class="sd">    against the VOTable schema (with a tool such as `xmllint</span>
<span class="sd">    &lt;http://xmlsoft.org/xmllint.html&gt;`__.  If the file validates</span>
<span class="sd">    against the schema, and you still receive this warning, this may</span>
<span class="sd">    indicate a bug in ``vo.table``.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unknown tag &#39;</span><span class="si">%s</span><span class="s">&#39;.  Ignoring&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W11</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Earlier versions of the VOTable specification used a ``gref``</span>
<span class="sd">    attribute on the ``LINK`` element to specify a `GLU reference</span>
<span class="sd">    &lt;http://aladin.u-strasbg.fr/glu/&gt;`__.  New files should</span>
<span class="sd">    specify a ``glu:`` protocol using the ``href`` attribute.</span>

<span class="sd">    Since ``vo.table`` does not currently support GLU references, it</span>
<span class="sd">    likewise does not automatically convert the ``gref`` attribute to</span>
<span class="sd">    the new form.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:link&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:link&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;The gref attribute on LINK is deprecated in VOTable 1.1&quot;</span>


<span class="k">class</span> <span class="nc">W12</span><span class="p">(</span><span class="n">VOTableChangeWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    In order to name the columns of the Numpy record array, each</span>
<span class="sd">    ``FIELD`` element must have either an ``ID`` or ``name`` attribute</span>
<span class="sd">    to derive a name from.  Strictly speaking, according to the</span>
<span class="sd">    VOTable schema, the ``name`` attribute is required.  However, if</span>
<span class="sd">    ``name`` is not present by ``ID`` is, and *pedantic mode* is off,</span>
<span class="sd">    ``vo.table`` will continue without a ``name`` defined.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="p">(</span>
        <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; element must have at least one of &#39;ID&#39; or &#39;name&#39; attributes&quot;</span><span class="p">)</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W13</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Some VOTable files in the wild use non-standard datatype names.  These</span>
<span class="sd">    are mapped to standard ones using the following mapping::</span>

<span class="sd">       string        -&gt; char</span>
<span class="sd">       unicodeString -&gt; unicodeChar</span>
<span class="sd">       int16         -&gt; short</span>
<span class="sd">       int32         -&gt; int</span>
<span class="sd">       int64         -&gt; long</span>
<span class="sd">       float32       -&gt; float</span>
<span class="sd">       float64       -&gt; double</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not a valid VOTable datatype, should be &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="c"># W14: Deprecated</span>


<span class="k">class</span> <span class="nc">W15</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``name`` attribute is required on every ``FIELD`` element.</span>
<span class="sd">    However, many VOTable files in the wild omit it and provide only</span>
<span class="sd">    an ``ID`` instead.  In this case, when *pedantic mode* is off,</span>
<span class="sd">    ``vo.table`` will copy the ``name`` attribute to a new ``ID``</span>
<span class="sd">    attribute.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> element missing required &#39;name&#39; attribute&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>

<span class="c"># W16: Deprecated</span>


<span class="k">class</span> <span class="nc">W17</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A ``DESCRIPTION`` element can only appear once within its parent</span>
<span class="sd">    element.</span>

<span class="sd">    According to the schema, it may only occur once (`1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58&gt;`__)</span>

<span class="sd">    However, it is a `proposed extension</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:addesc&gt;`__</span>
<span class="sd">    to VOTable 1.2.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> element contains more than one DESCRIPTION element&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W18</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The number of rows explicitly specified in the ``nrows`` attribute</span>
<span class="sd">    does not match the actual number of rows (``TR`` elements) present</span>
<span class="sd">    in the ``TABLE``.  This may indicate truncation of the file, or an</span>
<span class="sd">    internal error in the tool that produced it.  If *pedantic mode*</span>
<span class="sd">    is off, parsing will proceed, with the loss of some performance.</span>

<span class="sd">    **References:** `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC10&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC10&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&#39;TABLE specified nrows=</span><span class="si">%s</span><span class="s">, but table contains </span><span class="si">%s</span><span class="s"> rows&#39;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W19</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The column fields as defined using ``FIELD`` elements do not match</span>
<span class="sd">    those in the headers of the embedded FITS file.  If *pedantic</span>
<span class="sd">    mode* is off, the embedded FITS file will take precedence.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="p">(</span>
        <span class="s">&#39;The fields defined in the VOTable do not match those in the &#39;</span> <span class="o">+</span>
        <span class="s">&#39;embedded FITS file&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W20</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    If no version number is explicitly given in the VOTable file, the</span>
<span class="sd">    parser assumes it is written to the VOTable 1.1 specification.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&#39;No version number specified in file.  Assuming </span><span class="si">%s</span><span class="s">&#39;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;1.1&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W21</span><span class="p">(</span><span class="n">UnimplementedWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Unknown issues may arise using ``vo.table`` with VOTable files</span>
<span class="sd">    from a version other than 1.1 or 1.2.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="p">(</span>
        <span class="s">&#39;vo.table is designed for VOTable version 1.1 and 1.2, but &#39;</span> <span class="o">+</span>
        <span class="s">&#39;this file is </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">)</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W22</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Version 1.0 of the VOTable specification used the ``DEFINITIONS``</span>
<span class="sd">    element to define coordinate systems.  Version 1.1 now uses</span>
<span class="sd">    ``COOSYS`` elements throughout the document.</span>

<span class="sd">    **References:** `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:definitions&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:definitions&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&#39;The DEFINITIONS element is deprecated in VOTable 1.1.  Ignoring&#39;</span>


<span class="k">class</span> <span class="nc">W23</span><span class="p">(</span><span class="n">IOWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Raised when the VO service database can not be updated (possibly</span>
<span class="sd">    due to a network outage).  This is only a warning, since an older</span>
<span class="sd">    and possible out-of-date VO service database was available</span>
<span class="sd">    locally.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unable to update service information for &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W24</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">FutureWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The VO catalog database retrieved from the www is designed for a</span>
<span class="sd">    newer version of vo.table.  This may cause problems or limited</span>
<span class="sd">    features performing service queries.  Consider upgrading vo.table</span>
<span class="sd">    to the latest version.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;The VO catalog database is for a later version of vo.table&quot;</span>


<span class="k">class</span> <span class="nc">W25</span><span class="p">(</span><span class="n">IOWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A VO service query failed due to a network error or malformed</span>
<span class="sd">    arguments.  Another alternative service may be attempted.  If all</span>
<span class="sd">    services fail, an exception will be raised.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; failed with: </span><span class="si">%s</span><span class="s">&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;service&#39;</span><span class="p">,</span> <span class="s">&#39;...&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W26</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The given element was not supported inside of the given element</span>
<span class="sd">    until the specified VOTable version, however the version declared</span>
<span class="sd">    in the file is for an earlier version.  These attributes may not</span>
<span class="sd">    be written out to the file.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; inside &#39;</span><span class="si">%s</span><span class="s">&#39; added in VOTable </span><span class="si">%s</span><span class="s">&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;child&#39;</span><span class="p">,</span> <span class="s">&#39;parent&#39;</span><span class="p">,</span> <span class="s">&#39;X.X&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W27</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``COOSYS`` element was deprecated in VOTABLE version 1.2 in</span>
<span class="sd">    favor of a reference to the Space-Time Coordinate (STC) data</span>
<span class="sd">    model (see `utype</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:utype&gt;`__</span>
<span class="sd">    and the IVOA note `referencing STC in VOTable</span>
<span class="sd">    &lt;http://ivoa.net/Documents/latest/VOTableSTC.html&gt;`__.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;COOSYS deprecated in VOTable 1.2&quot;</span>


<span class="k">class</span> <span class="nc">W28</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The given attribute was not supported on the given element until the</span>
<span class="sd">    specified VOTable version, however the version declared in the file is</span>
<span class="sd">    for an earlier version.  These attributes may not be written out to</span>
<span class="sd">    the file.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; on &#39;</span><span class="si">%s</span><span class="s">&#39; added in VOTable </span><span class="si">%s</span><span class="s">&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;attribute&#39;</span><span class="p">,</span> <span class="s">&#39;element&#39;</span><span class="p">,</span> <span class="s">&#39;X.X&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W29</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Some VOTable files specify their version number in the form &quot;v1.0&quot;,</span>
<span class="sd">    when the only supported forms in the spec are &quot;1.0&quot;.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Version specified in non-standard form &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;v1.0&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W30</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Some VOTable files write missing floating-point values in non-standard</span>
<span class="sd">    ways, such as &quot;null&quot; and &quot;-&quot;.  In non-pedantic mode, any non-standard</span>
<span class="sd">    floating-point literals are treated as missing values.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid literal for float &#39;</span><span class="si">%s</span><span class="s">&#39;.  Treating as empty.&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W31</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Since NaN&#39;s can not be represented in integer fields directly, a null</span>
<span class="sd">    value must be specified in the FIELD descriptor to support reading</span>
<span class="sd">    NaN&#39;s from the tabledata.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;NaN given in an integral field without a specified null value&quot;</span>


<span class="k">class</span> <span class="nc">W32</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Each field in a table must have a unique ID.  If two or more fields</span>
<span class="sd">    have the same ID, some will be renamed to ensure that all IDs are</span>
<span class="sd">    unique.</span>

<span class="sd">    From the VOTable 1.2 spec:</span>

<span class="sd">        The ``ID`` and ``ref`` attributes are defined as XML types</span>
<span class="sd">        ``ID`` and ``IDREF`` respectively. This means that the</span>
<span class="sd">        contents of ``ID`` is an identifier which must be unique</span>
<span class="sd">        throughout a VOTable document, and that the contents of the</span>
<span class="sd">        ``ref`` attribute represents a reference to an identifier</span>
<span class="sd">        which must exist in the VOTable document.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Duplicate ID &#39;</span><span class="si">%s</span><span class="s">&#39; renamed to &#39;</span><span class="si">%s</span><span class="s">&#39; to ensure uniqueness&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;x_2&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W33</span><span class="p">(</span><span class="n">VOTableChangeWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Each field in a table must have a unique name.  If two or more</span>
<span class="sd">    fields have the same name, some will be renamed to ensure that all</span>
<span class="sd">    names are unique.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Column name &#39;</span><span class="si">%s</span><span class="s">&#39; renamed to &#39;</span><span class="si">%s</span><span class="s">&#39; to ensure uniqueness&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;x_2&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W34</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The attribute requires the value to be a valid XML token, as</span>
<span class="sd">    defined by `XML 1.0</span>
<span class="sd">    &lt;http://www.w3.org/TR/2000/WD-xml-2e-20000814#NT-Nmtoken&gt;`__.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is an invalid token for attribute &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W35</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``name`` and ``value`` attributes are required on all ``INFO``</span>
<span class="sd">    elements.</span>

<span class="sd">    **References:** `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC32&gt;`</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; attribute required for INFO elements&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W36</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    If the field specifies a ``null`` value, that value must conform</span>
<span class="sd">    to the given ``datatype``.</span>

<span class="sd">    **References:** `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:values&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:values&gt;`</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;null value &#39;</span><span class="si">%s</span><span class="s">&#39; does not match field datatype, setting to 0&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W37</span><span class="p">(</span><span class="n">UnimplementedWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The 3 datatypes defined in the VOTable specification and supported by</span>
<span class="sd">    vo.table are ``TABLEDATA``, ``BINARY`` and ``FITS``.</span>

<span class="sd">    **References:** `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:data&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:data&gt;`</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unsupported data format &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W38</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The only encoding for local binary data supported by the VOTable</span>
<span class="sd">    specification is base64.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Inline binary data must be base64 encoded, got &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W39</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Bit values do not support masking.  This warning is raised upon</span>
<span class="sd">    setting masked data in a bit column.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Bit values can not be masked&quot;</span>


<span class="k">class</span> <span class="nc">W40</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    This is a terrible hack to support Simple Image Access Protocol</span>
<span class="sd">    results from `&lt;archive.noao.edu&gt;`__.  It creates a field for the</span>
<span class="sd">    coordinate projection type of type &quot;double&quot;, which</span>
<span class="sd">    actually contains character data.  We have to hack the field</span>
<span class="sd">    to store character data, or we can&#39;t read it in.  A warning</span>
<span class="sd">    will be raised when this happens.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;cprojection&#39; datatype repaired&quot;</span>


<span class="k">class</span> <span class="nc">W41</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    An XML namespace was specified on the ``VOTABLE`` element, but the</span>
<span class="sd">    namespace does not match what is expected for a ``VOTABLE`` file.</span>

<span class="sd">    The ``VOTABLE`` namespace is::</span>

<span class="sd">      http://www.ivoa.net/xml/VOTable/vX.X</span>

<span class="sd">    where &quot;X.X&quot; is the version number.</span>

<span class="sd">    Some files in the wild set the namespace to the location of the</span>
<span class="sd">    VOTable schema, which is not correct and will not pass some</span>
<span class="sd">    validating parsers.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="p">(</span>
        <span class="s">&quot;An XML namespace is specified, but is incorrect.  Expected &quot;</span> <span class="o">+</span>
        <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39;, got &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span><span class="p">)</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W42</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The root element should specify a namespace.</span>

<span class="sd">    The ``VOTABLE`` namespace is::</span>

<span class="sd">        http://www.ivoa.net/xml/VOTable/vX.X</span>

<span class="sd">    where &quot;X.X&quot; is the version number.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;No XML namespace specified&quot;</span>


<span class="k">class</span> <span class="nc">W43</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Referenced elements should be defined before referees.  From the</span>
<span class="sd">    VOTable 1.2 spec:</span>

<span class="sd">       In VOTable1.2, it is further recommended to place the ID</span>
<span class="sd">       attribute prior to referencing it whenever possible.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> ref=&#39;</span><span class="si">%s</span><span class="s">&#39; which has not already been defined&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;element&#39;</span><span class="p">,</span> <span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W44</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    ``VALUES`` elements that reference another element should not have</span>
<span class="sd">    their own content.</span>

<span class="sd">    From the VOTable 1.2 spec:</span>

<span class="sd">        The ``ref`` attribute of a ``VALUES`` element can be used to</span>
<span class="sd">        avoid a repetition of the domain definition, by referring to a</span>
<span class="sd">        previously defined ``VALUES`` element having the referenced</span>
<span class="sd">        ``ID`` attribute. When specified, the ``ref`` attribute</span>
<span class="sd">        defines completely the domain without any other element or</span>
<span class="sd">        attribute, as e.g. ``&lt;VALUES ref=&quot;RAdomain&quot;/&gt;``</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;VALUES element with ref attribute has content (&#39;</span><span class="si">%s</span><span class="s">&#39;)&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;element&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W45</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``content-role`` attribute on the ``LINK`` element must be one of</span>
<span class="sd">    the following::</span>

<span class="sd">        query, hints, doc, location</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;content-role attribute &#39;</span><span class="si">%s</span><span class="s">&#39; invalid&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W46</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The given char or unicode string is too long for the specified</span>
<span class="sd">    field length.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> value is too long for specified length of </span><span class="si">%s</span><span class="s">&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;char or unicode&#39;</span><span class="p">,</span> <span class="s">&#39;x&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W47</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    If no arraysize is specified on a char field, the default of &#39;1&#39;</span>
<span class="sd">    is implied, but this is rarely what is intended.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Missing arraysize indicates length 1&quot;</span>


<span class="k">class</span> <span class="nc">W48</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The attribute is not defined in the specification.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unknown attribute &#39;</span><span class="si">%s</span><span class="s">&#39; on </span><span class="si">%s</span><span class="s">&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;attribute&#39;</span><span class="p">,</span> <span class="s">&#39;element&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">W49</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Empty cell illegal for integer fields.</span>

<span class="sd">    If a \&quot;null\&quot; value was specified for the cell, it will be used</span>
<span class="sd">    for the value, otherwise, 0 will be used.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Empty cell illegal for integer fields.&quot;</span>


<span class="k">class</span> <span class="nc">W50</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Invalid unit string as defined in the `Standards for Astronomical</span>
<span class="sd">    Catalogues, Version 2.0</span>
<span class="sd">    &lt;http://cdsarc.u-strasbg.fr/doc/catstd-3.2.htx&gt;`_.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid unit string &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">W51</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The integer value is out of range for the size of the field.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Value &#39;</span><span class="si">%s</span><span class="s">&#39; is out of range for a </span><span class="si">%s</span><span class="s"> integer field&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;n-bit&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">E01</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The size specifier for a ``char`` or ``unicode`` field must be</span>
<span class="sd">    only a number followed, optionally, by an asterisk.</span>
<span class="sd">    Multi-dimensional size specifiers are not supported for these</span>
<span class="sd">    datatypes.</span>

<span class="sd">    Strings, which are defined as a set of characters, can be</span>
<span class="sd">    represented in VOTable as a fixed- or variable-length array of</span>
<span class="sd">    characters::</span>

<span class="sd">        &lt;FIELD name=&quot;unboundedString&quot; datatype=&quot;char&quot; arraysize=&quot;*&quot;/&gt;</span>

<span class="sd">    A 1D array of strings can be represented as a 2D array of</span>
<span class="sd">    characters, but given the logic above, it is possible to define a</span>
<span class="sd">    variable-length array of fixed-length strings, but not a</span>
<span class="sd">    fixed-length array of variable-length strings.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid size specifier &#39;</span><span class="si">%s</span><span class="s">&#39; for a </span><span class="si">%s</span><span class="s"> field (in field &#39;</span><span class="si">%s</span><span class="s">&#39;)&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;char/unicode&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">E02</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The number of array elements in the data does not match that specified</span>
<span class="sd">    in the FIELD specifier.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="p">(</span>
        <span class="s">&quot;Incorrect number of elements in array. &quot;</span> <span class="o">+</span>
        <span class="s">&quot;Expected multiple of </span><span class="si">%s</span><span class="s">, got </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">)</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">E03</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Complex numbers should be two values separated by whitespace.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; does not parse as a complex number&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E04</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A ``bit`` array should be a string of &#39;0&#39;s and &#39;1&#39;s.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid bit value &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E05</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A ``boolean`` value should be one of the following strings (case</span>
<span class="sd">    insensitive) in the ``TABLEDATA`` format::</span>

<span class="sd">        &#39;TRUE&#39;, &#39;FALSE&#39;, &#39;1&#39;, &#39;0&#39;, &#39;T&#39;, &#39;F&#39;, &#39;\\0&#39;, &#39; &#39;, &#39;?&#39;</span>

<span class="sd">    and in ``BINARY`` format::</span>

<span class="sd">        &#39;T&#39;, &#39;F&#39;, &#39;1&#39;, &#39;0&#39;, &#39;\\0&#39;, &#39; &#39;, &#39;?&#39;</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid boolean value &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E06</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The supported datatypes are::</span>

<span class="sd">        double, float, bit, boolean, unsignedByte, short, int, long,</span>
<span class="sd">        floatComplex, doubleComplex, char, unicodeChar</span>

<span class="sd">    The following non-standard aliases are also supported, but in</span>
<span class="sd">    these case :ref:`W13 &lt;W13&gt;` will be raised::</span>

<span class="sd">        string        -&gt; char</span>
<span class="sd">        unicodeString -&gt; unicodeChar</span>
<span class="sd">        int16         -&gt; short</span>
<span class="sd">        int32         -&gt; int</span>
<span class="sd">        int64         -&gt; long</span>
<span class="sd">        float32       -&gt; float</span>
<span class="sd">        float64       -&gt; double</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unknown datatype &#39;</span><span class="si">%s</span><span class="s">&#39; on field &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>

<span class="c"># E07: Deprecated</span>


<span class="k">class</span> <span class="nc">E08</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``type`` attribute on the ``VALUES`` element must be either</span>
<span class="sd">    ``legal`` or ``actual``.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:values&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:values&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;type must be &#39;legal&#39; or &#39;actual&#39;, but is &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E09</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``MIN``, ``MAX`` and ``OPTION`` elements must always have a</span>
<span class="sd">    ``value`` attribute.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:values&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:values&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; must have a value attribute&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E10</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    From VOTable 1.1 and later, ``FIELD`` and ``PARAM`` elements must have</span>
<span class="sd">    a ``datatype`` field.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#elem:FIELD&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#elem:FIELD&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;&#39;datatype&#39; attribute required on all &#39;</span><span class="si">%s</span><span class="s">&#39; elements&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;FIELD&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E11</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The precision attribute is meant to express the number of significant</span>
<span class="sd">    digits, either as a number of decimal places (e.g. ``precision=&quot;F2&quot;`` or</span>
<span class="sd">    equivalently ``precision=&quot;2&quot;`` to express 2 significant figures</span>
<span class="sd">    after the decimal point), or as a number of significant figures</span>
<span class="sd">    (e.g. ``precision=&quot;E5&quot;`` indicates a relative precision of 10-5).</span>

<span class="sd">    It is validated using the following regular expression::</span>

<span class="sd">        [EF]?[1-9][0-9]*</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:form&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:form&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;precision &#39;</span><span class="si">%s</span><span class="s">&#39; is invalid&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E12</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The width attribute is meant to indicate to the application the</span>
<span class="sd">    number of characters to be used for input or output of the</span>
<span class="sd">    quantity.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:form&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:form&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;width must be a positive integer, got &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E13</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">u&quot;&quot;&quot;</span>
<span class="sd">    From the VOTable 1.2 spec:</span>

<span class="sd">        A table cell can contain an array of a given primitive type,</span>
<span class="sd">        with a fixed or variable number of elements; the array may</span>
<span class="sd">        even be multidimensional. For instance, the position of a</span>
<span class="sd">        point in a 3D space can be defined by the following::</span>

<span class="sd">            &lt;FIELD ID=&quot;point_3D&quot; datatype=&quot;double&quot; arraysize=&quot;3&quot;/&gt;</span>

<span class="sd">        and each cell corresponding to that definition must contain</span>
<span class="sd">        exactly 3 numbers. An asterisk (\*) may be appended to</span>
<span class="sd">        indicate a variable number of elements in the array, as in::</span>

<span class="sd">            &lt;FIELD ID=&quot;values&quot; datatype=&quot;int&quot; arraysize=&quot;100*&quot;/&gt;</span>

<span class="sd">        where it is specified that each cell corresponding to that</span>
<span class="sd">        definition contains 0 to 100 integer numbers. The number may</span>
<span class="sd">        be omitted to specify an unbounded array (in practice up to</span>
<span class="sd">        =~2×10⁹ elements).</span>

<span class="sd">        A table cell can also contain a multidimensional array of a</span>
<span class="sd">        given primitive type. This is specified by a sequence of</span>
<span class="sd">        dimensions separated by the ``x`` character, with the first</span>
<span class="sd">        dimension changing fastest; as in the case of a simple array,</span>
<span class="sd">        the last dimension may be variable in length. As an example,</span>
<span class="sd">        the following definition declares a table cell which may</span>
<span class="sd">        contain a set of up to 10 images, each of 64×64 bytes::</span>

<span class="sd">            &lt;FIELD ID=&quot;thumbs&quot; datatype=&quot;unsignedByte&quot; arraysize=&quot;64×64×10*&quot;/&gt;</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:dim&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:dim&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid arraysize attribute &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E14</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    All ``PARAM`` elements must have a ``value`` attribute.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#elem:FIELD&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#elem:FIELD&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;value attribute is required for all PARAM elements&quot;</span>


<span class="k">class</span> <span class="nc">E15</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    All ``COOSYS`` elements must have an ``ID`` attribute.</span>

<span class="sd">    Note that the VOTable 1.1 specification says this attribute is</span>
<span class="sd">    optional, but its corresponding schema indicates it is required.</span>

<span class="sd">    In VOTable 1.2, the ``COOSYS`` element is deprecated.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;ID attribute is required for all COOSYS elements&quot;</span>


<span class="k">class</span> <span class="nc">E16</span><span class="p">(</span><span class="n">VOTableSpecWarning</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``system`` attribute on the ``COOSYS`` element must be one of the</span>
<span class="sd">    following::</span>

<span class="sd">      &#39;eq_FK4&#39;, &#39;eq_FK5&#39;, &#39;ICRS&#39;, &#39;ecl_FK4&#39;, &#39;ecl_FK5&#39;, &#39;galactic&#39;,</span>
<span class="sd">      &#39;supergalactic&#39;, &#39;xy&#39;, &#39;barycentric&#39;, &#39;geo_app&#39;</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#elem:COOSYS&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Invalid system attribute &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E17</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    ``extnum`` attribute must be a positive integer.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;extnum must be a positive integer&quot;</span>


<span class="k">class</span> <span class="nc">E18</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The ``type`` attribute of the ``RESOURCE`` element must be one of</span>
<span class="sd">    &quot;results&quot; or &quot;meta&quot;.</span>

<span class="sd">    **References**: `1.1</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54&gt;`__,</span>
<span class="sd">    `1.2</span>
<span class="sd">    &lt;http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58&gt;`__</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;type must be &#39;results&#39; or &#39;meta&#39;, not &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E19</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Raised either when the file doesn&#39;t appear to be XML, or the root</span>
<span class="sd">    element is not VOTABLE.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;File does not appear to be a VOTABLE&quot;</span>


<span class="k">class</span> <span class="nc">E20</span><span class="p">(</span><span class="n">VOTableSpecError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The table had only *x* fields defined, but the data itself has more</span>
<span class="sd">    columns than that.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Data has more columns than are defined in the header (</span><span class="si">%s</span><span class="s">)&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,)</span>


<span class="k">class</span> <span class="nc">E21</span><span class="p">(</span><span class="n">VOWarning</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    The table had *x* fields defined, but the data itself has only *y*</span>
<span class="sd">    columns.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Data has fewer columns (</span><span class="si">%s</span><span class="s">) than are defined in the header (</span><span class="si">%s</span><span class="s">)&quot;</span>
    <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;x&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">_get_warning_and_exception_classes</span><span class="p">(</span><span class="n">prefix</span><span class="p">):</span>
    <span class="n">classes</span> <span class="o">=</span> <span class="p">[]</span>
    <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">globals</span><span class="p">()</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
        <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s">&quot;[0-9]{2}&quot;</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
            <span class="n">classes</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
    <span class="n">classes</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">classes</span>


<span class="k">def</span> <span class="nf">_build_doc_string</span><span class="p">():</span>
    <span class="kn">from</span> <span class="nn">textwrap</span> <span class="kn">import</span> <span class="n">dedent</span>

    <span class="k">def</span> <span class="nf">generate_set</span><span class="p">(</span><span class="n">prefix</span><span class="p">):</span>
        <span class="n">classes</span> <span class="o">=</span> <span class="n">_get_warning_and_exception_classes</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span>

        <span class="n">out</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="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">cls</span> <span class="ow">in</span> <span class="n">classes</span><span class="p">:</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u&quot;.. _</span><span class="si">%s</span><span class="s">:</span><span class="se">\n\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">get_short_name</span><span class="p">())</span>
            <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
                <span class="n">msg</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf-8&#39;</span><span class="p">)</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u&#39;~&#39;</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">msg</span><span class="p">))</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u&#39;</span><span class="se">\n\n</span><span class="s">&#39;</span><span class="p">)</span>
            <span class="n">doc</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">__doc__</span>
            <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
                <span class="n">doc</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf-8&#39;</span><span class="p">)</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">dedent</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">u&#39;</span><span class="se">\n\n</span><span class="s">&#39;</span><span class="p">)</span>

        <span class="k">return</span> <span class="n">out</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span>

    <span class="n">warnings</span> <span class="o">=</span> <span class="n">generate_set</span><span class="p">(</span><span class="s">u&#39;W&#39;</span><span class="p">)</span>
    <span class="n">exceptions</span> <span class="o">=</span> <span class="n">generate_set</span><span class="p">(</span><span class="s">u&#39;E&#39;</span><span class="p">)</span>

    <span class="k">return</span> <span class="p">{</span><span class="s">u&#39;warnings&#39;</span><span class="p">:</span> <span class="n">warnings</span><span class="p">,</span>
            <span class="s">u&#39;exceptions&#39;</span><span class="p">:</span> <span class="n">exceptions</span><span class="p">}</span>

<span class="n">__doc__</span> <span class="o">=</span> <span class="n">__doc__</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">_build_doc_string</span><span class="p">())</span>

<span class="n">__all__</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">_get_warning_and_exception_classes</span><span class="p">(</span><span class="s">u&#39;W&#39;</span><span class="p">)])</span>
<span class="n">__all__</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">_get_warning_and_exception_classes</span><span class="p">(</span><span class="s">u&#39;E&#39;</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"> &nbsp;
    <a href="#">Back to Top</a></p>
  <p>
    &copy; Copyright 2011-2013, The Astropy Developers.<br/>
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. &nbsp;
    Last built 22 Oct 2013. <br/>
  </p>
</footer>
  </body>
</html>