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
总是只使用空格输出文件,而不管它们是如何输入的。
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修正了规范中的这一错误。
W03:从名称“x”->“y”隐式生成ID#
从名称隐式生成ID。
VOTable 1.1规范说明了以下内容
name
VSID
在FIELD
和VALUE
元素:
ID
和name
属性在VOTable中有不同的作用:ID
意思是 唯一标识符 元素被视为可变组件,而name
用于表示目的,不需要在整个VOTable文档中保持唯一性。这个ID
因此,属性在必须被引用的元素中是必需的,但原则上任何元素都可以具有ID
属性。。。总之ID
不同于name
属性ID
属性是由受限字符集生成的,在整个VOTable文档中必须是唯一的,而名称是标准的XML属性,不必是唯一的;(b)解析软件中应该支持查找引用并提取匹配的相关元素ID
.表2.1中推荐了进一步的规范:
而
ID
属性在VOTable文档中必须是唯一的name
不需要属性。但是,作为一个好的实践,建议在TABLE
元素。此建议意味着,在TABLE
以及相应的结束语TABLE
标签,name
属性FIELD
,PARAM
可选的GROUP
元素应该都是不同的。自从
astropy.io.votable
每个列都需要唯一标识符,ID
用于列名(如果存在)。但是,什么时候ID
不存在(因为规范不要求)name
而是使用。然而,name
必须通过用下划线替换无效字符(如空格)来清除。备注
此警告并不表示输入文件对于VOTable规范无效,只表示记录数组中的列名可能与
name
文件中指定的属性。
W04:内容类型“x”必须是有效的MIME内容类型#
这个 content-type
attribute must use MIME content-type syntax as defined in RFC 2046 .
目前对有效性的检查有点过分了。
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+定义的受控词汇表。
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'
.
W10:未知标记“x”。忽略#
分析器遇到了规范中不存在的元素,或者出现在无效上下文中。根据VOTable模式检查文件(使用诸如 xmllint . 如果文件根据架构进行了验证,而您仍然收到此警告,则可能表示中存在错误 astropy.io.votable
.
W11:VOTable 1.1中不推荐使用LINK上的gref属性#
Vvotable规范的早期版本使用 gref
attribute on the LINK
element to specify a GLU reference 。新文件应指定 glu:
协议使用 href
属性。
自从 astropy.io.votable
目前不支持GLU引用,它同样不会自动转换 gref
属性添加到新窗体。
W12:“x”元素必须至少具有“ID”或“name”属性之一#
为了命名Numpy记录数组的列,每个列 FIELD
元素必须具有 ID
或 name
从中派生名称的属性。严格地说,根据VOTable模式 name
属性是必需的。但是,如果 name
不存在于 ID
是,而且 verify
不是 'exception'
, astropy.io.votable
将在没有 name
定义。
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
.
W15:x元素缺少必需的“name”属性#
这个 name
属性在每个 FIELD
元素。但是,许多VOTable文件都忽略了它,只提供了一个 ID
相反。在这种情况下,什么时候 verify
不是 'exception'
astropy.io.votable
将复制 name
属性 ID
属性。
W17:x元素包含多个DESCRIPTION元素#
A DESCRIPTION
元素在其父元素中只能出现一次。
但是,它是一个 proposed extension 第1.2条。
W18:表指定nrows=x,但表包含y行#
中显式指定的行数 nrows
属性与实际行数不匹配 (TR
元素)存在于 TABLE
. 这可能表示文件被截断,或者生成该文件的工具中存在内部错误。如果 verify
不是 'exception'
,解析将继续,但会损失一些性能。
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
整个文档中的元素。
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”。
W30:浮点“x”的文本无效。视为空的。#
有些VOTable文件以非标准方式写入缺少的浮点值,例如“null”和“-”。如果 verify
不是 'exception'
,任何非标准浮点字面值都将被视为缺失值。
W31:在没有指定空值的整型字段中给定的NaN#
由于NaN不能直接在整型字段中表示,因此必须在字段描述符中指定null值,以支持从tabledata读取NaN。
W32:重复的ID“x”重命名为“xu 2”,以确保唯一性#
表中的每个字段必须具有唯一的ID。如果两个或多个字段具有相同的ID,则将重命名某些字段以确保所有ID都是唯一的。
根据VOTable 1.2规范:
这个
ID
和ref
属性定义为XML类型ID
和IDREF
分别。这意味着ID
是一个标识符,在整个VOTable文档中必须是唯一的,并且ref
属性表示对VOTable文档中必须存在的标识符的引用。
W33:列名“x”重命名为“xu 2”,以确保唯一性#
表中的每个字段必须具有唯一的名称。如果两个或多个字段具有相同的名称,则将重命名某些字段以确保所有名称都是唯一的。
W34:“x”是属性“y”的无效标记#
属性要求值是有效的XML标记,如 XML 1.0 .
W35:INFO元素需要“x”属性#
这个 name
和 value
所有的属性都是必需的 INFO
元素。
W36:空值“x”与字段数据类型不匹配,设置为0#
如果字段指定 null
值,则该值必须符合给定的 datatype
.
W37:不支持的数据格式“x”#
VOVABLE规范中定义并支持的3种数据类型 astropy.io.votable
是 TABLEDATA
, BINARY
,以及 FITS
。此外, astropy.io.votable
还支持 PARQUET
序列化,它是添加到可投票规范的候选对象。
W38:内联二进制数据必须是base64编码的,得到“x”#
VOTable规范支持的本地二进制数据的唯一编码是base64。
W39:无法屏蔽位值#
位值不支持屏蔽。在位列中设置屏蔽数据时会引发此警告。
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属性无效。
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”中)#
字段的大小说明符无效。
的大小说明符
char
或unicode
字段只能是一个数字,后面可以是星号。这些数据类型不支持多维大小说明符。定义为一组字符的字符串可以在VOTable中表示为固定长度或可变长度的字符数组:
<FIELD name="unboundedString" datatype="char" arraysize="*"/>一维字符串数组可以表示为二维字符数组,但根据上述逻辑,可以定义固定长度字符串的可变长度数组,但不能定义可变长度字符串的固定长度数组。
E02:数组中的元素数不正确。期望x的倍数,得到y#
数组中的元素数不正确。
数据中的数组元素数与字段说明符中指定的数组元素数不匹配。
E03:“x”不解析为复数#
复数应该是两个用空格隔开的值。
E04:无效的位值“x”#
A bit
数组应为“0”和“1”的字符串。
E05:无效的布尔值“x”#
无效的布尔值。
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
.
E08:类型必须为“legal”或“actual”,但为“x”#
这个 type
属性 VALUES
元素必须是 legal
或 actual
.
E09:“x”必须具有value属性#
这个 MIN
, MAX
和 OPTION
元素必须始终具有 value
属性。
E10:所有“FIELD”元素都需要“datatype”属性#
从VOTable 1.1及更高版本, FIELD
和 PARAM
元素必须具有 datatype
字段。
E11'精度无效#
precision属性用于表示有效数字的数量,可以是小数位数(例如。 precision="F2"
或等价地 precision="2"
表示小数点后的两个有效数字),或作为一系列有效数字(例如。 precision="E5"
表示相对精度为10-5)。
使用以下正则表达式验证它:
[EF]?[1-9][0-9]*
E12:宽度必须是正整数,得到“x”#
width属性用于向应用程序指示用于输入或输出数量的字符数。
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*"/>
参数E14是所有元素的必需值#
所有 PARAM
元素必须具有 value
属性。
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
属性必须是正整数。
E18:类型必须是“results”或“meta”,而不是“x”#
这个 type
的属性 RESOURCE
元素必须是“results”或“meta”之一。
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)[源代码]#
警告,如果有合适的位置信息。
- class astropy.io.votable.exceptions.VOWarning(args, config=None, pos=None)[源代码]#
-
所有VO警告和异常的基类。
使用警告或异常代码、文件名、行号和列号处理消息的格式。
- class astropy.io.votable.exceptions.VOTableChangeWarning(args, config=None, pos=None)[源代码]#
-
输入XML文件已更改。
- class astropy.io.votable.exceptions.VOTableSpecWarning(args, config=None, pos=None)[源代码]#
-
输入的XML文件违反了规范,但是有一个明显的解决方法。
- class astropy.io.votable.exceptions.UnimplementedWarning(args, config=None, pos=None)[源代码]#
-
的一个特点 VOTABLE 规范未实现。
- class astropy.io.votable.exceptions.IOWarning(args, config=None, pos=None)[源代码]#
-
发生网络或IO错误,但已使用缓存恢复。
- class astropy.io.votable.exceptions.VOTableSpecError(args, config=None, pos=None)[源代码]#
基类:
VOWarning
,ValueError
输入的XML文件违反了规范,没有很好的解决方法。