<!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 — Astropy v0.2.4</title> <link rel="stylesheet" href="../../../../_static/bootstrap-astropy.css" type="text/css" /> <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../../../', VERSION: '0.2.4', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../../_static/underscore.js"></script> <script type="text/javascript" src="../../../../_static/doctools.js"></script> <script type="text/javascript" src="../../../../_static/sidebar.js"></script> <link rel="shortcut icon" href="../../../../_static/astropy_logo.ico"/> <link rel="top" title="Astropy v0.2.4" href="../../../../index.html" /> <link rel="up" title="Module code" href="../../../index.html" /> </head> <body> <div class="topbar"> <a class="brand" title="Documentation Home" href="../../../../index.html"></a> <ul> <li><a class="homelink" title="AstroPy Homepage" href="http://www.astropy.org"></a></li> <li><a title="General Index" href="../../../../genindex.html">Index</a></li> <li><a title="Python Module Index" href="../../../../py-modindex.html">Modules</a></li> <li> <form action="../../../../search.html" method="get"> <input type="text" name="q" placeholder="Search" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </li> </ul> </div> <div class="related"> <h3>Navigation</h3> <ul> <li> <a href="../../../../index.html">Astropy v0.2.4</a> » </li> <li><a href="../../../index.html" accesskey="U">Module code</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <h1>Source code for astropy.io.votable.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"""</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">"""</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">'warn_or_raise'</span><span class="p">,</span> <span class="s">'vo_raise'</span><span class="p">,</span> <span class="s">'vo_reraise'</span><span class="p">,</span> <span class="s">'vo_warn'</span><span class="p">,</span> <span class="s">'warn_unknown_attrs'</span><span class="p">,</span> <span class="s">'parse_vowarning'</span><span class="p">,</span> <span class="s">'VOWarning'</span><span class="p">,</span> <span class="s">'VOTableChangeWarning'</span><span class="p">,</span> <span class="s">'VOTableSpecWarning'</span><span class="p">,</span> <span class="s">'UnimplementedWarning'</span><span class="p">,</span> <span class="s">'IOWarning'</span><span class="p">,</span> <span class="s">'VOTableSpecError'</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">'?'</span><span class="p">,</span> <span class="s">'?'</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">'filename'</span><span class="p">,</span> <span class="s">'?'</span><span class="p">)</span> <span class="k">return</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">: </span><span class="si">%s</span><span class="s">'</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">'_warning_counts'</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">'_warning_counts'</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">'_warning_counts'</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"><=</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">' (suppressing further warnings of this type...)'</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">"""</span> <span class="sd"> Warn or raise an exception, depending on the pedantic setting.</span> <span class="sd"> """</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">'pedantic'</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">"""</span> <span class="sd"> Raise an exception, with proper position information if available.</span> <span class="sd"> """</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">''</span><span class="p">):</span> <span class="sd">"""</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 "except:" block of code.</span> <span class="sd"> """</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">' '</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">"""</span> <span class="sd"> Warn, with proper position information if available.</span> <span class="sd"> """</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":?(?P<nline>[0-9?]+):(?P<nchar>[0-9?]+): "</span> <span class="o">+</span> <span class="s">r"((?P<warning>[WE]\d+): )?(?P<rest>.*)$"</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">"""</span> <span class="sd"> Parses the vo warning string back into its parts.</span> <span class="sd"> """</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">'warning'</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">'warning'</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">'is_warning'</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">'W'</span><span class="p">)</span> <span class="n">result</span><span class="p">[</span><span class="s">'is_exception'</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">'is_warning'</span><span class="p">]</span> <span class="n">result</span><span class="p">[</span><span class="s">'number'</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">'warning'</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">'doc_url'</span><span class="p">]</span> <span class="o">=</span> <span class="s">"io/votable/api_exceptions.html#{0}"</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">'is_warning'</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">'is_exception'</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">'is_other'</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">'number'</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">'doc_url'</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">'nline'</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">'nline'</span><span class="p">))</span> <span class="n">result</span><span class="p">[</span><span class="s">'nchar'</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">'nchar'</span><span class="p">))</span> <span class="n">result</span><span class="p">[</span><span class="s">'message'</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">'rest'</span><span class="p">)</span> <span class="n">result</span><span class="p">[</span><span class="s">'is_something'</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">'warning'</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">'is_warning'</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">'is_exception'</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">'is_other'</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">'is_something'</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">'utf-8'</span><span class="p">)</span> <span class="n">result</span><span class="p">[</span><span class="s">'message'</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">"""</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"> """</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">"""</span> <span class="sd"> A change has been made to the input XML file.</span> <span class="sd"> """</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">"""</span> <span class="sd"> The input XML file violates the spec, but there is an obvious workaround.</span> <span class="sd"> """</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">"""</span> <span class="sd"> A feature of the VOTABLE_ spec is not implemented.</span> <span class="sd"> """</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">"""</span> <span class="sd"> A network or IO error occurred, but was recovered using the cache.</span> <span class="sd"> """</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">"""</span> <span class="sd"> The input XML file violates the spec and there is no good workaround.</span> <span class="sd"> """</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#toc-header-35>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:TABLEDATA>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Array uses commas rather than whitespace"</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">"""</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'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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `XML Names <http://www.w3.org/TR/REC-xml/#NT-Name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s"> attribute '</span><span class="si">%s</span><span class="s">' is invalid. Must be a standard XML id"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Implictly generating an ID from a name '</span><span class="si">%s</span><span class="s">' -> '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</span> <span class="sd"> The ``content-type`` attribute must use MIME content-type syntax as</span> <span class="sd"> defined in `RFC 2046 <http://tools.ietf.org/html/rfc2046>`__.</span> <span class="sd"> The current check for validity is somewhat over-permissive.</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:link>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:link>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"content-type '</span><span class="si">%s</span><span class="s">' must be a valid MIME content type"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> The attribute must be a valid URI as defined in `RFC 2396</span> <span class="sd"> <http://www.ietf.org/rfc/rfc2396.txt>`_.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' is not a valid URI"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://vizier.u-strasbg.fr/doc/UCD.htx>`__.</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:ucd>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:ucd>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid UCD '</span><span class="si">%s</span><span class="s">': </span><span class="si">%s</span><span class="s">"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'explanation'</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">"""</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"> <xs:simpleType name="astroYear"></span> <span class="sd"> <xs:restriction base="xs:token"></span> <span class="sd"> <xs:pattern value="[JB]?[0-9]+([.][0-9]*)?"/></span> <span class="sd"> </xs:restriction></span> <span class="sd"> </xs:simpleType></span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid astroYear in </span><span class="si">%s</span><span class="s">: '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> """</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">"'</span><span class="si">%s</span><span class="s">' must be a str or bytes object"</span> <span class="k">else</span><span class="p">:</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' must be a str or unicode object"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"ID attribute not capitalized"</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">"""</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"> <http://xmlsoft.org/xmllint.html>`__. 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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Unknown tag '</span><span class="si">%s</span><span class="s">'. Ignoring"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://aladin.u-strasbg.fr/glu/>`__. 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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:link>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:link>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"The gref attribute on LINK is deprecated in VOTable 1.1"</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="p">(</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' element must have at least one of 'ID' or 'name' attributes"</span><span class="p">)</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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 -> char</span> <span class="sd"> unicodeString -> unicodeChar</span> <span class="sd"> int16 -> short</span> <span class="sd"> int32 -> int</span> <span class="sd"> int64 -> long</span> <span class="sd"> float32 -> float</span> <span class="sd"> float64 -> double</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' is not a valid VOTable datatype, should be '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s"> element missing required 'name' attribute"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58>`__)</span> <span class="sd"> However, it is a `proposed extension</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:addesc>`__</span> <span class="sd"> to VOTable 1.2.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s"> element contains more than one DESCRIPTION element"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC10>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC10>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">'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'</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="p">(</span> <span class="s">'The fields defined in the VOTable do not match those in the '</span> <span class="o">+</span> <span class="s">'embedded FITS file'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">'No version number specified in file. Assuming </span><span class="si">%s</span><span class="s">'</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'1.1'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="p">(</span> <span class="s">'vo.table is designed for VOTable version 1.1 and 1.2, but '</span> <span class="o">+</span> <span class="s">'this file is </span><span class="si">%s</span><span class="s">'</span><span class="p">)</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:definitions>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:definitions>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">'The DEFINITIONS element is deprecated in VOTable 1.1. Ignoring'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Unable to update service information for '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"The VO catalog database is for a later version of vo.table"</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' failed with: </span><span class="si">%s</span><span class="s">"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'service'</span><span class="p">,</span> <span class="s">'...'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' inside '</span><span class="si">%s</span><span class="s">' added in VOTable </span><span class="si">%s</span><span class="s">"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'child'</span><span class="p">,</span> <span class="s">'parent'</span><span class="p">,</span> <span class="s">'X.X'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:utype>`__</span> <span class="sd"> and the IVOA note `referencing STC in VOTable</span> <span class="sd"> <http://ivoa.net/Documents/latest/VOTableSTC.html>`__.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"COOSYS deprecated in VOTable 1.2"</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' on '</span><span class="si">%s</span><span class="s">' added in VOTable </span><span class="si">%s</span><span class="s">"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'attribute'</span><span class="p">,</span> <span class="s">'element'</span><span class="p">,</span> <span class="s">'X.X'</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">"""</span> <span class="sd"> Some VOTable files specify their version number in the form "v1.0",</span> <span class="sd"> when the only supported forms in the spec are "1.0".</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Version specified in non-standard form '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'v1.0'</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">"""</span> <span class="sd"> Some VOTable files write missing floating-point values in non-standard</span> <span class="sd"> ways, such as "null" and "-". 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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid literal for float '</span><span class="si">%s</span><span class="s">'. Treating as empty."</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> Since NaN'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's from the tabledata.</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"NaN given in an integral field without a specified null value"</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Duplicate ID '</span><span class="si">%s</span><span class="s">' renamed to '</span><span class="si">%s</span><span class="s">' to ensure uniqueness"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'x_2'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:name>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:name>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Column name '</span><span class="si">%s</span><span class="s">' renamed to '</span><span class="si">%s</span><span class="s">' to ensure uniqueness"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'x_2'</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">"""</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"> <http://www.w3.org/TR/2000/WD-xml-2e-20000814#NT-Nmtoken>`__.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' is an invalid token for attribute '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC32>`</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' attribute required for INFO elements"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:values>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:values>`</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"null value '</span><span class="si">%s</span><span class="s">' does not match field datatype, setting to 0"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:data>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:data>`</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Unsupported data format '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Inline binary data must be base64 encoded, got '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Bit values can not be masked"</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">"""</span> <span class="sd"> This is a terrible hack to support Simple Image Access Protocol</span> <span class="sd"> results from `<archive.noao.edu>`__. It creates a field for the</span> <span class="sd"> coordinate projection type of type "double", 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't read it in. A warning</span> <span class="sd"> will be raised when this happens.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'cprojection' datatype repaired"</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">"""</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 "X.X" 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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="p">(</span> <span class="s">"An XML namespace is specified, but is incorrect. Expected "</span> <span class="o">+</span> <span class="s">"'</span><span class="si">%s</span><span class="s">', got '</span><span class="si">%s</span><span class="s">'"</span><span class="p">)</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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 "X.X" is the version number.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"No XML namespace specified"</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s"> ref='</span><span class="si">%s</span><span class="s">' which has not already been defined"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'element'</span><span class="p">,</span> <span class="s">'x'</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">"""</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. ``<VALUES ref="RAdomain"/>``</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"VALUES element with ref attribute has content ('</span><span class="si">%s</span><span class="s">')"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'element'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"content-role attribute '</span><span class="si">%s</span><span class="s">' invalid"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"</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">"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'char or unicode'</span><span class="p">,</span> <span class="s">'x'</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">"""</span> <span class="sd"> If no arraysize is specified on a char field, the default of '1'</span> <span class="sd"> is implied, but this is rarely what is intended.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Missing arraysize indicates length 1"</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">"""</span> <span class="sd"> The attribute is not defined in the specification.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Unknown attribute '</span><span class="si">%s</span><span class="s">' on </span><span class="si">%s</span><span class="s">"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'attribute'</span><span class="p">,</span> <span class="s">'element'</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">"""</span> <span class="sd"> Empty cell illegal for integer fields.</span> <span class="sd"> If a \"null\" 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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Empty cell illegal for integer fields."</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">"""</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"> <http://cdsarc.u-strasbg.fr/doc/catstd-3.2.htx>`_.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid unit string '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> The integer value is out of range for the size of the field.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Value '</span><span class="si">%s</span><span class="s">' is out of range for a </span><span class="si">%s</span><span class="s"> integer field"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'n-bit'</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">"""</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"> <FIELD name="unboundedString" datatype="char" arraysize="*"/></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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid size specifier '</span><span class="si">%s</span><span class="s">' for a </span><span class="si">%s</span><span class="s"> field (in field '</span><span class="si">%s</span><span class="s">')"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'char/unicode'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="p">(</span> <span class="s">"Incorrect number of elements in array. "</span> <span class="o">+</span> <span class="s">"Expected multiple of </span><span class="si">%s</span><span class="s">, got </span><span class="si">%s</span><span class="s">"</span><span class="p">)</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</span> <span class="sd"> Complex numbers should be two values separated by whitespace.</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' does not parse as a complex number"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> A ``bit`` array should be a string of '0's and '1's.</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid bit value '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> 'TRUE', 'FALSE', '1', '0', 'T', 'F', '\\0', ' ', '?'</span> <span class="sd"> and in ``BINARY`` format::</span> <span class="sd"> 'T', 'F', '1', '0', '\\0', ' ', '?'</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid boolean value '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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 <W13>` will be raised::</span> <span class="sd"> string -> char</span> <span class="sd"> unicodeString -> unicodeChar</span> <span class="sd"> int16 -> short</span> <span class="sd"> int32 -> int</span> <span class="sd"> int64 -> long</span> <span class="sd"> float32 -> float</span> <span class="sd"> float64 -> double</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:datatypes>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:datatypes>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Unknown datatype '</span><span class="si">%s</span><span class="s">' on field '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:values>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:values>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"type must be 'legal' or 'actual', but is '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:values>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:values>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'</span><span class="si">%s</span><span class="s">' must have a value attribute"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#elem:FIELD>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#elem:FIELD>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"'datatype' attribute required on all '</span><span class="si">%s</span><span class="s">' elements"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'FIELD'</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">"""</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="F2"`` or</span> <span class="sd"> equivalently ``precision="2"`` 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="E5"`` 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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:form>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:form>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"precision '</span><span class="si">%s</span><span class="s">' is invalid"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:form>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:form>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"width must be a positive integer, got '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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"""</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"> <FIELD ID="point_3D" datatype="double" arraysize="3"/></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"> <FIELD ID="values" datatype="int" arraysize="100*"/></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"> <FIELD ID="thumbs" datatype="unsignedByte" arraysize="64×64×10*"/></span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#sec:dim>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#sec:dim>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid arraysize attribute '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> All ``PARAM`` elements must have a ``value`` attribute.</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#elem:FIELD>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#elem:FIELD>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"value attribute is required for all PARAM elements"</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"ID attribute is required for all COOSYS elements"</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">"""</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"> 'eq_FK4', 'eq_FK5', 'ICRS', 'ecl_FK4', 'ecl_FK5', 'galactic',</span> <span class="sd"> 'supergalactic', 'xy', 'barycentric', 'geo_app'</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#elem:COOSYS>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Invalid system attribute '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> ``extnum`` attribute must be a positive integer.</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"extnum must be a positive integer"</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">"""</span> <span class="sd"> The ``type`` attribute of the ``RESOURCE`` element must be one of</span> <span class="sd"> "results" or "meta".</span> <span class="sd"> **References**: `1.1</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20040811/REC-VOTable-1.1-20040811.html#ToC54>`__,</span> <span class="sd"> `1.2</span> <span class="sd"> <http://www.ivoa.net/Documents/VOTable/20091130/REC-VOTable-1.2.html#ToC58>`__</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"type must be 'results' or 'meta', not '</span><span class="si">%s</span><span class="s">'"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</span> <span class="sd"> Raised either when the file doesn't appear to be XML, or the root</span> <span class="sd"> element is not VOTABLE.</span> <span class="sd"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"File does not appear to be a VOTABLE"</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"Data has more columns than are defined in the header (</span><span class="si">%s</span><span class="s">)"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</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">"""</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"> """</span> <span class="n">message</span> <span class="o">=</span> <span class="s">"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">)"</span> <span class="n">default_args</span> <span class="o">=</span> <span class="p">(</span><span class="s">'x'</span><span class="p">,</span> <span class="s">'y'</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">"[0-9]{2}"</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".. _</span><span class="si">%s</span><span class="s">:</span><span class="se">\n\n</span><span class="s">"</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">"</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">"</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">'utf-8'</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'</span><span class="se">\n</span><span class="s">'</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'~'</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'</span><span class="se">\n\n</span><span class="s">'</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">'utf-8'</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'</span><span class="se">\n\n</span><span class="s">'</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'W'</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'E'</span><span class="p">)</span> <span class="k">return</span> <span class="p">{</span><span class="s">u'warnings'</span><span class="p">:</span> <span class="n">warnings</span><span class="p">,</span> <span class="s">u'exceptions'</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'W'</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'E'</span><span class="p">)])</span> </pre></div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"><h3>Page Contents</h3> </div> </div> <div class="clearer"></div> </div> <footer class="footer"> <p class="pull-right"> <a href="#">Back to Top</a></p> <p> © Copyright 2011-2013, The Astropy Developers.<br/> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. Last built 22 Oct 2013. <br/> </p> </footer> </body> </html>