为所有翻译器添加 Extract-fn

https://blueprints.launchpad.net/congress/+spec/add-extract-fn-to-all-translators

此提案将通过在 HDICT、VDICT 和 LIST 翻译器中添加通用的 extract-fn 方法来扩展 translate_obj() 方法的一般功能。这为数据源开发者提供了一个在将数据转换为 congress congress 驱动程序时使用的通用工具。

问题描述

目前,如果数据源返回一个包含 json 字符串而不是纯 Python 对象、列表和字典的对象,则翻译器无法读取 json 对象中的数据。

提议的变更

通过将 extract-fn 方法作为翻译器包含在内,translate_obj() 方法可以在运行现有的翻译代码之前使用 extract-fn 预处理数据对象。 这样,程序员可以将 extract-fn 设置为 json 提取器,将 json 转换为 Python 对象。

备选方案

当前,如果数据源以非标准格式返回数据,驱动开发者可以在其驱动程序内部创建独特的方法来处理此数据。 此提案的更改可能会通过在基本驱动程序类中提供一个辅助翻译的工具,从而消除开发者在解决方案中单独生成代码的需要。

策略

策略动作

数据源

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发者影响

此更改为开发者在创建数据源驱动程序时提供了更大的灵活性。

实现

负责人

主要负责人

Alex Yip

其他贡献者

Conner Ferguson

工作项

将 extract-fn 作为参数添加到 HDICT、VDICT 和 LIST 翻译器。

依赖项

测试

为了测试此更改的结果,需要将数据通过 extract-fn 翻译器传递,然后检查此数据以确保其以预期的方式显示。

文档影响

对基于数据源驱动程序的类文档进行少量补充,以告知新开发者 extract-fn 方法作为翻译器的作用。

参考资料