astropy.io.votable.exceptions#

可投票的例外和警告。

警告#

备注

以下大多数警告表示违反了VOTable规范。它们应该报告给生成VOTable文件的工具的作者。

要控制发出的警告,请使用标准Python warnings 模块与 astropy.io.votable.exceptions.conf.max_warnings 配置项。大多数都是这种类型的 VOTableSpecWarning .

W01:数组使用逗号而不是空格#

数组使用逗号而不是空格。

VOTable规范规定:

如果单元格包含数组或复数,则应将其编码为多个用空格分隔的数字。

许多野生的可语音文件都使用逗号作为分隔符,并且 astropy.io.votable 可以支持此约定,具体取决于 验证VOTables 布景。

astropy.io.votable 总是只使用空格输出文件,而不管它们是如何输入的。

工具书类1.11.2

W02:x属性“y”无效。必须是标准XML id#

非标准的XML ID。

XML ID必须与以下正则表达式匹配::

^[A-Za-z_][A-Za-z0-9_\.\-]*$

VOTable 1.1说明了以下内容:

根据XML标准,属性 ID is a string beginning with a letter or underscore (_), followed by a sequence of letters, digits, or any of the punctuation characters . (dot), - (破折号), _ (下划线),或 : (冒号)。

但是,这与XML标准相冲突,XML标准规定不能使用冒号。votable1.1自己的模式不允许在这里使用冒号。因此, astropy.io.votable 不允许使用结肠。

VOTable 1.2修正了规范中的这一错误。

References1.1XML Names

W03:从名称“x”->“y”隐式生成ID#

从名称隐式生成ID。

VOTable 1.1规范说明了以下内容 name VS IDFIELDVALUE 元素:

IDname 属性在VOTable中有不同的作用: ID 意思是 唯一标识符 元素被视为可变组件,而 name 用于表示目的,不需要在整个VOTable文档中保持唯一性。这个 ID 因此,属性在必须被引用的元素中是必需的,但原则上任何元素都可以具有 ID 属性。。。总之 ID 不同于 name 属性 ID 属性是由受限字符集生成的,在整个VOTable文档中必须是唯一的,而名称是标准的XML属性,不必是唯一的;(b)解析软件中应该支持查找引用并提取匹配的相关元素 ID .

表2.1中推荐了进一步的规范:

ID 属性在VOTable文档中必须是唯一的 name 不需要属性。但是,作为一个好的实践,建议在 TABLE 元素。此建议意味着,在 TABLE 以及相应的结束语 TABLE 标签, name 属性 FIELDPARAM 可选的 GROUP 元素应该都是不同的。

自从 astropy.io.votable 每个列都需要唯一标识符, ID 用于列名(如果存在)。但是,什么时候 ID 不存在(因为规范不要求) name 而是使用。然而, name 必须通过用下划线替换无效字符(如空格)来清除。

备注

此警告并不表示输入文件对于VOTable规范无效,只表示记录数组中的列名可能与 name 文件中指定的属性。

工具书类1.11.2

W04:内容类型“x”必须是有效的MIME内容类型#

这个 content-type attribute must use MIME content-type syntax as defined in RFC 2046 .

目前对有效性的检查有点过分了。

工具书类1.11.2

W05:“x”不是有效的URI#

必须在URI中定义为有效的属性 RFC 2396 .

W06:无效UCD“x”:解释#

发生以下情况时发出此警告: ucd attribute does not match the syntax of a unified content descriptor

如果VOTable版本是1.2或更高版本,UCD也将被检查以确保它符合UCD1+定义的受控词汇表。

工具书类1.11.2

W07:x中的天文年无效:'y'#

无效的占星年。

因为天文年字段是贝塞尔年或朱利安年,与正则表达式相匹配:

^[JB]?[0-9]+([.][0-9]*)?$

在此XML架构片段中定义:

<xs:simpleType  name="astroYear">
  <xs:restriction base="xs:token">
    <xs:pattern  value="[JB]?[0-9]+([.][0-9]*)?"/>
  </xs:restriction>
</xs:simpleType>

W08:“x”必须是str或bytes对象#

为了避免局部依赖数解析差异, astropy.io.votable unicode或字符串可能需要更合理的字符串类型。

W09:ID属性未大写#

VOTable规范使用voname属性 ID (大写字母)指定唯一标识符。一些VOTable生成工具使用更标准的小写 id 相反。 astropy.io.votable 接受 id 并发出警告如果 verify'warn' .

工具书类1.11.2

W10:未知标记“x”。忽略#

分析器遇到了规范中不存在的元素,或者出现在无效上下文中。根据VOTable模式检查文件(使用诸如 xmllint . 如果文件根据架构进行了验证,而您仍然收到此警告,则可能表示中存在错误 astropy.io.votable .

工具书类1.11.2

W12:“x”元素必须至少具有“ID”或“name”属性之一#

为了命名Numpy记录数组的列,每个列 FIELD 元素必须具有 IDname 从中派生名称的属性。严格地说,根据VOTable模式 name 属性是必需的。但是,如果 name 不存在于 ID 是,而且 verify 不是 'exception'astropy.io.votable 将在没有 name 定义。

工具书类1.11.2

W13:“x”不是有效的VOTable数据类型,应为“y”#

无效的可投票数据类型。

一些VOTable文件使用非标准的数据类型名称。使用以下映射将这些映射到标准的:

string        -> char
unicodeString -> unicodeChar
int16         -> short
int32         -> int
int64         -> long
float32       -> float
float64       -> double
unsignedInt   -> long
unsignedShort -> int

要在分析期间添加更多的数据类型映射,请使用 datatype_mapping 关键字到 astropy.io.votable.parse .

工具书类1.11.2

W15:x元素缺少必需的“name”属性#

这个 name 属性在每个 FIELD 元素。但是,许多VOTable文件都忽略了它,只提供了一个 ID 相反。在这种情况下,什么时候 verify 不是 'exception' astropy.io.votable 将复制 name 属性 ID 属性。

工具书类1.11.2

W17:x元素包含多个DESCRIPTION元素#

A DESCRIPTION 元素在其父元素中只能出现一次。

根据模式,它可能只发生一次 (1.1 _, 1.2

但是,它是一个 proposed extension 第1.2条。

W18:表指定nrows=x,但表包含y行#

中显式指定的行数 nrows 属性与实际行数不匹配 (TR 元素)存在于 TABLE . 这可能表示文件被截断,或者生成该文件的工具中存在内部错误。如果 verify 不是 'exception' ,解析将继续,但会损失一些性能。

参考文献: 1.11.2

W19:VOTable中定义的字段与嵌入的FITS文件中的字段不匹配#

使用定义的列字段 FIELD 元素与嵌入的FITS文件头中的元素不匹配。如果 verify 不是 'exception' ,则嵌入的FITS文件将优先。

W20:文件中未指定版本号。假设1.1#

如果VOTable文件中没有显式地给出版本号,解析器将假定它被写入votable1.1规范。

第21周:astropy.io.votable公司是为VOTable版本1.1、1.2、1.3和1.4设计的,但是这个文件是x#

使用时可能会出现未知问题 astropy.io.votable 包含1.1、1.2、1.3或1.4以外版本的VOTable文件。

W22:DEFINITIONS元素在VOTable 1.1中被弃用。忽略#

VOTable规范的1.0版本使用 DEFINITIONS 元素来定义坐标系。1.1版现在使用 COOSYS 整个文档中的元素。

参考文献: 1.11.2

W23:无法更新“x”的服务信息#

无法更新VO服务数据库时引发(可能是由于网络中断)。这只是一个警告,因为本地有一个旧的、可能过期的VO服务数据库。

W24:VO目录数据库用于的更新版本astropy.io.votable公司#

从www检索到的VO目录数据库是为更新版本的 astropy.io.votable . 这可能会导致执行服务查询时出现问题或功能受限。考虑升级 astropy.io.votable 到最新版本。

W25:“服务”失败,错误为:。。。#

由于网络错误或参数格式不正确,VO服务查询失败。可以尝试其他替代服务。如果所有服务失败,将引发异常。

W26在VOTable X.X中添加了“parent”中的“child”#

在指定的VOTable版本之前,给定元素的内部不受支持,但是文件中声明的版本是针对早期版本的。这些属性不能写入文件。

W27:COOSYS在VOTable 1.2中已弃用#

这个 COOSYS element was deprecated in VOTABLE version 1.2 in favor of a reference to the Space-Time Coordinate (STC) data model (see utype 还有伊沃的便条 referencing STC in VOTable .

W28:“element”上的“attribute”添加到VOTable X.X中#

在指定的VOTable版本之前,给定元素不支持给定属性,但是文件中声明的版本是针对较早版本的。这些属性不能写入文件。

W29:以非标准格式“v1.0”指定的版本#

一些VOTable文件以“v1.0”的形式指定其版本号,而规范中只支持“1.0”。

工具书类1.11.2

W30:浮点“x”的文本无效。视为空的。#

有些VOTable文件以非标准方式写入缺少的浮点值,例如“null”和“-”。如果 verify 不是 'exception' ,任何非标准浮点字面值都将被视为缺失值。

工具书类1.11.2

W31:在没有指定空值的整型字段中给定的NaN#

由于NaN不能直接在整型字段中表示,因此必须在字段描述符中指定null值,以支持从tabledata读取NaN。

工具书类1.11.2

W32:重复的ID“x”重命名为“xu 2”,以确保唯一性#

表中的每个字段必须具有唯一的ID。如果两个或多个字段具有相同的ID,则将重命名某些字段以确保所有ID都是唯一的。

根据VOTable 1.2规范:

这个 IDref 属性定义为XML类型 IDIDREF 分别。这意味着 ID 是一个标识符,在整个VOTable文档中必须是唯一的,并且 ref 属性表示对VOTable文档中必须存在的标识符的引用。

工具书类1.11.2

W33:列名“x”重命名为“xu 2”,以确保唯一性#

表中的每个字段必须具有唯一的名称。如果两个或多个字段具有相同的名称,则将重命名某些字段以确保所有名称都是唯一的。

工具书类1.11.2

W34:“x”是属性“y”的无效标记#

属性要求值是有效的XML标记,如 XML 1.0 .

W35:INFO元素需要“x”属性#

这个 namevalue 所有的属性都是必需的 INFO 元素。

参考文献: 1.11.2

W36:空值“x”与字段数据类型不匹配,设置为0#

如果字段指定 null 值,则该值必须符合给定的 datatype .

参考文献: 1.11.2

W37:不支持的数据格式“x”#

VOVABLE规范中定义并支持的3种数据类型 astropy.io.votableTABLEDATABINARY ,以及 FITS 。此外, astropy.io.votable 还支持 PARQUET 序列化,它是添加到可投票规范的候选对象。

参考文献: 1.11.2

W38:内联二进制数据必须是base64编码的,得到“x”#

VOTable规范支持的本地二进制数据的唯一编码是base64。

W39:无法屏蔽位值#

位值不支持屏蔽。在位列中设置屏蔽数据时会引发此警告。

工具书类1.11.2

W40:“cproject”数据类型已修复#

这是一个支持简单映像访问协议结果的可怕黑客攻击 NOIRLab Astro Data Archive 。它为类型为“DOUBLE”的坐标投影类型创建了一个字段,该字段实际上包含字符数据。我们必须破解该字段以存储字符数据,否则我们无法将其读入。当发生这种情况时,将发出警告。

W41:指定了XML命名空间,但不正确。应为“x”,而为“y”#

上指定了XML命名空间 VOTABLE 元素,但命名空间与 VOTABLE 文件。

这个 VOTABLE 命名空间为:

http://www.ivoa.net/xml/VOTable/vX.X

其中“X.X”是版本号。

一些文件将命名空间设置为VOTable模式的位置,这是不正确的,并且不会通过一些验证解析器。

W42:未指定XML命名空间#

根元素应指定命名空间。

这个 VOTABLE 命名空间为:

http://www.ivoa.net/xml/VOTable/vX.X

其中“X.X”是版本号。

W43:尚未定义的元素ref='x'#

引用的元素应该在推荐人之前定义。

根据VOTable 1.2规范:

在VOTable1.2中,进一步建议尽可能在引用ID属性之前放置ID属性。

W44:具有ref属性的VALUES元素具有content('element')#

VALUES 引用另一个元素的元素不应该有自己的内容。

根据VOTable 1.2规范:

这个 ref 的属性 VALUES 元素可以用来避免域定义的重复,方法是引用以前定义的 VALUES 具有引用的 ID 属性。如果指定,则 ref 属性完全定义了没有任何其他元素或属性的域,例如。 <VALUES ref="RAdomain"/>

W45:内容角色属性“x”无效#

Content-Role属性无效。

这个 content-role 属性 LINK 元素必须是以下元素之一:

query, hints, doc, location

在VOTable 1.3中,另外:

type

工具书类1.11.2 1.3

W46:char或unicode值对于指定的x长度太长#

给定的字符或unicode字符串对于指定的字段长度太长。

W47:缺少arraysize表示长度为1#

如果没有在char字段上指定arraysize,则默认值为“1”,但这很少是预期的。

W48:元素上的属性“attribute”未知#

规范中未定义属性。

W49:整数字段的空单元格非法。#

在votable1.3之前,空单元格对于整数字段是非法的。

如果为单元格指定了“null”值,则该值将用于该值,否则,将使用0。

W50:无效的单位字符串“x”#

中定义的单位字符串无效 Units in the VO, Version 1.0 (可投票版本>=1.4)或 Standards for Astronomical Catalogues, Version 2.0 (版本低于1.4)。

考虑传递一个显式 unit_format 参数,如果此文件中的单位符合其他规范。

W51:值“x”超出n位整数字段的范围#

整数值超出字段大小的范围。

W52:在VOTable 1.3中引入了BINARY2格式,但此文件声明为版本“1.2”#

二进制2格式是在votable1.3中引入的。它不应出现在标记为早期版本的文件中。

W53:VOTABLE元素必须至少包含一个资源元素。#

VOTABLE元素必须至少包含一个RESOURCE元素。

W54:在VOTable 1.4中引入了TIMESYS元素,但此文件声明为版本“1.3”#

TIMESYS元素是在VOTable 1.4中引入的。它不应出现在标记为早期版本的文件中。

W55:字段()的数据类型为“char”,但包含非ASCII值()#

当读取字段的TABLEDATA值时检测到非ASCII字符时 datatype="char" ,我们可以发出此警告。

W56:投票表中定义的字段与嵌入的拼图文件中的字段不匹配#

使用定义的列字段 FIELD 元素与嵌入的拼图文件标题中的元素不匹配。如果 verify 不是 'exception' ,嵌入的镶木地板文件将优先。

例外情况#

备注

这是由发出的许多致命异常的列表 astropy.io.votable 当文件不符合规范时。可能会由于中的意外情况或错误而引发其他异常 astropy.io.votable 本身。

E01:char/unicode字段的大小说明符“x”无效(在字段“y”中)#

字段的大小说明符无效。

的大小说明符 charunicode 字段只能是一个数字,后面可以是星号。这些数据类型不支持多维大小说明符。

定义为一组字符的字符串可以在VOTable中表示为固定长度或可变长度的字符数组:

<FIELD name="unboundedString" datatype="char" arraysize="*"/>

一维字符串数组可以表示为二维字符数组,但根据上述逻辑,可以定义固定长度字符串的可变长度数组,但不能定义可变长度字符串的固定长度数组。

E02:数组中的元素数不正确。期望x的倍数,得到y#

数组中的元素数不正确。

数据中的数组元素数与字段说明符中指定的数组元素数不匹配。

E03:“x”不解析为复数#

复数应该是两个用空格隔开的值。

工具书类1.11.2

E04:无效的位值“x”#

A bit 数组应为“0”和“1”的字符串。

工具书类1.11.2

E05:无效的布尔值“x”#

无效的布尔值。

A boolean 中的值应为以下字符串之一(不区分大小写) TABLEDATA 格式::

'TRUE', 'FALSE', '1', '0', 'T', 'F', '\0', ' ', '?'

而在 BINARY 格式::

'T', 'F', '1', '0', '\0', ' ', '?'

工具书类1.11.2

E06:字段“y”上的数据类型“x”未知#

字段上的数据类型未知。

支持的数据类型有:

double, float, bit, boolean, unsignedByte, short, int, long,
floatComplex, doubleComplex, char, unicodeChar

还支持以下非标准别名,但在这种情况下 W13 将被提升:

string        -> char
unicodeString -> unicodeChar
int16         -> short
int32         -> int
int64         -> long
float32       -> float
float64       -> double
unsignedInt   -> long
unsignedShort -> int

要在分析期间添加更多的数据类型映射,请使用 datatype_mapping 关键字到 astropy.io.votable.parse .

工具书类1.11.2

E09:“x”必须具有value属性#

这个 MINMAXOPTION 元素必须始终具有 value 属性。

工具书类1.11.2

E10:所有“FIELD”元素都需要“datatype”属性#

从VOTable 1.1及更高版本, FIELDPARAM 元素必须具有 datatype 字段。

工具书类1.11.2

E11'精度无效#

precision属性用于表示有效数字的数量,可以是小数位数(例如。 precision="F2" 或等价地 precision="2" 表示小数点后的两个有效数字),或作为一系列有效数字(例如。 precision="E5" 表示相对精度为10-5)。

使用以下正则表达式验证它:

[EF]?[1-9][0-9]*

工具书类1.11.2

E12:宽度必须是正整数,得到“x”#

width属性用于向应用程序指示用于输入或输出数量的字符数。

工具书类1.11.2

E13:无效的arraysize属性“x”#

无效的arraySize属性。

根据VOTable 1.2规范:

一个表单元可以包含一个给定基元类型的数组,元素数目固定或可变;数组甚至可以是多维的。例如,点在三维空间中的位置可以通过以下方式定义:

<FIELD ID="point_3D" datatype="double" arraysize="3"/>

与该定义对应的每个单元格必须正好包含3个数字。星号( * )可以附加以指示数组中元素的可变数量,如:

<FIELD ID="values" datatype="int" arraysize="100*"/>

其中指定与该定义对应的每个单元格包含0到100个整数。可以省略这个数字来指定一个无界数组(实际上最多可以是2×10⁹个元素)。

表单元格也可以包含给定基元类型的多维数组。这是由一系列由 x 字符,第一个维度变化最快;与简单数组一样,最后一个维度的长度可能是可变的。例如,下面的定义声明了一个表单元,其中可以包含一组最多10个映像,每个映像为64×64个字节:

<FIELD ID="thumbs" datatype="unsignedByte" arraysize="64×64×10*"/>

工具书类1.11.2

参数E14是所有元素的必需值#

所有 PARAM 元素必须具有 value 属性。

工具书类1.11.2

E15:所有COOSYS元素都需要ID属性#

所有 COOSYS 元素必须具有 ID 属性。

请注意,votable1.1规范指出该属性是可选的,但其对应的模式表明它是必需的。

在VOTable 1.2中 COOSYS 元素已弃用。

E16:无效的系统属性“x”#

不正确 system COOsys元素的属性。

这个 system 属性必须是以下之一::

'eq_FK4', 'eq_FK5', 'ICRS', 'ecl_FK4', 'ecl_FK5', 'galactic',
'supergalactic', 'xy', 'barycentric', 'geo_app'

工具书类1.1

E17:extnum必须是正整数#

extnum 属性必须是正整数。

工具书类1.11.2

E18:类型必须是“results”或“meta”,而不是“x”#

这个 type 的属性 RESOURCE 元素必须是“results”或“meta”之一。

工具书类1.11.2

E19:文件似乎不是VOTABLE#

当文件看起来不是XML,或者根元素不可调用时引发。

E20:数据的列数超过了头(x)中定义的列数#

桌子上只有 x 字段已定义,但数据本身的列数比此多。

E21:数据的列数(x)少于头(y)中定义的列数#

桌子上有 x 字段已定义,但数据本身只有 y 柱。

所有TIMESYS元素都需要ID属性#

所有 TIMESYS 元素必须具有 ID 属性。

E23:无效的timeorigin属性“x”#

这个 timeorigin 属性上的 TIMESYS 元素必须是指定有效儒略日期的浮点文字,或者为方便起见,必须是字符串“mjd-Origin”(代表2400000.5)或字符串“jd-Origin”(代表0)。

工具书类1.4

E24:尝试将非ASCII值()写入datatype=“char”的字段()#

当字段 datatype="char" ,并且不能以二进制或二进制2序列化方式写入。

E25:未定义字段;数据节将被忽略。#

VOTable不能有没有定义字段的数据节;数据将被忽略。

E26:无法在type=Result的资源中设置映射块#

映射块只能在type=meta资源中设置。

异常实用程序#

class astropy.io.votable.exceptions.Conf[源代码]#

的配置参数 astropy.io.votable.exceptions .

max_warnings#

同一类型警告在被抑制之前显示的次数

astropy.io.votable.exceptions.warn_or_raise(warning_class, exception_class=None, args=(), config=None, pos=None, stacklevel=1)[源代码]#

根据验证设置发出警告或引发异常。

astropy.io.votable.exceptions.vo_raise(exception_class, args=(), config=None, pos=None)[源代码]#

引发异常,并提供适当的位置信息(如果可用)。

astropy.io.votable.exceptions.vo_reraise(exc, config=None, pos=None, additional='')[源代码]#

引发异常,并提供适当的位置信息(如果可用)。

还原异常的原始回溯,并且只应在“except:”代码块中调用。

astropy.io.votable.exceptions.vo_warn(warning_class, args=(), config=None, pos=None, stacklevel=1)[源代码]#

警告,如果有合适的位置信息。

astropy.io.votable.exceptions.parse_vowarning(line)[源代码]#

将vo警告字符串解析回其各个部分。

class astropy.io.votable.exceptions.VOWarning(args, config=None, pos=None)[源代码]#

基类:AstropyWarning

所有VO警告和异常的基类。

使用警告或异常代码、文件名、行号和列号处理消息的格式。

class astropy.io.votable.exceptions.VOTableChangeWarning(args, config=None, pos=None)[源代码]#

基类:VOWarning, SyntaxWarning

输入XML文件已更改。

class astropy.io.votable.exceptions.VOTableSpecWarning(args, config=None, pos=None)[源代码]#

基类:VOWarning, SyntaxWarning

输入的XML文件违反了规范,但是有一个明显的解决方法。

class astropy.io.votable.exceptions.UnimplementedWarning(args, config=None, pos=None)[源代码]#

基类:VOWarning, SyntaxWarning

的一个特点 VOTABLE 规范未实现。

class astropy.io.votable.exceptions.IOWarning(args, config=None, pos=None)[源代码]#

基类:VOWarning, RuntimeWarning

发生网络或IO错误,但已使用缓存恢复。

class astropy.io.votable.exceptions.VOTableSpecError(args, config=None, pos=None)[源代码]#

基类:VOWarning, ValueError

输入的XML文件违反了规范,没有很好的解决方法。