ASDF扩展向我的扩展类添加元数据

2024-09-28 22:46:43 发布

您现在位置:Python中文网/ 问答频道 /正文

通过查看第一个示例中来自ASDF(Writing ASDF extensions)的示例,您可以看到一个ASDF文件,其中在“历史记录/扩展名”选项卡中写有:

history:
  extensions:
  - !core/extension_metadata-1.0.0
    extension_class: asdf.extension.BuiltinExtension
    software: {name: asdf, version: 2.4.0.dev582}
  - !core/extension_metadata-1.0.0
    extension_class: builtins.FractionExtension
    software: {name: '', version: ''}

问题:

我尝试更改软件名称和版本。有没有一种方法可以直接从扩展本身或它的目录执行?可能使用包和__init__.py文件

以下是我的实际解决方案:

import asdf
import fractions

tree = {'fraction': fractions.Fraction(10, 3)}
ff = asdf.AsdfFile(tree, extensions=FractionExtension())
# remove the old metadata
ff._extension_metadata.pop('builtins.FractionExtension')
# add my own metadata
ff._extension_metadata.setdefault('builtins.FractionExtension',('myname','1.2.3'))
ff.write_to("test.asdf")

现在看起来是这样的:

  - !core/extension_metadata-1.0.0
    extension_class: builtins.FractionExtension
    software:
      name: myname
      version: 1.2.3

Tags: 文件namecore示例versionextensionextensionssoftware