跳转到主要内容

LE-Utils 包含在 Kolibri、Ricecooker 和 Kolibri Studio 中使用的共享常量。

项目描述

LE Utils

le-utils 包包含 Ricecooker、Kolibri 和 Kolibri Studio 共享的常量。此包不是用于直接安装或使用,但在所有 Learning Equality 产品中都发挥着重要作用。

常量

位于 le_utils/constants/ 的 Python 文件用于定义常量(通常采用 ALL_CAPS 形式),这些常量可以从 Python 代码中使用。相同的常量和命名约定也以 JSON 格式提供在 le_utils/resources/ 文件夹中,用于前端代码。这意味着,添加一个新常量可能需要编辑多个文件:Python 常量定义文件、JSON 文件以及任何相关的测试。

语言

文件 le_utils/constants/languages.pyle_utils/resources/languagelookup.json 中的查找表定义了 Ricecooker、Kolibri 和 Kolibri Studio 使用的内部表示法,用于识别不同语言的教育内容。

内部表示法使用两种字母代码(例如 en)、两种字母和地区代码(例如,pt-BR 用于巴西葡萄牙语)以及三种字母代码(例如,zul 用于祖鲁语)的混合。

为了确保在与 Kolibri 生态系统(例如,当将新内容上传到 Kolibri Studio 时)交互时具有正确的语言代码,您必须使用辅助方法 getlang 查找语言对象

>>> from le_utils.constants.languages import getlang
>>> language_obj = getlang('en')       # lookup language using language code
>>> language_obj
Language(native_name='English', primary_code='en', subcode=None, name='English', ka_name=None)

如果查找失败,函数 getlang 将返回 None。在这种情况下,您可以尝试使用以下定义的按名称查找或按 alpha2 代码(ISO_639-1)查找方法。

成功查找语言对象后,您可以从中获取语言对象的 code 属性以获取内部表示法语言代码

>>> language_obj.code
'en'

Ricecooker API 预期将为所有 language 属性(通道语言、节点语言和文件语言)提供这些内部表示法语言代码。

更多查找辅助方法

辅助方法 getlang_by_name 允许您按名称查找语言

>>> from le_utils.constants.languages import getlang_by_name
>>> language_obj = getlang_by_name('English')  # lookup language by name
>>> language_obj
Language(native_name='English', primary_code='en', subcode=None, name='English', ka_name=None)

le_utils.constants.languages 模块定义了另外两种语言查找方法

  • 使用 getlang_by_native_name 通过本地语言名称查找名称,例如,您查找 'Français' 以找到法语。
  • 使用 getlang_by_alpha2 使用在 ISO_639-1 中定义的标准两种字母代码进行查找,这些代码由 pycountries 库支持。

有用链接

以下网站对研究语言代码很有用

许可证

Kolibri 和 Kolibri Studio 中的所有内容节点都必须有许可证。文件 le_utils/constants/licenses.py 包含用于标识许可证类型的常量。这些常量旨在与辅助方法 ricecooker.classes.licenses.get_license 一起使用,以创建 Licence 对象。

要初始化许可证对象,您必须指定许可证类型和 copyright_holder(str),它标识人员或组织。例如

from ricecooker.classes.licenses import get_license
from le_utils.constants import licenses
license = get_license(licenses.CC_BY, copyright_holder="Khan Academy")

注意:对于所有许可证类型,除了公共领域许可证外,均需要 copyright_holder 字段,对于公共领域许可证,copyright_holder 可以为 None。

内容类型(ContentNode 子类)

Kolibri 生态系统中的内容项有多种类型。每个对象的 kind 属性可以是以下之一(“主题”、“视频”、“音频”、“练习”、“文档”或“html5”)。有关最新列表,请参阅 constants/content_kinds.py

当前支持的内容类型包括

  • 主题节点(文件夹)
  • 由视频文件和字幕支持的音视频内容节点
  • 由音频文件支持的音频内容节点
  • 由文档文件(PDF 或 ePub)支持的文档内容节点
  • 由 HTML5 zip 文件支持的 HTML5 应用内容节点
  • 幻灯片内容节点
  • 练习内容节点

kind 属性标识数据模型中基内容节点类的子类,这在不同版本的 Ricecooker、Studio 和 Kolibri 中有所不同。

有关平台各部分内容节点上可用的常见和不同模型属性的详细描述,请参阅此文档

文件格式(扩展名)

这些是表示文件类型的低级常量,本质上等同于文件扩展名。文件格式MP4只是文件扩展名mp4的一个方便的代理。请参阅file_formats.pyresourcces/formatlookup.json

格式预设(ContentNode-File关系)

每个ContentNode都与一个或多个File对象相关联,这种关联的性质通过文件的format_preset属性表示。该format_preset表示文件在内容节点中所扮演的角色,例如缩略图、高分辨率视频或低分辨率视频。请注意,格式预设作为Python字符串冗余地表示在constants/format_presets.py中,并作为JSON表示在resources/presetlookup.json中。

您可以将内容节点上的不同格式预设视为要由文件填充的不同“槽位”,某些槽位是必需的,而其他槽位是可选的。例如,对于VideoNode(kind=video)要成为有效的内容节点,它必须至少有一个视频文件与之关联,填充high_res_video槽或low_res_video槽。某些槽位可以包含多个文件,例如video_subtitle预设,因为VideoNode可以与不同语言的多个字幕相关联。

下面的图示说明了内容节点、文件和格式预设之间的结构。

Illustration of the relationships between content kinds (nodes), files, and format presets.

在示例中,视频节点的内容类型为video,并与三个文件相关联

  • 第一个文件格式为mp4,格式预设为high_res_video
  • 第二个文件也是mp4格式,但与内容节点的关联关系为low_res_video
  • 第三个文件格式为vtt,与内容节点关联的格式预设为video_subtitle

格式预设在整个Kolibri内容生态系统中起着至关重要的作用,并决定了Ricecooker应用的内容验证规则、Kolibri Studio编辑规则以及Kolibri上的渲染逻辑。

文件类型(ricecooker.files.File子类)

在Ricecooker中用作标识符,表示在将内容导入过程中将内容序列化为JSON时文件类型。请注意,文件类型常量是ricecooker操作内部的,不在Kolibri Studio或Kolibri中使用。

练习

文件le_utils/constants/exercises.py包含不同问题类型和掌握模型的标识符。

Proquint渠道令牌

文件le_utils/proquint.py包含生成内容渠道proquint标识符的帮助方法。这些是易于在无全键盘的设备上输入的简短字符串,例如sutul-hakuh

角色

《role》常量用于Kolibri平台中的基于角色的访问控制(RBAC)。目前,只支持两种可见性级别

  • 学习者(默认):内容节点对所有Kolibri用户可见
  • 教练:内容节点仅对Kolibri教练和管理员可见

元数据标签

这些标签在spec/labels-v*.json中编码。一旦规范确定,它将被添加到finalized_specs.yml中,以确保CI将失败任何未来对此规范的修改。这确保了生成的代码具有一致的顺序,以便生成的位掩码位在版本间保持稳定。我们还要求规范中的所有名称都是全局唯一的,以最大限度地减少混淆并降低用户对这些术语翻译中冲突的可能性。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

le-utils-0.2.7.tar.gz (36.1 kB 查看哈希值)

上传时间

支持者