mercurial - mercurial extensions:高效的模板关键字实现
问题描述
我正在编写一个 mercurial 扩展,但我发现模板渲染相当慢。
我最初使用的是cmdutil.rendertemplate()
,但是,似乎每次都必须重新解析模板字符串,这相当慢。
当切换到 的“新” api 时@templatekeyword
,看起来传递的第一个 arg 是一个mercurial.templater.engine
对象,它有一个expand
缓存模板的解析版本的方法,这使它更快。不幸的是,它不会扩展 aliases。
有谁知道有效地为 mercurial 扩展呈现模板和别名的正确方法?现在,我看到的唯一选择是复制/粘贴部分cmdutil.rendertemplate
并保留我自己的全局缓存......但这感觉很恶心。
解决方案
假设你需要
[templates]
呈现从该部分以外的其他地方加载的用户模板,- 在关键字函数中,
目前的方法是将加载的模板放在第一个[1],然后通过[2]templater.cache[name]
渲染它。context.process(name, mapping)
- https://www.mercurial-scm.org/repo/hg/file/4.7.1/mercurial/cmdutil.py#l2643
- https://www.mercurial-scm.org/repo/hg/file/4.7.1/mercurial/templatekw.py#l474
我不确定你所面临的情况是否如此。根据上下文可能有更好的方法。
推荐阅读
- java - 使用 Salesforce REST API 按状态检索订单
- python-3.x - 为什么将导入重命名为相同名称?
- javascript - 是否可以为流中的外部库声明这种类型?
- jdbc - 无法使用 JDBC 和 HSQLDB 从 sql 数组中获取数据
- python - 如何将集成机器学习模型保存在 .h5 和 json 中?
- python-3.x - 使用 asyncpg 读取 PostgreSQL 表
- python - 使用 python 的 sklearn 模块和自定义数据集
- google-cloud-firestore - SwiftUI、List、.onDelete(perform:) 和 Firestore
- azure-devops - 在 Azure DevOps 中使用 --set helm 覆盖列表值
- python - Python 33gb csv 文件数据集到 Pandas DataFrame