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.py 和 le_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 中有所不同。
- ricecooker.classes.nodes.ContentNode:内存中的内容节点,用于存储上传新内容到Kolibri Studio所需的元数据。
- contentcuration.contentcuration.models.ContentNode:Kolibri Studio渠道相关的一个树中的节点。
- kolibri.core.content.models.ContentNode:Kolibri上某个渠道特定版本的树中的节点。
有关平台各部分内容节点上可用的常见和不同模型属性的详细描述,请参阅此文档。
文件格式(扩展名)
这些是表示文件类型的低级常量,本质上等同于文件扩展名。文件格式MP4
只是文件扩展名mp4
的一个方便的代理。请参阅file_formats.py和resourcces/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可以与不同语言的多个字幕相关联。
下面的图示说明了内容节点、文件和格式预设之间的结构。
在示例中,视频节点的内容类型为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将失败任何未来对此规范的修改。这确保了生成的代码具有一致的顺序,以便生成的位掩码位在版本间保持稳定。我们还要求规范中的所有名称都是全局唯一的,以最大限度地减少混淆并降低用户对这些术语翻译中冲突的可能性。
项目详情
le-utils-0.2.7.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 922cefb0b322cca32f26554bc85dfe8a4f1dd8bc94a87834892f4c24b5aa7f2c |
|
MD5 | 6f540301dd1c9e697953e8b034728df8 |
|
BLAKE2b-256 | 9680f982b71ebc261693a0442b07dbf019bc0a5b103c3134de719d9fc0aa7c41 |